From 786527bf79f8f65c30314fcebda461ac6538dda9 Mon Sep 17 00:00:00 2001 From: Gary King <gwking@franz.com> Date: Thu, 1 Oct 2009 09:21:16 -0400 Subject: [PATCH] update based on feedback * Changed the name from COMMON_LISP_PATH to CL_SYSTEMS_PATH. * Defined the interpretation of COMMON_LISP_PATH. * Provided an explicit way to use recursion (or not). * Changed the way defaults are loaded because (as Daniel pointed out) it's often easier for a user to load the system file from their user file than it is to undo what a putative system file has done. --- website/source/proposals/cl-systems-path.mmd | 70 ++++++++++++++------ 1 file changed, 48 insertions(+), 22 deletions(-) diff --git a/website/source/proposals/cl-systems-path.mmd b/website/source/proposals/cl-systems-path.mmd index 06581989..03efa03e 100644 --- a/website/source/proposals/cl-systems-path.mmd +++ b/website/source/proposals/cl-systems-path.mmd @@ -1,11 +1,12 @@ + # Proposal Summary These are independent but make the most sense if taken as a whole. - * Specify new defaults for `*central-registry*`, + * Specify new defaults for `*central-registry*`, - * use an environment variable named `COMMON_LISP_PATH` to + * use an environment variable named `CL_SYSTEMS_PATH` to override ASDF's defaults, * use `*central-registry*` to find and load an ASDF @@ -16,31 +17,57 @@ whole. ## default value for *central-registry* -COMMON_LISP_PATH environment variable with syntax like +CL_SYSTEMS_PATH environment variable with syntax like + + path[:path]* (on *nix) + +or + + path[;path]* (on Windows) - path[;path]* +I.e., path designators separated by an OS dependent marker +(colons or semi-colons). This is used by ASDF to help build +the default value for `*central-registry*`. Each `path` will +be interpreted as follows: -This is used by ASDF to help build the default value for -`*central-registry*`. +* a `!` will be replaced by the default value (see below) so + that it is easy to extend the path rather than just + replacing it. + +* empty ones will be removed from the list, + +* since these represent _directories_, trailing slashes will + be added if necessary, + +* if the last component is a `*` or `**` then sub-directories + of this path will be searched recursively either one level + deep (if `*`) or all the way down (if `**`). If not specified, `*central-registry*` defaults to (on *nix-like systems): - (list + (list *default-pathname-defaults* (merge-pathnames - (make-pathname :directory '(:relative ".common-lisp")) + (make-pathname :directory '(:relative ".common-lisp")) (user-homedir-pathname))) (merge-pathnames - (make-pathname :directory '(:relative ".local" "share" "common-lisp")) + (make-pathname :directory '(:relative ".local" "share" +"common-lisp")) (user-homedir-pathname))) - (make-pathname :directory '(:absolute "usr" "local" "share" "common-lisp")) - (make-pathname :directory '(:absolute "usr" "share" "common-lisp")) + (make-pathname :directory '(:absolute "usr" "local" "share" +"common-lisp")) + (make-pathname :directory '(:absolute "usr" "share" "common- +lisp")) ) -(The last two would need to be different for Windows-based -systems.) +(On a windows system, the last two would be replaced by +c:\common-lisp and c:\windows\common-lisp). + +Note that this list would be automatically filtered for any +entries for which the moral equivalent of `(ignore-errors +(truename x))` fails. ## modification for `sysdef-central-registry-search` @@ -56,15 +83,14 @@ in all sub-directories of each entry. When ASDF starts, it will: 1. setup `*central-registry*` using its own defaults and the -`COMMON_LISP_PATH` environment variable. +`CL_SYSTEMS_PATH` environment variable. - 2. look for (and load if it is found) a file named -`asdf-config.lisp` in each of these paths traversed in -_reverse_ order (so that user settings take precedence overs -system ones). Note that the ASDF package will exist when this -file is read. + 2. look for and load the *first* file named +`asdf-config.lisp` in each of these paths traversed in order +(so that user settings take precedence over system ones). +Note that the ASDF package will exist when this file is read. -I.e., I'm suggesting that we go the "user settings overwrite -system settings" route rather than the "if there are any user -settings, then ignore the system settings" one. +I.e., I'm suggesting "if there are any user settings, then +ignore the system settings" one rather than the "user +settings overwrite system settings". -- GitLab