[asdf-devel] summary proposal for COMMON_LISP_PATH and system search changes

Faré fahree at gmail.com
Mon Sep 28 12:03:20 UTC 2009


2009/9/27 Robert Goldman <rpgoldman at sift.info>:
> Tobias C. Rittweiler wrote:
>> "Pascal J. Bourguignon" writes:
>>
>>> Since it is an environment variable designed to set the ASDF central
>>> registry paths, why not call it ASDF_CENTRAL_REGISTRY_PATH ?  Or
>>> ASDF_SYSTEMS_PATH ? Cannot ASDF be used to compile C programs?
>>
>> It has been suggested that such an environment variable should be shared
>> among system definition facilities (du jour, that's asdf and xcvb) and
>> should hence be named generally.
>>
> How about LISP_SYSTEMS_PATH then?  COMMON_LISP_PATH seems to me to
> suggest a path to the lisp environment....
>
XCVB doesn't have systems, it has builds - though I suppose they could
be renamed under community pressure. Nevertheless, Python has
PYTHONPATH, it doesn't confuse anyone, and non-pythonistas don't have
to know if Python has systems, builds, modules, libraries, widgets or
foobars.

PATH as the postfix for colon-separated (under Unix, semi-colon under
DOS/Windows) list of directories where to look for stuff is a
well-established tradition. PATH, LD_LIBRARY_PATH, MANPATH,
PYTHONPATH, CDPATH FPATH MAILPATH MODULE_PATH (for zsh), etc.

I think the questions are whether to
1- (syntax) make it always colon-separated, or have it semi-colon
separated in non-cygwin Windows.
2- (semantics) whether and how to specify recursion for search in the PATH.

The important point to discuss is 2 - especially if the path is to be
shared between ASDF and XCVB, since (a) ASDF doesn't currently recurse
on entries of its *central-registry*, whereas (b) XCVB does recurse on
entries of its *xcvb-path*, and eagerly searches for entries, avoiding
VCS caches (old svn and darcs) and detecting and discarding any
conflicts (and this recursing is essential to the design of XCVB).

You can see how XCVB does it there:
http://common-lisp.net/gitweb?p=projects/xcvb/xcvb.git;a=blob;f=search-path.lisp;hb=HEAD

Of course, (i) ASDF has a requirement of backwards compatibility, and
(ii) recursing in a way both efficient and portable might be tricky,
(iii) ASDF can't afford to pull external libraries for recursing, (iv)
in practice, recursing one level of directories might be enough for
ASDF (or not). And so the choice is not as easy as might seem.

As for other suggestions, James Anderson was probably right to request
that bad paths included in the PATH should be discarded from the
registry, though (IGNORE-ERRORS (TRUENAME x)) rather than (PROBE-FILE
x) since a directory is not a file and CL will PROBE-FILE will bork.

[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
Big Business has to *sell* the Vietnam War to you. Big Government can just
draft your ass and ship you overseas under threat of imprisonment and/or
death. Now, which one is better again? -- rho at netdoor.com




More information about the asdf-devel mailing list