Bug#906429: systemd: Please raise timeout for tests (for riscv64)

Manuel A. Fernandez Montecelo mafm at debian.org
Fri Aug 17 15:24:15 BST 2018


Source: systemd
Version: 239-7
Severity: normal
Tags: upstream patch
User: debian-riscv at lists.debian.org
Usertags: riscv64

Hi,

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
out):

  ====================================================
  +++ systemd-239/debian/rules    2018-08-16 17:02:43.000000000 +0200
  @@ -5,6 +5,12 @@
  
   export LC_ALL = C.UTF-8
  
  +#include /usr/share/dpkg/architecture.mk
  +#
  +#ifeq ($(DEB_HOST_ARCH),riscv64)
  +#    TEST_TIMEOUT_MULTIPLIER = "-t 10"
  +#endif
  +
   include /usr/share/dpkg/default.mk
  
   ifeq ($(DEB_VENDOR),Ubuntu)
  @@ -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; \
                  exit 1)
  ====================================================

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
this.

There's an open issue about this upstream, but it doesn't seem like it's to be
implemented any time soon:

  https://github.com/mesonbuild/meson/issues/2037

  (An environment variable would be a possible solution, I left a comment
  there).


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
buildds now.

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 <mafm at debian.org>
-------------- next part --------------
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 <mafm at debian.org>  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 @@
+--- a/meson.build
++++ b/meson.build
+@@ -2382,7 +2382,8 @@
+ 
+         test('test-systemd-tmpfiles',
+              test_systemd_tmpfiles_py,
+-             args : exe.full_path())
++             args : exe.full_path(),
++             timeout : 300)
+         # https://github.com/mesonbuild/meson/issues/2681
+ endif
+ 
+@@ -2559,7 +2560,7 @@
+         type = tuple.length() >= 5 ? tuple[4] : ''
+         defs = tuple.length() >= 6 ? tuple[5] : []
+         incs = tuple.length() >= 7 ? tuple[6] : includes
+-        timeout = 30
++        timeout = 300
+ 
+         name = sources[0].split('/')[-1].split('.')[0]
+         if type.startswith('timeout=')
+@@ -2625,7 +2626,7 @@
+         link_with : [libudev],
+         install : install_tests,
+         install_dir : testsdir)
+-test('test-libudev-sym', exe)
++test('test-libudev-sym', exe, timeout : 300)
+ 
+ exe = executable(
+         'test-libudev-static-sym',
+--- a/hwdb/meson.build
++++ b/hwdb/meson.build
+@@ -38,7 +38,7 @@
+ parse_hwdb_py = find_program('parse_hwdb.py')
+ test('parse-hwdb',
+      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 @@
 debian/Revert-systemctl-when-removing-enablement-or-mask-symlink.patch
 debian/Revert-udev-rules-Permission-changes-for-dev-kvm.patch
 debian/Drop-seccomp-system-call-filter-for-udev.patch
+riscv64-support.patch


More information about the Pkg-systemd-maintainers mailing list