xach / buildapp

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

Not building on OSX under ccl64 #23

Open jkordani opened 9 years ago

jkordani commented 9 years ago

(buildapp:build-buildapp) fails with Error #<BUILDAPP::SILENT-EXIT-ERROR #x302002BECB5D> [Condition of type BUILDAPP::SILENT-EXIT-ERROR]

Restarts: 0: [RETRY] Retry SLIME REPL evaluation request. 1: [*ABORT] Return to SLIME's top level. 2: [ABORT-BREAK] Reset this thread 3: [ABORT] Kill this thread

Backtrace: 0: ((:INTERNAL BUILDAPP::MAIN) #<BASIC-FILE-CHARACTER-OUTPUT-STREAM ("dumper-3SdqQGqO.lisp"/4 UTF-8) #x302002BF220D> #P"dumper-3SdqQGqO.lisp") 1: (BUILDAPP::CALL-WITH-TEMPORARY-OPEN-FILE "dumper.lisp" #<COMPILED-LEXICAL-CLOSURE (:INTERNAL BUILDAPP::MAIN) #x302002BF2ACF>) 2: (BUILDAPP::MAIN ("sbcl" "--asdf-path" "/Users/joshuakordani/quicklisp/dists/quicklisp/software/buildapp-1.5.4/" "--load-system" "buildapp" "--entry" ...)) 3: (CCL::CALL-CHECK-REGS BUILDAPP:BUILD-BUILDAPP) 4: (CCL::CHEAP-EVAL (BUILDAPP:BUILD-BUILDAPP)) 5: (SWANK::EVAL-REGION "(buildapp:build-buildapp)\n") 6: ((:INTERNAL SWANK-REPL::REPL-EVAL)) 7: (SWANK-REPL::TRACK-PACKAGE #<COMPILED-LEXICAL-CLOSURE (:INTERNAL SWANK-REPL::REPL-EVAL) #x302002A706BF>) 8: (SWANK::CALL-WITH-RETRY-RESTART "Retry SLIME REPL evaluation request." #<COMPILED-LEXICAL-CLOSURE (:INTERNAL SWANK-REPL::REPL-EVAL) #x302002A7073F>) 9: (SWANK::CALL-WITH-BUFFER-SYNTAX NIL #<COMPILED-LEXICAL-CLOSURE (:INTERNAL SWANK-REPL::REPL-EVAL) #x302002A7077F>) 10: (SWANK-REPL::REPL-EVAL "(buildapp:build-buildapp)\n") 11: (CCL::CALL-CHECK-REGS SWANK-REPL:LISTENER-EVAL "(buildapp:build-buildapp)\n") 12: (CCL::CHEAP-EVAL (SWANK-REPL:LISTENER-EVAL "(buildapp:build-buildapp)\n")) 13: (SWANK:EVAL-FOR-EMACS (SWANK-REPL:LISTENER-EVAL "(buildapp:build-buildapp)\n") "COMMON-LISP-USER" 144) 14: (SWANK::PROCESS-REQUESTS NIL) 15: ((:INTERNAL SWANK::HANDLE-REQUESTS)) 16: ((:INTERNAL SWANK::HANDLE-REQUESTS)) 17: (SWANK/BACKEND:CALL-WITH-DEBUGGER-HOOK #<Compiled-function SWANK:SWANK-DEBUGGER-HOOK #x3020008CA55F> #<COMPILED-LEXICAL-CLOSURE (:INTERNAL SWANK::HANDLE-REQUESTS) #x302000A88B7F>) 18: (SWANK::CALL-WITH-BINDINGS ((STANDARD-OUTPUT . #<SWANK/GRAY::SLIME-OUTPUT-STREAM #x302000A87B1D>) (STANDARD-INPUT . #<SWANK/GRAY::SLIME-INPUT-STREAM #x302000A87E8D>) ..))) #<COMPILED-LEXICAL-CLOSU.. 19: (SWANK::HANDLE-REQUESTS #<MULTITHREADED-CONNECTION #x30200098D27D> NIL) 20: (CCL::RUN-PROCESS-INITIAL-FORM #<PROCESS repl-thread(14) [Active] #x302000A76D6D> (#<COMPILED-LEXICAL-CLOSURE (:INTERNAL CCL::%PROCESS-RUN-FUNCTION) #x302000A76AFF>)) 21: ((:INTERNAL (CCL::%PROCESS-PRESET-INTERNAL (PROCESS))) #<PROCESS repl-thread(14) [Active] #x302000A76D6D> (#<COMPILED-LEXICAL-CLOSURE (:INTERNAL CCL::%PROCESS-RUN-FUNCTION) #x302000A76AFF>)) 22: ((:INTERNAL CCL::THREAD-MAKE-STARTUP-FUNCTION))

jkordani commented 9 years ago

to clarify, I get this error when running under slime/swank, as opposed to starting lisp from the command line.

jkordani commented 9 years ago

I get this error because ccl is not in my path, and when trying to use ceramic to set up everything, there is no way to pass the ccl path onto the build-buildapp step. when I hardcode the path for ccl in the call to run-program in main I get past this. I don't see how to specify the ccl path without rewriting build-buildapp

xach commented 9 years ago

You could update your PATH environment in Lisp...

jkordani commented 9 years ago

I imagine that would work. I guess there isn't anything more to this particular issue.

jkordani commented 9 years ago

adding ccl to path solves this problem, but oddly enough, it suggests that the value provided in make LISP is ignored, as ccl is explicitly looked for in the build process, regardless of the value of LISP=/path/to/dx86cl64

jkordani commented 9 years ago

Ok, I see what is going on. when using make, the LISP specified is used only to load the buildapp build code, but once in the build code, the default values of the dumper class for sbcl or ccl are used, which are their respective strings, which are passed to run-program, which will use the versions found in the PATH. At this point though, it seems rather contrived that the user would need to specify two different lisps to build with, one being the one used to load the lisp code, while specifying a different one to use to actually create the buildapp binary. Would it be better to close out these two issues and make a new one describing how ccl is required to be found in path?