# # spec file for package systemd # # Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # # # The git repository used to track all Suse specific changes can be # found at: https://github.com/openSUSE/systemd. # %define bootstrap 0 %define mini %nil %define min_kernel_version 3.11 %define suse_version +suse.786.g81e1235110 %bcond_with gnuefi %if 0%{?bootstrap} %bcond_with sysvcompat %bcond_with machined %bcond_with importd %bcond_with networkd %else %bcond_without sysvcompat %bcond_without machined %bcond_without importd %ifarch %{ix86} x86_64 %bcond_without gnuefi %endif %if 0%{?is_opensuse} %bcond_without networkd %else %bcond_with networkd %endif %endif %bcond_without compatlibs %bcond_with journal_remote %bcond_with resolved %bcond_with parentpathid Name: systemd URL: http://www.freedesktop.org/wiki/Software/systemd Version: 228 Release: 0 Summary: A System and Session Manager License: LGPL-2.1-or-later Group: System/Base BuildRoot: %{_tmppath}/%{name}-%{version}-build %if ! 0%{?bootstrap} BuildRequires: docbook-xsl-stylesheets BuildRequires: kbd BuildRequires: libapparmor-devel BuildRequires: libdw-devel >= 0.158 BuildRequires: libgcrypt-devel BuildRequires: libxslt-tools # python is only required for generating systemd.directives.xml BuildRequires: python3 BuildRequires: python3-lxml BuildRequires: pkgconfig(libcryptsetup) >= 1.6.0 BuildRequires: pkgconfig(libqrencode) %endif BuildRequires: fdupes BuildRequires: gperf BuildRequires: intltool BuildRequires: libacl-devel BuildRequires: libcap-devel BuildRequires: libmount-devel BuildRequires: libsepol-devel BuildRequires: libtool BuildRequires: pam-config >= 0.79-5 BuildRequires: pam-devel # regenerate_initrd_post macro is expanded during build, hence this # BR. Also this macro was introduced since version 12.4. BuildRequires: suse-module-tools >= 12.4 BuildRequires: systemd-rpm-macros BuildRequires: xz BuildRequires: pkgconfig(blkid) >= 2.26 BuildRequires: pkgconfig(libkmod) >= 15 BuildRequires: pkgconfig(liblzma) BuildRequires: pkgconfig(libpci) >= 3 BuildRequires: pkgconfig(libpcre) BuildRequires: pkgconfig(libselinux) >= 2.1.9 BuildRequires: pkgconfig(libsepol) %if %{with importd} BuildRequires: pkgconfig(bzip2) BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(zlib) %endif %if %{with journal_remote} BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(libmicrohttpd) >= 0.9.33 %endif %ifarch aarch64 %ix86 x86_64 x32 %arm ppc64le s390x BuildRequires: pkgconfig(libseccomp) %endif %if %{with gnuefi} BuildRequires: gnu-efi %endif %if 0%{?bootstrap} #!BuildIgnore: dbus-1 Requires: this-is-only-for-build-envs Provides: systemd = %{version}-%{release} %else # the buildignore is important for bootstrapping #!BuildIgnore: udev Requires: aaa_base >= 13.2 Requires: dbus-1 >= 1.4.0 Requires: kbd Requires: kmod >= 15 Requires: netcfg >= 11.5 Requires: pam-config >= 0.79-5 Requires: pwdutils Requires: systemd-presets-branding Requires: sysvinit-tools Requires: udev = %{version}-%{release} Requires: util-linux >= 2.27.1 Recommends: %{name}-bash-completion Requires(post): coreutils Requires(post): findutils Requires(post): systemd-presets-branding Requires(post): pam-config >= 0.79-5 %endif Requires(post): /usr/bin/awk %if 0%{?bootstrap} Conflicts: kiwi Conflicts: systemd %endif Conflicts: filesystem < 11.5 Conflicts: mkinitrd < 2.7.0 Conflicts: sysvinit Obsoletes: systemd-analyze < 201 Provides: systemd-analyze = %{version} Obsoletes: pm-utils <= 1.4.1 Obsoletes: suspend <= 1.0 Source0: systemd-v%{version}%{suse_version}.tar.xz Source1: %{name}-rpmlintrc Source3: systemd-sysv-convert Source6: baselibs.conf Source7: libgcrypt.m4 Source10: macros.systemd.upstream Source11: after-local.service Source12: systemd-sysv-install Source13: fix-machines-subvol-for-rollbacks.sh Source14: kbd-model-map.legacy Source15: convert-lib-udev-path.sh Source1063: udev-generate-persistent-rule.sh # A homeless rule sent (and maintained) by the kernel folks (see bsc#1040800) Source2000: 80-acpi-container-hotplug.rules Source2001: 80-hotplug-cpu-mem.rules # Patches listed in here are really special cases. Normally all # changes must go to upstream first and then are cherry-picked in the # SUSE git repository. But in very few cases, some stuff might be # broken in upstream and need an urgent fix. Even in this case, the # patches are temporary and should be removed as soon as a fix is # merged by upstream. Patch1: 0001-udev-don-t-create-by-partlabel-primary-and-.-logical.patch Patch2: 0002-udev-optionally-disable-the-generation-of-the-partla.patch Patch3: 0001-logind-unmount-runtime-path-in-a-dedicated-process.patch %description Systemd is a system and service manager, compatible with SysV and LSB init scripts for Linux. systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux cgroups, supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. It can work as a drop-in replacement for sysvinit. %package devel Summary: Development headers for systemd License: LGPL-2.1-or-later Group: Development/Libraries/C and C++ Requires: libsystemd0%{?mini} = %{version}-%{release} Requires: systemd-rpm-macros %if 0%{?bootstrap} Conflicts: systemd-devel %endif %description devel Development headers and auxiliary files for developing applications for systemd. %package sysvinit Summary: System V init tools License: LGPL-2.1-or-later Group: System/Base Requires: %{name} = %{version}-%{release} Provides: sbin_init Conflicts: otherproviders(sbin_init) Provides: sysvinit:/sbin/init %description sysvinit Drop-in replacement of System V init tools. %package -n libsystemd0%{?mini} Summary: Component library for systemd License: LGPL-2.1-or-later Group: System/Libraries %if 0%{?bootstrap} Conflicts: libsystemd0 Requires: this-is-only-for-build-envs %endif %description -n libsystemd0%{?mini} This library provides several of the systemd C APIs: * sd-bus implements an alternative D-Bus client library that is relatively easy to use, very efficient and supports both classic D-Bus as well as kdbus as transport backend. * sd-daemon(3): for system services (daemons) to report their status to systemd and to make easy use of socket-based activation logic * sd-event is a generic event loop abstraction that is built around Linux epoll, but adds features such as event prioritization or efficient timer handling. * sd-id128(3): generation and processing of 128-bit IDs * sd-journal(3): API to submit and query journal log entries * sd-login(3): APIs to introspect and monitor seat, login session and user status information on the local system. %package -n udev%{?mini} Summary: A rule-based device node and kernel event manager License: GPL-2.0-only Group: System/Kernel URL: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html Requires: %{name} = %{version}-%{release} Requires(pre): /usr/bin/stat Requires(pre): /usr/sbin/groupadd Requires(pre): /usr/bin/getent Requires(post): sed Requires(post): systemd Requires(preun):systemd Requires(postun):systemd Requires(postun):%insserv_prereq Requires(post): coreutils Requires(postun):coreutils Requires(posttrans):suse-module-tools >= 12.4 Conflicts: ConsoleKit < 0.4.1 Conflicts: dracut < 044.1 Conflicts: filesystem < 11.5 Conflicts: mkinitrd < 2.7.0 Conflicts: util-linux < 2.16 Requires: filesystem %if 0%{?bootstrap} Provides: udev = %{version} Conflicts: libudev1 Conflicts: udev # avoid kiwi picking it for bootstrap Requires: this-is-only-for-build-envs %endif %description -n udev%{?mini} Udev creates and removes device nodes in /dev for devices discovered or removed from the system. It receives events via kernel netlink messages and dispatches them according to rules in /lib/udev/rules.d/. Matching rules may name a device node, create additional symlinks to the node, call tools to initialize a device, or load needed kernel modules. %package -n libudev%{?mini}1 Summary: Dynamic library to access udev device information License: LGPL-2.1-or-later Group: System/Libraries %if 0%{?bootstrap} Conflicts: kiwi Conflicts: libudev1 # avoid kiwi picking it for bootstrap Requires: this-is-only-for-build-envs %endif %description -n libudev%{?mini}1 This package contains the dynamic library libudev, which provides access to udev device information %package -n libudev%{?mini}-devel Summary: Development files for libudev License: LGPL-2.1-or-later Group: Development/Libraries/Other Requires: libudev%{?mini}1 = %{version}-%{release} %if 0%{?bootstrap} Provides: libudev-devel = %{version} Conflicts: libudev-devel Conflicts: libudev1 = %{version} %endif %description -n libudev%{?mini}-devel This package contains the development files for the library libudev, a dynamic library, which provides access to udev device information. %if ! 0%{?bootstrap} %package logger Summary: Journal only logging License: LGPL-2.1-or-later Group: System/Base Provides: syslog Provides: sysvinit(syslog) Requires(post): /usr/bin/systemctl Conflicts: otherproviders(syslog) %description logger This package marks the installation to not use syslog but only the journal. %package -n nss-myhostname Summary: Plugin for local system host name resolution License: LGPL-2.1-or-later Group: System/Libraries %description -n nss-myhostname This package contains a plug-in module for the Name Service Switch (NSS), primarly providing hostname resolution for the locally configured system hostname as returned by gethostname(2). For example, it resolves the local hostname to locally configured IP addresses, as well as "localhost" to 127.0.0.1/::1. To activate this NSS module, you will need to include it in /etc/nsswitch.conf, see nss-hostname(8) manpage for more details. %endif %if %{with resolved} %package -n nss-resolve Summary: Plugin for local hostname resolution via systemd-resolved License: LGPL-2.1-or-later Group: System/Libraries Requires: %{name} = %{version}-%{release} %description -n nss-resolve This package contains a plug-in module for the Name Service Switch (NSS), which enables host name resolutions via the systemd-resolved(8) local network name resolution service. It replaces the nss-dns plug-in module that traditionally resolves hostnames via DNS. To activate this NSS module, you will need to include it in /etc/nsswitch.conf, see nss-resolve(8) manpage for more details. %endif %if %{with machined} %package -n nss-mymachines Summary: Plugin for local virtual host name resolution License: LGPL-2.1-or-later Group: System/Libraries %description -n nss-mymachines This package contains a plugin for the Name Service Switch (NSS), providing host name resolution for all local containers and virtual machines registered with systemd-machined to their respective IP addresses. It also maps UID/GIDs ranges used by containers to useful names. To activate this NSS module, you will need to include it in /etc/nsswitch.conf, see nss-mymachines(8) manpage for more details. %endif %if %{with journal_remote} %package journal-remote Summary: Gateway for serving journal events over the network using HTTP License: LGPL-2.1-or-later Group: System/Base Requires: %{name} = %{version}-%{release} Requires(post): systemd Requires(preun):systemd Requires(postun):systemd %description journal-remote This extends the journal functionality to keep a copy of logs on a remote server by providing programs to forward journal entries over the network, using encrypted HTTP, and to write journal files from serialized journal contents. This package contains systemd-journal-gatewayd, systemd-journal-remote, and systemd-journal-upload. %endif %package bash-completion Summary: Bash completion support for systemd License: LGPL-2.1-or-later Group: System/Base Requires: bash-completion BuildArch: noarch %if 0%{?bootstrap} Conflicts: systemd-bash-completion %endif %description bash-completion Some systemd commands offer bash completion, but it is an optional dependency. %prep %setup -q -n systemd-v%{version}%{suse_version} %autopatch -p1 # only needed for bootstrap %if 0%{?bootstrap} cp %{SOURCE7} m4/ %endif %build opensuse_ntp_servers=({0..3}.opensuse.pool.ntp.org) # # Be sure that fresh build libudev is found and used at linkage time # sed -ri '/^systemd_cryptsetup_CFLAGS/,/^systemd_cryptsetup_LDADD/{ /^$/a\ systemd_cryptsetup_LDFLAGS =\\\ $(AM_LDFLAGS)\\\ -Wl,-rpath-link=$(top_srcdir)/.libs\ }' Makefile.am ./autogen.sh # keep split-usr until all packages have moved their systemd rules to /usr %configure \ --docdir=%{_docdir}/systemd \ --with-pamlibdir=/%{_lib}/security \ --with-dbuspolicydir=%{_sysconfdir}/dbus-1/system.d \ --with-dbussessionservicedir=%{_datadir}/dbus-1/services \ --with-dbussystemservicedir=%{_datadir}/dbus-1/system-services \ --with-certificate-root=%{_sysconfdir}/pki/systemd \ --with-ntp-servers="${opensuse_ntp_servers[*]}" \ %if 0%{?bootstrap} --disable-myhostname \ --disable-manpages \ %endif %if %{with compatlibs} --enable-compat-libs \ %endif --enable-selinux \ --enable-split-usr \ --disable-static \ --disable-tests \ --with-rc-local-script-path-start=/etc/init.d/boot.local \ --with-rc-local-script-path-stop=/etc/init.d/halt.local \ --with-debug-shell=/bin/bash \ --disable-smack \ --disable-ima \ --disable-adm-group \ --disable-wheel-group \ --disable-ldconfig \ --disable-gshadow \ %if %{without journal_remote} --disable-remote \ %endif %if %{without networkd} --disable-networkd \ %endif %if %{without machined} --disable-machined \ %endif %if %{without sysvcompat} --with-sysvinit-path= \ --with-sysvrcnd-path= \ %endif %if %{without resolved} --disable-resolved \ %endif --disable-kdbus make %{?_smp_mflags} V=e %install %make_install # move to %{_lib} %if ! 0%{?bootstrap} mv %{buildroot}%{_libdir}/libnss_myhostname.so.2 %{buildroot}/%{_lib} %endif # FIXME: these symlinks should die. mkdir -p %{buildroot}/{sbin,lib,bin} ln -sf %{_bindir}/udevadm %{buildroot}/sbin/udevadm ln -sf %{_bindir}/systemd-ask-password %{buildroot}/bin/systemd-ask-password ln -sf %{_bindir}/systemctl %{buildroot}/bin/systemctl ln -sf %{_prefix}/lib/systemd/systemd-udevd %{buildroot}/sbin/udevd install -m755 -D %{S:1063} %{buildroot}/%{_prefix}/lib/udev/udev-generate-persistent-rule install -m644 -D %{S:2000} %{buildroot}/%{_prefix}/lib/udev/rules.d/80-acpi-container-hotplug.rules install -m644 -D %{S:2001} %{buildroot}/%{_prefix}/lib/udev/rules.d/80-hotplug-cpu-mem.rules rm -rf %{buildroot}%{_sysconfdir}/rpm find %{buildroot} -type f -name '*.la' -delete mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/sysv-convert mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/migrated install -m0755 -D %{S:3} %{buildroot}/%{_sbindir}/systemd-sysv-convert install -m0755 -D %{S:12} %{buildroot}/%{_prefix}/lib/systemd/systemd-sysv-install install -m0755 %{S:13} %{buildroot}/%{_prefix}/lib/systemd/ install -m0755 %{S:15} %{buildroot}/%{_prefix}/lib/udev/ ln -s ../usr/lib/systemd/systemd %{buildroot}/bin/systemd ln -s ../usr/lib/systemd/systemd %{buildroot}/sbin/init ln -s ../usr/bin/systemctl %{buildroot}/sbin/reboot ln -s ../usr/bin/systemctl %{buildroot}/sbin/halt ln -s ../usr/bin/systemctl %{buildroot}/sbin/shutdown ln -s ../usr/bin/systemctl %{buildroot}/sbin/poweroff ln -s ../usr/bin/systemctl %{buildroot}/sbin/telinit ln -s ../usr/bin/systemctl %{buildroot}/sbin/runlevel rm -rf %{buildroot}/etc/systemd/system/*.target.wants # Make sure we don't ship static enablement symlinks in /etc during # installation, presets should be honoured instead. rm -rf %{buildroot}/etc/systemd/system/*.target.{requires,wants} rm -f %{buildroot}/etc/systemd/system/default.target # Remove tmp.mount from the unit search path as /tmp doesn't use tmpfs # by default on SUSE distros. We still keep a copy in /var for those # who want to switch to tmpfs: it's still can be copied in /etc. rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount mv %{buildroot}/%{_prefix}/lib/systemd/system/tmp.mount %{buildroot}/%{_datadir}/systemd/ # don't enable wall ask password service, it spams every console (bnc#747783) rm %{buildroot}%{_prefix}/lib/systemd/system/multi-user.target.wants/systemd-ask-password-wall.path # create %%{_libexecdir}/modules-load.d mkdir -p %{buildroot}%{_libexecdir}/modules-load.d cat << EOF > %{buildroot}%{_libexecdir}/modules-load.d/sg.conf # load sg module at boot time sg EOF # do not ship sysctl defaults in systemd package, will be part of # aaa_base (in procps for now) rm -f %{buildroot}%{_prefix}/lib/sysctl.d/50-default.conf # since v207 /etc/sysctl.conf is no longer parsed, however # backward compatibility is provided by /etc/sysctl.d/99-sysctl.conf ln -sf ../../../etc/sysctl.conf %{buildroot}%{_prefix}/lib/sysctl.d/99-sysctl.conf # remove README file for now rm -f %{buildroot}/etc/init.d/README %if 0%{?bootstrap} rm -f %{buildroot}%{_localstatedir}/log/README %endif # legacy links for f in loginctl journalctl ; do ln -s $f %{buildroot}%{_bindir}/systemd-$f %if ! 0%{?bootstrap} ln -s $f.1 %{buildroot}%{_mandir}/man1/systemd-$f.1 %endif done ln -s /usr/lib/udev %{buildroot}/lib/udev # Create the /var/log/journal directory to change the volatile journal # to a persistent one mkdir -p %{buildroot}%{_localstatedir}/log/journal/ # This dir must be owned (and thus created) by systemd otherwise the # build system will complain. This is odd since we simply own a ghost # file in it... mkdir -p %{buildroot}%{_sysconfdir}/X11/xorg.conf.d # Make sure directories in /var exist mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/coredump mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/catalog # Create ghost databases touch %{buildroot}%{_localstatedir}/lib/systemd/catalog/database touch %{buildroot}%{_sysconfdir}/udev/hwdb.bin # Make sure the NTP units dir exists mkdir -p %{buildroot}%{_prefix}/lib/systemd/ntp-units.d/ # Make sure the shutdown/sleep drop-in dirs exist mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-shutdown/ mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-sleep/ # Make sure these directories are properly owned mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/basic.target.wants mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/default.target.wants mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/dbus.target.wants mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/halt.target.wants mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/kexec.target.wants mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/poweroff.target.wants mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/reboot.target.wants mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/shutdown.target.wants # Make sure the generator directories are created and properly owned. mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-generators mkdir -p %{buildroot}%{_prefix}/lib/systemd/user-generators mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-preset mkdir -p %{buildroot}%{_prefix}/lib/systemd/user-preset # create drop-in to prevent tty1 to be cleared (bnc#804158) mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/getty@tty1.service.d/ cat << EOF > %{buildroot}%{_prefix}/lib/systemd/system/getty@tty1.service.d/noclear.conf [Service] # ensure tty1 isn't cleared (bnc#804158) TTYVTDisallocate=no EOF # create drop-in to prevent delegate=yes for root user (bsc#954765, # bnc#953241, fate#320421) mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/user@0.service.d/ cat >%{buildroot}%{_prefix}/lib/systemd/system/user@0.service.d/nodelagate.conf <%{buildroot}%{_prefix}/lib/systemd/system-preset/99-default.preset echo 'disable *' >%{buildroot}%{_prefix}/lib/systemd/user-preset/99-default.preset # Add entries for xkeyboard-config converted keymaps; mappings, which # already exist in original systemd mapping table are being ignored # though, i.e. not overwritten; needed as long as YaST uses console # keymaps internally and calls localectl to convert from vconsole to # X11 keymaps. Ideally YaST should switch to X11 layout names (the # mapping table wouldn't be needed since each X11 keymap has a # generated xkbd keymap) and let localectl initialize # /etc/vconsole.conf and /etc/X11/xorg.conf.d/00-keyboard.conf # (FATE#319454). if [ -f /usr/share/systemd/kbd-model-map.xkb-generated ]; then cat /usr/share/systemd/kbd-model-map.xkb-generated \ >>%{buildroot}%{_datarootdir}/systemd/kbd-model-map fi # kbd-model-map.legacy is used to provide mapping for legacy keymaps, # which may still be used by yast. cat %{S:14} >>%{buildroot}%{_datarootdir}/systemd/kbd-model-map %find_lang systemd # Build of installation images uses an hard coded list of some # packages with a %pre that needs to be run during the # build. Unfortunately, systemd in one of them. To make thing simpler # we use a %pre section even if it is not needed. %pre if [ $1 -gt 1 ] ; then case "$(systemctl show -pFragmentPath tmp.mount)" in FragmentPath=/usr/lib/systemd/system/tmp.mount) ln -sf %{_datadir}/systemd/tmp.mount /etc/systemd/system/ || : esac fi %post # systemd-sysusers is not available in %pre so this needs to be done # in %post. However this shouldn't be an issue since all files shipped # by the main package are owned by root. %sysusers_create systemd.conf %if ! 0%{?bootstrap} pam-config -a --systemd || : %endif ldconfig [ -e %{_localstatedir}/lib/random-seed ] && mv %{_localstatedir}/lib/random-seed %{_localstatedir}/lib/systemd/ || : systemd-machine-id-setup || : /usr/lib/systemd/systemd-random-seed save || : if [ $1 -gt 1 ]; then systemctl daemon-reexec || : fi %journal_catalog_update %tmpfiles_create # Try to read default runlevel from the old inittab if it exists if [ ! -e /etc/systemd/system/default.target -a -e /etc/inittab ]; then runlevel=$(awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' /etc/inittab) if [ -n "$runlevel" ] ; then ln -sf /usr/lib/systemd/system/runlevel$runlevel.target /etc/systemd/system/default.target || : fi fi # Create default config in /etc at first install. # Later package updates should not overwrite these settings. if [ $1 -eq 1 ]; then # Enable systemd services according to the distro defaults. # Note: systemctl might abort prematurely if it fails on one # unit. systemctl preset machines.target || : systemctl preset remote-fs.target || : systemctl preset getty@.service || : %if %{with networkd} systemctl preset systemd-networkd.service || : systemctl preset systemd-networkd-wait-online.service || : %endif %if %{with resolved} systemctl preset systemd-resolved.service || : %endif systemctl preset systemd-timesyncd.service || : fi >/dev/null # migrate any symlink which may refer to the old path for f in $(find /etc/systemd/system -type l -xtype l); do new_target="/usr$(readlink $f)" [ -f "$new_target" ] && ln -s -f $new_target $f || : done # v228 wrongly set world writable suid root permissions on timestamp # files used by permanent timers. Fix the timestamps that might have # been created by the affected versions of systemd (bsc#1020601). for stamp in $(ls /var/lib/systemd/timers/stamp-*.timer 2>/dev/null); do chmod 0644 $stamp done # Same for user lingering created by logind. for username in $(ls /var/lib/systemd/linger/* 2>/dev/null); do chmod 0644 $username done # Convert /var/lib/machines subvolume to make it suitable for # rollbacks, if needed. See bsc#992573. The installer has been fixed # to create it at installation time. # # The convertion might only be problematic for openSUSE distros # (TW/Factory) where previous versions had already created the # subvolume at the wrong place (via tmpfiles for example) and user # started to populate and use it. In this case we'll let the user fix # it manually. # # For SLE12 this subvolume was only introduced during the upgrade from # v210 to v228 when we added this workaround. Note that the subvolume # is still created at the wrong place due to the call to # tmpfiles_create macro previously however it's empty so there # shouldn't be any issues. if [ $1 -gt 1 ]; then %{_prefix}/lib/systemd/fix-machines-subvol-for-rollbacks.sh || : fi # Leap 42.3 ISO ships a version of udev which generates broken by-id # symlinks which are picked up by the installer when it creates # encrypted partitions (bsc#1063249). Warn the user in this case so we # get a chance to get rid of them once 42.3 will not be supported # anymore. if [ $1 -gt 1 ]; then if grep -qE "/dev/disk/by-id/(cr_)?-" /etc/crypttab 2>/dev/null; then cat >&2 </dev/null %pre -n udev%{?mini} %regenerate_initrd_post # New installations uses the last compat symlink generation number # (currently at 2), which basically disables all compat symlinks. On # old systems, the file doesn't exist. This is equivalent to # generation #1, which enables the creation of all compat symlinks. if [ $1 -eq 1 ]; then echo "COMPAT_SYMLINK_GENERATION=2">/usr/lib/udev/compat-symlink-generation fi # Create "tape"/"input" group which is referenced by some udev rules # that we're shipping. FIXME: maybe we should consider using # "sysusers_create basic.conf" instead ? getent group tape >/dev/null || groupadd -r tape || : getent group input >/dev/null || groupadd -r input || : %post -n udev%{?mini} %udev_hwdb_update # add KERNEL name match to existing persistent net rules sed -ri '/KERNEL/ ! { s/NAME="(eth|wlan|ath)([0-9]+)"/KERNEL=="\1*", NAME="\1\2"/}' \ /etc/udev/rules.d/70-persistent-net.rules 2>/dev/null || : # cleanup old stuff rm -f /etc/sysconfig/udev rm -f /etc/udev/rules.d/{20,55,65}-cdrom.rules %postun -n udev%{?mini} %regenerate_initrd_post %insserv_cleanup # The order of the units being restarted is important here because there's currently no # way to queue multiple jobs into a single transaction atomically. Therefore systemctl # will create 3 restart jobs that can be handled by PID1 separately and if the jobs for # the sockets are being handled first then starting them again will fail as the service # is still active hence the sockets held by udevd. However if the restart job for udevd # is handled first, there should be enough time to queue the socket jobs before the stop # job for udevd is processed. Hence PID1 will automatically sort the restart jobs # correctly by stopping the service then the sockets and then by starting the sockets and # the unit. # # Note that when systemd-udevd is restarted, there will always be a short time # frame where no socket will be listening to the events sent by the kernel, no # matter if the socket unit is restarted in first or not. %service_del_postun_with_restart systemd-udevd.service systemd-udevd-{control,kernel}.socket %posttrans -n udev%{?mini} %regenerate_initrd_posttrans %{_prefix}/lib/udev/convert-lib-udev-path.sh || : %post -n libudev%{?mini}1 -p /sbin/ldconfig %post -n libsystemd0%{?mini} -p /sbin/ldconfig %postun -n libudev%{?mini}1 -p /sbin/ldconfig %postun -n libsystemd0%{?mini} -p /sbin/ldconfig %if ! 0%{?bootstrap} %post logger systemd-tmpfiles --create --prefix=%{_localstatedir}/log/journal/ || : if [ "$1" -eq 1 ]; then # tell journal to start logging on disk if directory didn't exist before systemctl --no-block restart systemd-journal-flush.service >/dev/null || : fi %post -n nss-myhostname -p /sbin/ldconfig %postun -n nss-myhostname -p /sbin/ldconfig %endif %if %{with resolved} %post -n nss-resolve -p /sbin/ldconfig %postun -n nss-resolve -p /sbin/ldconfig %endif %if %{with machined} %post -n nss-mymachines -p /sbin/ldconfig %postun -n nss-mymachines -p /sbin/ldconfig %endif %if %{with journal_remote} %pre journal-remote %service_add_pre systemd-journal-gatewayd.socket systemd-journal-gatewayd.service %service_add_pre systemd-journal-remote.socket systemd-journal-remote.service %service_add_pre systemd-journal-upload.service %post journal-remote # Assume that all files shipped by systemd-journal-remove are owned by root. %sysusers_create systemd-remote.conf %tmpfiles_create %{_libexecdir}/tmpfiles.d/systemd-remote.conf %service_add_post systemd-journal-gatewayd.socket systemd-journal-gatewayd.service %service_add_post systemd-journal-remote.socket systemd-journal-remote.service %service_add_post systemd-journal-upload.service %preun journal-remote %service_del_preun systemd-journal-gatewayd.socket systemd-journal-gatewayd.service %service_del_preun systemd-journal-remote.socket systemd-journal-remote.service %service_del_preun systemd-journal-upload.service %postun journal-remote %service_del_postun systemd-journal-gatewayd.socket systemd-journal-gatewayd.service %service_del_postun systemd-journal-remote.socket systemd-journal-remote.service %service_del_postun systemd-journal-upload.service %endif %clean %files -f systemd.lang %defattr(-,root,root) /bin/systemd /bin/systemd-ask-password /bin/systemctl %if %{with networkd} %{_bindir}/networkctl %endif %{_bindir}/busctl %{_bindir}/bootctl %{_bindir}/kernel-install %{_bindir}/hostnamectl %{_bindir}/localectl %if %{with machined} %{_bindir}/machinectl %endif %{_bindir}/systemctl %{_bindir}/systemd-analyze %{_bindir}/coredumpctl %{_bindir}/systemd-delta %{_bindir}/systemd-escape %{_bindir}/systemd-firstboot %{_bindir}/systemd-path %{_bindir}/systemd-sysusers %{_bindir}/systemd-notify %{_bindir}/systemd-run %{_bindir}/systemd-journalctl %{_bindir}/journalctl %{_bindir}/systemd-ask-password %{_bindir}/loginctl %{_bindir}/systemd-loginctl %{_bindir}/systemd-inhibit %{_bindir}/systemd-tty-ask-password-agent %{_bindir}/systemd-tmpfiles %{_bindir}/systemd-machine-id-setup %{_bindir}/systemd-nspawn %{_bindir}/systemd-stdio-bridge %{_bindir}/systemd-detect-virt %{_bindir}/timedatectl %{_sbindir}/systemd-sysv-convert %{_bindir}/systemd-cgls %{_bindir}/systemd-cgtop %{_bindir}/systemd-cat %dir %{_prefix}/lib/kernel %dir %{_prefix}/lib/kernel/install.d %{_prefix}/lib/kernel/install.d/50-depmod.install %{_prefix}/lib/kernel/install.d/90-loaderentry.install %dir %{_prefix}/lib/systemd %dir %{_prefix}/lib/systemd/system %dir %{_prefix}/lib/systemd/user %if %{with journal_remote} %exclude %{_prefix}/lib/systemd/systemd-journal-gatewayd %exclude %{_prefix}/lib/systemd/systemd-journal-remote %exclude %{_prefix}/lib/systemd/systemd-journal-upload %exclude %{_prefix}/lib/systemd/system/systemd-journal-gatewayd.* %exclude %{_prefix}/lib/systemd/system/systemd-journal-remote.* %exclude %{_prefix}/lib/systemd/system/systemd-journal-upload.* %endif %exclude %{_prefix}/lib/systemd/systemd-udevd %exclude %{_prefix}/lib/systemd/system/systemd-udev*.* %exclude %{_prefix}/lib/systemd/system/*.target.wants/systemd-udev*.* %exclude %{_prefix}/lib/systemd/system/initrd-udevadm-cleanup-db.service %{_prefix}/lib/systemd/system/*.automount %{_prefix}/lib/systemd/system/*.service %{_prefix}/lib/systemd/system/*.slice %{_prefix}/lib/systemd/system/*.target %{_prefix}/lib/systemd/system/*.mount %{_prefix}/lib/systemd/system/*.timer %{_prefix}/lib/systemd/system/*.socket %{_prefix}/lib/systemd/system/*.wants %{_prefix}/lib/systemd/system/*.path %{_prefix}/lib/systemd/user/*.target %{_prefix}/lib/systemd/user/*.service %{_prefix}/lib/systemd/systemd-* %{_prefix}/lib/systemd/systemd %{_prefix}/lib/systemd/fix-machines-subvol-for-rollbacks.sh %dir %{_prefix}/lib/systemd/catalog %{_prefix}/lib/systemd/catalog/systemd.catalog %{_prefix}/lib/systemd/catalog/systemd.*.catalog %{_prefix}/lib/systemd/system-preset %{_prefix}/lib/systemd/user-preset %{_prefix}/lib/systemd/system-generators %{_prefix}/lib/systemd/user-generators %dir %{_prefix}/lib/systemd/ntp-units.d/ %dir %{_prefix}/lib/systemd/system-shutdown/ %dir %{_prefix}/lib/systemd/system-sleep/ %dir %{_prefix}/lib/systemd/system/getty@tty1.service.d %dir %{_prefix}/lib/systemd/system/user@0.service.d %{_prefix}/lib/systemd/system/getty@tty1.service.d/noclear.conf %{_prefix}/lib/systemd/system/user@0.service.d/nodelagate.conf %if %{with importd} %{_prefix}/lib/systemd/import-pubring.gpg %endif /%{_lib}/security/pam_systemd.so %if %{with gnuefi} %dir %{_prefix}/lib/systemd/boot %dir %{_prefix}/lib/systemd/boot/efi %{_prefix}/lib/systemd/boot/efi/*.efi %{_prefix}/lib/systemd/boot/efi/*.stub %endif %dir %{_libexecdir}/modules-load.d %dir %{_sysconfdir}/modules-load.d %{_libexecdir}/modules-load.d/sg.conf %{_libexecdir}/sysusers.d/ %exclude %{_libexecdir}/sysusers.d/systemd-remote.conf %dir %{_sysconfdir}/tmpfiles.d %{_libexecdir}/tmpfiles.d/ %exclude %{_libexecdir}/tmpfiles.d/systemd-remote.conf %dir %{_libexecdir}/binfmt.d %dir %{_sysconfdir}/binfmt.d %dir %{_libexecdir}/sysctl.d %dir %{_sysconfdir}/sysctl.d %{_prefix}/lib/sysctl.d/50-coredump.conf %{_prefix}/lib/sysctl.d/99-sysctl.conf %dir %{_sysconfdir}/X11/xinit %dir %{_sysconfdir}/X11/xinit/xinitrc.d %dir %{_sysconfdir}/X11/xorg.conf.d %dir %{_sysconfdir}/dbus-1 %dir %{_sysconfdir}/dbus-1/system.d %dir %{_sysconfdir}/systemd %dir %{_sysconfdir}/systemd/network %dir %{_sysconfdir}/systemd/system %dir %{_sysconfdir}/systemd/user %dir %{_sysconfdir}/xdg/systemd %{_sysconfdir}/xdg/systemd/user %{_sysconfdir}/X11/xinit/xinitrc.d/50-systemd-user.sh %config(noreplace) %{_sysconfdir}/pam.d/systemd-user %config(noreplace) %{_sysconfdir}/systemd/bootchart.conf %config(noreplace) %{_sysconfdir}/systemd/coredump.conf %config(noreplace) %{_sysconfdir}/systemd/timesyncd.conf %config(noreplace) %{_sysconfdir}/systemd/system.conf %config(noreplace) %{_sysconfdir}/systemd/logind.conf %config(noreplace) %{_sysconfdir}/systemd/journald.conf %config(noreplace) %{_sysconfdir}/systemd/user.conf %if %{with resolved} %config(noreplace) %{_sysconfdir}/systemd/resolved.conf %endif %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.systemd1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf %if %{with machined} %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf %endif %if %{with networkd} %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.network1.conf %endif %if %{with resolved} %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.resolve1.conf %endif %if %{with importd} %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf %endif # Some files created at runtime. %ghost %config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/00-keyboard.conf %ghost %config(noreplace) %{_sysconfdir}/vconsole.conf %ghost %config(noreplace) %{_sysconfdir}/locale.conf %ghost %config(noreplace) %{_sysconfdir}/machine-info %ghost %attr(0444,root,root) %config(noreplace) %{_sysconfdir}/machine-id %{_prefix}/lib/systemd/system/org.freedesktop.systemd1.busname %{_prefix}/lib/systemd/system/org.freedesktop.locale1.busname %{_prefix}/lib/systemd/system/org.freedesktop.login1.busname %{_prefix}/lib/systemd/system/org.freedesktop.hostname1.busname %{_prefix}/lib/systemd/system/org.freedesktop.timedate1.busname %if %{with networkd} %{_prefix}/lib/systemd/system/org.freedesktop.network1.busname %endif %if %{with resolved} %{_prefix}/lib/systemd/system/org.freedesktop.resolve1.busname %endif %if %{with machined} %{_prefix}/lib/systemd/system/org.freedesktop.machine1.busname %endif %if %{with importd} %{_prefix}/lib/systemd/system/org.freedesktop.import1.busname %endif %{_datadir}/systemd %{_datadir}/factory %if %{with journal_remote} %exclude %{_datadir}/systemd/gatewayd %endif %dir %{_datadir}/dbus-1 %dir %{_datadir}/dbus-1/services %dir %{_datadir}/dbus-1/system-services %{_datadir}/dbus-1/services/org.freedesktop.systemd1.service %{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service %{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service %{_datadir}/dbus-1/system-services/org.freedesktop.login1.service %{_datadir}/dbus-1/system-services/org.freedesktop.hostname1.service %{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service %if %{with networkd} %{_datadir}/dbus-1/system-services/org.freedesktop.network1.service %endif %if %{with resolved} %{_datadir}/dbus-1/system-services/org.freedesktop.resolve1.service %endif %if %{with machined} %{_datadir}/dbus-1/system-services/org.freedesktop.machine1.service %endif %if %{with importd} %{_datadir}/dbus-1/system-services/org.freedesktop.import1.service %endif %dir %{_datadir}/polkit-1 %dir %{_datadir}/polkit-1/actions %{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy %{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy %{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy %{_datadir}/polkit-1/actions/org.freedesktop.timedate1.policy %{_datadir}/polkit-1/actions/org.freedesktop.login1.policy %if %{with machined} %{_datadir}/polkit-1/actions/org.freedesktop.machine1.policy %endif %if %{with importd} %{_datadir}/polkit-1/actions/org.freedesktop.import1.policy %endif %if ! 0%{?bootstrap} %{_mandir}/man1/[a-rt-z]*ctl.1* %{_mandir}/man1/systemc*.1* %{_mandir}/man1/systemd*.1* %{_mandir}/man5/[a-tv-z]* %{_mandir}/man5/user* %{_mandir}/man7/[bdfks]* %{_mandir}/man8/kern* %{_mandir}/man8/pam_* %{_mandir}/man8/systemd-[a-gik-tv]* %{_mandir}/man8/systemd-h[aioy]* %{_mandir}/man8/systemd-journald* %{_mandir}/man8/systemd-u[ps]* %endif %if %{with journal_remote} %exclude %{_mandir}/man5/journal-remote.conf* %endif %{_docdir}/systemd %{_prefix}/lib/udev/rules.d/70-uaccess.rules %{_prefix}/lib/udev/rules.d/71-seat.rules %{_prefix}/lib/udev/rules.d/73-seat-late.rules %{_prefix}/lib/udev/rules.d/99-systemd.rules %dir %{_localstatedir}/lib/systemd %dir %{_localstatedir}/lib/systemd/sysv-convert %dir %{_localstatedir}/lib/systemd/migrated %dir %{_localstatedir}/lib/systemd/coredump %dir %{_localstatedir}/lib/systemd/catalog %ghost %{_localstatedir}/lib/systemd/catalog/database %ghost %{_localstatedir}/lib/systemd/backlight %ghost %attr(0600,root,root) %{_localstatedir}/lib/systemd/random-seed %dir %{_datadir}/zsh %dir %{_datadir}/zsh/site-functions %{_datadir}/zsh/site-functions/* %{_datadir}/pkgconfig/systemd.pc %files devel %defattr(-,root,root,-) %{_libdir}/libsystemd.so %{_libdir}/pkgconfig/libsystemd.pc %{_includedir}/systemd/ %if %{with compatlibs} %{_libdir}/libsystemd-daemon.so %{_libdir}/libsystemd-login.so %{_libdir}/libsystemd-id128.so %{_libdir}/libsystemd-journal.so %{_libdir}/pkgconfig/libsystemd-daemon.pc %{_libdir}/pkgconfig/libsystemd-login.pc %{_libdir}/pkgconfig/libsystemd-id128.pc %{_libdir}/pkgconfig/libsystemd-journal.pc %endif %if ! 0%{?bootstrap} %{_mandir}/man3/SD*.3* %{_mandir}/man3/sd*.3* %endif %files sysvinit %defattr(-,root,root,-) /sbin/init /sbin/reboot /sbin/halt /sbin/shutdown /sbin/poweroff /sbin/telinit /sbin/runlevel %if ! 0%{?bootstrap} %{_mandir}/man1/init.1* %{_mandir}/man8/halt.8* %{_mandir}/man8/reboot.8* %{_mandir}/man8/shutdown.8* %{_mandir}/man8/poweroff.8* %{_mandir}/man8/telinit.8* %{_mandir}/man8/runlevel.8* %endif %files -n udev%{?mini} %defattr(-,root,root) /sbin/udevd /sbin/udevadm # keep for compatibility %ghost /lib/udev %{_bindir}/udevadm %{_bindir}/systemd-hwdb %dir %{_prefix}/lib/udev/ %{_prefix}/lib/udev/ata_id %{_prefix}/lib/udev/path_id_compat %{_prefix}/lib/udev/cdrom_id %{_prefix}/lib/udev/collect %{_prefix}/lib/udev/mtd_probe %{_prefix}/lib/udev/scsi_id %{_prefix}/lib/udev/v4l_id %{_prefix}/lib/udev/udev-generate-persistent-rule %{_prefix}/lib/udev/convert-lib-udev-path.sh %ghost %attr(644, root, root) %{_prefix}/lib/udev/compat-symlink-generation %{_prefix}/lib/udev/rule_generator.functions %{_prefix}/lib/udev/write_net_rules %{_prefix}/lib/udev/rootsymlink-generator %dir %{_prefix}/lib/udev/rules.d/ %exclude %{_prefix}/lib/udev/rules.d/70-uaccess.rules %exclude %{_prefix}/lib/udev/rules.d/71-seat.rules %exclude %{_prefix}/lib/udev/rules.d/73-seat-late.rules %exclude %{_prefix}/lib/udev/rules.d/99-systemd.rules %{_prefix}/lib/udev/rules.d/*.rules %{_prefix}/lib/udev/hwdb.d/ %dir %{_sysconfdir}/udev/ %dir %{_sysconfdir}/udev/rules.d/ %ghost %{_sysconfdir}/udev/hwdb.bin %config(noreplace) %{_sysconfdir}/udev/udev.conf %if ! 0%{?bootstrap} %{_mandir}/man5/udev* %{_mandir}/man7/hwdb* %{_mandir}/man7/udev* %{_mandir}/man8/systemd-hwdb* %{_mandir}/man8/systemd-udev* %{_mandir}/man8/udev* %endif %dir %{_prefix}/lib/systemd/system %{_prefix}/lib/systemd/systemd-udevd %{_prefix}/lib/systemd/system/systemd-udev*.service %{_prefix}/lib/systemd/system/systemd-udevd*.socket %{_prefix}/lib/systemd/system/initrd-udevadm-cleanup-db.service %dir %{_prefix}/lib/systemd/system/sysinit.target.wants %{_prefix}/lib/systemd/system/sysinit.target.wants/systemd-udev*.service %dir %{_prefix}/lib/systemd/system/sockets.target.wants %{_prefix}/lib/systemd/system/sockets.target.wants/systemd-udev*.socket %dir %{_prefix}/lib/systemd/network %{_prefix}/lib/systemd/network/*.link %{_prefix}/lib/systemd/network/*.network %{_datadir}/pkgconfig/udev.pc %files -n libsystemd0%{?mini} %defattr(-,root,root) %{_libdir}/libsystemd.so.* %if %{with compatlibs} %{_libdir}/libsystemd-daemon.so.* %{_libdir}/libsystemd-login.so.* %{_libdir}/libsystemd-id128.so.* %{_libdir}/libsystemd-journal.so.* %endif %files -n libudev%{?mini}1 %defattr(-,root,root) %{_libdir}/libudev.so.* %files -n libudev%{?mini}-devel %defattr(-,root,root) %{_includedir}/libudev.h %{_libdir}/libudev.so %{_libdir}/pkgconfig/libudev.pc %if ! 0%{?bootstrap} %{_mandir}/man3/*udev*.3* %endif %if ! 0%{?bootstrap} %files logger %defattr(-,root,root) %dir %attr(2755,root,systemd-journal) %{_localstatedir}/log/journal/ %if %{with sysvcompat} %{_localstatedir}/log/README %endif %files -n nss-myhostname %defattr(-, root, root) /%{_lib}/*nss_myhostname* %{_mandir}/man8/libnss_myhostname.* %{_mandir}/man8/nss-myhostname.* %endif %if %{with resolved} %files -n nss-resolve %defattr(-, root, root) %{_libdir}/libnss_resolve.so.2 %{_mandir}/man8/libnss_resolve.* %{_mandir}/man8/nss-resolve.* %endif %if %{with machined} %files -n nss-mymachines %defattr(-,root,root) %{_libdir}/libnss_mymachines.so* %{_mandir}/man8/libnss_mymachines.* %{_mandir}/man8/nss-mymachines.* %endif %if %{with journal_remote} %files journal-remote %defattr(-, root, root) %config(noreplace) %{_sysconfdir}/systemd/journal-remote.conf %config(noreplace) %{_sysconfdir}/systemd/journal-upload.conf %{_prefix}/lib/systemd/system/systemd-journal-gatewayd.* %{_prefix}/lib/systemd/system/systemd-journal-remote.* %{_prefix}/lib/systemd/system/systemd-journal-upload.* %{_prefix}/lib/systemd/systemd-journal-gatewayd %{_prefix}/lib/systemd/systemd-journal-remote %{_prefix}/lib/systemd/systemd-journal-upload %{_libexecdir}/sysusers.d/systemd-remote.conf %{_libexecdir}/tmpfiles.d/systemd-remote.conf %{_mandir}/man5/journal-remote.conf* %{_mandir}/man8/systemd-journal-gatewayd.* %{_mandir}/man8/systemd-journal-remote.* %{_mandir}/man8/systemd-journal-upload.* %{_datadir}/systemd/gatewayd %endif %files bash-completion %defattr(-,root,root,-) %dir %{_datadir}/bash-completion %dir %{_datadir}/bash-completion/completions %{_datadir}/bash-completion/completions/* %changelog