Pregunta

Tengo 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* es mi adición a stumpwm.asd, utilizado para generar los componentes ASDF en ese archivo y la lista de archivos correctamente ordenado anteriormente.)

Simplemente falla:

... 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.

Estoy hasta el punto que sólo estoy resolver los errores que introduje con los intentos anteriores. Si ha creado un programa con ECL que dependencias incluidas, por favor me muestran cómo lo hizo. Veo cómo Puedo patear y cargar las dependencias cuando se inicia stumpwm (incluso sin cargar mi ~/.eclrc, que le dice dónde encontrar ASDF estas). Pero esto debe sea posible.

¿Fue útil?

Solución

Oh, wow. Aquí está la respuesta :

  1. Eliminar ecl-make.lisp, revertir los cambios a stumpwm.asd

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

Eso es todo. [ASDF no ve un asdf:build-op, sin embargo.]

EDIT: Bueno, también necesita un prólogo. ECL-ejemplos ahora muestra fuera asdf:make-build

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top