Open rrrnld opened 6 years ago
lein deps
:
[clojure-complete "0.2.4" :exclusions [[org.clojure/clojure]]]
[org.clojure/clojure "1.9.0"]
[org.clojure/core.specs.alpha "0.1.24"]
[org.clojure/spec.alpha "0.1.143"]
[org.clojure/tools.nrepl "0.2.12" :exclusions [[org.clojure/clojure]]]
[quil "2.8.0"]
[com.lowagie/itext "2.1.7"]
[bouncycastle/bcmail-jdk14 "138"]
[bouncycastle/bcprov-jdk14 "138"]
[org.bouncycastle/bctsp-jdk14 "1.38"]
[org.bouncycastle/bcmail-jdk14 "1.38"]
[org.bouncycastle/bcprov-jdk14 "1.38"]
[org.apache.xmlgraphics/batik-dom "1.8"]
[org.apache.xmlgraphics/batik-css "1.8"]
[org.apache.xmlgraphics/batik-ext "1.8"]
[org.apache.xmlgraphics/batik-xml "1.8"]
[xalan "2.7.0"]
[xml-apis/xml-apis-ext "1.3.04"]
[org.apache.xmlgraphics/batik-svggen "1.8"]
[org.apache.xmlgraphics/batik-awt-util "1.8"]
[org.apache.xmlgraphics/batik-util "1.8"]
[xml-apis "1.3.04"]
[quil/gluegen-rt-fat "2.3.2"]
[quil/jogl-all-fat "2.3.2"]
[quil/processing-core "3.3.7"]
[quil/processing-dxf "3.3.7"]
[quil/processing-js "1.6.6.0"]
[quil/processing-pdf "3.3.7"]
[quil/processing-svg "3.3.7"]
[thi.ng/geom "1.0.0-RC3"]
[cljs-log "0.2.2"]
[environ "1.0.0"]
[hiccup "1.0.5"]
[org.clojure/clojurescript "1.10.238"]
[com.cognitect/transit-clj "0.8.300" :exclusions [[org.clojure/clojure]]]
[com.cognitect/transit-java "0.8.324"]
[com.fasterxml.jackson.core/jackson-core "2.8.7"]
[commons-codec "1.10"]
[org.msgpack/msgpack "0.6.12"]
[com.googlecode.json-simple/json-simple "1.1.1" :exclusions [[junit]]]
[org.javassist/javassist "3.18.1-GA"]
[com.google.javascript/closure-compiler-unshaded "v20180204"]
[args4j "2.33"]
[com.google.code.findbugs/jsr305 "3.0.1"]
[com.google.code.gson/gson "2.7"]
[com.google.errorprone/error_prone_annotations "2.0.18"]
[com.google.guava/guava "22.0"]
[com.google.j2objc/j2objc-annotations "1.1"]
[org.codehaus.mojo/animal-sniffer-annotations "1.14"]
[com.google.javascript/closure-compiler-externs "v20180204"]
[com.google.jsinterop/jsinterop-annotations "1.0.0"]
[com.google.protobuf/protobuf-java "3.0.2"]
[org.clojure/data.json "0.2.6"]
[org.clojure/google-closure-library "0.0-20170809-b9c14c6b"]
[org.clojure/google-closure-library-third-party "0.0-20170809-b9c14c6b"]
[org.clojure/tools.reader "1.3.0-alpha3"]
[org.mozilla/rhino "1.7R5"]
[org.jogamp.gluegen/gluegen-rt "2.3.2"]
[org.jogamp.jogl/jogl-all "2.3.2"]
[thi.ng/color "1.2.0"]
[thi.ng/dstruct "0.2.1"]
[thi.ng/math "0.2.1"]
[thi.ng/ndarray "0.3.2"]
[thi.ng/shadergraph "0.3.0"]
[com.postspectacular/dependency "0.1.2"]
[thi.ng/strf "0.2.2"]
[thi.ng/typedarrays "0.1.6"]
[thi.ng/xerror "0.1.0"]
Explicitly adding these dependencies to my project.clj fixed it (on my linux laptop):
[org.jogamp.gluegen/gluegen-rt "2.3.2" :classifier "natives-linux-amd64"]
[org.jogamp.jogl/jogl-all "2.3.2" :classifier "natives-linux-amd64"]
So I'm not really sure anymore if this is an error or an issue, really. Maybe it helps other people dealing with this though.
FWIW w/ thi.ng/geom I made the decision to only add the JOGL native deps as :dev-dependencies
in order to avoid users having to download these large jars for every platform. Hence adding them explicitly in user projects is required (see note here), though I'm also confused why that's still the case when used w/ quil, which seems to bundle natives directly via the fat jar approach...
Another "fix" is to exclude org.jogamp pulled by thi.ng/geom:
:exclusions [
org.jogamp.jogl/jogl-all
org.jogamp.gluegen/gluegen-rt]
My guess that jogl/gluegen provided by thi.ng/geom is somehow discovered first and switches to some other mode that of looking up native dependencies. I remember going through jogamp code once figuring out how they load dependencies.
The rationale behind Quil's decision to use fat jar is somewhat the opposite: I didn't want users to do anything special beside including quil
as dependency. Quil should be easy-to-use for people who might not be very familiar with clojure/leiningen so I sacrificed bandwidth for simplicity. Another reason for the fat jar is that it makes 'lein uberjar' possible out of box.
I just tried combining
[thi.ng/geom "1.0.0-RC3"]
with quil and it breaks the:p3d
and:p2d
renderers. The default renderer works fine. It seems to be a dependency conflict essentially caused by this (th.ing/geom
uses the jogl-deps directly). Everything works fine without thethi.ng/geom
dependency.This is my
project.clj
:And an example sketch:
This is the stack trace when I add the
thi.ng
dependency withoutrequire
ing it in the namespace:An here's a slightly shorter one when
require
ingthi.ng.geom.core
:Is there any way around this? I found this related wiki article, I'm not sure how to read this though. Is the JOGL-dependency inherited by Processing? Do I have any way to have different versions of the same dependency coexist maybe?
It might be worth mentioning that fat jars are discouraged in the JOGL wik. Very well possible that the decision to use those was made for good reasons and fully aware of this though.