This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-04-21
Channels
- # babashka (16)
- # beginners (182)
- # calva (13)
- # chlorine-clover (43)
- # clj-kondo (17)
- # cljs-dev (14)
- # cljsrn (19)
- # clojure (97)
- # clojure-argentina (7)
- # clojure-dev (45)
- # clojure-europe (7)
- # clojure-germany (5)
- # clojure-nl (4)
- # clojure-portugal (4)
- # clojure-romania (5)
- # clojure-spec (46)
- # clojure-uk (21)
- # clojuredesign-podcast (2)
- # clojurescript (159)
- # conjure (28)
- # core-async (7)
- # cursive (13)
- # datomic (17)
- # defnpodcast (9)
- # duct (1)
- # fulcro (45)
- # graphql (6)
- # jobs (7)
- # jobs-discuss (1)
- # juxt (3)
- # kaocha (4)
- # leiningen (12)
- # malli (5)
- # observability (1)
- # off-topic (50)
- # pathom (15)
- # re-frame (16)
- # reitit (5)
- # remote-jobs (21)
- # ring (7)
- # shadow-cljs (166)
- # test-check (6)
- # tools-deps (27)
- # xtdb (2)
What would the equivaliant to the function leiningen.core.main/abort
be in a program started by clj tool? My googling for a solution has been unsuccessful.
I guess Print msg to standard err and exit with a value of 1. And propler terminate anything and supply proper messages... I did use System/exit for now. I’ve been translating software that use to use lein to use tools.deps toolchain and looking for things like this.
I have shared my user level ~/.clojure/deps.edn
file, which includes aliases for all the common tools I use with Clojure projects. Instructions for using the aliases are in the README and in the relevant :alias sections. For some aliases that have optional arguments I have also created additional alias names to capture the most common options, to save the amount of details that need to be remembered. Any other useful aliases are most welcome and thanks to Sean Corfield for his collection of aliases.
https://github.com/practicalli/clojure-deps-edn
Thank you.
@jr0cket Is yours a superset of mine at this point, or is a selection of mine (plus your own additions)? Maybe I'll mine yours for extra stuff to add to mine 🙂
There is a substantial cross-over of libraries includes in the aliases. You have some I have not tested yet. I have some not included. There is some divergence in naming of aliases. Happy to work on convergence if there is interest / value.
Hi all. Looking for some help here. I'm using tools-deps and my deps.edn file has a :repl
alias with an :override-deps
that we can summarize as {tegere {:local/root "/path/to/tegere" :deps/manifest :deps}}
. The problem seems to be that the transitive dependencies of my local deps are not present in my classpath. I can see by running clj -R:repl -Stree
that I have a dependency path like tegere/tegere > com.cemerick/pomegranate 1.1.0 > org.apache.maven/maven-resolver-provider 3.5.3 > javax.inject/javax.inject 1
. However, if I ls -l /root/.m2/repository/
I can see that my top-level :deps
dependencies are present but the dependencies of my local [:repl :override-deps]
(e.g., javax.inject, pomegranate) are not. Any advice? Thanks in advance.
can you provide your clj version (`clj -Sdescribe`), a deps.edn to repro, and clj -Stree
output?
bash-5.0# clj -Sdescribe
{:version "1.10.1.502"
:config-files ["/usr/local/lib/clojure/deps.edn" "/root/.clojure/deps.edn" "deps.edn" ]
:config-user "/root/.clojure/deps.edn"
:config-project "deps.edn"
:install-dir "/usr/local/lib/clojure"
:config-dir "/root/.clojure"
:cache-dir ".cpcache"
:force false
:repro false
:resolve-aliases ""
:classpath-aliases ""
:jvm-aliases ""
:main-aliases ""
:all-aliases ""}
bash-5.0# cat deps.edn
{:deps
{cheshire {:mvn/version "5.8.1"}
clojure.java-time {:mvn/version "0.3.2"}
clj-http {:mvn/version "3.10.0"}
com.pubnub/pubnub-gson {:mvn/version "4.25.0"}
com.taoensso/timbre {:mvn/version "4.10.0"}
nrepl/nrepl {:mvn/version "0.6.0"}
cider/cider-nrepl {:mvn/version "0.22.0"}
hickory {:mvn/version "0.7.1"}
org.clojure/tools.namespace {:mvn/version "1.0.0"}
vbclient
{:git/url "[email protected]:venuebook/vbclient.git"
:sha "56f5e72bdf284a6430a6abeae2de9d96066f7f9d"}
tegere
{:git/url ""
:sha "4dcac3c831ff08a4f746e852ffa759e9d49c3119"}}
:aliases
{:repl
{:override-deps
{vbclient
{:local/root "/src/vbit/subs/vbclient"
:deps/manifest :deps}
tegere
{:local/root "/src/vbit/subs/tegere"
:deps/manifest :deps}}
:main-opts
["-m" "nrepl.cmdline"
"--middleware" "[cider.nrepl/cider-middleware]"
"--port" "8050"
"--bind" "0.0.0.0"]}}}
bash-5.0# clj -R:repl -Stree
org.clojure/clojure 1.10.1
org.clojure/core.specs.alpha 0.2.44
org.clojure/spec.alpha 0.2.176
org.clojure/tools.namespace 1.0.0
org.clojure/java.classpath 1.0.0
org.clojure/tools.reader 1.3.2
clj-http/clj-http 3.10.0
commons-codec/commons-codec 1.12
org.apache.httpcomponents/httpasyncclient 4.1.4
org.apache.httpcomponents/httpcore-nio 4.4.10
slingshot/slingshot 0.12.2
commons-io/commons-io 2.6
org.apache.httpcomponents/httpcore 4.4.11
org.apache.httpcomponents/httpclient-cache 4.5.8
org.apache.httpcomponents/httpclient 4.5.8
commons-logging/commons-logging 1.2
potemkin/potemkin 0.4.5
riddley/riddley 0.1.12
org.apache.httpcomponents/httpmime 4.5.8
vbclient/vbclient /src/vbit/subs/vbclient
buddy/buddy-core 1.6.0
org.bouncycastle/bcprov-jdk15on 1.62
org.bouncycastle/bcpkix-jdk15on 1.62
net.i2p.crypto/eddsa 0.3.0
buddy/buddy-sign 3.1.0
com.pubnub/pubnub-gson 4.25.0
com.squareup.retrofit2/converter-gson 2.4.0
com.squareup.okhttp3/logging-interceptor 3.12.1
com.squareup.okhttp3/okhttp 3.12.1
com.squareup.okio/okio 1.15.0
com.squareup.retrofit2/retrofit 2.5.0
org.slf4j/slf4j-api 1.7.25
com.google.code.gson/gson 2.8.5
clojure.java-time/clojure.java-time 0.3.2
clj-tuple/clj-tuple 0.2.2
com.taoensso/timbre 4.10.0
com.taoensso/encore 2.91.0
com.taoensso/truss 1.5.0
io.aviso/pretty 0.1.33
cider/cider-nrepl 0.22.0
hickory/hickory 0.7.1
org.clojure/clojurescript 1.9.293
org.clojure/data.json 0.2.6
org.clojure/google-closure-library 0.0-20160609-f42b4a24
org.clojure/google-closure-library-third-party 0.0-20160609-f42b4a24
org.mozilla/rhino 1.7R5
com.google.javascript/closure-compiler-unshaded v20160911
com.google.jsinterop/jsinterop-annotations 1.0.0
com.google.javascript/closure-compiler-externs v20160911
args4j/args4j 2.0.26
com.google.protobuf/protobuf-java 2.5.0
com.google.code.findbugs/jsr305 1.3.9
viebel/codox-klipse-theme 0.0.1
quoin/quoin 0.1.2
org.jsoup/jsoup 1.9.2
cheshire/cheshire 5.8.1
com.fasterxml.jackson.dataformat/jackson-dataformat-cbor 2.9.6
com.fasterxml.jackson.core/jackson-core 2.9.6
tigris/tigris 0.1.1
com.fasterxml.jackson.dataformat/jackson-dataformat-smile 2.9.6
nrepl/nrepl 0.6.0
tegere/tegere /src/vbit/subs/tegere
instaparse/instaparse 1.4.10
com.cemerick/pomegranate 1.1.0
org.apache.maven.resolver/maven-resolver-transport-wagon 1.0.3
org.apache.maven.wagon/wagon-provider-api 3.0.0
org.apache.maven.resolver/maven-resolver-transport-http 1.0.3
org.apache.maven.resolver/maven-resolver-transport-file 1.0.3
org.apache.maven/maven-resolver-provider 3.5.3
javax.inject/javax.inject 1
org.apache.commons/commons-lang3 3.5
org.apache.maven/maven-model-builder 3.5.3
org.codehaus.plexus/plexus-component-annotations 1.7.1
com.google.guava/guava 20.0
org.codehaus.plexus/plexus-interpolation 1.24
org.apache.maven/maven-builder-support 3.5.3
org.apache.maven/maven-artifact 3.5.3
org.codehaus.plexus/plexus-utils 3.1.0
org.apache.maven.resolver/maven-resolver-api 1.1.1
org.apache.maven.resolver/maven-resolver-spi 1.1.1
org.apache.maven.resolver/maven-resolver-impl 1.1.1
org.apache.maven/maven-model 3.5.3
org.apache.maven.resolver/maven-resolver-util 1.1.1
org.apache.maven/maven-repository-metadata 3.5.3
org.apache.maven.wagon/wagon-http 3.0.0
org.slf4j/jcl-over-slf4j 1.7.22
org.apache.maven.wagon/wagon-http-shared 3.0.0
org.tcrawley/dynapath 1.0.0
org.apache.maven.resolver/maven-resolver-connector-basic 1.0.3
me.raynes/fs 1.4.6
org.apache.commons/commons-compress 1.8
org.tukaani/xz 1.5
and clj -Spath
doesn't include pomegranate and javax.inject?
oh, did you try -Sforce to force re-create your classpath?
changes in local deps' deps.edn files do not trigger a classpath cache refresh so you might be seeing something old there
$ clj -R:repl -Spath
src:/root/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:...
bash-5.0# ls /root/.m2/repository/javax
ls: /root/.m2/repository/javax: No such file or directory
thing is, I'm trying to build a Docker image, and having the following RUN statements in my Dockerfile is not having the same effect:
RUN clj -R:repl -Sforce -Stree
RUN clj -R:repl -Sforce -Stree
Well, after removing the .cpcache/
dirs on my host machine and ensuring I have a Docker COPY
that ensures my local :override-deps
paths are available at build time (d'oh!), and running a Docker build
with --no-cache
, all seems to be working as expected.
Thanks for your help @U064X3EF3 (even if the issue seems ultimately to have been my Docker misconfiguration)—I at least learned more about how to use tools-deps, and maybe this will help somebody else.
if you have a cached classpath, it does not currently verify that the dirs/files on the classpath actually exist, so manual mucking with ~/.m2 (either by the filesystem or your container config) can lead to some confusing results. -Sforce will usually help you there
it's a little tricky to implement this check as it would need to be in the bash script
and it requires some interpretation b/c missing path dirs is fine and pretty common