Commit 2cc83b73 authored by Robert P. Goldman's avatar Robert P. Goldman

Merge branch 'master' of ssh://common-lisp.net/project/asdf/public_html/asdf

Just documentation (docstring and comment) additions from Fare's
walkthrough.  These conflicted with his code improvements during the
walkthrough.

Conflicts:
	action.lisp
	lisp-action.lisp
	operation.lisp
	plan.lisp
parents 0a810111 add04b5e
......@@ -152,13 +152,13 @@ test-all-upgrade-no-stop:
@for lisp in ${lisps} ; do ${MAKE} test-upgrade l=$$lisp ; done ; :
test-all-no-upgrade-no-stop: doc test-load-systems test-all-clean-load test-all-lisp-no-stop
make check-all-test-results
make --quiet check-all-test-results
test-all-no-stop: doc test-load-systems test-all-clean-load test-all-lisp-no-stop test-all-upgrade-no-stop
make check-all-results
make --quiet check-all-results
check-all-test-results:
@A="`grep -L '49 passing and 0 failing' build/results/*-test.text`" ; \
@A="`grep -L '[5-9][0-9] passing and 0 failing' build/results/*-test.text`" ; \
if [ -n "$$A" ] ; then \
echo "Unexpected test failures on these implementations:" ; \
echo "$$A" ; \
......
......@@ -74,6 +74,8 @@
rather than nil. This is probably a bug in #+ processing.
Unhappily, debian creates such a file in
/etc/common-lisp/asdf-output-translations.conf.d/01-common-lisp-controller.conf
* Tests that try to catch an error fail (but catching a warning succeeds),
which suggests brokenness in handler-bind and/or error.
* Some out-of-line configuration mechanism for various options?
i.e. let configuration files override some variables around compilation of some systems.
......@@ -136,6 +138,33 @@
* operation cleanup?
** Kill backward-compat functions after all clients have moved on.
** Kill original-initargs -- BEWARE, it currently has clients!
** To allow semantically distinct operations of the same class:
You'd need to have a protocol to canonicalize them
in the *OPERATIONS* memoization table, not by class name,
but by CONS of the class name and some CANONICAL-OPERATION-INITARGS.
The latter would be a generic function called on the initargs,
where any parasite initargs such as FORCE and FORCE-NOT have been removed,
since they below to the PLAN, not the OPERATION:
the OPERATE protocol would be refined to explicit split
arguments to be passed to MAKE-PLAN or to MAKE-OPERATION.
The default method for CANONICAL-OPERATION-INITARGS
would SORT (a plist->alist of) the initargs,
and that would replace the current ORIGINAL-INITARGS slot.
For this scheme to work even in presence of undisciplined users
using MAKE-INSTANCE on an operation class,
the OPERATION class would have an extra slot EFFECTIVE-OPERATION,
uninitialized by default (nil or unbound), whose accessor initializes it
if it's uninitialized, by looking up a canonical instance in *OPERATIONS*,
and if unfound registering the current operation as canonical.
Then, each component's COMPONENT-OPERATION-TIME hash-table
would be indexed by canonicalized operation object
rather than by operation class,
and POIU would have to be changed accordingly.
Of course, this entire cleanup is incompatible
with how SWANK and GBBopen currently abuse slots of operation,
so these would have to be fixed first.
And that's why I didn't do it.
It looks like SWANK can be fixed soon, though, so we'll see.
* Get rid of component-properties
** directly use component-properties:
......@@ -214,3 +243,5 @@
* ASDF4: search for this tag, rename things (incompatibly, thus) and cleanup code.
* See message from 2014-01-27 05:26:44 GMT for stuff to document.
http://thread.gmane.org/gmane.lisp.asdf.devel/3675/focus=3695
;;;; -------------------------------------------------------------------------
;;;; Actions
(asdf/package:define-package :asdf/action
(uiop/package:define-package :asdf/action
(:nicknames :asdf-action)
(:recycle :asdf/action :asdf)
(:use :uiop/common-lisp :uiop :asdf/upgrade
......@@ -17,8 +17,8 @@
#:perform #:perform-with-restarts #:retry #:accept
#:traverse-actions #:traverse-sub-actions #:required-components ;; in plan
#:action-path #:find-action #:stamp #:done-p
;; condition
#:operation-definition-error
#:operation-definition-warning #:operation-definition-error ;; condition
#:build-op ;; THE generic operation
))
(in-package :asdf/action)
......@@ -134,10 +134,7 @@ You can put together sentences using this phrase."))
(defmethod component-depends-on :around ((o operation) (c component))
(do-asdf-cache `(component-depends-on ,o ,c)
(call-next-method)))
(defmethod component-depends-on ((o operation) (c component))
(cdr (assoc (type-of o) (component-in-order-to c))))) ; User-specified in-order dependencies
(call-next-method))))
;;;; upward-operation, downward-operation, sideway-operation, selfward-operation
......@@ -153,8 +150,10 @@ the action (O . M) of O on module M will depends on each of (D . C) for each chi
The default value for slot DOWNWARD-OPERATION is NIL, which designates the operation O itself.
E.g. in order for a MODULE to be loaded with LOAD-OP (resp. compiled with COMPILE-OP), all the
children of the MODULE must have been loaded with LOAD-OP (resp. compiled with COMPILE-OP."))
(defun downward-operation-depends-on (o c)
`((,(or (downward-operation o) o) ,@(component-children c))))
(defmethod component-depends-on ((o downward-operation) (c parent-component))
`((,(or (downward-operation o) o) ,@(component-children c)) ,@(call-next-method)))
`(,@(downward-operation-depends-on o c) ,@(call-next-method)))
(defclass upward-operation (operation)
((upward-operation
......@@ -168,9 +167,10 @@ E.g. in order for a COMPONENT to be prepared for loading or compiling with PREPA
must first be prepared for loading or compiling with PREPARE-OP."))
;; For backward-compatibility reasons, a system inherits from module and is a child-component
;; so we must guard against this case. ASDF4: remove that.
(defun upward-operation-depends-on (o c)
(if-let (p (component-parent c)) `((,(or (upward-operation o) o) ,p))))
(defmethod component-depends-on ((o upward-operation) (c child-component))
`(,@(if-let (p (component-parent c))
`((,(or (upward-operation o) o) ,p))) ,@(call-next-method)))
`(,@(upward-operation-depends-on o c) ,@(call-next-method)))
(defclass sideway-operation (operation)
((sideway-operation
......@@ -182,11 +182,12 @@ designates operation S (where NIL designates O itself), then the action (O . C)
depends on each of (S . D) where D is a declared dependency of C.
E.g. in order for a COMPONENT to be prepared for loading or compiling with PREPARE-OP,
each of its declared dependencies must first be loaded as by LOAD-OP."))
(defmethod component-depends-on ((o sideway-operation) (c component))
(defun sideway-operation-depends-on (o c)
`((,(or (sideway-operation o) o)
,@(loop :for dep :in (component-sideway-dependencies c)
:collect (resolve-dependency-spec c dep)))
,@(call-next-method)))
:collect (resolve-dependency-spec c dep)))))
(defmethod component-depends-on ((o sideway-operation) (c component))
`(,@(sideway-operation-depends-on o c) ,@(call-next-method)))
(defclass selfward-operation (operation)
((selfward-operation
......@@ -201,14 +202,14 @@ a list of operation-designators designates the list of designated operations;
NIL is not a valid operation designator in that context. Note that orderings between
the operations in a list of SELWARD-OPERATION should be indicated separately in order
that they be scheduled properly."))
(defun selfward-operation-depends-on (o c)
(loop :for op :in (ensure-list (selfward-operation o)) :collect `(,op ,c)))
(defmethod component-depends-on ((o selfward-operation) (c component))
`(,@(loop :for op :in (ensure-list (selfward-operation o))
:collect `(,op ,c))
,@(call-next-method)))
`(,@(selfward-operation-depends-on o c) ,@(call-next-method)))
(defclass non-propagating-operation (operation)
()
(:documentation "A NON-PROPAGATING-OPERATION is an operation that propagates
(:documentation "A NON-PROPAGATING-OPERATION is an operation that propagates
no dependencies whatsoever. It is supplied in order that the programmer be able
to specify that s/he is intentionally specifying an operation which invokes no
dependencies.")))
......@@ -217,37 +218,47 @@ dependencies.")))
;;;---------------------------------------------------------------------------
;;; Help programmers catch obsolete OPERATION subclasses
;;;---------------------------------------------------------------------------
(define-condition operation-definition-error (simple-error)
()
(:documentation "Error conditions related to incorrect definitions of
OPERATION objects."))
(defmethod initialize-instance :before ((obj operation) &key)
(unless
(loop :for x :in '(downward-operation upward-operation sideway-operation
selfward-operation non-propagating-operation
;; the following is a special case
build-op)
:when (typep obj x)
:return t
:finally (return nil))
(error 'operation-definition-error
:format-control
"No dependency propagating scheme specified for operation ~a. This is likely because the OPERATION subclass of this object has not been updated for ASDF 3."
:format-arguments (list obj))))
(defmethod initialize-instance :before ((obj non-propagating-operation) &key)
(when
(loop :for x :in '(downward-operation upward-operation sideway-operation
selfward-operation)
:when (typep obj x)
:return t
:finally (return nil))
(error 'operation-definition-error
:format-control
"Inconsistent class: ~a. No class should have both NON-PROPAGATING-OPERATION and a propagating operation class as superclasses."
:format-arguments
(list
(class-name (class-of obj))))))
(with-upgradability ()
(define-condition operation-definition-warning (simple-warning)
()
(:documentation "Warning condition related to definition of obsolete OPERATION objects."))
(define-condition operation-definition-error (simple-error)
()
(:documentation "Error condition related to definition of incorrect OPERATION objects."))
(defmethod initialize-instance :before ((o operation) &key)
;; build-op is a special case.
(unless (typep o '(or downward-operation upward-operation sideway-operation
selfward-operation non-propagating-operation))
(warn 'operation-definition-warning
:format-control
"No dependency propagating scheme specified for operation class ~S.
The class needs to be updated for ASDF 3.1 and specify appropriate propagation mixins."
:format-arguments (list (type-of o)))))
(defmethod initialize-instance :before ((o non-propagating-operation) &key)
(when (typep o '(or downward-operation upward-operation sideway-operation selfward-operation))
(error 'operation-definition-error
:format-control
"Inconsistent class: ~S
NON-PROPAGATING-OPERATION is incompatible with propagating operation classes as superclasses."
:format-arguments
(list (type-of o)))))
(defmethod component-depends-on ((o operation) (c component))
`(;; Normal behavior, to allow user-specified in-order-to dependencies
,@(cdr (assoc (type-of o) (component-in-order-to c)))
;; For backward-compatibility with ASDF2, any operation that doesn't specify propagation
;; or non-propagation through an appropriate mixin will be downward and sideway.
,@(unless (typep o '(or downward-operation upward-operation sideway-operation
selfward-operation non-propagating-operation))
`(,@(downward-operation-depends-on o c)
,@(sideway-operation-depends-on o c)))))
(defmethod downward-operation ((o operation)) nil)
(defmethod sideway-operation ((o operation)) nil))
;;;---------------------------------------------------------------------------
;;; End of OPERATION class checking
......@@ -265,7 +276,6 @@ OPERATION objects."))
(define-convenience-action-methods operation-done-p (operation component))
(defmethod operation-done-p ((o operation) (c component))
(declare (ignorable o c))
t)
(defmethod output-files :around (operation component)
......@@ -287,7 +297,6 @@ OPERATION objects."))
(mapcar *output-translation-function* absolute-pathnames))))
t)))
(defmethod output-files ((o operation) (c component))
(declare (ignorable o c))
nil)
(defun output-file (operation component)
"The unique output file of performing OPERATION on COMPONENT"
......@@ -301,7 +310,6 @@ OPERATION objects."))
(call-next-method)))
(defmethod input-files ((o operation) (c component))
(declare (ignorable o c))
nil)
(defmethod input-files ((o selfward-operation) (c component))
......@@ -367,7 +375,6 @@ in some previous image, or T if it needs to be done.")
(defmethod perform :after ((o operation) (c component))
(mark-operation-done o c))
(defmethod perform ((o operation) (c parent-component))
(declare (ignorable o c))
nil)
(defmethod perform ((o operation) (c source-file))
(sysdef-error
......@@ -398,6 +405,12 @@ in some previous image, or T if it needs to be done.")
;;; Generic build operation
(with-upgradability ()
;; build op was intended to be the master, default operation on a system
;; (LOAD-OP typically serves that function now). This feature has not yet
;; been fully implemented yet.
;; This is a path forward, but is not backwardly compatible, and is not used
;; yet. [2014/01/26:rpg]
(defclass build-op (non-propagating-operation) ())
(defmethod component-depends-on ((o build-op) (c component))
`((,(or (component-build-operation c) 'load-op) ,c))))
......@@ -75,7 +75,7 @@
:licence "MIT"
:description "Another System Definition Facility"
:long-description "ASDF builds Common Lisp software organized into defined systems."
:version "3.1.0.54" ;; to be automatically updated by make bump-version
:version "3.1.0.60" ;; to be automatically updated by make bump-version
:depends-on ()
#+asdf3 :encoding #+asdf3 :utf-8
:class #.(if (find-class 'package-system nil) 'package-system 'system)
......
;;;; -------------------------------------------------------------------------
;;; Backward-compatible interfaces
(asdf/package:define-package :asdf/backward-interface
(uiop/package:define-package :asdf/backward-interface
(:recycle :asdf/backward-interface :asdf)
(:use :uiop/common-lisp :uiop :asdf/upgrade
:asdf/component :asdf/system :asdf/find-system :asdf/operation :asdf/action
......@@ -43,13 +43,13 @@
(defgeneric (setf operation-on-warnings) (x operation))
(defgeneric (setf operation-on-failure) (x operation))
(defmethod operation-on-warnings ((o operation))
(declare (ignorable o)) *compile-file-warnings-behaviour*)
*compile-file-warnings-behaviour*)
(defmethod operation-on-failure ((o operation))
(declare (ignorable o)) *compile-file-failure-behaviour*)
*compile-file-failure-behaviour*)
(defmethod (setf operation-on-warnings) (x (o operation))
(declare (ignorable o)) (setf *compile-file-warnings-behaviour* x))
(setf *compile-file-warnings-behaviour* x))
(defmethod (setf operation-on-failure) (x (o operation))
(declare (ignorable o)) (setf *compile-file-failure-behaviour* x))
(setf *compile-file-failure-behaviour* x))
(defun system-definition-pathname (x)
;; As of 2.014.8, we mean to make this function obsolete,
......@@ -119,7 +119,7 @@ processed in order by OPERATE."))
:ignore-inherited-configuration))))
(defmethod operate :before (operation-class system &rest args &key &allow-other-keys)
(declare (ignorable operation-class system args))
(declare (ignore operation-class system args))
(when (find-symbol* '#:output-files-for-system-and-operation :asdf nil)
(error "ASDF 2 is not compatible with ASDF-BINARY-LOCATIONS, which you are using.
ASDF 2 now achieves the same purpose with its builtin ASDF-OUTPUT-TRANSLATIONS,
......
;;;; -------------------------------------------------------------------------
;;; Internal hacks for backward-compatibility
(asdf/package:define-package :asdf/backward-internals
(uiop/package:define-package :asdf/backward-internals
(:recycle :asdf/backward-internals :asdf)
(:use :uiop/common-lisp :uiop :asdf/upgrade
:asdf/system :asdf/component :asdf/operation
......
;;;; -------------------------------------------------------------------------
;;;; ASDF-Bundle
(asdf/package:define-package :asdf/bundle
(uiop/package:define-package :asdf/bundle
(:recycle :asdf/bundle :asdf)
(:use :uiop/common-lisp :uiop :asdf/upgrade
:asdf/component :asdf/system :asdf/find-system :asdf/find-component :asdf/operation
......@@ -163,7 +163,7 @@ itself.")) ;; operation on a system and its dependencies
(defmethod initialize-instance :after ((instance bundle-op) &rest initargs
&key (name-suffix nil name-suffix-p)
&allow-other-keys)
(declare (ignorable initargs name-suffix))
(declare (ignore initargs name-suffix))
(unless name-suffix-p
(setf (slot-value instance 'name-suffix)
(unless (typep instance 'program-op)
......@@ -184,7 +184,6 @@ itself.")) ;; operation on a system and its dependencies
(operation-original-initargs instance))))
(defmethod bundle-op-build-args :around ((o no-ld-flags-op))
(declare (ignorable o))
(let ((args (call-next-method)))
(remf args :ld-flags)
args))
......@@ -229,7 +228,6 @@ itself.")) ;; operation on a system and its dependencies
,@(call-next-method)))
(defmethod component-depends-on :around ((o bundle-op) (c component))
(declare (ignorable o c))
(if-let (op (and (eq (type-of o) 'bundle-op) (component-build-operation c)))
`((,op ,c))
(call-next-method)))
......@@ -291,7 +289,6 @@ itself.")) ;; operation on a system and its dependencies
;;;
(with-upgradability ()
(defmethod component-depends-on ((o load-fasl-op) (c system))
(declare (ignorable o))
`((,o ,@(loop :for dep :in (component-sideway-dependencies c)
:collect (resolve-dependency-spec c dep)))
(,(if (user-system-p c) 'fasl-op 'load-op) ,c)
......@@ -301,10 +298,6 @@ itself.")) ;; operation on a system and its dependencies
(when (user-system-p c)
(output-files (find-operation o 'fasl-op) c)))
(defmethod perform ((o load-fasl-op) c)
(declare (ignorable o c))
nil)
(defmethod perform ((o load-fasl-op) (c system))
(when (input-files o c)
(perform-lisp-load-fasl o c)))
......@@ -322,11 +315,7 @@ itself.")) ;; operation on a system and its dependencies
(defmethod trivial-system-p ((s system))
(every #'(lambda (c) (typep c 'compiled-file)) (component-children s)))
(defmethod output-files (o (c compiled-file))
(declare (ignorable o c))
nil)
(defmethod input-files (o (c compiled-file))
(declare (ignorable o))
(defmethod input-files ((o operation) (c compiled-file))
(component-pathname c))
(defmethod perform ((o load-op) (c compiled-file))
(perform-lisp-load-fasl o c))
......@@ -335,7 +324,6 @@ itself.")) ;; operation on a system and its dependencies
(defmethod perform ((o load-fasl-op) (c compiled-file))
(perform (find-operation o 'load-op) c))
(defmethod perform ((o operation) (c compiled-file))
(declare (ignorable o c))
nil))
;;;
......@@ -343,19 +331,15 @@ itself.")) ;; operation on a system and its dependencies
;;;
(with-upgradability ()
(defmethod trivial-system-p ((s prebuilt-system))
(declare (ignorable s))
t)
(defmethod perform ((o lib-op) (c prebuilt-system))
(declare (ignorable o c))
nil)
(defmethod component-depends-on ((o lib-op) (c prebuilt-system))
(declare (ignorable o c))
nil)
(defmethod component-depends-on ((o monolithic-lib-op) (c prebuilt-system))
(declare (ignorable o))
nil))
......@@ -428,14 +412,12 @@ itself.")) ;; operation on a system and its dependencies
(combine-fasls fasl-files output-file)))))
(defmethod input-files ((o load-op) (s precompiled-system))
(declare (ignorable o))
(bundle-output-files (find-operation o 'fasl-op) s))
(defmethod perform ((o load-op) (s precompiled-system))
(perform-lisp-load-fasl o s))
(defmethod component-depends-on ((o load-fasl-op) (s precompiled-system))
(declare (ignorable o))
`((load-op ,s) ,@(call-next-method))))
#| ;; Example use:
......@@ -502,8 +484,9 @@ itself.")) ;; operation on a system and its dependencies
#+(and (not asdf-use-unsafe-mac-bundle-op)
(or (and ecl darwin) (and abcl darwin)))
(defmethod perform :before ((op basic-fasl-op) c)
(declare (ignorable op c))
(unless (uiop:featurep :asdf-use-unsafe-mac-bundle-op)
(defmethod perform :before ((o basic-fasl-op) (c component))
(unless (featurep :asdf-use-unsafe-mac-bundle-op)
(cerror "Continue after modifying *FEATURES*."
"BASIC-FASL-OP bundle operations are not supported on Mac OSX for this lisp.~%~TTo continue, push :asdf-use-unsafe-mac-bundle-op on *FEATURES*.~%~TPlease report to ASDF-DEVEL if this works for you.")))
"BASIC-FASL-OP bundle operations are not supported on Mac OS X for this lisp.~%~T~
To continue, push :asdf-use-unsafe-mac-bundle-op onto *FEATURES*.~%~T~
Please report to ASDF-DEVEL if this works for you.")))
;;;; -------------------------------------------------------------------------
;;;; Stamp cache
(asdf/package:define-package :asdf/cache
(uiop/package:define-package :asdf/cache
(:use :uiop/common-lisp :uiop :asdf/upgrade)
(:export #:get-file-stamp #:compute-file-stamp #:register-file-stamp
#:consult-asdf-cache #:do-asdf-cache #:normalize-namestring
......
;;;; -------------------------------------------------------------------------
;;;; Components
(asdf/package:define-package :asdf/component
(uiop/package:define-package :asdf/component
(:recycle :asdf/component :asdf/defsystem :asdf/find-system :asdf)
(:use :uiop/common-lisp :uiop :asdf/upgrade)
(:export
......@@ -61,7 +61,7 @@ another pathname in a degenerate way."))
(defgeneric component-version (component))
(defgeneric (setf component-version) (new-version component))
(defgeneric component-parent (component))
(defmethod component-parent ((component null)) (declare (ignorable component)) nil)
(defmethod component-parent ((component null)) nil)
;; Backward compatible way of computing the FILE-TYPE of a component.
;; TODO: find users, have them stop using that, remove it for ASDF4.
......@@ -83,11 +83,6 @@ another pathname in a degenerate way."))
(duplicate-names-name c))))))
(when-upgrading (:when (find-class 'component nil))
(defmethod reinitialize-instance :after ((c component) &rest initargs &key)
(declare (ignorable c initargs)) (values)))
(with-upgradability ()
(defclass component ()
((name :accessor component-name :initarg :name :type string :documentation
......@@ -194,9 +189,9 @@ a PARENT-COMPONENT."))
(default-component-class
:initform nil
:initarg :default-component-class
:accessor module-default-component-class)))
:accessor module-default-component-class))
(:documentation "A PARENT-COMPONENT is a component that may have
children."))
children.")))
(with-upgradability ()
(defun compute-children-by-name (parent &key only-if-needed-p)
......@@ -210,19 +205,6 @@ children."))
(setf (gethash name hash) c))
hash))))
(when-upgrading (:when (find-class 'module nil))
(defmethod reinitialize-instance :after ((m module) &rest initargs &key)
(declare (ignorable m initargs)) (values))
(defmethod update-instance-for-redefined-class :after
((m module) added deleted plist &key)
(declare (ignorable m added deleted plist))
(when (and (member 'children added) (member 'components deleted))
(setf (slot-value m 'children)
;; old ECLs provide an alist instead of a plist(!)
(if (or #+ecl (consp (first plist))) (or #+ecl (cdr (assoc 'components plist)))
(getf plist 'components)))
(compute-children-by-name m))))
(with-upgradability ()
(defclass module (child-component parent-component)
(#+clisp (components)))) ;; backward compatibility during upgrade only
......@@ -248,9 +230,10 @@ children."))
pathname)))
(defmethod component-relative-pathname ((component component))
;; source-file-type is backward-compatibility with ASDF1;
;; we ought to be able to extract this from the component alone with COMPONENT-TYPE.
;; TODO: track who uses it, and have them not use it anymore.
;; SOURCE-FILE-TYPE below is strictly for backward-compatibility with ASDF1.
;; We ought to be able to extract this from the component alone with COMPONENT-TYPE.
;; TODO: track who uses it, and have them not use it anymore;
;; maybe issue a WARNING (then eventually CERROR) if the two methods diverge?
(parse-unix-namestring
(or (and (slot-boundp component 'relative-pathname)
(slot-value component 'relative-pathname))
......@@ -259,12 +242,10 @@ children."))
:type (source-file-type component (component-system component))
:defaults (component-parent-pathname component)))
(defmethod source-file-type ((component parent-component) system)
(declare (ignorable component system))
(defmethod source-file-type ((component parent-component) (system parent-component))
:directory)
(defmethod source-file-type ((component file-component) system)
(declare (ignorable system))
(defmethod source-file-type ((component file-component) (system parent-component))
(file-type component)))
......
;;;; -------------------------------------------------------------------------
;;;; Concatenate-source
(asdf/package:define-package :asdf/concatenate-source
(uiop/package:define-package :asdf/concatenate-source
(:recycle :asdf/concatenate-source :asdf)
(:use :uiop/common-lisp :uiop :asdf/upgrade
:asdf/component :asdf/operation
......
......@@ -35,11 +35,11 @@ for Common Lisp programs and libraries.
You can find the latest version of this manual at
@url{http://common-lisp.net/project/asdf/asdf.html}.
ASDF Copyright @copyright{} 2001-2013 Daniel Barlow and contributors.
ASDF Copyright @copyright{} 2001-2014 Daniel Barlow and contributors.
This manual Copyright @copyright{} 2001-2013 Daniel Barlow and contributors.
This manual Copyright @copyright{} 2001-2014 Daniel Barlow and contributors.
This manual revised @copyright{} 2009-2013 Robert P. Goldman and Francois-Rene Rideau.
This manual revised @copyright{} 2009-2014 Robert P. Goldman and Francois-Rene Rideau.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
......@@ -173,7 +173,7 @@ the ASDF internals and how to extend ASDF.
@emph{Nota Bene}:
We have released ASDF 2.000 on May 31st 2010,
and ASDF 3.0 on January 31st 2013.
and ASDF 3.0.0 on May 15th 2013.
Releases of ASDF 2 and later have since then been included
in all actively maintained CL implementations that used to bundle ASDF 1,
plus some implementations that didn't use to,
......
;;;; -------------------------------------------------------------------------
;;;; Finding components
(asdf/package:define-package :asdf/find-component
(uiop/package:define-package :asdf/find-component
(:recycle :asdf/find-component :asdf)
(:use :uiop/common-lisp :uiop :asdf/upgrade
:asdf/component :asdf/system :asdf/find-system)
......@@ -79,8 +79,7 @@
(defmethod find-component ((c component) (name cons))
(find-component (find-component c (car name)) (cdr name)))
(defmethod find-component (base (actual component))
(declare (ignorable base))
(defmethod find-component ((base t) (actual component))
actual)
(defun resolve-dependency-name (component name &optional version)
......@@ -120,11 +119,9 @@
(cons combinator arguments) component))
(defmethod resolve-dependency-combination (component (combinator (eql :feature)) arguments)
(declare (ignorable combinator))
(when (featurep (first arguments))
(resolve-dependency-spec component (second arguments))))
(defmethod resolve-dependency-combination (component (combinator (eql :version)) arguments)
(declare (ignorable combinator)) ;; See https://bugs.launchpad.net/asdf/+bug/527788
(resolve-dependency-name component (first arguments) (second arguments))))
(resolve-dependency-name component (first arguments) (second arguments)))) ;; See lp#527788
;;;; -------------------------------------------------------------------------
;;;; Finding systems
(asdf/package:define-package :asdf/find-system
(uiop/package:define-package :asdf/find-system
(:recycle :asdf/find-system :asdf)
(:use :uiop/common-lisp :uiop :asdf/upgrade
:asdf/component :asdf/system :asdf/cache)
......@@ -246,7 +246,6 @@ Going forward, we recommend new users should be using the source-registry.
(register-preloaded-system s :version *asdf-version*))
(defmethod find-system ((name null) &optional (error-p t))
(declare (ignorable name))
(when error-p
(sysdef-error (compatfmt "~@<NIL is not a valid system name~@:>"))))
......
;;;; -----------------------------------------------------------------------
;;;; ASDF Footer: last words and cleanup
(asdf/package:define-package :asdf/footer
(uiop/package:define-package :asdf/footer
(:recycle :asdf/footer :asdf)
(:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/operate :asdf/bundle))
(in-package :asdf/footer)
......
;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
;;; This is ASDF 3.1.0.54: Another System Definition Facility.