me
/
guix
Archived
1
0
Fork 0

gnu: racket: Move Chez bootfiles to (gnu packages chez).

* gnu/packages/racket.scm (chez-scheme-for-racket-bootstrap-bootfiles):
Move to ...
* gnu/packages/chez.scm (chez-scheme-for-racket-bootstrap-bootfiles):
... this new variable.
[source]: Avoid problematic cycle with "racket.scm".
[arguments]<#:phases>: Likewise.

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
master
Philip McGrath 2022-02-27 16:29:07 -05:00 committed by Liliana Marie Prikler
parent 035562b7b7
commit df00c01d94
No known key found for this signature in database
GPG Key ID: 442A84B8C70E2F87
2 changed files with 62 additions and 52 deletions

View File

@ -31,12 +31,14 @@
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module (guix gexp)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
#:use-module (gnu packages compression)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages linux)
#:use-module (gnu packages netpbm)
#:use-module (gnu packages racket)
#:use-module (gnu packages tex)
#:use-module (gnu packages compression)
#:use-module (gnu packages image)
@ -260,6 +262,66 @@ generates native code for each target processor, with support for x86, x86_64,
and 32-bit PowerPC architectures.")
(license asl2.0)))
(define-public chez-scheme-for-racket-bootstrap-bootfiles
(package
(name "chez-scheme-for-racket-bootstrap-bootfiles")
(version "9.5.7.3")
;; The version should match `(scheme-fork-version-number)`.
;; See racket/src/ChezScheme/s/cmacros.ss c. line 360.
;; 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 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
(copy-recursively
#$nanopass
"nanopass"
#:keep-mtime? #t)))
(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")))))))
(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.
(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
the current platform. (Chez can then cross-compile bootfiles for all other
supported platforms.)
The Racket package @code{cs-bootstrap} (part of the main Racket Git
repository) implements enough of a Chez Scheme simulation to load the Chez
Scheme compiler purely from source into Racket and apply the compiler to
itself, thus bootstrapping Chez Scheme. Bootstrapping takes about 10 times as
long as using an existing Chez Scheme, but @code{cs-bootstrap} supports Racket
7.1 and later, including the Racket BC variant.
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))))
(define-public chez-srfi
(package
(name "chez-srfi")

View File

@ -415,58 +415,6 @@ Using the Racket VM packages directly is not recommended: instead, install the
;; The LGPL components are only used by Racket BC.
(license (list license:asl2.0 license:expat))))
(define-public chez-scheme-for-racket-bootstrap-bootfiles
(package
(name "chez-scheme-for-racket-bootstrap-bootfiles")
(version "9.5.7.3")
;; The version should match `(scheme-fork-version-number)`.
;; See racket/src/ChezScheme/s/cmacros.ss c. line 360.
;; It will always be different than the upstream version!
;; When updating, remember to also update %racket-version in racket.scm.
(source %racket-origin)
(inputs `())
(native-inputs (list racket-vm-bc))
(build-system copy-build-system)
;; TODO: cross compilation
(arguments
(list
#:install-plan
#~`(("boot/" "lib/chez-scheme-bootfiles"))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'chdir
(lambda args
(chdir "racket/src/ChezScheme")))
(add-after 'chdir 'unpack-nanopass+stex
(lambda args
#$(make-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"))))))
(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.
(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
the current platform. (Chez can then cross-compile bootfiles for all other
supported platforms.)
The Racket package @code{cs-bootstrap} (part of the main Racket Git
repository) implements enough of a Chez Scheme simulation to load the Chez
Scheme compiler purely from source into Racket and apply the compiler to
itself, thus bootstrapping Chez Scheme. Bootstrapping takes about 10 times as
long as using an existing Chez Scheme, but @code{cs-bootstrap} supports Racket
7.1 and later, including the Racket BC variant.
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 license:asl2.0))))
(define (racket-packages-origin name origin specs)
"Extract from ORIGIN the sources for the Racket packages specified by SPECS,
a non-empty list of package specifications. In the resulting file-like