diff --git a/leiningen-core/src/leiningen/core/pedantic.clj b/leiningen-core/src/leiningen/core/pedantic.clj index b75081efa..0d1304651 100644 --- a/leiningen-core/src/leiningen/core/pedantic.clj +++ b/leiningen-core/src/leiningen/core/pedantic.clj @@ -119,10 +119,11 @@ (if (empty? paths) results (recur (for [{:keys [node parents]} paths - :when (not (some #{node} parents)) + ;; hashing is broken for dependency nodes in aether so we + ;; have to do cycle detection based on strings instead + :when (not (some #{(str node)} (map str parents))) c (.getChildren node)] - {:node c - :parents (conj parents node)}) + {:node c :parents (conj parents node)}) (doall (concat results paths)))))) (defn- transform-graph diff --git a/leiningen-core/test/leiningen/core/test/pedantic.clj b/leiningen-core/test/leiningen/core/test/pedantic.clj index 8f520f1bf..732a6240a 100644 --- a/leiningen-core/test/leiningen/core/test/pedantic.clj +++ b/leiningen-core/test/leiningen/core/test/pedantic.clj @@ -169,3 +169,13 @@ :ranges [{:node [a "2"] :parents [[range "2"]]}]}]))) +(deftest netty-boringssl-works + (let [project {:root "/tmp" + :dependencies '[[io.netty/netty-tcnative-boringssl-static + "2.0.50.Final"]] + :pedantic? :warn + :repositories [["c" {:url "https://repo1.maven.org/maven2/" + :snapshots false}]]}] + ;; this will result in an infinite loop in lein 2.9.8 + (is (leiningen.core.classpath/get-classpath project)))) +