-
Notifications
You must be signed in to change notification settings - Fork 64
Require in components.clj cause compile time error #1370
Comments
I ran into this problem in a way that I couldn't avoid. I traced it to some kind of incompatability with metatransactions and mount. If your dependency tree (that mount) traverses includes metatransactions.core anywhere, we get this breakage. We should revert our lazy-load-var code now that we've identified this problem. Metatransaction is almost dead. So we can workaround this by killing it off more fully gradually. |
@scrosby - Good find! I bet this is related to the |
Describe the bug
Adding new line to the
:require
list in components.clj (which should basically be a no-op) causes a compile-time error.To Reproduce
Adding this single line to the requires list at the top of components.clj file causes an opaque compile time error when running
lein uberjar
:[cook.progress :as progress]
java.lang.RuntimeException: Can't embed object in code, maybe print-dup not defined: clojure.lang.Delay@18c1d366, compiling:(schema.clj:16:1)
Full
lein uberjar
output:Expected behavior
lein uberjar
should complete successfully even if thecook.progress
module isrequire
d in components.clj.Additional context
I suspect that the error is triggered by mount for two reasons.
Since we're able to work around this by using our
lazy-load-var
utility function to load the function we need, and it's only invoked once at graph-compile time, I'm not digging into this any further at this time.The text was updated successfully, but these errors were encountered: