@mattyulrich the aot
task is for ahead of time compilation
Hey @flyboarder, yeah - there's one class that needs to be aot compiled for the project to work properly. I referenced that :namespace
in the aot
task - so I was a bit surprised that adding unrelated dependencies caused the task to break (figured the task should have only applied to the referenced namespace). Have you seen this before?
@mattyulrich no, I dont use boot-deps-tools - perhaps @seancorfield could help you out, does the project compile without the dependencies?
@mattyulrich from the error you probably need to wrap the deps in another vector
ie. the compiler is getting a symbol when itโs expecting a sequence of some kind - the full stack trace should pinpoint the line where the call is broken, but I imagine thatโs not useful since the problem is likely the deps.edn file
You rang? ๐
@mattyulrich Can you share your deps.edn
?
Also, if you can pare it back to a version that works and then identify the single dependency you added that breaks things, that would be immensely helpful.
(as an aside, the intent of boot-tools-deps
is per the readme: "The primary use case for boot-tools-deps is that your project runs with clj -- so all of its dependencies are managed via deps.edn files, with aliases as appropriate -- and you want to bring Boot tooling to that project, in addition." -- it is not intended to support an arbitrary Boot project where you want just the dependencies in a deps.edn
file)
I would strongly advise either: a) using clj
and deps.edn
completely independently of Boot or b) using Boot completely independently of deps.edn
if you have needs beyond the basic use case.
Also @mattyulrich one thing to bear in mind is that AOT is transitive: when you compile a namespace, it will also compile everything that namespace requires in.
Thanks for all the info, @seancorfield! Maybe you're right and I'm using boot-tools-deps
inappropriately; I'm using nearly exclusive boot tooling in my project; I'm really only using deps.edn
to try and leverage dependency resolution from a git sha - is this possible in boot alone? If so, I'll eschew the deps.edn
bit and stick with boot. This project integrates with protobuf, and I'm using a forked version of clojusc/protobuf
- to work from the repl, I need to aot protobuf.impl.flatland.core
. The project worked fine until I added either ring, or compojure (which transitively includes ring) to the deps.edn
. Let me try and get a stripped down version of what I'm doing in github to share and you can let me know if I'm going about this all wrong. ๐
I'd suggest trying to do everything from deps.edn
and clj
alone, to be honest. No, you can't resolve Git deps from Boot as far as I know @mattyulrich
You can AOT a namespace with deps.edn
. I have a project that does that.
https://github.com/seancorfield/cfml-interop -- deps.edn
has :paths
with both "classes"
and "src"
-- and there's a user.clj
file that compiles the namespace that needs to be AOT'd.
I haven't specifically tried to build that project with a deps.edn
-based JAR-builder but I think that would work...
Ok - I've been spending a few hours trying to reproduce in the small and it's not happening. (basic idea here: https://github.com/mattyulrich/aot-prob) So - as you suggest, it's likely something small somewhere with bad error messages. I'm going to play with my trouble project a bit and see if I can identify where it's breaking down. Ultimately, I'd like to add a hoplon/castra frontend to this - which is one of the compelling reasons to use boot tooling. I'll take a look to see if I can do this kind of work with only clj and take a look at your cfml-interop library in the meantime. Thanks, @seancorfield - if I can identify what's happening, I'll post back here with the updated git repo.