diff --git a/meta/classes/update-rc.d.bbclass b/meta/classes/update-rc.d.bbclass index 65bf022e49..06b91c10ed 100644 --- a/meta/classes/update-rc.d.bbclass +++ b/meta/classes/update-rc.d.bbclass @@ -75,9 +75,12 @@ python populate_packages_updatercd () { postrm += d.getVar('updatercd_postrm', True) d.setVar('pkg_postrm_%s' % pkg, postrm) - # If the systemd class has also been inherited, then don't do anything as - # the systemd units will override anything created by update-rc.d. - if not d.getVar("SYSTEMD_BBCLASS_ENABLED", True): + # Run if the sysvinit feature is present, or if the systemd feature is present + # but the systemd class hasn't been inherited. We want to run in the latter case + # as systemd has sysvinit compatibility, but we don't want to always so that + # pure systemd images don't have redundent sysvinit files. + if "sysvinit" in d.getVar("DISTRO_FEATURES").split() or \ + ("systemd" in d.getVar("DISTRO_FEATURES").split() and not d.getVar("SYSTEMD_BBCLASS_ENABLED", True)): pkgs = d.getVar('INITSCRIPT_PACKAGES', True) if pkgs == None: pkgs = d.getVar('UPDATERCPN', True)