summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/racket-backport-8.12-chez-configure.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/racket-backport-8.12-chez-configure.patch')
-rw-r--r--gnu/packages/patches/racket-backport-8.12-chez-configure.patch423
1 files changed, 423 insertions, 0 deletions
diff --git a/gnu/packages/patches/racket-backport-8.12-chez-configure.patch b/gnu/packages/patches/racket-backport-8.12-chez-configure.patch
new file mode 100644
index 0000000000..483948fec9
--- /dev/null
+++ b/gnu/packages/patches/racket-backport-8.12-chez-configure.patch
@@ -0,0 +1,423 @@
+From 82157f5b3fb9f71ad7fc978c428d423d06a4a0df Mon Sep 17 00:00:00 2001
+From: Philip McGrath <philip@philipmcgrath.com>
+Date: Wed, 28 Feb 2024 19:41:22 -0500
+Subject: [PATCH 1/2] Chez Scheme: Repairs and improvements for building with
+ external dependencies
+
+* configure: support `ZUO=<zuo>`
+
+Supplying `ZUO=<zuo>` skips the submodule check in `configure`
+and configures the generated makefile not to build or remove Zuo.
+
+* configure: support `STEXLIB=<stex>`
+
+For compatibility with older scripts, when not explicitly configured,
+continue to honor the `STEXLIB` environment variable at build time.
+
+(cherry picked from commit 694fbd47a125c7fde10a328c6fda199dac19f802)
+---
+ racket/src/ChezScheme/BUILDING | 5 ++--
+ racket/src/ChezScheme/build.zuo | 13 +++++++---
+ racket/src/ChezScheme/configure | 27 ++++++++++++++++++++-
+ racket/src/ChezScheme/makefiles/Makefile.in | 6 ++---
+ 4 files changed, 40 insertions(+), 11 deletions(-)
+
+diff --git a/racket/src/ChezScheme/BUILDING b/racket/src/ChezScheme/BUILDING
+index 50fde27771..2df29b5bd8 100644
+--- a/racket/src/ChezScheme/BUILDING
++++ b/racket/src/ChezScheme/BUILDING
+@@ -155,7 +155,8 @@ information on the supported options.
+ The generated makefile mostly just ensures that a `zuo` executable is
+ built in a `bin` directory, and then it defers the actual build work
+ to `zuo`, which uses the "main.zuo" file. If you have `zuo` installed,
+-you can use `zuo` directly instead of `make`. In general, instead of
++you can use `zuo` directly instead of `make`: in that case, you may
++wish to use `./configure ZUO=<zuo>`. In general, instead of
+ the command `make X` to build target `X` as described below, you can
+ use `zuo . X` (or `bin/zuo . X` after `bin/zuo` is built).
+
+@@ -339,7 +340,7 @@ The makefile supports several targets:
+ * `make clean`
+
+ Removes all built elements from the workarea, and then removes
+- `bin/zuo`.
++ `bin/zuo` (unless configured with `ZUO=<zuo>`).
+
+
+ WINDOWS VIA COMMAND PROMPT
+diff --git a/racket/src/ChezScheme/build.zuo b/racket/src/ChezScheme/build.zuo
+index a211632a89..432cc6e5a1 100644
+--- a/racket/src/ChezScheme/build.zuo
++++ b/racket/src/ChezScheme/build.zuo
+@@ -218,10 +218,15 @@
+ token))
+
+ (define stexlib
+- (let ((found (assoc "STEXLIB" (hash-ref (runtime-env) 'env))))
+- (if found
+- (cdr found)
+- (at-source "stex"))))
++ (let ([configured (hash-ref config 'STEXLIB "")]
++ [env (assoc "STEXLIB" (hash-ref (runtime-env) 'env))])
++ (cond
++ [(not (equal? "" configured))
++ configured]
++ [env
++ (cdr env)]
++ [else
++ (at-source "stex")])))
+ (define stex-sources
+ (source-tree stexlib))
+
+diff --git a/racket/src/ChezScheme/configure b/racket/src/ChezScheme/configure
+index 721d1d1335..f88c6f7625 100755
+--- a/racket/src/ChezScheme/configure
++++ b/racket/src/ChezScheme/configure
+@@ -93,6 +93,7 @@ default_warning_flags="-Wpointer-arith -Wall -Wextra -Wno-implicit-fallthrough"
+ CFLAGS_ADD=
+ zlibLib=
+ LZ4Lib=
++STEXLIB=
+ Kernel=KernelLib
+ buildKernelOnly=no
+ enableFrompb=yes
+@@ -102,6 +103,7 @@ empetite=no
+ moreBootFiles=
+ preloadBootFiles=
+ alwaysUseBootFile=
++zuoExternal=
+
+ CONFIG_UNAME=`uname`
+
+@@ -442,6 +444,12 @@ while [ $# != 0 ] ; do
+ LZ4=*)
+ LZ4Lib=`echo $1 | sed -e 's/^LZ4=//'`
+ ;;
++ STEXLIB=*)
++ STEXLIB=`echo $1 | sed -e 's/^STEXLIB=//'`
++ ;;
++ ZUO=*)
++ zuoExternal=`echo $1 | sed -e 's/^ZUO=//'`
++ ;;
+ *)
+ echo "option '$1' unrecognized or missing an argument; try $0 --help"
+ exit 1
+@@ -667,6 +675,8 @@ if [ "$help" = "yes" ]; then
+ echo " STRIP=<strip> executable stripper"
+ echo " ZLIB=<lib> link to <lib> instead of own zlib"
+ echo " LZ4=<lib> link to <lib> instead of own LZ4"
++ echo " STEXLIB=<stex> build docs with <stex> instead of own stex"
++ echo " ZUO=<zuo> build with <zuo> instead of own Zuo"
+ echo ""
+ echo "Available machine types: $machs"
+ echo ""
+@@ -869,6 +879,16 @@ if [ "$addflags" = "yes" ] ; then
+ fi
+ fi
+
++if [ "${zuoExternal}" = "" ] ; then
++ ZUO="bin/zuo"
++ RM_ZUO="rm -f bin/zuo"
++ ZUO_TARGET="bin/zuo"
++else
++ ZUO="${zuoExternal}"
++ RM_ZUO="@echo 'Not cleaning external ${zuoExternal}'"
++ ZUO_TARGET="DoNotBuildZuo"
++fi
++
+ # more compile and link flags for c/Mf-unix and mats/Mf-unix
+ mdinclude=
+ mdcppflags=
+@@ -1039,7 +1059,7 @@ cp "$srcdir"/makefiles/buildmain.zuo main.zuo
+ # Some idea, but in the workarea, so it refers to "workarea.zuo" here:
+ cp "$srcdir"/makefiles/workmain.zuo $w/main.zuo
+
+-# The content of "$w/Makefile" records configuration decisions,
++# The content of "$w/Mf-config" records configuration decisions,
+ # and the Zuo build script takes it from there
+ cat > $w/Mf-config << END
+ srcdir=$srcdir
+@@ -1075,6 +1095,7 @@ cursesLib=$cursesLib
+ ncursesLib=$ncursesLib
+ zlibLib=$zlibLib
+ LZ4Lib=$LZ4Lib
++STEXLIB=$STEXLIB
+ warningFlags=$warningFlags
+ Kernel=$Kernel
+ installscriptname=$installscriptname
+@@ -1086,6 +1107,10 @@ preloadBootFiles=$preloadBootFiles
+ alwaysUseBootFile=$alwaysUseBootFile
+ relativeBootFiles=$relativeBootFiles
+
++ZUO=$ZUO
++RM_ZUO=$RM_ZUO
++ZUO_TARGET=$ZUO_TARGET
++
+ InstallBin=$installbin
+ InstallLib=$installlib
+ InstallMan=$installman/man1
+diff --git a/racket/src/ChezScheme/makefiles/Makefile.in b/racket/src/ChezScheme/makefiles/Makefile.in
+index cfdd0230a3..4865bf2e2f 100644
+--- a/racket/src/ChezScheme/makefiles/Makefile.in
++++ b/racket/src/ChezScheme/makefiles/Makefile.in
+@@ -3,8 +3,6 @@ workarea=$(w)
+
+ include $(workarea)/Mf-config
+
+-ZUO=bin/zuo
+-
+ .PHONY: build
+ build: $(ZUO)
+ + $(ZUO) $(workarea) MAKE="$(MAKE)"
+@@ -140,9 +138,9 @@ pkg: $(ZUO)
+ .PHONY: clean
+ clean: $(ZUO)
+ + $(ZUO) $(workarea) clean MAKE="$(MAKE)"
+- rm -f bin/zuo
++ $(RM_ZUO)
+
+ # Using `+` here means that $(ZUO) gets built even if `-n`/`--dry-run` is provided to `make`
+-$(ZUO): $(srcdir)/../zuo/zuo.c
++$(ZUO_TARGET): $(srcdir)/../zuo/zuo.c
+ + mkdir -p bin
+ + $(CC_FOR_BUILD) -DZUO_LIB_PATH='"'"$(upsrcdir)/../zuo/lib"'"' -o $(ZUO) $(srcdir)/../zuo/zuo.c
+
+base-commit: 78fef00d4d16a79fdf6ab31924b3a80cadf4b368
+--
+2.41.0
+
+
+From e2bc69c5ce7437dd9a1b30ac1b12b3a56872c491 Mon Sep 17 00:00:00 2001
+From: Matthew Flatt <mflatt@racket-lang.org>
+Date: Sun, 10 Mar 2024 09:13:40 -0600
+Subject: [PATCH 2/2] Chez Scheme: adjust `configure ZUO=<command>` support
+
+Continuing from 694fbd47a1, adjust the generated makefile so the
+supplied `<command>` is not a makefile dependency. That way, `ZUO=zuo`
+works if `zuo` is installed and the current build directory is not the
+source directory. (The `zuo` executable is a dependency in a real and
+relevant sense, but not in the sense of dependencies that we normally
+track in makefiles.)
+
+Also adapt the makefile for the case that `ZUO=...` is not supplied
+and the build directory is not the source directory, in which case
+`ZUO_LIB_PATH` needs to be relative to the source directory.
+
+Using `make ZUO=zuo` can also work, but in that case, `bin/zuo` is
+still built as a dependency. It's possible that some portable makefile
+magic could overcome that limitation, but it doesn't seem important.
+
+(cherry picked from commit 28157ba88d48fe645563f46f6c00d6626b3428fa)
+---
+ racket/src/ChezScheme/configure | 3 +
+ racket/src/ChezScheme/makefiles/Makefile.in | 70 +++++++++++----------
+ 2 files changed, 40 insertions(+), 33 deletions(-)
+
+diff --git a/racket/src/ChezScheme/configure b/racket/src/ChezScheme/configure
+index f88c6f7625..201dbe580f 100755
+--- a/racket/src/ChezScheme/configure
++++ b/racket/src/ChezScheme/configure
+@@ -881,10 +881,12 @@ fi
+
+ if [ "${zuoExternal}" = "" ] ; then
+ ZUO="bin/zuo"
++ ZUO_DEP="${ZUO}"
+ RM_ZUO="rm -f bin/zuo"
+ ZUO_TARGET="bin/zuo"
+ else
+ ZUO="${zuoExternal}"
++ ZUO_DEP=""
+ RM_ZUO="@echo 'Not cleaning external ${zuoExternal}'"
+ ZUO_TARGET="DoNotBuildZuo"
+ fi
+@@ -1108,6 +1110,7 @@ alwaysUseBootFile=$alwaysUseBootFile
+ relativeBootFiles=$relativeBootFiles
+
+ ZUO=$ZUO
++ZUO_DEP=$ZUO_DEP
+ RM_ZUO=$RM_ZUO
+ ZUO_TARGET=$ZUO_TARGET
+
+diff --git a/racket/src/ChezScheme/makefiles/Makefile.in b/racket/src/ChezScheme/makefiles/Makefile.in
+index 4865bf2e2f..5ce237178e 100644
+--- a/racket/src/ChezScheme/makefiles/Makefile.in
++++ b/racket/src/ChezScheme/makefiles/Makefile.in
+@@ -4,51 +4,55 @@ workarea=$(w)
+ include $(workarea)/Mf-config
+
+ .PHONY: build
+-build: $(ZUO)
++build: $(ZUO_DEP)
+ + $(ZUO) $(workarea) MAKE="$(MAKE)"
+
+ .PHONY: run
+-run: $(ZUO)
++run: $(ZUO_DEP)
+ + $(ZUO) $(workarea) run
+
+ .PHONY: kernel
+-kernel: $(ZUO)
++kernel: $(ZUO_DEP)
+ + $(ZUO) $(workarea) kernel MAKE="$(MAKE)"
+
+ .PHONY: install
+-install: $(ZUO)
++install: $(ZUO_DEP)
+ $(ZUO) $(workarea) install MAKE="$(MAKE)"
+
+ .PHONY: uninstall
+-uninstall: $(ZUO)
++uninstall: $(ZUO_DEP)
+ + $(ZUO) $(workarea) uninstall MAKE="$(MAKE)"
+
+-.PHONY: test
+-test: $(ZUO)
+- + $(ZUO) $(workarea) test MAKE="$(MAKE)"
++.PHONY: test-one
++test-one: $(ZUO_DEP)
++ + $(ZUO) $(workarea) test-one MAKE="$(MAKE)"
+
+ .PHONY: test-some-fast
+-test-some-fast: $(ZUO)
++test-some-fast: $(ZUO_DEP)
+ + $(ZUO) $(workarea) test-some-fast MAKE="$(MAKE)"
+
+ .PHONY: test-some
+-test-some: $(ZUO)
++test-some: $(ZUO_DEP)
+ + $(ZUO) $(workarea) test-some MAKE="$(MAKE)"
+
++.PHONY: test
++test: $(ZUO_DEP)
++ + $(ZUO) $(workarea) test MAKE="$(MAKE)"
++
+ .PHONY: test-more
+-test-more: $(ZUO)
++test-more: $(ZUO_DEP)
+ + $(ZUO) $(workarea) test-more MAKE="$(MAKE)"
+
+ .PHONY: coverage
+-coverage: $(ZUO)
++coverage: $(ZUO_DEP)
+ + $(ZUO) $(workarea) coverage MAKE="$(MAKE)"
+
+ .PHONY: bootfiles
+-bootfiles: $(ZUO)
++bootfiles: $(ZUO_DEP)
+ + $(ZUO) $(workarea) bootfiles MAKE="$(MAKE)"
+
+ .PHONY: reset
+-reset: $(ZUO)
++reset: $(ZUO_DEP)
+ + $(ZUO) $(workarea) reset MAKE="$(MAKE)"
+
+ # Supply XM=<machine> to build boot files for <machine>
+@@ -57,86 +61,86 @@ boot:
+ + $(ZUO) $(workarea) boot "$(XM)" MAKE="$(MAKE)"
+
+ # `<machine>.boot` as alias for `boot XM=<machine>`
+-%.boot: $(ZUO)
++%.boot: $(ZUO_DEP)
+ + $(ZUO) $(workarea) boot $* MAKE="$(MAKE)"
+
+ .PHONY: auto.boot
+-auto.boot: $(ZUO)
++auto.boot: $(ZUO_DEP)
+ + $(ZUO) $(workarea) boot MAKE="$(MAKE)"
+
+ SCHEME=scheme
+
+ .PHONY: cross.boot
+-cross.boot: $(ZUO)
++cross.boot: $(ZUO_DEP)
+ + $(ZUO) $(workarea) boot SCHEME="$(SCHEME)" MAKE="$(MAKE)"
+
+ .PHONY: re.boot
+-re.boot: $(ZUO)
++re.boot: $(ZUO_DEP)
+ + $(ZUO) $(workarea) reboot SCHEME="$(SCHEME)"
+
+ # Supply XM=<machine> to build boot files for <machine>
+ # with o=3 d=0 for the cross compiler, and only after
+ # building the kernel for the configured machine
+ .PHONY: bootquick
+-bootquick: $(ZUO)
++bootquick: $(ZUO_DEP)
+ + $(ZUO) $(workarea) bootquick "$(XM)" MAKE="$(MAKE)"
+
+ # `<machine>.bootquick` as alias for `boot XM=<machine>`
+-%.bootquick: $(ZUO)
++%.bootquick: $(ZUO_DEP)
+ + $(ZUO) $(workarea) bootquick $* MAKE="$(MAKE)"
+
+-auto.bootquick: $(ZUO)
++auto.bootquick: $(ZUO_DEP)
+ + $(ZUO) $(workarea) bootquick MAKE="$(MAKE)"
+
+ # Supply XM=<machine>-<tag>.bootpbchunk to repackage boot files for
+ # <machine> with pbchunk sources, including additional
+ # boot files
+ .PHONY: bootpbchunk
+-bootpbchunk: $(ZUO)
++bootpbchunk: $(ZUO_DEP)
+ + $(ZUO) $(workarea) bootpbchunk "$(XM)" $(ARGS) MAKE="$(MAKE)"
+
+ # `<machine>.bootpbchunk` as alias for `pbchunk XM=<machine>`
+-%.bootpbchunk: $(ZUO)
++%.bootpbchunk: $(ZUO_DEP)
+ + $(ZUO) $(workarea) bootpbchunk $* $(ARGS) MAKE="$(MAKE)"
+
+ .PHONY: docs
+-docs: build $(ZUO)
++docs: build $(ZUO_DEP)
+ + $(ZUO) $(workarea) docs MAKE="$(MAKE)"
+
+ .PHONY: csug
+-csug: build $(ZUO)
++csug: build $(ZUO_DEP)
+ + $(ZUO) $(workarea) csug MAKE="$(MAKE)"
+
+ .PHONY: release_notes
+-release_notes: build $(ZUO)
++release_notes: build $(ZUO_DEP)
+ + $(ZUO) $(workarea) release_notes MAKE="$(MAKE)"
+
+ .PHONY: install-docs
+-install-docs: build $(ZUO)
++install-docs: build $(ZUO_DEP)
+ + $(ZUO) $(workarea) install-docs MAKE="$(MAKE)"
+
+ .PHONY: install-csug
+-install-csug: build $(ZUO)
++install-csug: build $(ZUO_DEP)
+ + $(ZUO) $(workarea) install-csug MAKE="$(MAKE)"
+
+ .PHONY: install-release_notes
+-install-release_notes: build $(ZUO)
++install-release_notes: build $(ZUO_DEP)
+ + $(ZUO) $(workarea) install-release_notes MAKE="$(MAKE)"
+
+ .PHONY: bintar
+-bintar: $(ZUO)
++bintar: $(ZUO_DEP)
+ + $(ZUO) $(workarea) bintar MAKE="$(MAKE)"
+
+ .PHONY: rpm
+-rpm: $(ZUO)
++rpm: $(ZUO_DEP)
+ + $(ZUO) $(workarea) rpm MAKE="$(MAKE)"
+
+ .PHONY: pkg
+-pkg: $(ZUO)
++pkg: $(ZUO_DEP)
+ + $(ZUO) $(workarea) pkg MAKE="$(MAKE)"
+
+ .PHONY: clean
+-clean: $(ZUO)
++clean: $(ZUO_DEP)
+ + $(ZUO) $(workarea) clean MAKE="$(MAKE)"
+ $(RM_ZUO)
+
+--
+2.41.0
+