* [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7. @ 2022-11-16 21:36 Philip McGrath 2022-11-16 21:39 ` [bug#59322] [PATCH 1/2] " Philip McGrath ` (2 more replies) 0 siblings, 3 replies; 20+ messages in thread From: Philip McGrath @ 2022-11-16 21:36 UTC (permalink / raw) To: 59322; +Cc: Philip McGrath Hi, This patch series updates Racket to 8.7. -Philip Philip McGrath (2): gnu: racket: Update to 8.7. gnu: racket-vm-cs: Avoid duplicate work. gnu/local.mk | 2 +- gnu/packages/chez.scm | 21 +- .../racket-backport-8.6-cross-install.patch | 126 ---- .../racket-backport-8.6-docindex-write.patch | 36 -- .../patches/racket-backport-8.6-hurd.patch | 609 ------------------ .../patches/racket-backport-8.6-zuo.patch | 481 -------------- .../racket-backport-8.7-pkg-strip.patch | 90 +++ gnu/packages/racket.scm | 60 +- 8 files changed, 128 insertions(+), 1297 deletions(-) delete mode 100644 gnu/packages/patches/racket-backport-8.6-cross-install.patch delete mode 100644 gnu/packages/patches/racket-backport-8.6-docindex-write.patch delete mode 100644 gnu/packages/patches/racket-backport-8.6-hurd.patch delete mode 100644 gnu/packages/patches/racket-backport-8.6-zuo.patch create mode 100644 gnu/packages/patches/racket-backport-8.7-pkg-strip.patch base-commit: e06df550e21d596b65dc3e5b3e99152be58372b3 -- 2.38.0 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH 1/2] gnu: racket: Update to 8.7. 2022-11-16 21:36 [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7 Philip McGrath @ 2022-11-16 21:39 ` Philip McGrath 2022-11-17 7:30 ` Liliana Marie Prikler 2022-11-18 0:45 ` [bug#59322] [PATCH v2 0/4] " Philip McGrath 2022-11-16 21:39 ` [bug#59322] [PATCH 2/2] gnu: racket-vm-cs: Avoid duplicate work Philip McGrath 2022-12-04 13:25 ` [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7 Enrico Schwass via Guix-patches via 2 siblings, 2 replies; 20+ messages in thread From: Philip McGrath @ 2022-11-16 21:39 UTC (permalink / raw) To: 59322; +Cc: Philip McGrath Also, update 'chez-scheme-for-racket' to 9.5.9.8. * gnu/packages/patches/racket-backport-8.6-cross-install.patch, gnu/packages/patches/racket-backport-8.6-docindex-write.patch, gnu/packages/patches/racket-backport-8.6-hurd.patch, gnu/packages/patches/racket-backport-8.6-zuo.patch: Remove patches. * gnu/packages/patches/racket-backport-8.7-pkg-strip.patch: New patch. * gnu/local.mk (dist_patch_DATA): Update accordingly. * gnu/packages/racket.scm (%racket-origin)[patches]: Likewise. (%racket-version): Update to 8.7. (racket)[inputs]: Add 'scheme-doc' source package from '%racket-origin'. (racket)[inputs]<compatibility, db, deinprogramm, draw, drracket, eopl, errortrace, gui, htdp, mzscheme, parser-tools, pict, plai, plot, r6rs, redex, scribble, slideshow, snip, typed-racket, srfi, string-constants>: Update checksums. * gnu/packages/chez.scm (target-chez-arch): Support riscv64-linux-gnu. (%chez-features-table): Likewise. (chez-scheme-for-racket): Update to 9.5.9.8. [arguments]: Enable tests. [description]: Update. (chez-scheme-for-racket-bootstrap-bootfiles)[arguments]: Update path to 'rktboot'. --- gnu/local.mk | 2 +- gnu/packages/chez.scm | 21 +- .../racket-backport-8.6-cross-install.patch | 126 ---- .../racket-backport-8.6-docindex-write.patch | 36 -- .../patches/racket-backport-8.6-hurd.patch | 609 ------------------ .../patches/racket-backport-8.6-zuo.patch | 481 -------------- .../racket-backport-8.7-pkg-strip.patch | 90 +++ gnu/packages/racket.scm | 54 +- 8 files changed, 126 insertions(+), 1293 deletions(-) delete mode 100644 gnu/packages/patches/racket-backport-8.6-cross-install.patch delete mode 100644 gnu/packages/patches/racket-backport-8.6-docindex-write.patch delete mode 100644 gnu/packages/patches/racket-backport-8.6-hurd.patch delete mode 100644 gnu/packages/patches/racket-backport-8.6-zuo.patch create mode 100644 gnu/packages/patches/racket-backport-8.7-pkg-strip.patch diff --git a/gnu/local.mk b/gnu/local.mk index 4fcaa6801a..8441fc6ad5 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1796,7 +1796,7 @@ dist_patch_DATA = \ %D%/packages/patches/ripperx-missing-file.patch \ %D%/packages/patches/rpcbind-CVE-2017-8779.patch \ %D%/packages/patches/rtags-separate-rct.patch \ - %D%/packages/patches/racket-backport-8.6-zuo.patch \ + %D%/packages/patches/racket-backport-8.7-pkg-strip.patch \ %D%/packages/patches/racket-chez-scheme-bin-sh.patch \ %D%/packages/patches/racket-rktio-bin-sh.patch \ %D%/packages/patches/racket-zuo-bin-sh.patch \ diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm index 5d152b3db5..0d22e2e20f 100644 --- a/gnu/packages/chez.scm +++ b/gnu/packages/chez.scm @@ -104,7 +104,7 @@ (define* (target-chez-arch #:optional (system ((target-ppc32? system) "ppc32") ((target-riscv64? system) - #f) + "rv64") (else #f))) @@ -170,6 +170,7 @@ (define %chez-features-table ("a6" threads bootstrap-bootfiles) ("arm32" bootstrap-bootfiles) ("arm64" . #f) + ("rv64" . #f) ("ppc32" threads)) ;; Hurd ("gnu" @@ -466,8 +467,8 @@ (define-public chez-scheme-for-racket (package (inherit chez-scheme) (name "chez-scheme-for-racket") - (version "9.5.9.2") - ;; The version should match `(scheme-fork-version-number)`. + (version "9.5.9.8") + ;; The version should match `scheme-version`. ;; 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. @@ -492,12 +493,6 @@ (define-public chez-scheme-for-racket (substitute-keyword-arguments (package-arguments chez-scheme) ((#:out-of-source? _ #f) #t) - ((#:tests? _ #t) - ;; FIXME: There have been some flaky test failures. Some have been - ;; fixed upstream post-release but have proven non-trivial to - ;; backport; at least one issue remains. Re-enable tests once - ;; https://github.com/racket/racket/issues/4359 is fixed. - #f) ((#:configure-flags cfg-flags #~'()) #~`("--disable-x11" "--threads" ;; ok to potentially duplicate @@ -590,7 +585,7 @@ (define-public chez-scheme-for-racket Main additions to Chez Scheme in the Racket variant: @itemize @bullet @item -AArch64 code generation +AArch64 and RV64G (RISC-V) code generation @item 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 @@ -603,7 +598,7 @@ (define-public chez-scheme-for-racket @item Type reconstruction during optimization (especially for safe code) @item -Continuation attachments +Continuation marks @item Parallel garbage collection, in-place garbage collection for old-generation objects (instead of always copying), and reachability-based memory @@ -611,6 +606,8 @@ (define-public chez-scheme-for-racket @item Ordered finalization, immobile (but collectable) objects, weak/ephemeron generic hash tables, and reference bytevectors +@item +Easier bootstrapping via old versions of Chez Scheme @end itemize") (license asl2.0))) @@ -695,7 +692,7 @@ (define-public chez-scheme-for-racket-bootstrap-bootfiles #~(invoke (search-input-file (or native-inputs inputs) "/opt/racket-vm/bin/racket") - "rktboot/main.rkt" + "../rktboot/main.rkt" #$@(if (racket-cs-native-supported-system?) #~() (let ((m (nix-system->pbarch-machine-type))) diff --git a/gnu/packages/patches/racket-backport-8.6-cross-install.patch b/gnu/packages/patches/racket-backport-8.6-cross-install.patch deleted file mode 100644 index 2c4d8924ed..0000000000 --- a/gnu/packages/patches/racket-backport-8.6-cross-install.patch +++ /dev/null @@ -1,126 +0,0 @@ -From fbe2094f56fb81c888076c781e90fb0abbc0cc07 Mon Sep 17 00:00:00 2001 -From: Matthew Flatt <mflatt@racket-lang.org> -Date: Sat, 30 Jul 2022 07:06:55 -0600 -Subject: [PATCH 1/2] CS makefiles: fix Unix-style install for cross - compilation - -Closes #4377 - -(cherry picked from commit 053be470e7c5454cdf48e934f3254d2d916bbbc5) ---- - racket/src/cs/c/build.zuo | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/racket/src/cs/c/build.zuo b/racket/src/cs/c/build.zuo -index 8d3950bb27..d8b74c509d 100644 ---- a/racket/src/cs/c/build.zuo -+++ b/racket/src/cs/c/build.zuo -@@ -1016,10 +1016,9 @@ - (define (setup) - (call-with-dest-racket - (lambda (bindir dest-racket) -- (define copytree-racket (and cross? (config-bootstrap-racket))) -+ (define copytree-racket (and cross? (hash-ref (config-bootstrap-racket) 'racket))) - (maybe-copytree config dest-racket copytree-racket at-dir) -- (run-raco-setup config dest-racket -- (and cross? (hash-ref (config-bootstrap-racket) 'racket)) -+ (run-raco-setup config dest-racket copytree-racket - ;; this can be redundant if it's also supplied via `SETUP_MACHINE_FLAGS`, - ;; but redundant should be ok: - (list "-MCR" (~a (at-dir "compiled") ":") --- -2.32.0 - - -From 85802f4d515e310e657928707800ad709a676e2a Mon Sep 17 00:00:00 2001 -From: Matthew Flatt <mflatt@racket-lang.org> -Date: Mon, 15 Aug 2022 10:37:01 +0800 -Subject: [PATCH 2/2] configure: adjust cross-build assumption for a pb build - -Don't assume a cross build for a pb target on a platform that's only -supported via pb. - -(cherry picked from commit 70e484e885637c495be5481983dae2207fdd67bb) - -(Edited to remove unrelated tweak to comments in -"racket/src/expander/expand/require+provide.rkt".) ---- - racket/src/cs/c/configure | 15 +++++++++++---- - racket/src/cs/c/configure.ac | 15 +++++++++++---- - 2 files changed, 22 insertions(+), 8 deletions(-) - -diff --git a/racket/src/cs/c/configure b/racket/src/cs/c/configure -index 454d79e11a..7e0fa5600d 100755 ---- a/racket/src/cs/c/configure -+++ b/racket/src/cs/c/configure -@@ -4679,6 +4679,11 @@ case "$MACH_HOST_CPU" in - ;; - esac - -+if test "${MACH}" = "" ; then -+ default_mach_was_empty=yes -+else -+ default_mach_was_empty=no -+fi - - if test "${enable_mach}" != "" ; then - MACH="${enable_mach}" -@@ -4701,13 +4706,15 @@ elif test "$MACH" = "" -o "$MACH_OS" = "" ; then - exit 1 - fi - --# For a pb build where Racket is supplied, force cross-build --# mode on the assumption that the host is not a pb build --# (because it should be created with default configure options) -+# For a pb build where Racket is supplied and MACH was not originally -+# empty, force cross-build mode on the assumption that the host is not -+# a pb build (because it should be created with default configure options) - if test "${enable_pb}" = "yes" ; then - if test "${enable_racket}" != "" ; then - if test "${enable_target}" = "" ; then -- enable_target="${MACH}" -+ if test "${default_mach_was_empty}" = "no" ; then -+ enable_target="${MACH}" -+ fi - fi - fi - fi -diff --git a/racket/src/cs/c/configure.ac b/racket/src/cs/c/configure.ac -index 5bce979c92..734c1e8feb 100644 ---- a/racket/src/cs/c/configure.ac -+++ b/racket/src/cs/c/configure.ac -@@ -415,6 +415,11 @@ case "$MACH_HOST_CPU" in - ;; - esac - -+if test "${MACH}" = "" ; then -+ default_mach_was_empty=yes -+else -+ default_mach_was_empty=no -+fi - - if test "${enable_mach}" != "" ; then - MACH="${enable_mach}" -@@ -437,13 +442,15 @@ elif test "$MACH" = "" -o "$MACH_OS" = "" ; then - exit 1 - fi - --# For a pb build where Racket is supplied, force cross-build --# mode on the assumption that the host is not a pb build --# (because it should be created with default configure options) -+# For a pb build where Racket is supplied and MACH was not originally -+# empty, force cross-build mode on the assumption that the host is not -+# a pb build (because it should be created with default configure options) - if test "${enable_pb}" = "yes" ; then - if test "${enable_racket}" != "" ; then - if test "${enable_target}" = "" ; then -- enable_target="${MACH}" -+ if test "${default_mach_was_empty}" = "no" ; then -+ enable_target="${MACH}" -+ fi - fi - fi - fi --- -2.32.0 - diff --git a/gnu/packages/patches/racket-backport-8.6-docindex-write.patch b/gnu/packages/patches/racket-backport-8.6-docindex-write.patch deleted file mode 100644 index abe1984507..0000000000 --- a/gnu/packages/patches/racket-backport-8.6-docindex-write.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 8b4d686a62fd66dedfc40ecdcf3698316993d614 Mon Sep 17 00:00:00 2001 -From: Philip McGrath <philip@philipmcgrath.com> -Date: Sun, 17 Jul 2022 22:51:44 -0400 -Subject: [PATCH] racket-index: set write permission when copying - `docindex.sqlite` - -Fixes https://github.com/racket/racket/issues/4357 - -(cherry picked from commit 55b6cbdca1f36a4f37bab1519c1b658717d3cad2) ---- - pkgs/racket-index/setup/scribble.rkt | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/pkgs/racket-index/setup/scribble.rkt b/pkgs/racket-index/setup/scribble.rkt -index 6694f0b793..e27a8fa348 100644 ---- a/pkgs/racket-index/setup/scribble.rkt -+++ b/pkgs/racket-index/setup/scribble.rkt -@@ -252,7 +252,14 @@ - (unless (file-exists? db-file) - (define-values (base name dir?) (split-path db-file)) - (make-directory* base) -- (when copy-from (copy-file copy-from db-file)) -+ (when copy-from -+ (copy-file copy-from db-file) -+ ;; we might not have write permissions for the previous layer: -+ ;; ensure that we do for the new file -+ (define orig-mode (file-or-directory-permissions db-file 'bits)) -+ (define writeable-mode (bitwise-ior user-write-bit orig-mode)) -+ (unless (= writeable-mode orig-mode) -+ (file-or-directory-permissions db-file writeable-mode))) - (doc-db-disconnect - (doc-db-file->connection db-file #t)))) - (when (or (ormap can-build*? main-docs) --- -2.32.0 - diff --git a/gnu/packages/patches/racket-backport-8.6-hurd.patch b/gnu/packages/patches/racket-backport-8.6-hurd.patch deleted file mode 100644 index d593b01e62..0000000000 --- a/gnu/packages/patches/racket-backport-8.6-hurd.patch +++ /dev/null @@ -1,609 +0,0 @@ -From f17b030fa2f902bb3666913d4a3cd6ba9c146d22 Mon Sep 17 00:00:00 2001 -From: Philip McGrath <philip@philipmcgrath.com> -Date: Wed, 3 Aug 2022 03:13:03 -0400 -Subject: [PATCH 1/3] Chez Scheme: Fix build on GNU/Hurd - -Mostly GNU/Hurd should take the same options as GNU/Linux. One -difference is that the Hurd does not define macros such as `PATH_MAX` or -`NOFILE`, because it avoids imposing arbitrary limits on such resources. -This patch provides alternatives for localized uses of those constants, -but it accepts the pervasive use of `PATH_MAX` in finding bootfiles for -now. See https://www.gnu.org/software/hurd/hurd/porting/guidelines.html. - -(cherry picked from commit 87eee6e2adb8c6bc11e60619c706fa6295096085) ---- - racket/src/ChezScheme/README.md | 1 + - racket/src/ChezScheme/c/number.c | 22 +++++++++---------- - racket/src/ChezScheme/c/prim5.c | 35 ++++++++++++++++++++++++++++-- - racket/src/ChezScheme/c/scheme.c | 34 +++++++++++++++++------------ - racket/src/ChezScheme/c/version.h | 7 ++++-- - racket/src/ChezScheme/configure | 17 ++++++++++----- - racket/src/ChezScheme/s/cmacros.ss | 1 + - racket/src/cs/c/configure | 14 ++++++++++-- - racket/src/cs/c/configure.ac | 14 ++++++++++-- - racket/src/cs/rumble/system.ss | 3 +++ - 10 files changed, 109 insertions(+), 39 deletions(-) - -diff --git a/racket/src/ChezScheme/README.md b/racket/src/ChezScheme/README.md -index a4a11a5eef..25231dd9bb 100644 ---- a/racket/src/ChezScheme/README.md -+++ b/racket/src/ChezScheme/README.md -@@ -13,6 +13,7 @@ Supported platforms (bytecode interpreter may work for others): - * OpenBSD: x86, x86_64, ARMv6, AArch64, PowerPC32 - * NetBSD: x86, x86_64, ARMv6, AArch64, PowerPC32 - * Solaris: x86, x86_64 -+ * GNU/Hurd: x86 - * Android: ARMv7, AArch64 - * iOS: AArch64 - * WebAssembly via Emscripten (bytecode interpreter only) -diff --git a/racket/src/ChezScheme/c/number.c b/racket/src/ChezScheme/c/number.c -index ede38cc626..e2bce0d2d3 100644 ---- a/racket/src/ChezScheme/c/number.c -+++ b/racket/src/ChezScheme/c/number.c -@@ -1041,15 +1041,15 @@ floating-point operations - - #ifdef IEEE_DOUBLE - /* exponent stored + 1024, hidden bit to left of decimal point */ --#define bias 1023 --#define bitstoright 52 --#define m1mask 0xf --#ifdef WIN32 --#define hidden_bit 0x10000000000000 --#else --#define hidden_bit 0x10000000000000ULL --#endif --#ifdef LITTLE_ENDIAN_IEEE_DOUBLE -+# define bias 1023 -+# define bitstoright 52 -+# define m1mask 0xf -+# ifdef WIN32 -+# define hidden_bit 0x10000000000000 -+# else -+# define hidden_bit 0x10000000000000ULL -+# endif -+# ifdef LITTLE_ENDIAN_IEEE_DOUBLE - struct dblflt { - UINT m4: 16; - UINT m3: 16; -@@ -1058,7 +1058,7 @@ struct dblflt { - UINT e: 11; - UINT sign: 1; - }; --#else -+# else - struct dblflt { - UINT sign: 1; - UINT e: 11; -@@ -1067,7 +1067,7 @@ struct dblflt { - UINT m3: 16; - UINT m4: 16; - }; --#endif -+# endif - #endif - - double S_random_double(U32 m1, U32 m2, U32 m3, U32 m4, double scale) { -diff --git a/racket/src/ChezScheme/c/prim5.c b/racket/src/ChezScheme/c/prim5.c -index 124d1e049c..82bbf8d687 100644 ---- a/racket/src/ChezScheme/c/prim5.c -+++ b/racket/src/ChezScheme/c/prim5.c -@@ -23,6 +23,10 @@ - #include <ctype.h> - #include <math.h> - -+#if defined(__GNU__) /* Hurd */ -+#include <sys/resource.h> -+#endif -+ - /* locally defined functions */ - static INT s_errno(void); - static IBOOL s_addr_in_heap(uptr x); -@@ -58,7 +62,7 @@ static void s_showalloc(IBOOL show_dump, const char *outfn); - static ptr s_system(const char *s); - static ptr s_process(char *s, IBOOL stderrp); - static I32 s_chdir(const char *inpath); --#ifdef GETWD -+#if defined(GETWD) || defined(__GNU__) /* Hurd */ - static char *s_getwd(void); - #endif - static ptr s_set_code_byte(ptr p, ptr n, ptr x); -@@ -881,7 +885,18 @@ static ptr s_process(char *s, IBOOL stderrp) { - CLOSE(0); if (dup(tofds[0]) != 0) _exit(1); - CLOSE(1); if (dup(fromfds[1]) != 1) _exit(1); - CLOSE(2); if (dup(stderrp ? errfds[1] : 1) != 2) _exit(1); -+#ifndef __GNU__ /* Hurd */ - {INT i; for (i = 3; i < NOFILE; i++) (void)CLOSE(i);} -+#else /* __GNU__ Hurd: no NOFILE */ -+ { -+ INT i; -+ struct rlimit rlim; -+ getrlimit(RLIMIT_NOFILE, &rlim); -+ for (i = 3; i < rlim.rlim_cur; i++) { -+ (void)CLOSE(i); -+ } -+ } -+#endif /* __GNU__ Hurd */ - execl("/bin/sh", "/bin/sh", "-c", s, NULL); - _exit(1) /* only if execl fails */; - /*NOTREACHED*/ -@@ -927,6 +942,22 @@ static I32 s_chdir(const char *inpath) { - static char *s_getwd() { - return GETWD(TO_VOIDP(&BVIT(S_bytevector(PATH_MAX), 0))); - } -+#elif defined(__GNU__) /* Hurd: no PATH_MAX */ -+static char *s_getwd() { -+ char *path; -+ size_t len; -+ ptr bv; -+ path = getcwd(NULL, 0); -+ if (NULL == path) { -+ return NULL; -+ } else { -+ len = strlen(path); -+ bv = S_bytevector(len); -+ memcpy(TO_VOIDP(&BVIT(bv, 0)), path, len); -+ free(path); -+ return TO_VOIDP(&BVIT(bv, 0)); -+ } -+} - #endif /* GETWD */ - - static ptr s_set_code_byte(ptr p, ptr n, ptr x) { -@@ -1817,7 +1848,7 @@ void S_prim5_init(void) { - Sforeign_symbol("(cs)s_rational", (void *)S_rational); - Sforeign_symbol("(cs)sub", (void *)S_sub); - Sforeign_symbol("(cs)rem", (void *)S_rem); --#ifdef GETWD -+#if defined(GETWD) || defined(__GNU__) /* Hurd */ - Sforeign_symbol("(cs)s_getwd", (void *)s_getwd); - #endif - Sforeign_symbol("(cs)s_chdir", (void *)s_chdir); -diff --git a/racket/src/ChezScheme/c/scheme.c b/racket/src/ChezScheme/c/scheme.c -index ed5564540b..0c40e3eaf0 100644 ---- a/racket/src/ChezScheme/c/scheme.c -+++ b/racket/src/ChezScheme/c/scheme.c -@@ -458,6 +458,12 @@ static IBOOL next_path(char *path, const char *name, const char *ext, const char - static const char *path_last(const char *path); - static char *get_defaultheapdirs(void); - -+#ifdef PATH_MAX -+# define BOOT_PATH_MAX PATH_MAX -+#else /* hack for Hurd: better to remove the restriction */ -+# define BOOT_PATH_MAX 4096 -+#endif -+ - static const char *path_last(const char *p) { - const char *s; - #ifdef WIN32 -@@ -483,7 +489,7 @@ static const char *path_last(const char *p) { - - static char *get_defaultheapdirs() { - char *result; -- wchar_t buf[PATH_MAX]; -+ wchar_t buf[BOOT_PATH_MAX]; - DWORD len = sizeof(buf); - if (ERROR_SUCCESS != RegGetValueW(HKEY_LOCAL_MACHINE, L"Software\\Chez Scheme\\csv" VERSION, L"HeapSearchPath", RRF_RT_REG_SZ, NULL, buf, &len)) - return DEFAULT_HEAP_PATH; -@@ -512,14 +518,14 @@ static char *get_defaultheapdirs() { - * leaving the full path with name affixed in path and *sp / *dsp pointing - * past the current entry. it returns 1 on success and 0 if at the end of - * the search path. path should be a pointer to an unoccupied buffer -- * PATH_MAX characters long. either or both of sp/dsp may be empty, -+ * BOOT_PATH_MAX characters long. either or both of sp/dsp may be empty, - * but neither may be null, i.e., (char *)0. */ - static IBOOL next_path(char *path, const char *name, const char *ext, - const char **sp, const char **dsp) { - char *p; - const char *s, *t; - --#define setp(c) if (p >= path + PATH_MAX) { fprintf(stderr, "search path entry too long\n"); S_abnormal_exit(); } else *p++ = (c) -+#define setp(c) if (p >= path + BOOT_PATH_MAX) { fprintf(stderr, "search path entry too long\n"); S_abnormal_exit(); } else *p++ = (c) - for (;;) { - s = *sp; - p = path; -@@ -532,10 +538,10 @@ static IBOOL next_path(char *path, const char *name, const char *ext, - switch (*s) { - #ifdef WIN32 - case 'x': { -- wchar_t exepath[PATH_MAX]; DWORD n; -+ wchar_t exepath[BOOT_PATH_MAX]; DWORD n; - s += 1; -- n = GetModuleFileNameW(NULL, exepath, PATH_MAX); -- if (n == 0 || (n == PATH_MAX && GetLastError() == ERROR_INSUFFICIENT_BUFFER)) { -+ n = GetModuleFileNameW(NULL, exepath, BOOT_PATH_MAX); -+ if (n == 0 || (n == BOOT_PATH_MAX && GetLastError() == ERROR_INSUFFICIENT_BUFFER)) { - fprintf(stderr, "warning: executable path is too long; ignoring %%x\n"); - } else { - char *tstart; -@@ -608,7 +614,7 @@ typedef struct { - iptr len; /* 0 => unknown */ - iptr offset; - IBOOL need_check, close_after; -- char path[PATH_MAX]; -+ char path[BOOT_PATH_MAX]; - } boot_desc; - - #define MAX_BOOT_FILES 10 -@@ -695,14 +701,14 @@ static void finish_dependencies_header(int fd, const char *path, int c) { - static IBOOL find_boot(const char *name, const char *ext, IBOOL direct_pathp, - int fd, - IBOOL errorp) { -- char pathbuf[PATH_MAX], buf[PATH_MAX]; -+ char pathbuf[BOOT_PATH_MAX], buf[BOOT_PATH_MAX]; - uptr n = 0; - INT c; - const char *path; - char *expandedpath; - - if ((fd != -1) || direct_pathp || S_fixedpathp(name)) { -- if (strlen(name) >= PATH_MAX) { -+ if (strlen(name) >= BOOT_PATH_MAX) { - fprintf(stderr, "boot-file path is too long %s\n", name); - S_abnormal_exit(); - } -@@ -776,7 +782,7 @@ static IBOOL find_boot(const char *name, const char *ext, IBOOL direct_pathp, - if (boot_count == 0) { - for (;;) { - /* try to load heap or boot file this boot file requires */ -- if (get_string(fd, buf, PATH_MAX, &c) != 0) { -+ if (get_string(fd, buf, BOOT_PATH_MAX, &c) != 0) { - fprintf(stderr, "unexpected end of file on %s\n", path); - CLOSE(fd); - S_abnormal_exit(); -@@ -796,7 +802,7 @@ static IBOOL find_boot(const char *name, const char *ext, IBOOL direct_pathp, - c = get_u8(fd); - for (sep = " "; ; sep = "or ") { - if (c == ')') break; -- (void) get_string(fd, buf, PATH_MAX, &c); -+ (void) get_string(fd, buf, BOOT_PATH_MAX, &c); - fprintf(stderr, "%s%s.boot ", sep, buf); - } - fprintf(stderr, "required by %s\n", path); -@@ -1090,7 +1096,7 @@ extern void Sregister_boot_file_fd_region(const char *name, - int close_after) { - check_boot_file_state("Sregister_boot_file_fd"); - -- if (strlen(name) >= PATH_MAX) { -+ if (strlen(name) >= BOOT_PATH_MAX) { - fprintf(stderr, "boot-file path is too long %s\n", name); - S_abnormal_exit(); - } -@@ -1141,14 +1147,14 @@ extern void Sbuild_heap(const char *kernel, void (*custom_init)(void)) { - } - - name = path_last(kernel); -- if (strlen(name) >= PATH_MAX) { -+ if (strlen(name) >= BOOT_PATH_MAX) { - fprintf(stderr, "executable name too long: %s\n", name); - S_abnormal_exit(); - } - - #ifdef WIN32 - { /* strip off trailing .exe, if any */ -- static char buf[PATH_MAX]; -+ static char buf[BOOT_PATH_MAX]; - iptr n; - - n = strlen(name) - 4; -diff --git a/racket/src/ChezScheme/c/version.h b/racket/src/ChezScheme/c/version.h -index a79d12621b..61751a9fad 100644 ---- a/racket/src/ChezScheme/c/version.h -+++ b/racket/src/ChezScheme/c/version.h -@@ -80,7 +80,7 @@ FORCEINLINE void store_unaligned_uptr(uptr *addr, uptr val) { - /*****************************************/ - /* Operating systems */ - --#if defined(__linux__) -+#if defined(__linux__) || defined(__GNU__) /* Hurd */ - #define NOBLOCK O_NONBLOCK - #define LOAD_SHARED_OBJECT - #define USE_MMAP -@@ -91,7 +91,10 @@ FORCEINLINE void store_unaligned_uptr(uptr *addr, uptr val) { - #define GETPAGESIZE() getpagesize() - typedef char *memcpy_t; - #define MAKE_NAN(x) { x = 0.0; x = x / x; } --#define GETWD(x) getcwd((x),PATH_MAX) -+#ifndef __GNU__ /* Hurd: no PATH_MAX */ -+/* n.b. don't test PATH_MAX directly: we have not yet included <limits.h> */ -+# define GETWD(x) getcwd((x),PATH_MAX) -+#endif - typedef int tputsputcchar; - #ifndef __ANDROID__ - # define LOCKF -diff --git a/racket/src/ChezScheme/configure b/racket/src/ChezScheme/configure -index f64b639c3a..efdb6029cb 100755 ---- a/racket/src/ChezScheme/configure -+++ b/racket/src/ChezScheme/configure -@@ -102,6 +102,11 @@ case "${CONFIG_UNAME}" in - installprefix=/usr - installmansuffix=share/man - ;; -+ GNU) -+ unixsuffix=gnu # the Hurd -+ installprefix=/usr -+ installmansuffix=share/man -+ ;; - QNX) - if uname -a | egrep 'x86' > /dev/null 2>&1 ; then - m32=i3qnx -@@ -591,7 +596,7 @@ fi - - # Infer flags needed for threads: - case "${flagsm}" in -- *le|*fb|*ob|*nb) -+ *le|*gnu|*fb|*ob|*nb) - threadFlags="-D_REENTRANT -pthread" - threadLibs="-lpthread" - ;; -@@ -627,7 +632,7 @@ if [ "$cflagsset" = "no" ] ; then - a6*) - CFLAGS="-m64 ${optFlags}" - ;; -- i3le) -+ i3le) # intentionally not including i3gnu, which may not support sse2 - CFLAGS="-m32 -msse2 -mfpmath=sse ${optFlags}" - ;; - i3nt) -@@ -688,7 +693,7 @@ fi - # Add automatic linking flags, unless suppressed by --disable-auto-flags - if [ "$addflags" = "yes" ] ; then - case "${flagsm}" in -- *le) -+ *le|*gnu) - LDFLAGS="${LDFLAGS} -rdynamic" - ;; - *fb|*nb) -@@ -702,7 +707,7 @@ if [ "$addflags" = "yes" ] ; then - esac - - case "${flagsm}" in -- *le) -+ *le|*gnu) - LIBS="${LIBS} -lm -ldl ${ncursesLib} -lrt" - ;; - *fb|*ob) -@@ -749,7 +754,7 @@ exeSuffix= - - # compile flags for c/Mf-unix and mats/Mf-unix - case "${flagsmuni}" in -- *le) -+ *le|*gnu) - mdcflags="-fPIC -shared" - ;; - *fb|*ob) -@@ -781,7 +786,7 @@ case "${flagsmuni}" in - i3le) - mdldflags="-melf_i386" - ;; -- *le) -+ *le|*gnu) - ;; - i3nb) - mdldflags="-m elf_i386" -diff --git a/racket/src/ChezScheme/s/cmacros.ss b/racket/src/ChezScheme/s/cmacros.ss -index ff2b09217b..2e79a4d8de 100644 ---- a/racket/src/ChezScheme/s/cmacros.ss -+++ b/racket/src/ChezScheme/s/cmacros.ss -@@ -385,6 +385,7 @@ - i3fb ti3fb - i3ob ti3ob - i3osx ti3osx -+ i3gnu ti3gnu - a6le ta6le - a6osx ta6osx - a6ob ta6ob -diff --git a/racket/src/cs/c/configure b/racket/src/cs/c/configure -index 454d79e11a..dab545c0b4 100755 ---- a/racket/src/cs/c/configure -+++ b/racket/src/cs/c/configure -@@ -4449,8 +4449,15 @@ case "$host_os" in - ;; - irix*) - ;; -- linux*) -- MACH_OS=le -+ linux*|gnu*) -+ case "$host_os" in -+ *linux*) -+ MACH_OS=le -+ ;; -+ *) -+ MACH_OS=gnu # Hurd -+ ;; -+ esac - case "$host_os" in - *linux-android*) - ;; -@@ -4730,6 +4737,9 @@ if test "${build_os}_${build_cpu}" != "${host_os}_${host_cpu}" ; then - linux*) - BUILD_OS=le - ;; -+ gnu*) # Hurd: must come after linux* -+ BUILD_OS=gnu -+ ;; - *mingw*) - BUILD_OS=nt - ;; -diff --git a/racket/src/cs/c/configure.ac b/racket/src/cs/c/configure.ac -index 5bce979c92..43e7307b1b 100644 ---- a/racket/src/cs/c/configure.ac -+++ b/racket/src/cs/c/configure.ac -@@ -272,8 +272,15 @@ case "$host_os" in - ;; - irix*) - ;; -- linux*) -- MACH_OS=le -+ linux*|gnu*) -+ case "$host_os" in -+ linux*) -+ MACH_OS=le -+ ;; -+ *) -+ MACH_OS=gnu # Hurd -+ ;; -+ esac - case "$host_os" in - *linux-android*) - ;; -@@ -466,6 +473,9 @@ if test "${build_os}_${build_cpu}" != "${host_os}_${host_cpu}" ; then - linux*) - BUILD_OS=le - ;; -+ gnu*) # Hurd - must come after linux* -+ BUILD_OS=gnu -+ ;; - *mingw*) - BUILD_OS=nt - ;; -diff --git a/racket/src/cs/rumble/system.ss b/racket/src/cs/rumble/system.ss -index 2319cbe7a5..773eb79cf3 100644 ---- a/racket/src/cs/rumble/system.ss -+++ b/racket/src/cs/rumble/system.ss -@@ -48,6 +48,8 @@ - arm32le tarm32le arm64le tarm64le - ppc32le tppc32le) - 'linux] -+ [(i3gnu ti3gnu) -+ 'gnu-hurd] - [(a6fb ta6fb i3fb ti3fb - arm32fb tarm32fb arm64fb tarm64fb - ppc32fb tppc32fb) -@@ -85,6 +87,7 @@ - i3nb ti3nb - i3fb ti3fb - i3s2 ti3s2 -+ i3gnu ti3gnu - i3qnx) - 'i386] - [(arm32le tarm32le --- -2.32.0 - - -From 8653294b771c741d320aba31e692b4f0ed0c702f Mon Sep 17 00:00:00 2001 -From: Philip McGrath <philip@philipmcgrath.com> -Date: Thu, 4 Aug 2022 20:18:09 -0400 -Subject: [PATCH 2/3] BC: Fix build on GNU/Hurd - -(cherry picked from commit 5c05496afd6159c2f9cd52e7f23389fdc6b55f43) ---- - racket/src/bc/configure | 2 +- - racket/src/bc/configure.ac | 2 +- - racket/src/bc/sconfig.h | 14 +++++++++----- - 3 files changed, 11 insertions(+), 7 deletions(-) - -diff --git a/racket/src/bc/configure b/racket/src/bc/configure -index 4ddb607b37..4ee346014d 100755 ---- a/racket/src/bc/configure -+++ b/racket/src/bc/configure -@@ -5018,7 +5018,7 @@ case "$host_os" in - X_PRE_LIBS="" - fi - ;; -- linux*) -+ linux*,gnu*) - LIBS="$LIBS -ldl -lm -lrt -rdynamic" - DYN_CFLAGS="-fPIC" - curses_portable_link="/usr/lib/${host_cpu}-${host_os}/libncurses.a /usr/lib/${host_cpu}-${host_os}/libtermcap.a" -diff --git a/racket/src/bc/configure.ac b/racket/src/bc/configure.ac -index deef8f3077..866851236e 100644 ---- a/racket/src/bc/configure.ac -+++ b/racket/src/bc/configure.ac -@@ -557,7 +557,7 @@ case "$host_os" in - X_PRE_LIBS="" - fi - ;; -- linux*) -+ linux*,gnu*) - LIBS="$LIBS -ldl -lm -lrt -rdynamic" - DYN_CFLAGS="-fPIC" - curses_portable_link="/usr/lib/${host_cpu}-${host_os}/libncurses.a /usr/lib/${host_cpu}-${host_os}/libtermcap.a" -diff --git a/racket/src/bc/sconfig.h b/racket/src/bc/sconfig.h -index 01ecb48158..8468942fcd 100644 ---- a/racket/src/bc/sconfig.h -+++ b/racket/src/bc/sconfig.h -@@ -79,12 +79,14 @@ - - #endif - -- /************** Linux with gcc ****************/ -+ /************** Linux (or Hurd) with gcc ****************/ - --#if defined(__linux__) -+#if defined(__linux__) || defined(__GNU__) - - # ifdef __ANDROID__ - # define SCHEME_OS "android" -+# elif defined(__GNU__) -+# define SCHEME_OS "gnu-hurd" - # else - # define SCHEME_OS "linux" - # endif -@@ -146,13 +148,15 @@ - # define USE_IEEE_FP_PREDS - # define USE_EXPLICT_FP_FORM_CHECK - --# define LINUX_FIND_STACK_BASE -+# define LINUX_FIND_STACK_BASE /* also ok for Hurd */ - - # define FLAGS_ALREADY_SET - - #if defined(__i386__) --# define MZ_USE_JIT_I386 --# define MZ_JIT_USE_MPROTECT -+# ifndef __GNU__ /* Hurd */ -+# define MZ_USE_JIT_I386 -+# define MZ_JIT_USE_MPROTECT -+# endif - # ifndef MZ_NO_UNWIND_SUPPORT - # define MZ_USE_DWARF_LIBUNWIND - # endif --- -2.32.0 - - -From 1b0cd08557f58506c96f0ddd855bd9051a45a2f1 Mon Sep 17 00:00:00 2001 -From: Philip McGrath <philip@philipmcgrath.com> -Date: Sat, 6 Aug 2022 22:48:40 -0400 -Subject: [PATCH 3/3] BC: repair configure script - -Hopefully this will fix the DrDr failures caused by 5c05496. - -Related to https://github.com/racket/racket/pull/4384 - -(cherry picked from commit c3dd01055ed7589a18136904510fe4db557d6e77) ---- - racket/src/bc/configure | 2 +- - racket/src/bc/configure.ac | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/racket/src/bc/configure b/racket/src/bc/configure -index 4ee346014d..b1c5175b84 100755 ---- a/racket/src/bc/configure -+++ b/racket/src/bc/configure -@@ -5018,7 +5018,7 @@ case "$host_os" in - X_PRE_LIBS="" - fi - ;; -- linux*,gnu*) -+ linux*|gnu*) - LIBS="$LIBS -ldl -lm -lrt -rdynamic" - DYN_CFLAGS="-fPIC" - curses_portable_link="/usr/lib/${host_cpu}-${host_os}/libncurses.a /usr/lib/${host_cpu}-${host_os}/libtermcap.a" -diff --git a/racket/src/bc/configure.ac b/racket/src/bc/configure.ac -index 866851236e..ecc3b0b579 100644 ---- a/racket/src/bc/configure.ac -+++ b/racket/src/bc/configure.ac -@@ -557,7 +557,7 @@ case "$host_os" in - X_PRE_LIBS="" - fi - ;; -- linux*,gnu*) -+ linux*|gnu*) - LIBS="$LIBS -ldl -lm -lrt -rdynamic" - DYN_CFLAGS="-fPIC" - curses_portable_link="/usr/lib/${host_cpu}-${host_os}/libncurses.a /usr/lib/${host_cpu}-${host_os}/libtermcap.a" --- -2.32.0 - diff --git a/gnu/packages/patches/racket-backport-8.6-zuo.patch b/gnu/packages/patches/racket-backport-8.6-zuo.patch deleted file mode 100644 index b86679b7ec..0000000000 --- a/gnu/packages/patches/racket-backport-8.6-zuo.patch +++ /dev/null @@ -1,481 +0,0 @@ -From 8761fc06b188b9ca2f4b7f2b7d1235075c44a321 Mon Sep 17 00:00:00 2001 -From: Matthew Flatt <mflatt@racket-lang.org> -Date: Sat, 23 Jul 2022 17:10:58 -0600 -Subject: [PATCH 1/4] Zuo: support cross compilation via `configure` and - `CC_FOR_BUILD` - -(cherry picked from commit 798a989ba6d1a30c491a3120b2c2f1570ecab911) ---- - racket/src/zuo/Makefile.in | 7 ++++++- - racket/src/zuo/README.md | 10 ++++++++++ - racket/src/zuo/configure | 15 +++++++++++++++ - racket/src/zuo/configure.ac | 11 +++++++++++ - 4 files changed, 42 insertions(+), 1 deletion(-) - -diff --git a/racket/src/zuo/Makefile.in b/racket/src/zuo/Makefile.in -index 5d16e145bf..747b584c5c 100644 ---- a/racket/src/zuo/Makefile.in -+++ b/racket/src/zuo/Makefile.in -@@ -17,6 +17,11 @@ CPPFLAGS = @CPPFLAGS@ - LDFLAGS = @LDFLAGS@ - LIBS = @LIBS@ - -+CC_FOR_BUILD = @CC_FOR_BUILD@ -+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ -+LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ -+LIBS_FOR_BUILD = @LIBS_FOR_BUILD@ -+ - EMBED_LIBS = @EMBED_LIBS@ - - .PHONY: zuos-to-run-and-install -@@ -24,7 +29,7 @@ zuos-to-run-and-install: zuo - ./zuo . zuos-to-run-and-install - - zuo: $(srcdir)/zuo.c -- $(CC) $(CPPFLAGS) $(CFLAGS) -DZUO_LIB_PATH='"'"$(srcdir)/lib"'"' -o zuo $(srcdir)/zuo.c $(LDFLAGS) $(LIBS) -+ $(CC_FOR_BUILD) $(FLAGS_FOR_BUILD) -DZUO_LIB_PATH='"'"$(srcdir)/lib"'"' -o zuo $(srcdir)/zuo.c $(LDFLAGS_FOR_BUILD) $(LIBS_FOR_BUILD) - - .PHONY: check - check: zuo -diff --git a/racket/src/zuo/README.md b/racket/src/zuo/README.md -index 17c88ee9ec..3aad504b7e 100644 ---- a/racket/src/zuo/README.md -+++ b/racket/src/zuo/README.md -@@ -84,6 +84,16 @@ A boot image is machine-independent, whether in a stand-alone file or - embedded in `.c` source. - - -+Cross Compiling -+--------------- -+ -+If you use `./configure --host=...` to cross compile, then you will -+also need to add something like `CC_FOR_BUILD=cc` as a `./configure` -+argument to specify the compiler for a `zuo` to use on the build -+machine. If necessary, you can also specify `CFLAGS_FOR_BUILD`, -+`LDFLAGS_FOR_BUILD`, and/or `LIBS_FOR_BUILD`. -+ -+ - Embedding Zuo in Another Application - ------------------------------------ - -diff --git a/racket/src/zuo/configure b/racket/src/zuo/configure -index 1fa34a3fe8..575ce07d96 100755 ---- a/racket/src/zuo/configure -+++ b/racket/src/zuo/configure -@@ -589,6 +589,10 @@ enable_embed="zuo" - ac_subst_vars='LTLIBOBJS - LIBOBJS - EMBED_LIBS -+LIBS_FOR_BUILD -+LDFLAGS_FOR_BUILD -+CFLAGS_FOR_BUILD -+CC_FOR_BUILD - OBJEXT - EXEEXT - ac_ct_CC -@@ -2584,6 +2588,17 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ - ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -+if test "${CC_FOR_BUILD}" = ""; then -+ CC_FOR_BUILD='$(CC) -O2' -+ CFLAGS_FOR_BUILD='$(CPPFLAGS) $(CFLAGS)' -+ LDFLAGS_FOR_BUILD='$(LDFLAGS)' -+ LIBS_FOR_BUILD='$(LIBS)' -+fi -+ -+ -+ -+ -+ - - { $as_echo "$as_me:${as_lineno-$LINENO}: zuo libraries to embed: \"${EMBED_LIBS}\"" >&5 - $as_echo "$as_me: zuo libraries to embed: \"${EMBED_LIBS}\"" >&6;} -diff --git a/racket/src/zuo/configure.ac b/racket/src/zuo/configure.ac -index 89b3c6391d..598ff79629 100644 ---- a/racket/src/zuo/configure.ac -+++ b/racket/src/zuo/configure.ac -@@ -25,6 +25,17 @@ AS_IF([test "x$enable_embed" = xno], - AC_PROG_MAKE_SET() - AC_PROG_CC - -+if test "${CC_FOR_BUILD}" = ""; then -+ CC_FOR_BUILD='$(CC) -O2' -+ CFLAGS_FOR_BUILD='$(CPPFLAGS) $(CFLAGS)' -+ LDFLAGS_FOR_BUILD='$(LDFLAGS)' -+ LIBS_FOR_BUILD='$(LIBS)' -+fi -+AC_SUBST(CC_FOR_BUILD) -+AC_SUBST(CFLAGS_FOR_BUILD) -+AC_SUBST(LDFLAGS_FOR_BUILD) -+AC_SUBST(LIBS_FOR_BUILD) -+ - AC_SUBST(EMBED_LIBS) - AC_MSG_NOTICE([zuo libraries to embed: "${EMBED_LIBS}"]) - --- -2.32.0 - - -From f65194ea41eb472fbdd45d5f6c13eabe5e681704 Mon Sep 17 00:00:00 2001 -From: Matthew Flatt <mflatt@racket-lang.org> -Date: Sat, 23 Jul 2022 17:47:03 -0600 -Subject: [PATCH 2/4] Zuo: sort hash keys - -Printing in a sorted order is helpful to make things more -deterministic independent of symbol inputs. Making `hash-keys` -produce a sorted list generalizes that determinism. - -(cherry picked from commit 4e7ffd3b365d01c5d0993c0b3fd24c9623962edf) ---- - racket/src/zuo/build.zuo | 5 ++- - racket/src/zuo/tests/hash.zuo | 8 ++-- - racket/src/zuo/zuo-doc/lang-zuo.scrbl | 18 +++++++-- - racket/src/zuo/zuo.c | 57 ++++++++++++++++++++++++++- - 4 files changed, 78 insertions(+), 10 deletions(-) - -diff --git a/racket/src/zuo/build.zuo b/racket/src/zuo/build.zuo -index c1b5e8ce66..129240120a 100644 ---- a/racket/src/zuo/build.zuo -+++ b/racket/src/zuo/build.zuo -@@ -47,7 +47,10 @@ - (target (at-dir (add-exe name)) - (lambda (path token) - (rule (list image_zuo.c -- (input-data-target 'config config) -+ (input-data-target 'config (cons -+ lib-path -+ (map (lambda (key) (hash-ref config key)) -+ '(CC CPPFLAGS CFLAGS LDFLAGS LIBS)))) - (quote-module-path)) - (lambda () - (define l (split-path path)) -diff --git a/racket/src/zuo/tests/hash.zuo b/racket/src/zuo/tests/hash.zuo -index a35741c730..0d3d7f3af6 100644 ---- a/racket/src/zuo/tests/hash.zuo -+++ b/racket/src/zuo/tests/hash.zuo -@@ -35,9 +35,7 @@ - - (check (hash-keys (hash)) '()) - (check (hash-keys (hash 'a 1)) '(a)) --(check (let ([keys (hash-keys (hash 'a 1 'b 2))]) -- (or (equal? keys '(a b)) -- (equal? keys '(b a))))) -+(check (hash-keys (hash 'a 1 'b 2)) '(a b)) ; always in order - (check (length (hash-keys (hash 'a 1 'b 2 'c 3))) 3) - (check (length (hash-keys (hash 'a 1 'b 2 'a 3))) 2) - (check-arg-fail (hash-keys 0) "not a hash table") -@@ -50,3 +48,7 @@ - (check (hash-keys-subset? (hash 'a 1 'b 2) (hash 'b 1)) #f) - (check-arg-fail (hash-keys-subset? 0 (hash)) "not a hash table") - (check-arg-fail (hash-keys-subset? (hash) 0) "not a hash table") -+ -+;; print sorts keys alphabetically: -+(check (~a (hash 'a 1 'b 2)) "#hash((a . 1) (b . 2))") -+(check (~a (hash 'b 2 'a 1)) "#hash((a . 1) (b . 2))") -diff --git a/racket/src/zuo/zuo-doc/lang-zuo.scrbl b/racket/src/zuo/zuo-doc/lang-zuo.scrbl -index 94641d041e..4605e47471 100644 ---- a/racket/src/zuo/zuo-doc/lang-zuo.scrbl -+++ b/racket/src/zuo/zuo-doc/lang-zuo.scrbl -@@ -538,10 +538,20 @@ support to convert the textual form back into a hash table value. - - Analogous to @realracket*[hash? hash hash-ref hash-set hash-remove - hash-keys hash-count hash-keys-subset?] from @racketmodname[racket]. --Besides being constrained to symbol keys, there is one additional --difference: the third argument to @racket[hash-ref], when supplied, --is always used as a value to return if a key is missing, as --opposed to a failure thunk.} -+ -+Besides being constrained to symbol keys, there are two additional -+differences: -+ -+@itemlist[ -+ -+ @item{the third argument to @racket[hash-ref], when supplied, is -+ always used as a value to return if a key is missing, as -+ opposed to a failure thunk; and} -+ -+ @item{the @racket[hash-keys] function returns interned keys sorted -+ alphabetically.} -+ -+]} - - - @section{Procedures} -diff --git a/racket/src/zuo/zuo.c b/racket/src/zuo/zuo.c -index 2957d478af..88d5747326 100644 ---- a/racket/src/zuo/zuo.c -+++ b/racket/src/zuo/zuo.c -@@ -1298,6 +1298,59 @@ static zuo_t *zuo_trie_keys(zuo_t *trie_in, zuo_t *accum) { - return accum; - } - -+/*======================================================================*/ -+/* symbol-list sorting */ -+/*======================================================================*/ -+ -+/* merge sort used to make hash printing deterministic */ -+static zuo_t *zuo_symbol_list_sort(zuo_t *l_in) { -+ zuo_t *l, *left, *right, *first, *last; -+ zuo_uint_t len = 0, i; -+ -+ for (l = l_in, len = 0; l != z.o_null; l = _zuo_cdr(l)) -+ len++; -+ -+ if (len < 2) -+ return l_in; -+ -+ left = z.o_null; -+ for (l = l_in, i = len >> 1; i > 0; l = _zuo_cdr(l), i--) -+ left = zuo_cons(_zuo_car(l), left); -+ right = l; -+ -+ left = zuo_symbol_list_sort(left); -+ right = zuo_symbol_list_sort(right); -+ -+ first = last = z.o_null; -+ while ((left != z.o_null) && (right != z.o_null)) { -+ zuo_t *p; -+ -+ if (strcmp(ZUO_STRING_PTR(((zuo_symbol_t *)_zuo_car(left))->str), -+ ZUO_STRING_PTR(((zuo_symbol_t *)_zuo_car(right))->str)) -+ < 1) { -+ p = zuo_cons(_zuo_car(left), z.o_null); -+ left = _zuo_cdr(left); -+ } else { -+ p = zuo_cons(_zuo_car(right), z.o_null); -+ right = _zuo_cdr(right); -+ } -+ -+ if (first == z.o_null) -+ first = p; -+ else -+ ((zuo_pair_t *)last)->cdr = p; -+ last = p; -+ } -+ -+ ((zuo_pair_t *)last)->cdr = ((left != z.o_null) ? left : right); -+ -+ return first; -+} -+ -+static zuo_t *zuo_trie_sorted_keys(zuo_t *trie_in, zuo_t *accum) { -+ return zuo_symbol_list_sort(zuo_trie_keys(trie_in, accum)); -+} -+ - /*======================================================================*/ - /* terminal support */ - /*======================================================================*/ -@@ -1571,7 +1624,7 @@ static void zuo_out(zuo_out_t *out, zuo_t *obj, zuo_print_mode_t mode) { - out_string(out, "opaque"); - out_string(out, ">"); - } else if (obj->tag == zuo_trie_node_tag) { -- zuo_t *keys = zuo_trie_keys(obj, z.o_null); -+ zuo_t *keys = zuo_trie_sorted_keys(obj, z.o_null); - if (mode == zuo_print_mode) { - out_string(out, "(hash"); - if (keys != z.o_null) -@@ -2587,7 +2640,7 @@ static zuo_t *zuo_hash_remove(zuo_t *ht, zuo_t *sym) { - - static zuo_t *zuo_hash_keys(zuo_t *ht) { - check_hash("hash-keys", ht); -- return zuo_trie_keys(ht, z.o_null); -+ return zuo_trie_sorted_keys(ht, z.o_null); - } - - static zuo_t *zuo_hash_keys_subset_p(zuo_t *ht, zuo_t *ht2) { --- -2.32.0 - - -From f2eecaa1dd875479d2cf51566223b3d0d7b9f738 Mon Sep 17 00:00:00 2001 -From: Matthew Flatt <mflatt@racket-lang.org> -Date: Sat, 23 Jul 2022 18:06:41 -0600 -Subject: [PATCH 3/4] Zuo: check for nul characters in `string->symbol` - -(cherry picked from commit e20022ccfad40d0ba2e77aa75bc4f775018c781f) ---- - racket/src/zuo/tests/symbol.zuo | 3 +++ - racket/src/zuo/zuo-doc/lang-zuo.scrbl | 4 ++- - racket/src/zuo/zuo.c | 37 +++++++++++++++++---------- - 3 files changed, 29 insertions(+), 15 deletions(-) - -diff --git a/racket/src/zuo/tests/symbol.zuo b/racket/src/zuo/tests/symbol.zuo -index 7775aeeb04..5600a89755 100644 ---- a/racket/src/zuo/tests/symbol.zuo -+++ b/racket/src/zuo/tests/symbol.zuo -@@ -19,3 +19,6 @@ - (check (not (equal? 'apple (string->uninterned-symbol "apple")))) - (check-arg-fail (string->symbol 'apple) not-string) - (check-arg-fail (string->uninterned-symbol 'apple) not-string) -+ -+(check-arg-fail (string->symbol "apple\0spice") "without a nul character") -+(check (symbol? (string->uninterned-symbol "apple\0spice"))) -diff --git a/racket/src/zuo/zuo-doc/lang-zuo.scrbl b/racket/src/zuo/zuo-doc/lang-zuo.scrbl -index 4605e47471..07dd5815b0 100644 ---- a/racket/src/zuo/zuo-doc/lang-zuo.scrbl -+++ b/racket/src/zuo/zuo-doc/lang-zuo.scrbl -@@ -500,7 +500,9 @@ back into Zuo. - )]{ - - Analogous to @realracket*[symbol? symbol->string string->symbol --string->uninterned-symbol] from @racketmodname[racket].} -+string->uninterned-symbol] from @racketmodname[racket], but -+@racket[string->symbol] accepts only strings that do not contain the -+null character.} - - - @section{Hash Tables (Persistent Maps)} -diff --git a/racket/src/zuo/zuo.c b/racket/src/zuo/zuo.c -index 88d5747326..17f161826d 100644 ---- a/racket/src/zuo/zuo.c -+++ b/racket/src/zuo/zuo.c -@@ -1323,7 +1323,7 @@ static zuo_t *zuo_symbol_list_sort(zuo_t *l_in) { - - first = last = z.o_null; - while ((left != z.o_null) && (right != z.o_null)) { -- zuo_t *p; -+ zuo_t *p, *s_left, *s_right; - - if (strcmp(ZUO_STRING_PTR(((zuo_symbol_t *)_zuo_car(left))->str), - ZUO_STRING_PTR(((zuo_symbol_t *)_zuo_car(right))->str)) -@@ -2573,8 +2573,28 @@ static zuo_t *zuo_substring(zuo_t *obj, zuo_t *start_i, zuo_t *end_i) { - return zuo_sized_string((const char *)&((zuo_string_t *)obj)->s[s_idx], e_idx - s_idx); - } - -+static int zuo_is_string_without_nul(zuo_t *obj) { -+ zuo_int_t i; -+ -+ if ((obj->tag != zuo_string_tag) -+ || ZUO_STRING_LEN(obj) == 0) -+ return 0; -+ -+ for (i = ZUO_STRING_LEN(obj); i--; ) { -+ if (((zuo_string_t *)obj)->s[i] == 0) -+ return 0; -+ } -+ -+ return 1; -+} -+ - static zuo_t *zuo_string_to_symbol(zuo_t *obj) { -- check_string("string->symbol", obj); -+ if (!zuo_is_string_without_nul(obj)) { -+ const char *who = "string->symbol"; -+ check_string(who, obj); -+ zuo_fail_arg(who, "string without a nul character", obj); -+ } -+ - return zuo_symbol_from_string(ZUO_STRING_PTR(obj), obj); - } - -@@ -3577,18 +3597,7 @@ static void *zuo_envvars_block(const char *who, zuo_t *envvars) - #endif - - static int zuo_is_path_string(zuo_t *obj) { -- zuo_int_t i; -- -- if ((obj->tag != zuo_string_tag) -- || ZUO_STRING_LEN(obj) == 0) -- return 0; -- -- for (i = ZUO_STRING_LEN(obj); i--; ) { -- if (((zuo_string_t *)obj)->s[i] == 0) -- return 0; -- } -- -- return 1; -+ return zuo_is_string_without_nul(obj); - } - - static zuo_t *zuo_path_string_p(zuo_t *obj) { --- -2.32.0 - - -From de6618cb3819d25580e3cd400ea09c8cf4f673a9 Mon Sep 17 00:00:00 2001 -From: Matthew Flatt <mflatt@racket-lang.org> -Date: Sat, 23 Jul 2022 19:50:46 -0600 -Subject: [PATCH 4/4] Zuo: CPPFLAGS_FOR_BUILD, too - -(cherry picked from commit cf82706c4b298f654a04c4bc8d98dff39b62a2ac) ---- - racket/src/zuo/Makefile.in | 3 ++- - racket/src/zuo/configure | 5 ++++- - racket/src/zuo/configure.ac | 4 +++- - 3 files changed, 9 insertions(+), 3 deletions(-) - -diff --git a/racket/src/zuo/Makefile.in b/racket/src/zuo/Makefile.in -index 747b584c5c..0376c038a8 100644 ---- a/racket/src/zuo/Makefile.in -+++ b/racket/src/zuo/Makefile.in -@@ -19,6 +19,7 @@ LIBS = @LIBS@ - - CC_FOR_BUILD = @CC_FOR_BUILD@ - CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ -+CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ - LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ - LIBS_FOR_BUILD = @LIBS_FOR_BUILD@ - -@@ -29,7 +30,7 @@ zuos-to-run-and-install: zuo - ./zuo . zuos-to-run-and-install - - zuo: $(srcdir)/zuo.c -- $(CC_FOR_BUILD) $(FLAGS_FOR_BUILD) -DZUO_LIB_PATH='"'"$(srcdir)/lib"'"' -o zuo $(srcdir)/zuo.c $(LDFLAGS_FOR_BUILD) $(LIBS_FOR_BUILD) -+ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) -DZUO_LIB_PATH='"'"$(srcdir)/lib"'"' -o zuo $(srcdir)/zuo.c $(LDFLAGS_FOR_BUILD) $(LIBS_FOR_BUILD) - - .PHONY: check - check: zuo -diff --git a/racket/src/zuo/configure b/racket/src/zuo/configure -index 575ce07d96..7ac453e3bc 100755 ---- a/racket/src/zuo/configure -+++ b/racket/src/zuo/configure -@@ -591,6 +591,7 @@ LIBOBJS - EMBED_LIBS - LIBS_FOR_BUILD - LDFLAGS_FOR_BUILD -+CPPFLAGS_FOR_BUILD - CFLAGS_FOR_BUILD - CC_FOR_BUILD - OBJEXT -@@ -2590,7 +2591,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu - - if test "${CC_FOR_BUILD}" = ""; then - CC_FOR_BUILD='$(CC) -O2' -- CFLAGS_FOR_BUILD='$(CPPFLAGS) $(CFLAGS)' -+ CPPFLAGS_FOR_BUILD='$(CPPFLAGS)' -+ CFLAGS_FOR_BUILD='$(CFLAGS)' - LDFLAGS_FOR_BUILD='$(LDFLAGS)' - LIBS_FOR_BUILD='$(LIBS)' - fi -@@ -2600,6 +2602,7 @@ fi - - - -+ - { $as_echo "$as_me:${as_lineno-$LINENO}: zuo libraries to embed: \"${EMBED_LIBS}\"" >&5 - $as_echo "$as_me: zuo libraries to embed: \"${EMBED_LIBS}\"" >&6;} - -diff --git a/racket/src/zuo/configure.ac b/racket/src/zuo/configure.ac -index 598ff79629..051ea0beb5 100644 ---- a/racket/src/zuo/configure.ac -+++ b/racket/src/zuo/configure.ac -@@ -27,12 +27,14 @@ AC_PROG_CC - - if test "${CC_FOR_BUILD}" = ""; then - CC_FOR_BUILD='$(CC) -O2' -- CFLAGS_FOR_BUILD='$(CPPFLAGS) $(CFLAGS)' -+ CPPFLAGS_FOR_BUILD='$(CPPFLAGS)' -+ CFLAGS_FOR_BUILD='$(CFLAGS)' - LDFLAGS_FOR_BUILD='$(LDFLAGS)' - LIBS_FOR_BUILD='$(LIBS)' - fi - AC_SUBST(CC_FOR_BUILD) - AC_SUBST(CFLAGS_FOR_BUILD) -+AC_SUBST(CPPFLAGS_FOR_BUILD) - AC_SUBST(LDFLAGS_FOR_BUILD) - AC_SUBST(LIBS_FOR_BUILD) - --- -2.32.0 - diff --git a/gnu/packages/patches/racket-backport-8.7-pkg-strip.patch b/gnu/packages/patches/racket-backport-8.7-pkg-strip.patch new file mode 100644 index 0000000000..703b6e8e82 --- /dev/null +++ b/gnu/packages/patches/racket-backport-8.7-pkg-strip.patch @@ -0,0 +1,90 @@ +From 1b7e15c23baf1fda44b1d0752902ddea11419fc5 Mon Sep 17 00:00:00 2001 +From: Philip McGrath <philip@philipmcgrath.com> +Date: Fri, 7 Oct 2022 02:15:13 -0400 +Subject: [PATCH] pkg/strip: handle read-only input + +A package directory supplied to the functions from `pkg/strip` might +have had all of its write permission bits unset. Since `copy-file` +preserves the permissions of the source file, we may end up with a +read-only file that we want to overwrite (e.g. an `info.rkt` file). +Explicitly setting `user-write-bit` before writing avoids this problem. +Conservatively, we only set the permissions when actually needed, +and we restore the original permissions when we are done. + +(cherry picked from commit 8c647c8cc9b66112198fcf9bea27fc0e3737162f) +--- + racket/collects/pkg/strip.rkt | 35 +++++++++++++++++++++++++++++------ + 1 file changed, 29 insertions(+), 6 deletions(-) + +diff --git a/racket/collects/pkg/strip.rkt b/racket/collects/pkg/strip.rkt +index 0ff58cea02..5899dbc6e6 100644 +--- a/racket/collects/pkg/strip.rkt ++++ b/racket/collects/pkg/strip.rkt +@@ -306,9 +306,8 @@ + #t + new-mod*-subs)))) + (unless (eq? mod new-mod) +- (call-with-output-file* ++ (call-with-output-file/writable + new-p +- #:exists 'truncate/replace + (lambda (out) (write new-mod out))))) + + (define (fixup-local-redirect-reference p js-path #:user [user-js-path js-path]) +@@ -340,9 +339,8 @@ + (string->bytes/utf-8 user-js-path) + (subbytes s (+ delta end2)))] + [else s])))) +- (call-with-output-file* ++ (call-with-output-file/writable + p +- #:exists 'truncate/replace + (lambda (out) (write-bytes new-bstr out))))) + + ;; Used in binary[-lib] mode: +@@ -383,9 +381,8 @@ + (convert-mod info-lib defns)])) + (unless (equal? new-content content) + ;; write updated: +- (call-with-output-file* ++ (call-with-output-file/writable + new-p +- #:exists 'truncate + (lambda (out) + (write new-content out) + (newline out))) +@@ -503,3 +500,29 @@ + which + dir) + (current-continuation-marks))))) ++ ++(define (call-with-output-file/writable pth proc) ++ ;; In case `pth` was copied from a file without the user-write-bit set, ++ ;; explicitly make it writable while we overwrite it. ++ (define (run) ++ (call-with-output-file* pth ++ #:exists 'truncate/replace ++ proc)) ++ (cond ++ [(file-exists? pth) ++ (define old-mode ++ (file-or-directory-permissions pth 'bits)) ++ (define new-mode ++ (if (eq? (system-type) 'windows) ++ (bitwise-ior old-mode user-write-bit group-write-bit other-write-bit) ++ (bitwise-ior old-mode user-write-bit))) ++ (if (= old-mode new-mode) ++ (run) ++ (dynamic-wind ++ (λ () ++ (file-or-directory-permissions pth new-mode)) ++ run ++ (λ () ++ (file-or-directory-permissions pth old-mode))))] ++ [else ++ (run)])) + +base-commit: 7e4f6e2362d4a08affbbae3c7ee4b98e325274c6 +-- +2.38.0 + diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm index 10f93a1362..20d293e998 100644 --- a/gnu/packages/racket.scm +++ b/gnu/packages/racket.scm @@ -191,7 +191,7 @@ (define-module (gnu packages racket) ;; ;; CODE: -(define %racket-version "8.6") ; Remember to update chez-scheme-for-racket! +(define %racket-version "8.7") ; Remember to update chez-scheme-for-racket! (define %zuo-version "1.0") ; defined in racket/src/zuo/zuo.c (define %racket-commit (string-append "v" %racket-version)) @@ -202,12 +202,9 @@ (define %racket-origin (url "https://github.com/racket/racket") (commit %racket-commit))) (sha256 - (base32 "1lw6h70dk8zqpl96zz0hmhn8vjcc0c7gw4prkfz2wid5bkq4mhg4")) + (base32 "0agwa1nrv8mizkqg9nffjli00djyx1r9n6y6b6ry7k13pb6i7xnj")) (file-name (git-file-name "racket" %racket-version)) - (patches (search-patches "racket-backport-8.6-cross-install.patch" - "racket-backport-8.6-docindex-write.patch" - "racket-backport-8.6-hurd.patch" - "racket-backport-8.6-zuo.patch" + (patches (search-patches "racket-backport-8.7-pkg-strip.patch" "racket-chez-scheme-bin-sh.patch" "racket-rktio-bin-sh.patch" "racket-zuo-bin-sh.patch")) @@ -689,6 +686,7 @@ (define-public racket ("net-lib" "pkgs/net-lib") ("racket-doc" "pkgs/racket-doc") ("racket-index" "pkgs/racket-index") + ("scheme-doc" "pkgs/scheme-doc") ("sandbox-lib" "pkgs/sandbox-lib") ("zo-lib" "pkgs/zo-lib"))) (simple-racket-origin @@ -698,7 +696,7 @@ (define-public racket "class-iop" (base32 "08z57q83cr7wnh6g8ah3hdhmsmf9zp1jfs7yvxv188l3hzvygy5l") '("class-iop-lib")) (simple-racket-origin - "compatibility" (base32 "0bfqwscjpyi325br5pa6g62g9c8lq18a80zp5g3d2qzn3n3mi6x0") + "compatibility" (base32 "0ydx9alrpqg03xcl7zm5qcpx017i554q9ramz69vpwlfy3zdqmdm") '("compatibility" "compatibility-doc" "compatibility-lib")) (simple-racket-origin "contract-profile" (base32 "1xm2z8g0dpv5d9h2sg680vx1a8ix9gbsdpxxb8qv1w7akp73paj3") @@ -710,19 +708,19 @@ (define-public racket "datalog" (base32 "0nf6cy4djpyhfvgpa6yn72apbz9s83gp0qg95pzjd0az4v6qwq1s") '(("datalog" "."))) (simple-racket-origin - "db" (base32 "0jzsbfcdm3xj0g8xxw3ky2swrhiqqsq2aqa3r08m641dc981dmjq") + "db" (base32 "0xx0k8yw2vb9b4vk2dwjfbpixnmriqsv7kpv3fvfxbwyg42y0db5") '("db" "db-doc" "db-lib")) (simple-racket-origin - "deinprogramm" (base32 "16ncs3ms3mmdavbk0mkhm2qi62vyyif9cch3sn1y64pij489x34v") + "deinprogramm" (base32 "1ngdjky4n1vy2b9jz1z4pnzl0vgvaqr3p0ff5sx82hs38qvvi5di") '("deinprogramm" "deinprogramm-signature")) (simple-racket-origin "distributed-places" (base32 "1dajpkj9balqcpv6cdk9hwjz592h1vq8rrx5vncariiac4vbdpa0") '("distributed-places" "distributed-places-doc" "distributed-places-lib")) (simple-racket-origin - "draw" (base32 "00rq5y4ba6z1d6jh76kl8rwpxrlqqp81a875zyhk3k81i42635sm") + "draw" (base32 "0pxpay04rylq3hqfpdrha2pw78hhwsjzq8w4f156gipin74lb7a2") '("draw" "draw-doc" "draw-lib")) (simple-racket-origin - "drracket" (base32 "05d7wssi0ry13alb5hl3llpsg30dd0jhyfv5nb1nmg189fn42q62") + "drracket" (base32 "12khv954v7xpi3wv50pp5l28ww1382apbvzvs67d6ik10nn3d0y4") '("drracket" "drracket-plugin-lib" "drracket-tool" @@ -736,10 +734,10 @@ (define-public racket "eli-tester" (base32 "0icx6wn14gjm8kdmq1jppqgq87sxkras4qb5xmdr6wigxafhjqyk") '(("eli-tester" "."))) (simple-racket-origin - "eopl" (base32 "1fmiixj6rxsgzwvgva8lvrvv0gl49v2405mp3s0i7ipis5c4n27s") + "eopl" (base32 "1n8lzvhggp6bp2hg4n51zg8f4ya10isb92pfzngss2ch7299zfj2") '(("eopl" "."))) (simple-racket-origin - "errortrace" (base32 "0r5630bb2d6hk0fbi95fmyfja54nnwdfcj2zjba124pp6xkjyavx") + "errortrace" (base32 "0l9k2rx6z4jkid7kxhbs763s66pxbzvfrgxajykbrmqkv77lhb3w") '("errortrace" "errortrace-doc" "errortrace-lib")) (simple-racket-origin "expeditor" (base32 "0mjfwb4wzwsg5xj3k6cmik0va432n56rp5h7rxx1c2yy3prh1j7q") @@ -756,13 +754,13 @@ (define-public racket "games" (base32 "0kpn3izlx1ccd0pj0dnvmnrhny51b85xy418a7psj70lz8j8415d") '(("games" "."))) (simple-racket-origin - "gui" (base32 "18pcnx3wi8f32i2frm8bn9pi08n4y3c5jgqs4gy21w6f84dv401w") + "gui" (base32 "027imnxwm0663yn9mbkq8sjm1qr1pw7zf4ra168k746hp446ah58") '("gui" "gui-doc" "gui-lib" "tex-table")) (simple-racket-origin "gui-pkg-manager" (base32 "1ji9448d723nklqvycwdswj0ni28sabrncag14f9mx47did5myb5") '("gui-pkg-manager-lib")) (simple-racket-origin - "htdp" (base32 "173xy6ks55npvwn6cykjs41s9qfb70hc2gfjiqvw91hdsbjykwir") + "htdp" (base32 "0pf2kf63xj9s0n44vaxlmnd1bdb1a44gcp807a3b3cmlc1lkb36z") '("htdp" "htdp-doc" "htdp-lib")) (simple-racket-origin "html" (base32 "18n1jnjgzfknc8nv8dppi85nb8q08gqdwkg6hfjk08x0p00anx2x") @@ -795,7 +793,7 @@ (define-public racket "mzcom" (base32 "0rc9pfj7gwm5azghqvcibz6si1x5s2v8mr2yngk7ssq9gzfbi6a4") '(("mzcom" "."))) (simple-racket-origin - "mzscheme" (base32 "192c52zi726h5wjamxrhivjw2waq1im0zpyxhbrkrxknm8x84bs9") + "mzscheme" (base32 "04kyrhznq46mklacf7pms4fv47zsimqqk3948r3w2ym9n04fhjsx") '("mzscheme" "mzscheme-doc" "mzscheme-lib")) (racket-packages-origin "net-cookies" (origin @@ -824,13 +822,13 @@ (define-public racket "option-contract" (base32 "07cncg9pi15cm19k7rzv54vx83wq7y42i2m6bgzaqja1h8vnj2ww") '("option-contract" "option-contract-doc" "option-contract-lib")) (simple-racket-origin - "parser-tools" (base32 "04ycihliikh0c47ivp09gayxiql9d9wpl216czic19cj6f7rmcnj") + "parser-tools" (base32 "11m1x8q0cqb4b082423iv19s86xgkshv29cb4hp8yx84lb0vpwx3") '("parser-tools" "parser-tools-doc" "parser-tools-lib")) (simple-racket-origin "pconvert" (base32 "00czi0p399mmyrvxyrs5kniizpkqfxyz2ncxqi2jy79a7wk79pb1") '("pconvert-lib")) (simple-racket-origin - "pict" (base32 "1n0v7kynkiin1v8igs9m8k8vfwjn5cswanhq2imp1pxzjvdyq6sx") + "pict" (base32 "063a1lc6v1i8ywxcskkvvfxdvlx0qhr0l4l3dkibmnli47mdhv7g") '("pict" "pict-doc" "pict-lib")) (simple-racket-origin "pict-snip" (base32 "081nwiy4a0n4f7xws16hqbhf0j3kz5alizndi3nnyr3chm4kng6x") @@ -839,13 +837,13 @@ (define-public racket "picturing-programs" (base32 "1g6xr39hx1j03gb3d4dljm3v91xcj2gfpq3dgy5xvplzr6cmmxgr") '(("picturing-programs" "."))) (simple-racket-origin - "plai" (base32 "0i983sh0r0zm2ng4j44m5aw9669kh5fhp91bzpc9jm280rfcqvyl") + "plai" (base32 "18kz31pj4lanlf9mn2yc0q9sxis264wb4f9v85ga23wd7g1hrzbq") '("plai" "plai-doc" "plai-lib")) (simple-racket-origin "planet" (base32 "0r2yqrzrmdjjyr14k6hhlzc5kzrcx3583m1s02mhrcmpfw0s85w9") '("planet" "planet-doc" "planet-lib")) (simple-racket-origin - "plot" (base32 "04871pspbm0q3bz5896sa3jw2rp9i6jf0b5aivrxfp56vxxd2ybb") + "plot" (base32 "1129k78vyqg2cbc87r9ak95zpa1ghh26fmz3wr8gm556j5j0k6y5") '("plot" "plot-compat" "plot-doc" "plot-gui-lib" "plot-lib")) (simple-racket-origin "preprocessor" (base32 "1p5aid58ifnjy4xl0ysh85cq39k25661v975jrpk182z3k5621mg") @@ -867,7 +865,7 @@ (define-public racket "r5rs" (base32 "1g3cysj7z88r38vkzvi8g2fb2hn4yg1fdhy5smxw303jxgl3inp6") '("r5rs" "r5rs-doc" "r5rs-lib")) (simple-racket-origin - "r6rs" (base32 "0b1ymzdp10r0flw2acbidjsh5ma1pm5hy54jss37sxf89z3xbvm4") + "r6rs" (base32 "1mgcxd88s67w47a2z1i6snz8qhbngjbmr6rs4pchpnrfap96ssgl") '("r6rs" "r6rs-doc" "r6rs-lib")) (racket-packages-origin "racket-cheat" (origin @@ -900,7 +898,7 @@ (define-public racket "realm" (base32 "0rlvwyd6rpyl0zda4a5p8dp346fvqzc8555dgfnrhliymkxb6x4g") '(("realm" "."))) (simple-racket-origin - "redex" (base32 "06dhyqmin0qdm6b6sdvgzpy3pa4svlw42ld9k2h1dxcr852czil7") + "redex" (base32 "1v5p65y3hnp1mfvy0jl4lhmaw9s3qzzfcfh3fhihhqxsybbqp3q3") '("redex" "redex-benchmark" "redex-doc" @@ -915,7 +913,7 @@ (define-public racket "scheme-lib" (base32 "0pcf0y8rp4qyjhaz5ww5sr5diq0wpcdfrrnask7zapyklzx1jx8x") '(("scheme-lib" "."))) (simple-racket-origin - "scribble" (base32 "0a11kvcnzp04mp4xxq68rkl09jv00hv81k2nmwkmwpfx9b2acvd3") + "scribble" (base32 "1n0ywdham53h2ibkhc0cnrhhaxfkl7ax0bx5sdfpnyh2yrabxwqf") '("scribble" "scribble-doc" "scribble-html-lib" @@ -941,13 +939,13 @@ (define-public racket "slatex" (base32 "0pkm2isbbdk63slrbsxcql7rr0wdrw5kapw1xq4ps5k8dhlzv8x0") '(("slatex" "."))) (simple-racket-origin - "slideshow" (base32 "1znv1i2d0610hhy71q932xy7wka00q3q50in1xfnk8ibg7nzkagm") + "slideshow" (base32 "0s6w4iq7m263jwx01c5czkk1a2950hdpxn5yirxvnr26qpjpfyzr") '("slideshow" "slideshow-doc" "slideshow-exe" "slideshow-lib" "slideshow-plugin")) (simple-racket-origin - "snip" (base32 "01r9wc5xr3q3n4yyif6j0a37rgdzmpslxn05k13ksik73b3wj6hj") + "snip" (base32 "19n2i1m2nysrbv38jxk32abymdbhcxdcrrjsg4ppfbng8niygc8x") '("snip" "snip-lib")) (simple-racket-origin - "typed-racket" (base32 "03wsz647fi58brbg33fw1xavp100gzfvngdy8bk7bdc0jfg8a18l") + "typed-racket" (base32 "0yh9vcg1bjamf6nq3hqxwjg07kjkxyqhvymv3r64j1n4hiiwz6iv") '("source-syntax" "typed-racket" "typed-racket-compatibility" @@ -955,10 +953,10 @@ (define-public racket "typed-racket-lib" "typed-racket-more")) (simple-racket-origin - "srfi" (base32 "0aqbcdv2dfc2xnk0h6zfi56p7bpwqji8s88qds3d03hhh9k28gvn") + "srfi" (base32 "13xvfzr5546m3a4kksyawzcl93nrklasr1slfa5ar3p77h962la4") '("srfi" "srfi-doc" "srfi-lib" "srfi-lite-lib")) (simple-racket-origin - "string-constants" (base32 "1kg3vxq2hcd0vl76brgpzdwbrb65a4nrrkc6hj4az5lfbbdvqz47") + "string-constants" (base32 "174q3ihcp8s52mmlk7z0sipjksiac432pfkm0inlwi92s6p7dlb3") '("string-constants" "string-constants-doc" "string-constants-lib")) (simple-racket-origin "swindle" (base32 "03n9ymjhrw45h7hxkw4nq8nidnvs9mfzb4228s2cjfaqbgqxvsyb") -- 2.38.0 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH 1/2] gnu: racket: Update to 8.7. 2022-11-16 21:39 ` [bug#59322] [PATCH 1/2] " Philip McGrath @ 2022-11-17 7:30 ` Liliana Marie Prikler 2022-11-18 0:45 ` [bug#59322] [PATCH v2 0/4] " Philip McGrath 1 sibling, 0 replies; 20+ messages in thread From: Liliana Marie Prikler @ 2022-11-17 7:30 UTC (permalink / raw) To: Philip McGrath, 59322 Am Mittwoch, dem 16.11.2022 um 16:39 -0500 schrieb Philip McGrath: > Also, update 'chez-scheme-for-racket' to 9.5.9.8. > > * gnu/packages/patches/racket-backport-8.6-cross-install.patch, > gnu/packages/patches/racket-backport-8.6-docindex-write.patch, > gnu/packages/patches/racket-backport-8.6-hurd.patch, > gnu/packages/patches/racket-backport-8.6-zuo.patch: Remove patches. Okay. > * gnu/packages/patches/racket-backport-8.7-pkg-strip.patch: New > patch. The patch LGTM. > * gnu/local.mk (dist_patch_DATA): Update accordingly. This update seems non-complete – where the other backports previously missing from our dist_patch_DATA? > * gnu/packages/racket.scm (%racket-origin)[patches]: Likewise. > (%racket-version): Update to 8.7. > (racket)[inputs]: Add 'scheme-doc' source package from '%racket- > origin'. > (racket)[inputs]<compatibility, db, deinprogramm, draw, drracket, > eopl, > errortrace, gui, htdp, mzscheme, parser-tools, pict, plai, plot, > r6rs, > redex, scribble, slideshow, snip, typed-racket, srfi, string- > constants>: Use proper ChangeLog formatting, i.e. <compatibility,... drracket> <eopl, errortrace, ...plot> ... Pardon the potential off-by-one error due to the added quote columns. > Update checksums. > * gnu/packages/chez.scm (target-chez-arch): Support riscv64-linux- > gnu. > (%chez-features-table): Likewise. > (chez-scheme-for-racket): Update to 9.5.9.8. > [arguments]: Enable tests. > [description]: Update. > (chez-scheme-for-racket-bootstrap-bootfiles)[arguments]: Update path > to > 'rktboot'. I suggest splitting this into two or three commits, where (1. Update Chez scheme) 2. Update Racket with all the patches and checksums. 3. Update feature tables. IIRC 1 and 2 share the definition of Racket origin, so it might not be possible to split them, but it is definitely not necessary to enable further arches that hitherto didn't work "in one go". Cheers ^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 0/4] gnu: racket: Update to 8.7. 2022-11-16 21:39 ` [bug#59322] [PATCH 1/2] " Philip McGrath 2022-11-17 7:30 ` Liliana Marie Prikler @ 2022-11-18 0:45 ` Philip McGrath 2022-11-18 0:45 ` [bug#59322] [PATCH v2 1/4] " Philip McGrath ` (3 more replies) 1 sibling, 4 replies; 20+ messages in thread From: Philip McGrath @ 2022-11-18 0:45 UTC (permalink / raw) To: 59322; +Cc: Liliana Marie Prikler, Philip McGrath, Liliana Marie Prikler Hi, Here's a v2 reflecting your comments. On Thursday, November 17, 2022 2:30:22 AM EST Liliana Marie Prikler wrote: > Am Mittwoch, dem 16.11.2022 um 16:39 -0500 schrieb Philip McGrath: > > * gnu/local.mk (dist_patch_DATA): Update accordingly. > > This update seems non-complete – where the other backports previously > missing from our dist_patch_DATA? > Yes: they were in dist_patch_DATA in the first series I sent at <https://issues.guix.gnu.org/57050>, but it looks like I must have missed them while rebasing and splitting the patches. At any rate, commit 9647296ce618fbc79026534c3fafb1a538612697 doesn't change gnu/local.mk at all, despite what its commit log says. I've explained briefly in the new commit message. > > * gnu/packages/racket.scm (%racket-origin)[patches]: Likewise. > > (%racket-version): Update to 8.7. > > (racket)[inputs]: Add 'scheme-doc' source package from '%racket- > > origin'. > > (racket)[inputs]<compatibility, db, deinprogramm, draw, drracket, > > eopl, > > errortrace, gui, htdp, mzscheme, parser-tools, pict, plai, plot, > > r6rs, > > redex, scribble, slideshow, snip, typed-racket, srfi, string- > > > constants>: > Use proper ChangeLog formatting, i.e. <compatibility,... drracket> > <eopl, errortrace, ...plot> > ... > Pardon the potential off-by-one error due to the added quote columns. > I hope I've now done this in the style you want. The style at linebreaks doesn't seem to have been entirely consistent among Guix commits. > > Update checksums. > > * gnu/packages/chez.scm (target-chez-arch): Support riscv64-linux- > > gnu. > > (%chez-features-table): Likewise. > > (chez-scheme-for-racket): Update to 9.5.9.8. > > [arguments]: Enable tests. > > [description]: Update. > > (chez-scheme-for-racket-bootstrap-bootfiles)[arguments]: Update path > > to > > 'rktboot'. > > I suggest splitting this into two or three commits, where > (1. Update Chez scheme) > 2. Update Racket with all the patches and checksums. > 3. Update feature tables. > > IIRC 1 and 2 share the definition of Racket origin, so it might not be > possible to split them, but it is definitely not necessary to enable > further arches that hitherto didn't work "in one go". I have split out the riscv64 support as you suggested. -Philip Philip McGrath (4): gnu: racket: Update to 8.7. gnu: chez-scheme-for-racket: Support riscv64. gnu: racket-vm-cs: Avoid duplicate work. etc: teams: Add chez.scm to Racket team's scope. etc/teams.scm.in | 3 +- gnu/local.mk | 2 +- gnu/packages/chez.scm | 21 +- .../racket-backport-8.6-cross-install.patch | 126 ---- .../racket-backport-8.6-docindex-write.patch | 36 -- .../patches/racket-backport-8.6-hurd.patch | 609 ------------------ .../patches/racket-backport-8.6-zuo.patch | 481 -------------- .../racket-backport-8.7-pkg-strip.patch | 90 +++ gnu/packages/racket.scm | 60 +- 9 files changed, 130 insertions(+), 1298 deletions(-) delete mode 100644 gnu/packages/patches/racket-backport-8.6-cross-install.patch delete mode 100644 gnu/packages/patches/racket-backport-8.6-docindex-write.patch delete mode 100644 gnu/packages/patches/racket-backport-8.6-hurd.patch delete mode 100644 gnu/packages/patches/racket-backport-8.6-zuo.patch create mode 100644 gnu/packages/patches/racket-backport-8.7-pkg-strip.patch base-commit: 83c9e00ffbd41776c003f6992e9d613a5434fff9 -- 2.38.0 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 1/4] gnu: racket: Update to 8.7. 2022-11-18 0:45 ` [bug#59322] [PATCH v2 0/4] " Philip McGrath @ 2022-11-18 0:45 ` Philip McGrath 2022-11-18 0:45 ` [bug#59322] [PATCH v2 2/4] gnu: chez-scheme-for-racket: Support riscv64 Philip McGrath ` (2 subsequent siblings) 3 siblings, 0 replies; 20+ messages in thread From: Philip McGrath @ 2022-11-18 0:45 UTC (permalink / raw) To: 59322; +Cc: Liliana Marie Prikler, Philip McGrath, Liliana Marie Prikler Also, update 'chez-scheme-for-racket' to 9.5.9.8. Note that racket-backport-8.6-cross-install.patch, racket-backport-8.6-docindex-write.patch, and racket-backport-8.6-hurd.patch were missing from dist_patch_DATA. * gnu/packages/patches/racket-backport-8.6-cross-install.patch, gnu/packages/patches/racket-backport-8.6-docindex-write.patch, gnu/packages/patches/racket-backport-8.6-hurd.patch, gnu/packages/patches/racket-backport-8.6-zuo.patch: Remove patches. * gnu/packages/patches/racket-backport-8.7-pkg-strip.patch: New patch. * gnu/local.mk (dist_patch_DATA): Update accordingly. * gnu/packages/racket.scm (%racket-origin)[patches]: Likewise. (%racket-version): Update to 8.7. (racket)[inputs]: Add 'scheme-doc' source package from '%racket-origin'. (racket)[inputs]<compatibility, db, deinprogramm, draw, drracket> <eopl, errortrace, gui, htdp, mzscheme, parser-tools, pict, plai, plot> <r6rs, redex, scribble, slideshow, snip, typed-racket, srfi> <string-constants>: Update checksums. * gnu/packages/chez.scm (chez-scheme-for-racket): Update to 9.5.9.8. [arguments]: Enable tests. [description]: Update. (chez-scheme-for-racket-bootstrap-bootfiles)[arguments]: Update path to 'rktboot'. --- gnu/local.mk | 2 +- gnu/packages/chez.scm | 18 +- .../racket-backport-8.6-cross-install.patch | 126 ---- .../racket-backport-8.6-docindex-write.patch | 36 -- .../patches/racket-backport-8.6-hurd.patch | 609 ------------------ .../patches/racket-backport-8.6-zuo.patch | 481 -------------- .../racket-backport-8.7-pkg-strip.patch | 90 +++ gnu/packages/racket.scm | 54 +- 8 files changed, 124 insertions(+), 1292 deletions(-) delete mode 100644 gnu/packages/patches/racket-backport-8.6-cross-install.patch delete mode 100644 gnu/packages/patches/racket-backport-8.6-docindex-write.patch delete mode 100644 gnu/packages/patches/racket-backport-8.6-hurd.patch delete mode 100644 gnu/packages/patches/racket-backport-8.6-zuo.patch create mode 100644 gnu/packages/patches/racket-backport-8.7-pkg-strip.patch diff --git a/gnu/local.mk b/gnu/local.mk index b154caaaaa..05bb8afebd 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1795,7 +1795,7 @@ dist_patch_DATA = \ %D%/packages/patches/ripperx-missing-file.patch \ %D%/packages/patches/rpcbind-CVE-2017-8779.patch \ %D%/packages/patches/rtags-separate-rct.patch \ - %D%/packages/patches/racket-backport-8.6-zuo.patch \ + %D%/packages/patches/racket-backport-8.7-pkg-strip.patch \ %D%/packages/patches/racket-chez-scheme-bin-sh.patch \ %D%/packages/patches/racket-rktio-bin-sh.patch \ %D%/packages/patches/racket-zuo-bin-sh.patch \ diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm index 5d152b3db5..7025a71b94 100644 --- a/gnu/packages/chez.scm +++ b/gnu/packages/chez.scm @@ -466,8 +466,8 @@ (define-public chez-scheme-for-racket (package (inherit chez-scheme) (name "chez-scheme-for-racket") - (version "9.5.9.2") - ;; The version should match `(scheme-fork-version-number)`. + (version "9.5.9.8") + ;; The version should match `scheme-version`. ;; 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. @@ -492,12 +492,6 @@ (define-public chez-scheme-for-racket (substitute-keyword-arguments (package-arguments chez-scheme) ((#:out-of-source? _ #f) #t) - ((#:tests? _ #t) - ;; FIXME: There have been some flaky test failures. Some have been - ;; fixed upstream post-release but have proven non-trivial to - ;; backport; at least one issue remains. Re-enable tests once - ;; https://github.com/racket/racket/issues/4359 is fixed. - #f) ((#:configure-flags cfg-flags #~'()) #~`("--disable-x11" "--threads" ;; ok to potentially duplicate @@ -590,7 +584,7 @@ (define-public chez-scheme-for-racket Main additions to Chez Scheme in the Racket variant: @itemize @bullet @item -AArch64 code generation +AArch64 and RV64G (RISC-V) code generation @item 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 @@ -603,7 +597,7 @@ (define-public chez-scheme-for-racket @item Type reconstruction during optimization (especially for safe code) @item -Continuation attachments +Continuation marks @item Parallel garbage collection, in-place garbage collection for old-generation objects (instead of always copying), and reachability-based memory @@ -611,6 +605,8 @@ (define-public chez-scheme-for-racket @item Ordered finalization, immobile (but collectable) objects, weak/ephemeron generic hash tables, and reference bytevectors +@item +Easier bootstrapping via old versions of Chez Scheme @end itemize") (license asl2.0))) @@ -695,7 +691,7 @@ (define-public chez-scheme-for-racket-bootstrap-bootfiles #~(invoke (search-input-file (or native-inputs inputs) "/opt/racket-vm/bin/racket") - "rktboot/main.rkt" + "../rktboot/main.rkt" #$@(if (racket-cs-native-supported-system?) #~() (let ((m (nix-system->pbarch-machine-type))) diff --git a/gnu/packages/patches/racket-backport-8.6-cross-install.patch b/gnu/packages/patches/racket-backport-8.6-cross-install.patch deleted file mode 100644 index 2c4d8924ed..0000000000 --- a/gnu/packages/patches/racket-backport-8.6-cross-install.patch +++ /dev/null @@ -1,126 +0,0 @@ -From fbe2094f56fb81c888076c781e90fb0abbc0cc07 Mon Sep 17 00:00:00 2001 -From: Matthew Flatt <mflatt@racket-lang.org> -Date: Sat, 30 Jul 2022 07:06:55 -0600 -Subject: [PATCH 1/2] CS makefiles: fix Unix-style install for cross - compilation - -Closes #4377 - -(cherry picked from commit 053be470e7c5454cdf48e934f3254d2d916bbbc5) ---- - racket/src/cs/c/build.zuo | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/racket/src/cs/c/build.zuo b/racket/src/cs/c/build.zuo -index 8d3950bb27..d8b74c509d 100644 ---- a/racket/src/cs/c/build.zuo -+++ b/racket/src/cs/c/build.zuo -@@ -1016,10 +1016,9 @@ - (define (setup) - (call-with-dest-racket - (lambda (bindir dest-racket) -- (define copytree-racket (and cross? (config-bootstrap-racket))) -+ (define copytree-racket (and cross? (hash-ref (config-bootstrap-racket) 'racket))) - (maybe-copytree config dest-racket copytree-racket at-dir) -- (run-raco-setup config dest-racket -- (and cross? (hash-ref (config-bootstrap-racket) 'racket)) -+ (run-raco-setup config dest-racket copytree-racket - ;; this can be redundant if it's also supplied via `SETUP_MACHINE_FLAGS`, - ;; but redundant should be ok: - (list "-MCR" (~a (at-dir "compiled") ":") --- -2.32.0 - - -From 85802f4d515e310e657928707800ad709a676e2a Mon Sep 17 00:00:00 2001 -From: Matthew Flatt <mflatt@racket-lang.org> -Date: Mon, 15 Aug 2022 10:37:01 +0800 -Subject: [PATCH 2/2] configure: adjust cross-build assumption for a pb build - -Don't assume a cross build for a pb target on a platform that's only -supported via pb. - -(cherry picked from commit 70e484e885637c495be5481983dae2207fdd67bb) - -(Edited to remove unrelated tweak to comments in -"racket/src/expander/expand/require+provide.rkt".) ---- - racket/src/cs/c/configure | 15 +++++++++++---- - racket/src/cs/c/configure.ac | 15 +++++++++++---- - 2 files changed, 22 insertions(+), 8 deletions(-) - -diff --git a/racket/src/cs/c/configure b/racket/src/cs/c/configure -index 454d79e11a..7e0fa5600d 100755 ---- a/racket/src/cs/c/configure -+++ b/racket/src/cs/c/configure -@@ -4679,6 +4679,11 @@ case "$MACH_HOST_CPU" in - ;; - esac - -+if test "${MACH}" = "" ; then -+ default_mach_was_empty=yes -+else -+ default_mach_was_empty=no -+fi - - if test "${enable_mach}" != "" ; then - MACH="${enable_mach}" -@@ -4701,13 +4706,15 @@ elif test "$MACH" = "" -o "$MACH_OS" = "" ; then - exit 1 - fi - --# For a pb build where Racket is supplied, force cross-build --# mode on the assumption that the host is not a pb build --# (because it should be created with default configure options) -+# For a pb build where Racket is supplied and MACH was not originally -+# empty, force cross-build mode on the assumption that the host is not -+# a pb build (because it should be created with default configure options) - if test "${enable_pb}" = "yes" ; then - if test "${enable_racket}" != "" ; then - if test "${enable_target}" = "" ; then -- enable_target="${MACH}" -+ if test "${default_mach_was_empty}" = "no" ; then -+ enable_target="${MACH}" -+ fi - fi - fi - fi -diff --git a/racket/src/cs/c/configure.ac b/racket/src/cs/c/configure.ac -index 5bce979c92..734c1e8feb 100644 ---- a/racket/src/cs/c/configure.ac -+++ b/racket/src/cs/c/configure.ac -@@ -415,6 +415,11 @@ case "$MACH_HOST_CPU" in - ;; - esac - -+if test "${MACH}" = "" ; then -+ default_mach_was_empty=yes -+else -+ default_mach_was_empty=no -+fi - - if test "${enable_mach}" != "" ; then - MACH="${enable_mach}" -@@ -437,13 +442,15 @@ elif test "$MACH" = "" -o "$MACH_OS" = "" ; then - exit 1 - fi - --# For a pb build where Racket is supplied, force cross-build --# mode on the assumption that the host is not a pb build --# (because it should be created with default configure options) -+# For a pb build where Racket is supplied and MACH was not originally -+# empty, force cross-build mode on the assumption that the host is not -+# a pb build (because it should be created with default configure options) - if test "${enable_pb}" = "yes" ; then - if test "${enable_racket}" != "" ; then - if test "${enable_target}" = "" ; then -- enable_target="${MACH}" -+ if test "${default_mach_was_empty}" = "no" ; then -+ enable_target="${MACH}" -+ fi - fi - fi - fi --- -2.32.0 - diff --git a/gnu/packages/patches/racket-backport-8.6-docindex-write.patch b/gnu/packages/patches/racket-backport-8.6-docindex-write.patch deleted file mode 100644 index abe1984507..0000000000 --- a/gnu/packages/patches/racket-backport-8.6-docindex-write.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 8b4d686a62fd66dedfc40ecdcf3698316993d614 Mon Sep 17 00:00:00 2001 -From: Philip McGrath <philip@philipmcgrath.com> -Date: Sun, 17 Jul 2022 22:51:44 -0400 -Subject: [PATCH] racket-index: set write permission when copying - `docindex.sqlite` - -Fixes https://github.com/racket/racket/issues/4357 - -(cherry picked from commit 55b6cbdca1f36a4f37bab1519c1b658717d3cad2) ---- - pkgs/racket-index/setup/scribble.rkt | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/pkgs/racket-index/setup/scribble.rkt b/pkgs/racket-index/setup/scribble.rkt -index 6694f0b793..e27a8fa348 100644 ---- a/pkgs/racket-index/setup/scribble.rkt -+++ b/pkgs/racket-index/setup/scribble.rkt -@@ -252,7 +252,14 @@ - (unless (file-exists? db-file) - (define-values (base name dir?) (split-path db-file)) - (make-directory* base) -- (when copy-from (copy-file copy-from db-file)) -+ (when copy-from -+ (copy-file copy-from db-file) -+ ;; we might not have write permissions for the previous layer: -+ ;; ensure that we do for the new file -+ (define orig-mode (file-or-directory-permissions db-file 'bits)) -+ (define writeable-mode (bitwise-ior user-write-bit orig-mode)) -+ (unless (= writeable-mode orig-mode) -+ (file-or-directory-permissions db-file writeable-mode))) - (doc-db-disconnect - (doc-db-file->connection db-file #t)))) - (when (or (ormap can-build*? main-docs) --- -2.32.0 - diff --git a/gnu/packages/patches/racket-backport-8.6-hurd.patch b/gnu/packages/patches/racket-backport-8.6-hurd.patch deleted file mode 100644 index d593b01e62..0000000000 --- a/gnu/packages/patches/racket-backport-8.6-hurd.patch +++ /dev/null @@ -1,609 +0,0 @@ -From f17b030fa2f902bb3666913d4a3cd6ba9c146d22 Mon Sep 17 00:00:00 2001 -From: Philip McGrath <philip@philipmcgrath.com> -Date: Wed, 3 Aug 2022 03:13:03 -0400 -Subject: [PATCH 1/3] Chez Scheme: Fix build on GNU/Hurd - -Mostly GNU/Hurd should take the same options as GNU/Linux. One -difference is that the Hurd does not define macros such as `PATH_MAX` or -`NOFILE`, because it avoids imposing arbitrary limits on such resources. -This patch provides alternatives for localized uses of those constants, -but it accepts the pervasive use of `PATH_MAX` in finding bootfiles for -now. See https://www.gnu.org/software/hurd/hurd/porting/guidelines.html. - -(cherry picked from commit 87eee6e2adb8c6bc11e60619c706fa6295096085) ---- - racket/src/ChezScheme/README.md | 1 + - racket/src/ChezScheme/c/number.c | 22 +++++++++---------- - racket/src/ChezScheme/c/prim5.c | 35 ++++++++++++++++++++++++++++-- - racket/src/ChezScheme/c/scheme.c | 34 +++++++++++++++++------------ - racket/src/ChezScheme/c/version.h | 7 ++++-- - racket/src/ChezScheme/configure | 17 ++++++++++----- - racket/src/ChezScheme/s/cmacros.ss | 1 + - racket/src/cs/c/configure | 14 ++++++++++-- - racket/src/cs/c/configure.ac | 14 ++++++++++-- - racket/src/cs/rumble/system.ss | 3 +++ - 10 files changed, 109 insertions(+), 39 deletions(-) - -diff --git a/racket/src/ChezScheme/README.md b/racket/src/ChezScheme/README.md -index a4a11a5eef..25231dd9bb 100644 ---- a/racket/src/ChezScheme/README.md -+++ b/racket/src/ChezScheme/README.md -@@ -13,6 +13,7 @@ Supported platforms (bytecode interpreter may work for others): - * OpenBSD: x86, x86_64, ARMv6, AArch64, PowerPC32 - * NetBSD: x86, x86_64, ARMv6, AArch64, PowerPC32 - * Solaris: x86, x86_64 -+ * GNU/Hurd: x86 - * Android: ARMv7, AArch64 - * iOS: AArch64 - * WebAssembly via Emscripten (bytecode interpreter only) -diff --git a/racket/src/ChezScheme/c/number.c b/racket/src/ChezScheme/c/number.c -index ede38cc626..e2bce0d2d3 100644 ---- a/racket/src/ChezScheme/c/number.c -+++ b/racket/src/ChezScheme/c/number.c -@@ -1041,15 +1041,15 @@ floating-point operations - - #ifdef IEEE_DOUBLE - /* exponent stored + 1024, hidden bit to left of decimal point */ --#define bias 1023 --#define bitstoright 52 --#define m1mask 0xf --#ifdef WIN32 --#define hidden_bit 0x10000000000000 --#else --#define hidden_bit 0x10000000000000ULL --#endif --#ifdef LITTLE_ENDIAN_IEEE_DOUBLE -+# define bias 1023 -+# define bitstoright 52 -+# define m1mask 0xf -+# ifdef WIN32 -+# define hidden_bit 0x10000000000000 -+# else -+# define hidden_bit 0x10000000000000ULL -+# endif -+# ifdef LITTLE_ENDIAN_IEEE_DOUBLE - struct dblflt { - UINT m4: 16; - UINT m3: 16; -@@ -1058,7 +1058,7 @@ struct dblflt { - UINT e: 11; - UINT sign: 1; - }; --#else -+# else - struct dblflt { - UINT sign: 1; - UINT e: 11; -@@ -1067,7 +1067,7 @@ struct dblflt { - UINT m3: 16; - UINT m4: 16; - }; --#endif -+# endif - #endif - - double S_random_double(U32 m1, U32 m2, U32 m3, U32 m4, double scale) { -diff --git a/racket/src/ChezScheme/c/prim5.c b/racket/src/ChezScheme/c/prim5.c -index 124d1e049c..82bbf8d687 100644 ---- a/racket/src/ChezScheme/c/prim5.c -+++ b/racket/src/ChezScheme/c/prim5.c -@@ -23,6 +23,10 @@ - #include <ctype.h> - #include <math.h> - -+#if defined(__GNU__) /* Hurd */ -+#include <sys/resource.h> -+#endif -+ - /* locally defined functions */ - static INT s_errno(void); - static IBOOL s_addr_in_heap(uptr x); -@@ -58,7 +62,7 @@ static void s_showalloc(IBOOL show_dump, const char *outfn); - static ptr s_system(const char *s); - static ptr s_process(char *s, IBOOL stderrp); - static I32 s_chdir(const char *inpath); --#ifdef GETWD -+#if defined(GETWD) || defined(__GNU__) /* Hurd */ - static char *s_getwd(void); - #endif - static ptr s_set_code_byte(ptr p, ptr n, ptr x); -@@ -881,7 +885,18 @@ static ptr s_process(char *s, IBOOL stderrp) { - CLOSE(0); if (dup(tofds[0]) != 0) _exit(1); - CLOSE(1); if (dup(fromfds[1]) != 1) _exit(1); - CLOSE(2); if (dup(stderrp ? errfds[1] : 1) != 2) _exit(1); -+#ifndef __GNU__ /* Hurd */ - {INT i; for (i = 3; i < NOFILE; i++) (void)CLOSE(i);} -+#else /* __GNU__ Hurd: no NOFILE */ -+ { -+ INT i; -+ struct rlimit rlim; -+ getrlimit(RLIMIT_NOFILE, &rlim); -+ for (i = 3; i < rlim.rlim_cur; i++) { -+ (void)CLOSE(i); -+ } -+ } -+#endif /* __GNU__ Hurd */ - execl("/bin/sh", "/bin/sh", "-c", s, NULL); - _exit(1) /* only if execl fails */; - /*NOTREACHED*/ -@@ -927,6 +942,22 @@ static I32 s_chdir(const char *inpath) { - static char *s_getwd() { - return GETWD(TO_VOIDP(&BVIT(S_bytevector(PATH_MAX), 0))); - } -+#elif defined(__GNU__) /* Hurd: no PATH_MAX */ -+static char *s_getwd() { -+ char *path; -+ size_t len; -+ ptr bv; -+ path = getcwd(NULL, 0); -+ if (NULL == path) { -+ return NULL; -+ } else { -+ len = strlen(path); -+ bv = S_bytevector(len); -+ memcpy(TO_VOIDP(&BVIT(bv, 0)), path, len); -+ free(path); -+ return TO_VOIDP(&BVIT(bv, 0)); -+ } -+} - #endif /* GETWD */ - - static ptr s_set_code_byte(ptr p, ptr n, ptr x) { -@@ -1817,7 +1848,7 @@ void S_prim5_init(void) { - Sforeign_symbol("(cs)s_rational", (void *)S_rational); - Sforeign_symbol("(cs)sub", (void *)S_sub); - Sforeign_symbol("(cs)rem", (void *)S_rem); --#ifdef GETWD -+#if defined(GETWD) || defined(__GNU__) /* Hurd */ - Sforeign_symbol("(cs)s_getwd", (void *)s_getwd); - #endif - Sforeign_symbol("(cs)s_chdir", (void *)s_chdir); -diff --git a/racket/src/ChezScheme/c/scheme.c b/racket/src/ChezScheme/c/scheme.c -index ed5564540b..0c40e3eaf0 100644 ---- a/racket/src/ChezScheme/c/scheme.c -+++ b/racket/src/ChezScheme/c/scheme.c -@@ -458,6 +458,12 @@ static IBOOL next_path(char *path, const char *name, const char *ext, const char - static const char *path_last(const char *path); - static char *get_defaultheapdirs(void); - -+#ifdef PATH_MAX -+# define BOOT_PATH_MAX PATH_MAX -+#else /* hack for Hurd: better to remove the restriction */ -+# define BOOT_PATH_MAX 4096 -+#endif -+ - static const char *path_last(const char *p) { - const char *s; - #ifdef WIN32 -@@ -483,7 +489,7 @@ static const char *path_last(const char *p) { - - static char *get_defaultheapdirs() { - char *result; -- wchar_t buf[PATH_MAX]; -+ wchar_t buf[BOOT_PATH_MAX]; - DWORD len = sizeof(buf); - if (ERROR_SUCCESS != RegGetValueW(HKEY_LOCAL_MACHINE, L"Software\\Chez Scheme\\csv" VERSION, L"HeapSearchPath", RRF_RT_REG_SZ, NULL, buf, &len)) - return DEFAULT_HEAP_PATH; -@@ -512,14 +518,14 @@ static char *get_defaultheapdirs() { - * leaving the full path with name affixed in path and *sp / *dsp pointing - * past the current entry. it returns 1 on success and 0 if at the end of - * the search path. path should be a pointer to an unoccupied buffer -- * PATH_MAX characters long. either or both of sp/dsp may be empty, -+ * BOOT_PATH_MAX characters long. either or both of sp/dsp may be empty, - * but neither may be null, i.e., (char *)0. */ - static IBOOL next_path(char *path, const char *name, const char *ext, - const char **sp, const char **dsp) { - char *p; - const char *s, *t; - --#define setp(c) if (p >= path + PATH_MAX) { fprintf(stderr, "search path entry too long\n"); S_abnormal_exit(); } else *p++ = (c) -+#define setp(c) if (p >= path + BOOT_PATH_MAX) { fprintf(stderr, "search path entry too long\n"); S_abnormal_exit(); } else *p++ = (c) - for (;;) { - s = *sp; - p = path; -@@ -532,10 +538,10 @@ static IBOOL next_path(char *path, const char *name, const char *ext, - switch (*s) { - #ifdef WIN32 - case 'x': { -- wchar_t exepath[PATH_MAX]; DWORD n; -+ wchar_t exepath[BOOT_PATH_MAX]; DWORD n; - s += 1; -- n = GetModuleFileNameW(NULL, exepath, PATH_MAX); -- if (n == 0 || (n == PATH_MAX && GetLastError() == ERROR_INSUFFICIENT_BUFFER)) { -+ n = GetModuleFileNameW(NULL, exepath, BOOT_PATH_MAX); -+ if (n == 0 || (n == BOOT_PATH_MAX && GetLastError() == ERROR_INSUFFICIENT_BUFFER)) { - fprintf(stderr, "warning: executable path is too long; ignoring %%x\n"); - } else { - char *tstart; -@@ -608,7 +614,7 @@ typedef struct { - iptr len; /* 0 => unknown */ - iptr offset; - IBOOL need_check, close_after; -- char path[PATH_MAX]; -+ char path[BOOT_PATH_MAX]; - } boot_desc; - - #define MAX_BOOT_FILES 10 -@@ -695,14 +701,14 @@ static void finish_dependencies_header(int fd, const char *path, int c) { - static IBOOL find_boot(const char *name, const char *ext, IBOOL direct_pathp, - int fd, - IBOOL errorp) { -- char pathbuf[PATH_MAX], buf[PATH_MAX]; -+ char pathbuf[BOOT_PATH_MAX], buf[BOOT_PATH_MAX]; - uptr n = 0; - INT c; - const char *path; - char *expandedpath; - - if ((fd != -1) || direct_pathp || S_fixedpathp(name)) { -- if (strlen(name) >= PATH_MAX) { -+ if (strlen(name) >= BOOT_PATH_MAX) { - fprintf(stderr, "boot-file path is too long %s\n", name); - S_abnormal_exit(); - } -@@ -776,7 +782,7 @@ static IBOOL find_boot(const char *name, const char *ext, IBOOL direct_pathp, - if (boot_count == 0) { - for (;;) { - /* try to load heap or boot file this boot file requires */ -- if (get_string(fd, buf, PATH_MAX, &c) != 0) { -+ if (get_string(fd, buf, BOOT_PATH_MAX, &c) != 0) { - fprintf(stderr, "unexpected end of file on %s\n", path); - CLOSE(fd); - S_abnormal_exit(); -@@ -796,7 +802,7 @@ static IBOOL find_boot(const char *name, const char *ext, IBOOL direct_pathp, - c = get_u8(fd); - for (sep = " "; ; sep = "or ") { - if (c == ')') break; -- (void) get_string(fd, buf, PATH_MAX, &c); -+ (void) get_string(fd, buf, BOOT_PATH_MAX, &c); - fprintf(stderr, "%s%s.boot ", sep, buf); - } - fprintf(stderr, "required by %s\n", path); -@@ -1090,7 +1096,7 @@ extern void Sregister_boot_file_fd_region(const char *name, - int close_after) { - check_boot_file_state("Sregister_boot_file_fd"); - -- if (strlen(name) >= PATH_MAX) { -+ if (strlen(name) >= BOOT_PATH_MAX) { - fprintf(stderr, "boot-file path is too long %s\n", name); - S_abnormal_exit(); - } -@@ -1141,14 +1147,14 @@ extern void Sbuild_heap(const char *kernel, void (*custom_init)(void)) { - } - - name = path_last(kernel); -- if (strlen(name) >= PATH_MAX) { -+ if (strlen(name) >= BOOT_PATH_MAX) { - fprintf(stderr, "executable name too long: %s\n", name); - S_abnormal_exit(); - } - - #ifdef WIN32 - { /* strip off trailing .exe, if any */ -- static char buf[PATH_MAX]; -+ static char buf[BOOT_PATH_MAX]; - iptr n; - - n = strlen(name) - 4; -diff --git a/racket/src/ChezScheme/c/version.h b/racket/src/ChezScheme/c/version.h -index a79d12621b..61751a9fad 100644 ---- a/racket/src/ChezScheme/c/version.h -+++ b/racket/src/ChezScheme/c/version.h -@@ -80,7 +80,7 @@ FORCEINLINE void store_unaligned_uptr(uptr *addr, uptr val) { - /*****************************************/ - /* Operating systems */ - --#if defined(__linux__) -+#if defined(__linux__) || defined(__GNU__) /* Hurd */ - #define NOBLOCK O_NONBLOCK - #define LOAD_SHARED_OBJECT - #define USE_MMAP -@@ -91,7 +91,10 @@ FORCEINLINE void store_unaligned_uptr(uptr *addr, uptr val) { - #define GETPAGESIZE() getpagesize() - typedef char *memcpy_t; - #define MAKE_NAN(x) { x = 0.0; x = x / x; } --#define GETWD(x) getcwd((x),PATH_MAX) -+#ifndef __GNU__ /* Hurd: no PATH_MAX */ -+/* n.b. don't test PATH_MAX directly: we have not yet included <limits.h> */ -+# define GETWD(x) getcwd((x),PATH_MAX) -+#endif - typedef int tputsputcchar; - #ifndef __ANDROID__ - # define LOCKF -diff --git a/racket/src/ChezScheme/configure b/racket/src/ChezScheme/configure -index f64b639c3a..efdb6029cb 100755 ---- a/racket/src/ChezScheme/configure -+++ b/racket/src/ChezScheme/configure -@@ -102,6 +102,11 @@ case "${CONFIG_UNAME}" in - installprefix=/usr - installmansuffix=share/man - ;; -+ GNU) -+ unixsuffix=gnu # the Hurd -+ installprefix=/usr -+ installmansuffix=share/man -+ ;; - QNX) - if uname -a | egrep 'x86' > /dev/null 2>&1 ; then - m32=i3qnx -@@ -591,7 +596,7 @@ fi - - # Infer flags needed for threads: - case "${flagsm}" in -- *le|*fb|*ob|*nb) -+ *le|*gnu|*fb|*ob|*nb) - threadFlags="-D_REENTRANT -pthread" - threadLibs="-lpthread" - ;; -@@ -627,7 +632,7 @@ if [ "$cflagsset" = "no" ] ; then - a6*) - CFLAGS="-m64 ${optFlags}" - ;; -- i3le) -+ i3le) # intentionally not including i3gnu, which may not support sse2 - CFLAGS="-m32 -msse2 -mfpmath=sse ${optFlags}" - ;; - i3nt) -@@ -688,7 +693,7 @@ fi - # Add automatic linking flags, unless suppressed by --disable-auto-flags - if [ "$addflags" = "yes" ] ; then - case "${flagsm}" in -- *le) -+ *le|*gnu) - LDFLAGS="${LDFLAGS} -rdynamic" - ;; - *fb|*nb) -@@ -702,7 +707,7 @@ if [ "$addflags" = "yes" ] ; then - esac - - case "${flagsm}" in -- *le) -+ *le|*gnu) - LIBS="${LIBS} -lm -ldl ${ncursesLib} -lrt" - ;; - *fb|*ob) -@@ -749,7 +754,7 @@ exeSuffix= - - # compile flags for c/Mf-unix and mats/Mf-unix - case "${flagsmuni}" in -- *le) -+ *le|*gnu) - mdcflags="-fPIC -shared" - ;; - *fb|*ob) -@@ -781,7 +786,7 @@ case "${flagsmuni}" in - i3le) - mdldflags="-melf_i386" - ;; -- *le) -+ *le|*gnu) - ;; - i3nb) - mdldflags="-m elf_i386" -diff --git a/racket/src/ChezScheme/s/cmacros.ss b/racket/src/ChezScheme/s/cmacros.ss -index ff2b09217b..2e79a4d8de 100644 ---- a/racket/src/ChezScheme/s/cmacros.ss -+++ b/racket/src/ChezScheme/s/cmacros.ss -@@ -385,6 +385,7 @@ - i3fb ti3fb - i3ob ti3ob - i3osx ti3osx -+ i3gnu ti3gnu - a6le ta6le - a6osx ta6osx - a6ob ta6ob -diff --git a/racket/src/cs/c/configure b/racket/src/cs/c/configure -index 454d79e11a..dab545c0b4 100755 ---- a/racket/src/cs/c/configure -+++ b/racket/src/cs/c/configure -@@ -4449,8 +4449,15 @@ case "$host_os" in - ;; - irix*) - ;; -- linux*) -- MACH_OS=le -+ linux*|gnu*) -+ case "$host_os" in -+ *linux*) -+ MACH_OS=le -+ ;; -+ *) -+ MACH_OS=gnu # Hurd -+ ;; -+ esac - case "$host_os" in - *linux-android*) - ;; -@@ -4730,6 +4737,9 @@ if test "${build_os}_${build_cpu}" != "${host_os}_${host_cpu}" ; then - linux*) - BUILD_OS=le - ;; -+ gnu*) # Hurd: must come after linux* -+ BUILD_OS=gnu -+ ;; - *mingw*) - BUILD_OS=nt - ;; -diff --git a/racket/src/cs/c/configure.ac b/racket/src/cs/c/configure.ac -index 5bce979c92..43e7307b1b 100644 ---- a/racket/src/cs/c/configure.ac -+++ b/racket/src/cs/c/configure.ac -@@ -272,8 +272,15 @@ case "$host_os" in - ;; - irix*) - ;; -- linux*) -- MACH_OS=le -+ linux*|gnu*) -+ case "$host_os" in -+ linux*) -+ MACH_OS=le -+ ;; -+ *) -+ MACH_OS=gnu # Hurd -+ ;; -+ esac - case "$host_os" in - *linux-android*) - ;; -@@ -466,6 +473,9 @@ if test "${build_os}_${build_cpu}" != "${host_os}_${host_cpu}" ; then - linux*) - BUILD_OS=le - ;; -+ gnu*) # Hurd - must come after linux* -+ BUILD_OS=gnu -+ ;; - *mingw*) - BUILD_OS=nt - ;; -diff --git a/racket/src/cs/rumble/system.ss b/racket/src/cs/rumble/system.ss -index 2319cbe7a5..773eb79cf3 100644 ---- a/racket/src/cs/rumble/system.ss -+++ b/racket/src/cs/rumble/system.ss -@@ -48,6 +48,8 @@ - arm32le tarm32le arm64le tarm64le - ppc32le tppc32le) - 'linux] -+ [(i3gnu ti3gnu) -+ 'gnu-hurd] - [(a6fb ta6fb i3fb ti3fb - arm32fb tarm32fb arm64fb tarm64fb - ppc32fb tppc32fb) -@@ -85,6 +87,7 @@ - i3nb ti3nb - i3fb ti3fb - i3s2 ti3s2 -+ i3gnu ti3gnu - i3qnx) - 'i386] - [(arm32le tarm32le --- -2.32.0 - - -From 8653294b771c741d320aba31e692b4f0ed0c702f Mon Sep 17 00:00:00 2001 -From: Philip McGrath <philip@philipmcgrath.com> -Date: Thu, 4 Aug 2022 20:18:09 -0400 -Subject: [PATCH 2/3] BC: Fix build on GNU/Hurd - -(cherry picked from commit 5c05496afd6159c2f9cd52e7f23389fdc6b55f43) ---- - racket/src/bc/configure | 2 +- - racket/src/bc/configure.ac | 2 +- - racket/src/bc/sconfig.h | 14 +++++++++----- - 3 files changed, 11 insertions(+), 7 deletions(-) - -diff --git a/racket/src/bc/configure b/racket/src/bc/configure -index 4ddb607b37..4ee346014d 100755 ---- a/racket/src/bc/configure -+++ b/racket/src/bc/configure -@@ -5018,7 +5018,7 @@ case "$host_os" in - X_PRE_LIBS="" - fi - ;; -- linux*) -+ linux*,gnu*) - LIBS="$LIBS -ldl -lm -lrt -rdynamic" - DYN_CFLAGS="-fPIC" - curses_portable_link="/usr/lib/${host_cpu}-${host_os}/libncurses.a /usr/lib/${host_cpu}-${host_os}/libtermcap.a" -diff --git a/racket/src/bc/configure.ac b/racket/src/bc/configure.ac -index deef8f3077..866851236e 100644 ---- a/racket/src/bc/configure.ac -+++ b/racket/src/bc/configure.ac -@@ -557,7 +557,7 @@ case "$host_os" in - X_PRE_LIBS="" - fi - ;; -- linux*) -+ linux*,gnu*) - LIBS="$LIBS -ldl -lm -lrt -rdynamic" - DYN_CFLAGS="-fPIC" - curses_portable_link="/usr/lib/${host_cpu}-${host_os}/libncurses.a /usr/lib/${host_cpu}-${host_os}/libtermcap.a" -diff --git a/racket/src/bc/sconfig.h b/racket/src/bc/sconfig.h -index 01ecb48158..8468942fcd 100644 ---- a/racket/src/bc/sconfig.h -+++ b/racket/src/bc/sconfig.h -@@ -79,12 +79,14 @@ - - #endif - -- /************** Linux with gcc ****************/ -+ /************** Linux (or Hurd) with gcc ****************/ - --#if defined(__linux__) -+#if defined(__linux__) || defined(__GNU__) - - # ifdef __ANDROID__ - # define SCHEME_OS "android" -+# elif defined(__GNU__) -+# define SCHEME_OS "gnu-hurd" - # else - # define SCHEME_OS "linux" - # endif -@@ -146,13 +148,15 @@ - # define USE_IEEE_FP_PREDS - # define USE_EXPLICT_FP_FORM_CHECK - --# define LINUX_FIND_STACK_BASE -+# define LINUX_FIND_STACK_BASE /* also ok for Hurd */ - - # define FLAGS_ALREADY_SET - - #if defined(__i386__) --# define MZ_USE_JIT_I386 --# define MZ_JIT_USE_MPROTECT -+# ifndef __GNU__ /* Hurd */ -+# define MZ_USE_JIT_I386 -+# define MZ_JIT_USE_MPROTECT -+# endif - # ifndef MZ_NO_UNWIND_SUPPORT - # define MZ_USE_DWARF_LIBUNWIND - # endif --- -2.32.0 - - -From 1b0cd08557f58506c96f0ddd855bd9051a45a2f1 Mon Sep 17 00:00:00 2001 -From: Philip McGrath <philip@philipmcgrath.com> -Date: Sat, 6 Aug 2022 22:48:40 -0400 -Subject: [PATCH 3/3] BC: repair configure script - -Hopefully this will fix the DrDr failures caused by 5c05496. - -Related to https://github.com/racket/racket/pull/4384 - -(cherry picked from commit c3dd01055ed7589a18136904510fe4db557d6e77) ---- - racket/src/bc/configure | 2 +- - racket/src/bc/configure.ac | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/racket/src/bc/configure b/racket/src/bc/configure -index 4ee346014d..b1c5175b84 100755 ---- a/racket/src/bc/configure -+++ b/racket/src/bc/configure -@@ -5018,7 +5018,7 @@ case "$host_os" in - X_PRE_LIBS="" - fi - ;; -- linux*,gnu*) -+ linux*|gnu*) - LIBS="$LIBS -ldl -lm -lrt -rdynamic" - DYN_CFLAGS="-fPIC" - curses_portable_link="/usr/lib/${host_cpu}-${host_os}/libncurses.a /usr/lib/${host_cpu}-${host_os}/libtermcap.a" -diff --git a/racket/src/bc/configure.ac b/racket/src/bc/configure.ac -index 866851236e..ecc3b0b579 100644 ---- a/racket/src/bc/configure.ac -+++ b/racket/src/bc/configure.ac -@@ -557,7 +557,7 @@ case "$host_os" in - X_PRE_LIBS="" - fi - ;; -- linux*,gnu*) -+ linux*|gnu*) - LIBS="$LIBS -ldl -lm -lrt -rdynamic" - DYN_CFLAGS="-fPIC" - curses_portable_link="/usr/lib/${host_cpu}-${host_os}/libncurses.a /usr/lib/${host_cpu}-${host_os}/libtermcap.a" --- -2.32.0 - diff --git a/gnu/packages/patches/racket-backport-8.6-zuo.patch b/gnu/packages/patches/racket-backport-8.6-zuo.patch deleted file mode 100644 index b86679b7ec..0000000000 --- a/gnu/packages/patches/racket-backport-8.6-zuo.patch +++ /dev/null @@ -1,481 +0,0 @@ -From 8761fc06b188b9ca2f4b7f2b7d1235075c44a321 Mon Sep 17 00:00:00 2001 -From: Matthew Flatt <mflatt@racket-lang.org> -Date: Sat, 23 Jul 2022 17:10:58 -0600 -Subject: [PATCH 1/4] Zuo: support cross compilation via `configure` and - `CC_FOR_BUILD` - -(cherry picked from commit 798a989ba6d1a30c491a3120b2c2f1570ecab911) ---- - racket/src/zuo/Makefile.in | 7 ++++++- - racket/src/zuo/README.md | 10 ++++++++++ - racket/src/zuo/configure | 15 +++++++++++++++ - racket/src/zuo/configure.ac | 11 +++++++++++ - 4 files changed, 42 insertions(+), 1 deletion(-) - -diff --git a/racket/src/zuo/Makefile.in b/racket/src/zuo/Makefile.in -index 5d16e145bf..747b584c5c 100644 ---- a/racket/src/zuo/Makefile.in -+++ b/racket/src/zuo/Makefile.in -@@ -17,6 +17,11 @@ CPPFLAGS = @CPPFLAGS@ - LDFLAGS = @LDFLAGS@ - LIBS = @LIBS@ - -+CC_FOR_BUILD = @CC_FOR_BUILD@ -+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ -+LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ -+LIBS_FOR_BUILD = @LIBS_FOR_BUILD@ -+ - EMBED_LIBS = @EMBED_LIBS@ - - .PHONY: zuos-to-run-and-install -@@ -24,7 +29,7 @@ zuos-to-run-and-install: zuo - ./zuo . zuos-to-run-and-install - - zuo: $(srcdir)/zuo.c -- $(CC) $(CPPFLAGS) $(CFLAGS) -DZUO_LIB_PATH='"'"$(srcdir)/lib"'"' -o zuo $(srcdir)/zuo.c $(LDFLAGS) $(LIBS) -+ $(CC_FOR_BUILD) $(FLAGS_FOR_BUILD) -DZUO_LIB_PATH='"'"$(srcdir)/lib"'"' -o zuo $(srcdir)/zuo.c $(LDFLAGS_FOR_BUILD) $(LIBS_FOR_BUILD) - - .PHONY: check - check: zuo -diff --git a/racket/src/zuo/README.md b/racket/src/zuo/README.md -index 17c88ee9ec..3aad504b7e 100644 ---- a/racket/src/zuo/README.md -+++ b/racket/src/zuo/README.md -@@ -84,6 +84,16 @@ A boot image is machine-independent, whether in a stand-alone file or - embedded in `.c` source. - - -+Cross Compiling -+--------------- -+ -+If you use `./configure --host=...` to cross compile, then you will -+also need to add something like `CC_FOR_BUILD=cc` as a `./configure` -+argument to specify the compiler for a `zuo` to use on the build -+machine. If necessary, you can also specify `CFLAGS_FOR_BUILD`, -+`LDFLAGS_FOR_BUILD`, and/or `LIBS_FOR_BUILD`. -+ -+ - Embedding Zuo in Another Application - ------------------------------------ - -diff --git a/racket/src/zuo/configure b/racket/src/zuo/configure -index 1fa34a3fe8..575ce07d96 100755 ---- a/racket/src/zuo/configure -+++ b/racket/src/zuo/configure -@@ -589,6 +589,10 @@ enable_embed="zuo" - ac_subst_vars='LTLIBOBJS - LIBOBJS - EMBED_LIBS -+LIBS_FOR_BUILD -+LDFLAGS_FOR_BUILD -+CFLAGS_FOR_BUILD -+CC_FOR_BUILD - OBJEXT - EXEEXT - ac_ct_CC -@@ -2584,6 +2588,17 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ - ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -+if test "${CC_FOR_BUILD}" = ""; then -+ CC_FOR_BUILD='$(CC) -O2' -+ CFLAGS_FOR_BUILD='$(CPPFLAGS) $(CFLAGS)' -+ LDFLAGS_FOR_BUILD='$(LDFLAGS)' -+ LIBS_FOR_BUILD='$(LIBS)' -+fi -+ -+ -+ -+ -+ - - { $as_echo "$as_me:${as_lineno-$LINENO}: zuo libraries to embed: \"${EMBED_LIBS}\"" >&5 - $as_echo "$as_me: zuo libraries to embed: \"${EMBED_LIBS}\"" >&6;} -diff --git a/racket/src/zuo/configure.ac b/racket/src/zuo/configure.ac -index 89b3c6391d..598ff79629 100644 ---- a/racket/src/zuo/configure.ac -+++ b/racket/src/zuo/configure.ac -@@ -25,6 +25,17 @@ AS_IF([test "x$enable_embed" = xno], - AC_PROG_MAKE_SET() - AC_PROG_CC - -+if test "${CC_FOR_BUILD}" = ""; then -+ CC_FOR_BUILD='$(CC) -O2' -+ CFLAGS_FOR_BUILD='$(CPPFLAGS) $(CFLAGS)' -+ LDFLAGS_FOR_BUILD='$(LDFLAGS)' -+ LIBS_FOR_BUILD='$(LIBS)' -+fi -+AC_SUBST(CC_FOR_BUILD) -+AC_SUBST(CFLAGS_FOR_BUILD) -+AC_SUBST(LDFLAGS_FOR_BUILD) -+AC_SUBST(LIBS_FOR_BUILD) -+ - AC_SUBST(EMBED_LIBS) - AC_MSG_NOTICE([zuo libraries to embed: "${EMBED_LIBS}"]) - --- -2.32.0 - - -From f65194ea41eb472fbdd45d5f6c13eabe5e681704 Mon Sep 17 00:00:00 2001 -From: Matthew Flatt <mflatt@racket-lang.org> -Date: Sat, 23 Jul 2022 17:47:03 -0600 -Subject: [PATCH 2/4] Zuo: sort hash keys - -Printing in a sorted order is helpful to make things more -deterministic independent of symbol inputs. Making `hash-keys` -produce a sorted list generalizes that determinism. - -(cherry picked from commit 4e7ffd3b365d01c5d0993c0b3fd24c9623962edf) ---- - racket/src/zuo/build.zuo | 5 ++- - racket/src/zuo/tests/hash.zuo | 8 ++-- - racket/src/zuo/zuo-doc/lang-zuo.scrbl | 18 +++++++-- - racket/src/zuo/zuo.c | 57 ++++++++++++++++++++++++++- - 4 files changed, 78 insertions(+), 10 deletions(-) - -diff --git a/racket/src/zuo/build.zuo b/racket/src/zuo/build.zuo -index c1b5e8ce66..129240120a 100644 ---- a/racket/src/zuo/build.zuo -+++ b/racket/src/zuo/build.zuo -@@ -47,7 +47,10 @@ - (target (at-dir (add-exe name)) - (lambda (path token) - (rule (list image_zuo.c -- (input-data-target 'config config) -+ (input-data-target 'config (cons -+ lib-path -+ (map (lambda (key) (hash-ref config key)) -+ '(CC CPPFLAGS CFLAGS LDFLAGS LIBS)))) - (quote-module-path)) - (lambda () - (define l (split-path path)) -diff --git a/racket/src/zuo/tests/hash.zuo b/racket/src/zuo/tests/hash.zuo -index a35741c730..0d3d7f3af6 100644 ---- a/racket/src/zuo/tests/hash.zuo -+++ b/racket/src/zuo/tests/hash.zuo -@@ -35,9 +35,7 @@ - - (check (hash-keys (hash)) '()) - (check (hash-keys (hash 'a 1)) '(a)) --(check (let ([keys (hash-keys (hash 'a 1 'b 2))]) -- (or (equal? keys '(a b)) -- (equal? keys '(b a))))) -+(check (hash-keys (hash 'a 1 'b 2)) '(a b)) ; always in order - (check (length (hash-keys (hash 'a 1 'b 2 'c 3))) 3) - (check (length (hash-keys (hash 'a 1 'b 2 'a 3))) 2) - (check-arg-fail (hash-keys 0) "not a hash table") -@@ -50,3 +48,7 @@ - (check (hash-keys-subset? (hash 'a 1 'b 2) (hash 'b 1)) #f) - (check-arg-fail (hash-keys-subset? 0 (hash)) "not a hash table") - (check-arg-fail (hash-keys-subset? (hash) 0) "not a hash table") -+ -+;; print sorts keys alphabetically: -+(check (~a (hash 'a 1 'b 2)) "#hash((a . 1) (b . 2))") -+(check (~a (hash 'b 2 'a 1)) "#hash((a . 1) (b . 2))") -diff --git a/racket/src/zuo/zuo-doc/lang-zuo.scrbl b/racket/src/zuo/zuo-doc/lang-zuo.scrbl -index 94641d041e..4605e47471 100644 ---- a/racket/src/zuo/zuo-doc/lang-zuo.scrbl -+++ b/racket/src/zuo/zuo-doc/lang-zuo.scrbl -@@ -538,10 +538,20 @@ support to convert the textual form back into a hash table value. - - Analogous to @realracket*[hash? hash hash-ref hash-set hash-remove - hash-keys hash-count hash-keys-subset?] from @racketmodname[racket]. --Besides being constrained to symbol keys, there is one additional --difference: the third argument to @racket[hash-ref], when supplied, --is always used as a value to return if a key is missing, as --opposed to a failure thunk.} -+ -+Besides being constrained to symbol keys, there are two additional -+differences: -+ -+@itemlist[ -+ -+ @item{the third argument to @racket[hash-ref], when supplied, is -+ always used as a value to return if a key is missing, as -+ opposed to a failure thunk; and} -+ -+ @item{the @racket[hash-keys] function returns interned keys sorted -+ alphabetically.} -+ -+]} - - - @section{Procedures} -diff --git a/racket/src/zuo/zuo.c b/racket/src/zuo/zuo.c -index 2957d478af..88d5747326 100644 ---- a/racket/src/zuo/zuo.c -+++ b/racket/src/zuo/zuo.c -@@ -1298,6 +1298,59 @@ static zuo_t *zuo_trie_keys(zuo_t *trie_in, zuo_t *accum) { - return accum; - } - -+/*======================================================================*/ -+/* symbol-list sorting */ -+/*======================================================================*/ -+ -+/* merge sort used to make hash printing deterministic */ -+static zuo_t *zuo_symbol_list_sort(zuo_t *l_in) { -+ zuo_t *l, *left, *right, *first, *last; -+ zuo_uint_t len = 0, i; -+ -+ for (l = l_in, len = 0; l != z.o_null; l = _zuo_cdr(l)) -+ len++; -+ -+ if (len < 2) -+ return l_in; -+ -+ left = z.o_null; -+ for (l = l_in, i = len >> 1; i > 0; l = _zuo_cdr(l), i--) -+ left = zuo_cons(_zuo_car(l), left); -+ right = l; -+ -+ left = zuo_symbol_list_sort(left); -+ right = zuo_symbol_list_sort(right); -+ -+ first = last = z.o_null; -+ while ((left != z.o_null) && (right != z.o_null)) { -+ zuo_t *p; -+ -+ if (strcmp(ZUO_STRING_PTR(((zuo_symbol_t *)_zuo_car(left))->str), -+ ZUO_STRING_PTR(((zuo_symbol_t *)_zuo_car(right))->str)) -+ < 1) { -+ p = zuo_cons(_zuo_car(left), z.o_null); -+ left = _zuo_cdr(left); -+ } else { -+ p = zuo_cons(_zuo_car(right), z.o_null); -+ right = _zuo_cdr(right); -+ } -+ -+ if (first == z.o_null) -+ first = p; -+ else -+ ((zuo_pair_t *)last)->cdr = p; -+ last = p; -+ } -+ -+ ((zuo_pair_t *)last)->cdr = ((left != z.o_null) ? left : right); -+ -+ return first; -+} -+ -+static zuo_t *zuo_trie_sorted_keys(zuo_t *trie_in, zuo_t *accum) { -+ return zuo_symbol_list_sort(zuo_trie_keys(trie_in, accum)); -+} -+ - /*======================================================================*/ - /* terminal support */ - /*======================================================================*/ -@@ -1571,7 +1624,7 @@ static void zuo_out(zuo_out_t *out, zuo_t *obj, zuo_print_mode_t mode) { - out_string(out, "opaque"); - out_string(out, ">"); - } else if (obj->tag == zuo_trie_node_tag) { -- zuo_t *keys = zuo_trie_keys(obj, z.o_null); -+ zuo_t *keys = zuo_trie_sorted_keys(obj, z.o_null); - if (mode == zuo_print_mode) { - out_string(out, "(hash"); - if (keys != z.o_null) -@@ -2587,7 +2640,7 @@ static zuo_t *zuo_hash_remove(zuo_t *ht, zuo_t *sym) { - - static zuo_t *zuo_hash_keys(zuo_t *ht) { - check_hash("hash-keys", ht); -- return zuo_trie_keys(ht, z.o_null); -+ return zuo_trie_sorted_keys(ht, z.o_null); - } - - static zuo_t *zuo_hash_keys_subset_p(zuo_t *ht, zuo_t *ht2) { --- -2.32.0 - - -From f2eecaa1dd875479d2cf51566223b3d0d7b9f738 Mon Sep 17 00:00:00 2001 -From: Matthew Flatt <mflatt@racket-lang.org> -Date: Sat, 23 Jul 2022 18:06:41 -0600 -Subject: [PATCH 3/4] Zuo: check for nul characters in `string->symbol` - -(cherry picked from commit e20022ccfad40d0ba2e77aa75bc4f775018c781f) ---- - racket/src/zuo/tests/symbol.zuo | 3 +++ - racket/src/zuo/zuo-doc/lang-zuo.scrbl | 4 ++- - racket/src/zuo/zuo.c | 37 +++++++++++++++++---------- - 3 files changed, 29 insertions(+), 15 deletions(-) - -diff --git a/racket/src/zuo/tests/symbol.zuo b/racket/src/zuo/tests/symbol.zuo -index 7775aeeb04..5600a89755 100644 ---- a/racket/src/zuo/tests/symbol.zuo -+++ b/racket/src/zuo/tests/symbol.zuo -@@ -19,3 +19,6 @@ - (check (not (equal? 'apple (string->uninterned-symbol "apple")))) - (check-arg-fail (string->symbol 'apple) not-string) - (check-arg-fail (string->uninterned-symbol 'apple) not-string) -+ -+(check-arg-fail (string->symbol "apple\0spice") "without a nul character") -+(check (symbol? (string->uninterned-symbol "apple\0spice"))) -diff --git a/racket/src/zuo/zuo-doc/lang-zuo.scrbl b/racket/src/zuo/zuo-doc/lang-zuo.scrbl -index 4605e47471..07dd5815b0 100644 ---- a/racket/src/zuo/zuo-doc/lang-zuo.scrbl -+++ b/racket/src/zuo/zuo-doc/lang-zuo.scrbl -@@ -500,7 +500,9 @@ back into Zuo. - )]{ - - Analogous to @realracket*[symbol? symbol->string string->symbol --string->uninterned-symbol] from @racketmodname[racket].} -+string->uninterned-symbol] from @racketmodname[racket], but -+@racket[string->symbol] accepts only strings that do not contain the -+null character.} - - - @section{Hash Tables (Persistent Maps)} -diff --git a/racket/src/zuo/zuo.c b/racket/src/zuo/zuo.c -index 88d5747326..17f161826d 100644 ---- a/racket/src/zuo/zuo.c -+++ b/racket/src/zuo/zuo.c -@@ -1323,7 +1323,7 @@ static zuo_t *zuo_symbol_list_sort(zuo_t *l_in) { - - first = last = z.o_null; - while ((left != z.o_null) && (right != z.o_null)) { -- zuo_t *p; -+ zuo_t *p, *s_left, *s_right; - - if (strcmp(ZUO_STRING_PTR(((zuo_symbol_t *)_zuo_car(left))->str), - ZUO_STRING_PTR(((zuo_symbol_t *)_zuo_car(right))->str)) -@@ -2573,8 +2573,28 @@ static zuo_t *zuo_substring(zuo_t *obj, zuo_t *start_i, zuo_t *end_i) { - return zuo_sized_string((const char *)&((zuo_string_t *)obj)->s[s_idx], e_idx - s_idx); - } - -+static int zuo_is_string_without_nul(zuo_t *obj) { -+ zuo_int_t i; -+ -+ if ((obj->tag != zuo_string_tag) -+ || ZUO_STRING_LEN(obj) == 0) -+ return 0; -+ -+ for (i = ZUO_STRING_LEN(obj); i--; ) { -+ if (((zuo_string_t *)obj)->s[i] == 0) -+ return 0; -+ } -+ -+ return 1; -+} -+ - static zuo_t *zuo_string_to_symbol(zuo_t *obj) { -- check_string("string->symbol", obj); -+ if (!zuo_is_string_without_nul(obj)) { -+ const char *who = "string->symbol"; -+ check_string(who, obj); -+ zuo_fail_arg(who, "string without a nul character", obj); -+ } -+ - return zuo_symbol_from_string(ZUO_STRING_PTR(obj), obj); - } - -@@ -3577,18 +3597,7 @@ static void *zuo_envvars_block(const char *who, zuo_t *envvars) - #endif - - static int zuo_is_path_string(zuo_t *obj) { -- zuo_int_t i; -- -- if ((obj->tag != zuo_string_tag) -- || ZUO_STRING_LEN(obj) == 0) -- return 0; -- -- for (i = ZUO_STRING_LEN(obj); i--; ) { -- if (((zuo_string_t *)obj)->s[i] == 0) -- return 0; -- } -- -- return 1; -+ return zuo_is_string_without_nul(obj); - } - - static zuo_t *zuo_path_string_p(zuo_t *obj) { --- -2.32.0 - - -From de6618cb3819d25580e3cd400ea09c8cf4f673a9 Mon Sep 17 00:00:00 2001 -From: Matthew Flatt <mflatt@racket-lang.org> -Date: Sat, 23 Jul 2022 19:50:46 -0600 -Subject: [PATCH 4/4] Zuo: CPPFLAGS_FOR_BUILD, too - -(cherry picked from commit cf82706c4b298f654a04c4bc8d98dff39b62a2ac) ---- - racket/src/zuo/Makefile.in | 3 ++- - racket/src/zuo/configure | 5 ++++- - racket/src/zuo/configure.ac | 4 +++- - 3 files changed, 9 insertions(+), 3 deletions(-) - -diff --git a/racket/src/zuo/Makefile.in b/racket/src/zuo/Makefile.in -index 747b584c5c..0376c038a8 100644 ---- a/racket/src/zuo/Makefile.in -+++ b/racket/src/zuo/Makefile.in -@@ -19,6 +19,7 @@ LIBS = @LIBS@ - - CC_FOR_BUILD = @CC_FOR_BUILD@ - CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ -+CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ - LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ - LIBS_FOR_BUILD = @LIBS_FOR_BUILD@ - -@@ -29,7 +30,7 @@ zuos-to-run-and-install: zuo - ./zuo . zuos-to-run-and-install - - zuo: $(srcdir)/zuo.c -- $(CC_FOR_BUILD) $(FLAGS_FOR_BUILD) -DZUO_LIB_PATH='"'"$(srcdir)/lib"'"' -o zuo $(srcdir)/zuo.c $(LDFLAGS_FOR_BUILD) $(LIBS_FOR_BUILD) -+ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) -DZUO_LIB_PATH='"'"$(srcdir)/lib"'"' -o zuo $(srcdir)/zuo.c $(LDFLAGS_FOR_BUILD) $(LIBS_FOR_BUILD) - - .PHONY: check - check: zuo -diff --git a/racket/src/zuo/configure b/racket/src/zuo/configure -index 575ce07d96..7ac453e3bc 100755 ---- a/racket/src/zuo/configure -+++ b/racket/src/zuo/configure -@@ -591,6 +591,7 @@ LIBOBJS - EMBED_LIBS - LIBS_FOR_BUILD - LDFLAGS_FOR_BUILD -+CPPFLAGS_FOR_BUILD - CFLAGS_FOR_BUILD - CC_FOR_BUILD - OBJEXT -@@ -2590,7 +2591,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu - - if test "${CC_FOR_BUILD}" = ""; then - CC_FOR_BUILD='$(CC) -O2' -- CFLAGS_FOR_BUILD='$(CPPFLAGS) $(CFLAGS)' -+ CPPFLAGS_FOR_BUILD='$(CPPFLAGS)' -+ CFLAGS_FOR_BUILD='$(CFLAGS)' - LDFLAGS_FOR_BUILD='$(LDFLAGS)' - LIBS_FOR_BUILD='$(LIBS)' - fi -@@ -2600,6 +2602,7 @@ fi - - - -+ - { $as_echo "$as_me:${as_lineno-$LINENO}: zuo libraries to embed: \"${EMBED_LIBS}\"" >&5 - $as_echo "$as_me: zuo libraries to embed: \"${EMBED_LIBS}\"" >&6;} - -diff --git a/racket/src/zuo/configure.ac b/racket/src/zuo/configure.ac -index 598ff79629..051ea0beb5 100644 ---- a/racket/src/zuo/configure.ac -+++ b/racket/src/zuo/configure.ac -@@ -27,12 +27,14 @@ AC_PROG_CC - - if test "${CC_FOR_BUILD}" = ""; then - CC_FOR_BUILD='$(CC) -O2' -- CFLAGS_FOR_BUILD='$(CPPFLAGS) $(CFLAGS)' -+ CPPFLAGS_FOR_BUILD='$(CPPFLAGS)' -+ CFLAGS_FOR_BUILD='$(CFLAGS)' - LDFLAGS_FOR_BUILD='$(LDFLAGS)' - LIBS_FOR_BUILD='$(LIBS)' - fi - AC_SUBST(CC_FOR_BUILD) - AC_SUBST(CFLAGS_FOR_BUILD) -+AC_SUBST(CPPFLAGS_FOR_BUILD) - AC_SUBST(LDFLAGS_FOR_BUILD) - AC_SUBST(LIBS_FOR_BUILD) - --- -2.32.0 - diff --git a/gnu/packages/patches/racket-backport-8.7-pkg-strip.patch b/gnu/packages/patches/racket-backport-8.7-pkg-strip.patch new file mode 100644 index 0000000000..703b6e8e82 --- /dev/null +++ b/gnu/packages/patches/racket-backport-8.7-pkg-strip.patch @@ -0,0 +1,90 @@ +From 1b7e15c23baf1fda44b1d0752902ddea11419fc5 Mon Sep 17 00:00:00 2001 +From: Philip McGrath <philip@philipmcgrath.com> +Date: Fri, 7 Oct 2022 02:15:13 -0400 +Subject: [PATCH] pkg/strip: handle read-only input + +A package directory supplied to the functions from `pkg/strip` might +have had all of its write permission bits unset. Since `copy-file` +preserves the permissions of the source file, we may end up with a +read-only file that we want to overwrite (e.g. an `info.rkt` file). +Explicitly setting `user-write-bit` before writing avoids this problem. +Conservatively, we only set the permissions when actually needed, +and we restore the original permissions when we are done. + +(cherry picked from commit 8c647c8cc9b66112198fcf9bea27fc0e3737162f) +--- + racket/collects/pkg/strip.rkt | 35 +++++++++++++++++++++++++++++------ + 1 file changed, 29 insertions(+), 6 deletions(-) + +diff --git a/racket/collects/pkg/strip.rkt b/racket/collects/pkg/strip.rkt +index 0ff58cea02..5899dbc6e6 100644 +--- a/racket/collects/pkg/strip.rkt ++++ b/racket/collects/pkg/strip.rkt +@@ -306,9 +306,8 @@ + #t + new-mod*-subs)))) + (unless (eq? mod new-mod) +- (call-with-output-file* ++ (call-with-output-file/writable + new-p +- #:exists 'truncate/replace + (lambda (out) (write new-mod out))))) + + (define (fixup-local-redirect-reference p js-path #:user [user-js-path js-path]) +@@ -340,9 +339,8 @@ + (string->bytes/utf-8 user-js-path) + (subbytes s (+ delta end2)))] + [else s])))) +- (call-with-output-file* ++ (call-with-output-file/writable + p +- #:exists 'truncate/replace + (lambda (out) (write-bytes new-bstr out))))) + + ;; Used in binary[-lib] mode: +@@ -383,9 +381,8 @@ + (convert-mod info-lib defns)])) + (unless (equal? new-content content) + ;; write updated: +- (call-with-output-file* ++ (call-with-output-file/writable + new-p +- #:exists 'truncate + (lambda (out) + (write new-content out) + (newline out))) +@@ -503,3 +500,29 @@ + which + dir) + (current-continuation-marks))))) ++ ++(define (call-with-output-file/writable pth proc) ++ ;; In case `pth` was copied from a file without the user-write-bit set, ++ ;; explicitly make it writable while we overwrite it. ++ (define (run) ++ (call-with-output-file* pth ++ #:exists 'truncate/replace ++ proc)) ++ (cond ++ [(file-exists? pth) ++ (define old-mode ++ (file-or-directory-permissions pth 'bits)) ++ (define new-mode ++ (if (eq? (system-type) 'windows) ++ (bitwise-ior old-mode user-write-bit group-write-bit other-write-bit) ++ (bitwise-ior old-mode user-write-bit))) ++ (if (= old-mode new-mode) ++ (run) ++ (dynamic-wind ++ (λ () ++ (file-or-directory-permissions pth new-mode)) ++ run ++ (λ () ++ (file-or-directory-permissions pth old-mode))))] ++ [else ++ (run)])) + +base-commit: 7e4f6e2362d4a08affbbae3c7ee4b98e325274c6 +-- +2.38.0 + diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm index 10f93a1362..20d293e998 100644 --- a/gnu/packages/racket.scm +++ b/gnu/packages/racket.scm @@ -191,7 +191,7 @@ (define-module (gnu packages racket) ;; ;; CODE: -(define %racket-version "8.6") ; Remember to update chez-scheme-for-racket! +(define %racket-version "8.7") ; Remember to update chez-scheme-for-racket! (define %zuo-version "1.0") ; defined in racket/src/zuo/zuo.c (define %racket-commit (string-append "v" %racket-version)) @@ -202,12 +202,9 @@ (define %racket-origin (url "https://github.com/racket/racket") (commit %racket-commit))) (sha256 - (base32 "1lw6h70dk8zqpl96zz0hmhn8vjcc0c7gw4prkfz2wid5bkq4mhg4")) + (base32 "0agwa1nrv8mizkqg9nffjli00djyx1r9n6y6b6ry7k13pb6i7xnj")) (file-name (git-file-name "racket" %racket-version)) - (patches (search-patches "racket-backport-8.6-cross-install.patch" - "racket-backport-8.6-docindex-write.patch" - "racket-backport-8.6-hurd.patch" - "racket-backport-8.6-zuo.patch" + (patches (search-patches "racket-backport-8.7-pkg-strip.patch" "racket-chez-scheme-bin-sh.patch" "racket-rktio-bin-sh.patch" "racket-zuo-bin-sh.patch")) @@ -689,6 +686,7 @@ (define-public racket ("net-lib" "pkgs/net-lib") ("racket-doc" "pkgs/racket-doc") ("racket-index" "pkgs/racket-index") + ("scheme-doc" "pkgs/scheme-doc") ("sandbox-lib" "pkgs/sandbox-lib") ("zo-lib" "pkgs/zo-lib"))) (simple-racket-origin @@ -698,7 +696,7 @@ (define-public racket "class-iop" (base32 "08z57q83cr7wnh6g8ah3hdhmsmf9zp1jfs7yvxv188l3hzvygy5l") '("class-iop-lib")) (simple-racket-origin - "compatibility" (base32 "0bfqwscjpyi325br5pa6g62g9c8lq18a80zp5g3d2qzn3n3mi6x0") + "compatibility" (base32 "0ydx9alrpqg03xcl7zm5qcpx017i554q9ramz69vpwlfy3zdqmdm") '("compatibility" "compatibility-doc" "compatibility-lib")) (simple-racket-origin "contract-profile" (base32 "1xm2z8g0dpv5d9h2sg680vx1a8ix9gbsdpxxb8qv1w7akp73paj3") @@ -710,19 +708,19 @@ (define-public racket "datalog" (base32 "0nf6cy4djpyhfvgpa6yn72apbz9s83gp0qg95pzjd0az4v6qwq1s") '(("datalog" "."))) (simple-racket-origin - "db" (base32 "0jzsbfcdm3xj0g8xxw3ky2swrhiqqsq2aqa3r08m641dc981dmjq") + "db" (base32 "0xx0k8yw2vb9b4vk2dwjfbpixnmriqsv7kpv3fvfxbwyg42y0db5") '("db" "db-doc" "db-lib")) (simple-racket-origin - "deinprogramm" (base32 "16ncs3ms3mmdavbk0mkhm2qi62vyyif9cch3sn1y64pij489x34v") + "deinprogramm" (base32 "1ngdjky4n1vy2b9jz1z4pnzl0vgvaqr3p0ff5sx82hs38qvvi5di") '("deinprogramm" "deinprogramm-signature")) (simple-racket-origin "distributed-places" (base32 "1dajpkj9balqcpv6cdk9hwjz592h1vq8rrx5vncariiac4vbdpa0") '("distributed-places" "distributed-places-doc" "distributed-places-lib")) (simple-racket-origin - "draw" (base32 "00rq5y4ba6z1d6jh76kl8rwpxrlqqp81a875zyhk3k81i42635sm") + "draw" (base32 "0pxpay04rylq3hqfpdrha2pw78hhwsjzq8w4f156gipin74lb7a2") '("draw" "draw-doc" "draw-lib")) (simple-racket-origin - "drracket" (base32 "05d7wssi0ry13alb5hl3llpsg30dd0jhyfv5nb1nmg189fn42q62") + "drracket" (base32 "12khv954v7xpi3wv50pp5l28ww1382apbvzvs67d6ik10nn3d0y4") '("drracket" "drracket-plugin-lib" "drracket-tool" @@ -736,10 +734,10 @@ (define-public racket "eli-tester" (base32 "0icx6wn14gjm8kdmq1jppqgq87sxkras4qb5xmdr6wigxafhjqyk") '(("eli-tester" "."))) (simple-racket-origin - "eopl" (base32 "1fmiixj6rxsgzwvgva8lvrvv0gl49v2405mp3s0i7ipis5c4n27s") + "eopl" (base32 "1n8lzvhggp6bp2hg4n51zg8f4ya10isb92pfzngss2ch7299zfj2") '(("eopl" "."))) (simple-racket-origin - "errortrace" (base32 "0r5630bb2d6hk0fbi95fmyfja54nnwdfcj2zjba124pp6xkjyavx") + "errortrace" (base32 "0l9k2rx6z4jkid7kxhbs763s66pxbzvfrgxajykbrmqkv77lhb3w") '("errortrace" "errortrace-doc" "errortrace-lib")) (simple-racket-origin "expeditor" (base32 "0mjfwb4wzwsg5xj3k6cmik0va432n56rp5h7rxx1c2yy3prh1j7q") @@ -756,13 +754,13 @@ (define-public racket "games" (base32 "0kpn3izlx1ccd0pj0dnvmnrhny51b85xy418a7psj70lz8j8415d") '(("games" "."))) (simple-racket-origin - "gui" (base32 "18pcnx3wi8f32i2frm8bn9pi08n4y3c5jgqs4gy21w6f84dv401w") + "gui" (base32 "027imnxwm0663yn9mbkq8sjm1qr1pw7zf4ra168k746hp446ah58") '("gui" "gui-doc" "gui-lib" "tex-table")) (simple-racket-origin "gui-pkg-manager" (base32 "1ji9448d723nklqvycwdswj0ni28sabrncag14f9mx47did5myb5") '("gui-pkg-manager-lib")) (simple-racket-origin - "htdp" (base32 "173xy6ks55npvwn6cykjs41s9qfb70hc2gfjiqvw91hdsbjykwir") + "htdp" (base32 "0pf2kf63xj9s0n44vaxlmnd1bdb1a44gcp807a3b3cmlc1lkb36z") '("htdp" "htdp-doc" "htdp-lib")) (simple-racket-origin "html" (base32 "18n1jnjgzfknc8nv8dppi85nb8q08gqdwkg6hfjk08x0p00anx2x") @@ -795,7 +793,7 @@ (define-public racket "mzcom" (base32 "0rc9pfj7gwm5azghqvcibz6si1x5s2v8mr2yngk7ssq9gzfbi6a4") '(("mzcom" "."))) (simple-racket-origin - "mzscheme" (base32 "192c52zi726h5wjamxrhivjw2waq1im0zpyxhbrkrxknm8x84bs9") + "mzscheme" (base32 "04kyrhznq46mklacf7pms4fv47zsimqqk3948r3w2ym9n04fhjsx") '("mzscheme" "mzscheme-doc" "mzscheme-lib")) (racket-packages-origin "net-cookies" (origin @@ -824,13 +822,13 @@ (define-public racket "option-contract" (base32 "07cncg9pi15cm19k7rzv54vx83wq7y42i2m6bgzaqja1h8vnj2ww") '("option-contract" "option-contract-doc" "option-contract-lib")) (simple-racket-origin - "parser-tools" (base32 "04ycihliikh0c47ivp09gayxiql9d9wpl216czic19cj6f7rmcnj") + "parser-tools" (base32 "11m1x8q0cqb4b082423iv19s86xgkshv29cb4hp8yx84lb0vpwx3") '("parser-tools" "parser-tools-doc" "parser-tools-lib")) (simple-racket-origin "pconvert" (base32 "00czi0p399mmyrvxyrs5kniizpkqfxyz2ncxqi2jy79a7wk79pb1") '("pconvert-lib")) (simple-racket-origin - "pict" (base32 "1n0v7kynkiin1v8igs9m8k8vfwjn5cswanhq2imp1pxzjvdyq6sx") + "pict" (base32 "063a1lc6v1i8ywxcskkvvfxdvlx0qhr0l4l3dkibmnli47mdhv7g") '("pict" "pict-doc" "pict-lib")) (simple-racket-origin "pict-snip" (base32 "081nwiy4a0n4f7xws16hqbhf0j3kz5alizndi3nnyr3chm4kng6x") @@ -839,13 +837,13 @@ (define-public racket "picturing-programs" (base32 "1g6xr39hx1j03gb3d4dljm3v91xcj2gfpq3dgy5xvplzr6cmmxgr") '(("picturing-programs" "."))) (simple-racket-origin - "plai" (base32 "0i983sh0r0zm2ng4j44m5aw9669kh5fhp91bzpc9jm280rfcqvyl") + "plai" (base32 "18kz31pj4lanlf9mn2yc0q9sxis264wb4f9v85ga23wd7g1hrzbq") '("plai" "plai-doc" "plai-lib")) (simple-racket-origin "planet" (base32 "0r2yqrzrmdjjyr14k6hhlzc5kzrcx3583m1s02mhrcmpfw0s85w9") '("planet" "planet-doc" "planet-lib")) (simple-racket-origin - "plot" (base32 "04871pspbm0q3bz5896sa3jw2rp9i6jf0b5aivrxfp56vxxd2ybb") + "plot" (base32 "1129k78vyqg2cbc87r9ak95zpa1ghh26fmz3wr8gm556j5j0k6y5") '("plot" "plot-compat" "plot-doc" "plot-gui-lib" "plot-lib")) (simple-racket-origin "preprocessor" (base32 "1p5aid58ifnjy4xl0ysh85cq39k25661v975jrpk182z3k5621mg") @@ -867,7 +865,7 @@ (define-public racket "r5rs" (base32 "1g3cysj7z88r38vkzvi8g2fb2hn4yg1fdhy5smxw303jxgl3inp6") '("r5rs" "r5rs-doc" "r5rs-lib")) (simple-racket-origin - "r6rs" (base32 "0b1ymzdp10r0flw2acbidjsh5ma1pm5hy54jss37sxf89z3xbvm4") + "r6rs" (base32 "1mgcxd88s67w47a2z1i6snz8qhbngjbmr6rs4pchpnrfap96ssgl") '("r6rs" "r6rs-doc" "r6rs-lib")) (racket-packages-origin "racket-cheat" (origin @@ -900,7 +898,7 @@ (define-public racket "realm" (base32 "0rlvwyd6rpyl0zda4a5p8dp346fvqzc8555dgfnrhliymkxb6x4g") '(("realm" "."))) (simple-racket-origin - "redex" (base32 "06dhyqmin0qdm6b6sdvgzpy3pa4svlw42ld9k2h1dxcr852czil7") + "redex" (base32 "1v5p65y3hnp1mfvy0jl4lhmaw9s3qzzfcfh3fhihhqxsybbqp3q3") '("redex" "redex-benchmark" "redex-doc" @@ -915,7 +913,7 @@ (define-public racket "scheme-lib" (base32 "0pcf0y8rp4qyjhaz5ww5sr5diq0wpcdfrrnask7zapyklzx1jx8x") '(("scheme-lib" "."))) (simple-racket-origin - "scribble" (base32 "0a11kvcnzp04mp4xxq68rkl09jv00hv81k2nmwkmwpfx9b2acvd3") + "scribble" (base32 "1n0ywdham53h2ibkhc0cnrhhaxfkl7ax0bx5sdfpnyh2yrabxwqf") '("scribble" "scribble-doc" "scribble-html-lib" @@ -941,13 +939,13 @@ (define-public racket "slatex" (base32 "0pkm2isbbdk63slrbsxcql7rr0wdrw5kapw1xq4ps5k8dhlzv8x0") '(("slatex" "."))) (simple-racket-origin - "slideshow" (base32 "1znv1i2d0610hhy71q932xy7wka00q3q50in1xfnk8ibg7nzkagm") + "slideshow" (base32 "0s6w4iq7m263jwx01c5czkk1a2950hdpxn5yirxvnr26qpjpfyzr") '("slideshow" "slideshow-doc" "slideshow-exe" "slideshow-lib" "slideshow-plugin")) (simple-racket-origin - "snip" (base32 "01r9wc5xr3q3n4yyif6j0a37rgdzmpslxn05k13ksik73b3wj6hj") + "snip" (base32 "19n2i1m2nysrbv38jxk32abymdbhcxdcrrjsg4ppfbng8niygc8x") '("snip" "snip-lib")) (simple-racket-origin - "typed-racket" (base32 "03wsz647fi58brbg33fw1xavp100gzfvngdy8bk7bdc0jfg8a18l") + "typed-racket" (base32 "0yh9vcg1bjamf6nq3hqxwjg07kjkxyqhvymv3r64j1n4hiiwz6iv") '("source-syntax" "typed-racket" "typed-racket-compatibility" @@ -955,10 +953,10 @@ (define-public racket "typed-racket-lib" "typed-racket-more")) (simple-racket-origin - "srfi" (base32 "0aqbcdv2dfc2xnk0h6zfi56p7bpwqji8s88qds3d03hhh9k28gvn") + "srfi" (base32 "13xvfzr5546m3a4kksyawzcl93nrklasr1slfa5ar3p77h962la4") '("srfi" "srfi-doc" "srfi-lib" "srfi-lite-lib")) (simple-racket-origin - "string-constants" (base32 "1kg3vxq2hcd0vl76brgpzdwbrb65a4nrrkc6hj4az5lfbbdvqz47") + "string-constants" (base32 "174q3ihcp8s52mmlk7z0sipjksiac432pfkm0inlwi92s6p7dlb3") '("string-constants" "string-constants-doc" "string-constants-lib")) (simple-racket-origin "swindle" (base32 "03n9ymjhrw45h7hxkw4nq8nidnvs9mfzb4228s2cjfaqbgqxvsyb") -- 2.38.0 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 2/4] gnu: chez-scheme-for-racket: Support riscv64. 2022-11-18 0:45 ` [bug#59322] [PATCH v2 0/4] " Philip McGrath 2022-11-18 0:45 ` [bug#59322] [PATCH v2 1/4] " Philip McGrath @ 2022-11-18 0:45 ` Philip McGrath 2022-11-18 0:45 ` [bug#59322] [PATCH v2 3/4] gnu: racket-vm-cs: Avoid duplicate work Philip McGrath 2022-11-18 0:45 ` [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope Philip McGrath 3 siblings, 0 replies; 20+ messages in thread From: Philip McGrath @ 2022-11-18 0:45 UTC (permalink / raw) To: 59322; +Cc: Liliana Marie Prikler, Philip McGrath, Liliana Marie Prikler Use the new native backend instead of "portable bytecode". * gnu/packages/chez.scm (target-chez-arch): Support riscv64-linux-gnu. (%chez-features-table): Likewise. --- gnu/packages/chez.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm index 7025a71b94..0d22e2e20f 100644 --- a/gnu/packages/chez.scm +++ b/gnu/packages/chez.scm @@ -104,7 +104,7 @@ (define* (target-chez-arch #:optional (system ((target-ppc32? system) "ppc32") ((target-riscv64? system) - #f) + "rv64") (else #f))) @@ -170,6 +170,7 @@ (define %chez-features-table ("a6" threads bootstrap-bootfiles) ("arm32" bootstrap-bootfiles) ("arm64" . #f) + ("rv64" . #f) ("ppc32" threads)) ;; Hurd ("gnu" -- 2.38.0 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 3/4] gnu: racket-vm-cs: Avoid duplicate work. 2022-11-18 0:45 ` [bug#59322] [PATCH v2 0/4] " Philip McGrath 2022-11-18 0:45 ` [bug#59322] [PATCH v2 1/4] " Philip McGrath 2022-11-18 0:45 ` [bug#59322] [PATCH v2 2/4] gnu: chez-scheme-for-racket: Support riscv64 Philip McGrath @ 2022-11-18 0:45 ` Philip McGrath 2022-11-18 0:45 ` [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope Philip McGrath 3 siblings, 0 replies; 20+ messages in thread From: Philip McGrath @ 2022-11-18 0:45 UTC (permalink / raw) To: 59322; +Cc: Liliana Marie Prikler, Philip McGrath, Liliana Marie Prikler Only configure with '--enable-racket' for cross-compilation: otherwise, it effectively overrides '--enable-scheme' and bootstraps Chez Scheme again. This change saves a couple minutes of build time. See upstream discussion at <https://github.com/racket/racket/issues/4492>. * gnu/packages/racket.scm (racket-vm-cs)[native-inputs]: Only supply a Racket VM when cross-compiling. --- gnu/packages/racket.scm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm index 20d293e998..2cda2b6b9c 100644 --- a/gnu/packages/racket.scm +++ b/gnu/packages/racket.scm @@ -439,14 +439,12 @@ (define-public racket-vm-cs (let ((native-inputs (package-native-inputs racket-vm-cgc))) (modify-inputs (if (%current-target-system) (modify-inputs native-inputs + (prepend this-package) (delete "racket-vm-cgc")) native-inputs) (delete "libtool") (prepend chez-scheme-for-racket - chez-nanopass-bootstrap - (if (%current-target-system) - racket-vm-cs - racket-vm-bc))))) + chez-nanopass-bootstrap)))) (arguments (substitute-keyword-arguments (package-arguments racket-vm-cgc) ((#:phases those-phases #~%standard-phases) -- 2.38.0 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope. 2022-11-18 0:45 ` [bug#59322] [PATCH v2 0/4] " Philip McGrath ` (2 preceding siblings ...) 2022-11-18 0:45 ` [bug#59322] [PATCH v2 3/4] gnu: racket-vm-cs: Avoid duplicate work Philip McGrath @ 2022-11-18 0:45 ` Philip McGrath 2022-11-18 7:01 ` Liliana Marie Prikler 2022-12-01 21:08 ` bug#59322: [PATCH 0/2] gnu: racket: Update to 8.7 Ludovic Courtès 3 siblings, 2 replies; 20+ messages in thread From: Philip McGrath @ 2022-11-18 0:45 UTC (permalink / raw) To: 59322; +Cc: Liliana Marie Prikler, Philip McGrath, Liliana Marie Prikler Racket's variant of Chez Scheme is defined in that file. * etc/teams.scm.in (racket)[#:scope]: Add gnu/packages/chez.scm. --- etc/teams.scm.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/etc/teams.scm.in b/etc/teams.scm.in index c458b14e3b..f744204017 100644 --- a/etc/teams.scm.in +++ b/etc/teams.scm.in @@ -393,7 +393,8 @@ (define-team racket "The Racket language and Racket-based languages, Racket packages, Racket's variant of Chez Scheme, and development of a Racket build system and importer." - #:scope (list "gnu/packages/racket.scm"))) + #:scope (list "gnu/packages/chez.scm" + "gnu/packages/racket.scm"))) \f (define-member (person "Thiago Jung Bauermann" -- 2.38.0 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope. 2022-11-18 0:45 ` [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope Philip McGrath @ 2022-11-18 7:01 ` Liliana Marie Prikler 2022-11-18 8:26 ` zimoun 2022-12-01 21:08 ` bug#59322: [PATCH 0/2] gnu: racket: Update to 8.7 Ludovic Courtès 1 sibling, 1 reply; 20+ messages in thread From: Liliana Marie Prikler @ 2022-11-18 7:01 UTC (permalink / raw) To: Philip McGrath, 59322; +Cc: Liliana Marie Prikler Am Donnerstag, dem 17.11.2022 um 19:45 -0500 schrieb Philip McGrath: > Racket's variant of Chez Scheme is defined in that file. > > * etc/teams.scm.in (racket)[#:scope]: Add gnu/packages/chez.scm. > --- > etc/teams.scm.in | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/etc/teams.scm.in b/etc/teams.scm.in > index c458b14e3b..f744204017 100644 > --- a/etc/teams.scm.in > +++ b/etc/teams.scm.in > @@ -393,7 +393,8 @@ (define-team racket > "The Racket language and Racket-based languages, Racket > packages, > Racket's variant of Chez Scheme, and development of a Racket build > system and > importer." > - #:scope (list "gnu/packages/racket.scm"))) > + #:scope (list "gnu/packages/chez.scm" > + "gnu/packages/racket.scm"))) I'm not sure whether this accurately captures the intent of teams. Yes, chez-scheme is required in Racket's bootstrap, but the only "legal" changes to Racket's variant also affect racket.scm. On the other hand, the Racket team would weigh in on changes that only affect the Chez side, which imho is unwarranted. Cheers ^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope. 2022-11-18 7:01 ` Liliana Marie Prikler @ 2022-11-18 8:26 ` zimoun 2022-11-18 19:23 ` Liliana Marie Prikler 2022-11-18 19:33 ` Philip McGrath 0 siblings, 2 replies; 20+ messages in thread From: zimoun @ 2022-11-18 8:26 UTC (permalink / raw) To: Liliana Marie Prikler, Philip McGrath, 59322; +Cc: Liliana Marie Prikler Hi, On Fri, 18 Nov 2022 at 08:01, Liliana Marie Prikler <liliana.prikler@ist.tugraz.at> wrote: >> - #:scope (list "gnu/packages/racket.scm"))) >> + #:scope (list "gnu/packages/chez.scm" >> + "gnu/packages/racket.scm"))) > > I'm not sure whether this accurately captures the intent of teams. > Yes, chez-scheme is required in Racket's bootstrap, but the only > "legal" changes to Racket's variant also affect racket.scm. On the > other hand, the Racket team would weigh in on changes that only affect > the Chez side, which imho is unwarranted. Why not? Considering the only person part of the Racket team is Philip, the false-positive seems acceptable, no? BTW, Liliana, since you are often reviewing these patches, why not also add you as part of the Racket team? Cheers, simon ^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope. 2022-11-18 8:26 ` zimoun @ 2022-11-18 19:23 ` Liliana Marie Prikler 2022-11-18 19:33 ` Philip McGrath 1 sibling, 0 replies; 20+ messages in thread From: Liliana Marie Prikler @ 2022-11-18 19:23 UTC (permalink / raw) To: zimoun, Philip McGrath, 59322 Am Freitag, dem 18.11.2022 um 09:26 +0100 schrieb zimoun: > Hi, > > On Fri, 18 Nov 2022 at 08:01, Liliana Marie Prikler > <liliana.prikler@ist.tugraz.at> wrote: > > > > - #:scope (list "gnu/packages/racket.scm"))) > > > + #:scope (list "gnu/packages/chez.scm" > > > + "gnu/packages/racket.scm"))) > > > > I'm not sure whether this accurately captures the intent of teams. > > Yes, chez-scheme is required in Racket's bootstrap, but the only > > "legal" changes to Racket's variant also affect racket.scm. On the > > other hand, the Racket team would weigh in on changes that only > > affect the Chez side, which imho is unwarranted. > > Why not? Considering the only person part of the Racket team is > Philip, the false-positive seems acceptable, no? Given that folks tune out the main mailing list > BTW, Liliana, since you are often reviewing these patches, why not > also add you as part of the Racket team? To be frank, I only review them with respect to Guix coding guidelines. I have no idea how Racket itself works – if I did, I would already have fixed some annoyances with its packaging – and I fear that despite all my efforts Philip might be the only one who truly understands what's going on. Cheers ^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope. 2022-11-18 8:26 ` zimoun 2022-11-18 19:23 ` Liliana Marie Prikler @ 2022-11-18 19:33 ` Philip McGrath 2022-11-19 7:54 ` Liliana Marie Prikler 1 sibling, 1 reply; 20+ messages in thread From: Philip McGrath @ 2022-11-18 19:33 UTC (permalink / raw) To: Liliana Marie Prikler, 59322, zimoun; +Cc: Liliana Marie Prikler [-- Attachment #1: Type: text/plain, Size: 1859 bytes --] Hi, On Friday, November 18, 2022 3:26:27 AM EST zimoun wrote: > Hi, > > On Fri, 18 Nov 2022 at 08:01, Liliana Marie Prikler <liliana.prikler@ist.tugraz.at> wrote: > >> - #:scope (list "gnu/packages/racket.scm"))) > >> + #:scope (list "gnu/packages/chez.scm" > >> + "gnu/packages/racket.scm"))) > > > > I'm not sure whether this accurately captures the intent of teams. > > Yes, chez-scheme is required in Racket's bootstrap, but the only > > "legal" changes to Racket's variant also affect racket.scm. On the > > other hand, the Racket team would weigh in on changes that only affect > > the Chez side, which imho is unwarranted. > > Why not? Considering the only person part of the Racket team is Philip, > the false-positive seems acceptable, no? > I don't have a strong view: feel free to just drop this patch for now if you feel it needs more discussion but the others are ready to merge. Since the chez-scheme-for-racket package inherits from the chez-scheme package, any change to the chez-scheme package will affect racket, racket- minimal, and racket-vm-cs. I could certainly imagine having a Chez team that doesn't necessarily care about Racket. Likewise, in both languages, I imagine there could be people interested in packages that use the language but who wouldn't necessarily be interested in the packaging of the compilers and run-time systems themselves. But, since no one else has signed on and I've made the majority of changes to both files in the last two years, designing a more fine-grained team structure seemed premature. I guess I've also thought of teams as less "would way in on" changes and more as "would like to be CC'ed about" them. I'd rather get a little more email than miss relevant changes (even though I can't keep up with the whole patches mailing list). -Philip [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope. 2022-11-18 19:33 ` Philip McGrath @ 2022-11-19 7:54 ` Liliana Marie Prikler 2022-11-19 23:52 ` Philip McGrath 2022-11-21 16:50 ` [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope zimoun 0 siblings, 2 replies; 20+ messages in thread From: Liliana Marie Prikler @ 2022-11-19 7:54 UTC (permalink / raw) To: Philip McGrath, 59322, zimoun Am Freitag, dem 18.11.2022 um 14:33 -0500 schrieb Philip McGrath: > I could certainly imagine having a Chez team that doesn't necessarily > care about Racket. Likewise, in both languages, I imagine there could > be people interested in packages that use the language but who > wouldn't necessarily be interested in the packaging of the compilers > and run-time systems themselves. > But, since no one else has signed on and I've made the majority of > changes to both files in the last two years, designing a more fine- > grained team structure seemed premature. I can see where you're coming from, but my personal opinion is that merging these "two" teams now might discourage us from splitting them later. In my humble opinion, adding a chez team with you as sole member wouldn't hurt for the time being. Cheers ^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope. 2022-11-19 7:54 ` Liliana Marie Prikler @ 2022-11-19 23:52 ` Philip McGrath 2022-11-20 1:49 ` Liliana Marie Prikler 2022-11-23 18:44 ` [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7 Ludovic Courtès 2022-11-21 16:50 ` [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope zimoun 1 sibling, 2 replies; 20+ messages in thread From: Philip McGrath @ 2022-11-19 23:52 UTC (permalink / raw) To: 59322, zimoun, Liliana Marie Prikler [-- Attachment #1: Type: text/plain, Size: 2447 bytes --] On Saturday, November 19, 2022 2:54:55 AM EST Liliana Marie Prikler wrote: > Am Freitag, dem 18.11.2022 um 14:33 -0500 schrieb Philip McGrath: > > I could certainly imagine having a Chez team that doesn't necessarily > > care about Racket. Likewise, in both languages, I imagine there could > > be people interested in packages that use the language but who > > wouldn't necessarily be interested in the packaging of the compilers > > and run-time systems themselves. > > But, since no one else has signed on and I've made the majority of > > changes to both files in the last two years, designing a more fine- > > grained team structure seemed premature. > > I can see where you're coming from, but my personal opinion is that > merging these "two" teams now might discourage us from splitting them > later. In my humble opinion, adding a chez team with you as sole > member wouldn't hurt for the time being. > Is there a requirement that teams' scopes be disjoint? In other words, is there any reason "gnu/packages/chez.scm" shouldn't be in scope for both the racket team and a potential chez team? Another factor that might be relevant: Matthew Flatt tells me he is actively working with the Chez Scheme maintainers to merge the two branches. I'm not involved in these discussions myself: my understanding is that details are still being worked out, and I don't know what the time frame will be, but from what I'm told it's gone from "not in the foreseeable future" to "will happen". (There's no plan to synchronize the release cycles, and Racket will continue to rely on unstable Chez system functions and to have the Chez version form part of its ABI, so we will likely continue to have a chez-scheme-for-racket package, but it should be a much simpler transformation to use a particular pre-release version.) After the merge, we should be able to bootstrap upstream Chez Scheme via Racket as we currently do with chez-scheme-for-racket, at which changes to Racket will also potentially impact Chez Scheme. Personally, if there were more people involved, I'd organize it as teams for chez-and-racket-bootstrap, chez, and racket, as I'd initially tried to do in https://issues.guix.gnu.org/53878, but that especially seems like too much if they all consist of the same one person. If you still want a chez team, though, I guess I'm ok with that. I just hope this need not delay the update to 8.7 any further. -Philip [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope. 2022-11-19 23:52 ` Philip McGrath @ 2022-11-20 1:49 ` Liliana Marie Prikler 2022-11-23 18:44 ` [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7 Ludovic Courtès 1 sibling, 0 replies; 20+ messages in thread From: Liliana Marie Prikler @ 2022-11-20 1:49 UTC (permalink / raw) To: Philip McGrath, 59322, zimoun Am Samstag, dem 19.11.2022 um 18:52 -0500 schrieb Philip McGrath: > [...] > Is there a requirement that teams' scopes be disjoint? In other > words, is there any reason "gnu/packages/chez.scm" shouldn't be in > scope for both the racket team and a potential chez team? Not necessarily, but I think exceptions should be well argued. For instance, it would make sense for a change in Emacs' build system to reach both Emacs and core maintainers. In practice however, core does not have any build system in their scope, which strengthens my argument for disjoint groups. > Another factor that might be relevant: Matthew Flatt tells me he is > actively working with the Chez Scheme maintainers to merge the two > branches. I'm not involved in these discussions myself: my > understanding is that details are still being worked out, and I don't > know what the time frame will be, but from what I'm told it's gone > from "not in the foreseeable future" to "will happen". > > (There's no plan to synchronize the release cycles, and Racket will > continue to rely on unstable Chez system functions and to have the > Chez version form part of its ABI, so we will likely continue to have > a chez-scheme-for-racket package, but it should be a much simpler > transformation to use a particular pre-release version.) Depending on how well that goes, that'd be one headache less. I'll be cautiously optimistic and hope that Racket won't do another Zuo and publish a subtree without release tags. > After the merge, we should be able to bootstrap upstream Chez Scheme > via Racket as we currently do with chez-scheme-for-racket, at which > changes to Racket will also potentially impact Chez Scheme. > > Personally, if there were more people involved, I'd organize it as > teams for chez-and-racket-bootstrap, chez, and racket, as I'd > initially tried to do in https://issues.guix.gnu.org/53878, but that > especially seems like too much if they all consist of the same one > person. If you still want a chez team, though, I guess I'm ok with > that. Three teams for two packages is definitely overkill. I'd make it either one or two, with the caveat that both of them being the same should rest on a sound argument rather than a vague one. If chez and racket were interchangeable like different Common Lisp interpretations, that'd be such an argument, or if there was a shared community not just by virtue of bootstrapping. > I just hope this need not delay the update to 8.7 any further. Well, since CI already built everything and 1-3 LGTM, I went ahead and pushed it, so you don't need to worry. Cheers ^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7. 2022-11-19 23:52 ` Philip McGrath 2022-11-20 1:49 ` Liliana Marie Prikler @ 2022-11-23 18:44 ` Ludovic Courtès 1 sibling, 0 replies; 20+ messages in thread From: Ludovic Courtès @ 2022-11-23 18:44 UTC (permalink / raw) To: Philip McGrath; +Cc: Liliana Marie Prikler, 59322, zimoun Hi Philip & all, Philip McGrath <philip@philipmcgrath.com> skribis: > On Saturday, November 19, 2022 2:54:55 AM EST Liliana Marie Prikler wrote: >> Am Freitag, dem 18.11.2022 um 14:33 -0500 schrieb Philip McGrath: >> > I could certainly imagine having a Chez team that doesn't necessarily >> > care about Racket. Likewise, in both languages, I imagine there could >> > be people interested in packages that use the language but who >> > wouldn't necessarily be interested in the packaging of the compilers >> > and run-time systems themselves. >> > But, since no one else has signed on and I've made the majority of >> > changes to both files in the last two years, designing a more fine- >> > grained team structure seemed premature. >> >> I can see where you're coming from, but my personal opinion is that >> merging these "two" teams now might discourage us from splitting them >> later. In my humble opinion, adding a chez team with you as sole >> member wouldn't hurt for the time being. >> > > Is there a requirement that teams' scopes be disjoint? In other words, is > there any reason "gnu/packages/chez.scm" shouldn't be in scope for both the > racket team and a potential chez team? No. To me, the goal of teams is to have groups of people one can talk to when touching a particular part of the code base. In that sense, your patch is a welcome improvement over the status quo; in fact, it just formalizes what has been a de-facto situation: you’re our Racket and Chez expert. And even a Racket ambassador. :-) So I think we can go ahead with this patch and remain open to getting more folks on board whenever an opportunity arises. Thoughts? Thanks, Ludo’. ^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope. 2022-11-19 7:54 ` Liliana Marie Prikler 2022-11-19 23:52 ` Philip McGrath @ 2022-11-21 16:50 ` zimoun 1 sibling, 0 replies; 20+ messages in thread From: zimoun @ 2022-11-21 16:50 UTC (permalink / raw) To: Liliana Marie Prikler, Philip McGrath, 59322 Hi, On Sat, 19 Nov 2022 at 08:54, Liliana Marie Prikler <liliana.prikler@gmail.com> wrote: > I can see where you're coming from, but my personal opinion is that > merging these "two" teams now might discourage us from splitting them > later. In my humble opinion, adding a chez team with you as sole > member wouldn't hurt for the time being. Philip, could you send a patch for creating these two teams? Cheers, simon ^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#59322: [PATCH 0/2] gnu: racket: Update to 8.7. 2022-11-18 0:45 ` [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope Philip McGrath 2022-11-18 7:01 ` Liliana Marie Prikler @ 2022-12-01 21:08 ` Ludovic Courtès 1 sibling, 0 replies; 20+ messages in thread From: Ludovic Courtès @ 2022-12-01 21:08 UTC (permalink / raw) To: Philip McGrath; +Cc: Liliana Marie Prikler, Liliana Marie Prikler, 59322-done Hi, Philip McGrath <philip@philipmcgrath.com> skribis: > Racket's variant of Chez Scheme is defined in that file. > > * etc/teams.scm.in (racket)[#:scope]: Add gnu/packages/chez.scm. I went ahead and applied it. Thanks! Ludo’. ^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH 2/2] gnu: racket-vm-cs: Avoid duplicate work. 2022-11-16 21:36 [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7 Philip McGrath 2022-11-16 21:39 ` [bug#59322] [PATCH 1/2] " Philip McGrath @ 2022-11-16 21:39 ` Philip McGrath 2022-12-04 13:25 ` [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7 Enrico Schwass via Guix-patches via 2 siblings, 0 replies; 20+ messages in thread From: Philip McGrath @ 2022-11-16 21:39 UTC (permalink / raw) To: 59322; +Cc: Philip McGrath Only configure with '--enable-racket' for cross-compilation: otherwise, it effectively overrides '--enable-scheme' and bootstraps Chez Scheme again. This change saves a couple minutes of build time. See upstream discussion at <https://github.com/racket/racket/issues/4492>. * gnu/packages/racket.scm (racket-vm-cs)[native-inputs]: Only supply a Racket VM when cross-compiling. --- gnu/packages/racket.scm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm index 20d293e998..2cda2b6b9c 100644 --- a/gnu/packages/racket.scm +++ b/gnu/packages/racket.scm @@ -439,14 +439,12 @@ (define-public racket-vm-cs (let ((native-inputs (package-native-inputs racket-vm-cgc))) (modify-inputs (if (%current-target-system) (modify-inputs native-inputs + (prepend this-package) (delete "racket-vm-cgc")) native-inputs) (delete "libtool") (prepend chez-scheme-for-racket - chez-nanopass-bootstrap - (if (%current-target-system) - racket-vm-cs - racket-vm-bc))))) + chez-nanopass-bootstrap)))) (arguments (substitute-keyword-arguments (package-arguments racket-vm-cgc) ((#:phases those-phases #~%standard-phases) -- 2.38.0 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7. 2022-11-16 21:36 [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7 Philip McGrath 2022-11-16 21:39 ` [bug#59322] [PATCH 1/2] " Philip McGrath 2022-11-16 21:39 ` [bug#59322] [PATCH 2/2] gnu: racket-vm-cs: Avoid duplicate work Philip McGrath @ 2022-12-04 13:25 ` Enrico Schwass via Guix-patches via 2 siblings, 0 replies; 20+ messages in thread From: Enrico Schwass via Guix-patches via @ 2022-12-04 13:25 UTC (permalink / raw) To: 59322 Hi racket fails to build on aarch64 for long time with csh not found error ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2022-12-04 17:19 UTC | newest] Thread overview: 20+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-11-16 21:36 [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7 Philip McGrath 2022-11-16 21:39 ` [bug#59322] [PATCH 1/2] " Philip McGrath 2022-11-17 7:30 ` Liliana Marie Prikler 2022-11-18 0:45 ` [bug#59322] [PATCH v2 0/4] " Philip McGrath 2022-11-18 0:45 ` [bug#59322] [PATCH v2 1/4] " Philip McGrath 2022-11-18 0:45 ` [bug#59322] [PATCH v2 2/4] gnu: chez-scheme-for-racket: Support riscv64 Philip McGrath 2022-11-18 0:45 ` [bug#59322] [PATCH v2 3/4] gnu: racket-vm-cs: Avoid duplicate work Philip McGrath 2022-11-18 0:45 ` [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope Philip McGrath 2022-11-18 7:01 ` Liliana Marie Prikler 2022-11-18 8:26 ` zimoun 2022-11-18 19:23 ` Liliana Marie Prikler 2022-11-18 19:33 ` Philip McGrath 2022-11-19 7:54 ` Liliana Marie Prikler 2022-11-19 23:52 ` Philip McGrath 2022-11-20 1:49 ` Liliana Marie Prikler 2022-11-23 18:44 ` [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7 Ludovic Courtès 2022-11-21 16:50 ` [bug#59322] [PATCH v2 4/4] etc: teams: Add chez.scm to Racket team's scope zimoun 2022-12-01 21:08 ` bug#59322: [PATCH 0/2] gnu: racket: Update to 8.7 Ludovic Courtès 2022-11-16 21:39 ` [bug#59322] [PATCH 2/2] gnu: racket-vm-cs: Avoid duplicate work Philip McGrath 2022-12-04 13:25 ` [bug#59322] [PATCH 0/2] gnu: racket: Update to 8.7 Enrico Schwass via Guix-patches via
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.