¿Cómo puede incluir dependencias ECL ASDF en un archivo ejecutable?
-
06-09-2019 - |
Pregunta
Tengo esta 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*
es mi adición a stumpwm.asd
,
utilizado para generar los componentes ASDF en ese archivo y la
lista de archivos correctamente ordenado anteriormente.)
Simplemente falla:
... 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.
Estoy hasta el punto que sólo estoy resolver los errores que introduje
con los intentos anteriores. Si ha creado un programa con ECL que
dependencias incluidas, por favor me muestran cómo lo hizo. Veo cómo
Puedo patear y cargar las dependencias cuando se inicia stumpwm
(incluso
sin cargar mi ~/.eclrc
, que le dice dónde encontrar ASDF
estas). Pero esto debe sea posible.
Solución
Oh, wow. Aquí está la respuesta :
-
Eliminar
ecl-make.lisp
, revertir los cambios astumpwm.asd
-
ecl -eval '(asdf:make-build :stumpwm :type :program)'
Eso es todo. [ASDF no ve un asdf:build-op
, sin embargo.]
EDIT: Bueno, también necesita un prólogo. ECL-ejemplos ahora muestra fuera asdf:make-build