This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-09-13
Channels
- # aleph (3)
- # aws (1)
- # beginners (97)
- # boot (41)
- # cider (7)
- # clara (105)
- # cljs-dev (4)
- # cljsrn (66)
- # clojure (185)
- # clojure-argentina (2)
- # clojure-colombia (15)
- # clojure-czech (1)
- # clojure-dusseldorf (8)
- # clojure-greece (2)
- # clojure-italy (5)
- # clojure-russia (33)
- # clojure-spec (14)
- # clojure-uk (9)
- # clojurescript (75)
- # cursive (6)
- # data-science (1)
- # datomic (12)
- # emacs (2)
- # fulcro (71)
- # funcool (1)
- # jobs (6)
- # jobs-discuss (62)
- # juxt (21)
- # lein-figwheel (1)
- # luminus (9)
- # lumo (41)
- # off-topic (39)
- # om (12)
- # onyx (1)
- # portkey (2)
- # protorepl (4)
- # re-frame (14)
- # reagent (50)
- # ring (3)
- # shadow-cljs (6)
- # spacemacs (38)
- # specter (8)
- # test-check (14)
- # testing (52)
- # unrepl (2)
So what's the story on boot new being included into boot main? Having the extra -d argument makes it seem much less slick.
donyorm to provide defaults i usually rebind the task options in a let inside deftask, like (let [opt (or opt "some-default")] ... )
Would boot pods be a good way to isolate different clojure versions? I have a library that uses core.async so any project using my lib needs to use clojure 1.8.0, however I wish users could use any version. Here is a link to my repo for clarity https://github.com/hswick/jutsu
@hswick Clojure dep is a special case which can't be replaced with podś
This is because Boot itself is built on Clojure so it needs Clojure available on root classloader
Pods inherit from root classloader and can't replace classes which are already available there
(or maybe that would be possible not sure)
Another reason is that the Clojure data structure classes need to be shared between all the pods, so that pods can communicate using Clojure data
If you had different Clojure version, you couldn't pass e.g. Clojure vectors or maps between pods
@juhoteperi thanks for the reply. That is unfortunate, but you have saved me much time trying to figure that out myself!
Anyway, I think it is completely reasonable to require Clojure 1.8, it was released 1.5y+ ago and there isn't much reason to not update to it
@hswick btw core.async does not require Clojure 1.8 (but will definitely work better with 1.7 to give access to transducers)
<5% of Clojure users are on a Clojure version older than 1.7
based on a survey from last December
Although people not upgrading their deps are likely not taking the survey 😆 (I took it and probably said I upgrade it, but I know that we have some projects using 1.6 at work and I doubt the maintainers/ex-maintainers took the survey) Otherwise, yes I don’t recall much trouble when upgrading to stable Clojure versions.
i was about to say, clojure has been really good about making it easy to upgrade to newer versions of clojure
@alexmiller the problem is actually when users want to use clojure 1.9.0 for themselves which results in spec errors coming from core.async
@juhoteperi Are you sure pods don't let you use different versions of Clojure? I've seen Boot tasks that indicate they specifically allow you to specify the version of Clojure used (isolated in a pod, away from Clojure itself).
I could be wrong on the reasons, but the Clojure version Boot uses is defined on a env var, and Boot ignores the version from dependencies. I think it works the same with pods.
@hswick those spec errors were fixed in core.async and released over a year ago
@alexmiller looks like I’m using a very old version of core.async then, will update and try again
@juhoteperi Both boot-test and boot-expectations rely on being able to create a pod containing a different version of Clojure and I just verified that it works as expected: you can load Clojure 1.8.0 in a pod, even when Boot is using 1.9.0-alpha20 (for example).
(! 577)-> BOOT_CLOJURE_VERSION=1.8.0 boot call -pf clojure-version test -c 1.7.0
Classpath conflict: org.clojure/clojure version 1.8.0 already loaded, NOT loading version 1.9.0-alpha20
1.8.0
Testing versions.core-test
1.7.0
my boot.properties
file specifies 1.9.0-alpha20, this shows BOOT_CLOJURE_VERSION
overrides that (as expected) and the tests run with Clojure 1.7.0 (the test prints the result of (clojure-version)
)(interestingly, if you have a specific version in boot.properties
, that is what is used for boot-test, even if you override the version that Boot itself uses)
See
(! 578)-> BOOT_CLOJURE_VERSION=1.8.0 boot call -pf clojure-version test
Classpath conflict: org.clojure/clojure version 1.8.0 already loaded, NOT loading version 1.9.0-alpha20
1.8.0
Testing versions.core
Testing versions.core-test
1.9.0-alpha20
how do I log (verbose) into file, why boot -vv some-task target > mylog.log
works for only partially ?
@hmaurer everything that's usually highlighted differently in the console (verbose part of the log)
mmh, I don’t use tee
but can you try boot -vv some-task target > mylog.log 2>&1 | tee -a log
?