Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:ALP:Source:Standard:0.1
systemd-rpm-macros
macros.systemd
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File macros.systemd of Package systemd-rpm-macros
# -*- Mode: rpm-spec; indent-tabs-mode: t -*- */ # RPM macros for packages installing systemd unit files # ### # # When a package install systemd unit files, it should use the # following macros: # # add %systemd_requires in the specfile # # %pre # %service_add_pre demo.service demo1.service # # %post # %service_add_post demo.service demo1.service # # %preun # %service_del_preun demo.service # # %postun # %service_del_postun demo.service # %service_del_postun_without_restart demo.service # # Note: the upstream variants are also available and are aliases to # their SUSE counterparts. However for consistency the SUSE macros # should be preferred unless the package is intended to be portable # across multiple distributions based on RPM. %_systemd_util_dir /usr/lib/systemd %_unitdir /usr/lib/systemd/system %_userunitdir /usr/lib/systemd/user %_presetdir /usr/lib/systemd/system-preset %_userpresetdir /usr/lib/systemd/user-preset %_udevhwdbdir /usr/lib/udev/hwdb.d %_udevrulesdir /usr/lib/udev/rules.d %_journalcatalogdir /usr/lib/systemd/catalog %_tmpfilesdir /usr/lib/tmpfiles.d %_user_tmpfilesdir /usr/share/user-tmpfiles.d %_sysusersdir /usr/lib/sysusers.d %_sysctldir /usr/lib/sysctl.d %_ntpunitsdir /usr/lib/systemd/ntp-units.d %_binfmtdir /usr/lib/binfmt.d %_environmentdir /usr/lib/environment.d %_modulesloaddir /usr/lib/modules-load.d %_modprobedir /usr/lib/modprobe.d %_systemdgeneratordir /usr/lib/systemd/system-generators %_systemdusergeneratordir /usr/lib/systemd/user-generators %_systemd_system_env_generator_dir /usr/lib/systemd/system-environment-generators %_systemd_user_env_generator_dir /usr/lib/systemd/user-environment-generators %systemd_requires \ Requires(pre): systemd \ Requires(post): systemd \ Requires(preun): systemd \ Requires(postun): systemd \ %{nil} # In case you're wondering why "Suggests:" is also used: libzypp # doesn't understand "OrderWithRequires:" yet, see bsc#1187332 for # details. %systemd_ordering \ OrderWithRequires(pre): systemd \ OrderWithRequires(post): systemd \ OrderWithRequires(preun): systemd \ OrderWithRequires(postun): systemd \ Suggests: systemd \ %{nil} %_restart_on_update_force() /usr/bin/systemctl try-restart %{*} || : %{nil} %_restart_on_update_never() : # Restart of %{*} skipped %{nil} %_restart_on_update() \ if [ -e /etc/sysconfig/services ]; then \ DISABLE_RESTART_ON_UPDATE= \ . /etc/sysconfig/services \ case "$DISABLE_RESTART_ON_UPDATE" in \ yes|1) ;; \ *) /usr/bin/systemctl try-restart %{*} || : \ esac \ fi \ %{nil} # Figure out when presets need to be applied. This information is only # recorded during %pre and is actually applied during %post. # # Presets might need to be applied during package install but also # during package update. On update, packages might introduce new # services but we need to make sure that's not happening during the # migration of SysV initscripts. On package install, presets might # have been already applied because of package renaming or split. # %service_add_pre() \ if [ -x /usr/bin/systemctl ]; then \ for service in %{?*} ; do \ if [ ! -e "/usr/lib/systemd/system/$service" ]; then \ mkdir -p /run/systemd/rpm/needs-preset \ touch "/run/systemd/rpm/needs-preset/$service" \ fi \ done \ fi \ %{nil} # Apply the presets if %pre told us to do so. # %service_add_post() \ if [ -x /usr/bin/systemctl ]; then \ for service in %{?*} ; do \ if [ -e "/run/systemd/rpm/needs-preset/$service" ]; then \ /usr/bin/systemctl preset "$service" || : \ rm "/run/systemd/rpm/needs-preset/$service" || : \ fi \ done \ fi \ %{nil} # On uninstall, disable and stop services # %service_del_preun() \ if [ $1 -eq 0 -a -x /usr/bin/systemctl ]; then \ # Package removal, not upgrade \ /usr/bin/systemctl --no-reload disable --now %{?*} || : \ fi \ %{nil} # On uninstall, tell systemd to reload its unit files. # On update, tell systemd to reload its unit files but don't restart service. # # It ignores the content of /etc/sysconfig/services # %service_del_postun_without_restart() \ if [ -x /usr/bin/systemctl ]; then \ /usr/bin/systemctl daemon-reload || : \ fi \ %{nil} # On uninstall, tell systemd to reload its unit files. # On update, tell systemd to reload its unit files and restart service. # # It ignores the content of /etc/sysconfig/services # %service_del_postun_with_restart() \ if [ -x /usr/bin/systemctl ]; then \ /usr/bin/systemctl daemon-reload || : \ if [ $1 -ge 1 ]; then \ # Package upgrade, not uninstall \ /usr/bin/systemctl try-restart %{?*} || : \ fi \ fi \ %{nil} # On uninstall, tell systemd to reload its unit files # # Deprecated options, please do not use in new code: # -f : force restart on update (replaced by %service_del_postun_with_restart) # -n : don't restart on update (replaced by %service_del_postun_without_restart) # # The default is to read DISABLE_RESTART_ON_UPDATE from /etc/sysconfig/services # %service_del_postun(fn) \ if [ -x /usr/bin/systemctl ]; then \ /usr/bin/systemctl daemon-reload || : \ if [ $1 -ge 1 ]; then \ # Package upgrade, not uninstall \ %{expand:%%_restart_on_update%{-f:_force}%{!-f:%{-n:_never}} %{?*}} \ fi \ fi \ %{nil} # # Upstream variants # %systemd_pre() %{expand::%%service_add_pre %{?**}} %systemd_post() %{expand::%%service_add_post %{?**}} %systemd_preun() %{expand::%%service_del_preun %{?**}} %systemd_postun() %{expand::%%service_del_postun_without_restart %{?**}} %systemd_postun_with_restart() %{expand::%%service_del_postun %{?**}} %systemd_user_pre() \ if [ -x /usr/bin/systemctl ]; then \ for service in %{?*} ; do \ if [ ! -e "/usr/lib/systemd/user/$service" ]; then \ mkdir -p /run/systemd/rpm/needs-user-preset \ touch "/run/systemd/rpm/needs-user-preset/$service" \ fi \ done \ fi \ %{nil} %systemd_user_post() \ if [ -x /usr/bin/systemctl ]; then \ for service in %{?*} ; do \ if [ -e "/run/systemd/rpm/needs-user-preset/$service" ]; then \ /usr/bin/systemctl --global preset "$service" || : \ rm "/run/systemd/rpm/needs-user-preset/$service" || : \ fi \ done \ fi \ %{nil} %systemd_user_preun() \ if [ $1 -eq 0 -a -x /usr/bin/systemctl ]; then \ # Package removal, not upgrade \ /usr/bin/systemctl --global disable %{?*} || : \ fi \ %{nil} %systemd_user_postun() %{nil} %systemd_user_postun_with_restart() %{nil} %udev_hwdb_update() \ [ -x /usr/bin/systemd-hwdb ] && /usr/bin/systemd-hwdb update || : \ %{nil} %udev_rules_update() \ [ -x /usr/bin/udevadm ] && /usr/bin/udevadm control --reload || : \ %{nil} %journal_catalog_update() \ [ -x /usr/bin/journalctl ] && /usr/bin/journalctl --update-catalog || : \ %{nil} # Deprecated. Use %tmpfiles_create_package instead %tmpfiles_create() \ [ -z "${TRANSACTIONAL_UPDATE}" -a -x /usr/bin/systemd-tmpfiles ] && \ /usr/bin/systemd-tmpfiles --create %{?*} || : \ %{nil} # This may be used by package installation scripts to create files according to # their tmpfiles configuration from a package installation script, even before # the files of that package are installed on disk. # # Example: # Source1: %{name}-tmpfiles.conf # ... # %install # install -D %SOURCE1 %{buildroot}%{_tmpfilesdir}/%{name}.conf # %pre # %tmpfiles_create_package %{name} %SOURCE1 # %files # %{_tmpfilesdir}/%{name}.conf # %tmpfiles_create_package() \ if [ -z "${TRANSACTIONAL_UPDATE}" ]; then \ /usr/bin/systemd-tmpfiles --replace=%_tmpfilesdir/%1.conf --create - <<SYSTEMD_INLINE_EOF || : \ %(cat %2) \ SYSTEMD_INLINE_EOF\ fi \ %{nil} # This should be used by package installation scripts which doesn't require # users or groups to be present before the files installed by the package are # present on disk and when the sysusers conf files are generated during the # build of the package hence not easily available before the build of the # package. # # This macro will go away when this will be moved to file triggers. # # Example: # %post # %sysusers_create %{name}.conf # %files # %{_sysusersdir}/%{name}.conf # %sysusers_create() \ [ -x /usr/bin/systemd-sysusers ] && /usr/bin/systemd-sysusers %{?*} || : \ %{nil} %sysusers_create_inline() \ [ -x /usr/bin/systemd-sysusers ] && /usr/bin/systemd-sysusers - <<SYSTEMD_INLINE_EOF || : \ %{?*} \ SYSTEMD_INLINE_EOF\ %{nil} # This should be used by package installation scripts which require users or # groups to be present before the files installed by the package are present on # disk (for example because some files are owned by those users or groups). # # Example: # Source1: %{name}-sysusers.conf # ... # %install # install -D %SOURCE1 %{buildroot}%{_sysusersdir}/%{name}.conf # %pre # %sysusers_create_package %{name} %SOURCE1 # %files # %{_sysusersdir}/%{name}.conf # %sysusers_create_package() \ /usr/bin/systemd-sysusers --replace=%_sysusersdir/%1.conf - <<SYSTEMD_INLINE_EOF || : \ %(cat %2) \ SYSTEMD_INLINE_EOF\ %{nil} %sysctl_apply() \ [ -x /usr/lib/systemd/systemd-sysctl ] && \ /usr/lib/systemd/systemd-sysctl %{?*} || : \ %{nil} %binfmt_apply() \ [ -x /usr/lib/systemd/systemd-binfmt ] && \ /usr/lib/systemd/systemd-binfmt %{?*} || : \ %{nil}
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor