Domanda

ho questo 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* è il mio Oltre a stumpwm.asd, utilizzato per generare i componenti ASDF in quel file e il elenco di file correttamente ordinata sopra.)

Non riesce semplicemente:

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

Sono al punto in cui sto solo risolvere gli errori che ho introdotto con precedenti tentativi. Se hai costruito un programma con ECL che dipendenze incluse, per favore mi mostrano come hai fatto. Vedo come Posso punt e caricare le dipendenze quando stumpwm inizia (anche senza caricare la mia ~/.eclrc, che racconta ASDF dove trovare questi). Ma questa dovrebbe essere possibile.

È stato utile?

Soluzione

Oh, wow. Ecco la risposta :

  1. Elimina ecl-make.lisp, annullare le modifiche al stumpwm.asd

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

Questo è tutto. [ASDF non vede un asdf:build-op, tuttavia.]

EDIT: bene, ha anche bisogno di un prologo. ECL esempi ora sfoggia asdf:make-build

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top