Subject: Re: [bug#70065] [PATCH v2 2/8] gnu: racket: Update to 8.12.

From: Efraim Flashner <[email-masked]>
Date: Tue, 9 Apr 2024 11:46:42 +0300

On Mon, Apr 01, 2024 at 02:51:07AM -0400, Philip McGrath wrote:
> All of Racket's changes to Chez Scheme have been merged upstream.  They
> are the basis for the Chez Scheme 10.0.0 release.  For the forseeable
> future, Racket will continue to depend on a specific pre-release
> version of Chez Scheme as part of Racket's "ABI": see upstream
> discussion at <https://racket.discourse.group/t/2739/3>.
...
> (chez-scheme-for-racket-bootstrap-bootfiles): Stop inheriting from
> 'chez-scheme-bootstrap-bootfiles'.
> [arguments]: Rewrite without inheritance. Use `make cross.boot` instead
> of broken experimental script for cross builds.
> [home-page]: Use bootstrapping Racket package instead of archived Git
> repository.
> [description]: Rewrite to reflect upstreaming of Racket's changes to
> Chez Scheme.
> @@ -646,58 +725,70 @@ (define-public chez-scheme-bootstrap-bootfiles
...
>  
>  (define-public chez-scheme-for-racket-bootstrap-bootfiles
>    (package
> -    (inherit chez-scheme-bootstrap-bootfiles)
>      (name "chez-scheme-for-racket-bootstrap-bootfiles")
>      (version (package-version chez-scheme-for-racket))
>      (source #f) ; avoid problematic cycle with racket.scm
>      (native-inputs
> -     (cons* chez-nanopass-bootstrap
> -            (if (%current-target-system)
> -                (list zuo
> -                      chez-scheme-for-racket)
> -                (list racket-vm-bc))))
> +     (cons chez-nanopass-bootstrap
> +           (if (%current-target-system)
> +               (list zuo
> +                     chez-scheme-for-racket)
> +               (list racket-vm-bc))))
> +    (build-system copy-build-system)
>      (arguments
> -     (substitute-keyword-arguments
> -         (package-arguments chez-scheme-bootstrap-bootfiles)
> -       ((#:phases those-phases #~%standard-phases)
> -        #~(let* ((those-phases #$those-phases)
> -                 (unpack (assoc-ref those-phases 'unpack)))
> -            (modify-phases those-phases
> -              (replace 'unpack
> -                (lambda args
> -                  (unpack #:source #$(or (package-source this-package)
> -                                         (package-source racket-vm-bc)))))
> -              (add-after 'unpack 'chdir
> -                (lambda args
> -                  (chdir "racket/src/ChezScheme")))
> -              (add-after 'chdir 'unpack-nanopass+stex
> -                (lambda args
> -                  #$unpack-nanopass+stex))
> -              (add-before 'install 'build
> -                (lambda* (#:key native-inputs inputs #:allow-other-keys)
> -                  #$(cond
> -                     ((%current-target-system)
> -                      ;; cross-compiling
> -                      #~(invoke
> -                         (search-input-file (or native-inputs inputs)
> -                                            "/bin/zuo")
> -                         "makefiles/boot.zuo"
> -                         (search-input-file (or native-inputs inputs)
> -                                            "/bin/scheme")
> -                         #$(or (racket-cs-native-supported-system?)
> -                               (nix-system->pbarch-machine-type))))
> -                     (else
> -                      ;; bootstrapping
> -                      #~(invoke
> -                         (search-input-file (or native-inputs inputs)
> -                                            "/opt/racket-vm/bin/racket")
> -                         "../rktboot/main.rkt"))))))))))
> -    (supported-systems
> -     (package-supported-systems chez-scheme-for-racket))
> -    (home-page "https://github.com/racket/ChezScheme")
> -    ;; ^ This is downstream of https://github.com/racket/racket,
> -    ;; but it's designed to be a friendly landing place for people
> -    ;; who want a ChezScheme-shaped repositroy.
> +     (list
> +      #:install-plan
> +      #~`(("boot/" "lib/chez-scheme-bootfiles"))
> +      #:phases
> +      #~(modify-phases %standard-phases
> +          (replace 'unpack
> +            (let ((unpack (assoc-ref %standard-phases 'unpack)))
> +              (lambda args
> +                (unpack #:source #$(or (package-source this-package)
> +                                       (package-source racket-vm-bc))))))
> +          (add-after 'unpack 'unpack-nanopass
> +            #$unpack-nanopass)
> +          (add-after 'unpack-nanopass 'chdir
> +            (lambda args
> +              (chdir "racket/src/ChezScheme")))
> +          (add-before 'install 'build
> +            #$(cond
> +               ((%current-target-system)
> +                ;; cross-compiling
> +                ;; TODO: share more of this with upstream, once we figure out
> +                ;; how best to manage running Chez as a cross-compiler and the
> +                ;; unfortate cycle with %racket-origin.
> +                #~(lambda* (#:key native-inputs inputs (parallel-build? #t)
> +                            #:allow-other-keys)
> +                    (invoke "./configure"
> +                            "--force" ; don't complain about missing bootfiles
> +                            #$(string-append
> +                               "-m=" (or (racket-cs-native-supported-system?)
> +                                         (nix-system->pbarch-machine-type)))
> +                            "ZUO=zuo"
> +                            ;; ignore submodules:
> +                            "ZLIB=-lz"
> +                            "LZ4=-llz4"
> +                            "STEXLIB=/GuixNotUsingStex")
> +                    (apply invoke
> +                           "make"
> +                           `(,@(if parallel-build?
> +                                   `("-j" ,(number->string
> +                                            (parallel-job-count)))
> +                                   '())
> +                             ,(string-append "SCHEME="
> +                                             (search-input-file
> +                                              (or native-inputs inputs)
> +                                              "/bin/scheme"))
> +                             "cross.boot"))))
> +               (else
> +                ;; bootstrapping
> +                #~(lambda* (#:key native-inputs inputs #:allow-other-keys)
> +                    (invoke
> +                     (search-input-file (or native-inputs inputs)
> +                                        "/opt/racket-vm/bin/racket")
> +                     "../rktboot/main.rkt"))))))))
> +    (home-page "https://pkgs.racket-lang.org/package/cs-bootstrap")
>      (synopsis "Chez Scheme bootfiles bootstrapped by Racket")
>      (description "Chez Scheme is a self-hosting compiler: building it
>  requires ``bootfiles'' containing the Scheme-implemented portions compiled for

chez-scheme-for-racket-bootstrap timed out due to 3600 seconds of
silence on riscv64-linux. I'm building it again with allowing for a
longer silent period.

chez-scheme-for-racket-bootstrap fails in the 'build phase on
powerpc-linux.  This is the same way that it fails on master, so there
is no regression here.

starting phase `build'
error: in phase 'build': uncaught exception:
%exception #<&invoke-error program: "/gnu/store/1q72i8fv2fnf5q2rscahdy90jiigym42-racket-vm-bc-8.12/opt/racket-vm/bin/racket" arguments: ("../rktboot/main.rkt") exit-status: #f term-signal: 6 stop-signal: #f>
phase `build' failed after 0.4 seconds
command "/gnu/store/1q72i8fv2fnf5q2rscahdy90jiigym42-racket-vm-bc-8.12/opt/racket-vm/bin/racket" "../rktboot/main.rkt" failed with signal 6
builder for `/gnu/store/hcccfsv6n1llkqgv98y8sk1wywflnk59-chez-scheme-for-racket-bootstrap-bootfiles-9.9.9-pre-release.23.drv' failed with exit code 1

-- 
Efraim Flashner   <[email-masked]>   רנשלפ םירפא
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted