From: Philip McGrath <philip@philipmcgrath.com>
To: 57050@debbugs.gnu.org
Cc: Philip McGrath <philip@philipmcgrath.com>
Subject: [bug#57050] [PATCH 6/6] gnu: chez-scheme-for-racket: Suport all systems.
Date: Mon, 8 Aug 2022 02:10:07 -0400 [thread overview]
Message-ID: <00975c823227acd41fc714d237449834f88d1530.1659936550.git.philip@philipmcgrath.com> (raw)
In-Reply-To: <cover.1659936550.git.philip@philipmcgrath.com>
On systems for which 'chez-scheme-for-racket' cannot generate native
code, use the applicable 'pbarch' machine type as with 'racket-vm-cs'.
In the process, this commit adds support for cross-compiling
'chez-scheme-for-racket', though not support for compiling it as a
cross-compiler to use in cross-compiling other Scheme programs.
* gnu/packages/chez.scm (chez-scheme)[native-inputs]: Move
'chez-scheme-bootstrap-bootfiles' to ...
[inputs]: ... this field.
[arguments]<#:phases>: Update 'unpack-bootfiles' accordingly.
(chez-scheme-for-racket)[native-inputs]: Add 'this-package' when
cross-compiling. Move 'chez-scheme-for-racket-bootstrap-bootfiles' to ...
[inputs]: ... this field. Add 'libffi' for 'pbarch' machine types.
[arguments]: Support cross-compilation and 'pbarch' machine types.
[supported-systems]: Use '%supported-systems'.
[description]: Update.
---
gnu/packages/chez.scm | 93 ++++++++++++++++++++++++++++++++-----------
1 file changed, 70 insertions(+), 23 deletions(-)
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index 2afef8d3bd..0ab82ef8bf 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -38,6 +38,7 @@ (define-module (gnu packages chez)
#:use-module (gnu packages compression)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages ghostscript)
+ #:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages netpbm)
#:use-module (gnu packages racket)
@@ -318,6 +319,7 @@ (define-public chez-scheme
(build-system gnu-build-system)
(inputs
(list
+ chez-scheme-bootstrap-bootfiles
`(,util-linux "lib") ;<-- libuuid
zlib
lz4
@@ -326,8 +328,7 @@ (define-public chez-scheme
;; for X11 clipboard support in expeditor:
;; https://github.com/cisco/ChezScheme/issues/9#issuecomment-222057232
libx11))
- (native-inputs (list chez-scheme-bootstrap-bootfiles
- chez-nanopass-bootstrap
+ (native-inputs (list chez-nanopass-bootstrap
stex-bootstrap))
(native-search-paths
(list (search-path-specification
@@ -366,7 +367,7 @@ (define-public chez-scheme
(when (directory-exists? "boot")
(delete-file-recursively "boot"))
(copy-recursively
- (search-input-directory (or native-inputs inputs)
+ (search-input-directory inputs
"lib/chez-scheme-bootfiles")
"boot")))
;; NOTE: The custom Chez 'configure' script doesn't allow
@@ -476,13 +477,21 @@ (define-public chez-scheme-for-racket
;; When updating, remember to also update %racket-version in racket.scm.
(source #f) ; avoid problematic cycle with racket.scm
(inputs
- (modify-inputs (package-inputs chez-scheme)
- (delete "libx11" "util-linux:lib")))
+ (let ((inputs (modify-inputs (package-inputs chez-scheme)
+ (replace "chez-scheme-bootstrap-bootfiles"
+ chez-scheme-for-racket-bootstrap-bootfiles)
+ (delete "libx11" "util-linux:lib"))))
+ (if (racket-cs-native-supported-system?)
+ inputs
+ (modify-inputs inputs
+ (append libffi)))))
(native-inputs
- (modify-inputs (package-native-inputs chez-scheme)
- (append zuo)
- (replace "chez-scheme-bootstrap-bootfiles"
- chez-scheme-for-racket-bootstrap-bootfiles)))
+ (let ((native-inputs (modify-inputs (package-native-inputs chez-scheme)
+ (append zuo))))
+ (if (%current-target-system)
+ (modify-inputs native-inputs
+ (append this-package))
+ native-inputs)))
(arguments
(substitute-keyword-arguments (package-arguments chez-scheme)
((#:out-of-source? _ #f)
@@ -496,6 +505,21 @@ (define-public chez-scheme-for-racket
((#:configure-flags cfg-flags #~'())
#~`("--disable-x11"
"--threads" ;; ok to potentially duplicate
+ #$(string-append "-m=" (or (racket-cs-native-supported-system?)
+ (nix-system->pbarch-machine-type)))
+ ;; ^ could skip -m= for non-cross non-pbarch builds
+ #$@(if (racket-cs-native-supported-system?)
+ #~()
+ ;; not inferred on non-native platforms: see
+ ;; https://racket.discourse.group/t/950/9
+ #~("--enable-libffi"
+ "CFLAGS=-g -O2 -D_REENTRANT -pthread"
+ "LIBS=-lm -ldl -lrt -lffi -lncurses"))
+ #$@(if (%current-target-system)
+ (list (string-append "--toolprefix="
+ (%current-target-system)
+ "-"))
+ '())
,@(let* ((chez+version (strip-store-file-name #$output))
(doc-prefix (assoc-ref %outputs "doc"))
(doc-dir (string-append doc-prefix
@@ -518,25 +542,46 @@ (define-public chez-scheme-for-racket
#$mk-flags))
((#:phases those-phases #~%standard-phases)
#~(let* ((those-phases #$those-phases)
- (unpack (assoc-ref those-phases 'unpack)))
+ (gnu:unpack (assoc-ref those-phases 'unpack))
+ (gnu:build (assoc-ref those-phases 'build)))
(modify-phases those-phases
+ (replace 'build
+ ;; need to override target for cross-compilation
+ ;; https://racket.discourse.group/t/950/19
+ (lambda* (#:key target (make-flags '()) (parallel-build? #t)
+ #:allow-other-keys)
+ (gnu:build #:make-flags (if target
+ (cons "kernel" make-flags)
+ make-flags)
+ #:parallel-build? parallel-build?)))
(replace 'install-docs
- (lambda* (#:key make-flags #:allow-other-keys)
+ (lambda* (#:key native-inputs (make-flags '())
+ #:allow-other-keys)
+ ;; The tests for 'native-inputs' are cross-compilation
+ ;; workarounds that would be better to address upstream:
+ ;; see <https://racket.discourse.group/t/950/20>.
+ (when native-inputs
+ (substitute* "Makefile"
+ (("install-docs: build \\$[(]ZUO[)]")
+ "install-docs: $(ZUO)")))
(apply invoke
"make"
"install-docs"
- make-flags)))
+ (if native-inputs
+ (cons (string-append
+ "Scheme="
+ (search-input-file native-inputs
+ "/bin/scheme"))
+ make-flags)
+ make-flags))))
(replace 'unpack
(lambda args
- (unpack #:source #$(or (package-source this-package)
- (package-source racket-vm-bc)))))
+ (gnu:unpack #:source #$(or (package-source this-package)
+ (package-source racket-vm-bc)))))
(add-after 'unpack 'chdir
(lambda args
(chdir "racket/src/ChezScheme"))))))))
- ;; TODO: How to build pbarch/pbchunks for other systems?
- ;; See https://racket.discourse.group/t/950
- (supported-systems (filter racket-cs-native-supported-system?
- %supported-systems))
+ (supported-systems %supported-systems)
(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
@@ -549,13 +594,17 @@ (define-public chez-scheme-for-racket
Main additions to Chez Scheme in the Racket variant:
@itemize @bullet
@item
-AArch64 support
+AArch64 code generation
@item
-Portable bytes (@code{pb}) support, which is mainly useful for bootstrapping
-a build on any supported platform
+Portable bytecode (@code{pb}) mode, which is mainly useful for bootstrapping a
+build on any platform, but can also be used on platforms without native-code
+generation, compiled via Emscripten, linked with @code{libffi}, or used with
+bytecode partially compiled to C
@item
Unboxed floating-point arithmetic and flvectors
@item
+Faster multiplication and division for large exact numbers
+@item
Type reconstruction during optimization (especially for safe code)
@item
Continuation attachments
@@ -566,8 +615,6 @@ (define-public chez-scheme-for-racket
@item
Ordered finalization, immobile (but collectable) objects, weak/ephemeron
generic hash tables, and reference bytevectors
-@item
-Faster multiplication and division for large exact numbers
@end itemize")
(license asl2.0)))
--
2.32.0
next prev parent reply other threads:[~2022-08-08 6:11 UTC|newest]
Thread overview: 122+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-08 6:06 [bug#57050] [PATCH 0/6] gnu: Update Racket to 8.6. Add Zuo Philip McGrath
2022-08-08 6:10 ` [bug#57050] [PATCH 1/6] gnu: stex: Update to 1.2.2-2.afa6075 Philip McGrath
2022-08-08 6:10 ` [bug#57050] [PATCH 2/6] gnu: stex: Fix read-only gifs and math directories Philip McGrath
2022-08-08 6:10 ` [bug#57050] [PATCH 3/6] gnu: chez-scheme: Fix use of "/bin/sh" Philip McGrath
2022-08-08 8:53 ` Liliana Marie Prikler
2022-08-09 20:25 ` Philip McGrath
2022-08-09 21:24 ` Maxime Devos
2022-08-09 21:38 ` ( via Guix-patches via
2022-08-09 21:58 ` Philip McGrath
2022-08-09 22:09 ` ( via Guix-patches via
2022-08-10 11:46 ` Maxime Devos
2022-08-08 6:10 ` [bug#57050] [PATCH 4/6] gnu: Update Racket to 8.6. Add Zuo Philip McGrath
2022-08-08 9:01 ` Liliana Marie Prikler
2022-08-09 20:56 ` Philip McGrath
2022-08-10 7:34 ` Liliana Marie Prikler
2022-08-08 6:10 ` [bug#57050] [PATCH 5/6] gnu: racket: Use Racket CS on all systems Philip McGrath
2022-08-08 9:10 ` Liliana Marie Prikler
2022-08-08 6:10 ` Philip McGrath [this message]
2022-08-08 9:15 ` [bug#57050] [PATCH 6/6] gnu: chez-scheme-for-racket: Suport " Liliana Marie Prikler
2022-08-10 15:30 ` [bug#57050] [PATCH 0/6] gnu: Update Racket to 8.6. Add Zuo Thiago Jung Bauermann via Guix-patches via
2022-08-11 4:00 ` Philip McGrath
2022-08-11 11:08 ` [bug#57050] [PATCH v2 00/13] " Philip McGrath
2022-08-11 11:08 ` [bug#57050] [PATCH v2 01/13] gnu: stex: Update to 1.2.2-2.afa6075 Philip McGrath
2022-08-11 11:08 ` [bug#57050] [PATCH v2 02/13] gnu: stex: Fix read-only gifs and math directories Philip McGrath
2022-08-11 11:13 ` Liliana Marie Prikler
2022-08-11 11:08 ` [bug#57050] [PATCH v2 03/13] gnu: chez-scheme: Fix use of "/bin/sh" Philip McGrath
2022-08-11 11:08 ` [bug#57050] [PATCH v2 04/13] gnu: Add Zuo Philip McGrath
2022-08-11 11:31 ` Liliana Marie Prikler
2022-08-11 14:00 ` Philip McGrath
2022-08-11 15:34 ` Liliana Marie Prikler
2022-08-11 23:32 ` Philip McGrath
2022-08-16 14:47 ` Maxime Devos
2022-08-23 1:40 ` Philip McGrath
2022-08-23 9:11 ` Maxime Devos
2022-08-23 23:24 ` Philip McGrath
2022-08-23 9:20 ` Maxime Devos
2022-08-24 0:27 ` Philip McGrath
2022-08-24 5:42 ` Liliana Marie Prikler
2022-08-24 5:47 ` Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 00/14] gnu: Update Racket to 8.6. " Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 01/14] gnu: stex: Update to 1.2.2-2.afa6075 Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 02/14] gnu: stex: Fix read-only gifs and math directories Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 03/14] etc: teams: Add racket team Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 04/14] etc: teams: Add entry for Philip McGrath Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 05/14] gnu: racket: Adjust patch for "/bin/sh" in rktio Philip McGrath
2022-08-25 9:09 ` Liliana Marie Prikler
2022-08-25 19:16 ` Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 06/14] gnu: chez-scheme: Fix use of "/bin/sh" Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 07/14] gnu: Add Zuo Philip McGrath
2022-08-25 9:12 ` Liliana Marie Prikler
2022-08-25 10:30 ` Efraim Flashner
2022-08-25 20:04 ` Philip McGrath
2022-08-26 12:01 ` Liliana Marie Prikler
2022-08-27 18:08 ` Philip McGrath
2022-08-27 18:58 ` Liliana Marie Prikler
2022-08-27 19:54 ` Philip McGrath
2022-08-27 21:18 ` Liliana Marie Prikler
2022-08-27 21:28 ` Philip McGrath
2022-08-27 22:26 ` Liliana Marie Prikler
2022-08-25 8:54 ` [bug#57050] [PATCH v3 08/14] gnu: racket: Update to 8.6 Philip McGrath
2022-08-25 9:14 ` Liliana Marie Prikler
2022-08-25 10:39 ` Efraim Flashner
2022-08-25 8:54 ` [bug#57050] [PATCH v3 09/14] gnu: chez-scheme: Make bootfiles regular inputs Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 10/14] gnu: chez-scheme-for-racket: Support cross-compilation Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 11/14] gnu: racket: Support cross-compiling the VM packages Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 12/14] gnu: chez-scheme-for-racket: Suport all systems Philip McGrath
2022-08-25 9:24 ` Liliana Marie Prikler
2022-08-25 10:50 ` Efraim Flashner
2022-08-25 20:17 ` Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 13/14] gnu: racket-vm-bc: Add workaround for ppc64le Philip McGrath
2022-08-25 8:54 ` [bug#57050] [PATCH v3 14/14] gnu: racket: Use Racket CS on all systems Philip McGrath
2022-08-25 9:17 ` Liliana Marie Prikler
2022-08-26 21:15 ` [bug#57050] [PATCH v3 00/14] gnu: Update Racket to 8.6. Add Zuo Thiago Jung Bauermann via Guix-patches via
2022-08-27 18:55 ` [bug#57050] [PATCH v4 " Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 01/14] gnu: stex: Update to 1.2.2-2.afa6075 Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 02/14] gnu: stex: Fix read-only gifs and math directories Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 03/14] etc: teams: Add racket team Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 04/14] etc: teams: Add entry for Philip McGrath Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 05/14] gnu: racket: Adjust patch for "/bin/sh" in rktio Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 06/14] gnu: chez-scheme: Fix use of "/bin/sh" Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 07/14] gnu: Add Zuo Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 08/14] gnu: racket: Update to 8.6 Philip McGrath
2022-08-27 19:21 ` Liliana Marie Prikler
2022-08-27 20:30 ` Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 09/14] gnu: chez-scheme: Make bootfiles regular inputs Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 10/14] gnu: chez-scheme-for-racket: Support cross-compilation Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 11/14] gnu: racket: Support cross-compiling the VM packages Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 12/14] gnu: chez-scheme-for-racket: Support all systems Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 13/14] gnu: racket-vm-bc: Add workaround for ppc64le Philip McGrath
2022-08-27 18:55 ` [bug#57050] [PATCH v4 14/14] gnu: racket: Use Racket CS on all systems Philip McGrath
2022-09-04 20:53 ` bug#57050: [PATCH 0/6] gnu: Update Racket to 8.6. Add Zuo Ludovic Courtès
2022-08-11 11:08 ` [bug#57050] [PATCH v2 05/13] gnu: racket: Update to 8.6 Philip McGrath
2022-08-11 11:44 ` Liliana Marie Prikler
2022-08-11 22:40 ` Philip McGrath
2022-08-12 6:34 ` Liliana Marie Prikler
2022-08-22 8:41 ` Efraim Flashner
2022-08-22 18:56 ` Philip McGrath
2022-08-11 11:08 ` [bug#57050] [PATCH v2 06/13] gnu: chez-scheme: Bootfiles should not be native inputs Philip McGrath
2022-08-11 11:47 ` Liliana Marie Prikler
2022-08-11 22:45 ` Philip McGrath
2022-08-12 4:21 ` Liliana Marie Prikler
2022-08-11 11:08 ` [bug#57050] [PATCH v2 07/13] gnu: chez-scheme-for-racket: Support cross-compilation Philip McGrath
2022-08-11 11:56 ` Liliana Marie Prikler
2022-08-11 22:49 ` Philip McGrath
2022-08-11 11:08 ` [bug#57050] [PATCH v2 08/13] gnu: racket: Support cross-compiling the VM packages Philip McGrath
2022-08-11 11:58 ` Liliana Marie Prikler
2022-08-11 23:23 ` Philip McGrath
2022-08-11 11:08 ` [bug#57050] [PATCH v2 09/13] gnu: chez-scheme-for-racket: Suport all systems Philip McGrath
2022-08-11 12:02 ` Liliana Marie Prikler
2022-08-11 23:25 ` Philip McGrath
2022-08-11 11:08 ` [bug#57050] [PATCH v2 10/13] gnu: racket-vm-bc: Add workaround for ppc64le Philip McGrath
2022-08-11 11:08 ` [bug#57050] [PATCH v2 11/13] gnu: racket: Use Racket CS on all systems Philip McGrath
2022-08-11 12:03 ` Liliana Marie Prikler
2022-08-11 11:08 ` [bug#57050] [PATCH v2 12/13] etc: teams: Add racket team Philip McGrath
2022-08-11 12:11 ` Liliana Marie Prikler
2022-08-11 11:08 ` [bug#57050] [PATCH v2 13/13] etc: teams: Add entry for Philip McGrath Philip McGrath
2022-08-13 17:43 ` [bug#57050] [PATCH v2 00/13] gnu: Update Racket to 8.6. Add Zuo Thiago Jung Bauermann via Guix-patches via
2022-08-15 5:47 ` [bug#57050] [RFC PATCH] gnu: racket-vm-cs: Avoid 'configure' bug with '--enable-racket' Philip McGrath
2022-08-15 6:12 ` Philip McGrath
2022-08-15 19:54 ` [bug#57050] [RFC PATCH v2] gnu: racket: Backport fix for powerpc64le Philip McGrath
2022-08-19 0:51 ` Thiago Jung Bauermann via Guix-patches via
2022-08-19 10:10 ` Maxime Devos
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=00975c823227acd41fc714d237449834f88d1530.1659936550.git.philip@philipmcgrath.com \
--to=philip@philipmcgrath.com \
--cc=57050@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).