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