@@ -22,7 +22,6 @@ python __anonymous() {
# redundant init files.
if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d):
d.appendVar("DEPENDS", " systemd-systemctl-native")
- d.appendVar("PACKAGE_WRITE_DEPS", " systemd-systemctl-native")
d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
}
@@ -22,6 +22,10 @@ REQUIRED_DISTRO_FEATURES += "systemd"
# this and hence we can no longer support it
CONFLICT_DISTRO_FEATURES += "sysvinit"
+# Ensure that the native tools are available when we're building a rootfs with systemd in,
+# so that systemctl can be used in postinst scripts
+PACKAGE_WRITE_DEPS += "systemd-systemctl-native"
+
SRC_URI += " \
file://touchscreen.rules \
file://00-create-volatile.conf \
PACKAGE_WRITE_DEPS[1] is used to define package dependencies that are needed at rootfs time, for example when a postinst can use a native tool. We allow distros to build recipes that support both systemd and sysv at the same time, and the post-install script generated by systemd.bbclass will use systemctl (via systemd-systemctl-native) at rootfs time to install the units and thus generate the required symlinks. Presently the dependency on systemctl-native is added to recipes via systemd.bbclass but this results in all recipes that inherit that class having the dependencies. This is actually suboptimal: at rootfs time the key requirement is to install the units if and only if systemd is being used. We can move the PACKAGE_WRITE_DEPS dependency on systemd-systemctl-native from each recipe (via the class) to systemd itself so units are installed if systemd is present, and not otherwise. This means recipes don't depend on systemd-systemctl-native (which has non-trivial build dependencies itself), and the units are not installed in non-systemd deployments. [1] https://docs.yoctoproject.org/ref-manual/variables.html#term-PACKAGE_WRITE_DEPS Signed-off-by: Ross Burton <ross.burton@arm.com> --- meta/classes-recipe/systemd.bbclass | 1 - meta/recipes-core/systemd/systemd_259.5.bb | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-)