Como pode ECL incluir dependências ASDF em um executável?
-
06-09-2019 - |
Pergunta
Eu tenho 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*
é a minha além stumpwm.asd
,
usado para gerar os componentes ASDF nesse arquivo eo
lista de arquivos acima corretamente ordenada.)
Ele simplesmente falhar:
... 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.
Eu sou ao ponto onde eu só estou resolvendo erros que eu apresentei
com tentativas anteriores. Se você construiu um programa com ECL que
dependências incluídos, por favor me mostre como você fez isso. Eu vejo como
Posso punt e carregar as dependências quando stumpwm
começa (mesmo
sem carregar minha ~/.eclrc
, que conta ASDF onde encontrar
estes). Mas esta deve ser possível.
Solução
Oh, wow. Aqui está a resposta :
-
ecl-make.lisp
Excluir, reverter muda parastumpwm.asd
-
ecl -eval '(asdf:make-build :stumpwm :type :program)'
É isso. [ASDF não vê uma asdf:build-op
, no entanto.]
EDIT: bem, ele também precisa de um prólogo. ECL-exemplos agora mostra asdf:make-build