new sbcl breaks make



Hi,

I recently upgraded my installation of sbcl to SBCL 0.8.13 and
experienced a problem in building the maxima system under sbcl because
of the newly introduced package locks.
maxima tries to redefine things in the common-lisp package and this is
(according to the hyperspec) undefined behaviour. Under the new sbcl
it raises a condition since it violates its lock on the common-lisp
package.

I tried to fix it and came up with the following patches to
defsystem.lisp and maxima-package.lisp which work for me:

diff defsystem.lisp defsystem.lisp.new
2036c2036
<     (pathname #| do nothing |#))
---
>     (pathname ))
3815c3815
<       #-(or (and allegro-version>= (version>= 4 1)) :lispworks)
---
>       #-(or (and allegro-version>= (version>= 4 1)) :lispworks :sbcl)
3820d3819
<            #+:sbcl 'cl:require
3839,3840c3838,3842
<        (symbol-function 'new-require))))))
< )
---
>        (symbol-function 'new-require)))
>       #+:sbcl
>       (sb-ext:without-package-locks
>        (setf (symbol-function 'cl:require)
>            (symbol-function 'new-require)))))))


diff maxima-package.lisp maxima-package.lisp.new
1c1
< #+(or sbcl mcl)
---
> #+mcl
4a5,9
> #+:sbcl
> (progn
>   (sb-ext:unlock-package "COMMON-LISP")
>     (rename-package "COMMON-LISP" "COMMON-LISP" '("LISP" "CL")))


I think it would be better to avoid mucking around with the
common-lisp package in the long run, but my patch is a short term fix
that allows to build the system.

I hope it is of some help to the list members,

Sincerely,

Andreas
-- 
Wherever I lay my .emacs, there's my $HOME.