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

Reply via email to