Come può ECL includere dipendenze ASDF in un file eseguibile?
-
06-09-2019 - |
Domanda
ho questo ECL-make.lisp:
(asdf:oos 'asdf:compile-op :stumpwm) (defun system-objects (system) (loop for component in (asdf:module-components (asdf:find-system system)) for pathname = (asdf:component-pathname component) for directory = (pathname-directory pathname) for name = (pathname-name pathname) when (equal "lisp" (pathname-type pathname)) collect (make-pathname :directory directory :type "o" :name name))) (c:build-program "stumpwm" :lisp-files (concatenate 'list (system-objects :cl-ppcre) (system-objects :clx) (mapcar (lambda (component) (concatenate 'string component ".o")) stumpwm-system::*components*)) :epilogue-code '(unwind-protect (stumpwm:stumpwm) (ext:quit)))
(stumpwm-system::*components*
è il mio Oltre a stumpwm.asd
,
utilizzato per generare i componenti ASDF in quel file e il
elenco di file correttamente ordinata sopra.)
Non riesce semplicemente:
... same messages you get when (system-objects ...) are ... excluded from the c:build-program [it compiles in ... this case, but of course CL-PPCRE and CLX are unavailable.] An error occurred during initialization: Cannot find out entry point for binary file.
Sono al punto in cui sto solo risolvere gli errori che ho introdotto
con precedenti tentativi. Se hai costruito un programma con ECL che
dipendenze incluse, per favore mi mostrano come hai fatto. Vedo come
Posso punt e caricare le dipendenze quando stumpwm
inizia (anche
senza caricare la mia ~/.eclrc
, che racconta ASDF dove trovare
questi). Ma questa dovrebbe essere possibile.
Soluzione
Oh, wow. Ecco la risposta :
-
Elimina
ecl-make.lisp
, annullare le modifiche alstumpwm.asd
-
ecl -eval '(asdf:make-build :stumpwm :type :program)'
Questo è tutto. [ASDF non vede un asdf:build-op
, tuttavia.]
EDIT: bene, ha anche bisogno di un prologo. ECL esempi ora sfoggia asdf:make-build