Next iteration of the code for building and installing fake ASDF components for every ECL module.

This commit is contained in:
Juan Jose Garcia Ripoll 2009-08-05 22:23:36 +02:00
parent e4b778f07a
commit 96f4c92bd7
4 changed files with 29 additions and 4 deletions

View file

@ -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)))

View file

@ -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")))

View file

@ -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);; \

View file

@ -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)))