chiark / gitweb /
dot/lisp-init.lisp: Get SBCL to ignore inconsistent package redefinition.
authorMark Wooding <mdw@distorted.org.uk>
Fri, 24 Jul 2020 22:38:41 +0000 (23:38 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 9 Aug 2020 03:34:42 +0000 (04:34 +0100)
This is all very unpleasant.  Sorry.

dot/lisp-init.lisp

index 08dce6e826e8ad65ca4e364a61ea40a8a26be01a..845aa5e85f5c7b16773131dce0234200fca6cf27 100644 (file)
@@ -50,6 +50,24 @@ (setf ccl:*quit-on-eof* t)
 #+sbcl
 (sb-ext:set-sbcl-source-location #p"/usr/share/sbcl-source/")
 
+;; Get SBCL to shut up about package variance.  This is a standard result of
+;; my approach to symbol exports, and I don't care.
+#+sbcl
+(progn
+  (unless (fboundp 'real-note-package-variance)
+    (setf (symbol-function 'real-note-package-variance)
+           (symbol-function 'sb-impl::note-package-variance)))
+  (handler-bind ((sb-ext:package-lock-violation #'continue)
+                (sb-kernel:redefinition-warning #'muffle-warning))
+    (defun sb-impl::note-package-variance
+       (&rest args &key package &allow-other-keys)
+      (let ((ignore (getf sb-ext:*on-package-variance* :ignore)))
+       (unless (or (eq ignore t)
+                   (and (listp ignore)
+                        (member (package-name package) ignore)))
+         (apply #'real-note-package-variance args)))))
+  (setf sb-ext:*on-package-variance* '(:ignore t)))
+
 ;; Tell some Lisps about my home directory.  CMU CL already has a search list
 ;; which does the same job, and CCL sets up a logical-pathname host.
 #+(and unix (or sbcl clisp ecl abcl))