On Sun, Sep 15, 2024 at 9:00 AM Faré fahree@gmail.com wrote:
Just to be clear, I don't *want* to use logical pathnames, but I will if it provides a solution to the problem.
Logical pathnames will make anything WAAAAAYYYY worse.
I am trying to avoid them. I thought perhaps that it would be necessary -- appears that's not the case; see below.
Just make sure you use a (defsystem |Foo_Bar| ...) with the same case, no?
Aha, sorry, I meant (defsystem "Foo_Bar" ...) because symbols are downcased.
Yes! (defsystem "Foo_Bar" ...) in a file named Foo_Bar.asd is located successfully by (asdf:load-system "Foo_Bar"). It's not supposed to work but it does anyway! Hurray!
At this point can I ask the ASDF developers to resolve the inconsistency between the code and the documentation by making the documentation match the code instead of vice versa.
Anyway, the documentation says (https://asdf.common-lisp.dev/asdf.html#rule_002dsystem_002ddesignator) that "Foo_Bar" is an unacceptable name since it has both an underscore and uppercase letters.
I don't know about that restriction against underscores. Looks like it's from commit 25bc69c a bit before 3.3.2.14.
No, that commit is only updating the documentation *say* that underscores are rejected; it doesn't actually implement the test, not even in the most recent (3.3.7.1) version. (I tried it ASDF 3.3.7.1 with SBCL and CMUCL on Linux.)
I looked at asdf/parse-defsystem.lisp and it doesn't mention underscore, low_line, _, 95, or 5f (in any case variants).
It will be enforced with a vengeance against users of logical pathnames on SBCL. Not sure anywhere else.
Well, if it's only enforced when logical pathnames are in effect, then the documentation should say that.
Robert