Как ECL может включать зависимости ASDF в исполняемый файл?
-
06-09-2019 - |
Вопрос
У меня есть этот 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*
это мое дополнение к stumpwm.asd
,
используется для создания компонентов ASDF в этом файле и
правильно упорядоченного списка файлов выше.)
Это просто терпит неудачу:
... 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.
Я дошел до того, что исправляю только ошибки, которые я ввел
с предыдущими попытками.Если вы создали программу с ECL, которая
включала зависимости, пожалуйста, покажите мне, как вы это сделали.Я вижу, как
Я могу извлекать и загружать зависимости, когда stumpwm
запускается (даже
без загрузки моего ~/.eclrc
, который сообщает ASDF, где их найти
).Но это следует быть возможным.
Решение
О, ничего себе. Вот вам и ответ:
Удалить
ecl-make.lisp
, отменить изменения вstumpwm.asd
ecl -eval '(asdf:make-build :stumpwm :type :program)'
Вот и все.[ASDF не видит asdf:build-op
, однако.]
Редактировать:что ж, этому тоже нужен пролог. ecl-примеры теперь выпендривается asdf:make-build