mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-04-21 09:10:41 -07:00
A much simpler solution for registering modules with ASDF without creating *.asd files
This commit is contained in:
parent
e7369e72fd
commit
9b6de867b5
3 changed files with 32 additions and 34 deletions
|
|
@ -11,6 +11,7 @@
|
|||
;;;
|
||||
|
||||
(in-package :asdf)
|
||||
(require 'cmp)
|
||||
|
||||
;;;
|
||||
;;; COMPILE-OP / LOAD-OP
|
||||
|
|
@ -217,7 +218,8 @@
|
|||
(component-depends-on (make-instance 'load-op) c))))
|
||||
|
||||
(defmethod input-files ((o load-fasl-op) (c system))
|
||||
(output-files (make-instance 'fasl-op) c))
|
||||
(and (module-components c)
|
||||
(output-files (make-instance 'fasl-op) c)))
|
||||
|
||||
(defmethod perform ((o load-fasl-op) (c t))
|
||||
nil)
|
||||
|
|
@ -228,4 +230,31 @@
|
|||
do (setf (gethash 'load-op (component-operation-times i)) (get-universal-time))))
|
||||
|
||||
(export '(make-build load-fasl-op))
|
||||
(push '("fasb" . si::load-binary) si::*load-hooks*)
|
||||
(push '("fasb" . si::load-binary) si::*load-hooks*)
|
||||
|
||||
;; Hook into ECL's require/provide
|
||||
(require 'cmp)
|
||||
(defvar *require-asdf-operator* 'load-op)
|
||||
|
||||
(defun module-provide-asdf (name)
|
||||
(handler-bind ((style-warning #'muffle-warning))
|
||||
(let* ((*verbose-out* (make-broadcast-stream))
|
||||
(system (asdf:find-system name nil)))
|
||||
(when system
|
||||
(asdf:operate *require-asdf-operator* name)
|
||||
t))))
|
||||
|
||||
(defun register-pre-built-system (name)
|
||||
(register-system name (make-instance 'system :name name)))
|
||||
|
||||
(setf si::*module-provider-functions*
|
||||
(loop for f in si::*module-provider-functions*
|
||||
unless (eq f 'module-provide-asdf)
|
||||
collect #'(lambda (name)
|
||||
(let ((l (multiple-value-list (funcall f name))))
|
||||
(and (first l) (register-pre-built-system name))
|
||||
(values-list l)))))
|
||||
#+win32 (push '("asd" . si::load-source) si::*load-hooks*)
|
||||
(pushnew 'module-provide-asdf ext:*module-provider-functions*)
|
||||
|
||||
(provide 'asdf)
|
||||
|
|
|
|||
|
|
@ -362,6 +362,7 @@ and NIL NAME and TYPE components"
|
|||
|
||||
(defvar *central-registry*
|
||||
'(*default-pathname-defaults*
|
||||
"sys:"
|
||||
#+nil "/home/dan/src/sourceforge/cclan/asdf/systems/"
|
||||
#+nil "telent:asdf;systems;"))
|
||||
|
||||
|
|
@ -1368,29 +1369,3 @@ output to *VERBOSE-OUT*. Returns the shell's exit code."
|
|||
|
||||
(pushnew 'module-provide-asdf sb-ext:*module-provider-functions*)
|
||||
(pushnew 'contrib-sysdef-search *system-definition-search-functions*))
|
||||
|
||||
;; Hook into ECL's require/provide
|
||||
#+ecl
|
||||
(progn
|
||||
(require 'cmp)
|
||||
(defvar *require-asdf-operator* 'load-op)
|
||||
(defun module-provide-asdf (name)
|
||||
(handler-bind ((style-warning #'muffle-warning))
|
||||
(let* ((*verbose-out* (make-broadcast-stream))
|
||||
(system (asdf:find-system name nil)))
|
||||
(when system
|
||||
(asdf:operate *require-asdf-operator* name)
|
||||
t))))
|
||||
(defun register-pre-built-system (name)
|
||||
(register-system name (make-instance 'system :name name)))
|
||||
(setf si::*module-provider-functions*
|
||||
(loop for f in si::*module-provider-functions*
|
||||
unless (eq f 'module-provide-asdf)
|
||||
collect #'(lambda (name)
|
||||
(let ((l (multiple-value-list (funcall f name))))
|
||||
(and (first l) (register-pre-built-system name))
|
||||
(values-list l)))))
|
||||
#+win32 (push '("asd" . si::load-source) si::*load-hooks*)
|
||||
(pushnew 'module-provide-asdf ext:*module-provider-functions*))
|
||||
|
||||
(provide 'asdf)
|
||||
|
|
|
|||
|
|
@ -111,12 +111,6 @@
|
|||
: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
|
||||
:do-first (load ,(concatenate 'string "sys:" name))))))
|
||||
|
||||
(defun build-module (name sources &key additional-files
|
||||
(builtin nil) (dir "build:")
|
||||
((:prefix si::*init-function-prefix*) "EXT"))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue