gnu: sbcl: Fix build on powerpc64.
* gnu/packages/patches/sbcl-fix-ppc64-build.patch: New file. * gnu/local.mk: Register it. * gnu/packages/lisp.scm (sbcl)[source]: Use it. Change-Id: If81321bc7e4075ac7ec63f7b8d623011b4b975d5master
parent
7f530f52c9
commit
ea832b44b7
|
@ -1988,6 +1988,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/sbcl-burgled-batteries3-fix-signals.patch \
|
||||
%D%/packages/patches/sbcl-clml-fix-types.patch \
|
||||
%D%/packages/patches/sbcl-eazy-gnuplot-skip-path-check.patch \
|
||||
%D%/packages/patches/sbcl-fix-ppc64-build.patch \
|
||||
%D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch \
|
||||
%D%/packages/patches/scalapack-gcc-10-compilation.patch \
|
||||
%D%/packages/patches/scheme48-tests.patch \
|
||||
|
|
|
@ -447,6 +447,7 @@ an interpreter, a compiler, a debugger, and much more.")
|
|||
version "-source.tar.bz2"))
|
||||
(sha256
|
||||
(base32 "0xhpdnsg8idzxkn20iw8gd2rk470d7vc22vrp5clq9fj117vgn43"))
|
||||
(patches (search-patches "sbcl-fix-ppc64-build.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
commit 255f3ead060129aa097b62f10d054cdc4997a431
|
||||
Author: Douglas Katzman <dougk@google.com>
|
||||
Date: Mon Jan 1 23:59:50 2024 -0500
|
||||
|
||||
Fix ppc64 failure-to-build (from a few weeks ago)
|
||||
|
||||
Git rev 7354472bb5 caused NIL to get a bogus widetag.
|
||||
|
||||
diff --git a/make-target-2-load.lisp b/make-target-2-load.lisp
|
||||
index 6571ec27d..daef942ea 100644
|
||||
--- a/make-target-2-load.lisp
|
||||
+++ b/make-target-2-load.lisp
|
||||
@@ -339,7 +339,13 @@ Please check that all strings which were not recognizable to the compiler
|
||||
|
||||
|
||||
(do-all-symbols (symbol)
|
||||
- (sb-kernel:logior-header-bits symbol sb-vm::+symbol-initial-core+)
|
||||
+ ;; Don't futz with the header of static symbols.
|
||||
+ ;; Technically LOGIOR-HEADER-BITS can only be used on an OTHER-POINTER-LOWTAG
|
||||
+ ;; objects, so modifying NIL should not ever work, but it's especially wrong
|
||||
+ ;; on ppc64 where OTHER- and LIST- pointer lowtags are 10 bytes apart instead
|
||||
+ ;; of 8, so this was making a random alteration to the header.
|
||||
+ (unless (eq (heap-allocated-p symbol) :static)
|
||||
+ (sb-kernel:logior-header-bits symbol sb-vm::+symbol-initial-core+))
|
||||
|
||||
;; A symbol whose INFO slot underwent any kind of manipulation
|
||||
;; such that it now has neither properties nor globaldb info,
|
Reference in New Issue