From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id sDtPCwVSB2PyagAAbAwnHQ (envelope-from ) for ; Thu, 25 Aug 2022 12:42:13 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id 6HsnCwVSB2PxIAAA9RJhRA (envelope-from ) for ; Thu, 25 Aug 2022 12:42:13 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 73AD711CAD for ; Thu, 25 Aug 2022 12:42:12 +0200 (CEST) Received: from localhost ([::1]:50186 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oRAJP-0002ZP-Ej for larch@yhetil.org; Thu, 25 Aug 2022 06:42:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55376) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oRAIJ-0001dd-Ej for guix-patches@gnu.org; Thu, 25 Aug 2022 06:41:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:59363) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oRAII-0003lK-MI for guix-patches@gnu.org; Thu, 25 Aug 2022 06:41:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1oRAII-0007gb-D9 for guix-patches@gnu.org; Thu, 25 Aug 2022 06:41:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#57050] [PATCH v3 08/14] gnu: racket: Update to 8.6. Resent-From: Efraim Flashner Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Thu, 25 Aug 2022 10:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 57050 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Philip McGrath Cc: Thiago Jung Bauermann , "\(" , Maxime Devos , Liliana Marie Prikler , Liliana Marie Prikler , 57050@debbugs.gnu.org Received: via spool by 57050-submit@debbugs.gnu.org id=B57050.166142403229484 (code B ref 57050); Thu, 25 Aug 2022 10:41:02 +0000 Received: (at 57050) by debbugs.gnu.org; 25 Aug 2022 10:40:32 +0000 Received: from localhost ([127.0.0.1]:49112 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oRAHk-0007fM-S8 for submit@debbugs.gnu.org; Thu, 25 Aug 2022 06:40:32 -0400 Received: from flashner.co.il ([178.62.234.194]:50648) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oRAHg-0007f5-Ez for 57050@debbugs.gnu.org; Thu, 25 Aug 2022 06:40:27 -0400 Received: from localhost (unknown [31.210.177.64]) by flashner.co.il (Postfix) with ESMTPSA id 0B7FA40204; Thu, 25 Aug 2022 10:40:17 +0000 (UTC) Date: Thu, 25 Aug 2022 13:39:45 +0300 From: Efraim Flashner Message-ID: Mail-Followup-To: Efraim Flashner , Philip McGrath , 57050@debbugs.gnu.org, Thiago Jung Bauermann , Liliana Marie Prikler , Liliana Marie Prikler , Maxime Devos , "(" References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="lCl/lM2rz9HVOOZr" Content-Disposition: inline In-Reply-To: X-PGP-Key-ID: 0x41AAE7DCCA3D8351 X-PGP-Key: https://flashner.co.il/~efraim/efraim_flashner.asc X-PGP-Fingerprint: A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1661424132; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post; bh=HkCOI/mXwVBLPhZtFmLzcDgmXNKSpWWdCyCIwXYkM2k=; b=Jr9qHQyKritT+cinIk+AFM7NRMMugw+k4z36uOVsFQM0EH1voRILeSBXmHAPVlfwkWL+kw 1C74mMP5FvfujMCCVbFWfnqh2DCSmjoSPCjTm3rBQWkYb3NZbIZuhiwcPyIJKdeHUNZZSl hEz3i8TgztMJvvseNC61e37s2tfYsOK0+P0RTAX2nyR7RrRCPH0AITr7fIr7ZQ+EuRCDkC Ck1FYt9NnoHw+I6NxOm7aa5Tin9jw56UcEDiv7+jhcehL5jDutx2/h9BvsaLHIG6wwq/X0 G1Uq6Bx42mzNvci6Q9PK9E3kbnKNVH8nXhY9xwzVhgwHNoC696AipPUiyViQqA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1661424132; a=rsa-sha256; cv=none; b=TLgyb8yZKdeDHYL6FW5Uw7arXvWfTupV3aur3y5m2XPL7TXalMifzzlt39ahVQOF3FbX+o LTttG1MQkXuTRk2JPeNlr8o2I0HD3LIyS2zbE3Zyjh703SJ59eVmxf/rXfnMtyIzD8NVVv iiqWPF0Bm0JfoYLcGncMFI2ziDW6oGAgTYykeOOyKj2TGQmXHorkRLifcWy2Vlyzmz5qK5 Losvkys3nKzHzG1vbY0QAhlrdORNjPPT9ww9BZPbDMSIOqgAJ23ff9PJycLqTOvqbd5fjl L3HEtU8Tx4O7gh4Xy45DRd9TT0Z9jgOC1kXoaTFTc2YaTssrWRP8yKlNW545EQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -3.41 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 73AD711CAD X-Spam-Score: -3.41 X-Migadu-Scanner: scn0.migadu.com X-TUID: N5oD8fGdFUsk --lCl/lM2rz9HVOOZr Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Aug 25, 2022 at 04:54:10AM -0400, Philip McGrath wrote: > Also, update 'chez-scheme-for-racket' to 9.5.9.2. >=20 > * gnu/packages/patches/racket-chez-scheme-bin-sh.patch: Refresh patch. > * 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: New patches. > * gnu/local.mk (dist_patch_DATA): Add them. > * gnu/packages/racket.scm (%racket-origin)[patches]: Use them and the > patches for Zuo. > (%racket-version): Update to 8.6. I see this addresses my comments from the other patch about having 8.6 everywhere, so disregard those comments. > (zuo)[version]: Refer to '%racket-version'. > [origin]: Use '%racket-origin'. > (racket-vm-cgc)[native-inputs]: Add 'zuo'. > [arguments]<#:make-flags>: Use 'zuo' from 'native-inputs'. > (racket)[inputs] gui, htdp, math, option-contract, parser-tools, pict, rackunit, realm, > redex, scribble, typed-racket, string-constants, swindle, syntax-color, > web-server>: Update checksums. > * gnu/packages/chez.scm (target-chez-os): Handle Hurd and QNX. > (%chez-features-table): Likewise. > (chez-scheme-for-racket): Update to 9.5.9.2. > [native-inputs]: Add 'zuo'. > [arguments]<#:out-of-source?>: Use out-of-source build. > <#:tests?>: Skip them due to ongoing problems. > <#:configure-flags>: Add '--install-csug=3D' and '--installreleasenotes= =3D'. > <#:make-flags>: Use 'zuo' from 'native-inputs'. Supply 'STEXLIB=3D' here, > rather than in a phase. > <#:phases>: Replace 'install-docs' using new 'make' target. > --- > gnu/packages/chez.scm | 52 +- > .../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-chez-scheme-bin-sh.patch | 26 +- > gnu/packages/racket.scm | 121 ++-- > 6 files changed, 893 insertions(+), 77 deletions(-) > create mode 100644 gnu/packages/patches/racket-backport-8.6-cross-instal= l.patch > create mode 100644 gnu/packages/patches/racket-backport-8.6-docindex-wri= te.patch > create mode 100644 gnu/packages/patches/racket-backport-8.6-hurd.patch >=20 > diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm > index c627c4d842..b59398578a 100644 > --- a/gnu/packages/chez.scm > +++ b/gnu/packages/chez.scm > @@ -115,7 +115,7 @@ (define* (target-chez-os #:optional (system (or (%cur= rent-target-system) > ((target-linux? system) > "le") > ((target-hurd? system) > - #f) > + "gnu") > ((target-mingw? system) > "nt") > ;; missing (guix utils) predicates > @@ -131,6 +131,8 @@ (define* (target-chez-os #:optional (system (or (%cur= rent-target-system) > ;; Nix says "x86_64-solaris", but accommodate "-solaris2" > ((string-contains system "solaris") > "s2") > + ((string-suffix? "-qnx" system) > + "qnx") > ;; unknown > (else > #f))) > @@ -167,6 +169,9 @@ (define %chez-features-table > ("arm32" bootstrap-bootfiles) > ("arm64" . #f) > ("ppc32" threads)) > + ;; Hurd > + ("gnu" > + ("i3" . #f)) > ;; FreeBSD > ("fb" > ("i3" threads) ;; commented out > @@ -192,6 +197,9 @@ (define %chez-features-table > ("s2" > ("i3" threads) ;; commented out > ("a6" threads)) ;; commented out > + ;; QNX > + ("qnx" > + ("i3" . #f)) > ;; Windows > ("nt" > ("i3" threads bootstrap-bootfiles) > @@ -433,7 +441,7 @@ (define-public chez-scheme-for-racket > (package > (inherit chez-scheme) > (name "chez-scheme-for-racket") > - (version "9.5.7.6") > + (version "9.5.9.2") > ;; The version should match `(scheme-fork-version-number)`. > ;; See racket/src/ChezScheme/s/cmacros.ss c. line 360. > ;; It will always be different than the upstream version! > @@ -444,18 +452,52 @@ (define-public chez-scheme-for-racket > (delete "libx11" "util-linux:lib"))) > (native-inputs > (modify-inputs (package-native-inputs chez-scheme) > + (prepend zuo) > (replace "chez-scheme-bootstrap-bootfiles" > chez-scheme-for-racket-bootstrap-bootfiles))) > (arguments > (substitute-keyword-arguments (package-arguments chez-scheme) > + ((#:out-of-source? _ #f) > + #t) > + ((#:tests? _ #t) > + ;; FIXME: There have been some flaky test failures. Some have be= en > + ;; 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 #~'()) > - #~(cons* "--disable-x11" > - "--threads" ;; ok to potentially duplicate > - #$cfg-flags)) > + #~`("--disable-x11" > + "--threads" ;; ok to potentially duplicate > + ,@(let* ((chez+version (strip-store-file-name #$output)) I would've used (string-append #$name "-" #$version) but that works too. > + (doc-prefix (assoc-ref %outputs "doc")) This can be #$output:doc, but what you have is also ok. > + (doc-dir (string-append doc-prefix > + "/share/doc/" > + chez+version))) > + (list (string-append "--installcsug=3D" > + doc-dir > + "/csug") > + (string-append "--installreleasenotes=3D" > + doc-dir > + "/release_notes"))) > + ,@#$cfg-flags)) > + ((#:make-flags mk-flags #~'()) > + #~(cons* (string-append "ZUO=3D" > + #+(this-package-native-input "zuo") > + "/bin/zuo") > + (string-append "STEXLIB=3D" > + #+(this-package-native-input "stex") > + "/lib/stex") > + #$mk-flags)) > ((#:phases those-phases #~%standard-phases) > #~(let* ((those-phases #$those-phases) > (unpack (assoc-ref those-phases 'unpack))) > (modify-phases those-phases > + (replace 'install-docs > + (lambda* (#:key make-flags #:allow-other-keys) > + (apply invoke > + "make" > + "install-docs" > + make-flags))) > (replace 'unpack > (lambda args > (unpack #:source #$(or (package-source this-package) > diff --git a/gnu/packages/patches/racket-backport-8.6-cross-install.patch= b/gnu/packages/patches/racket-backport-8.6-cross-install.patch > new file mode 100644 > index 0000000000..2c4d8924ed > --- /dev/null > +++ b/gnu/packages/patches/racket-backport-8.6-cross-install.patch > @@ -0,0 +1,126 @@ > +From fbe2094f56fb81c888076c781e90fb0abbc0cc07 Mon Sep 17 00:00:00 2001 > +From: Matthew Flatt > +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 v= ia `SETUP_MACHINE_FLAGS`, > + ;; but redundant should be ok: > + (list "-MCR" (~a (at-dir "compiled") ":") > +--=20 > +2.32.0 > + > + > +From 85802f4d515e310e657928707800ad709a676e2a Mon Sep 17 00:00:00 2001 > +From: Matthew Flatt > +Date: Mon, 15 Aug 2022 10:37:01 +0800 > +Subject: [PATCH 2/2] configure: adjust cross-build assumption for a pb b= uild > + > +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 > +=20 > ++if test "${MACH}" =3D "" ; then > ++ default_mach_was_empty=3Dyes > ++else > ++ default_mach_was_empty=3Dno > ++fi > +=20 > + if test "${enable_mach}" !=3D "" ; then > + MACH=3D"${enable_mach}" > +@@ -4701,13 +4706,15 @@ elif test "$MACH" =3D "" -o "$MACH_OS" =3D "" ; = then > + exit 1 > + fi > +=20 > +-# 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 optio= ns) > + if test "${enable_pb}" =3D "yes" ; then > + if test "${enable_racket}" !=3D "" ; then > + if test "${enable_target}" =3D "" ; then > +- enable_target=3D"${MACH}" > ++ if test "${default_mach_was_empty}" =3D "no" ; then > ++ enable_target=3D"${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 > +=20 > ++if test "${MACH}" =3D "" ; then > ++ default_mach_was_empty=3Dyes > ++else > ++ default_mach_was_empty=3Dno > ++fi > +=20 > + if test "${enable_mach}" !=3D "" ; then > + MACH=3D"${enable_mach}" > +@@ -437,13 +442,15 @@ elif test "$MACH" =3D "" -o "$MACH_OS" =3D "" ; th= en > + exit 1 > + fi > +=20 > +-# 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 optio= ns) > + if test "${enable_pb}" =3D "yes" ; then > + if test "${enable_racket}" !=3D "" ; then > + if test "${enable_target}" =3D "" ; then > +- enable_target=3D"${MACH}" > ++ if test "${default_mach_was_empty}" =3D "no" ; then > ++ enable_target=3D"${MACH}" > ++ fi > + fi > + fi > + fi > +--=20 > +2.32.0 > + > diff --git a/gnu/packages/patches/racket-backport-8.6-docindex-write.patc= h b/gnu/packages/patches/racket-backport-8.6-docindex-write.patch > new file mode 100644 > index 0000000000..abe1984507 > --- /dev/null > +++ b/gnu/packages/patches/racket-backport-8.6-docindex-write.patch > @@ -0,0 +1,36 @@ > +From 8b4d686a62fd66dedfc40ecdcf3698316993d614 Mon Sep 17 00:00:00 2001 > +From: Philip McGrath > +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/se= tup/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 (=3D 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) > +--=20 > +2.32.0 > + > diff --git a/gnu/packages/patches/racket-backport-8.6-hurd.patch b/gnu/pa= ckages/patches/racket-backport-8.6-hurd.patch > new file mode 100644 > index 0000000000..d593b01e62 > --- /dev/null > +++ b/gnu/packages/patches/racket-backport-8.6-hurd.patch > @@ -0,0 +1,609 @@ > +From f17b030fa2f902bb3666913d4a3cd6ba9c146d22 Mon Sep 17 00:00:00 2001 > +From: Philip McGrath > +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/REA= DME.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 > +=20 > + #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 > +=20 > + 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/p= rim5.c > +index 124d1e049c..82bbf8d687 100644 > +--- a/racket/src/ChezScheme/c/prim5.c > ++++ b/racket/src/ChezScheme/c/prim5.c > +@@ -23,6 +23,10 @@ > + #include > + #include > +=20 > ++#if defined(__GNU__) /* Hurd */ > ++#include > ++#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 *o= utfn); > + 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]) !=3D 0) _exit(1); > + CLOSE(1); if (dup(fromfds[1]) !=3D 1) _exit(1); > + CLOSE(2); if (dup(stderrp ? errfds[1] : 1) !=3D 2) _exit(1); > ++#ifndef __GNU__ /* Hurd */ > + {INT i; for (i =3D 3; i < NOFILE; i++) (void)CLOSE(i);} > ++#else /* __GNU__ Hurd: no NOFILE */ > ++ { > ++ INT i; > ++ struct rlimit rlim; > ++ getrlimit(RLIMIT_NOFILE, &rlim); > ++ for (i =3D 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 =3D getcwd(NULL, 0); > ++ if (NULL =3D=3D path) { > ++ return NULL; > ++ } else { > ++ len =3D strlen(path); > ++ bv =3D S_bytevector(len); > ++ memcpy(TO_VOIDP(&BVIT(bv, 0)), path, len); > ++ free(path); > ++ return TO_VOIDP(&BVIT(bv, 0)); > ++ } > ++} > + #endif /* GETWD */ > +=20 > + 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); > +=20 > ++#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) { > +=20 > + static char *get_defaultheapdirs() { > + char *result; > +- wchar_t buf[PATH_MAX]; > ++ wchar_t buf[BOOT_PATH_MAX]; > + DWORD len =3D sizeof(buf); > + if (ERROR_SUCCESS !=3D RegGetValueW(HKEY_LOCAL_MACHINE, L"Software\\C= hez 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 point= ing > + * 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 empt= y, > + * 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; > +=20 > +-#define setp(c) if (p >=3D path + PATH_MAX) { fprintf(stderr, "search p= ath entry too long\n"); S_abnormal_exit(); } else *p++ =3D (c) > ++#define setp(c) if (p >=3D path + BOOT_PATH_MAX) { fprintf(stderr, "sea= rch path entry too long\n"); S_abnormal_exit(); } else *p++ =3D (c) > + for (;;) { > + s =3D *sp; > + p =3D path; > +@@ -532,10 +538,10 @@ static IBOOL next_path(char *path, const char *nam= e, 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 +=3D 1; > +- n =3D GetModuleFileNameW(NULL, exepath, PATH_MAX); > +- if (n =3D=3D 0 || (n =3D=3D PATH_MAX && GetLastError() = =3D=3D ERROR_INSUFFICIENT_BUFFER)) { > ++ n =3D GetModuleFileNameW(NULL, exepath, BOOT_PATH_MAX); > ++ if (n =3D=3D 0 || (n =3D=3D BOOT_PATH_MAX && GetLastError= () =3D=3D 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 =3D> unknown */ > + iptr offset; > + IBOOL need_check, close_after; > +- char path[PATH_MAX]; > ++ char path[BOOT_PATH_MAX]; > + } boot_desc; > +=20 > + #define MAX_BOOT_FILES 10 > +@@ -695,14 +701,14 @@ static void finish_dependencies_header(int fd, con= st 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 =3D 0; > + INT c; > + const char *path; > + char *expandedpath; > +=20 > + if ((fd !=3D -1) || direct_pathp || S_fixedpathp(name)) { > +- if (strlen(name) >=3D PATH_MAX) { > ++ if (strlen(name) >=3D 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 =3D=3D 0) { > + for (;;) { > + /* try to load heap or boot file this boot file requires */ > +- if (get_string(fd, buf, PATH_MAX, &c) !=3D 0) { > ++ if (get_string(fd, buf, BOOT_PATH_MAX, &c) !=3D 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 =3D get_u8(fd); > + for (sep =3D " "; ; sep =3D "or ") { > + if (c =3D=3D ')') 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 ch= ar *name, > + int close_after) { > + check_boot_file_state("Sregister_boot_file_fd"); > +=20 > +- if (strlen(name) >=3D PATH_MAX) { > ++ if (strlen(name) >=3D 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)) { > + } > +=20 > + name =3D path_last(kernel); > +- if (strlen(name) >=3D PATH_MAX) { > ++ if (strlen(name) >=3D BOOT_PATH_MAX) { > + fprintf(stderr, "executable name too long: %s\n", name); > + S_abnormal_exit(); > + } > +=20 > + #ifdef WIN32 > + { /* strip off trailing .exe, if any */ > +- static char buf[PATH_MAX]; > ++ static char buf[BOOT_PATH_MAX]; > + iptr n; > +=20 > + n =3D 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 */ > +=20 > +-#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, upt= r val) { > + #define GETPAGESIZE() getpagesize() > + typedef char *memcpy_t; > + #define MAKE_NAN(x) { x =3D 0.0; x =3D 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 */ > ++# 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/con= figure > +index f64b639c3a..efdb6029cb 100755 > +--- a/racket/src/ChezScheme/configure > ++++ b/racket/src/ChezScheme/configure > +@@ -102,6 +102,11 @@ case "${CONFIG_UNAME}" in > + installprefix=3D/usr > + installmansuffix=3Dshare/man > + ;; > ++ GNU) > ++ unixsuffix=3Dgnu # the Hurd > ++ installprefix=3D/usr > ++ installmansuffix=3Dshare/man > ++ ;; > + QNX) > + if uname -a | egrep 'x86' > /dev/null 2>&1 ; then > + m32=3Di3qnx > +@@ -591,7 +596,7 @@ fi > +=20 > + # Infer flags needed for threads: > + case "${flagsm}" in > +- *le|*fb|*ob|*nb) > ++ *le|*gnu|*fb|*ob|*nb) > + threadFlags=3D"-D_REENTRANT -pthread" > + threadLibs=3D"-lpthread" > + ;; > +@@ -627,7 +632,7 @@ if [ "$cflagsset" =3D "no" ] ; then > + a6*) > + CFLAGS=3D"-m64 ${optFlags}" > + ;; > +- i3le) > ++ i3le) # intentionally not including i3gnu, which may not support ss= e2 > + CFLAGS=3D"-m32 -msse2 -mfpmath=3Dsse ${optFlags}" > + ;; > + i3nt) > +@@ -688,7 +693,7 @@ fi > + # Add automatic linking flags, unless suppressed by --disable-auto-flags > + if [ "$addflags" =3D "yes" ] ; then > + case "${flagsm}" in > +- *le) > ++ *le|*gnu) > + LDFLAGS=3D"${LDFLAGS} -rdynamic" > + ;; > + *fb|*nb) > +@@ -702,7 +707,7 @@ if [ "$addflags" =3D "yes" ] ; then > + esac > +=20 > + case "${flagsm}" in > +- *le) > ++ *le|*gnu) > + LIBS=3D"${LIBS} -lm -ldl ${ncursesLib} -lrt" > + ;; > + *fb|*ob) > +@@ -749,7 +754,7 @@ exeSuffix=3D > +=20 > + # compile flags for c/Mf-unix and mats/Mf-unix > + case "${flagsmuni}" in > +- *le) > ++ *le|*gnu) > + mdcflags=3D"-fPIC -shared" > + ;; > + *fb|*ob) > +@@ -781,7 +786,7 @@ case "${flagsmuni}" in > + i3le) > + mdldflags=3D"-melf_i386" > + ;; > +- *le) > ++ *le|*gnu) > + ;; > + i3nb) > + mdldflags=3D"-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=3Dle > ++ linux*|gnu*) > ++ case "$host_os" in > ++ *linux*) > ++ MACH_OS=3Dle > ++ ;; > ++ *) > ++ MACH_OS=3Dgnu # Hurd > ++ ;; > ++ esac > + case "$host_os" in > + *linux-android*) > + ;; > +@@ -4730,6 +4737,9 @@ if test "${build_os}_${build_cpu}" !=3D "${host_os= }_${host_cpu}" ; then > + linux*) > + BUILD_OS=3Dle > + ;; > ++ gnu*) # Hurd: must come after linux* > ++ BUILD_OS=3Dgnu > ++ ;; > + *mingw*) > + BUILD_OS=3Dnt > + ;; > +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=3Dle > ++ linux*|gnu*) > ++ case "$host_os" in > ++ linux*) > ++ MACH_OS=3Dle > ++ ;; > ++ *) > ++ MACH_OS=3Dgnu # Hurd > ++ ;; > ++ esac > + case "$host_os" in > + *linux-android*) > + ;; > +@@ -466,6 +473,9 @@ if test "${build_os}_${build_cpu}" !=3D "${host_os}_= ${host_cpu}" ; then > + linux*) > + BUILD_OS=3Dle > + ;; > ++ gnu*) # Hurd - must come after linux* > ++ BUILD_OS=3Dgnu > ++ ;; > + *mingw*) > + BUILD_OS=3Dnt > + ;; > +diff --git a/racket/src/cs/rumble/system.ss b/racket/src/cs/rumble/syste= m.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 > +--=20 > +2.32.0 > + > + > +From 8653294b771c741d320aba31e692b4f0ed0c702f Mon Sep 17 00:00:00 2001 > +From: Philip McGrath > +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=3D"" > + fi > + ;; > +- linux*) > ++ linux*,gnu*) > + LIBS=3D"$LIBS -ldl -lm -lrt -rdynamic" > + DYN_CFLAGS=3D"-fPIC" > + curses_portable_link=3D"/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=3D"" > + fi > + ;; > +- linux*) > ++ linux*,gnu*) > + LIBS=3D"$LIBS -ldl -lm -lrt -rdynamic" > + DYN_CFLAGS=3D"-fPIC" > + curses_portable_link=3D"/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 @@ > +=20 > + #endif > +=20 > +- /************** Linux with gcc ****************/ > ++ /************** Linux (or Hurd) with gcc ****************/ > +=20 > +-#if defined(__linux__) > ++#if defined(__linux__) || defined(__GNU__) > +=20 > + # 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 > +=20 > +-# define LINUX_FIND_STACK_BASE > ++# define LINUX_FIND_STACK_BASE /* also ok for Hurd */ > +=20 > + # define FLAGS_ALREADY_SET > +=20 > + #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 > +--=20 > +2.32.0 > + > + > +From 1b0cd08557f58506c96f0ddd855bd9051a45a2f1 Mon Sep 17 00:00:00 2001 > +From: Philip McGrath > +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=3D"" > + fi > + ;; > +- linux*,gnu*) > ++ linux*|gnu*) > + LIBS=3D"$LIBS -ldl -lm -lrt -rdynamic" > + DYN_CFLAGS=3D"-fPIC" > + curses_portable_link=3D"/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=3D"" > + fi > + ;; > +- linux*,gnu*) > ++ linux*|gnu*) > + LIBS=3D"$LIBS -ldl -lm -lrt -rdynamic" > + DYN_CFLAGS=3D"-fPIC" > + curses_portable_link=3D"/usr/lib/${host_cpu}-${host_os}/libncurses.= a /usr/lib/${host_cpu}-${host_os}/libtermcap.a" > +--=20 > +2.32.0 > + > diff --git a/gnu/packages/patches/racket-chez-scheme-bin-sh.patch b/gnu/p= ackages/patches/racket-chez-scheme-bin-sh.patch > index 65cf2f99f3..331b4f244b 100644 > --- a/gnu/packages/patches/racket-chez-scheme-bin-sh.patch > +++ b/gnu/packages/patches/racket-chez-scheme-bin-sh.patch > @@ -1,4 +1,4 @@ > -From e982b6687494bf071386c67be74e57a29cf4ce00 Mon Sep 17 00:00:00 2001 > +From f86370295c5bb14d4bb93d0ccfa37a2b79f19f25 Mon Sep 17 00:00:00 2001 > From: Philip McGrath > Date: Wed, 24 Aug 2022 19:55:14 -0400 > Subject: [PATCH] Chez Scheme: patch s_process for "/bin/sh" on Guix > @@ -24,12 +24,12 @@ on `system` from the C library. > 1 file changed, 20 insertions(+), 1 deletion(-) > =20 > diff --git a/racket/src/ChezScheme/c/prim5.c b/racket/src/ChezScheme/c/p= rim5.c > -index f5e3e345be..922421ca75 100644 > +index 82bbf8d687..be8f603447 100644 > --- a/racket/src/ChezScheme/c/prim5.c > +++ b/racket/src/ChezScheme/c/prim5.c > -@@ -22,6 +22,12 @@ > - #include > - #include > +@@ -27,6 +27,12 @@ > + #include > + #endif > =20 > +/* BEGIN PATCH for Guix */ > +#ifndef WIN32 > @@ -38,9 +38,9 @@ index f5e3e345be..922421ca75 100644 > +/* END PATCH for Guix */ > + > /* locally defined functions */ > - static INT s_errno PROTO((void)); > - static IBOOL s_addr_in_heap PROTO((uptr x)); > -@@ -856,6 +862,17 @@ static ptr s_process(s, stderrp) char *s; IBOOL std= errp; { > + static INT s_errno(void); > + static IBOOL s_addr_in_heap(uptr x); > +@@ -861,6 +867,17 @@ static ptr s_process(char *s, IBOOL stderrp) { > =20 > INT tofds[2], fromfds[2], errfds[2]; > struct sigaction act, oint_act; > @@ -58,10 +58,10 @@ index f5e3e345be..922421ca75 100644 > =20 > if (pipe(tofds)) S_error("process","cannot open pipes"); > if (pipe(fromfds)) { > -@@ -881,7 +898,9 @@ static ptr s_process(s, stderrp) char *s; IBOOL stde= rrp; { > - CLOSE(1); if (dup(fromfds[1]) !=3D 1) _exit(1); > - CLOSE(2); if (dup(stderrp ? errfds[1] : 1) !=3D 2) _exit(1); > - {INT i; for (i =3D 3; i < NOFILE; i++) (void)CLOSE(i);} > +@@ -897,7 +914,9 @@ static ptr s_process(char *s, IBOOL stderrp) { > + } > + } > + #endif /* __GNU__ Hurd */ > - execl("/bin/sh", "/bin/sh", "-c", s, NULL); > + /* BEGIN PATCH for Guix */ > + execl(guix_sh, guix_sh, "-c", s, NULL); > @@ -70,7 +70,7 @@ index f5e3e345be..922421ca75 100644 > /*NOTREACHED*/ > } else { > =20 > -base-commit: 9d228d16fb99c274c964e5bef93e97333888769f > +base-commit: 87eee6e2adb8c6bc11e60619c706fa6295096085 > --=20 > 2.32.0 > =20 > diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm > index 6433897981..efabdd16f3 100644 > --- a/gnu/packages/racket.scm > +++ b/gnu/packages/racket.scm > @@ -53,7 +53,7 @@ (define-module (gnu packages racket) > #:use-module (gnu packages xorg) > #:use-module ((guix licenses) #:prefix license:)) > =20 > -;; Commentary: > +;; COMMENTARY: > ;; > ;; Anatomy of Racket: > ;; ------------------ > @@ -72,14 +72,16 @@ (define-module (gnu packages racket) > ;; =E2=94=9C=E2=94=80=E2=94=80 bc/ > ;; =E2=94=9C=E2=94=80=E2=94=80 cs/ > ;; =E2=94=9C=E2=94=80=E2=94=80 ChezScheme/ > +;; =E2=94=9C=E2=94=80=E2=94=80 zuo/ > ;; =E2=94=94=E2=94=80=E2=94=80 ... > ;; > ;; The 'racket/src/' directory contains the source of the runtime system= , core > ;; compiler, and primitives for the major Racket implementations: this l= ayer > -;; is called the ``Racket VM''. It is basically a normal autotools > -;; project. (Even when Racket VM implementations use components implemen= ted in > -;; Racket, they are compiled in special modes to produce VM primitives.) > -;; (There are or have been experimental Racket VM implementations elsewh= ere, > +;; is called the ``Racket VM''. It is basically a normal Autoconf proje= ct, > +;; except that the makefiles just run Zuo to do the real work. (Even when > +;; Racket VM implementations use components implemented in Racket, they = are > +;; compiled in special modes to produce VM primitives.) (There are or ha= ve > +;; been experimental Racket VM implementations elsewhere, > ;; e.g. .) > ;; > ;; The 'racket/collects/' directory contains ``built in'' Racket librari= es > @@ -100,10 +102,10 @@ (define-module (gnu packages racket) > ;; > ;; The top-level 'Makefile' is more like a directory of scripts: it has > ;; convienience targets for developing Racket, and it cooperates with the > -;; 'distro-build' package to assemble custom Racket distributions. It is= not > -;; part of Racket source distributions: the root of a source distributio= n is > -;; basically 'racket/src' with some extra package sources and configurat= ion > -;; added. > +;; 'distro-build' package to assemble custom Racket distributions. (Agai= n, > +;; the makefile just delegates to Zuo.) It is not part of Racket source > +;; distributions: the root of a source distribution is basically 'racket= /src' > +;; with some extra package sources and configuration added. > ;; > ;; A ''minimal Racket'' installation includes two packages: 'base', whic= h is a > ;; sort of bridge between the current ``built-in'' collections and the p= ackage > @@ -129,12 +131,12 @@ (define-module (gnu packages racket) > ;; output. The function 'racket-vm-for-system' returns the recomended Ra= cket > ;; VM package for a given system. > ;; > -;; The file 'racket.scm' builds on these packages to define 'racket-mini= mal' > -;; and 'racket' packages. These use Racket's support for ``layered > -;; installations'', which allow an immutable base layer to be extended w= ith > -;; additional packages. They use the layer configuration directly provide > -;; ready-to-install FHS-like trees, rather than relying on the built in > -;; ``Unix-style install'' mechanism. > +;; We then define the packages 'racket-minimal' and > +;; 'racket'. These use Racket's support for ``layered installations'', w= hich > +;; allow an immutable base layer to be extended with additional packages. > +;; They use the layer configuration directly provide ready-to-install FH= S-like > +;; trees, rather than relying on the built in ``Unix-style install'' > +;; mechanism. > ;; > ;; Bootstrapping Racket: > ;; --------------------- > @@ -177,16 +179,18 @@ (define-module (gnu packages racket) > ;; However, other Racket subsystems implemented in Racket for Racket CS > ;; use older C implementations for Racket BC, whereas the reader, expand= er, > ;; and module system were completely replaced with the Racket implementa= tion > -;; as of Racket 7.0. > +;; as of Racket 7.0. See also . > ;; > ;; For Racket BC, the compiled "linklet" s-expressions (primitive module= s) > ;; are embeded in C as a static string constant. Eventually, they are fu= rther > ;; compiled by the C-implemented Racket BC bytecode and JIT compilers. > -;; (On platforms where Racket BC's JIT is not supported, yet another com= piler > -;; instead compiles the linklets to C code, but this is not a bootstrapp= ing > -;; issue.) > ;; > -;; Code: > +;; Zuo is notably *not* a problem for bootstrapping. The implementation = is a > +;; single hand-written C file designed to build with just `cc -o zuo zuo= =2Ec`, > +;; even with very old or limited compilers. (We use the Autoconf support= for > +;; convienience.) > +;; > +;; CODE: > =20 > (define* (racket-vm-for-system #:optional > (system (or (%current-target-system) > @@ -199,7 +203,7 @@ (define* (racket-vm-for-system #:optional > racket-vm-cs > racket-vm-bc)) > =20 > -(define %racket-version "8.5") ; Remember to update chez-scheme-for-rack= et! > +(define %racket-version "8.6") ; Remember to update chez-scheme-for-rack= et! > (define %zuo-version "1.0") ; defined in racket/src/zuo/zuo.c > (define %racket-commit > (string-append "v" %racket-version)) > @@ -210,10 +214,15 @@ (define %racket-origin > (url "https://github.com/racket/racket") > (commit %racket-commit))) > (sha256 > - (base32 "0f9zyhdvbh4xsndrqjzl85j5ziz0rmqi676g9s1lw3h3skq2636h")) > + (base32 "1lw6h70dk8zqpl96zz0hmhn8vjcc0c7gw4prkfz2wid5bkq4mhg4")) > (file-name (git-file-name "racket" %racket-version)) > - (patches (search-patches "racket-chez-scheme-bin-sh.patch" > - "racket-rktio-bin-sh.patch")) > + (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" > + "racket-chez-scheme-bin-sh.patch" > + "racket-rktio-bin-sh.patch" > + "racket-zuo-bin-sh.patch")) > (modules '((guix build utils))) > (snippet > #~(begin > @@ -240,21 +249,10 @@ (define-public zuo > (name "zuo") > (version (string-append %zuo-version > "-racket" > - "8.6" > + %racket-version > (if revision "-guix" "") > (or revision ""))) > - (source > - (origin > - (inherit %racket-origin) > - (uri (git-reference > - (url "https://github.com/racket/racket") > - (commit "v8.6"))) > - (sha256 > - (base32 "1yi36nr7zrdwrnvpmliirxxjz4pyfyhkar6yvk3rapvmg4q2vmnk"= )) > - (patches (append (origin-patches %racket-origin) > - (search-patches "racket-backport-8.6-zuo.patch" > - "racket-zuo-bin-sh.patch"))) > - (file-name (git-file-name "racket" "8.6")))) > + (source %racket-origin) > (outputs '("out" "debug")) > (build-system gnu-build-system) > (arguments > @@ -316,7 +314,8 @@ (define-public racket-vm-cgc > (source %racket-origin) > (inputs (list ncurses ;; <- common to all variants (for #%terminal) > libffi)) ;; <- only for BC variants > - (native-inputs (list libtool)) ;; <- only for BC variants > + (native-inputs (list zuo ;; <- for all variants > + libtool)) ;; <- only for BC variants > (outputs '("out" "debug")) > (build-system gnu-build-system) > (arguments > @@ -324,6 +323,10 @@ (define-public racket-vm-cgc > #:configure-flags > #~(cons "--enable-cgcdefault" > #$racket-vm-common-configure-flags) > + #:make-flags > + #~(list (string-append "ZUO=3D" > + #+(this-package-native-input "zuo") > + "/bin/zuo")) > ;; Tests are in packages like racket-test-core and > ;; main-distribution-test that aren't part of the main > ;; distribution. > @@ -683,25 +686,25 @@ (define-public racket > "contract-profile" (base32 "1xm2z8g0dpv5d9h2sg680vx1a8ix9gbsdpxxb= 8qv1w7akp73paj3") > '(("contract-profile" "."))) > (simple-racket-origin > - "data" (base32 "10iabgrk9alaggvksnyb0hdq7f1p30pq6pq2bcakvhzpxwiv1= f55") > + "data" (base32 "08sj4m0g0cp7gwb0nq90m770f0c21b7ydif7nljc8rxmcdprf= isc") > '("data" "data-doc" "data-enumerate-lib" "data-lib")) > (simple-racket-origin > "datalog" (base32 "0nf6cy4djpyhfvgpa6yn72apbz9s83gp0qg95pzjd0az4v= 6qwq1s") > '(("datalog" "."))) > (simple-racket-origin > - "db" (base32 "1n02ja0yj3mjjhmz0yv04yfhyvrsznbljn8bjviyfxnm4xf9rcc= 5") > + "db" (base32 "0jzsbfcdm3xj0g8xxw3ky2swrhiqqsq2aqa3r08m641dc981dmj= q") > '("db" "db-doc" "db-lib")) > (simple-racket-origin > - "deinprogramm" (base32 "0g8flr1qg3bcyhdinqhs4w7dyisaqyailbxrjgd2a= 7zlqmdyicfr") > + "deinprogramm" (base32 "16ncs3ms3mmdavbk0mkhm2qi62vyyif9cch3sn1y6= 4pij489x34v") > '("deinprogramm" "deinprogramm-signature")) > (simple-racket-origin > "distributed-places" (base32 "1dajpkj9balqcpv6cdk9hwjz592h1vq8rrx= 5vncariiac4vbdpa0") > '("distributed-places" "distributed-places-doc" "distributed-plac= es-lib")) > (simple-racket-origin > - "draw" (base32 "1fpk85rs2crd63bxnmwj2pysisd62pxcqaip01si67dv1ri8f= f92") > + "draw" (base32 "00rq5y4ba6z1d6jh76kl8rwpxrlqqp81a875zyhk3k81i4263= 5sm") > '("draw" "draw-doc" "draw-lib")) > (simple-racket-origin > - "drracket" (base32 "0dipnz92c63zxys9z1kl5215rm7arc35g9r8bs8ivp96p= 75mljnz") > + "drracket" (base32 "05d7wssi0ry13alb5hl3llpsg30dd0jhyfv5nb1nmg189= fn42q62") > '("drracket" > "drracket-plugin-lib" > "drracket-tool" > @@ -718,7 +721,7 @@ (define-public racket > "eopl" (base32 "1fmiixj6rxsgzwvgva8lvrvv0gl49v2405mp3s0i7ipis5c4n= 27s") > '(("eopl" "."))) > (simple-racket-origin > - "errortrace" (base32 "14m7rhaxngj36070iw15am434hm438pfgmwjfsiqhsg= lz4pcxhip") > + "errortrace" (base32 "0r5630bb2d6hk0fbi95fmyfja54nnwdfcj2zjba124p= p6xkjyavx") > '("errortrace" "errortrace-doc" "errortrace-lib")) > (simple-racket-origin > "expeditor" (base32 "0mjfwb4wzwsg5xj3k6cmik0va432n56rp5h7rxx1c2yy= 3prh1j7q") > @@ -735,13 +738,13 @@ (define-public racket > "games" (base32 "0kpn3izlx1ccd0pj0dnvmnrhny51b85xy418a7psj70lz8j8= 415d") > '(("games" "."))) > (simple-racket-origin > - "gui" (base32 "0r3ck4gxdhnzr1a1fi0f1i7gwfip7akq10qgcxza66pp57hnl0= wx") > + "gui" (base32 "18pcnx3wi8f32i2frm8bn9pi08n4y3c5jgqs4gy21w6f84dv40= 1w") > '("gui" "gui-doc" "gui-lib" "tex-table")) > (simple-racket-origin > "gui-pkg-manager" (base32 "1ji9448d723nklqvycwdswj0ni28sabrncag14= f9mx47did5myb5") > '("gui-pkg-manager-lib")) > (simple-racket-origin > - "htdp" (base32 "19xqixrqbwdxph17w9jga19008j88harb5wgml4hpqj3x0apx= 9g3") > + "htdp" (base32 "173xy6ks55npvwn6cykjs41s9qfb70hc2gfjiqvw91hdsbjyk= wir") > '("htdp" "htdp-doc" "htdp-lib")) > (simple-racket-origin > "html" (base32 "18n1jnjgzfknc8nv8dppi85nb8q08gqdwkg6hfjk08x0p00an= x2x") > @@ -765,7 +768,7 @@ (define-public racket > "make" (base32 "10852fj30bz5r46c3d99s37fkgy5yh44gb01j29sf3kxnhi0g= 2sa") > '(("make" "."))) > (simple-racket-origin > - "math" (base32 "02sqbnvxvmvslk33b44fx4v93zafcvhva0cx8z21jqbl5wp21= 7ac") > + "math" (base32 "00ld38in5jfshs1q4zf07w84cyv4yjr40kmw30pyd5wqgs2zq= 9ai") > '("math" "math-doc" "math-lib")) > (simple-racket-origin > "mysterx" (base32 "11p9jzrafw0hizhl0cs4sxx7rv281185q8hryic2rpk0kz= jdyr48") > @@ -800,16 +803,16 @@ (define-public racket > (git-file-name "stamourv-optimization-coach" %racket-version))) > '(("optimization-coach" "."))) > (simple-racket-origin > - "option-contract" (base32 "026b7n5l0c3024nymshz8zp1yhn493rdzgpflz= fd52hj7awafqhk") > + "option-contract" (base32 "07cncg9pi15cm19k7rzv54vx83wq7y42i2m6bg= zaqja1h8vnj2ww") > '("option-contract" "option-contract-doc" "option-contract-lib")) > (simple-racket-origin > - "parser-tools" (base32 "08pvz4zramirzm3j64hbhjm0mmh5zfy37iv4s3vmq= 0rj49cr8fl3") > + "parser-tools" (base32 "04ycihliikh0c47ivp09gayxiql9d9wpl216czic1= 9cj6f7rmcnj") > '("parser-tools" "parser-tools-doc" "parser-tools-lib")) > (simple-racket-origin > "pconvert" (base32 "00czi0p399mmyrvxyrs5kniizpkqfxyz2ncxqi2jy79a7= wk79pb1") > '("pconvert-lib")) > (simple-racket-origin > - "pict" (base32 "0v7a3l77swsbh80mnb9rakdwgw7s66ji0mall7qcqfwyg1b4z= mlv") > + "pict" (base32 "1n0v7kynkiin1v8igs9m8k8vfwjn5cswanhq2imp1pxzjvdyq= 6sx") > '("pict" "pict-doc" "pict-lib")) > (simple-racket-origin > "pict-snip" (base32 "081nwiy4a0n4f7xws16hqbhf0j3kz5alizndi3nnyr3c= hm4kng6x") > @@ -863,7 +866,7 @@ (define-public racket > "racklog" (base32 "0fbq0fpfb3l6h7h772dvkmlzlk2dnq5f8296xx1qxhhwyp= ibqzr9") > '(("racklog" "."))) > (simple-racket-origin > - "rackunit" (base32 "0vfwcddzrgrdv5awjka7m0jzqhqvfc5wlkih83a670y96= 496a83n") > + "rackunit" (base32 "1gpz9sgnm8hrc0cb3rii0wzbcwp9mgy5k1amnxidy7gyz= l7prn81") > '("rackunit" > "rackunit-doc" > "rackunit-gui" > @@ -876,10 +879,10 @@ (define-public racket > "readline" (base32 "13kbcn2wchv82d709mw3r8n37bk8iwq0y4kpvm9dbzx0w= 2pxkfwn") > '("readline" "readline-doc" "readline-lib")) > (simple-racket-origin > - "realm" (base32 "0hxcgla08iack54j8v40fj51811chpy66ym2zq76zb52c7kz= n0hi") > + "realm" (base32 "0rlvwyd6rpyl0zda4a5p8dp346fvqzc8555dgfnrhliymkxb= 6x4g") > '(("realm" "."))) > (simple-racket-origin > - "redex" (base32 "18rn8ddsqh1s7hdlb2cb9wxln63bz0wysjssaf9v92r712xn= nv8i") > + "redex" (base32 "06dhyqmin0qdm6b6sdvgzpy3pa4svlw42ld9k2h1dxcr852c= zil7") > '("redex" > "redex-benchmark" > "redex-doc" > @@ -894,7 +897,7 @@ (define-public racket > "scheme-lib" (base32 "0pcf0y8rp4qyjhaz5ww5sr5diq0wpcdfrrnask7zapy= klzx1jx8x") > '(("scheme-lib" "."))) > (simple-racket-origin > - "scribble" (base32 "0fbb7xgz95y90247hfc1a19v7ry8m6blvv4y8irdgzhjv= ik70zb3") > + "scribble" (base32 "0a11kvcnzp04mp4xxq68rkl09jv00hv81k2nmwkmwpfx9= b2acvd3") > '("scribble" > "scribble-doc" > "scribble-html-lib" > @@ -926,7 +929,7 @@ (define-public racket > "snip" (base32 "01r9wc5xr3q3n4yyif6j0a37rgdzmpslxn05k13ksik73b3wj= 6hj") > '("snip" "snip-lib")) > (simple-racket-origin > - "typed-racket" (base32 "0z6bagp6qiw0i3slhvq035y5hqgq664xw3bdlvday= ad0bgbg0mdc") > + "typed-racket" (base32 "03wsz647fi58brbg33fw1xavp100gzfvngdy8bk7b= dc0jfg8a18l") > '("source-syntax" > "typed-racket" > "typed-racket-compatibility" > @@ -937,13 +940,13 @@ (define-public racket > "srfi" (base32 "0aqbcdv2dfc2xnk0h6zfi56p7bpwqji8s88qds3d03hhh9k28= gvn") > '("srfi" "srfi-doc" "srfi-lib" "srfi-lite-lib")) > (simple-racket-origin > - "string-constants" (base32 "0b1ji31pv6bjb0a2bh9sqp5abvf91gn2rai8r= 4c4nkar1fzfwfac") > + "string-constants" (base32 "1kg3vxq2hcd0vl76brgpzdwbrb65a4nrrkc6h= j4az5lfbbdvqz47") > '("string-constants" "string-constants-doc" "string-constants-lib= ")) > (simple-racket-origin > - "swindle" (base32 "164gdsphjzdl2vv7zxz7dfk9jwax8njpmim6sidm8qz8a8= 589y67") > + "swindle" (base32 "03n9ymjhrw45h7hxkw4nq8nidnvs9mfzb4228s2cjfaqbg= qxvsyb") > '(("swindle" "."))) > (simple-racket-origin > - "syntax-color" (base32 "17lb2403ymz6sflw4vs3gsh2y7kgsf0gn8sncsxjh= i16rpj3a9vm") > + "syntax-color" (base32 "02dcd4yvdnw35m3srvfd43csxffxw3j4rk6zi379b= 8dsvbbrjyq1") > '("syntax-color" "syntax-color-doc" "syntax-color-lib")) > (simple-racket-origin > "trace" (base32 "070ihla5j796hdarn5wxdwn4xj0xnkm50shgh49jy994mrib= vhia") > @@ -952,7 +955,7 @@ (define-public racket > "unix-socket" (base32 "02dfwas5ynbpyz74w9kwb4wgb37y5wys7svrlmir8k= 0n9ph9vq0y") > '("unix-socket" "unix-socket-doc" "unix-socket-lib")) > (simple-racket-origin > - "web-server" (base32 "1g4x79ym3mgxv4f3z3z84j12355pf44pjlzlb7f0h6r= 0i7p0cbjd") > + "web-server" (base32 "104lnzjykkd6f3gxpv7p14l94if6zac33nmb4sj5jxm= d6r3fwcpf") > '("web-server" "web-server-doc" "web-server-lib")) > (simple-racket-origin > "wxme" (base32 "1qp5gr9gqsakiq3alw6m4yyv5vw4i3hp4y4nhq8vl2nkjmirv= n0b") > --=20 > 2.32.0 >=20 --=20 Efraim Flashner =D7=90=D7=A4=D7=A8=D7=99=D7=9D = =D7=A4=D7=9C=D7=A9=D7=A0=D7=A8 GPG key =3D A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted --lCl/lM2rz9HVOOZr Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmMHUXEACgkQQarn3Mo9 g1E4lQ//ZAC3SYCAuANcGAu4ELlfn8E9ExOYfK1IpelaUX9NKj4dZysZILsYuYMj 5wtLEzYWyGU5lZEpL8vIDm26PtO5f9ey5fG7pGyMpW9bp8r5KGaobi6LfppK1tFb pCIWN92pXnsLAOcrMBBAQo/HY1b6yLTn40MxyBFjF81fuENW1sX4K3nSjYpjm7yt XYEwLCQa1yusv+l+fYLpSb3Gezp8JXsq4TapdiH4EwBUF3lrEuORKwDo/aspUBoJ axTXLvYlR7YvMUqMC7jhONHGg6vWeTxK36k9dE2XqAWmvBzfQHAHFnBECoNAiPs6 wafvgEcoaWIeNAvgv7VuAXwkhisJALZNagpxmb9Ey9Ic6161heHK9A8RdEw32SFI zAUnl6fC93g0mY+DHY0SSnGzLEVZEZczwmdfiuRZ8sj2RWfjAwExivdNc/YU5F8+ hyHVDJHCHmOQxFUgS41ZP1FZSPpAEKpQtj8vtr2/Car9QqW21vxE84Tcg+4W0fyX ZOM0gCNeyVTd78geqcc/021UgcWyt2SdG9/QgMVPpip7QnMRCRS1psjNVkPXZ4Tn lzWubbp2ytOH0VC8iIqm1zFmMkbXTWDsKbxJLMoTKakTH5kaMZqBiezJ3p+DGeFS 30zNEBPTSXNwXkk/P+laheh3wRnFRG9LVtbPvR4fHCt36FM3lZ8= =nsS4 -----END PGP SIGNATURE----- --lCl/lM2rz9HVOOZr--