On 23 Jan 2011, at 01:50, Pascal Costanza wrote:

> 
> On 22 Jan 2011, at 22:05, Faré wrote:
> 
>> 2011/1/22 Pascal Costanza <[email protected]>:
>>> The reason why I'm having problems is probably because I want to create a 
>>> setup that works the same for all the Common Lisp implementations that I'm 
>>> using. (I'm the maintainer of Closer to MOP, and this requires regular 
>>> testing on several CL implementations, including RMCL, which is still in 
>>> use by several parties.)
>>> 
>> Uh, considering that RMCL has a different idea of what your
>> user-homedir-pathname is than unix-aware Lisps, why not just have two
>> sets of configuration files, one that works on Unix, and one that
>> works for RMCL?
> 
> I prefer to have a single configuration file, so I don't have to maintain 
> different configuration files in parallel.

I switched to a solution where the configuration file uses exclusively logical 
pathnames. In all CL implementations I set up logical pathnames translations 
both for source and fasl files, for example like this:

(setf (logical-pathname-translations "costanza")
      `(("**;*.xfasl.*" ,(format nil "/Users/costanza/.cache/common-lisp/~A 
~A/**/*.xfasl"
                                 (lisp-implementation-type)
                                 (lisp-implementation-version)))
        ("**;*.*.*" "/Users/costanza/**/*.*")))

The configuration file consists of entries such as this:

(:directory "costanza:lisp;develop;closer;contextl")


In two implementations, I encountered problems, namely ECL and RMCL.

In ECL, there seems to be a problem with ensure-directories-exist when invoking 
it on logical pathnames. The following patch solved this issue for me:

(defmethod asdf:perform :before ((o asdf:compile-op) (c asdf:source-file))
  (loop for file in (asdf:output-files o c)
        for pathname = (if (typep file 'logical-pathname)
                         (translate-logical-pathname file)
                         file)
        do (ensure-directories-exist pathname)))

My guess is this should be fixed in ECL rather than in ASDF.


In RMCL, I have to make sure that the home directory is never touched, because 
I can't get RMCL and ASDF to agree what the notion of a home directory actually 
means. The only way I seem to be able to make this work is by initializing the 
source registry explicitly as follows:

(asdf:initialize-source-registry
 (with-open-file (s "Macintosh 
HD:Users:costanza:.config:common-lisp:source-registry.conf")
   (read s)))

...and by having the configuration end in this:

 #-mcl :inherit-configuration
 #+mcl :ignore-inherited-configuration


I have the feeling that this is all more complicated than strictly necessary.


Anyway, thanks a lot for the help.



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