Hi ,

Just to clarify: the restrictions arose because your users’ ASDF source configuration could use logical pathnames.

I tend to agree with Faré that logical pathnames are to be avoided whenever possible, but ASDF doesn’t impose that opinion on its users. Since we don’t, we require that file names — and therefore system names — be compatible with logical pathnames. 

One could certainly override the way ASDF maps system names to file names, as I said earlier. But as I also said earlier, that’s probably more trouble than it’s worth. It would require understanding the ASDF internals extensively and also would make use of the libraries more complex and less predictable

Thanks,

    -Robert



Sent from my iPhone



On Sep 14, 2024 at 22:44:47 CDT, 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. (Though we did use them at ITA to get
location-independent debug file information on CCL.)

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?

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
“The worst thing about totalitarian regimes is not that they make people poor,
miserable and unfree — it’s that they corrupt people’s souls, and turn
everyone into a double-thinking, double-speaking liar for the sake of survival.”


On Sat, Sep 14, 2024 at 4:46 PM Robert Dodier <robert.dodier@gmail.com> wrote:
>
> On Sat, Sep 14, 2024 at 11:01 AM Robert P. Goldman <rpg@sift.net> wrote:
>
> > I’ve got to push back on your rant. There’s a perfectly good reason for those two limitations you dislike: they are the same as the limitations on logical pathnames. So if you wish to be able to find an ASDF system relative to a directory designated by a logical pathname, those limitations are pretty much forced on you.
>
> All right. Help me sort this out. I actually want to make this work.
>
> I have a directory Foo_Bar and I want to create a .asd file (in any
> directory which is known to ASDF) which describes the stuff within
> Foo_Bar. From what I have sorted out so far, that .asd file must be
> named something other than "Foo_Bar.asd" and the system it describes
> must be named something other than "Foo_Bar".
>
> The ideal outcome is that a user would say
>
> (asdf:load-system "Foo_Bar")
>
> and that the system which describes the stuff in "Foo_Bar" would get
> loaded. How close can I get to that, and what do I have to do,
> involving logical pathnames if need be, in order to get it?
>
> I am thinking I need to do something like (I emphasize "like", as I am
> aware that the following code doesn't work):
>
> (setf (logical-pathname-translations "abc") ("**;foobar.asd" "Foo_Bar.asd"))
>
> and that must be executed before the system is defined
>
> (defsystem "foobar" ...)
>
> and before the user calls ASDF:LOAD-SYSTEM.
>
> (asdf:load-system "Foo_Bar")
>
> Can this work, at all? As I was saying, I actually want this (or
> anything) to work. I don't have any point to make except to get
> something working. Thanks for your help.
>
> Robert