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

Reply via email to