[hunchentoot-devel] Broken port-clisp.lisp under CLISP 2.44 [patch]

Abhishek Reddy arbscht at gmail.com
Thu Oct 16 19:14:21 UTC 2008


Hello,

Hunchentoot 0.15.7 fails to compile under CLISP 2.44 (GNU/Linux), with
this message[1].

In port-clisp.lisp, there is a call to SYS::FRAME-UP-1.  As of CLISP
2.44, this is an unavailable function name.  It was replaced[2] by
(SYS::FRAME-UP 1 ...).

This issue has been addressed[3] in more recent swank-clisp.lisp
versions.  Below[4] is a patch adapted from there.  It adds a symbol
to *features* depending on CLISP's version, upon which it
conditionally calls the right frame-up function.

Cheers,
Abhishek.

[1]
;; Compiling file
/home/abhishek/.clc/site/hunchentoot-0.15.7/port-clisp.lisp ...
** - Continuable Error
INTERN("FRAME-UP-1"): #<PACKAGE SYSTEM> is locked
If you continue (by typing 'continue'): Ignore the lock and proceed
The following restarts are also available:
RETRY          :R1      Retry performing #<ASDF:COMPILE-OP NIL
#x204E54BE> on #<ASDF:CL-SOURCE-FILE "port-clisp" #x204DC7EE>.
ACCEPT         :R2      Continue, treating #<ASDF:COMPILE-OP NIL
#x204E54BE> on #<ASDF:CL-SOURCE-FILE "port-clisp" #x204DC7EE> as
having been successful.
ABORT          :R3      Abort main loop

[2] http://clisp.cvs.sourceforge.net/viewvc/clisp/clisp/src/ChangeLog?r1=1.5922&r2=1.5921

[3] http://github.com/pat-maddox/slime/commit/0ad4624b6f1d5c6bcfc773dcb2452dd4fe2d4f43

[4]
diff -u port-clisp.lisp port-clisp.lisp.new
--- port-clisp.lisp     2008-10-17 08:13:11.000000000 +1300
+++ port-clisp.lisp.new 2008-10-17 07:13:58.000000000 +1300
@@ -109,13 +109,19 @@
 is a function frame."
   (char= #\< (aref formatted-frame 0)))

+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (when (string< "2.44" (lisp-implementation-version))
+    (pushnew :clisp-2.44+ *features*)))
+
 (defun get-backtrace (error)
   "This is the function that is used internally by Hunchentoot to
 show or log backtraces."
   (declare (ignore error))
   (with-output-to-string (stream)
     (do ((last nil frame)
-         (frame (sys::the-frame) (sys::frame-up-1 frame 1)))
+         (frame (sys::the-frame)
+                #+clisp-2.44+ (sys::frame-up 1 frame 1)
+                #-clisp-2.44+ (sys::frame-up-1 frame 1)))
         ((eq frame last))
       (let ((formatted-frame (format-frame frame)))
         (when (function-frame-p formatted-frame)




More information about the Tbnl-devel mailing list