On Sat, Sep 14, 2024 at 8:45 PM Faré fahree@gmail.com wrote:
If you're using logical pathnames, you're asking for trouble (especially on SBCL). I wasted weeks of my life on logical pathnames, and STRONGLY recommend that no one should ever use them anymore under any circumstances.
Just to be clear, I don't *want* to use logical pathnames, but I will if it provides a solution to the problem.
If you're not, there should be no problem having a system called Foo_Bar, is there?
Just make sure you use a (defsystem |Foo_Bar| ...) with the same case, no?
I dunno, that doesn't seem to work ... I tried this in SBCL which has ASDF 3.3.something bundled.
(asdf:load-system "Foo_Bar")
provokes a warning: "WARNING: System definition file #P"/home/dodier/tmp/Foo_Bar.asd" contains definition for system "foo_bar". Please only define "Foo_Bar" and secondary systems with a name starting with "Foo_Bar/" (e.g. "Foo_Bar/test") in that file.
and an error: Component "Foo_Bar" not found
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 find that (defsystem baz_quux ...) in a file named "baz_quux.asd" is loaded successfully without complaint -- I'm surprised that works; I guess the no underscores rule is not actually enforced?
I guess the stated rules about simple component names are not actually enforced by the DEFSYSTEM macro itself ... the do-nothing system
* (asdf:defsystem "Blurf_Mumble") * (asdf:operate 'asdf:load-op *)
succeeds. I guess the stuff about string case only comes into play when the file system gets involved?
FWIW & all the best.
Robert