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.