From: Ashish SHUKLA via Guix-patches via <guix-patches@gnu.org>
To: 74360@debbugs.gnu.org
Cc: Ashish SHUKLA <ashish.is@lostca.se>,
Philip McGrath <philip@philipmcgrath.com>
Subject: [bug#74360] [PATCH v2] gnu: chez-scheme: Update to 10.1.0.
Date: Sun, 17 Nov 2024 22:26:52 +0100 [thread overview]
Message-ID: <ec941c318730191c32b7f53f6d9ae2d699d4121c.1731878811.git.ashish.is@lostca.se> (raw)
In-Reply-To: <87bjyditkr.fsf@ngraves.fr>
* gnu/packages/chez.scm (chez-scheme): Update to 10.1.0.
[source](origin)<patches>: Remove upstreamed patches.
[description]: Fix lint warning.
* gnu/packages/patches/chez-scheme-backport-configure.patch: Delete file.
* gnu/packages/patches/chez-scheme-backport-signal.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): Deregister patches.
Change-Id: I00ea93290b1d386fb4641a57de1035b6e8c63c6e
---
Hi,
Patch is revised according to the comment.
Thanks!
gnu/local.mk | 2 -
gnu/packages/chez.scm | 11 +-
.../chez-scheme-backport-configure.patch | 463 ------------------
.../patches/chez-scheme-backport-signal.patch | 87 ----
4 files changed, 5 insertions(+), 558 deletions(-)
delete mode 100644 gnu/packages/patches/chez-scheme-backport-configure.patch
delete mode 100644 gnu/packages/patches/chez-scheme-backport-signal.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 60fc8c9d94..9b2b2ac51d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1048,8 +1048,6 @@ dist_patch_DATA = \
%D%/packages/patches/ccextractor-add-missing-header.patch \
%D%/packages/patches/ccextractor-autoconf-tesseract.patch \
%D%/packages/patches/ccextractor-fix-ocr.patch \
- %D%/packages/patches/chez-scheme-backport-configure.patch \
- %D%/packages/patches/chez-scheme-backport-signal.patch \
%D%/packages/patches/chez-scheme-bin-sh.patch \
%D%/packages/patches/circos-remove-findbin.patch \
%D%/packages/patches/cdparanoia-fpic.patch \
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index a24e8aaf79..8a3185cfc0 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2020 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2021-2024 Philip McGrath <philip@philipmcgrath.com>
+;;; Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -500,7 +501,7 @@ (define-public chez-scheme
(name "chez-scheme")
;; The version should match `(scheme-version-number #t)`.
;; See s/cmacros.ss c. line 360.
- (version "10.0.0")
+ (version "10.1.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -508,11 +509,9 @@ (define-public chez-scheme
(commit (string-append "v" version))))
(sha256
(base32
- "1q66vafhiwk617z51qkm1v64r3bxqhhf5lzrmsa4l9d5yhvlyk09"))
+ "0y07n2has2592g41zgl275as2wbw1fqd2y7a34llpbqnfpc7923s"))
(file-name (git-file-name name version))
- (patches (search-patches "chez-scheme-backport-configure.patch"
- "chez-scheme-backport-signal.patch"
- "chez-scheme-bin-sh.patch"))
+ (patches (search-patches "chez-scheme-bin-sh.patch"))
(snippet #~(begin
(use-modules (guix build utils))
;; TODO: consider putting this in a (guix ...) or
@@ -540,7 +539,7 @@ (define-public chez-scheme
(synopsis "R6RS Scheme compiler and run-time")
(description
"Chez Scheme is both a programming language and a high-performance
-implementation of that language. The language is a superset of R6RS Scheme
+implementation of that language. The language is a superset of R6RS Scheme
with numerous extensions, including native threads, non-blocking I/O, local
modules, and much more. Chez Scheme compiles source expressions incrementally
to machine code, providing the speed of compiled code in an interactive
diff --git a/gnu/packages/patches/chez-scheme-backport-configure.patch b/gnu/packages/patches/chez-scheme-backport-configure.patch
deleted file mode 100644
index 584dcb3f0b..0000000000
--- a/gnu/packages/patches/chez-scheme-backport-configure.patch
+++ /dev/null
@@ -1,463 +0,0 @@
-From 24ab36374f2e366b6c939fffe8c129c8b0ae3b9c 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] Repairs and improvements for building with external
- dependencies (#807)
-
-* configure: fix zlib and lz4 submodule checks
-
-Conditionals to skip the submodule checks were using the wrong
-variable names, so the checks were always skipped. The correct
-behavior is to perform the check unless given `ZLIB=<zlib>` or
-`LZ4=<lz4>`, as applicable.
-
-* 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 b8838c3280ef10e115236d2f7ac9ae857f83e268)
----
- BUILDING | 5 +++--
- build.zuo | 13 +++++++++----
- configure | 40 +++++++++++++++++++++++++++++++++-------
- makefiles/Makefile.in | 6 ++----
- 4 files changed, 47 insertions(+), 17 deletions(-)
-
-diff --git a/BUILDING b/BUILDING
-index 7b3dc9c8..9e9a268b 100644
---- a/BUILDING
-+++ b/BUILDING
-@@ -149,7 +149,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).
-
-@@ -333,7 +334,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/build.zuo b/build.zuo
-index c21d2caa..c5896396 100644
---- a/build.zuo
-+++ b/build.zuo
-@@ -224,10 +224,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/configure b/configure
-index 2b4b594e..782dd09b 100755
---- a/configure
-+++ b/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
-@@ -103,6 +104,7 @@ moreBootFiles=
- preloadBootFiles=
- alwaysUseBootFile=
- skipSubmoduleUpdate=
-+zuoExternal=
-
- CONFIG_UNAME=`uname`
-
-@@ -446,6 +448,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
-@@ -672,6 +680,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 ""
-@@ -889,28 +899,39 @@ submod_instructions () {
- exit 1
- }
-
--if [ ! -f "$srcdir"/zuo/configure ] ; then
-- submod_instructions 'Source in "zuo" is missing'
-+if [ "${zuoExternal}" = "" ] ; then
-+ if [ ! -f "$srcdir"/zuo/configure ] ; then
-+ submod_instructions 'Source in "zuo" is missing'
-+ fi
-+ 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
-
- if [ ! -f "$srcdir"/nanopass/nanopass.ss ] ; then
- submod_instructions 'Source in "nanopass" is missing'
- fi
-
--if [ "${zlibDep}" != "" ] ; then
-+if [ "${zlibLib}" = "" ] ; then
- if [ ! -f "$srcdir"/zlib/configure ] ; then
- submod_instructions 'Source in "zlib" is missing'
- fi
- fi
-
--if [ "${LZ4Dep}" != "" ] ; then
-+if [ "${LZ4Lib}" = "" ] ; then
- if [ ! -f "$srcdir"/lz4/lib/Makefile ] ; then
- submod_instructions 'Source in "lz4" is missing'
- fi
- fi
-
--if [ ! -f "$srcdir"/stex/Mf-stex ] ; then
-- submod_instructions 'Source in "stex" is missing'
-+if [ "${STEXLIB}" = "" ] ; then
-+ if [ ! -f "$srcdir"/stex/Mf-stex ] ; then
-+ submod_instructions 'Source in "stex" is missing'
-+ fi
- fi
-
- # more compile and link flags for c/Mf-unix and mats/Mf-unix
-@@ -1083,7 +1104,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
-@@ -1119,6 +1140,7 @@ cursesLib=$cursesLib
- ncursesLib=$ncursesLib
- zlibLib=$zlibLib
- LZ4Lib=$LZ4Lib
-+STEXLIB=$STEXLIB
- warningFlags=$warningFlags
- Kernel=$Kernel
- installscriptname=$installscriptname
-@@ -1130,6 +1152,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/makefiles/Makefile.in b/makefiles/Makefile.in
-index 3b95f065..0e3d307d 100644
---- a/makefiles/Makefile.in
-+++ b/makefiles/Makefile.in
-@@ -3,8 +3,6 @@ workarea=$(w)
-
- include $(workarea)/Mf-config
-
--ZUO=bin/zuo
--
- .PHONY: build
- build: $(ZUO)
- + $(ZUO) $(workarea) MAKE="$(MAKE)"
-@@ -144,9 +142,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='"'"../zuo/lib"'"' -o $(ZUO) $(srcdir)/zuo/zuo.c
-
-base-commit: 253230f7dfbb4fe777277d6bbf93f39f9567f086
---
-2.41.0
-
-
-From 665bccc1c074131e790879adc1436f8059801171 Mon Sep 17 00:00:00 2001
-From: Matthew Flatt <mflatt@racket-lang.org>
-Date: Sun, 17 Mar 2024 09:06:30 -0600
-Subject: [PATCH 2/2] adjust `configure ZUO=<command>` support (#816)
-
-Continuing from b8838c3280, 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 d327968f37cdf669d15a9ad6d356bbf92c502bb9)
----
- configure | 3 ++
- makefiles/Makefile.in | 66 +++++++++++++++++++++----------------------
- 2 files changed, 36 insertions(+), 33 deletions(-)
-
-diff --git a/configure b/configure
-index 782dd09b..9adae37a 100755
---- a/configure
-+++ b/configure
-@@ -904,10 +904,12 @@ if [ "${zuoExternal}" = "" ] ; then
- submod_instructions 'Source in "zuo" is missing'
- fi
- 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
-@@ -1153,6 +1155,7 @@ alwaysUseBootFile=$alwaysUseBootFile
- relativeBootFiles=$relativeBootFiles
-
- ZUO=$ZUO
-+ZUO_DEP=$ZUO_DEP
- RM_ZUO=$RM_ZUO
- ZUO_TARGET=$ZUO_TARGET
-
-diff --git a/makefiles/Makefile.in b/makefiles/Makefile.in
-index 0e3d307d..fc8605a0 100644
---- a/makefiles/Makefile.in
-+++ b/makefiles/Makefile.in
-@@ -4,55 +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-one
--test-one: $(ZUO)
-+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)
-+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>
-@@ -61,90 +61,90 @@ 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)
-
- # Using `+` here means that $(ZUO) gets built even if `-n`/`--dry-run` is provided to `make`
- $(ZUO_TARGET): $(srcdir)/zuo/zuo.c
- + mkdir -p bin
-- + $(CC_FOR_BUILD) -DZUO_LIB_PATH='"'"../zuo/lib"'"' -o $(ZUO) $(srcdir)/zuo/zuo.c
-+ + $(CC_FOR_BUILD) -DZUO_LIB_PATH='"'"$(upsrcdir)/zuo/lib"'"' -o $(ZUO) $(srcdir)/zuo/zuo.c
---
-2.41.0
-
diff --git a/gnu/packages/patches/chez-scheme-backport-signal.patch b/gnu/packages/patches/chez-scheme-backport-signal.patch
deleted file mode 100644
index 1fee32b167..0000000000
--- a/gnu/packages/patches/chez-scheme-backport-signal.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From e416651d8b53fa2eca6edde764a9131d128cd166 Mon Sep 17 00:00:00 2001
-From: Matthew Flatt <mflatt@racket-lang.org>
-Date: Sat, 2 Mar 2024 07:18:41 -0700
-Subject: [PATCH] constrain signal delivery to Scheme to the main thread (#813)
-
-The intent is to avoid crashes when a signal gets delimited to a
-thread that might not even be a Scheme thread. Also, we don't try to
-queue the event directly in the main thread's context, because then
-we'd need more of a lock (while signal handling is otherwise an
-implicit lock).
-
-(cherry picked from commit fc081fc447a786dd53286e5d7314b7217631cb68)
----
-
-Notes:
- This should fix intermittent test failures experienced by Guix:
- see <https://github.com/cisco/ChezScheme/issues/809>.
-
- c/globals.h | 1 +
- c/schsig.c | 10 ++++++++++
- c/thread.c | 1 +
- csug/system.stex | 2 ++
- 4 files changed, 14 insertions(+)
-
-diff --git a/c/globals.h b/c/globals.h
-index d2a08299..eb2965c5 100644
---- a/c/globals.h
-+++ b/c/globals.h
-@@ -49,6 +49,7 @@ EXTERN int S_num_preserve_ownership_threads;
- # ifdef IMPLICIT_ATOMIC_AS_EXPLICIT
- EXTERN s_thread_mutex_t S_implicit_mutex;
- # endif
-+EXTERN s_thread_t S_main_thread_id;
- #endif
-
- /* segment.c */
-diff --git a/c/schsig.c b/c/schsig.c
-index a89ab62a..04677730 100644
---- a/c/schsig.c
-+++ b/c/schsig.c
-@@ -666,6 +666,16 @@ ptr S_dequeue_scheme_signals(ptr tc) {
- static void forward_signal_to_scheme(INT sig) {
- ptr tc = get_thread_context();
-
-+#ifdef PTHREADS
-+ /* deliver signals to the main thread, only; depending
-+ on the threads that are running, `tc` might even be NULL */
-+ if (tc != TO_PTR(&S_G.thread_context)) {
-+ pthread_kill(S_main_thread_id, sig);
-+ RESET_SIGNAL
-+ return;
-+ }
-+#endif
-+
- if (enqueue_scheme_signal(tc, sig)) {
- SIGNALINTERRUPTPENDING(tc) = Strue;
- SOMETHINGPENDING(tc) = Strue;
-diff --git a/c/thread.c b/c/thread.c
-index 9a341b22..f130f44d 100644
---- a/c/thread.c
-+++ b/c/thread.c
-@@ -40,6 +40,7 @@ void S_thread_init(void) {
- s_thread_cond_init(&S_terminated_cond);
- S_alloc_mutex.owner = 0;
- S_alloc_mutex.count = 0;
-+ S_main_thread_id = s_thread_self();
-
- # ifdef IMPLICIT_ATOMIC_AS_EXPLICIT
- s_thread_mutex_init(&S_implicit_mutex);
-diff --git a/csug/system.stex b/csug/system.stex
-index d4f2bcbb..bb89f419 100644
---- a/csug/system.stex
-+++ b/csug/system.stex
-@@ -547,6 +547,8 @@ After a signal handler for a given signal has been registered, receipt
- of the specified signal results in a call to the handler.
- The handler is passed the signal number, allowing the same handler to
- be used for different signals while differentiating among them.
-+In a threaded version of the system, signals are always delivered to
-+the main thread.
-
- Signals handled in this fashion are treated like keyboard interrupts in
- that the handler is not called immediately when the signal is delivered
-
-base-commit: 253230f7dfbb4fe777277d6bbf93f39f9567f086
---
-2.41.0
-
base-commit: d108a7aac2c51f21c55cb8ea8801629a97f5242a
--
2.47.0
next prev parent reply other threads:[~2024-11-17 21:29 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-14 22:17 [bug#74360] [PATCH] gnu: chez-scheme: Update to 10.1.0 Ashish SHUKLA via Guix-patches via
2024-11-17 18:49 ` [bug#74360] QA review for 74360 Nicolas Graves via Guix-patches via
2024-11-17 21:26 ` Ashish SHUKLA via Guix-patches via [this message]
2024-11-19 8:02 ` Nicolas Graves via Guix-patches via
2024-11-19 9:09 ` bug#74360: Close Andreas Enge
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ec941c318730191c32b7f53f6d9ae2d699d4121c.1731878811.git.ashish.is@lostca.se \
--to=guix-patches@gnu.org \
--cc=74360@debbugs.gnu.org \
--cc=ashish.is@lostca.se \
--cc=philip@philipmcgrath.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).