summaryrefslogtreecommitdiffstats
path: root/meta/classes/systemd.bbclass
AgeCommit message (Collapse)Author
2019-10-08systemd.bbclass: add RMINITDIR for nativesdk buildsTrevor Gamblin
nativesdk builds such as nativesdk-dnf are installing systemd service files, leading bitbake to throw installed-vs-shipped warnings, but these are not needed in nativesdk: WARNING: nativesdk-dnf-4.2.2-r0 do_package: QA Issue: nativesdk-dnf: Files/directories were installed but not shipped in any package: /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/systemd /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/systemd/system /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/systemd/system/dnf-automatic.timer /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/systemd/system/dnf-makecache.timer /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/systemd/system/dnf-automatic.service /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/systemd/system/dnf-makecache.service /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/systemd/system/dnf-automatic-notifyonly.timer /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/systemd/system/dnf-automatic-download.service /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/systemd/system/dnf-automatic-download.timer /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/systemd/system/dnf-automatic-notifyonly.service /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/systemd/system/dnf-automatic-install.timer /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/systemd/system/dnf-automatic-install.service Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install. nativesdk-dnf: 13 installed and not shipped files. [installed-vs-shipped] Rather than have each recipe remove the files, an RMINITDIR case for nativesdk builds should be added to systemd.bbclass. Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-08-16systemd.bbclass: Limit rm_sysvinit_initddir and rm_systemd_unitdir to target ↵Khem Raj
alone These postfuncs cause native recipes to rebuild when changing system init provider between sysvinit and systemd. Some of these native recipes are pretty early in dependency chain ( e.g. util-linux ) which can casue rebuild of pretty much everything including compiler. Found with bitbake-diffsigs Hash for dependent task python/python3_3.7.4.bb:do_prepare_recipe_sysroot:virtual:native:/mnt/a/yoe/sources/openembedded-core/meta/recipes-devt ools/python/python3_3.7.4.bb changed from 2a45fe0cd0d3640a88c4a5c8b1880c4e9a089cc7446a91d2a920c1cef6fa916a to bc2a0921cce50da1b7be3b59a3d8211ec 2a31262493ffa5909acbb7116fad3bf Hash for dependent task util-linux/util-linux_2.34.bb:do_populate_sysroot:virtual:native:/mnt/a/yoe/sources/openembedded-core/meta/recipes- core/util-linux/util-linux_2.34.bb changed from 15d6e165f025f10c2c455df8a875cafe021eaed4214c793e708d4827a58ca89d to 54e542d5da99cacfc9290ef5d27 9de50bdcb9195f67ae6dfff59fe41d10f7bd2 Hash for dependent task util-linux/util-linux_2.34.bb:do_install:virtual:native:/mnt/a/yoe/sources/openembedded-core/meta/recipes-core/ util-linux/util-linux_2.34.bb changed from e25b1119ce8dd7ca43fbd2db771e04fa6ff6b9d701fd78ac6c443224b036ed9f to bb5b172a83e7edd272402a9dcd80c4e1 29aa1ecb824c2cfa388086cfed24fef5 basehash changed from 62df6610eab9c1b1a17d7132943507641c8538690f26186843c86144d4598e64 to 80471f7c0bded9d1b593da69708b0e0f10882db08 5e1bf769edb3018e6c744d0 Variable rm_sysvinit_initddir value changed: @@ -11,4 +11,4 @@ shutil.rmtree(sysv_initddir) DISTRO_FEATURES{systemd} = Unset -DISTRO_FEATURES{sysvinit} = Set +DISTRO_FEATURES{sysvinit} = Unset Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-05-09systemd: Restore mask and preset targets, fix instance creationAlex Kiernan
Ensure that anyone who sets SYSTEMD_AUTO_ENABLE_${PN} = "mask" (or "preset") retains the previous behaviour. In addition fix "enable" so it can (again) create instance units out of templates. Remove over-zealous quoting of SYSTEMD_SERVICE_ESCAPED as it's already safely escaped (and can be multiple arguments). Reported-by: Paul Barker <paul@betafive.co.uk> Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-05-02systemd: create preset files instead of installing in imageJonas Bonn
At first boot, systemd will create the /etc/systemd/system directory from service preset files. As such, for a normal, writable /etc (writable rootfs), there is no need to set up this directory at image creation time. This patch changes the systemd machinery to create preset files and to rely on systemd to do the service enablement. This breaks the read-only-rootfs case; there's a fix for this in a follow-up patch. Signed-off-by: Jonas Bonn <jonas@norrbonn.se> Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-01-14meta: remove True option to getVar calls (again)André Draszik
A couple have still been missed in the past despite multiple attempts at doing so (or simply have re-appeared?). Search & replace made using the following command: sed -e 's|\(d\.getVar \?\)( \?\([^,()]*\), \?True)|\1(\2)|g' \ -i $(git grep -E 'getVar ?\( ?([^,()]*), ?True\)' \ | cut -d':' -f1 \ | sort -u) Signed-off-by: André Draszik <andre.draszik@jci.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-06-27systemd: escape paths passed to shellDamien Riegel
Systemd mount configuration file must have a name that match the mount point directory they control. So for instance, if a mount file contains [Mount] ... Where=/mnt/my-data The file must be named `mnt-my\x2ddata.mount`, or systemd will refuse to honour it. If this config file contains an [Install] section, it will silently fail because the unit file is not escaped properly when systemctl is called. To fix that, make sure paths are escaped through `shlex.quote`. Signed-off-by: Damien Riegel <damien.riegel@savoirfairelinux.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-09systemd: allow dots in arguments to template unitsMartin Hundebøll
When installing systemd template units with an argument, the current code removes characters between the '@' and the '.' from service names in SYSTEMD_SERVICE_${PN}, e.g.: getty@tty1.service -> getty@.service This fails for services with dots in the argument (which is perfectly legal in systemd), since the code searches only until the first dot. E.g.: vlan@eth0.1.service -> vlan@1.service This is obviously wrong, and fails in systemd_populate_packages(), where it fails to find the unit file. Fix this by reworking the removal of the argument part of the service name, so that parts before '@' and after teh last '.' are used as base name. Signed-off-by: Martin Hundebøll <mnhu@prevas.dk> Signed-off-by: Ross Burton <ross.burton@intel.com>
2017-02-15classes: Drop now unneeded update_data callsRichard Purdie
Now that the datastore works dynamically we don't need the update_data calls so we can just remove them. They're not actually done anything at all for a while. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-01-19systemd: Add PACKAGE_WRITE_DEPS for postinstRichard Purdie
The postinstall needs systemd-systemctl-native, mark the dependency Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-01-06meta/scripts: Various getVar/getVarFlag expansion parameter fixesRichard Purdie
There were a few straggling expansion parameter removals left for getVar/getVarFlag where the odd whitespace meant they were missed on previous passes. There were also some plain broken ussages such as: d.getVar('ALTERNATIVE_TARGET', old_name, True) path = d.getVar('PATH', d, True) d.getVar('IMAGE_ROOTFS', 'True') which I've corrected (they happend to work by luck). Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-12-16meta: remove True option to getVar callsJoshua Lock
getVar() now defaults to expanding by default, thus remove the True option from getVar() calls with a regex search and replace. Search made with the following regex: getVar ?\(( ?[^,()]*), True\) Signed-off-by: Joshua Lock <joshua.g.lock@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
2016-11-30systemd.bbclass: don't block on service restartMark Asselstine
The current class works fine when a recipe uses SYSTEMD_AUTO_ENABLE 'enable' and has no on device pkg_postinst(), ie when the postinst is run as part of rootfs creation. However, when there is a component of pkg_postinst() that is run on device the 'systemctl restart' is run as part of the run_postinsts.service at boot. This results in the boot spinning indefinitely with: [ *** ] A start job is running for Run pending postinsts (7s / no limit) The issue could potentially be that the packages service has an 'After' clause which comes later in the boot, beyond run_postinsts.service, creating a chicken before the egg scenario. Even service files without an 'After' clause cause this situation however. Despite this not being the cause of the issue this fix will prevent this scenario from happenning. Using strace we are able to find that during boot, when run_postinsts.service is running attempting to start or restart any service will result in the call get stuck on poll(). Since the run_postinsts.service does not monitor the outcome of the call to restart we can work around this by using '--no-block'. Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
2016-11-23systemd: Reload configuration on package installLinus Wallgren
When a systemd service file has changed it is required to reload systemd's configuration. Otherwise changes to a service file will not be picked up during package upgrade. Signed-off-by: Ross Burton <ross.burton@intel.com>
2016-10-03systemd.bbclass: Use bb.fatal() instead of raising FuncFailedUlf Magnusson
This sets a good example and avoids unnecessarily contributing to perceived complexity and cargo culting. Motivating quote below: < kergoth> the *original* intent was for the function/task to error via whatever appropriate means, bb.fatal, whatever, and funcfailed was what you'd catch if you were calling exec_func/exec_task. that is, it's what those functions raise, not what metadata functions should be raising < kergoth> it didn't end up being used that way < kergoth> but there's really never a reason to raise it yourself FuncFailed.__init__ takes a 'name' argument rather than a 'msg' argument, which also shows that the original purpose got lost. Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-12-09systemd.bbclass: Allow enabling of parameterised servicesBob Ham
Currently the systemd.class will check whether a service exists when it is requested to enabled it. However, its check does not take into account that a service like 'foo@eth0.service' can be enabled from a service named 'foo@.service'. This patch alters the check function in systemd.class to look for 'foo@.service' if the normal check fails. Signed-off-by: Bob Ham <bob.ham@collabora.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
2015-08-09systemd.bbclass: Use systemd_system_unitdirPau Espin Pedrol
Signed-off-by: Pau Espin Pedrol <pau.espin@aweurope.be> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-14systemd.bbclass: drop has_exactly_one_service settingDmitry Eremin-Solenikov
The has_exactly_one_service variable was used in now deleted code. Drop this part to make code cleaner. Signed-off-by: Dmitry Eremin-Solenikov <dmitry_eremin@mentor.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
2014-11-04systemd: don't add files and dependencies from units ConflictsRoss Burton
Adding dependencies and moving files based on Conflicts tags in unit files isn't right, mainly as it means that systemd depends on systemd-binfmt, because the latter ends up containing the shutdown.target unit. Signed-off-by: Ross Burton <ross.burton@intel.com>
2014-09-23update-rc.d/systemd: Remove OVERRIDES dependencyRichard Purdie
Taking run-postinsts and building for two machines which have different OVERRIDES leads to two different sets of stamps for an allarch package. We don't need to depend on OVERRIDES in these classes, the end resulting variables are good enough. We can therefore exclude the dependency and allow a single package to be generated for run-postinsts. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-04-25Globally replace oe.utils.contains to bb.utils.containsOtavio Salvador
BitBake has the exact same code as oe.utils.contains so there's no reason to duplicate it. We now rely on the bb.utils.contains code for metadata. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-12-18systemd: pass --root in prerm if running on hostRoss Burton
If a systemd image is built without a package manager then packages will be removed from an image during rootfs generation, but without passing --root the systemctl will look on the *host* system. Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-12-05classes/recipes: More optimal DISTRO_FEATURES referencesRichard Purdie
Using the contains function results in more optimal sstate checksums resulting in better cache reuse as we as more consistent code. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-14systemd: fix commentsPaul Eggleton
It's DISTRO_FEATURES; DISTRO_FEATURE is invalid. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-10-04systemd: Track postinst/prerm in task checksumRichard Purdie
When these functions change, the package should rebuild but currently it does not. We need to add the dependencies manually as the dependency code can't track dynamically created variables. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-09-10systemd.bbclass: get the correct /lib directorySaul Wold
By using os.path.dirname(systemd_unitdir) we get the correct /lib directory instead of dealing with possibly multilib directories. This address a QA Error for shipped/not installed /lib with multilib and x32. Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-09-10systemd: Remove base_libdir if installed only for systemd_unitdirMuhammad Shakeel
If a recipe installs systemd_unitdir and it is a non-systemd build than systemd.bbclass deletes systemd_unitdir (/lib/systemd/) but not base_libdir (/lib). In this case if base_libdir is empty than following QA Issue is reported. ERROR: QA Issue: openssh: Files/directories were installed but not shipped /lib If base_libdir was installed due to systemd_unitdir installation than for non-systemd build it should also be removed. Signed-off-by: Muhammad Shakeel <muhammad_shakeel@mentor.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-07-30systemd: Remove init.d dir if systemd unit file is present and sysvinit not ↵Muhammad Shakeel
a distro feature If systemd is supported DISTRO_FEATURE and sysvinit is not and also if systemd_unitdir contains anything then no need to keep init.d scripts for sysvinit compatibility. Signed-off-by: Muhammad Shakeel <muhammad_shakeel@mentor.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-07-23systemd: Remove systemd_unitdir if systemd is not in distro featuresMuhammad Shakeel
If systemd is not supported DISTRO_FEATURE than there is no need to package related service files. Signed-off-by: Muhammad Shakeel <muhammad_shakeel@mentor.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-07-09systemd: Don't enable systemd services when native.Randy Witt
It shouldn't be desired that systemd enable services when using class native. Blanking out the SYSTEMD_PACKAGES when native seems like the most straightforward way to fix this problem. Signed-off-by: Randy Witt <rewitt@declaratino.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-05-09classes: Use modern exception raising syntaxRichard Purdie
Modern expection rasing syntax is function call format, convert to this to keep python 3 happy and model correct coding style in the core. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-04-09systemd.bbclass: restart service in postinst, not startRoss Burton
When upgrading packages it's possible that the service is already running because opkg doesn't actually execute the prerm hooks on upgrades, which is where the service should be stopped. Handle this case by restarting in postinst instead of starting. If the service isn't already running then this doesn't make a difference, but if it is running then the service will be restarted. [ YOCTO #4213 ] Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-04-02update-rc.d, systemd: redirect also stderr from typeMartin Jansa
* different shells different behavior? bash prints 'type: update-rc.d: not found' on stderr busybox's sh on stdout Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-03-26update-rc.d/systemd: change communication variable nameRoss Burton
Rename SYSTEMD_BBCLASS_ENABLED to INHIBIT_UPDATERCD_BBCLASS to reflect the action, for clarity. Signed-off-by: Ross Burton <ross.burton@intel.com>
2013-03-26systemd: check for systemctl first, and don't force systemd to be installed.Ross Burton
With both sysvinit and systemd features enabled these postinsts may actually run on a target without systemd, so check that systemctl is present before using it. Signed-off-by: Ross Burton <ross.burton@intel.com>
2013-03-01systemd.bbclass: fix bb.errorMartin Jansa
NOTE: recipe avahi-ui-0.6.31-r7.0: task do_package: Started ERROR: %s does not appear in package list, please add it avahi-ui-daemon ERROR: %s does not appear in package list, please add it avahi-ui-dnsconfd Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-02-15systemd.bbclass: Dont use libdir and base_libdir for unitsKhem Raj
systemd always uses /lib and /usr/lib to store unit files so using libdir and base_libdir is incorrect. It will work where libdir is usr/lib and base_libdir is /lib but wont work when say its /lib64 Add a check to make sure that SYSTEMD_PACKAGES are part of PACKAGES too, otherwise error out Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-02-11systemd.bbclass: use PACKAGESPLITFUNCS instead of populate_packages_prependRoss Burton
This is cleaner and leads to more accurate profiles. Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-02-11systemd.bbclass: helper class for recipes with systemd unitsRoss Burton
This class adds postinst/prerm scripts to start/stop/enable/disable the services as relevant, and some magic to ensure the service files are installed. Based on (but not the same as) the systemd.bbclass in meta-systemd, so thanks to the following for their work there: Enrico Scholz <enrico.scholz@sigma-chemnitz.de> Khem Raj <raj.khem@gmail.com> Martin Jansa <Martin.Jansa@gmail.com> Andreas Müller <schnitzeltony@googlemail.com> Koen Kooi <koen@dominion.thruhere.net> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>