[asdf-devel] ASDF shipped with the latest Quicklisp-client doesn't work on Allegro CL 8.1
![](https://secure.gravatar.com/avatar/b361214b8ca3917d1ba7d5c4704cf5f0.jpg?s=120&d=mm&r=g)
I'm sorry for this duplicated mail. I forgot to write the subject for the previous mail . Hi, all The ASDF shipped with latest Quicklisp-client doesn't work on Allegro CL 8.1 correctly. So I fixed it and made an ugly patch for it. I'm so sorry I don't know whether this is the right place to discuss this problem, so I will then add this issus to the quicklisp-bootstrap project. The problem and patch can also be found here: https://github.com/nakrakiiya/acl-patches/commit/86236e11d89765a15fe44c0ede4... FIX: `Illegal keyword given: :EXTERNAL-FORMAT.' while executing `(quicklisp-quickstart:install)'. Details: CL-USER> (quicklisp-quickstart:install) ; Loading D:\Documents and Settings\nakra\quicklisp\setup.lisp Illegal keyword given: :EXTERNAL-FORMAT. [Condition of type PROGRAM-ERROR] Restarts: 0: [RETRY] Retry compiling #<CL-SOURCE-FILE "quicklisp" "package">. 1: [ACCEPT] Continue, treating compiling #<CL-SOURCE-FILE "quicklisp" "package"> as having been successful. 2: [RETRY] retry the load of D:\Documents and Settings\nakra\quicklisp\setup.lisp 3: [SKIP] skip loading D:\Documents and Settings\nakra\quicklisp\setup.lisp 4: [RECOMPILE-DUE-TO-INCOMPATIBLE-FASL] recompile D:\Documents and Settings\nakra\quicklisp\setup.lisp 5: [RETRY] Retry SLIME REPL evaluation request. --more-- Backtrace: 0: (ERROR PROGRAM-ERROR :FORMAT-CONTROL "Illegal keyword given: ~s." :FORMAT-ARGUMENTS (:EXTERNAL-FORMAT)) 1: (COMPILE-FILE-PATHNAME "x.lisp" ..) 2: (ASDF:COMPILE-FILE-PATHNAME* #P"D:\\Documents and Settings\\nakra\\quicklisp\\quicklisp\\package.lisp" :OUTPUT-FILE ..) 3: (ASDF:COMPILE-FILE* #P"D:\\Documents and Settings\\nakra\\quicklisp\\quicklisp\\package.lisp" :OUTPUT-FILE ..) 4: ((:INTERNAL (METHOD ASDF:PERFORM (ASDF:COMPILE-OP ASDF:CL-SOURCE-FILE)) 0)) 5: ((METHOD ASDF::CALL-WITH-AROUND-COMPILE-HOOK (ASDF:COMPONENT T)) #<ASDF:CL-SOURCE-FILE "quicklisp" "package"> #<Closure (:INTERNAL (METHOD ASDF:PERFORM #) 0) @ #x2143fc7a>) 6: ((METHOD ASDF:PERFORM (ASDF:COMPILE-OP ASDF:CL-SOURCE-FILE)) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">) 7: ((:INTERNAL (:EFFECTIVE-METHOD 2 NIL NIL NIL NIL) 0) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">) 8: ((METHOD ASDF::PERFORM-WITH-RESTARTS (T T)) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">) 9: ((METHOD ASDF::PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">) 10: ((:INTERNAL (:EFFECTIVE-METHOD 2 NIL NIL T T) 0) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">) 11: ((FLET (METHOD ASDF::PERFORM-PLAN (LIST)) EXCL::CONTINUATION)) 12: ((METHOD ASDF::PERFORM-PLAN (LIST)) ..) 13: ((:INTERNAL (:EFFECTIVE-METHOD 1 T T NIL NIL) 0) ..) 14: ((:INTERNAL (METHOD ASDF:OPERATE (T T)) 0)) 15: (ASDF::CALL-WITH-SYSTEM-DEFINITIONS #<Closure (:INTERNAL (METHOD ASDF:OPERATE #) 0) [LOAD-OP] @ #x213d36da>) 16: ((METHOD ASDF:OPERATE (T T)) ASDF:LOAD-OP "quicklisp" :VERBOSE NIL) 17: ((:INTERNAL (:EFFECTIVE-METHOD 2 T NIL NIL NIL) 0) ASDF:LOAD-OP "quicklisp" . 1) 18: (ASDF:OOS ASDF:LOAD-OP "quicklisp" :VERBOSE NIL) 19: (LET ((*COMPILE-PRINT* NIL) (*COMPILE-VERBOSE* NIL) (*LOAD-VERBOSE* NIL) (*LOAD-PRINT* NIL)) (ASDF:OOS 'ASDF:LOAD-OP "quicklisp" :VERBOSE NIL)) --more-- The diff from the origin asdf.lisp file: $ git diff 6d465f92b240fe5ded55447f9a000a1e54a7a22a 86236e11d89765a15fe44c0ede40119ed4958c3c diff --git a/8.1/quicklisp-client-2012112500/asdf.lisp b/8.1/quicklisp-client-2012112500/asdf.lisp index 283ad86..2f9b98a 100644 --- a/8.1/quicklisp-client-2012112500/asdf.lisp +++ b/8.1/quicklisp-client-2012112500/asdf.lisp @@ -2478,7 +2478,10 @@ recursive calls to traverse.") c #'(lambda (&rest flags) (apply *compile-op-compile-file-function* source-file :output-file output-file - :external-format (component-external-format c) + #+(or (and allegro (version>= 8 2)) + (not allegro)) :external-format + #+(or (and allegro (version>= 8 2)) + (not allegro)) (component-external-format c) (append flags (compile-op-flags operation))))) (unless output (error 'compile-error :component c :operation operation)) Best regards, Xiaofeng Yang
![](https://secure.gravatar.com/avatar/0345f6261d6ced21145afdec166fd114.jpg?s=120&d=mm&r=g)
Dear Xf, thanks for the patch. On allegro 8.1, is it only compile-file-pathname that refuses the :external-format argument, or compile-file as well? In the latter case, how does allegro 8.1 control encoding for input files? Does it rely on a special variable? Maybe I should somehow predicate the :external-format arguments on #+asdf-unicode? Also, considering how far apart the release and master branch are, maybe I can issue a 2.26.0.1 in the release branch if that helps. PS: for those who're following the adventure, my latest woes in HEAD is with how deeply unhappy my package frobbing is making CLISP. There are also bugs I found in the new run-program/ for lispworks, but that's should be easy to fix. —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org No one has the right to a position; everyone has the right to positions being well filled. — Ernest Renan On Fri, Jan 11, 2013 at 11:02 PM, Xiaofeng Yang <n.akr.akiiya@gmail.com> wrote:
I'm sorry for this duplicated mail. I forgot to write the subject for the previous mail .
Hi, all The ASDF shipped with latest Quicklisp-client doesn't work on Allegro CL 8.1 correctly. So I fixed it and made an ugly patch for it. I'm so sorry I don't know whether this is the right place to discuss this problem, so I will then add this issus to the quicklisp-bootstrap project. The problem and patch can also be found here: https://github.com/nakrakiiya/acl-patches/commit/86236e11d89765a15fe44c0ede4...
FIX: `Illegal keyword given: :EXTERNAL-FORMAT.' while executing `(quicklisp-quickstart:install)'.
Details:
CL-USER> (quicklisp-quickstart:install) ; Loading D:\Documents and Settings\nakra\quicklisp\setup.lisp
Illegal keyword given: :EXTERNAL-FORMAT. [Condition of type PROGRAM-ERROR]
Restarts: 0: [RETRY] Retry compiling #<CL-SOURCE-FILE "quicklisp" "package">. 1: [ACCEPT] Continue, treating compiling #<CL-SOURCE-FILE "quicklisp" "package"> as having been successful. 2: [RETRY] retry the load of D:\Documents and Settings\nakra\quicklisp\setup.lisp 3: [SKIP] skip loading D:\Documents and Settings\nakra\quicklisp\setup.lisp 4: [RECOMPILE-DUE-TO-INCOMPATIBLE-FASL] recompile D:\Documents and Settings\nakra\quicklisp\setup.lisp 5: [RETRY] Retry SLIME REPL evaluation request. --more--
Backtrace: 0: (ERROR PROGRAM-ERROR :FORMAT-CONTROL "Illegal keyword given: ~s." :FORMAT-ARGUMENTS (:EXTERNAL-FORMAT)) 1: (COMPILE-FILE-PATHNAME "x.lisp" ..) 2: (ASDF:COMPILE-FILE-PATHNAME* #P"D:\\Documents and Settings\\nakra\\quicklisp\\quicklisp\\package.lisp" :OUTPUT-FILE ..) 3: (ASDF:COMPILE-FILE* #P"D:\\Documents and Settings\\nakra\\quicklisp\\quicklisp\\package.lisp" :OUTPUT-FILE ..) 4: ((:INTERNAL (METHOD ASDF:PERFORM (ASDF:COMPILE-OP ASDF:CL-SOURCE-FILE)) 0)) 5: ((METHOD ASDF::CALL-WITH-AROUND-COMPILE-HOOK (ASDF:COMPONENT T)) #<ASDF:CL-SOURCE-FILE "quicklisp" "package"> #<Closure (:INTERNAL (METHOD ASDF:PERFORM #) 0) @ #x2143fc7a>) 6: ((METHOD ASDF:PERFORM (ASDF:COMPILE-OP ASDF:CL-SOURCE-FILE)) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">) 7: ((:INTERNAL (:EFFECTIVE-METHOD 2 NIL NIL NIL NIL) 0) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">) 8: ((METHOD ASDF::PERFORM-WITH-RESTARTS (T T)) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">) 9: ((METHOD ASDF::PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">) 10: ((:INTERNAL (:EFFECTIVE-METHOD 2 NIL NIL T T) 0) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">) 11: ((FLET (METHOD ASDF::PERFORM-PLAN (LIST)) EXCL::CONTINUATION)) 12: ((METHOD ASDF::PERFORM-PLAN (LIST)) ..) 13: ((:INTERNAL (:EFFECTIVE-METHOD 1 T T NIL NIL) 0) ..) 14: ((:INTERNAL (METHOD ASDF:OPERATE (T T)) 0)) 15: (ASDF::CALL-WITH-SYSTEM-DEFINITIONS #<Closure (:INTERNAL (METHOD ASDF:OPERATE #) 0) [LOAD-OP] @ #x213d36da>) 16: ((METHOD ASDF:OPERATE (T T)) ASDF:LOAD-OP "quicklisp" :VERBOSE NIL) 17: ((:INTERNAL (:EFFECTIVE-METHOD 2 T NIL NIL NIL) 0) ASDF:LOAD-OP "quicklisp" . 1) 18: (ASDF:OOS ASDF:LOAD-OP "quicklisp" :VERBOSE NIL) 19: (LET ((*COMPILE-PRINT* NIL) (*COMPILE-VERBOSE* NIL) (*LOAD-VERBOSE* NIL) (*LOAD-PRINT* NIL)) (ASDF:OOS 'ASDF:LOAD-OP "quicklisp" :VERBOSE NIL)) --more--
The diff from the origin asdf.lisp file:
$ git diff 6d465f92b240fe5ded55447f9a000a1e54a7a22a 86236e11d89765a15fe44c0ede40119ed4958c3c diff --git a/8.1/quicklisp-client-2012112500/asdf.lisp b/8.1/quicklisp-client-2012112500/asdf.lisp index 283ad86..2f9b98a 100644 --- a/8.1/quicklisp-client-2012112500/asdf.lisp +++ b/8.1/quicklisp-client-2012112500/asdf.lisp @@ -2478,7 +2478,10 @@ recursive calls to traverse.") c #'(lambda (&rest flags) (apply *compile-op-compile-file-function* source-file :output-file output-file - :external-format (component-external-format c) + #+(or (and allegro (version>= 8 2)) + (not allegro)) :external-format + #+(or (and allegro (version>= 8 2)) + (not allegro)) (component-external-format c) (append flags (compile-op-flags operation))))) (unless output (error 'compile-error :component c :operation operation))
Best regards, Xiaofeng Yang
![](https://secure.gravatar.com/avatar/9342d16e648d947803f4af8f1e6a4871.jpg?s=120&d=mm&r=g)
"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
![](https://secure.gravatar.com/avatar/0345f6261d6ced21145afdec166fd114.jpg?s=120&d=mm&r=g)
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@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@common-lisp.net http://lists.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel
![](https://secure.gravatar.com/avatar/b361214b8ca3917d1ba7d5c4704cf5f0.jpg?s=120&d=mm&r=g)
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@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@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@common-lisp.net http://lists.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel
participants (3)
-
Faré
-
Raymond Toy
-
Xiaofeng Yang