From be098a3b376adf7e41b7f58c079f186041718509 Mon Sep 17 00:00:00 2001 From: Francois-Rene Rideau <fare@tunes.org> Date: Fri, 14 May 2010 19:07:17 -0400 Subject: [PATCH] 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. --- asdf.lisp | 16 ++++++++++------ doc/asdf.texinfo | 13 ++++++++++--- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/asdf.lisp b/asdf.lisp index a5e6d8fb..65f0e536 100644 --- a/asdf.lisp +++ b/asdf.lisp @@ -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) diff --git a/doc/asdf.texinfo b/doc/asdf.texinfo index e8c65a2f..97eaaf5c 100644 --- a/doc/asdf.texinfo +++ b/doc/asdf.texinfo @@ -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. -- GitLab