mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-13 21:02:47 -08:00
Next iteration of the code for building and installing fake ASDF components for every ECL module.
This commit is contained in:
parent
e4b778f07a
commit
96f4c92bd7
4 changed files with 29 additions and 4 deletions
|
|
@ -213,9 +213,10 @@
|
|||
(defclass load-fasl-op (operation) ())
|
||||
|
||||
(defmethod component-depends-on ((o load-fasl-op) (c system))
|
||||
(subst 'load-fasl-op 'load-op
|
||||
(subst 'fasl-op 'compile-op
|
||||
(component-depends-on (make-instance 'load-op) c))))
|
||||
(unless (every #'(lambda (c) (typep c 'ecl-binary-file)) (module-components c))
|
||||
(subst 'load-fasl-op 'load-op
|
||||
(subst 'fasl-op 'compile-op
|
||||
(component-depends-on (make-instance 'load-op) c)))))
|
||||
|
||||
(defmethod input-files ((o load-fasl-op) (c system))
|
||||
(and (module-components c)
|
||||
|
|
@ -244,6 +245,21 @@
|
|||
(asdf:operate *require-asdf-operator* name)
|
||||
t))))
|
||||
|
||||
(defclass ecl-binary-file (component) ())
|
||||
(defmethod component-pathname ((c ecl-binary-file))
|
||||
(merge-pathnames (compile-file-pathname (string (component-name c)))
|
||||
"sys:"))
|
||||
(defmethod output-files (o (c ecl-binary-file))
|
||||
nil)
|
||||
(defmethod input-files (o (c ecl-binary-file))
|
||||
nil)
|
||||
(defmethod perform ((o load-op) (c ecl-binary-file))
|
||||
(load (component-pathname c)))
|
||||
(defmethod perform ((o load-fasl-op) (c ecl-binary-file))
|
||||
(load (component-pathname c)))
|
||||
(defmethod perform (o (c ecl-binary-file))
|
||||
nil)
|
||||
|
||||
(defun register-pre-built-system (name)
|
||||
(register-system name (make-instance 'system :name name)))
|
||||
|
||||
|
|
|
|||
|
|
@ -1340,7 +1340,7 @@ output to *VERBOSE-OUT*. Returns the shell's exit code."
|
|||
(system (asdf:find-system name nil)))
|
||||
(when system
|
||||
(asdf:operate 'asdf:load-op name)
|
||||
t))))
|
||||
(provide name)))))
|
||||
|
||||
(defun contrib-sysdef-search (system)
|
||||
(let ((home (sb-ext:posix-getenv "SBCL_HOME")))
|
||||
|
|
|
|||
|
|
@ -167,6 +167,7 @@ install-base:
|
|||
$(LN_S) @SONAME3@ @SONAME1@ && \
|
||||
$(LN_S) @SONAME3@ @SONAME@ ) \
|
||||
fi
|
||||
-for i in *.asd; do $(INSTALL_DATA) $${i} $(DESTDIR)$(ecldir); done
|
||||
for i in c/dpp$(EXE) ecl_min$(EXE) `cat MODULES`; do \
|
||||
case $$i in \
|
||||
*.fas) $(INSTALL_PROGRAM) $$i $(DESTDIR)$(ecldir);; \
|
||||
|
|
|
|||
|
|
@ -111,6 +111,12 @@
|
|||
:readably t :pretty nil)))))))
|
||||
output))
|
||||
|
||||
(defun build-fake-asdf (name)
|
||||
(with-open-file (*standard-output* (make-pathname :name name :type "asd")
|
||||
:direction :output :if-exists :supersede :if-does-not-exist :create)
|
||||
(print `(defsystem ,name
|
||||
:components ((:ecl-binary-file ,(string name)))))))
|
||||
|
||||
(defun build-module (name sources &key additional-files
|
||||
(builtin nil) (dir "build:")
|
||||
((:prefix si::*init-function-prefix*) "EXT"))
|
||||
|
|
@ -118,6 +124,8 @@
|
|||
(let* ((name (string-downcase name)))
|
||||
(when additional-files
|
||||
(setf *module-files* (append additional-files *module-files*)))
|
||||
(unless (equalp name "asdf")
|
||||
(build-fake-asdf name))
|
||||
(if builtin
|
||||
(let* ((objects (compile-if-old dir sources :system-p t :c-file t
|
||||
:data-file t :h-file t)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue