diff --git a/package/systemd/Config.in b/package/systemd/Config.in index 0cb10ea3d8..931134911a 100644 --- a/package/systemd/Config.in +++ b/package/systemd/Config.in @@ -25,6 +25,7 @@ menuconfig BR2_PACKAGE_SYSTEMD depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 depends on BR2_HOST_GCC_AT_LEAST_8 # host-systemd select BR2_ROOTFS_MERGED_USR + select BR2_ROOTFS_MERGED_BIN select BR2_PACKAGE_HAS_UDEV select BR2_PACKAGE_DBUS if !BR2_PACKAGE_DBUS_BROKER # runtime select BR2_PACKAGE_LIBCAP diff --git a/support/testing/tests/init/test_systemd.py b/support/testing/tests/init/test_systemd.py index 05a65223b3..7fdd5d1798 100644 --- a/support/testing/tests/init/test_systemd.py +++ b/support/testing/tests/init/test_systemd.py @@ -31,6 +31,25 @@ class InitSystemSystemdBase(InitSystemBase): self.start_emulator(fs) self.check_init("/lib/systemd/systemd") + # Test there is no tainted flag. + output, ret = self.emulator.run("systemctl --no-pager status") + self.assertEqual(ret, 0, f"'systemctl status' failed with exit code {ret}, with:\n{output}") + try: + # 'support-ended' tainted flag is only set based on the + # SUPPORT_END variable in /etc/os-release; as we don't set + # it in Buildroot, we can't get that flag in the runtime + # tests, even on our maintenance branches, so we don't need + # to filter it out. + tainted_flags = [ + "".join(line.split(":")[1:]).strip() + for line in output + if line.strip().startswith("Tainted: ") + ][0] + raise RuntimeError(f"Tainted flags: {tainted_flags}") + except IndexError: + # No tainted flag \o/ + pass + # Test all units are OK output, _ = self.emulator.run("systemctl --no-pager --failed --no-legend") self.assertEqual(len(output), 0)