Comment peut-ECL inclure les dépendances ASDF dans un exécutable?
-
06-09-2019 - |
Question
J'ai cette 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*
est mon plus stumpwm.asd
,
utilisé pour générer les composantes de ASDF dans ce fichier et la
liste correctement ordonnée de fichiers ci-dessus.)
Il ne peut tout simplement:
... 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.
Je suis au point où je ne résoudre les erreurs que j'Introduit
avec des tentatives précédentes. Si vous avez construit un programme avec LCE
dépendances incluses, s'il vous plaît me montrer comment vous l'avez fait. Je vois comment
Je peux punt et charger les dépendances quand stumpwm
démarre (même
sans charger mon ~/.eclrc
, qui raconte ASDF où trouver
celles-ci). Mais cette devrait possible.
La solution
Oh, wow. Voici la réponse :
-
Supprimer
ecl-make.lisp
, annuler les modifications àstumpwm.asd
-
ecl -eval '(asdf:make-build :stumpwm :type :program)'
Voilà. [ASDF ne voit pas asdf:build-op
, cependant.]
EDIT: Eh bien, il faut aussi un prologue. -LCE exemples montre maintenant au large asdf:make-build