Bug#906429: systemd: Please raise timeout for tests (for riscv64)
Tags: upstream patch
This package fails to build in riscv64 due to timeout of the tests (it varies,
but it's often around 5 test cases of the current ~300).
systemd is one of the two remaining packages left from the base set that we have
to patch and ship from "unreleased" instead of "unstable", and possibly the only
remaining one that makes impossible to use "debootstrap" at the moment, so it
would be very nice if this could be sorted out soonish.
Admittedly, this is a problem specially in this architecture due to having
buildds using qemu-system at the moment. However, it's not the only one with
buildds running in qemu (although the others use qemu-user, AFAIK), or with slow
hardware or potentially with systems under load for other reasons, so it could
become a problem for other arches in the future also due to changes upstream (if
the tests start to take more time).
In my opinion, the fact that the buildds are slow by itself shouldn't be a
reason to fail tests, unless the times are truly disproportionate or disruptive
(e.g. taking hours, or more time than the build itself). This is clearly not
the case, waiting 300s instead of 30s is still a very small % of the total time
to build, probably less than 1%.
To try to address it, I first tried to increase the timeout only for the riscv64
architecture, with this recipe in debian/rules (the lines added and commented
+++ systemd-239/debian/rules 2018-08-16 17:02:43.000000000 +0200
@@ -5,6 +5,12 @@
export LC_ALL = C.UTF-8
+# TEST_TIMEOUT_MULTIPLIER = "-t 10"
@@ -282,6 +288,8 @@
ifeq (, $(filter nocheck, $(DEB_BUILD_OPTIONS)))
echo "01234567890123456789012345678901" > build-deb/machine-id
# some tests hang under fakeroot, so disable fakeroot
+# env -u LD_PRELOAD SYSTEMD_MACHINE_ID_PATH=$(CURDIR)/build-deb/machine-id ninja $(TEST_TIMEOUT_MULTIPLIER) -C build-deb test || ( \
env -u LD_PRELOAD SYSTEMD_MACHINE_ID_PATH=$(CURDIR)/build-deb/machine-id ninja -C build-deb test || ( \
cat build-deb/meson-logs/testlog.txt; \
However, I believe that this would have worked if invoking "meson test"
directly, but not when invoking "ninja", because it doesn't pass the -t argument
down to "meson test", and there doesn't seem to be any other way to achieve
There's an open issue about this upstream, but it doesn't seem like it's to be
implemented any time soon:
(An environment variable would be a possible solution, I left a comment
Anyway, so what I did was to use the patch attached to modify upstream in a
couple of places to increase or add explicitly timeout for some tests (instead
of the default of 30s), and this makes it build fine in the same systems used as
So please consider to apply this patch or any equivalent solution that you
prefer, to make unnecessary to build this package every time that there's a new
version, and to be able to use "debootstrap".
Thanks and cheers.
Manuel A. Fernandez Montecelo <firstname.lastname@example.org>
diff -Nru systemd-239/debian/changelog systemd-239/debian/changelog
--- systemd-239/debian/changelog 2018-07-22 13:40:15.000000000 +0200
+++ systemd-239/debian/changelog 2018-08-16 17:02:43.000000000 +0200
@@ -1,3 +1,10 @@
+systemd (239-7+0.riscv64.1) unreleased; urgency=medium
+ * Non-maintainer upload.
+ * riscv64: increase timeout for tests
+ -- Manuel A. Fernandez Montecelo <email@example.com> Thu, 16 Aug 2018 17:02:43 +0200
systemd (239-7) unstable; urgency=medium
* autopkgtest: Add iputils-ping dependency to root-unittests.
diff -Nru systemd-239/debian/patches/riscv64-support.patch systemd-239/debian/patches/riscv64-support.patch
--- systemd-239/debian/patches/riscv64-support.patch 1970-01-01 01:00:00.000000000 +0100
+++ systemd-239/debian/patches/riscv64-support.patch 2018-08-16 17:02:43.000000000 +0200
@@ -0,0 +1,41 @@
+@@ -2382,7 +2382,8 @@
+- args : exe.full_path())
++ args : exe.full_path(),
++ timeout : 300)
+ # https://github.com/mesonbuild/meson/issues/2681
+@@ -2559,7 +2560,7 @@
+ type = tuple.length() >= 5 ? tuple : ''
+ defs = tuple.length() >= 6 ? tuple : 
+ incs = tuple.length() >= 7 ? tuple : includes
+- timeout = 30
++ timeout = 300
+ name = sources.split('/')[-1].split('.')
+ if type.startswith('timeout=')
+@@ -2625,7 +2626,7 @@
+ link_with : [libudev],
+ install : install_tests,
+ install_dir : testsdir)
++test('test-libudev-sym', exe, timeout : 300)
+ exe = executable(
+@@ -38,7 +38,7 @@
+ parse_hwdb_py = find_program('parse_hwdb.py')
+- timeout : 90)
++ timeout : 300)
diff -Nru systemd-239/debian/patches/series systemd-239/debian/patches/series
--- systemd-239/debian/patches/series 2018-07-22 13:40:15.000000000 +0200
+++ systemd-239/debian/patches/series 2018-08-16 17:02:43.000000000 +0200
@@ -28,3 +28,4 @@