Как ECL может включать зависимости ASDF в исполняемый файл? - PullRequest
3 голосов
/ 24 февраля 2009

У меня есть этот 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, где найти эти). Но это должно быть возможным.

1 Ответ

3 голосов
/ 24 февраля 2009

Ого Вот ответ :

  1. Удалить ecl-make.lisp, вернуть изменения в stumpwm.asd

  2. ecl -eval '(asdf:make-build :stumpwm :type :program)'

Вот и все. [ASDF, однако, не видит asdf:build-op.]

РЕДАКТИРОВАТЬ: ну, он также нуждается в прологе. ecl-examples теперь показывает asdf:make-build

...