[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#929950: unblock: guile-2.2/2.2.4+1-2



Package: release.debian.org
User: release.debian.org@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 <rlb@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 <rlb@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 <rlb@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_VER@.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.azzarone@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 <rlb@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:

Attachment: 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

Reply to: