-;;; This is asdf: Another System Definition Facility. 1.68
+;;; This is asdf: Another System Definition Facility. 1.72
;;;
;;; Feedback, bug reports, and patches are all welcome: please mail to
;;; <cclan-list@lists.sf.net>. But note first that the canonical
(in-package #:asdf)
-(defvar *asdf-revision* (let* ((v "1.68")
+(defvar *asdf-revision* (let* ((v "1.72")
(colon (or (position #\: v) -1))
(dot (position #\. v)))
(and v colon dot
depends-on serial in-order-to
;; list ends
&allow-other-keys) options
+ (check-component-input type name depends-on components in-order-to)
(let* ((other-args (remove-keys
'(components pathname default-component-class
perform explain output-files operation-done-p
(component-inline-methods ret))))
ret)))
+(defun check-component-input (type name depends-on components in-order-to)
+ "A partial test of the values of a component."
+ (unless (listp depends-on)
+ (sysdef-error-component ":depends-on must be a list."
+ type name depends-on))
+ (unless (listp components)
+ (sysdef-error-component ":components must be NIL or a list of components."
+ type name components))
+ (unless (and (listp in-order-to) (listp (car in-order-to)))
+ (sysdef-error-component ":in-order-to must be NIL or a list of components."
+ type name in-order-to)))
+
+(defun sysdef-error-component (msg type name value)
+ (sysdef-error (concatenate 'string msg
+ "~&The value specified for ~(~A~) ~A is ~W")
+ type name value))
(defun resolve-symlinks (path)
#-allegro (truename path)
(let ((system (asdf:find-system name nil)))
(when system
(asdf:operate 'asdf:load-op name)
- (provide name))))
+ t)))
(pushnew
'(merge-pathnames "systems/"
(:file "inspect" :depends-on ("repl"))
(:file "debug" :depends-on ("repl"))))
+(defmethod perform :after ((o load-op) (c (eql (find-system :sb-aclrepl))))
+ (provide 'sb-aclrepl))
+
(defmethod perform ((o test-op) (c (eql (find-system :sb-aclrepl))))
(oos 'load-op 'sb-aclrepl-tests)
(oos 'test-op 'sb-aclrepl-tests))
(:static-file "doc" :pathname "doc.lisp")
(:static-file "TODO")))
+(defmethod perform :after ((o load-op) (c (eql (find-system :sb-bsd-sockets))))
+ (provide 'sb-bsd-sockets))
+
(defmethod perform ((o test-op) (c (eql (find-system :sb-bsd-sockets))))
(or (funcall (intern "DO-TESTS" (find-package "SB-RT")))
(error "test-op failed")))
(:file "foreign-glue" :depends-on ("defpackage"))
(:file "array-data" :depends-on ("defpackage"))))
+(defmethod perform :after ((o load-op) (c (eql (find-system :sb-grovel))))
+ (provide 'sb-grovel))
+
(defmethod perform ((o test-op) (c (eql (find-system :sb-grovel))))
t)
:package :sb-posix :depends-on ("defpackage"))
(:file "interface" :depends-on ("constants" "macros"))))
-#|
-(defmethod perform ((o test-op) (c (eql (find-system :sb-grovel))))
- t)
+(defmethod perform :after ((o test-op) (c (eql (find-system :sb-posix))))
+ (provide 'sb-posix))
-|#
\ No newline at end of file
+(defmethod perform ((o test-op) (c (eql (find-system :sb-posix))))
+ t)
:if-component-dep-fails :ignore)
(:file "rotate-byte" :depends-on ("compiler"))))
+(defmethod perform :after ((o load-op) (c (eql (find-system :sb-rotate-byte))))
+ (provide 'sb-rotate-byte))
+
(defmethod perform ((o test-op) (c (eql (find-system :sb-rotate-byte))))
(or (load (compile-file "rotate-byte-tests.lisp"))
(error "test-op failed")))
:version "0.1.7" ; our version "0", GCL CVS version "1.7"
:components ((:file "rt")))
+(defmethod perform :after ((o load-op) (c (eql (find-system :sb-rt))))
+ (provide 'sb-rt))
+
(defmethod perform ((o test-op) (c (eql (find-system :sb-rt))))
;; FIXME: Maybe also import rt-tests.lisp?
t)
needs to be. If PATHNAMES is not supplied, functions from the list
*MODULE-PROVIDER-FUNCTIONS* are called in order with MODULE-NAME
as an argument, until one of them returns non-NIL."
- (unless (member (string module-name) *modules* :test #'string=)
- (cond (pathnames
- (unless (listp pathnames) (setf pathnames (list pathnames)))
- ;; ambiguity in standard: should we try all pathnames in the
- ;; list, or should we stop as soon as one of them calls PROVIDE?
- (dolist (ele pathnames t)
- (load ele)))
- (t
- (unless (some (lambda (p) (funcall p module-name))
- sb!ext::*module-provider-functions*)
- (error "Don't know how to load ~A" module-name))))))
-
+ (let ((saved-modules (copy-list *modules*)))
+ (unless (member (string module-name) *modules* :test #'string=)
+ (cond (pathnames
+ (unless (listp pathnames) (setf pathnames (list pathnames)))
+ ;; ambiguity in standard: should we try all pathnames in the
+ ;; list, or should we stop as soon as one of them calls PROVIDE?
+ (dolist (ele pathnames t)
+ (load ele))
+ ;; should we do this? Probably can't hurt, while we're
+ ;; taking the above view of "load everything"... though
+ ;; maybe having REQUIRE directly call PROVIDE is
+ ;; aesthetically suboptimal.
+ (provide module-name))
+ (t
+ (unless (some (lambda (p) (funcall p module-name))
+ sb!ext::*module-provider-functions*)
+ (error "Don't know how to load ~A" module-name)))))
+ (set-difference *modules* saved-modules)))
\f
;;;; miscellany
(defun module-provide-contrib (name)
- "Stringify and downcase NAME if it is a symbol, then attempt to load
- the file $SBCL_HOME/name/name"
- (let ((name (if (symbolp name) (string-downcase (symbol-name name)) name)))
+ "Stringify and downcase NAME, then attempt to load the file
+ $SBCL_HOME/name/name"
+ (let ((filesys-name (string-downcase (string name))))
(load
- (merge-pathnames (make-pathname :directory (list :relative name)
- :name name)
+ (merge-pathnames (make-pathname :directory (list :relative filesys-name)
+ :name filesys-name)
(truename (posix-getenv "SBCL_HOME")))))
- (provide name))
+ (provide name)
+ t)
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8alpha.0.37"
+"0.8alpha.0.38"