
Hello, On Mon, Apr 5, 2010 at 2:52 PM, Mark Evenson <evenson@panix.com> wrote:
Attached is a patch against ASDF that allows a user specified function to take the place of TRANSLATE-PATHNAME as the ASDF2 output translation function.
Additionally it adds an ABCL specific extension to ASDF2 that uses this ability by providing the following translations by default
(#p"jar:file:/**/*.jar!/**/*.*" (:function translate-jar-pathname)) (#p"/:jar:file/**/*.*" (:user-cache #p"**/*.*")))
that will map all ASDF loads from jar pathnames to an output location under the per user cache location. This will allow the loading of ASDF systems packaged in jar files which first compiles and then loads FASLs to the local filesystem.
On MacOSX, and I guess on all non-Windows systems, #p"/:jar:file/**/*.*" equals (make-pathname :type :wild :name :wild :directory '(:absolute ":jar:file" :wild-inferiors)) On Windows, this pathname is parsed differently: the result is a relative directory in a device called "/" (as mentioned in a trac ticket, this causes an error). Is there a reason why the pathname has to start with "/:"? I changed it to #P"/jar:file/**.*" (and made a similar change inside translate-jar-pathname, from "/:jar:file/" to "/jar:file/"). This seems to work on both macosx and windows (at least I can load asdf systems). I wonder if something else might be broken with the change. Cheers, Carlos