Commit be098a3b authored by Francois-Rene Rideau's avatar Francois-Rene Rideau
Browse files

1.723: clean up treatment of source-registry exclusions.

:exclude statements only affect the current configuration file or expression.
:also-exclude adds to the exclusions rather than replace the defaults.
Thanks to szergling.
parent 9db2f5b3
......@@ -70,7 +70,7 @@
:test 'equalp :key 'car))
(let* ((asdf-version
;; the 1+ helps the version bumping script discriminate
(subseq "VERSION:1.722" (1+ (length "VERSION"))))
(subseq "VERSION:1.723" (1+ (length "VERSION"))))
(existing-asdf (find-package :asdf))
(vername '#:*asdf-version*)
(versym (and existing-asdf
......@@ -3000,11 +3000,13 @@ effectively disabling the output translation facility."
;;;; See the Manual and https://bugs.launchpad.net/asdf/+bug/485918
;; Using ack 1.2 exclusions
(defvar *default-exclusions*
(defvar *default-source-registry-exclusions*
'(".bzr" ".cdv" "~.dep" "~.dot" "~.nib" "~.plst"
".git" ".hg" ".pc" ".svn" "CVS" "RCS" "SCCS" "_darcs"
"_sgbak" "autom4te.cache" "cover_db" "_build"))
(defvar *source-registry-exclusions* *default-source-registry-exclusions*)
(defvar *source-registry* ()
"Either NIL (for uninitialized), or a list of one element,
said element itself being a list of directory pathnames where to look for .asd files")
......@@ -3062,7 +3064,7 @@ with a different configuration, so the configuration would be re-read then."
((:include :directory :tree)
(and (length=n-p rest 1)
(typep (car rest) '(or pathname string null))))
((:exclude)
((:exclude :also-exclude)
(every #'stringp rest))
(null rest))))
(error "Invalid directive ~S~%" directive))
......@@ -3207,7 +3209,7 @@ with a different configuration, so the configuration would be re-read then."
(declare (ignorable x))
(inherit-source-registry inherit :register register))
(defmethod process-source-registry ((form cons) &key inherit register)
(let ((*default-exclusions* *default-exclusions*))
(let ((*source-registry-exclusions* *default-source-registry-exclusions*))
(dolist (directive (cdr (validate-source-registry-form form)))
(process-source-registry-directive directive :inherit inherit :register register))))
......@@ -3228,9 +3230,11 @@ with a different configuration, so the configuration would be re-read then."
((:tree)
(destructuring-bind (pathname) rest
(when pathname
(funcall register (ensure-directory-pathname pathname) :recurse t :exclude *default-exclusions*))))
(funcall register (ensure-directory-pathname pathname) :recurse t :exclude *source-registry-exclusions*))))
((:exclude)
(setf *default-exclusions* rest))
(setf *source-registry-exclusions* rest))
((:also-exclude)
(appendf *source-registry-exclusions* rest))
((:default-registry)
(inherit-source-registry '(default-source-registry) :register register))
((:inherit-configuration)
......
......@@ -1720,8 +1720,10 @@ DIRECTIVE :=
;; add a directory hierarchy, recursing but excluding specified patterns
(:tree DIRECTORY-PATHNAME-DESIGNATOR) |
;; override the default defaults for exclusion patterns
;; override the defaults for exclusion patterns
(:exclude PATTERN ...) |
;; augment the defaults for exclusion patterns
(:also-exclude PATTERN ...) |
;; splice the parsed contents of another config file
(:include REGULAR-FILE-PATHNAME-DESIGNATOR) |
......@@ -1809,9 +1811,14 @@ ASDF currently returns the first system found,
XCVB currently raised an error.
If none is found, the search continues.
Exclude statements specify patterns of subdirectories the systems of which
to ignore. Typically you don't want to use copies of files kept by such
Exclude statements specify patterns of subdirectories
the systems from which to ignore.
Typically you don't want to use copies of files kept by such
version control systems as Darcs.
Exclude statements are not propagated to further included or inherited
configuration files or expressions;
instead the defaults are reset around every configuration statement
to the default defaults from @code{asdf::*default-source-registry-exclusions*}.
Include statements cause the search to recurse with the path specifications
from the file specified.
......
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