Loading .gitignore +7 −9 Original line number Diff line number Diff line # really this is private to my build process make/ common-lisp.net .vcs init-lisp.lisp website/changelog.xml push resbcl reccl reecl regcl # Temporary files from documentation build doc/asdf/ Loading @@ -26,17 +23,18 @@ doc/asdf.tp doc/asdf.vr doc/asdf.vrs # We build these at various stages in the make process # We build these at various stages in the build and test process LICENSE website/output/ tmp/ lift-local.config *.dribble *.fasl *.dfsl *.cfsl *.fas *.lib *.o *.[oahcisS] *.*fsl *.bak *.data test/try-reloading-dependency.asd test/fileMissing.lisp GNUmakefile +11 −11 Original line number Diff line number Diff line Loading @@ -7,11 +7,12 @@ clnet_home := "/project/asdf/public_html/" sourceDirectory := $(shell pwd) lisps = allegro allegromodern ccl clisp sbcl lisps ?= allegro ccl clisp ecl sbcl ## not tested by me: abcl allegromodern cmucl lisworks ## FAIL: gclcvs ## maybe supported by asdf, not supported yet by our tests: cormancl mcl scl ifndef lisp lisp := sbcl endif lisp ?= sbcl # website, tag, install Loading @@ -26,11 +27,12 @@ archive: FORCE bin/build-tarball.sh archive-copy: archive git checkout release bin/rsync-cp.sh tmp/asdf*.tar.gz $(webhome_private)/archives bin/link-tarball.sh $(clnet_home) $(user) bin/rsync-cp.sh tmp/asdf.lisp $(webhome_private) git push cl.net git push --tags cl.net git push cl.net release git push --tags cl.net release website: make -C doc website Loading @@ -54,13 +56,11 @@ clean: FORCE make -C doc clean test: FORCE @cd test; make clean;./run-tests.sh $(lisp) $(test-regex) @cd test; make clean;./run-tests.sh ${lisp} ${test-glob} test-all: FORCE @for lisp in $(lisps); do \ make test lisp=$$lisp; \ @for lisp in ${lisps} ; do \ make test lisp=$$lisp || exit 1 ; \ done sbcl --userinit /dev/null --sysinit /dev/null --load bin/make-helper.lisp \ --eval "(write-test-web-pages)" --eval "(quit)" FORCE: README +8 −8 Original line number Diff line number Diff line ASDF: another system definition facility ======================================== If you want to use ASDF to load systems, see the getting started guide at: If you want to use ASDF, read our manual: http://common-lisp.net/project/asdf/getting-started.html http://common-lisp.net/project/asdf/asdf.html If you want to define your own systems, see the manual at: The first few sections, Loading ASDF, Configuring ASDF and Using ASDF, will get you started as a simple user. http://common-lisp.net/project/asdf/manual.html If you want to define your own systems, further read the section Defining systems with defsystem. More information and additional links can be found on ASDF's home page at: http://common-lisp.net/project/asdf http://common-lisp.net/project/asdf/ last updated Saturday; July 18, 2009, 10:20 AM EDT last updated Wednesday; May 5, 2010 asdf-ecl.lisp +112 −29 Original line number Diff line number Diff line Loading @@ -5,14 +5,14 @@ ;;; License as published by the Free Software Foundation; either ;;; version 2 of the License, or (at your option) any later version. ;;; ;;; See file '../../Copyright' for full details. ;;; See file 'ecl/Copyright' for full details. ;;; ;;; ECL SPECIFIC OPERATIONS FOR ASDF ;;; #+xcvb (module (:depends-on ("asdf"))) (in-package :asdf) (require 'cmp) (require :cmp) ;;; ;;; COMPILE-OP / LOAD-OP Loading Loading @@ -52,12 +52,12 @@ (prologue-code :accessor monolithic-op-prologue-code) (epilogue-code :accessor monolithic-op-epilogue-code))) (defclass monolithic-fasl-op (fasl-op monolithic-bundle-op) ()) (defclass monolithic-fasl-op (monolithic-bundle-op fasl-op) ()) (defclass monolithic-lib-op (lib-op monolithic-bundle-op) (defclass monolithic-lib-op (monolithic-bundle-op lib-op) ((type :initform :lib))) (defclass monolithic-dll-op (dll-op monolithic-bundle-op) (defclass monolithic-dll-op (monolithic-bundle-op dll-op) ((type :initform :dll))) (defclass program-op (monolithic-bundle-op) Loading @@ -66,6 +66,7 @@ (defmethod initialize-instance :after ((instance bundle-op) &rest initargs &key (name-suffix nil name-suffix-p) &allow-other-keys) (declare (ignorable initargs name-suffix)) (unless name-suffix-p (setf (slot-value instance 'name-suffix) (if (bundle-op-monolithic-p instance) "-mono" ""))) Loading @@ -84,6 +85,7 @@ (defvar *force-load-p* nil) (defmethod operation-done-p :around ((operation load-op) c) (declare (ignorable operation c)) (if *force-load-p* nil (call-next-method))) (defun gather-components (op-type system &key filter-system filter-type include-self) Loading Loading @@ -122,6 +124,7 @@ ;;; Gather the static libraries of all components. ;;; (defmethod bundle-sub-operations ((o monolithic-bundle-op) c) (declare (ignorable o)) (gather-components 'lib-op c :filter-type 'system :include-self t)) ;;; ;;; STATIC LIBRARIES Loading @@ -141,6 +144,7 @@ ;;; with the static library of this module. ;;; (defmethod bundle-sub-operations ((o dll-op) c) (declare (ignorable o)) (list (cons (make-instance 'lib-op) c))) ;;; ;;; FASL FILES Loading @@ -148,6 +152,7 @@ ;;; Gather the statically linked library of this component. ;;; (defmethod bundle-sub-operations ((o fasl-op) c) (declare (ignorable o)) (list (cons (make-instance 'lib-op) c))) (defmethod component-depends-on ((o bundle-op) (c system)) Loading @@ -157,9 +162,11 @@ (component-name dep)))) (defmethod component-depends-on ((o lib-op) (c system)) (declare (ignorable o)) (list (list 'compile-op (component-name c)))) (defmethod component-depends-on ((o bundle-op) c) (declare (ignorable o c)) nil) (defmethod input-files ((o bundle-op) (c system)) Loading @@ -173,17 +180,21 @@ (component-relative-pathname c))))) (defmethod output-files ((o fasl-op) (c system)) (declare (ignorable o c)) (loop for file in (call-next-method) collect (make-pathname :type "fasb" :defaults file))) (defmethod perform ((o bundle-op) (c t)) (declare (ignorable o c)) t) (defmethod operation-done-p ((o bundle-op) (c source-file)) (declare (ignorable o c)) t) (defmethod perform ((o bundle-op) (c system)) (let* ((object-files (remove "fas" (input-files o c) :key #'pathname-type :test #'string=)) (let* ((object-files (remove "fas" (input-files o c) :key #'pathname-type :test #'string=)) (output (output-files o c))) (ensure-directories-exist (first output)) (apply #'c::builder (bundle-op-type o) (first output) :lisp-files object-files Loading @@ -197,6 +208,8 @@ (defun select-operation (monolithic type) (ecase type ((:binary) (if monolithic 'monolithic-binary-op 'binary-op)) ((:dll :shared-library) (if monolithic 'monolithic-dll-op 'dll-op)) ((:lib :static-library) Loading @@ -206,37 +219,31 @@ ((:program) 'program-op))) (defun make-build (system &rest args &key (monolithic nil) (type :fasl) (move-here nil move-here-p) &allow-other-keys) (let* ((operation-name (select-operation monolithic type)) (move-here-path (if (and move-here (typep move-here '(or pathname string))) (pathname move-here) (merge-pathnames "./asdf-output/"))) (operation (apply #'operate operation-name system (remove-keys '(monolithic type move-here) args))) (system (find-system system)) (files (and system (output-files operation system)))) (print files) (print move-here) (if (or move-here (and (null move-here-p) (member operation-name '(:program)))) (loop for path in files for filename = (namestring (truename path)) for new-path = (make-pathname :name (pathname-name path) :type (pathname-type path) :defaults *default-pathname-defaults*) for new-filename = (namestring new-path) for command = #+windows (format nil "move ~S ~S" filename new-filename) #-windows (format nil "mv ~S ~S" filename new-filename) do (unless (equalp new-filename filename) (when (plusp (si::system (print command))) (error "Unable to move file~& ~S~&to new location~& ~S" path new-path))) collect new-path) (if (or move-here (and (null move-here-p) (member operation-name '(:program :binary)))) (loop with dest-path = (truename (ensure-directories-exist move-here-path)) for f in files for new-f = (make-pathname :name (pathname-name f) :type (pathname-type f) :defaults dest-path) do (progn (when (probe-file new-f) (delete-file new-f)) (rename-file f new-f)) collect new-f) files))) ;;; Loading @@ -251,16 +258,19 @@ (every #'(lambda (c) (typep c 'compiled-file)) (module-components c))) (defmethod component-depends-on ((o load-fasl-op) (c system)) (declare (ignorable o)) (unless (trivial-system-p 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)) (declare (ignore o)) (unless (trivial-system-p c) (output-files (make-instance 'fasl-op) c))) (defmethod perform ((o load-fasl-op) (c t)) (declare (ignore o c)) nil) (defmethod perform ((o load-fasl-op) (c system)) Loading @@ -287,14 +297,19 @@ :type "fas"))) (defmethod output-files (o (c compiled-file)) (declare (ignore o c)) nil) (defmethod input-files (o (c compiled-file)) (declare (ignore o c)) nil) (defmethod perform ((o load-op) (c compiled-file)) (declare (ignore o)) (load (component-pathname c))) (defmethod perform ((o load-fasl-op) (c compiled-file)) (declare (ignore o)) (load (component-pathname c))) (defmethod perform (o (c compiled-file)) (declare (ignore o c)) nil) ;;; Loading @@ -304,6 +319,7 @@ ((static-library :accessor prebuilt-system-static-library :initarg :lib))) (defmethod output-files ((o lib-op) (c prebuilt-system)) (declare (ignore o)) (values (list (compile-file-pathname (prebuilt-system-static-library c) :type :lib)) t ; Advertise that we do not want this path renamed Loading @@ -313,22 +329,89 @@ (car (output-files o c))) (defmethod component-depends-on ((o lib-op) (c prebuilt-system)) (declare (ignorable o c)) nil) (defmethod bundle-sub-operations ((o lib-op) (c prebuilt-system)) (declare (ignorable o c)) nil) (defmethod bundle-sub-operations ((o monolithic-lib-op) (c prebuilt-system)) (declare (ignorable o)) (error "Prebuilt system ~S shipped with ECL can not be used in a monolithic library operation." c)) (defmethod bundle-sub-operations ((o monolithic-bundle-op) (c prebuilt-system)) (declare (ignorable o c)) nil) ;;; ;;; PREBUILT SYSTEM CREATOR ;;; (defclass binary-op (bundle-op) ()) (defclass monolithic-binary-op (binary-op monolithic-bundle-op) ()) (defun binary-op-dependencies (o s) (let (lib-op fasl-op) (if (bundle-op-monolithic-p o) (setf lib-op 'monolithic-lib-op fasl-op 'monolithic-fasl-op) (setf lib-op 'lib-op fasl-op 'fasl-op)) (list (list (make-instance lib-op :args (bundle-op-build-args o)) s) (list (make-instance fasl-op :args (bundle-op-build-args o)) s)))) (defmethod component-depends-on ((o binary-op) (s system)) (loop for dep in (binary-op-dependencies o s) append (apply #'component-depends-on dep))) (defmethod input-files ((o binary-op) (s system)) (loop for dep in (binary-op-dependencies o s) append (apply #'input-files dep))) (defmethod output-files ((o binary-op) (s system)) (list* (merge-pathnames* (make-pathname :name (component-name s) :type "asd") (component-relative-pathname s)) (loop for dep in (binary-op-dependencies o s) append (apply #'output-files dep)))) (defmethod perform ((o binary-op) (s system)) (let* ((dependencies (binary-op-dependencies o s)) (library (first (apply #'output-files (first dependencies)))) (fasl (first (apply #'output-files (second dependencies)))) (filename (first (output-files o s))) (name (component-name s)) (name-keyword (intern (string name) (find-package :keyword)))) (loop for dep in dependencies do (apply #'perform dep)) (with-open-file (s filename :direction :output :if-exists :supersede :if-does-not-exist :create) (format s ";;; Prebuilt ASDF definition for system ~A" name) (format s ";;; Built for ~A ~A on a ~A/~A ~A" (lisp-implementation-type) (lisp-implementation-version) (software-type) (machine-type) (software-version)) (let ((*package* (find-package :keyword))) (pprint `(defsystem ,name-keyword :class asdf::prebuilt-system :components ((:compiled-file ,(pathname-name fasl))) :lib ,(make-pathname :name (pathname-name library) :type (pathname-type library))) s))))) ;;; ;;; Final integration steps ;;; (export '(make-build load-fasl-op)) (export '(make-build load-fasl-op prebuilt-system)) (push '("fasb" . si::load-binary) si::*load-hooks*) (require 'cmp) Loading asdf-install.lispdeleted 100644 → 0 +0 −299 File deleted.Preview size limit exceeded, changes collapsed. Show changes Loading
.gitignore +7 −9 Original line number Diff line number Diff line # really this is private to my build process make/ common-lisp.net .vcs init-lisp.lisp website/changelog.xml push resbcl reccl reecl regcl # Temporary files from documentation build doc/asdf/ Loading @@ -26,17 +23,18 @@ doc/asdf.tp doc/asdf.vr doc/asdf.vrs # We build these at various stages in the make process # We build these at various stages in the build and test process LICENSE website/output/ tmp/ lift-local.config *.dribble *.fasl *.dfsl *.cfsl *.fas *.lib *.o *.[oahcisS] *.*fsl *.bak *.data test/try-reloading-dependency.asd test/fileMissing.lisp
GNUmakefile +11 −11 Original line number Diff line number Diff line Loading @@ -7,11 +7,12 @@ clnet_home := "/project/asdf/public_html/" sourceDirectory := $(shell pwd) lisps = allegro allegromodern ccl clisp sbcl lisps ?= allegro ccl clisp ecl sbcl ## not tested by me: abcl allegromodern cmucl lisworks ## FAIL: gclcvs ## maybe supported by asdf, not supported yet by our tests: cormancl mcl scl ifndef lisp lisp := sbcl endif lisp ?= sbcl # website, tag, install Loading @@ -26,11 +27,12 @@ archive: FORCE bin/build-tarball.sh archive-copy: archive git checkout release bin/rsync-cp.sh tmp/asdf*.tar.gz $(webhome_private)/archives bin/link-tarball.sh $(clnet_home) $(user) bin/rsync-cp.sh tmp/asdf.lisp $(webhome_private) git push cl.net git push --tags cl.net git push cl.net release git push --tags cl.net release website: make -C doc website Loading @@ -54,13 +56,11 @@ clean: FORCE make -C doc clean test: FORCE @cd test; make clean;./run-tests.sh $(lisp) $(test-regex) @cd test; make clean;./run-tests.sh ${lisp} ${test-glob} test-all: FORCE @for lisp in $(lisps); do \ make test lisp=$$lisp; \ @for lisp in ${lisps} ; do \ make test lisp=$$lisp || exit 1 ; \ done sbcl --userinit /dev/null --sysinit /dev/null --load bin/make-helper.lisp \ --eval "(write-test-web-pages)" --eval "(quit)" FORCE:
README +8 −8 Original line number Diff line number Diff line ASDF: another system definition facility ======================================== If you want to use ASDF to load systems, see the getting started guide at: If you want to use ASDF, read our manual: http://common-lisp.net/project/asdf/getting-started.html http://common-lisp.net/project/asdf/asdf.html If you want to define your own systems, see the manual at: The first few sections, Loading ASDF, Configuring ASDF and Using ASDF, will get you started as a simple user. http://common-lisp.net/project/asdf/manual.html If you want to define your own systems, further read the section Defining systems with defsystem. More information and additional links can be found on ASDF's home page at: http://common-lisp.net/project/asdf http://common-lisp.net/project/asdf/ last updated Saturday; July 18, 2009, 10:20 AM EDT last updated Wednesday; May 5, 2010
asdf-ecl.lisp +112 −29 Original line number Diff line number Diff line Loading @@ -5,14 +5,14 @@ ;;; License as published by the Free Software Foundation; either ;;; version 2 of the License, or (at your option) any later version. ;;; ;;; See file '../../Copyright' for full details. ;;; See file 'ecl/Copyright' for full details. ;;; ;;; ECL SPECIFIC OPERATIONS FOR ASDF ;;; #+xcvb (module (:depends-on ("asdf"))) (in-package :asdf) (require 'cmp) (require :cmp) ;;; ;;; COMPILE-OP / LOAD-OP Loading Loading @@ -52,12 +52,12 @@ (prologue-code :accessor monolithic-op-prologue-code) (epilogue-code :accessor monolithic-op-epilogue-code))) (defclass monolithic-fasl-op (fasl-op monolithic-bundle-op) ()) (defclass monolithic-fasl-op (monolithic-bundle-op fasl-op) ()) (defclass monolithic-lib-op (lib-op monolithic-bundle-op) (defclass monolithic-lib-op (monolithic-bundle-op lib-op) ((type :initform :lib))) (defclass monolithic-dll-op (dll-op monolithic-bundle-op) (defclass monolithic-dll-op (monolithic-bundle-op dll-op) ((type :initform :dll))) (defclass program-op (monolithic-bundle-op) Loading @@ -66,6 +66,7 @@ (defmethod initialize-instance :after ((instance bundle-op) &rest initargs &key (name-suffix nil name-suffix-p) &allow-other-keys) (declare (ignorable initargs name-suffix)) (unless name-suffix-p (setf (slot-value instance 'name-suffix) (if (bundle-op-monolithic-p instance) "-mono" ""))) Loading @@ -84,6 +85,7 @@ (defvar *force-load-p* nil) (defmethod operation-done-p :around ((operation load-op) c) (declare (ignorable operation c)) (if *force-load-p* nil (call-next-method))) (defun gather-components (op-type system &key filter-system filter-type include-self) Loading Loading @@ -122,6 +124,7 @@ ;;; Gather the static libraries of all components. ;;; (defmethod bundle-sub-operations ((o monolithic-bundle-op) c) (declare (ignorable o)) (gather-components 'lib-op c :filter-type 'system :include-self t)) ;;; ;;; STATIC LIBRARIES Loading @@ -141,6 +144,7 @@ ;;; with the static library of this module. ;;; (defmethod bundle-sub-operations ((o dll-op) c) (declare (ignorable o)) (list (cons (make-instance 'lib-op) c))) ;;; ;;; FASL FILES Loading @@ -148,6 +152,7 @@ ;;; Gather the statically linked library of this component. ;;; (defmethod bundle-sub-operations ((o fasl-op) c) (declare (ignorable o)) (list (cons (make-instance 'lib-op) c))) (defmethod component-depends-on ((o bundle-op) (c system)) Loading @@ -157,9 +162,11 @@ (component-name dep)))) (defmethod component-depends-on ((o lib-op) (c system)) (declare (ignorable o)) (list (list 'compile-op (component-name c)))) (defmethod component-depends-on ((o bundle-op) c) (declare (ignorable o c)) nil) (defmethod input-files ((o bundle-op) (c system)) Loading @@ -173,17 +180,21 @@ (component-relative-pathname c))))) (defmethod output-files ((o fasl-op) (c system)) (declare (ignorable o c)) (loop for file in (call-next-method) collect (make-pathname :type "fasb" :defaults file))) (defmethod perform ((o bundle-op) (c t)) (declare (ignorable o c)) t) (defmethod operation-done-p ((o bundle-op) (c source-file)) (declare (ignorable o c)) t) (defmethod perform ((o bundle-op) (c system)) (let* ((object-files (remove "fas" (input-files o c) :key #'pathname-type :test #'string=)) (let* ((object-files (remove "fas" (input-files o c) :key #'pathname-type :test #'string=)) (output (output-files o c))) (ensure-directories-exist (first output)) (apply #'c::builder (bundle-op-type o) (first output) :lisp-files object-files Loading @@ -197,6 +208,8 @@ (defun select-operation (monolithic type) (ecase type ((:binary) (if monolithic 'monolithic-binary-op 'binary-op)) ((:dll :shared-library) (if monolithic 'monolithic-dll-op 'dll-op)) ((:lib :static-library) Loading @@ -206,37 +219,31 @@ ((:program) 'program-op))) (defun make-build (system &rest args &key (monolithic nil) (type :fasl) (move-here nil move-here-p) &allow-other-keys) (let* ((operation-name (select-operation monolithic type)) (move-here-path (if (and move-here (typep move-here '(or pathname string))) (pathname move-here) (merge-pathnames "./asdf-output/"))) (operation (apply #'operate operation-name system (remove-keys '(monolithic type move-here) args))) (system (find-system system)) (files (and system (output-files operation system)))) (print files) (print move-here) (if (or move-here (and (null move-here-p) (member operation-name '(:program)))) (loop for path in files for filename = (namestring (truename path)) for new-path = (make-pathname :name (pathname-name path) :type (pathname-type path) :defaults *default-pathname-defaults*) for new-filename = (namestring new-path) for command = #+windows (format nil "move ~S ~S" filename new-filename) #-windows (format nil "mv ~S ~S" filename new-filename) do (unless (equalp new-filename filename) (when (plusp (si::system (print command))) (error "Unable to move file~& ~S~&to new location~& ~S" path new-path))) collect new-path) (if (or move-here (and (null move-here-p) (member operation-name '(:program :binary)))) (loop with dest-path = (truename (ensure-directories-exist move-here-path)) for f in files for new-f = (make-pathname :name (pathname-name f) :type (pathname-type f) :defaults dest-path) do (progn (when (probe-file new-f) (delete-file new-f)) (rename-file f new-f)) collect new-f) files))) ;;; Loading @@ -251,16 +258,19 @@ (every #'(lambda (c) (typep c 'compiled-file)) (module-components c))) (defmethod component-depends-on ((o load-fasl-op) (c system)) (declare (ignorable o)) (unless (trivial-system-p 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)) (declare (ignore o)) (unless (trivial-system-p c) (output-files (make-instance 'fasl-op) c))) (defmethod perform ((o load-fasl-op) (c t)) (declare (ignore o c)) nil) (defmethod perform ((o load-fasl-op) (c system)) Loading @@ -287,14 +297,19 @@ :type "fas"))) (defmethod output-files (o (c compiled-file)) (declare (ignore o c)) nil) (defmethod input-files (o (c compiled-file)) (declare (ignore o c)) nil) (defmethod perform ((o load-op) (c compiled-file)) (declare (ignore o)) (load (component-pathname c))) (defmethod perform ((o load-fasl-op) (c compiled-file)) (declare (ignore o)) (load (component-pathname c))) (defmethod perform (o (c compiled-file)) (declare (ignore o c)) nil) ;;; Loading @@ -304,6 +319,7 @@ ((static-library :accessor prebuilt-system-static-library :initarg :lib))) (defmethod output-files ((o lib-op) (c prebuilt-system)) (declare (ignore o)) (values (list (compile-file-pathname (prebuilt-system-static-library c) :type :lib)) t ; Advertise that we do not want this path renamed Loading @@ -313,22 +329,89 @@ (car (output-files o c))) (defmethod component-depends-on ((o lib-op) (c prebuilt-system)) (declare (ignorable o c)) nil) (defmethod bundle-sub-operations ((o lib-op) (c prebuilt-system)) (declare (ignorable o c)) nil) (defmethod bundle-sub-operations ((o monolithic-lib-op) (c prebuilt-system)) (declare (ignorable o)) (error "Prebuilt system ~S shipped with ECL can not be used in a monolithic library operation." c)) (defmethod bundle-sub-operations ((o monolithic-bundle-op) (c prebuilt-system)) (declare (ignorable o c)) nil) ;;; ;;; PREBUILT SYSTEM CREATOR ;;; (defclass binary-op (bundle-op) ()) (defclass monolithic-binary-op (binary-op monolithic-bundle-op) ()) (defun binary-op-dependencies (o s) (let (lib-op fasl-op) (if (bundle-op-monolithic-p o) (setf lib-op 'monolithic-lib-op fasl-op 'monolithic-fasl-op) (setf lib-op 'lib-op fasl-op 'fasl-op)) (list (list (make-instance lib-op :args (bundle-op-build-args o)) s) (list (make-instance fasl-op :args (bundle-op-build-args o)) s)))) (defmethod component-depends-on ((o binary-op) (s system)) (loop for dep in (binary-op-dependencies o s) append (apply #'component-depends-on dep))) (defmethod input-files ((o binary-op) (s system)) (loop for dep in (binary-op-dependencies o s) append (apply #'input-files dep))) (defmethod output-files ((o binary-op) (s system)) (list* (merge-pathnames* (make-pathname :name (component-name s) :type "asd") (component-relative-pathname s)) (loop for dep in (binary-op-dependencies o s) append (apply #'output-files dep)))) (defmethod perform ((o binary-op) (s system)) (let* ((dependencies (binary-op-dependencies o s)) (library (first (apply #'output-files (first dependencies)))) (fasl (first (apply #'output-files (second dependencies)))) (filename (first (output-files o s))) (name (component-name s)) (name-keyword (intern (string name) (find-package :keyword)))) (loop for dep in dependencies do (apply #'perform dep)) (with-open-file (s filename :direction :output :if-exists :supersede :if-does-not-exist :create) (format s ";;; Prebuilt ASDF definition for system ~A" name) (format s ";;; Built for ~A ~A on a ~A/~A ~A" (lisp-implementation-type) (lisp-implementation-version) (software-type) (machine-type) (software-version)) (let ((*package* (find-package :keyword))) (pprint `(defsystem ,name-keyword :class asdf::prebuilt-system :components ((:compiled-file ,(pathname-name fasl))) :lib ,(make-pathname :name (pathname-name library) :type (pathname-type library))) s))))) ;;; ;;; Final integration steps ;;; (export '(make-build load-fasl-op)) (export '(make-build load-fasl-op prebuilt-system)) (push '("fasb" . si::load-binary) si::*load-hooks*) (require 'cmp) Loading
asdf-install.lispdeleted 100644 → 0 +0 −299 File deleted.Preview size limit exceeded, changes collapsed. Show changes