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 facility." (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