@etldan Ok, I’ve fixed both #1999 and also lein-v/#26, so they (and other cases) should hopefully work without workarounds now. I’m not sure which release that will make it into since it’s a change to a fairly sensitive part of the lein integration. I’ll probably release 1.10.1 and then get this into the first release of the 1.10.2 EAP.
I have a large monorepo full of deps edn modules and unfortunately some of them have the same directory name (not full path, just name). This causes cursive/intellij to error silently. Is there any way around this short of renaming the dirs? manually renaming the module in project structure doesn’t seem to stick.
I’m also having a problem where vars across :local/root deps.edn dependencies cannot be resolved, but their namespaces can (i.e. I can control-b the namespace and appear in the right one). Same monorepo project.
@favila I’ll try to get the fix for this out in an EAP tomorrow.
FWIW, :override-deps seems to have the same problem 🙂
Ok, I’ll fix that too 🙂
Actually, the same fix works since it just absolutises all the lib paths now.
Possibly related: I have deps with no names. Here’s one of the deps.edn project which has a dependency on two other projects in the same monorepo (they’re sibling directories)
:local/root dependencies will not force a cache recompute when deps change - that has to be forced with -Sforce
not sure if that's what you're seeing, but a good thing to check
I don’t think that caching is the issue here, since Cursive only uses t.d.a and the caching happens in the script (IIRC)
true
I need a better way of handling duplicate names, too - I’m still not sure what to do about that.
I’ve never seen that, I’ll see if I can figure out how that might happen. What do the dependencies for those two look like in the deps.edn file?
with considerable trimming, it looks like this:
{:aliases
{:backend-defaults
{:default-deps
{io.clubhouse.module/logging
{:local/root "../logging", :deps/manifest :deps},
io.clubhouse.module/dev-shared
{:local/root "../dev-shared", :deps/manifest :deps}}},
:test
{:extra-paths
["test"],
:extra-deps
{io.clubhouse.module/dev-shared nil}}},
:paths
["src" "resources"]
:deps
{io.clubhouse.module/logging nil}}
Maybe the :backend-defaults alias is the problem and should be pulled up
I’ll try that
that alias is always active in the “aliases” panel of the clojure deps tool window
woops, my mistake, default-deps is only allowed in aliases
yeah, that’s definitely it. If I inline the local/root coordinates those empty deps entries go away. This also fixes name resolution. Probably at project-setup time that alias is not enabled.
I.e. this works:
{:aliases
{:backend-defaults
{:default-deps {}},
:test
{:extra-paths
["test"],
:extra-deps
{io.clubhouse.module/dev-shared {:local/root "../dev-shared", :deps/manifest :deps}}}},
:paths
["src" "resources"]
:deps
{io.clubhouse.module/logging
{:local/root "../logging", :deps/manifest :deps}}}
Thanks, I’ll try to reproduce that with those examples.
This also fixes the “namespace not in scope” problem when reloading in the repl