xach / buildapp

Buildapp makes it easy to build application executables with SBCL
http://www.xach.com/lisp/buildapp/
122 stars 26 forks source link

The name "QUICKLISP-CLIENT" does not designate any package. #13

Open mck- opened 10 years ago

mck- commented 10 years ago

Hi, I'm trying to build a skeleton Caveman app with the following:

(caveman.skeleton:generate #p"~/Lisp/test")
buildapp --output test-build \
--asdf-tree ~/quicklisp/dists/quicklisp/software/ \
--asdf-path ~/Lisp/test/ 
--load-system test \
--entry test:start

but get the following error:

;; loading system ...
;; ...

Fatal SIMPLE-PACKAGE-ERROR:
  The name "QUICKLISP-CLIENT" does not designate any package.

I can't seem to find where this comes from (neither asdf-path/tree include a mention of grep -nr quicklisp-client .)

mck- commented 10 years ago

fixed by building Buildapp from source, instead of through quicklisp (buildapp:build-buildapp)

xach commented 10 years ago

Thanks for the report. I was able to reproduce and I'd like to figure out why this is happening, so I'm reopening.

xach commented 10 years ago

I found the problem. clack is baking a reference to quicklisp into its FASL output. But quicklisp is not loaded when buildapp tries to load the fasl later. Deleting all FASLs would help. It might also be feasible for buildapp to define its own fasl directory and clean it up later. I'm not sure what the best fix is, though.

m-n commented 10 years ago

I ran into this same issue (although with repl-utilities leaving a reference to quicklisp-client in the fasl instead of clack.) This is certainly not a buildapp specific issue, and I'm leaning towards viewing my use of a read time conditional to check for a load time condition as a bug in repl-utilities.

If buildapp took one attempt at recompilation on failed loads it probably would have "fixed" my particular situation, but I'm unsure if that would introduce further surprises. Forcing recompilation of everything is slow on my system but I am going to do that in my buildapp script for now and see if I can stomach it.