Как ECL может включать зависимости ASDF в исполняемый файл?

У меня есть этот ecl-make.lisp:

(asdf: oos 'asdf: compile-op: stumpwm)

(определение системных объектов (системы)
  (цикл для компонента в (asdf: модуль-компоненты (asdf: система поиска системы))
    для пути = (asdf: компонент-путь имени компонента)
    для каталога = (путь-путь к каталогу)
    для имени = (имя-пути-пути)
    когда (равно "lisp" (путь-тип-путь))
    собирать (make-pathname: каталог каталог: тип "o": имя имя)))

(c: программа сборки "stumpwm": файлы lisp
  (объединенный список)
    (системные объекты: cl-ppcre)
    (системные объекты:clx)
    (mapcar (лямбда (компонент)
              (объединить строковый компонент ".o"))
      StumpWM-система::* компонента *)):epilogue-code '(развернуть-защитить (stumpwm: stumpwm) (ext: quit)))

(stumpwm-system::*components* мое дополнение к stumpwm.asd, используется для генерации компонентов ASDF в этом файле и правильно упорядоченного списка файлов выше.)

Это просто терпит неудачу:

... те же сообщения, которые вы получаете, когда (системные объекты...)... исключен из программы c: build [он компилируется в... это случай, но, конечно, CL-PPCRE и CLX недоступны.]
Произошла ошибка во время инициализации:
Не удается найти точку входа для двоичного файла.

Я дошел до того, что решаю только ошибки, которые я внес в предыдущие попытки. Если вы создали программу с ECL, которая включала зависимости, пожалуйста, покажите мне, как вы это сделали. Я вижу, как я могу загружать и загружать зависимости, когда stumpwm начинается (даже без загрузки моего ~/.eclrc, который говорит ASDF, где их найти). Но это должно быть возможно.

1 ответ

Решение

Ух ты. Вот ответ:

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

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

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

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

Другие вопросы по тегам