systemd.eclass
Description
This eclass provides a set of functions to install unit files for sys-apps/systemd within ebuilds.
Example
inherit systemd
src_configure() {
local myconf=(
--enable-foo
--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
)
econf "${myconf[@]}"
}
Functions
- systemd_get_systemunitdir
-
Output the path for the systemd system unit directory (not including ${D}). This function always succeeds, even if systemd is not installed.
- systemd_get_userunitdir
-
Output the path for the systemd user unit directory (not including ${D}). This function always succeeds, even if systemd is not installed.
- systemd_get_utildir
-
Output the path for the systemd utility directory (not including ${D}). This function always succeeds, even if systemd is not installed.
- systemd_get_systemgeneratordir
-
Output the path for the systemd system generator directory (not including ${D}). This function always succeeds, even if systemd is not installed.
- systemd_get_systempresetdir
-
Output the path for the systemd system preset directory (not including ${D}). This function always succeeds, even if systemd is not installed.
- systemd_get_sleepdir
-
Output the path for the system sleep directory.
- systemd_dounit <unit>...
-
Install systemd unit(s). Uses doins, thus it is fatal.
- systemd_newunit <old-name> <new-name>
-
Install systemd unit with a new name. Uses newins, thus it is fatal.
- systemd_douserunit <unit>...
-
Install systemd user unit(s). Uses doins, thus it is fatal.
- systemd_newuserunit <old-name> <new-name>
-
Install systemd user unit with a new name. Uses newins, thus it is fatal.
- systemd_install_serviced <conf-file> [<service>]
-
Install <conf-file> as the template <service>.d/00gentoo.conf. If <service> is not specified <conf-file> with the .conf suffix stripped is used (e.g. foo.service.conf -> foo.service.d/00gentoo.conf).
- systemd_install_dropin [--user] <unit> <conf-file>
-
Install <conf-file> as the dropin file <unit>.d/00gentoo.conf, overriding the settings of <unit>. Defaults to system unit dropins, unless --user is provided, which causes the dropin to be installed for user units. The required argument <conf-file> may be '-', in which case the file is read from stdin and <unit> must also be specified. @EXAMPLE: systemd_install_dropin foo.service "${FILESDIR}/foo.service.conf" systemd_install_dropin foo.service - <<-EOF
[Service] RestartSec=120
EOF
- systemd_enable_service <target> <service>
-
Enable service in desired target, e.g. install a symlink for it. Uses dosym, thus it is fatal.
- systemd_enable_ntpunit <NN-name> <service>...
-
Add an NTP service provider to the list of implementations in timedated. <NN-name> defines the newly-created ntp-units.d priority and name, while the remaining arguments list service units that will be added to that file.
Uses doins, thus it is fatal.
Doc: https://www.freedesktop.org/wiki/Software/systemd/timedated/
- systemd_update_catalog
-
Update the journald catalog. This needs to be called after installing or removing catalog files. This must be called in pkg_post* phases.
If systemd is not installed, no operation will be done. The catalog will be (re)built once systemd is installed.
See: https://www.freedesktop.org/wiki/Software/systemd/catalog
- systemd_is_booted
-
Check whether the system was booted using systemd.
This should be used purely for informational purposes, e.g. warning user that he needs to use systemd. Installed files or application behavior must not rely on this. Please remember to check MERGE_TYPE to not trigger the check on binary package build hosts!
Returns 0 if systemd is used to boot the system, 1 otherwise.
See: man sd_booted
- systemd_reenable <unit> ...
-
Re-enables units if they are currently enabled. This resets symlinks to the defaults specified in the [Install] section.
This function is intended to fix broken symlinks that result from moving the systemd system unit directory. It should be called from pkg_postinst for system units that define the 'Alias' option in their [Install] section. It is not necessary to call this function to fix dependency symlinks generated by the 'WantedBy' and 'RequiredBy' options.
Reporting Bugs
Please report bugs via https://bugs.gentoo.org/