Package: release.debian.org User: release.debian....@packages.debian.org Usertags: unblock Severity: normal
Please unblock package guile-2.2 See the two bugs mentioned in the changelog. Recent builds (tests) have started failing on additional architectures, including amd64 (locally too) due to the popen.test issue, and the motivation for the "alternatives" related change is described in bug 926182. The changes proposed are the first 5 commits here: https://salsa.debian.org/rlb/deb-guile/commits/02b16a15a8459b2fe12bb925c1d639149c75c0ce i.e.:
diff --git a/debian/.git-dpm b/debian/.git-dpm index 2d64dcbe1..d47d6bf93 100644 --- a/debian/.git-dpm +++ b/debian/.git-dpm @@ -1,6 +1,6 @@ # see git-dpm(1) from git-dpm package -59d9bcd468aab0d97d763595fd4e934044dc7590 -59d9bcd468aab0d97d763595fd4e934044dc7590 +c17d093ff083f4f8ba604d7ea60d76282fd31daf +c17d093ff083f4f8ba604d7ea60d76282fd31daf 4d0be7303dd8f27e1e15478751a9daa2c680a677 4d0be7303dd8f27e1e15478751a9daa2c680a677 guile-2.2_2.2.4+1.orig.tar.xz diff --git a/debian/changelog b/debian/changelog index ca83af872..3cf949776 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,32 @@ -guile-2.2 (2.2.4+1-1~1.gbpc776ff) UNRELEASED; urgency=medium +guile-2.2 (2.2.4+1-2) unstable; urgency=medium - ** SNAPSHOT build @c776ff77c289f2a3775a99f0d9ca9b33bcd5c6ae ** + * Backport upstream fix for after-gc-hook test failures. Replace + 0006-gc.test-after-gc-hook-mark-unresolved-on-failure-for.patch that + marked the failure as unresolved on mips(el) (a failure which has been + seen since on at least sparc64 and amd64) with + 0006-Fix-gc.test-after-gc-hook-gets-called-failures.patch which + addresses the underlying problem. (Closes: 900652) - * UNRELEASED + * Handle guile-config/guile-snarf/guild as alternatives. Arrange for + guile-config, guile-snarf, guild (and guile-tools) to be handled via + update-alternatives with all of the other tools dependent on + guile-config. Configure with "--program-suffix -2.2" which gives the + binaries the correct names from the start, so that we don't have to + manually change them in debian/rules. This also arranges for + guile-config, etc. to refer to the versioned guile in their #! lines, + which is what we should have been doing all along. - -- Rob Browning <r...@defaultvalue.org> Sat, 28 Jul 2018 15:05:31 -0500 + Thanks to Ahmed El-Mahmoudy and Norbert Preining for reporting the + problem, Kari Pahula and Vagrant Cascadian for help devising the fix, + and Thibaut Paumard for help testing. (Closes: 926182) + + -- Rob Browning <r...@defaultvalue.org> Sun, 02 Jun 2019 11:17:15 -0500 + +guile-2.2 (2.2.4+1-1) unstable; urgency=medium + + * Upgrade to 2.2.4. + + -- Rob Browning <r...@defaultvalue.org> Sat, 28 Jul 2018 15:10:51 -0500 guile-2.2 (2.2.3+1-6) unstable; urgency=medium diff --git a/debian/guile-dev.install b/debian/guile-dev.install index d73d1164f..8c10f5018 100644 --- a/debian/guile-dev.install +++ b/debian/guile-dev.install @@ -1,7 +1,7 @@ -debian/tmp/usr/bin/guild -debian/tmp/usr/bin/guile-config -debian/tmp/usr/bin/guile-snarf -debian/tmp/usr/bin/guile-tools +debian/tmp/usr/bin/guild-@DEB_SRC_EFF_VER@ +debian/tmp/usr/bin/guile-config-@DEB_SRC_EFF_VER@ +debian/tmp/usr/bin/guile-snarf-@DEB_SRC_EFF_VER@ +debian/tmp/usr/bin/guile-tools-@DEB_SRC_EFF_VER@ debian/tmp/usr/include/* debian/tmp/usr/lib/*/*.a debian/tmp/usr/lib/*/libguile-@DEB_SRC_EFF_VER@.so diff --git a/debian/guile-dev.postinst b/debian/guile-dev.postinst new file mode 100644 index 000000000..afee5e43a --- /dev/null +++ b/debian/guile-dev.postinst @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +update-alternatives \ + --install /usr/bin/guile-config guile-config \ + /usr/bin/guile-config-@DEB_SRC_EFF_VER@ @DEB_ALT_PRIORITY@ \ + --slave /usr/bin/guile-snarf guile-snarf \ + /usr/bin/guile-snarf-@DEB_SRC_EFF_VER@ \ + --slave /usr/bin/guild guile-guild \ + /usr/bin/guild-@DEB_SRC_EFF_VER@ \ + --slave /usr/bin/guile-tools guile-tools \ + /usr/bin/guile-tools-@DEB_SRC_EFF_VER@ + +#DEBHELPER# diff --git a/debian/guile-dev.prerm b/debian/guile-dev.prerm new file mode 100644 index 000000000..95ce087e0 --- /dev/null +++ b/debian/guile-dev.prerm @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +if [ "$1" != upgrade ] +then + update-alternatives --verbose \ + --remove guile-config \ + /usr/bin/guile-config-@DEB_SRC_EFF_VER@ +fi + +#DEBHELPER# diff --git a/debian/guile-libs.install b/debian/guile-libs.install index 5dca45303..a2335c3f1 100644 --- a/debian/guile-libs.install +++ b/debian/guile-libs.install @@ -1,4 +1,4 @@ -debian/tmp/usr/bin/guile /usr/lib/@MARCH@guile-@DEB_SRC_EFF_VER@/bin +debian/tmp/usr/bin/guile /usr/lib/@MARCH@guile/@DEB_SRC_EFF_VER@/bin debian/tmp/usr/lib/*/guile/@DEB_SRC_EFF_VER@/ccache/* debian/tmp/usr/lib/*/libguile-@DEB_SRC_EFF_VER@.so.* debian/tmp/usr/lib/*/guile/@DEB_SRC_EFF_VER@/extensions/guile-readline.so* diff --git a/debian/guile.links b/debian/guile.links index a3aa03443..066b6f7f6 100644 --- a/debian/guile.links +++ b/debian/guile.links @@ -1 +1 @@ -usr/lib/@MARCH@guile-@DEB_SRC_EFF_VER@/bin/guile usr/bin/guile-@DEB_SRC_EFF_VER@ +usr/lib/@MARCH@guile/@DEB_SRC_EFF_VER@/bin/guile usr/bin/guile-@DEB_SRC_EFF_VER@ diff --git a/debian/guile.postinst b/debian/guile.postinst index 2596b5420..a68ba2157 100644 --- a/debian/guile.postinst +++ b/debian/guile.postinst @@ -6,7 +6,7 @@ update-alternatives \ --install \ /usr/bin/guile \ guile \ - /usr/lib/@MARCH@guile-@DEB_SRC_EFF_VER@/bin/guile \ + /usr/lib/@MARCH@guile/@DEB_SRC_EFF_VER@/bin/guile \ @DEB_ALT_PRIORITY@ \ --slave /usr/share/man/man1/guile.1.gz guile.1.gz \ /usr/share/man/man1/guile-@deb_src_eff_...@.1.gz diff --git a/debian/guile.prerm b/debian/guile.prerm index ca8c02cf9..bdd11f282 100644 --- a/debian/guile.prerm +++ b/debian/guile.prerm @@ -4,7 +4,7 @@ set -e if [ "$1" != "upgrade" ] ; then update-alternatives --remove guile \ - /usr/lib/@MARCH@guile-@DEB_SRC_EFF_VER@/bin/guile + /usr/lib/@MARCH@guile/@DEB_SRC_EFF_VER@/bin/guile fi #DEBHELPER# diff --git a/debian/patches/0006-Fix-gc.test-after-gc-hook-gets-called-failures.patch b/debian/patches/0006-Fix-gc.test-after-gc-hook-gets-called-failures.patch new file mode 100644 index 000000000..86d85c435 --- /dev/null +++ b/debian/patches/0006-Fix-gc.test-after-gc-hook-gets-called-failures.patch @@ -0,0 +1,35 @@ +From c17d093ff083f4f8ba604d7ea60d76282fd31daf Mon Sep 17 00:00:00 2001 +From: Andrea Azzarone <andrea.azzar...@canonical.com> +Date: Thu, 11 Apr 2019 16:30:58 +0100 +Subject: Fix gc.test "after-gc-hook gets called" failures. + +* libguile/scmsigs.c (signal_delivery_thread): Call scm_async_tick to +give any pending asyncs a chance to run before we block indefinitely +waiting for a signal to arrive. + +Origin: backport, commit: 546b0e87294b837ec29164d87cf17102e9aeee0c) +Bug: https://debbugs.gnu.org/31776 +Bug-Debian: https://bugs.debian.org/900652 +--- + libguile/scmsigs.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c +index 21b2a9529..755e657ea 100644 +--- a/libguile/scmsigs.c ++++ b/libguile/scmsigs.c +@@ -174,6 +174,14 @@ signal_delivery_thread (void *data) + { + struct signal_pipe_data sigdata; + ++ /* This tick gives any pending asyncs a chance to run before we ++ block indefinitely waiting for a signal to arrive. For example ++ it can happen that the garbage collector is triggered while ++ marking the signal handler for future execution. Due to the ++ way the after-gc-hook is designed, without a call to ++ scm_async_tick, the after-gc-hook will not be triggered. */ ++ scm_async_tick (); ++ + scm_without_guile (read_signal_pipe_data, &sigdata); + + sig = sigdata.sigbyte; diff --git a/debian/patches/0006-gc.test-after-gc-hook-mark-unresolved-on-failure-for.patch b/debian/patches/0006-gc.test-after-gc-hook-mark-unresolved-on-failure-for.patch deleted file mode 100644 index 642f85ff3..000000000 --- a/debian/patches/0006-gc.test-after-gc-hook-mark-unresolved-on-failure-for.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 59d9bcd468aab0d97d763595fd4e934044dc7590 Mon Sep 17 00:00:00 2001 -From: Rob Browning <r...@defaultvalue.org> -Date: Sat, 21 Jul 2018 14:30:35 -0500 -Subject: gc.test: after-gc-hook - mark unresolved on failure for mips(el) - -Bug: https://debbugs.gnu.org/31776 -Bug-Debian: https://bugs.debian.org/900652 ---- - test-suite/tests/gc.test | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/test-suite/tests/gc.test b/test-suite/tests/gc.test -index 04f353984..69f48ebbf 100644 ---- a/test-suite/tests/gc.test -+++ b/test-suite/tests/gc.test -@@ -67,7 +67,10 @@ - (add-hook! after-gc-hook thunk) - (gc) - (remove-hook! after-gc-hook thunk) -- foo)) -+ (let ((cpu (substring %host-type 0 (string-index %host-type #\-)))) -+ (cond ((string=? cpu "mips") (maybe-gc-flakiness foo)) -+ ((string=? cpu "mipsel") (maybe-gc-flakiness foo)) -+ (else foo))))) - - (pass-if "Unused modules are removed" - (let* ((guard (make-guardian)) diff --git a/debian/patches/series b/debian/patches/series index f0d12c32d..026d6d2d1 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -3,4 +3,4 @@ 0003-Disable-sandbox.test-1e6-alloc-loop-allocation-limit.patch 0004-Disable-intermittently-failing-test-out-of-memory-te.patch 0005-Disable-more-of-test-out-of-memory-test.patch -0006-gc.test-after-gc-hook-mark-unresolved-on-failure-for.patch +0006-Fix-gc.test-after-gc-hook-gets-called-failures.patch diff --git a/debian/rules b/debian/rules index 5901d4d45..fe53e0c00 100755 --- a/debian/rules +++ b/debian/rules @@ -137,6 +137,8 @@ autogen_install_files := $(addprefix debian/, \ autogen_installdeb_files := $(addprefix debian/, \ guile-$(deb_src_eff_ver).postinst \ guile-$(deb_src_eff_ver).prerm \ + guile-$(deb_src_eff_ver)-dev.postinst \ + guile-$(deb_src_eff_ver)-dev.prerm \ guile-$(deb_src_eff_ver)-doc.postinst \ guile-$(deb_src_eff_ver)-doc.prerm \ guile-$(deb_src_eff_ver)-libs.postinst \ @@ -173,7 +175,8 @@ override_dh_autoreconf: dh_autoreconf ./autogen.sh override_dh_auto_configure: - dh_auto_configure -- --disable-error-on-warning --disable-rpath + dh_auto_configure -- --disable-error-on-warning --disable-rpath \ + --program-suffix "-$(deb_src_eff_ver)" override_dh_auto_clean: # If Makefile doesn't exist GNUmakefile will abort on distclean. @@ -221,24 +224,16 @@ override_dh_installinfo: override_dh_auto_install: $(autogen_install_files) make DESTDIR="$$(pwd)/debian/tmp" INSTALL='install -p' install rm -f debian/tmp/usr/lib/$(march)libguile*.la - mv debian/tmp/usr/share/man/man1/guile.1 \ - debian/tmp/usr/share/man/man1/guile-$(deb_src_eff_ver).1 gdb_ext := \ debian/$(deb_pkg_basename)-libs/usr/lib/$(march)libguile-$(deb_src_eff_ver).so*-gdb.scm gdb_ext_dir := debian/$(deb_pkg_basename)-dev/usr/share/gdb/auto-load override_dh_install-arch: $(autogen_install_files) + cd debian/tmp/usr/bin && mv -i guile-$(deb_src_eff_ver) guile dh_install -a --fail-missing \ -Xusr/lib/$(march)guile/$(deb_src_eff_ver)/extensions/guile-readline.a \ -Xusr/lib/$(march)guile/$(deb_src_eff_ver)/extensions/guile-readline.la - - sed -i'' '0,\|/usr/bin/guile|s||$(deb_guile_bin_path)|' \ - debian/$(deb_pkg_basename)-dev/usr/bin/guile-config - - sed -i'' '0,\|\$${exec_prefix}/bin/guile|s||$(deb_guile_bin_path)|' \ - debian/$(deb_pkg_basename)-dev/usr/bin/guild - test -e $(gdb_ext) mkdir -p $(gdb_ext_dir) mv $(gdb_ext) $(gdb_ext_dir) diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c index 21b2a9529..755e657ea 100644 --- a/libguile/scmsigs.c +++ b/libguile/scmsigs.c @@ -174,6 +174,14 @@ signal_delivery_thread (void *data) { struct signal_pipe_data sigdata; + /* This tick gives any pending asyncs a chance to run before we + block indefinitely waiting for a signal to arrive. For example + it can happen that the garbage collector is triggered while + marking the signal handler for future execution. Due to the + way the after-gc-hook is designed, without a call to + scm_async_tick, the after-gc-hook will not be triggered. */ + scm_async_tick (); + scm_without_guile (read_signal_pipe_data, &sigdata); sig = sigdata.sigbyte; diff --git a/test-suite/tests/gc.test b/test-suite/tests/gc.test index 69f48ebbf..04f353984 100644 --- a/test-suite/tests/gc.test +++ b/test-suite/tests/gc.test @@ -67,10 +67,7 @@ (add-hook! after-gc-hook thunk) (gc) (remove-hook! after-gc-hook thunk) - (let ((cpu (substring %host-type 0 (string-index %host-type #\-)))) - (cond ((string=? cpu "mips") (maybe-gc-flakiness foo)) - ((string=? cpu "mipsel") (maybe-gc-flakiness foo)) - (else foo))))) + foo)) (pass-if "Unused modules are removed" (let* ((guard (make-guardian))
And the debdiff:
guile-buster-debdiff
Description: guile-buster-2.2.4+1-2.debdiff
unblock guile-2.2/2.2.4+1-2 Thanks -- Rob Browning rlb @defaultvalue.org and @debian.org GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4