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.
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?
cheers,
r
_______________________________________________
asdf-devel mailing list
[email protected]
http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel