[asdf-devel] ASDF 2.016 breaks ABCL translations for jar files

Mark Evenson evenson at panix.com
Thu Jun 9 17:42:07 UTC 2011

On 6/9/11 7:06 PM, Faré wrote:
>>> Thanks for thinking with me on this.
> OK. I believe the following definition might make
> each of Stelian, you and I happy. Can you try it?
> (defun* compile-file-pathname*
>      (input-file&rest keys&key output-file&allow-other-keys)
>    (if (absolute-pathname-p output-file)
>        (apply 'compile-file-pathname
>               (make-pathname :host nil :device nil
>                              :defaults (lispize-pathname input-file))
>               keys)
>        (apply-output-translations
>         (apply 'compile-file-pathname
>                (truenamize (lispize-pathname input-file))
>                keys))))

Yes, this works fine with ABCL.

But for implementations that need a device (like Windows using device 
for the drive letter), won't this result in stripping the device out of 
all output-file locations?

As I mentioned in the previous message, I think the better fix is to 
have TRANSLATE-JAR-PATHNAME do something like the following (untested):

index a8339f7..0395f56 100755
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -3569,12 +3569,14 @@ effectively disabling the output translation 
           (root (format nil "/___jar___file___root___/~@[~A/~]"
                         (and (find :windows *features*)
                              (pathname-device p)))))
-    (apply-output-translations
-     (merge-pathnames*
-      (relativize-pathname-directory source)
-      (merge-pathnames*
-       (relativize-pathname-directory (ensure-directory-pathname p))
-       root)))))
+    (make-pathname :defaults
+                   (apply-output-translations
+                    (merge-pathnames*
+                     (relativize-pathname-directory source)
+                     (merge-pathnames*
+                      (relativize-pathname-directory 
(ensure-directory-pathname p))
+                      root)))
+                   :device :unspecific)))

  ;;;; -----------------------------------------------------------------
  ;;;; Compatibility mode for ASDF-Binary-Locations

"A screaming comes across the sky.  It has happened before, but there
is nothing to compare to it now."

More information about the asdf-devel mailing list