On Wed, Dec 07, 2005 at 03:22:13PM +0200, Nikodemus Siivola wrote:
> On Wed, 7 Dec 2005, Max-Gerd Retzlaff wrote:
> > | (push #p"lispdir:systems;" asdf:*central-registry*)
> > | (push #p"sbcldir:systems;" asdf:*central-registry*)
> > | (push #p"coding:systems;" asdf:*central-registry*)
> Are you intentionally overriding the SBCL-provided directories
> in *central-registry*?
I'm just pushing on it! :) My complete asdf::*central-registry* in
SBCL looks like this:
(#P"CODING:SYSTEMS;" #P"SBCLDIR:SYSTEMS;" #P"LISPDIR:SYSTEMS;"
(MERGE-PATHNAMES ".sbcl/systems/" (USER-HOMEDIR-PATHNAME))
(MERGE-PATHNAMES "site-systems/" (TRUENAME (POSIX-GETENV "SBCL_HOME")))
(MERGE-PATHNAMES "systems/" (TRUENAME (POSIX-GETENV "SBCL_HOME")))
~/.sbcl/systems is empty, and so is SBCL_HOME/site-systems.
SBCL_HOME/system contains the normal sb-*.asd files as well as
> 2) Make ASDF add its provider function the _end_ of *m-p-f*, so that ASDF
> modules will not accidentally override contribs. (Not all contribs
> have .asd files.)
Don't you think it might be confusing that the last system directory
that the user has added will not get the highest priority?
> 3) Add sysdef-contrib-search-function to the head of
> *system-definition-search-functions* that looks in
> (MERGE-PATHNAMES "systems/" (TRUENAME (POSIX-GETENV "SBCL_HOME")))
> -- and remove the corresponding entry from *central-registry*.
> This is also needed with 2) for consistency between (OOS 'LOAD-OP X)
> and (REQUIRE X).
Huh, and what about people who have copies of these systems and hack
on them? That might be highly inconvenient. If I have specified that
my copy should have a higher priority (=3D is in a system directory more
to the top of asdf:*central-registry*) then I want it to be selected.
Why should a user have a copy of a system in one of the other
directories if he or she doesn't want it? If he has then he might know
what he does. And a beginner will probably have only one systems
directory of his own at all, I guess.
> End result: current overriding behaviour for user-space components, but
> overriding a contrib takes extra work: you need to add new functions to
> *m-p-f* and *s-d-s-f* to do that, instead of just pushing on
Ah, okay, this way.. But I think the simpler solution is better, that
is only one way to add new system directories. Even demanding to add
new functions is not the most convenient solution.
Max-Gerd Retzlaff <m.retzlaff@...>
For your amusement:
If you're careful enough, nothing bad or good will ever happen to you.