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

StackOverflow https://stackoverflow.com/questions/580083

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

Это было полезно?

Решение

О, ничего себе. Вот вам и ответ:

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

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

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

Редактировать:что ж, этому тоже нужен пролог. ecl-примеры теперь выпендривается asdf:make-build

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top