Bug#1109539: unblock: orange-canvas-core/0.2.5-2
Package: release.debian.org
Severity: normal
User: release.debian.org@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 <lolando@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-maintainers@lists.alioth.debian.org>,
Roland Mas <lolando@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.mas@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 to: