Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package orange-canvas-core

[ Reason ]
Fix FTBFS detected by reproducible builds.

[ Impact ]
Base package for all the orange3 stack.

[ Tests ]
The changes only affect the way the testsuite is run, and they turn an
FTBFS+autopkgtest failure in a success on both counts.

[ Risks ]
Not a leaf package; a few reverse-depends, all part of the orange3 suite.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

[ Other info ]
Fix for #1098586. The changes are twofold: run the testsuite with a window
manager (because it depends on focus changes and that requires a window
manager), and disable an explicit trigger of the garbage collector in the
testsuite which causes a segmentation fault.

unblock orange-canvas-core/0.2.5-2
diff -Nru orange-canvas-core-0.2.5/debian/changelog 
orange-canvas-core-0.2.5/debian/changelog
--- orange-canvas-core-0.2.5/debian/changelog   2025-01-26 19:37:32.000000000 
+0100
+++ orange-canvas-core-0.2.5/debian/changelog   2025-07-19 16:01:22.000000000 
+0200
@@ -1,3 +1,12 @@
+orange-canvas-core (0.2.5-2) unstable; urgency=medium
+
+  * Run testsuite with a window manager.
+  * Also, disable explicit garbage collection in testsuite.
+  * These two changes, combined, fix "FTBFS: Segmentation fault", thanks
+    to Santiago Vila (Closes: #1098586).
+
+ -- Roland Mas <lola...@debian.org>  Sat, 19 Jul 2025 16:01:22 +0200
+
 orange-canvas-core (0.2.5-1) unstable; urgency=medium
 
   * New upstream release.
diff -Nru orange-canvas-core-0.2.5/debian/control 
orange-canvas-core-0.2.5/debian/control
--- orange-canvas-core-0.2.5/debian/control     2025-01-26 19:37:32.000000000 
+0100
+++ orange-canvas-core-0.2.5/debian/control     2025-07-19 15:36:06.000000000 
+0200
@@ -6,9 +6,11 @@
  Debian Science Maintainers 
<debian-science-maintain...@lists.alioth.debian.org>,
  Roland Mas <lola...@debian.org>,
 Build-Depends:
+ dbus <!nocheck>,
  debhelper-compat (= 13),
  dh-sequence-numpy3,
  dh-sequence-python3,
+ herbstluftwm,
  pybuild-plugin-pyproject,
  python3-all,
  python3-anyqt (>= 0.2.0),
@@ -19,11 +21,12 @@
  python3-pyqt5,
  python3-pyqt5.qtsvg,
  python3-pytest <!nocheck>,
- python3-pytest-xvfb <!nocheck>,
+ python3-pytestqt <!nocheck>,
  python3-qasync,
  python3-requests-cache,
  python3-setuptools,
  python3-trubar,
+ xvfb,
 Standards-Version: 4.6.2.0
 Homepage: https://orange.biolab.si/
 Vcs-Git: https://salsa.debian.org/science-team/orange-canvas-core.git
diff -Nru 
orange-canvas-core-0.2.5/debian/patches/0001-Disable-explicit-garbage-collection-in-testsuite.patch
 
orange-canvas-core-0.2.5/debian/patches/0001-Disable-explicit-garbage-collection-in-testsuite.patch
--- 
orange-canvas-core-0.2.5/debian/patches/0001-Disable-explicit-garbage-collection-in-testsuite.patch
 1970-01-01 01:00:00.000000000 +0100
+++ 
orange-canvas-core-0.2.5/debian/patches/0001-Disable-explicit-garbage-collection-in-testsuite.patch
 2025-07-19 15:58:15.000000000 +0200
@@ -0,0 +1,20 @@
+From: Roland Mas <roland....@entierement.net>
+Date: Sat, 19 Jul 2025 15:23:44 +0200
+Subject: Disable explicit garbage collection in testsuite
+
+---
+ orangecanvas/gui/test.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/orangecanvas/gui/test.py b/orangecanvas/gui/test.py
+index 8382f30..1529a34 100644
+--- a/orangecanvas/gui/test.py
++++ b/orangecanvas/gui/test.py
+@@ -48,7 +48,6 @@ class QCoreAppTestCase(unittest.TestCase):
+ 
+     @classmethod
+     def tearDownClass(cls):
+-        gc.collect()
+         cls.app.setApplicationName(cls.__appname)
+         cls.app.setOrganizationDomain(cls.__appdomain)
+         cls.app.sendPostedEvents(None, 0)
diff -Nru orange-canvas-core-0.2.5/debian/patches/series 
orange-canvas-core-0.2.5/debian/patches/series
--- orange-canvas-core-0.2.5/debian/patches/series      1970-01-01 
01:00:00.000000000 +0100
+++ orange-canvas-core-0.2.5/debian/patches/series      2025-07-19 
15:59:32.000000000 +0200
@@ -0,0 +1 @@
+0001-Disable-explicit-garbage-collection-in-testsuite.patch
diff -Nru orange-canvas-core-0.2.5/debian/rules 
orange-canvas-core-0.2.5/debian/rules
--- orange-canvas-core-0.2.5/debian/rules       2025-01-26 19:37:32.000000000 
+0100
+++ orange-canvas-core-0.2.5/debian/rules       2025-07-19 15:35:27.000000000 
+0200
@@ -1,7 +1,17 @@
 #! /usr/bin/make -f
 
 export PYBUILD_NAME=orange-canvas-core
-export PYBUILD_TEST_ARGS=-k "not test_iconengine"
+export PYBUILD_TEST_ARGS=-k "not test_iconengine" --capture=no
 
 %:
        dh $@ --buildsystem=pybuild
+
+export DISPLAY=:99.0
+
+execute_before_dh_auto_test:
+       /sbin/start-stop-daemon --start --quiet --pidfile 
$(CURDIR)/custom_xvfb.pid --make-pidfile --background --exec /usr/bin/Xvfb -- 
:99
+       /sbin/start-stop-daemon --start --quiet --pidfile 
$(CURDIR)/custom_herbstluftwm.pid --make-pidfile --background --exec 
/usr/bin/herbstluftwm -- --replace
+
+execute_after_dh_auto_test:
+       /sbin/start-stop-daemon --stop --quiet --pidfile 
$(CURDIR)/custom_herbstluftwm.pid --remove-pidfile || true
+       /sbin/start-stop-daemon --stop --quiet --pidfile 
$(CURDIR)/custom_xvfb.pid --remove-pidfile || true
diff -Nru orange-canvas-core-0.2.5/debian/tests/control 
orange-canvas-core-0.2.5/debian/tests/control
--- orange-canvas-core-0.2.5/debian/tests/control       2025-01-26 
19:37:32.000000000 +0100
+++ orange-canvas-core-0.2.5/debian/tests/control       2025-07-19 
15:58:15.000000000 +0200
@@ -1,9 +1,11 @@
 Tests: python
 Depends:
+ dbus,
+ herbstluftwm,
  python3-all,
  python3-orange-canvas-core,
  python3-pyqt5,
  python3-pyqt5.qtsvg,
  python3-pytest,
- python3-pytest-xvfb,
+ xvfb,
 Restrictions: allow-stderr, skip-not-installable, flaky
diff -Nru orange-canvas-core-0.2.5/debian/tests/python 
orange-canvas-core-0.2.5/debian/tests/python
--- orange-canvas-core-0.2.5/debian/tests/python        2025-01-26 
19:37:32.000000000 +0100
+++ orange-canvas-core-0.2.5/debian/tests/python        2025-07-19 
15:58:15.000000000 +0200
@@ -1,6 +1,16 @@
 #!/bin/sh -ex
 
-for py in $(py3versions --supported 2>/dev/null); do
-    echo "Testing with $py: ";
-    $py -m pytest --pyargs orangecanvas -k "not test_iconengine"
+export DISPLAY=:99.0
+
+for py in $(py3versions --supported 2> /dev/null); do
+    tmphome=$(mktemp -d)
+    /sbin/start-stop-daemon --start --quiet --pidfile $tmphome/custom_xvfb.pid 
--make-pidfile --background --exec /usr/bin/Xvfb -- :99
+    /sbin/start-stop-daemon --start --quiet --pidfile 
$tmphome/custom_herbstluftwm.pid --make-pidfile --background --exec 
/usr/bin/herbstluftwm -- --replace
+
+    echo "Testing with $py: "
+    HOME=$tmphome $py -m pytest --pyargs orangecanvas -k "not test_iconengine" 
--capture=no
+
+    /sbin/start-stop-daemon --stop --quiet --pidfile 
$tmphome/custom_herbstluftwm.pid --remove-pidfile || true
+    /sbin/start-stop-daemon --stop --quiet --pidfile $tmphome/custom_xvfb.pid 
--remove-pidfile || true
+    rm -rf $tmphome
 done

Reply via email to