james anderson wrote:
>
>> My main concern is that ASDF behave understandably for all users, and
>> errors about illegal pathnames appearing deep in the call tree, away
>> from the reason for their occurrence, won't meet that requirement.
>>
>> This seems like another case where trying to be nice, instead of being
>> strict, leads us to a place where *someone* must lose. If ASDF 1 had
>> either refused logical pathnames, or refused inconsistent module
>> names, we wouldn't be in this pickle...
>
> to pose a somewhat rhetorical question, why are module names necessarily
> incorporated into logical pathnames?
>
Treating your question as literal, rather than rhetorical:
If the system search path contains directories specified as logical
pathnames, then when we try too find <foo.asd> we must merge <foo.asd>
into the logical pathname.
If, unfortunately, instead of "foo" we have "cl+ssl" or "foo_bar" the
results are undefined. Actually, that's probably too kind. I think in
fact the results *are* defined, and they are erroneous. the grammar of
logical pathnames specifically excludes the use of symbols such as "+"
and "_".
If we have "fOo" and "foo" as systems, we may have collisions, since
logical pathnames and some other filesystems cannot distinguish
"foo.asd" from "fOo.asd".
Faré reminds us that this also arises if we have
(defsystem foo
:components (:module "my_funky_module"
:components ...)
...)
where the system name is compatible with logical pathnames, but the
module name is not.
:pathname initargs provide another challenge.