Commit df2261fe authored by Francois-Rene Rideau's avatar Francois-Rene Rideau

Fix issues with ECL with the new plan

Update some packages so #+ecl forms can see symbols they need. Make sure uiop and/or asdf have linkable output before to link them. Fix test-program to account for recent asdf changes.
parent 026ceaea
......@@ -5,6 +5,7 @@
(:recycle :asdf/bundle :asdf)
(:use :uiop/common-lisp :uiop :asdf/upgrade
:asdf/component :asdf/system :asdf/operation
:asdf/find-component ;; used by ECL
:asdf/action :asdf/lisp-action :asdf/plan :asdf/operate :asdf/parse-defsystem)
(:export
#:bundle-op #:bundle-type #:program-system
......@@ -526,7 +527,7 @@ which is probably not what you want; you probably need to tweak your output tran
(defun linkable-system (x)
(or (if-let (s (find-system x))
(and (system-source-file x) s))
(and (system-source-file x) (output-files 'lib-op x) s))
(if-let (p (system-module-pathname (coerce-name x)))
(make-prebuilt-system x p))))
......@@ -543,7 +544,8 @@ which is probably not what you want; you probably need to tweak your output tran
`((lib-op
,@(unless (no-uiop c)
(list (linkable-system "cmp")
(unless (or (gethash "uiop" deps) (gethash "asdf" deps))
(unless (or (and (gethash "uiop" deps) (linkable-system "uiop"))
(and (gethash "asdf" deps) (linkable-system "asdf")))
(or (linkable-system "uiop")
(linkable-system "asdf")
"asdf")))))
......
......@@ -4,6 +4,7 @@
(uiop/package:define-package :asdf/footer
(:recycle :asdf/footer :asdf)
(:use :uiop/common-lisp :uiop
:asdf/system ;; used by ECL
:asdf/upgrade :asdf/system-registry :asdf/operate :asdf/bundle)
;; Happily, all those implementations all have the same module-provider hook interface.
#+(or abcl clasp cmucl clozure ecl mkcl sbcl)
......
......@@ -28,7 +28,6 @@
(defun make-hello-bundle (operation)
(operate 'load-bundle-op :hello-world-example)
(operate operation :hello-world-example)
#+mkcl (add-mkcl-dll (asdf::output-file operation :hello-world-example))
(quit 0))
......
......@@ -22,7 +22,7 @@
(assert (find-system :hello-world-example))
;; Try to load lisp-invocation from xcvb
;; Try to load lisp-invocation from ext/ or from the user environment.
(initialize-source-registry
`(:source-registry
(:directory ,*asdf-directory*)
......@@ -147,6 +147,10 @@
'("Look ma, no UIOP!" "And TEST-PACKAGE!" "And no ASDF!"))
(DBG "Now create an program with explicit ASDF dependency, without registered ASDF (use implementation-provided prebuilt)")
(clear-system :asdf)
(setf *central-registry* nil)
(initialize-source-registry `(:source-registry :ignore-inherited-configuration))
(DBG :foo (system-source-file :asdf))
(assert-pathname-equal
(truename (pathname-directory-pathname (output-file 'lib-op (asdf/bundle::linkable-system "asdf"))))
(truename (subpathname (lisp-implementation-directory) #+mkcl "contrib/" #-mkcl nil)))
......@@ -168,8 +172,8 @@
(DBG "Now create an program with explicit ASDF dependency")
(register-directory *asdf-directory*)
(with-asdf-cache (:override t)
(load-asd (subpathname *asdf-directory* "asdf.asd")) ;; force re-loading ASDF, from source
(load-asd (subpathname *asdf-directory* "asdf.asd")) ;; force re-loading ASDF, from source
(with-asdf-session (:override t)
(assert-pathname-equal
(truename (pathname-directory-pathname (output-file 'lib-op (asdf/bundle::linkable-system "asdf"))))
(truename (resolve-output "asdf/")))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment