Subject: bug#44112: SBCL is not reproducible

From: zimoun <[email-masked]>
Date: Wed, 21 Oct 2020 17:13:17 +0200

On Wed, 21 Oct 2020 at 16:32, Pierre Neidhardt <[email-masked]> wrote:

> > In addition, GCC is also involved in the party.  And I have also
> > replaced it by Clang with the same effect.
>
> Where?

--8<---------------cut here---------------start------------->8---
(define-module (ddc-sbcl)
  #:use-module (guix packages)
  #:use-module (guix utils)
  #:use-module ((guix build utils) #:select (modify-phases))
  #:use-module (srfi srfi-1)
  #:use-module (ice-9 match)

  #:use-module (gnu packages lisp)
  #:use-module (gnu packages commencement)
  #:use-module (gnu packages llvm))

(define  (make-sbcl name string-compil compil cc)
  (package
    (inherit sbcl)
    (name name)
    (arguments
     (substitute-keyword-arguments (package-arguments sbcl)
       ((#:phases phases)
        `(modify-phases ,phases
           (replace 'build
             (lambda* (#:key outputs #:allow-other-keys)
             (setenv "CC" ,cc)
             (invoke "sh" "make.sh" ,string-compil
                     (string-append "--prefix="
                                    (assoc-ref outputs "out"))
                     "--dynamic-space-size=2Gb"
                     "--with-sb-core-compression"
                     "--with-sb-xref-for-internals")))))))
    (native-inputs
     `(,@(alist-delete "clisp" (package-native-inputs sbcl))
       ("compil" ,compil)))))

(define-public sbcl-A
  (package-with-c-toolchain
   (make-sbcl "sbcl-A" "clisp" clisp "gcc")
   `(("gcc" ,gcc-toolchain))))      ;fail with 6

(define-public sbcl-B
  (package-with-c-toolchain
   (make-sbcl "sbcl-B" "ecl" ecl "clang")
   `(("clang" ,clang-toolchain))))

(define-public sbcl-AA
  (package-with-c-toolchain
   (make-sbcl "sbcl-AA" "sbcl" sbcl-A "gcc")
   `(("gcc" ,gcc-toolchain))))

(define-public sbcl-BB
  (package-with-c-toolchain
   (make-sbcl "sbcl-BB" "sbcl" sbcl-B "clang")
   `(("clang" ,clang-toolchain))))

(define-public sbcl-CC
  (package-with-c-toolchain
   (make-sbcl "sbcl-CC" "sbcl" sbcl-A "clang")
   `(("clang" ,clang-toolchain))))

(define-public sbcl-DD
  (package-with-c-toolchain
   (make-sbcl "sbcl-DD" "sbcl" sbcl-B "gcc")
   `(("gcc" ,gcc-toolchain))))
--8<---------------cut here---------------end--------------->8---