X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fasdf%2Fasdf.lisp;h=0eddb5284928598577d2de767fe55e0138b6d945;hb=7c0e4f94bc39db82e08f1b918e18011ac1e20181;hp=7cec55b9147ac7a916c40cd3b1bf58a7d5002c20;hpb=2add48f5ee524f8f2ed0098694f1358d910336aa;p=sbcl.git diff --git a/contrib/asdf/asdf.lisp b/contrib/asdf/asdf.lisp index 7cec55b..0eddb52 100644 --- a/contrib/asdf/asdf.lisp +++ b/contrib/asdf/asdf.lisp @@ -1,4 +1,4 @@ -;;; This is asdf: Another System Definition Facility. 1.87 +;;; This is asdf: Another System Definition Facility. 1.92 ;;; ;;; Feedback, bug reports, and patches are all welcome: please mail to ;;; . But note first that the canonical @@ -109,7 +109,7 @@ (in-package #:asdf) -(defvar *asdf-revision* (let* ((v "1.87") +(defvar *asdf-revision* (let* ((v "1.92") (colon (or (position #\: v) -1)) (dot (position #\. v))) (and v colon dot @@ -930,10 +930,11 @@ Returns the new tree (which probably shares structure with the old one)" ;; remove-keys form. important to keep them in sync components pathname default-component-class perform explain output-files operation-done-p + weakly-depends-on depends-on serial in-order-to ;; list ends &allow-other-keys) options - (check-component-input type name depends-on components in-order-to) + (check-component-input type name weakly-depends-on depends-on components in-order-to) (when (and parent (find-component parent name) @@ -946,11 +947,14 @@ Returns the new tree (which probably shares structure with the old one)" (let* ((other-args (remove-keys '(components pathname default-component-class perform explain output-files operation-done-p + weakly-depends-on depends-on serial in-order-to) rest)) (ret (or (find-component parent name) (make-instance (class-for-type parent type))))) + (when weakly-depends-on + (setf depends-on (append depends-on (remove-if (complement #'find-system) weakly-depends-on)))) (when (boundp '*serial-depends-on*) (setf depends-on (concatenate 'list *serial-depends-on* depends-on))) @@ -974,7 +978,7 @@ Returns the new tree (which probably shares structure with the old one)" do (push (component-name c) *serial-depends-on*)))) ;; check for duplicate names - (let ((name-hash (make-hash-table :test #'equalp))) + (let ((name-hash (make-hash-table :test #'equal))) (loop for c in (module-components ret) do (if (gethash (component-name c) @@ -1009,11 +1013,15 @@ Returns the new tree (which probably shares structure with the old one)" (component-inline-methods ret)))) ret))) -(defun check-component-input (type name depends-on components in-order-to) +(defun check-component-input (type name weakly-depends-on depends-on components in-order-to) "A partial test of the values of a component." + (when weakly-depends-on (warn "We got one! XXXXX")) (unless (listp depends-on) (sysdef-error-component ":depends-on must be a list." type name depends-on)) + (unless (listp weakly-depends-on) + (sysdef-error-component ":weakly-depends-on must be a list." + type name weakly-depends-on)) (unless (listp components) (sysdef-error-component ":components must be NIL or a list of components." type name components)) @@ -1107,10 +1115,17 @@ output to *verbose-out*. Returns the shell's exit code." (asdf:operate 'asdf:load-op name) t)))) - (pushnew - '(merge-pathnames "systems/" - (truename (sb-ext:posix-getenv "SBCL_HOME"))) - *central-registry*) + (defun contrib-sysdef-search (system) + (let* ((name (coerce-name system)) + (home (truename (sb-ext:posix-getenv "SBCL_HOME"))) + (contrib (merge-pathnames + (make-pathname :directory `(:relative ,name) + :name name + :type "asd" + :case :local + :version :newest) + home))) + (probe-file contrib))) (pushnew '(merge-pathnames "site-systems/" @@ -1122,6 +1137,7 @@ output to *verbose-out*. Returns the shell's exit code." (user-homedir-pathname)) *central-registry*) - (pushnew 'module-provide-asdf sb-ext:*module-provider-functions*)) + (pushnew 'module-provide-asdf sb-ext:*module-provider-functions*) + (pushnew 'contrib-sysdef-search *system-definition-search-functions*)) (provide 'asdf)