Package: autopkgtest Version: 5.11 Severity: normal Tags: patch Dear Maintainer,
while running autopkgtest for the munin packages, I encountered problems in combination with sysvinit in the lxc-based container. The tests were started before all sysvinit scripts were finished. In a systemd environment, this works as expected, since autopkgtest-virt-lxc (and -lxd) wait for the "network-online.target". (only a numeric runlevel is awaited for systemd as well as for sysvinit) Packaging tests probably rely on the related services being available. Thus at the moment it would be necessary for tests being executed in a sysvinit system to wait explicitly for their services to start up. This would need to implemented for each test using such an environment. Thus probably autopkgtest should wait instead (as it does for systemd services). The attached patch lets autopkgtest wait for the sysvinit runlevel script parent process (/etc/init.d/rc) to be finished/absent. This change does not affect other init systems, since /etc/init.d/rc is only shipped by the sysvinit-core package. In case of a timeout (60s) this waiting procedure would fail (just as it does, if the network-online.target is not reached by systemd). I tested this patch succesfully. No further timing issues showed up afterwards. Please tell me, whether this patch looks reasonable to you. I am happy to test other options, if you can think of a more suitable approach. Thank you for your time! Cheers, Lars -- System Information: Debian Release: bullseye/sid APT prefers testing APT policy: (500, 'testing'), (500, 'stable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.4.0-3-amd64 (SMP w/4 CPU cores) Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8), LANGUAGE=de_DE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: sysvinit (via /sbin/init) LSM: AppArmor: enabled Versions of packages autopkgtest depends on: ii apt-utils 1.8.4 ii libdpkg-perl 1.19.7 ii procps 2:3.3.15-2+b1 ii python3 3.7.5-3 ii python3-debian 0.1.36 Versions of packages autopkgtest recommends: ii autodep8 0.22 Versions of packages autopkgtest suggests: pn lxc <none> pn lxd <none> ii ovmf 0~20191122.bd85bf54-2 ii qemu-efi-aarch64 0~20191122.bd85bf54-2 ii qemu-efi-arm 0~20191122.bd85bf54-2 ii qemu-system 1:4.2-3 ii qemu-utils 1:4.2-3 pn schroot <none> pn vmdb2 <none> -- no debconf information
--- /usr/bin/autopkgtest-virt-lxc.orig 2020-01-02 00:26:35.591442668 +0100 +++ /usr/bin/autopkgtest-virt-lxc 2020-03-10 00:21:16.528527335 +0100 @@ -125,7 +125,7 @@ out = out.strip() if out.split()[-1].isdigit(): adtlog.debug('waiting for network') - VirtSubproc.check_exec(sudoify(['lxc-attach', '--name', lxc_name, '--', 'sh', '-ec', '[ ! -d /run/systemd/system ] || systemctl start network-online.target']), timeout=60) + VirtSubproc.check_exec(sudoify(['lxc-attach', '--name', lxc_name, '--', 'sh', '-ec', 'if [ -d /run/systemd/system ]; then systemctl start network-online.target; else while ps -ef | grep -q "/etc/init\.d/rc"; do sleep 1; done; fi']), timeout=60) return adtlog.debug('wait_booted: runlevel "%s", retrying...' % out) --- /usr/bin/autopkgtest-virt-lxd.orig 2020-03-10 00:29:05.736763821 +0100 +++ /usr/bin/autopkgtest-virt-lxd 2020-03-10 00:29:55.625213813 +0100 @@ -101,7 +101,7 @@ out = out.strip() if out.split()[-1].isdigit(): adtlog.debug('waiting for network') - VirtSubproc.check_exec(['lxc', 'exec', container_name, '--', 'sh', '-ec', '[ ! -d /run/systemd/system ] || systemctl start network-online.target'], timeout=60) + VirtSubproc.check_exec(['lxc', 'exec', container_name, '--', 'sh', '-ec', 'if [ -d /run/systemd/system ]; then systemctl start network-online.target; else while ps -ef | grep -q "/etc/init\.d/rc"; do sleep 1; done; fi'], timeout=60) return adtlog.debug('wait_booted: runlevel "%s", retrying...' % out)