Description
This issue originated from a diagnosis session on Slack with @mccraigmccraig.
The ingestion of alia on cljdoc was failing with less than helpful error messaging.
Here's what was showing on circleci:
WARNING: When invoking clojure.main, use -M
2020-12-22 18:10:17,140 INFO cljdoc-analyzer.cljdoc-main - args:
{:project "cc.qbits/alia",
:version "5.0.0-alpha1",
:jarpath
"https://repo.clojars.org/cc/qbits/alia/5.0.0-alpha1/alia-5.0.0-alpha1.jar",
:pompath
"https://repo.clojars.org/cc/qbits/alia/5.0.0-alpha1/alia-5.0.0-alpha1.pom",
:repos
{"clojars" {:url "https://repo.clojars.org/"},
"central" {:url "https://repo.maven.apache.org/maven2/"}}}
2020-12-22 18:10:17,155 INFO cljdoc-analyzer.runner - args:
{:project "cc.qbits/alia",
:version "5.0.0-alpha1",
:jarpath
"https://repo.clojars.org/cc/qbits/alia/5.0.0-alpha1/alia-5.0.0-alpha1.jar",
:pompath
"https://repo.clojars.org/cc/qbits/alia/5.0.0-alpha1/alia-5.0.0-alpha1.pom",
:extra-repos nil,
:namespaces :all,
:exclude-with [:no-doc :skip-wiki],
:output-filename
"/tmp/cljdoc/analysis-out/cljdoc-edn/cc.qbits/alia/5.0.0-alpha1/cljdoc.edn"}
2020-12-22 18:10:17,160 INFO cljdoc-analyzer.runner - Downloading https://repo.clojars.org/cc/qbits/alia/5.0.0-alpha1/alia-5.0.0-alpha1.jar
2020-12-22 18:10:17,722 ERROR cljdoc-analyzer.runner - nil
2020-12-22 18:10:17,722 ERROR cljdoc-analyzer.runner - STDOUT
nil
2020-12-22 18:10:17,722 ERROR cljdoc-analyzer.runner - STDERR
nil
We managed to reproduce this failure locally and after some trial and error we noticed that alia's lein project was generating a pom with dependencyManagement
that included org.clojure/clojure
. The dependencies
section later included, as you might expect, org.clojure/clojure
without any specific version.
Here's a minimal project.clj
to illustrate. I've included an additional arbritray dependency to demonstrate a point.
(defproject lread/repro-odd-cljdoc-failure "1.0.0"
:description "Trying to reproduce cljdoc failure"
;; it seems to be caused by include clojure as a managed dependency
:managed-dependencies [[org.clojure/clojure "1.10.1"]
[version-clj/version-clj "0.1.2"]]
;; and referencing it without a version
:dependencies [[org.clojure/clojure]
[version-clj/version-clj]])
We'll include a dummy namespace under src/my_stuff/api.clj
just so we have something to analyze:
(ns my-stuff.api
(:require [version-clj.core :refer [version-compare]]))
(defn oh-hi []
;; just referencing a lib for the sake of referncing a lib
(version-compare "1.0.0" "1.0.0"))
Steps to reproduce:
1. install locally
lein install
2. run cljdoc-analyzer
I ran from source:
clojure -m cljdoc-analyzer.main analyze \
--project lread/repro-odd-cljdoc-failure --version 1.0.0 \
--output-filename "/tmp/blarp.edn" \
--exclude-with :no-doc \
--exclude-with :skip-wiki
result
WARNING: When invoking clojure.main, use -M
2020-12-23 15:03:56,682 INFO cljdoc-analyzer.runner - args:
{:project "lread/repro-odd-cljdoc-failure",
:version "1.0.0",
:exclude-with [:no-doc :skip-wiki],
:output-filename "/tmp/erp.edn",
:jarpath
"/Users/lee/.m2/repository/lread/repro-odd-cljdoc-failure/1.0.0/repro-odd-cljdoc-failure-1.0.0.jar",
:pompath
"/Users/lee/.m2/repository/lread/repro-odd-cljdoc-failure/1.0.0/repro-odd-cljdoc-failure-1.0.0.pom",
:extra-repos {}}
2020-12-23 15:03:56,800 ERROR cljdoc-analyzer.runner - nil
2020-12-23 15:03:56,800 ERROR cljdoc-analyzer.runner - STDOUT
nil
2020-12-23 15:03:56,800 ERROR cljdoc-analyzer.runner - STDERR
nil
work-around
If we put explicitly specified a version for org.clojure/clojure
under dependencies
things analyze just fine.
:dependencies [[org.clojure/clojure "1.10.1"]
[version-clj/version-clj]])
And rerun lein install
Followed by cljdoc-analyzer (see step 2 above).
Then the analysis succeeds.
Notice that version-clj/version-clj
could remain maven version free.
thoughts
We don't know why the ingest failed, but we do know:
- dependencyManagent followed by versionless dependencies do work for deps other than
org.clojure/clojure
- the error message that cljdoc-analyzer/cljdoc produced was less than spectacular.
We can at least report the symptom, which I suspect might be "no dependencies found".
Activity