This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-07-30
Channels
- # arachne (5)
- # beginners (42)
- # cider (35)
- # cljs-dev (25)
- # cljsrn (2)
- # clojure (107)
- # clojure-dev (32)
- # clojure-finland (2)
- # clojure-greece (3)
- # clojure-italy (6)
- # clojure-nl (7)
- # clojure-spec (27)
- # clojure-uk (45)
- # clojurescript (152)
- # core-async (3)
- # cursive (26)
- # data-science (4)
- # datomic (33)
- # defnpodcast (1)
- # duct (12)
- # editors (3)
- # emacs (6)
- # events (5)
- # fulcro (6)
- # jobs (1)
- # lein-figwheel (9)
- # off-topic (7)
- # onyx (7)
- # re-frame (1)
- # reagent (9)
- # reitit (31)
- # shadow-cljs (130)
- # slack-help (1)
- # spacemacs (53)
- # tools-deps (55)
- # yada (4)
That seems correct to me: it's always going to be run in a context that already has some version of Clojure loaded.
(shouldn't most Clojure projects assume Clojure is "provided"?)
The only exception IMHO is cljs self-host which would not require any dependency on clojure
> shouldn’t most Clojure projects assume Clojure is “provided”? Maybe, but none of them do.
It means that if I get the classpath for t.d.a from Maven or whatever, it won’t contain Clojure, which it clearly needs.
Yeah, I've tried to drum up support for a movement to change the Clojure dep to "provided" in projects but... inertia... 🙂
Thinking about it though, none of those libs work without Clojure so it really is a dependency for them.
It can be argued both ways. Clojure itself is kind of a weird "dependency" because in most projects, the choice of Clojure version comes first and then all the other dependencies are added. So, in that sense, Clojure is "provided". But, yeah, you can also argue Clojure "really is a dependency" -- but it's often going to be a different version for each of the other dependencies...?
I think you have to separate app and lib contexts here too
Apps should def declare
Generally you don’t want your libs deciding the Clojure version of the context they’re used in
Yeah, I was kinda coming at this from the app p.o.v.: it chooses the Clojure version and the libs just deal with it 🙂
Which is effectively what happens
As top deps have priority
So in app context, their choice is most important
Pretty much all the libs out there should use "provided" with Clojure and apps then drive it. But that doesn't seem to get much traction 🙂
Yeah, I don’t think that’s a battle worth fighting
I've only ever used it as a library...
The clj
script invokes one of the -main
functions in t.d.a. tho' (resolve tags, generate manifest, make classpath) but I'm not sure I'd consider tho' an app tho'?
It’s both in this case I think
But brew-install builds an uberjar so it’s really the app-maker
from what I've seen: the chosen dependency should only appear once in that tree, and its only parent is the driver of version selection
Correct. But I'd like to know the other parent dependencies that also have the conflicting child dependency.
There is a hidden verbose mode that sheds some additional light
clj -Sdeps ‘{:aliases {:v {:verbose true}}}' -A:v
Likely to be confusing to some degree as it’s mostly designed to let me debug stuff right now
I make zero promises about it’s existence or operation :)
Just making it clear that is a not even alpha feature :)
I think for that we have to drop down to the hebrew alphabet and call it an aleph feature
perfect
Several Cursive users have requested that Cursive show alongside the available aliases whether they’re system, user or project aliases. I can’t do that at the moment because there’s no way to tell which config file is which (short of something awful like guessing based on which is under the user’s home or something).
One thing that would fix that would be if -Sdescribe
returned:
:config-files { :system "/usr/local/Cellar/clojure/1.9.0.381/deps.edn" :user "/Users/colin/.clojure/deps.edn" }
Changing -Sdescribe
at this point will break a bunch of other tooling that relies on the format of the (clojure-env)
call I think?
still alpha!
Also, there's no reason that t.d.a. is limited to those three specific EDN files -- you can merge any number of EDN files to produce your environment...
-Sdescribe2
:config-file-map
🙂