[asdf-devel] ASDF shipped with the latest Quicklisp-client doesn't work on Allegro CL 8.1

Xiaofeng Yang n.akr.akiiya at gmail.com
Sat Jan 12 08:49:12 UTC 2013


I modified the origin asdf.lisp file, and it(
(quicklisp-quickstart:install) ) works for me on these implementations(win7
x64) now:

Allegro CL 8.1
Allegro CL 8.2
ABCL 1.0.1
Clozure CL 1.8(x86, x64)
CLISP 2.49
SBCL 1.0.55.1(with threads support)(x86, x64)
ECL 11.1.1(MinGW, gcc 4.5.0, lisp->c compiler)


Here's the patch:
$ git diff
diff --git a/8.1/quicklisp-client-2012112500/asdf.lisp
b/8.1/quicklisp-client-2012112500/asdf.lisp
index 283ad86..18e13a2 100644
--- a/8.1/quicklisp-client-2012112500/asdf.lisp
+++ b/8.1/quicklisp-client-2012112500/asdf.lisp
@@ -3909,13 +3909,16 @@ effectively disabling the output translation
facility."
 (defun* compile-file-pathname* (input-file &rest keys &key output-file
&allow-other-keys)
   (if (absolute-pathname-p output-file)
       ;; what cfp should be doing, w/ mp* instead of mp
-      (let* ((type (pathname-type (apply 'compile-file-pathname "x.lisp"
keys)))
-            (defaults (make-pathname
-                       :type type :defaults (merge-pathnames*
input-file))))
-       (merge-pathnames* output-file defaults))
+      (let* ((type (pathname-type (apply 'compile-file-pathname "x.lisp"
+                                         (remove-keys '(#+(and allegro
(not (version>= 8 2))) :external-format)
+                                                      keys))))
+             (defaults (make-pathname
+                        :type type :defaults (merge-pathnames*
input-file))))
+        (merge-pathnames* output-file defaults))
       (apply-output-translations
-       (apply 'compile-file-pathname input-file
-             (if output-file keys (remove-keyword :output-file keys))))))
+        (apply 'compile-file-pathname input-file
+                      (remove-keys `(#+(and allegro (not (version>= 8 2)))
:external-format
+                                       ,@(unless output-file
'(:output-file))) keys)))))

 (defun* tmpize-pathname (x)
   (make-pathname






And here's the diff (compared with ignoring whitespaces) for easier reading:
$ git diff -w
diff --git a/8.1/quicklisp-client-2012112500/asdf.lisp
b/8.1/quicklisp-client-2012112500/asdf.lisp
index 283ad86..18e13a2 100644
--- a/8.1/quicklisp-client-2012112500/asdf.lisp
+++ b/8.1/quicklisp-client-2012112500/asdf.lisp
@@ -3909,13 +3909,16 @@ effectively disabling the output translation
facility."
 (defun* compile-file-pathname* (input-file &rest keys &key output-file
&allow-other-keys)
   (if (absolute-pathname-p output-file)
       ;; what cfp should be doing, w/ mp* instead of mp
-      (let* ((type (pathname-type (apply 'compile-file-pathname "x.lisp"
keys)))
+      (let* ((type (pathname-type (apply 'compile-file-pathname "x.lisp"
+                                         (remove-keys '(#+(and allegro
(not (version>= 8 2))) :external-format)
+                                                      keys))))
             (defaults (make-pathname
                        :type type :defaults (merge-pathnames*
input-file))))
        (merge-pathnames* output-file defaults))
       (apply-output-translations
        (apply 'compile-file-pathname input-file
-             (if output-file keys (remove-keyword :output-file keys))))))
+                      (remove-keys `(#+(and allegro (not (version>= 8 2)))
:external-format
+                                       ,@(unless output-file
'(:output-file))) keys)))))

 (defun* tmpize-pathname (x)
   (make-pathname





     Best regards,
Xiaofeng Yang


2013/1/12 Faré <fahree at gmail.com>

> Dear Xiaofeng,
>
> assuming it's indeed a bug in allegro 8.1's compile-file-pathname,
> can you try to edit the call to compile-file-pathname this way,
> in defun compile-file-pathname* ?
>
>  (apply 'compile-file-pathname input-file
>                       (remove-keys `(#+(and allegro (not (version>= 8
> 2))) :external-format
>                                        ,@(unless output-file
> '(:output-file))) keys))
>
> —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics•
> http://fare.tunes.org
> Philosophy is questions that may never be answered.
> Religion is answers that may never be questioned.
>
>
> On Sat, Jan 12, 2013 at 12:48 AM, Raymond Toy <toy.raymond at gmail.com>
> wrote:
> >>>>>> "Fare" == Far  <Far> writes:
> >
> >     Fare> Dear Xf,
> >     Fare> thanks for the patch. On allegro 8.1, is it only
> compile-file-pathname
> >     Fare> that refuses the :external-format argument, or compile-file as
> well?
> >     Fare> In the latter case, how does allegro 8.1 control encoding for
> input
> >     Fare> files? Does it rely on a special variable?
> >
> > Is this not a bug in Allegro's compile-file-pathname.  The CLHS says
> > compile-file-pathname should accept all keywords accepted by
> > compile-file.
> >
> > The docs for Allegro 8.1[1] says compile-file accepts :external-format.
> >
> > Ray
> > [1]
> http://www.franz.com/support/documentation/8.1/ansicl/dictentr/compile-.htm
> >
> >
> >
> >
> > _______________________________________________
> > asdf-devel mailing list
> > asdf-devel at common-lisp.net
> > http://lists.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20130112/54e09bf9/attachment.html>


More information about the asdf-devel mailing list