[asdf-devel] ASDF2: Bug in merge-pathnames*

Faré fahree at gmail.com
Wed May 19 16:43:48 UTC 2010

This default-directory thingie (nee current-directory) is here for
backwards compatibility with previous behavior. I don't actually know
that anyone is relying on it, and I haven't checked when the
functionality was introduced. If anyone is exercising this feature
while setting the default-pathname-defaults to something that doesn't
have a truename on his implementation - then he's asking for trouble,
and I'll be blaming the user.

User, please remember: if no AI emerged from your computer yet, it's YOUR fault.

[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
Slogans rarely convince the unconvinced. However, they do rally the troops
already on your side. — John McCarthy

On 19 May 2010 07:20, Jean-Claude Beaudoin
<jean.claude.beaudoin at gmail.com> wrote:
> Faré wrote:
>> It's hopefully fixed in 1.725, except that somehow in the commit
>> message, I wrote pjb where I should have written jcb. Oops.
> Thanks for the commit. And don't worry, I have been called worst...
>> My "solution" to the "current-directory" thing was to rename it to
>> "default-directory".
> I am not sure I understand whether this really serves your purpose.
> "default-directory" and "current-directory" are two quite different
> concepts after all.  I guess that now function "default-directory" is
> in a better position to declare itself correct by construction.
> But I still don't see what usefulness it will have on lisp systems
> that chose to not accept (truename #P"") as designating anything
> special (as, for one thing, the process current directory). Nothing
> in the ANSI CL standard mandates (truename #P"") to mean anything
> and I would even argue that assigning a meaning to (truename #P"")
> runs against the spirit of the ANSI CL text on truename...
> (I say this above in the context of *default-pathname-defaults*
> being #P"" itself.)
> Cheers,
> Jean-Claude Beaudoin
>> [ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
>> You think you know when you can learn, are more sure when you can write,
>> even more when you can teach, but certain when you can program.
>>         — Alan Perlis
>> On 18 May 2010 06:32, Jean-Claude Beaudoin
>> <jean.claude.beaudoin at gmail.com> wrote:
>>> Here is a patch against 1.720 that fixes a weakness in merge-pathnames*.
>>> This was a show stopper in my system.
>>> It seems that merge-pathnames* assumes that *default-pathname-defaults*
>>> has some interesting value to contribute which is not always the case.
>>> In my system and in a few others (clisp comes to mind) the usual value
>>> of *default-pathname-defaults* is #P"" which ends up giving
>>> (pathname-directory *default-pathname-defaults*) => nil
>>> Then, (append nil (cdr directory)) is probably not a "valid pathname directory".
>>> In clisp passing this not so "valid pathname directory" to make-pathname will
>>> result in a visit in the debugger...
>>> I want also to insist again on the issue of accessing the process current directory.
>>> Assuming that *default-pathname-defaults* is a substitute for the process current
>>> directory is not portable ANSI Common Lisp code. The following definition is very
>>> likely to be wrong on at least one ANSI Common Lisp conforming implementation:
>>> (defun current-directory ()
>>>   (truenamize (pathname-directory-pathname *default-pathname-defaults*)))
>>> Cheers,
>>> Jean-Claude Beaudoin

More information about the asdf-devel mailing list