例として与えられたcurl-lisp実行可能ファイルを作成するためにbuildappを使用したい:
buildapp --output lisp-curl --asdf-path ~/src/clbuild/systems/ \
--load-system drakma \
--eval '(defun main (args) (write-string (drakma:http-request (second args))))' \
--entry main
パス "~/src/clbuild/systems/" がないため、これはほとんど間違いなく機能しません。quicklisp を使用しているため、システムは "~/quicklisp/dists/quicklisp/software" にあるはずですが、実行すると:
buildapp --output lisp-curl \
--asdf-path ~/quicklisp/dists/quicklisp/software \
--load-system drakma \
--eval '(defun main (args) (write-string (drakma:http-request (second args))))' \
--entry main
; file: /home/simkoc/dumper-YKYna1b3.lisp
; in: DEFUN DUMP-FILE-DEBUGGER
; (QUIT :UNIX-STATUS 111)
;
; caught STYLE-WARNING:
; SB-EXT:QUIT has been deprecated as of SBCL 1.0.56.55. Use SB-EXT:EXIT or
; SB-THREAD:ABORT-THREAD instead.
;
; In future SBCL versions SB-EXT:QUIT will signal a full warning at compile-time.
;
; compilation unit finished
; caught 1 STYLE-WARNING condition
Fatal MISSING-COMPONENT:
Component "drakma" not found
質問に対するこの回答は、quicklisp が buildapp がシステムを取得できる方法でシステムをエクスポートできることをすでに示唆していますが、残念ながら詳細には触れていません。
また--asdf-path
、SBCL (開始時) はすでに or を使用してドラクマをロードできるため、アウトの(require 'drakma)
ままにしてみました(asdf:load-system "drakma")
。また、--require
代わりに使用--load-system
しても問題はありません。
したがって、buildapp を quicklisp と組み合わせて使用して、必要なシステムで実行可能ファイルを作成するにはどうすればよいですか (MISSING-COMPONENT PART については気をつけてください)。