On 25 Jan 2011, at 18:57, Robert Goldman wrote:
> On 1/25/11 Jan 25 -7:30 AM, Pascal Costanza wrote:
>>
>> On 23 Jan 2011, at 15:27, Pascal Costanza wrote:
>>
>>> Hi,
>>>
>>> I have encountered two more issues when trying to use ASDF 2 with logical
>>> pathnames in Allegro and clisp. I have the following logical pathname
>>> translations in Allegro and clisp respectively:
>>>
>>> #+allegro
>>> (setf (logical-pathname-translations "costanza")
>>> `(("**;*.fasl.*" ,(format nil "/Users/costanza/.cache/common-lisp/~A
>>> ~A/**/*.fasl"
>>> (lisp-implementation-type)
>>> (read-from-string
>>> (lisp-implementation-version))))
>>> ("**;*.*.*" "/Users/costanza/**/*.*")))
>>>
>>> #+clisp
>>> (progn
>>> (setq custom:*parse-namestring-ansi* t)
>>>
>>> (setf (logical-pathname-translations "costanza")
>>> `(("**;*.lib.*" ,(format nil "/Users/costanza/.cache/common-lisp/~A
>>> ~A/**/*.lib"
>>> (lisp-implementation-type)
>>> (read-from-string
>>> (lisp-implementation-version))))
>>> ("**;*.fas.*" ,(format nil "/Users/costanza/.cache/common-lisp/~A
>>> ~A/**/*.fas"
>>> (lisp-implementation-type)
>>> (read-from-string
>>> (lisp-implementation-version))))
>>> ("**;*.*.*" "/Users/costanza/**/*.*"))))
>>>
>>>
>>> When compiling systems with ASDF, however, the fasl, lib and fas files
>>> don't end up in the folders designated by these logical pathname
>>> translations, but rather in the locations as specified with ASDF output
>>> translations. (In CMUCL, Clozure, ECL, LispWorks, RMCL, and SBCL, similar
>>> logical pathname translations work as expected.)
>>
>> I have found the bug that causes this for Allegro, and am relatively sure
>> what problem in clisp causes this.
>>
>> For Allegro, the following patch fixes the problem:
>>
>> (defun* resolve-symlinks (path)
>> #-allegro (truenamize path)
>> #+allegro (if (typep path 'logical-pathname)
>> path
>> (excl:pathname-resolve-symbolic-links path)))
>>
>
> Will you please provide some commenting to explain why this is the right
> thing to do here? To the extent that I understand this, it says
> "resolve symlinks should not do anything to a logical pathname."
>
> Is that the correct behavior for RESOLVE-SYMLINKS? If so,
>
> 1. is it what automagically happens for the other lisp implementations.
Yes. The first thing truenamize does is check whether it's argument is a
logical pathname, and if that's the case, it returns it unchanged.
> 2. how about adding a doc string that reflects this or possibly better:
>
> 3. how about checking for a logical pathname /upstream/ of
> resolve-symlinks and, if it's senseless to do RESOLVE-SYMLINKS to a
> logical pathname, fix it so that logical-pathnames trigger an error?
I don't know the ASDF 2 source well enough to be able to tell what's best here.
Pascal
--
Pascal Costanza, mailto:[email protected], http://p-cos.net
Vrije Universiteit Brussel
Software Languages Lab
Pleinlaan 2, B-1050 Brussel, Belgium
_______________________________________________
asdf-devel mailing list
[email protected]
http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel