[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#53878] [PATCH v5 18/22] gnu: chez-scheme: Explicitly package bootst
From: |
Philip McGrath |
Subject: |
[bug#53878] [PATCH v5 18/22] gnu: chez-scheme: Explicitly package bootstrap bootfiles. |
Date: |
Sat, 26 Feb 2022 08:02:50 -0500 |
This makes the structure of the upstream Chez Scheme package the same as
for the Racket variant, it sets things up for (one day, hopefully)
actually being able to bootstrap the upstream Chez Scheme bootfiles, and
it may be useful for cross-compilation and adding support for
architectures without pre-built bootfiles from upstream.
* gnu/packages/chez.scm (chez-scheme-bootstrap-bootfiles): New
variable.
(chez-scheme)[native-inputs]: Add it.
[arguments]<#:phases>: Add 'unpack-bootfiles'.
(chez-scheme-for-racket-bootstrap-bootfiles): Inherit from
'chez-scheme-bootstrap-bootfiles'.
[arguments]: Adapt accordingly.
---
gnu/packages/chez.scm | 98 +++++++++++++++++++++++++++++++------------
1 file changed, 72 insertions(+), 26 deletions(-)
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index ba555e6830..4818e59837 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -46,6 +46,7 @@ (define-module (gnu packages chez)
#:use-module (gnu packages xorg)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
#:export (nix-system->chez-machine
chez-machine->nonthreaded
chez-machine->threaded
@@ -211,7 +212,9 @@ (define-public chez-scheme
;; for X11 clipboard support in expeditor:
;; https://github.com/cisco/ChezScheme/issues/9#issuecomment-222057232
libx11))
- (native-inputs (list chez-nanopass-bootstrap stex-bootstrap))
+ (native-inputs (list chez-scheme-bootstrap-bootfiles
+ chez-nanopass-bootstrap
+ stex-bootstrap))
(native-search-paths
(list (search-path-specification
(variable "CHEZSCHEMELIBDIRS")
@@ -232,6 +235,14 @@ (define-public chez-scheme
(add-after 'unpack 'unpack-nanopass+stex
(lambda args
#$unpack-nanopass+stex))
+ (add-after 'unpack-nanopass+stex 'unpack-bootfiles
+ (lambda* (#:key native-inputs inputs #:allow-other-keys)
+ (when (directory-exists? "boot")
+ (delete-file-recursively "boot"))
+ (copy-recursively
+ (search-input-directory (or native-inputs inputs)
+ "lib/chez-scheme-bootfiles")
+ "boot")))
;; NOTE: the custom Chez 'configure' script doesn't allow
;; unrecognized flags, such as those automatically added
;; by `gnu-build-system`.
@@ -316,8 +327,46 @@ (define* (stex-make #:optional (suffix ""))
and 32-bit PowerPC architectures.")
(license asl2.0)))
+(define-public chez-scheme-bootstrap-bootfiles
+ (package
+ (inherit chez-scheme)
+ (name "chez-scheme-bootstrap-bootfiles")
+ (inputs '())
+ (native-inputs '())
+ (outputs '("out"))
+ (build-system copy-build-system)
+ ;; TODO: cross compilation
+ (arguments
+ (list #:install-plan
+ #~`(("boot/" "lib/chez-scheme-bootfiles"))))
+ (supported-systems
+ ;; Upstream only distributes pre-built bootfiles for
+ ;; arm32le and t?(i3|a6)(le|nt|osx)
+ (filter (lambda (system)
+ (let ((machine (and=> (nix-system->chez-machine system)
+ chez-machine->nonthreaded)))
+ (or (equal? "arm32le" machine)
+ (and machine
+ (member (substring machine 0 2) '("i3" "a6"))
+ (or-map (cut string-suffix? <> machine)
+ '("le" "nt" "osx"))))))
+ %supported-systems))
+ (synopsis "Chez Scheme bootfiles (binary seed)")
+ (description
+ "Chez Scheme is a self-hosting compiler: building it requires
+``bootfiles'' containing the Scheme-implemented portions compiled for the
+current platform. (Chez can then cross-compile bootfiles for all other
+supported platforms.)
+
+This package provides bootstrap bootfiles for upstream Chez Scheme.
+Currently, it simply packages the binaries checked in to the upsream
+repository. Hopefully we can eventually adapt Racket's @code{cs-bootstrap} to
+work with upstream Chez Scheme so that we can bootstrap these files from
+source.")))
+
(define-public chez-scheme-for-racket-bootstrap-bootfiles
(package
+ (inherit chez-scheme-bootstrap-bootfiles)
(name "chez-scheme-for-racket-bootstrap-bootfiles")
(version "9.5.7.3")
;; The version should match `(scheme-fork-version-number)`.
@@ -325,32 +374,30 @@ (define-public chez-scheme-for-racket-bootstrap-bootfiles
;; It will always be different than the upstream version!
;; When updating, remember to also update %racket-version in racket.scm.
(source #f) ; avoid problematic cycle with racket.scm
- (inputs `())
(native-inputs (list chez-nanopass-bootstrap racket-vm-bc))
- (build-system copy-build-system)
;; TODO: cross compilation
(arguments
- (list
- #:install-plan
- #~`(("boot/" "lib/chez-scheme-bootfiles"))
- #:phases
- #~(let ((unpack (assoc-ref %standard-phases 'unpack)))
- (modify-phases %standard-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)
- (invoke (search-input-file (or native-inputs inputs)
- "/opt/racket-vm/bin/racket")
- "rktboot/main.rkt")))))))
+ (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)
+ (invoke (search-input-file (or native-inputs inputs)
+ "/opt/racket-vm/bin/racket")
+ "rktboot/main.rkt"))))))))
(supported-systems (filter nix-system->chez-machine
%supported-systems))
(home-page "https://github.com/racket/ChezScheme")
@@ -372,8 +419,7 @@ (define-public chez-scheme-for-racket-bootstrap-bootfiles
Note that the generated bootfiles are specific to Racket's fork of Chez
Scheme, and @code{cs-bootstrap} does not currently support building upstream
-Chez Scheme.")
- (license (list asl2.0))))
+Chez Scheme.")))
;;
;; Chez's bootstrap dependencies:
--
2.32.0
- [bug#53878] [PATCH v5 11/22] gnu: chez: Add utilities for Chez machine types., (continued)
- [bug#53878] [PATCH v5 05/22] gnu: racket-minimal: Don't configure non-existant catalogs., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 07/22] gnu: racket-minimal: Add "debug" output., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 09/22] gnu: racket-minimal: Separate from the Racket VM., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 12/22] gnu: racket: Add 'racket-vm-for-system'., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 14/22] gnu: chez-scheme: Use shared zlib and lz4., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 15/22] gnu: chez-scheme: Use new package style., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 17/22] gnu: Add chez-nanopass., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 18/22] gnu: chez-scheme: Explicitly package bootstrap bootfiles.,
Philip McGrath <=
- [bug#53878] [PATCH v5 16/22] gnu: Add stex., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 21/22] gnu: chez: Add 'chez-scheme-for-system'., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 19/22] gnu: chez-mit: Support chez-scheme-for-racket., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 20/22] gnu: Add chez-scheme-for-racket., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 22/22] gnu: racket-vm-cs: Build with "--enable-scheme"., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 00/22] Update Racket to 8.4. Adjust Chez Scheme packages., Liliana Marie Prikler, 2022/02/26
- [bug#53878] [PATCH v5 00/22] Update Racket to 8.4. Adjust Chez Scheme packages., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 00/22] Update Racket to 8.4. Adjust Chez Scheme packages., Liliana Marie Prikler, 2022/02/26
- [bug#53878] [PATCH v5 00/22] Update Racket to 8.4. Adjust Chez Scheme packages., Philip McGrath, 2022/02/26
[bug#53878] [PATCH v6 00/24] Update Racket to 8.4. Adjust Chez Scheme packages., Philip McGrath, 2022/02/26