Fork me on GitHub
#boot
<
2017-08-07
>
dominicm09:08:27

@ttx can provide aero support in #juxt, but you can make an #include optional, as long as you're on latest. Will invite to #juxt to continue discussion.

lwhorton17:08:49

is there a built-in way to clear every cache in boot? i know I could probably rm -rf /path/to/.boot/cache/tmp/project but i’m curious

juhoteperi17:08:08

Hmh, I wonder why Boot doesn't just put the temp dirs on the project folder, under .boot or something

juhoteperi17:08:39

That would at least take care of removing the temp dirs at the same time as removing the project folder

lwhorton17:08:58

yea i’m not sure. i’m still working on debugging https://github.com/boot-clj/boot-cljs/issues/168 . I know how it breaks (finally) but I’m not quite sure why. I think it’s something to do with an improper :dependencies [re-frame "" :exclusions [reagent]]

lwhorton17:08:28

but ive been fighting with stale/cached internal libs and :checkouts via boot when debugging that issue.

juhoteperi17:08:40

@lwhorton Check boot show -d and check all versions of cljsjs/react-*

juhoteperi17:08:25

And cljsjs/create-react-class though I think only Reagent will depend on that

lwhorton17:08:57

is there some canonical docs explaining how :exclusions works? I’m not sure I have my internal libs working properly wrt :scope "provided" and exclusions.

lwhorton18:08:33

I see. I think i’ve been working it backwards. In my main app I have something like [my-org.my-reframe "0.0.1"] and from my-reframe I exclude reagent. Then in the main app I bring in :dependencies [reagent "x.x.x"] so in essence it “brings the versions of reagent I want to use into my internal reframe”.

lwhorton18:08:53

But I think this is backwards, and I should not even depend on reagent in main app, only my-org.my-reframe

juhoteperi18:08:05

Hmh, if you call reagent directly from your main app code, it is usually good idea to have direct dependency

juhoteperi18:08:17

If you use a, have dependency on it even if another package b has transitive dependency on a. This way you can decide which version of a you app needs, and you prevent problems in case if b removes dependency on a.

juhoteperi18:08:55

Also, I usually use :exclusions very sparingly. Instead I add direct dependency on the application if I need to ensure I get specific version of some dependency.

lwhorton18:08:49

yes that makes sense, but i’m not sure the proper syntax. if app depends on a 1 and b 1, but a 1 has a dependency on b 1 too — what do you do?

juhoteperi18:08:13

nothing needs to be done if they depend on the same version?

lwhorton18:08:37

so maven automatically takes care of packaging up the proper artifacts given the same version?

juhoteperi18:08:50

it works even if there are different versions

juhoteperi18:08:32

[a "1.0"] and [b "1.0"] where b depends on [a "0.1"] => you get [a "1.0"] and [b "1.0"]

juhoteperi18:08:15

[a "1.0"] and [b "1.0"] where b depends on [a "2.0"] => you still get [a "1.0"] and [b "1.0"] which are the "closest dependencies"

juhoteperi18:08:49

in the latter case you'd update your project's dependency on [a "1.0"] -> [a "2.0"] to fix b

juhoteperi18:08:10

> "nearest definition" means that the version used will be the closest one to your project in the tree of dependencies, eg. if dependencies for A, B, and C are defined as A -> B -> C -> D 2.0 and A -> E -> D 1.0, then D 1.0 will be used when building A because the path from A to D through E is shorter. You could explicitly add a dependency to D 2.0 in A to force the use of D 2.0

lwhorton18:08:48

Aha. I need to spend more time reading over the mvn site. thanks for hand-holding me through this

juhoteperi18:08:06

Did looking at the deps help with the problem?

lwhorton18:08:30

i’m making sure all my sub-libs are using the proper deps before I report back the boot show -d . getting rid of exclusions and :scopes that aren’t necessary .. will ping shortly

lwhorton18:08:38

I’m not sure what is going on — if I look at my-org.reframe deps: with explicit reagent dep

[reagent "0.8.0-alpha1"]
├── [cljsjs/create-react-class "15.6.0-1"]
├── [cljsjs/react-dom-server "15.6.1-1"]
└── [cljsjs/react-dom "15.6.1-1"]
    └── [cljsjs/react "15.6.1-1"]
without reagent dep
[re-frame "0.9.4"]
├── [net.cgrand/macrovich "0.2.0"]
├── [org.clojure/tools.logging "0.3.1"]
└── [reagent "0.6.0"]
    ├── [cljsjs/react-dom-server "15.2.1-0"]
    └── [cljsjs/react-dom "15.2.1-0"]
        └── [cljsjs/react "15.2.1-0"]
Now I would certainly expect the latter to fail… but why on earth would the former? 😕

lwhorton18:08:08

(sorry I don’t mean to presume — i’m sure you are very busy.. this is more for me to rubber-duck myself)