File systemd.spec of Package systemd.30072

#
# spec file
#
# Copyright (c) 2021 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.
#

%global flavor @BUILD_FLAVOR@%{nil}

%if "%{flavor}" == "mini"
%define bootstrap 1
%define mini -mini
%else
%define bootstrap 0
%define mini %nil
%endif

%define min_kernel_version 4.5
%define suse_version +suse.195.gb473c02cc0
%define _testsuitedir /usr/lib/systemd/tests
%define xinitconfdir %{?_distconfdir}%{!?_distconfdir:%{_sysconfdir}}/X11/xinit

%if %{bootstrap}
%bcond_with     coredump
%bcond_with     experimental
%bcond_with     importd
%bcond_with     journal_remote
%bcond_with     machined
%bcond_with     networkd
%bcond_with     portabled
%bcond_with     resolved
%bcond_with     sd_boot
%bcond_with     sysvcompat
%bcond_with     testsuite
%else
%bcond_without  coredump
%bcond_without  experimental
%bcond_without  importd
%bcond_without  journal_remote
%bcond_without  machined
%bcond_without  networkd
%bcond_without  portabled
%bcond_without  resolved
%ifarch %{ix86} x86_64 aarch64
%bcond_without  sd_boot
%else
%bcond_with     sd_boot
%endif
%bcond_without  sysvcompat
%bcond_without  testsuite
%endif
# Kept to ease migrations toward SLE
%bcond_without  split_usr

Name:           systemd%{?mini}
URL:            http://www.freedesktop.org/wiki/Software/systemd
Version:        249.16
Release:        0
Summary:        A System and Session Manager
License:        LGPL-2.1-or-later
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%if ! %{bootstrap}
BuildRequires:  docbook-xsl-stylesheets
BuildRequires:  kbd
BuildRequires:  libapparmor-devel
BuildRequires:  libgcrypt-devel
BuildRequires:  libxslt-tools
BuildRequires:  polkit
# python is only required for generating systemd.directives.xml
BuildRequires:  python3-base
BuildRequires:  python3-lxml
BuildRequires:  pkgconfig(audit)
BuildRequires:  pkgconfig(libcryptsetup) >= 1.6.0
BuildRequires:  pkgconfig(libdw)
BuildRequires:  pkgconfig(libfido2)
BuildRequires:  pkgconfig(libiptc)
BuildRequires:  pkgconfig(liblz4)
BuildRequires:  pkgconfig(liblzma)
BuildRequires:  pkgconfig(libpcre2-8)
BuildRequires:  pkgconfig(libqrencode)
BuildRequires:  pkgconfig(libselinux) >= 2.1.9
BuildRequires:  pkgconfig(libzstd)
BuildRequires:  pkgconfig(tss2-esys)
BuildRequires:  pkgconfig(tss2-mu)
BuildRequires:  pkgconfig(tss2-rc)
%ifarch aarch64 %ix86 x86_64 x32 %arm ppc64le s390x
BuildRequires:  pkgconfig(libseccomp) >= 2.3.1
%endif
%endif
BuildRequires:  fdupes
BuildRequires:  gperf
BuildRequires:  libacl-devel
BuildRequires:  libcap-devel
BuildRequires:  libmount-devel >= 2.27.1
BuildRequires:  meson >= 0.43
BuildRequires:  pam-devel
BuildRequires:  python3-Jinja2
# 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:  pkgconfig(blkid) >= 2.26
BuildRequires:  pkgconfig(libkmod) >= 15
%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

%if %{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:       netcfg >= 11.5
Requires:       systemd-default-settings-branding
Requires:       systemd-presets-branding
Requires:       util-linux >= 2.27.1
Requires(pre):  group(lock)
# This Recommends because some symbols of libpcre2 are dlopen()ed by journalctl
Recommends:     libpcre2-8-0
# ditto but dlopen()ed by systemd-cryptenroll
Recommends:     libfido2
Recommends:     libtss2-esys0
Recommends:     libtss2-mu0
Recommends:     libtss2-rc0
Requires(post): coreutils
Requires(post): findutils
Requires(post): systemd-presets-branding
Requires(post): pam-config >= 0.79-5
%endif

%if %{bootstrap}
Conflicts:      kiwi
Conflicts:      systemd
%endif
Conflicts:      sysvinit
Conflicts:      filesystem < 11.5
Conflicts:      mkinitrd < 2.7.0
Obsoletes:      systemd-analyze < 201
Provides:       systemd-analyze = %{version}-%{release}
Provides:       systemd-logger = %{version}-%{release}
Obsoletes:      systemd-bash-completion
Obsoletes:      systemd-logger < %{version}-%{release}
Provides:       systemd-bash-completion = %{version}-%{release}
Obsoletes:      pm-utils <= 1.4.1
Obsoletes:      suspend <= 1.0
Source0:        systemd-v%{version}%{suse_version}.tar.xz
Source1:        systemd-rpmlintrc
Source2:        systemd-user
%if %{with sysvcompat}
Source3:        systemd-sysv-convert
Source4:        systemd-sysv-install
%endif
Source5:        tmpfiles-suse.conf
Source6:        baselibs.conf
Source11:       after-local.service
Source14:       kbd-model-map.legacy

Source100:      fixlet-container-post.sh
Source101:      fixlet-systemd-post.sh
Source102:      fixlet-udev-post.sh

Source200:      files.systemd
Source201:      files.udev
Source202:      files.container
Source203:      files.network
Source204:      files.devel
Source206:      files.uefi-boot

# Patches listed below are openSUSE specific and should be kept at its
# minimum. We try hard to push our changes to upstream but sometimes they are
# only relevant for SUSE distros. Special rewards for those who will manage to
# get rid of one of them !
Patch1:         0001-restore-var-run-and-var-lock-bind-mount-if-they-aren.patch
Patch2:         0002-rc-local-fix-ordering-startup-for-etc-init.d-boot.lo.patch
Patch3:         0008-sysv-generator-translate-Required-Start-into-a-Wants.patch
Patch4:         0009-pid1-handle-console-specificities-weirdness-for-s390.patch
Patch5:         0001-conf-parser-introduce-early-drop-ins.patch

# Patches listed below are SLE/Leap specific.
Patch1001:      1001-udev-use-lock-when-selecting-the-highest-priority-de.patch
Patch1002:      1002-udev-add-option-to-generate-old-buggy-SCSI-serials.patch
Patch1003:      1003-logind-store-a-timestamp-when-the-ACPI-power-button-.patch
Patch1004:      1004-udev-don-t-create-by-partlabel-primary-and-.-logical.patch
Patch1005:      1005-udev-optionally-disable-the-generation-of-the-partla.patch
Patch1006:      1006-logind-keep-backward-compatibility-with-UserTasksMax.patch
Patch1007:      1007-sysv-restore-support-for-halt.local.patch
Patch1008:      1008-login-mark-again-framebuffer-devices-as-master-of-se.patch
Patch1009:      1009-Drop-or-soften-some-of-the-deprecation-warnings.patch
Patch1010:      1010-sysv-add-back-support-for-all-virtual-facility-and-f.patch
Patch1011:      1011-sysv-generator-add-back-support-for-SysV-scripts-for.patch
Patch1012:      1012-man-describe-the-net-naming-schemes-specific-to-SLE.patch
Patch1013:      0003-strip-the-domain-part-from-etc-hostname-when-setting.patch
Patch1014:      0005-udev-create-default-symlinks-for-primary-cd_dvd-driv.patch
Patch1015:      0007-networkd-make-network.service-an-alias-of-systemd-ne.patch
Patch1016:      0011-core-disable-session-keyring-per-system-sevice-entir.patch

# Patches listed below are put in quarantine. 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.
Patch5001:      5001-sleep-don-t-init-sys-power-resume-if-resume-option-i.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 doc
Summary:        HTML documentation for systemd
License:        LGPL-2.1-or-later
Supplements:    (systemd and patterns-base-documentation)
%if %{bootstrap}
Conflicts:      systemd-doc
Requires:       this-is-only-for-build-envs
%endif

%description doc
The HTML documentation for systemd.

%package devel
Summary:        Development files for libsystemd and libudev
License:        LGPL-2.1-or-later
Requires:       libsystemd0%{?mini} = %{version}-%{release}
Requires:       libudev%{?mini}1 = %{version}-%{release}
Requires:       systemd-rpm-macros
Provides:       libudev%{?mini}-devel = %{version}-%{release}
Obsoletes:      libudev%{?mini}-devel < %{version}-%{release}
%if %{bootstrap}
Provides:       systemd-devel = %{version}-%{release}
Conflicts:      systemd-devel
Provides:       libudev-devel = %{version}-%{release}
Conflicts:      libudev-devel
%endif

%description devel
Development headers and files for libsystemd and libudev libraries for
developing and building applications linking to these libraries.

%package sysvinit
Summary:        System V init tools
License:        LGPL-2.1-or-later
Requires:       %{name} = %{version}-%{release}
Provides:       sbin_init
Conflicts:      otherproviders(sbin_init)
Provides:       systemd-sysvinit = %{version}-%{release}
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
%if %{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
URL:            http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
%if %{with sd_boot}
BuildRequires:  gnu-efi
%endif
Requires:       %{name} = %{version}-%{release}
%systemd_requires
Requires:       filesystem
Requires:       kmod
Requires:       system-group-hardware
Requires(pre):  group(kvm)
Requires(post): sed
Requires(post): coreutils
Requires(postun):coreutils

Conflicts:      ConsoleKit < 0.4.1
Conflicts:      dracut < 044.1
Conflicts:      filesystem < 11.5
Conflicts:      mkinitrd < 2.7.0
Conflicts:      util-linux < 2.16
%if %{bootstrap}
Provides:       udev = %{version}-%{release}
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 %{_udevrulesdir}/. 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
%if %{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

%if %{with coredump}
%package coredump
Summary:        Systemd tools for coredump management
License:        LGPL-2.1-or-later
Requires:       %{name} = %{version}-%{release}
%systemd_requires
Provides:       systemd:%{_bindir}/coredumpctl

%description coredump
Systemd tools to store and manage coredumps.

This package contains systemd-coredump, coredumpctl.
%endif

%package container
Summary:        Systemd tools for container management
License:        LGPL-2.1-or-later
Requires:       %{name} = %{version}-%{release}
%systemd_requires
Obsoletes:      nss-mymachines < %{version}-%{release}
Provides:       nss-mymachines = %{version}-%{release}
Provides:       systemd-container = %{version}-%{release}
Provides:       systemd:%{_bindir}/systemd-nspawn
%if %{bootstrap}
Conflicts:      systemd-container
Provides:       systemd-container = %{version}-%{release}
Conflicts:      systemd-mini-container-mini
%endif

%description container
Systemd tools to spawn and manage containers and virtual machines.

In addition, it also contains a plugin for the Name Service Switch (NSS),
providing host name resolution for all local containers and virtual machines
using network namespacing and registered with systemd-machined. 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.

%if %{with networkd} || %{with resolved}
%package network
Summary:        systemd network and Network Name Resolution managers
License:        LGPL-2.1-or-later
Requires:       %{name} = %{version}-%{release}
%systemd_requires
# This Recommends because some symbols of libidn2 are dlopen()ed by resolved
Recommends:     pkgconfig(libidn2)
BuildRequires:  pkgconfig(libidn2)
BuildRequires:  pkgconfig(openssl)
Obsoletes:      nss-resolve < %{version}-%{release}
Provides:       nss-resolve = %{version}-%{release}
Provides:       systemd:/usr/lib/systemd/systemd-networkd
Provides:       systemd:/usr/lib/systemd/systemd-resolved

%description network
systemd-networkd is a system service that manages networks. It detects and
configures network devices as they appear, as well as manages network addresses
and routes for any link for which it finds a .network file, see
systemd.network(5). It can also create virtual network devices based on their
description given by systemd.netdev(5) files. It may be controlle by
networkctl(1).

systemd-resolved is a system service that provides network name resolution to
local applications. It implements a caching and validating DNS/DNSSEC stub
resolver, as well as an LLMNR and MulticastDNS resolver and responder. It may be
controlled by resolvectl(1).

Addtionally, this package also contains a plug-in module for the Name Service
Switch (NSS), which enables hostname resolutions by contacting
systemd-resolved(8). 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 portabled}
%package portable
Summary:        Systemd tools for portable services
License:        LGPL-2.1-or-later
Requires:       %{name} = %{version}-%{release}
%systemd_requires

%description portable
Systemd tools to manage portable services. The feature is still
considered experimental so the package might change  or vanish.
Use at own risk.

More information can be found online:

http://0pointer.net/blog/walkthrough-for-portable-services.html
https://systemd.io/PORTABLE_SERVICES
%endif

%if ! %{bootstrap}
%package -n nss-systemd
Summary:        Plugin for local virtual host name resolution
License:        LGPL-2.1-or-later

%description -n nss-systemd
This package contains a plugin for the Name Service Switch (NSS),
which enables resolution of all dynamically allocated service
users. (See the DynamicUser= setting in unit files.)

To activate this NSS module, you will need to include it in
/etc/nsswitch.conf, see nss-systemd(8) manpage for more details.

%package -n nss-myhostname
Summary:        Plugin for local system host name resolution
License:        LGPL-2.1-or-later

%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 journal_remote}
%package journal-remote
Summary:        Gateway for serving journal events over the network using HTTP
License:        LGPL-2.1-or-later
Requires:       %{name} = %{version}-%{release}
%systemd_requires

%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

%if %{with testsuite}
%package testsuite
Summary:        Testsuite for systemd
# Unit tests dependencies
License:        LGPL-2.1-or-later
Recommends:     python3
Recommends:     python3-colorama
# Optional dep for mkfs.vfat needed by test-loop-block (otherwise skipped)
Recommends:     dosfstools
# The following deps on libs are for test-dlopen-so whereas the
# pkgconfig ones are used by test-funtions to find the libs on the
# host and install them in the image, see install_missing_libraries()
# for details.
%if %{with resolved}
Requires:       libidn2
Requires:       pkgconfig(libidn2)
%endif
%if %{with experimental}
Requires:       libpwquality1
Requires:       libqrencode4
Requires:       pkgconfig(libqrencode)
Requires:       pkgconfig(pwquality)
%endif
Requires:       %{name} = %{version}-%{release}
Requires:       attr
Requires:       binutils
Requires:       busybox-static
Requires:       cryptsetup
Requires:       dosfstools
Requires:       libcap-progs
Requires:       libfido2
Requires:       libtss2-esys0
Requires:       libtss2-mu0
Requires:       libtss2-rc0
Requires:       lz4
Requires:       make
Requires:       netcat
Requires:       qemu-kvm
Requires:       quota
Requires:       socat
Requires:       squashfs
Requires:       systemd-container
Requires:       pkgconfig(libfido2)
Requires:       pkgconfig(tss2-esys)
Requires:       pkgconfig(tss2-mu)
Requires:       pkgconfig(tss2-rc)
%if %{with coredump}
Requires:       systemd-coredump
%endif
%if %{with experimental}
Requires:       systemd-experimental
%endif
%if %{with journal_remote}
Requires:       systemd-journal-remote
%endif
%if %{with networkd}
Requires:       systemd-network
%endif
%if %{with portabled}
Requires:       systemd-portable
%endif
Requires:       xz

%description testsuite
This package contains the unit tests as well as the extended testsuite. The unit
tests are used to check various internal functions used by systemd whereas the
extended testsuite is used to test various functionalities of systemd and all
its components.

Note that you need root privileges to run the extended testsuite.

Run the following python script to run all unit tests at once:
$ %{_testsuitedir}/run-unit-tests.py

To run the full extended testsuite do the following:
$ NO_BUILD=1 TEST_NESTED_VM=1 %{_testsuitedir}/integration-tests/run-integration-tests.sh

Or to run one specific integration test:
$ NO_BUILD=1 TEST_NESTED_VM=1 make -C %{_testsuitedir}/integration-tests/TEST-01-BASIC clean setup run

For more details on the available options to run the extended testsuite, please
refer to %{_testsuitedir}/test/README.testsuite.
%endif

%if %{with experimental}
%package experimental
Summary:        Experimental systemd features
License:        LGPL-2.1-or-later
Requires:       %{name} = %{version}-%{release}
%systemd_requires
# These Recommends because some symbols of these libs are dlopen()ed by home stuff
Recommends:     libfido2
Recommends:     libpwquality1
Recommends:     libqrencode4
# libfido2, libpwquality1 and libqrencode4 are build requirements for home stuff
BuildRequires:  pkgconfig(libfido2)
BuildRequires:  pkgconfig(libqrencode)
BuildRequires:  pkgconfig(pwquality)
# fdisk and openssl are build requirements for home stuff and repart
BuildRequires:  pkgconfig(fdisk)
BuildRequires:  pkgconfig(openssl)

%description experimental
This package contains optional extra services that are considered as
previews and are provided so users can do early experiments with the
new features or technologies without waiting for them to be fully
supported by either upstream and openSUSE.

Please note that all services should be considered in development
phase and as such their behaviors details, unit files, option names,
etc... are subject to change without the usual backwards-compatibility
promises.

Components that turn out to be stable and considered as fully
supported will be merged into the main package or moved into a
dedicated package.

The package contains: homed, repart, userdbd.

Have fun with these services at your own risk.
%endif

%if ! %{bootstrap}
%lang_package
%endif

%prep
%autosetup -p1 -n systemd-v%{version}%{suse_version}

%build
%meson \
        -Dmode=release \
        -Dversion-tag=%{version}%{suse_version} \
        -Ddocdir=%{_docdir}/systemd \
%if %{with split_usr}
        -Drootprefix=/usr \
        -Dsplit-usr=true \
%endif
        -Dsplit-bin=true \
        -Dsystem-uid-max=499 \
        -Dsystem-gid-max=499 \
        -Dpamconfdir=no \
        -Dpamlibdir=%{_pam_moduledir} \
        -Dxinitrcdir=%{xinitconfdir}/xinitrc.d \
        -Drpmmacrosdir=no \
        -Dcertificate-root=%{_sysconfdir}/pki/systemd \
        -Ddefault-hierarchy=hybrid \
        -Ddefault-kill-user-processes=false \
        -Dextra-net-naming-schemes=sle15-sp3=v238+bridge_no_slot,sle15-sp4=sle15-sp3+slot_function_id+16bit_index \
        -Ddefault-net-naming-scheme=sle15-sp4 \
        -Drc-local=/etc/init.d/boot.local \
        -Dhalt-local=/etc/init.d/halt.local \
        -Dcreate-log-dirs=false \
        -Dbump-proc-sys-fs-nr-open=false \
        -Ddebug-shell=/bin/bash \
        -Dseccomp=auto \
        -Dselinux=auto \
        -Dapparmor=auto \
        -Dsmack=false \
        -Dima=false \
        -Delfutils=auto \
        -Doomd=false \
        -Dpstore=true \
%if %{with experimental}
        -Drepart=true \
        -Dhomed=true \
        -Duserdb=true \
%else
        -Drepart=false \
        -Dhomed=false \
        -Duserdb=false \
%endif
%if %{bootstrap}
        -Defi=false \
        -Dbashcompletiondir=no \
        -Dzshcompletiondir=no \
        -Dtranslations=false \
        -Dnss-myhostname=false \
        -Dnss-systemd=false \
%else
        -Defi=true \
        -Dtpm=true \
        -Dtpm2=true \
        -Dman=true \
        -Dhtml=true \
%endif
%if %{without coredump}
        -Dcoredump=false \
%endif
%if %{without sd_boot}
        -Dgnu-efi=false \
        -Dkernel-install=false \
%else
        -Dgnu-efi=true \
        -Dkernel-install=true \
%endif
%if %{without importd}
        -Dimportd=false \
%endif
%if %{without journal_remote}
        -Dremote=false \
%endif
%if %{without portabled}
        -Dportabled=false \
%endif
%if %{without machined}
        -Dmachined=false \
%endif
%if %{without networkd}
        -Dnetworkd=false \
%endif
%if %{without resolved}
        -Dresolve=false \
%else
        -Ddns-servers='' \
        -Ddefault-dnssec=no \
        -Ddns-over-tls=openssl \
%endif
%if %{without sysvcompat}
        -Dsysvinit-path= \
        -Dsysvrcnd-path= \
%endif
%if %{with testsuite}
        -Dtests=unsafe \
        -Dinstall-tests=true \
%else
        -Dtests=false \
        -Dinstall-tests=false \
%endif
        -Dadm-group=false \
        -Dwheel-group=false \
        -Dgshadow=false \
        -Dldconfig=false

%meson_build

%install
%meson_install

# Don't ship resolvconf symlink for now as it conflicts with the
# binary shipped by openresolv and provides limited compatibility
# only
%if %{with resolved}
rm %{buildroot}%{_sbindir}/resolvconf
rm %{buildroot}%{_mandir}/man1/resolvconf.1*
%endif

%if %{with sysvcompat}
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/sysv-convert
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/migrated

install -m0755 -D %{SOURCE3}  %{buildroot}/%{_sbindir}/systemd-sysv-convert
install -m0755 -D %{SOURCE4}  %{buildroot}/%{_systemd_util_dir}/systemd-sysv-install
%endif

mkdir -p % %{buildroot}%{_sysconfdir}/systemd/network
mkdir -p % %{buildroot}%{_sysconfdir}/systemd/nspawn

# Install the fixlets
mkdir -p %{buildroot}%{_systemd_util_dir}/rpm
%if %{with machined}
install -m0755 %{SOURCE100} %{buildroot}%{_systemd_util_dir}/rpm/
%endif
install -m0755 %{SOURCE101} %{buildroot}%{_systemd_util_dir}/rpm/
install -m0755 %{SOURCE102} %{buildroot}%{_systemd_util_dir}/rpm/

%if %{with split_usr}
mkdir -p %{buildroot}/{bin,sbin}
# Legacy paths
ln -s ../usr/bin/udevadm %{buildroot}/sbin/
ln -s ../usr/bin/systemctl %{buildroot}/bin/
# Legacy sysvinit tools
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
%if %{with sysvcompat}
ln -s ../usr/bin/systemctl %{buildroot}/sbin/telinit
ln -s ../usr/bin/systemctl %{buildroot}/sbin/runlevel
%endif
# kmod keeps insisting on using /lib/modprobe.d only.
mkdir -p %{buildroot}%{_modprobedir}
mv %{buildroot}/usr/lib/modprobe.d/* %{buildroot}%{_modprobedir}/
%endif

# 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

# Replace upstream systemd-user with the openSUSE one.
install -m0644 -D --target-directory=%{buildroot}%{_sysconfdir}/pam.d %{S:2}

# 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}/%{_unitdir}/local-fs.target.wants/tmp.mount
mv %{buildroot}/%{_unitdir}/tmp.mount %{buildroot}/%{_datadir}/systemd/

# don't enable wall ask password service, it spams every console (bnc#747783)
rm %{buildroot}%{_unitdir}/multi-user.target.wants/systemd-ask-password-wall.path

# do not ship sysctl defaults in systemd package, will be part of
# aaa_base (in procps for now)
rm -f %{buildroot}%{_sysctldir}/50-default.conf
rm -f %{buildroot}%{_sysctldir}/50-pid-max.conf

# Make sure systemd-network polkit rules file starts with a suitable
# number prefix so it takes precedence over our polkit-default-privs.
%if %{with networkd}
mv %{buildroot}%{_datadir}/polkit-1/rules.d/systemd-networkd.rules \
        %{buildroot}%{_datadir}/polkit-1/rules.d/60-systemd-networkd.rules
%endif

# since v207 /etc/sysctl.conf is no longer parsed (commit
# 04bf3c1a60d82791), however backward compatibility is provided by
# /usr/lib/sysctl.d/99-sysctl.conf.
ln -s ../../../etc/sysctl.conf %{buildroot}%{_sysctldir}/99-sysctl.conf

# The definitions of the basic users/groups are given by system-user package on
# SUSE (bsc#1006978).
rm -f %{buildroot}%{_sysusersdir}/basic.conf

# Remove README file in init.d as (SUSE) rpm requires executable files
# in this directory... oh well.
rm -f %{buildroot}/etc/init.d/README

# 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
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/rpm

# Make sure the NTP units dir exists
mkdir -p %{buildroot}%{_ntpunitsdir}

# 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}%{_unitdir}/basic.target.wants
mkdir -p %{buildroot}%{_unitdir}/default.target.wants
mkdir -p %{buildroot}%{_unitdir}/dbus.target.wants
mkdir -p %{buildroot}%{_unitdir}/graphical.target.wants
mkdir -p %{buildroot}%{_unitdir}/halt.target.wants
mkdir -p %{buildroot}%{_unitdir}/initrd-root-device.target.wants
mkdir -p %{buildroot}%{_unitdir}/initrd-root-fs.target.wants
mkdir -p %{buildroot}%{_unitdir}/kexec.target.wants
mkdir -p %{buildroot}%{_unitdir}/poweroff.target.wants
mkdir -p %{buildroot}%{_unitdir}/reboot.target.wants
mkdir -p %{buildroot}%{_unitdir}/remote-fs.target.wants
mkdir -p %{buildroot}%{_unitdir}/rescue.target.wants
mkdir -p %{buildroot}%{_unitdir}/shutdown.target.wants

# Make sure the generator directories are created and properly owned.
mkdir -p %{buildroot}%{_systemdgeneratordir}
mkdir -p %{buildroot}%{_systemdusergeneratordir}
mkdir -p %{buildroot}%{_presetdir}
mkdir -p %{buildroot}%{_userpresetdir}
mkdir -p %{buildroot}%{_systemd_system_env_generator_dir}
mkdir -p %{buildroot}%{_systemd_user_env_generator_dir}

# ensure after.local wrapper is called
install -m 644 %{S:11} %{buildroot}%{_unitdir}/
ln -s ../after-local.service %{buildroot}%{_unitdir}/multi-user.target.wants/

# ghost directories with default permissions.
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/backlight

# ghost files with default permisssions.
touch %{buildroot}%{_sysconfdir}/X11/xorg.conf.d/00-keyboard.conf
touch %{buildroot}%{_sysconfdir}/vconsole.conf
touch %{buildroot}%{_sysconfdir}/locale.conf
touch %{buildroot}%{_sysconfdir}/machine-info
touch %{buildroot}%{_localstatedir}/lib/systemd/catalog/database

%fdupes -s %{buildroot}%{_mandir}

# Make sure to disable all services by default. The Suse branding
# presets package takes care of defining the right policies.
rm -f %{buildroot}%{_presetdir}/*.preset
echo 'disable *' >%{buildroot}%{_presetdir}/99-default.preset
echo 'disable *' >%{buildroot}%{_userpresetdir}/99-default.preset

# The tmpfiles dealing with the generic paths are pretty messy
# currently because:
#
#  1. filesystem package wants to define the generic paths and some of
#     them conflict with the definition given by systemd in var.conf,
#     see bsc#1078466.
#
#  2. /tmp and /var/tmp are not cleaned by default on SUSE distros
#     (fate#314974) which conflict with tmp.conf.
#
#  3. There're also legacy.conf which defines various legacy paths
#     which either don't match the SUSE defaults or don't look needed
#     at all.
#
#  4. And to finish, we don't want the part in etc.conf which imports
#     default upstream files in empty /etc, see below.
#
# To keep things simple, we remove all these tmpfiles config files but
# still keep the remaining paths that still don't have a better home
# in suse.conf.
rm -f %{buildroot}%{_tmpfilesdir}/{etc,home,legacy,tmp,var}.conf
install -m 644 %{S:5} %{buildroot}%{_tmpfilesdir}/suse.conf

# The content of the files shipped by systemd doesn't match the
# defaults used by SUSE. Don't ship those files but leave the decision
# to use the mechanism to the individual packages that actually
# consume those configs (like glibc or pam), see bsc#1170146.
rm -fr %{buildroot}%{_datadir}/factory/*

# 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

# Don't ship systemd-journald-audit.socket as there's no other way for
# us to prevent journald from recording audit messages in the journal
# by default (bsc#1109252).
rm -f %{buildroot}%{_unitdir}/systemd-journald-audit.socket
rm -f %{buildroot}%{_unitdir}/sockets.target.wants/systemd-journald-audit.socket

%if %{with testsuite}
# -Dinstall_test took care of installing the unit tests only (those in
# src/tests) and testdata directory. Here we copy the integration tests
# including also all related scripts used to prepare and run the integration
# tests in dedicated VMs. During the copy, all symlinks are replaced by the
# files they point to making sure we won't try to embed dangling symlinks.
mkdir -p %{buildroot}%{_testsuitedir}/integration-tests
tar -cO \
    --dereference \
    --exclude=testdata \
    --exclude-vcs  \
    --exclude-vcs-ignores \
    -C test/ . | tar -xC %{buildroot}%{_testsuitedir}/integration-tests

# inst_rules() looks for udev rule files in /lib/udev, which might not exist on
# SLE. This can be removed once UsrMerge will be done on SLE.
ln -s ../usr/lib/udev %{buildroot}/lib/udev
%endif

%if ! %{bootstrap}
%find_lang systemd
%endif

# Don't drop %%pre section even if it becomes empty: the build process of
# installation images uses a hardcoded list of packages with a %%pre that needs
# to be run during the build and complains if it can't find one.
%pre
# Units listed below can be enabled at installation according to their preset
# setting.
%systemd_pre remote-fs.target
%systemd_pre getty@.service
%systemd_pre systemd-timesyncd.service

if [ $1 -gt 1 ] ; then
        case "$(systemctl show -pFragmentPath tmp.mount)" in
        FragmentPath=%{_unitdir}/tmp.mount)
                ln -sfr %{_datadir}/systemd/tmp.mount %{_sysconfdir}/systemd/system/ || :
        esac
fi

%post
# Make /etc/machine-id an empty file during package installation. On
# the first boot, machine-id is initialized and either committed (if
# /etc/ is writable) or the system/image runs with a transient machine
# ID, that changes on each boot (if the image is read-only). This is
# especially important for appliance builds to avoid an identical
# machine ID in all images.
if [ $1 -eq 1 ]; then
        touch     %{_sysconfdir}/machine-id
        chmod 444 %{_sysconfdir}/machine-id
fi

%if ! %{bootstrap}
pam-config --add --systemd || :
%endif

# 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 the
# main package ships are owned by root.
%sysusers_create systemd-journal.conf
%sysusers_create systemd-network.conf
%sysusers_create systemd-timesync.conf

[ -e %{_localstatedir}/lib/random-seed ] && mv %{_localstatedir}/lib/random-seed %{_localstatedir}/lib/systemd/ || :
/usr/lib/systemd/systemd-random-seed save || :

systemctl daemon-reexec || :

# Reexecute user manager instances (if any). It is asynchronous but it
# shouldn't be a problem in practice: a problem would arise only if
# the new version of a user service has a brand new option that is
# only understood by the latest version of the user manager and the
# user service is started before the user manager get reexecuted. But
# this case is very unlikely especially since we don't restart any
# user service for now on.
#
# Before doing this, we unfortunately have to wait until users will
# reexec their user manager (by either rebooting or restarting their
# session) to a version that supports SIGRTMIN+25 otherwise sending
# the signal to an old version will kill the manager which means
# tearing down the user session.
#
# systemctl kill --kill-who=main --signal=SIGRTMIN+25 "user@*.service" || :

%journal_catalog_update
%tmpfiles_create

# Units listed below can be enabled at installation according to their preset
# setting.
%systemd_post remote-cryptsetup.target
%systemd_post remote-fs.target
%systemd_post getty@.service
%systemd_post systemd-timesyncd.service

# Run the hacks/fixups to clean up old garbages left by (very) old versions of
# systemd.
%{_systemd_util_dir}/rpm/fixlet-systemd-post.sh $1 || :

%postun
# daemon-reload is implied by %%systemd_postun_with_restart
%systemd_postun_with_restart systemd-journald.service
%systemd_postun_with_restart systemd-timesyncd.service
# Avoid restarting logind until fixed upstream (issue #1163)

%pre -n udev%{?mini}
# Units listed below can be enabled at installation according to their preset
# setting.
%systemd_pre systemd-pstore.service

# 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

%post -n udev%{?mini}
%regenerate_initrd_post
%udev_hwdb_update
%tmpfiles_create systemd-pstore.conf
%systemd_post systemd-pstore.service
%{_systemd_util_dir}/rpm/fixlet-udev-post.sh $1 || :

%preun -n udev%{?mini}
%systemd_preun systemd-udevd.service systemd-udevd-{control,kernel}.socket
%systemd_preun systemd-pstore.service

%postun -n udev%{?mini}
%regenerate_initrd_post

# 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.
%systemd_postun_with_restart systemd-udevd.service systemd-udevd-{control,kernel}.socket
%systemd_postun systemd-pstore.service

%posttrans -n udev%{?mini}
%regenerate_initrd_posttrans

%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 %{with machined}
%pre container
%systemd_pre machines.target

%preun container
%systemd_preun machines.target

%postun container
%systemd_postun machines.target
%ldconfig
%endif

%post container
%tmpfiles_create systemd-nspawn.conf
%if %{with machined}
%systemd_post machines.target
%ldconfig
%endif
%{_systemd_util_dir}/rpm/fixlet-container-post.sh $1 || :

%if %{with coredump}
%post coredump
%sysusers_create systemd-coredump.conf
%endif

%if ! %{bootstrap}
%ldconfig_scriptlets -n nss-myhostname
%ldconfig_scriptlets -n nss-systemd
%endif

%if %{with journal_remote}
%pre journal-remote
%systemd_pre systemd-journal-gatewayd.socket systemd-journal-gatewayd.service
%systemd_pre systemd-journal-remote.socket systemd-journal-remote.service
%systemd_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
%systemd_post systemd-journal-gatewayd.socket systemd-journal-gatewayd.service
%systemd_post systemd-journal-remote.socket systemd-journal-remote.service
%systemd_post systemd-journal-upload.service

%preun  journal-remote
%systemd_preun systemd-journal-gatewayd.socket systemd-journal-gatewayd.service
%systemd_preun systemd-journal-remote.socket systemd-journal-remote.service
%systemd_preun systemd-journal-upload.service

%postun journal-remote
%systemd_postun systemd-journal-gatewayd.socket systemd-journal-gatewayd.service
%systemd_postun systemd-journal-remote.socket systemd-journal-remote.service
%systemd_postun systemd-journal-upload.service
%endif

%if %{with networkd} || %{with resolved}
%pre network
%if %{with networkd}
%systemd_pre systemd-networkd.service
%systemd_pre systemd-networkd-wait-online.service
%endif
%if %{with resolved}
%systemd_pre systemd-resolved.service
%endif

%post network
%if %{with networkd}
%systemd_post systemd-networkd.service
%systemd_post systemd-networkd-wait-online.service
%endif
%if %{with resolved}
%ldconfig
%sysusers_create systemd-resolve.conf
%systemd_post systemd-resolved.service
%endif

%preun network
%if %{with networkd}
%systemd_preun systemd-networkd.service
%systemd_preun systemd-networkd-wait-online.service
%endif
%if %{with resolved}
%systemd_preun systemd-resolved.service
%endif

%postun network
%if %{with networkd}
%systemd_postun systemd-networkd.service
%systemd_postun systemd-networkd-wait-online.service
%endif
%if %{with resolved}
%ldconfig
%systemd_postun systemd-resolved.service
%endif
%endif

%if %{with portabled}
%pre portable
%systemd_pre systemd-portabled.service

%post portable
%tmpfiles_create portables.conf
%systemd_post systemd-portabled.service

%preun portable
%systemd_preun systemd-portabled.service

%postun portable
%systemd_postun_with_restart systemd-portabled.service
%endif

%if %{with experimental}
%pre experimental
%systemd_pre systemd-userdbd.service systemd-userdbd.socket
%systemd_pre systemd-homed.service

%post experimental
%systemd_post systemd-userdbd.service systemd-userdbd.socket
%systemd_post systemd-homed.service

%preun experimental
%systemd_preun systemd-userdbd.service systemd-userdbd.socket
%systemd_preun systemd-homed.service

%postun experimental
%systemd_postun systemd-userdbd.service systemd-userdbd.socket
%systemd_postun systemd-homed.service
%endif

%clean

%files
%defattr(-,root,root)
%include %{SOURCE200}

%files -n udev%{?mini}
%defattr(-,root,root)
%include %{SOURCE201}
%include %{SOURCE206}

%files container
%defattr(-,root,root)
%include %{SOURCE202}

%if %{with networkd} || %{with resolved}
%files network
%defattr(-,root,root)
%include %{SOURCE203}
%endif

%files doc
%defattr(-,root,root,-)
%{_docdir}/systemd/

%files devel
%defattr(-,root,root,-)
%license LICENSE.LGPL2.1
%include %{SOURCE204}

%files sysvinit
%defattr(-,root,root,-)
%if %{with split_usr}
/sbin/halt
/sbin/init
/sbin/poweroff
/sbin/reboot
/sbin/shutdown
%if %{with sysvcompat}
/sbin/telinit
/sbin/runlevel
%endif
%endif
%{_sbindir}/halt
%{_sbindir}/init
%{_sbindir}/poweroff
%{_sbindir}/reboot
%{_sbindir}/shutdown
%if %{with sysvcompat}
%{_sbindir}/runlevel
%{_sbindir}/telinit
%endif
%if ! %{bootstrap}
%{_mandir}/man1/init.1.gz
%{_mandir}/man8/halt.8.gz
%{_mandir}/man8/poweroff.8.gz
%{_mandir}/man8/reboot.8.gz
%{_mandir}/man8/runlevel.8.gz
%{_mandir}/man8/shutdown.8.gz
%{_mandir}/man8/telinit.8.gz
%endif

%files -n libsystemd0%{?mini}
%defattr(-,root,root)
%license LICENSE.LGPL2.1
%{_libdir}/libsystemd.so.0
%{_libdir}/libsystemd.so.0.32.0

%files -n libudev%{?mini}1
%defattr(-,root,root)
%license LICENSE.LGPL2.1
%{_libdir}/libudev.so.1
%{_libdir}/libudev.so.1.7.2

%if %{with coredump}
%files coredump
%defattr(-,root,root)
%{_bindir}/coredumpctl
%{_prefix}/lib/systemd/systemd-coredump
%{_unitdir}/systemd-coredump*
%{_unitdir}/sockets.target.wants/systemd-coredump.socket
%{_sysctldir}/50-coredump.conf
%{_sysusersdir}/systemd-coredump.conf
%config(noreplace) %{_sysconfdir}/systemd/coredump.conf
%dir %{_localstatedir}/lib/systemd/coredump
%if ! %{bootstrap}
%{_datadir}/bash-completion/completions/coredumpctl
%{_datadir}/zsh/site-functions/_coredumpctl
%{_mandir}/man1/coredumpctl*
%{_mandir}/man5/coredump.conf*
%{_mandir}/man8/systemd-coredump*
%endif
%endif

%if ! %{bootstrap}
%files lang -f systemd.lang

%files -n nss-myhostname
%defattr(-, root, root)
%{_libdir}/*nss_myhostname*
%{_mandir}/man8/libnss_myhostname.*
%{_mandir}/man8/nss-myhostname.*

%files -n nss-systemd
%defattr(-, root, root)
%{_libdir}/libnss_systemd.so*
%{_mandir}/man8/libnss_systemd.so.*
%{_mandir}/man8/nss-systemd.*
%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
%{_unitdir}/systemd-journal-gatewayd.*
%{_unitdir}/systemd-journal-remote.*
%{_unitdir}/systemd-journal-upload.*
%{_prefix}/lib/systemd/systemd-journal-gatewayd
%{_prefix}/lib/systemd/systemd-journal-remote
%{_prefix}/lib/systemd/systemd-journal-upload
%{_sysusersdir}/systemd-remote.conf
%{_mandir}/man5/journal-remote.conf*
%{_mandir}/man5/journal-upload.conf*
%{_mandir}/man8/systemd-journal-gatewayd.*
%{_mandir}/man8/systemd-journal-remote.*
%{_mandir}/man8/systemd-journal-upload.*
%{_datadir}/systemd/gatewayd
%endif

%if %{with portabled}
%files portable
%defattr(-,root,root)
%{_bindir}/portablectl
%{_prefix}/lib/systemd/systemd-portabled
%{_prefix}/lib/systemd/portable
%{_unitdir}/systemd-portabled.service
%{_unitdir}/dbus-org.freedesktop.portable1.service
%{_datadir}/dbus-1/system.d/org.freedesktop.portable1.conf
%{_datadir}/dbus-1/system-services/org.freedesktop.portable1.service
%{_datadir}/polkit-1/actions/org.freedesktop.portable1.policy
%{_tmpfilesdir}/portables.conf
%{_mandir}/man*/portablectl*
%{_mandir}/man*/systemd-portabled*
%endif

%if %{with testsuite}
%files testsuite
%defattr(-,root,root)
%doc %{_testsuitedir}/integration-tests/README.testsuite
%{_testsuitedir}
/lib/udev
%endif

%if %{with experimental}
%files experimental
%defattr(-,root,root)
%{_bindir}/systemd-repart
%{_unitdir}/systemd-repart.service
%{_mandir}/man*/*repart*
%{_bindir}/userdbctl
%{_prefix}/lib/systemd/systemd-userwork
%{_prefix}/lib/systemd/systemd-userdbd
%{_systemd_util_dir}/system/initrd-root-fs.target.wants/systemd-repart.service
%{_systemd_util_dir}/system/sysinit.target.wants/systemd-repart.service
%{_unitdir}/systemd-userdbd.service
%{_unitdir}/systemd-userdbd.socket
%{_mandir}/man*/userdbctl*
%{_mandir}/man*/systemd-userdbd*
%config(noreplace) %{_sysconfdir}/systemd/homed.conf
%{_bindir}/homectl
%{_prefix}/lib/systemd/systemd-homed
%{_prefix}/lib/systemd/systemd-homework
%{_unitdir}/systemd-homed.service
%{_unitdir}/systemd-homed-activate.service
%{_pam_moduledir}/pam_systemd_home.so
%{_datadir}/dbus-1/system-services/org.freedesktop.home1.service
%{_datadir}/dbus-1/system.d/org.freedesktop.home1.conf
%{_datadir}/polkit-1/actions/org.freedesktop.home1.policy
%{_datadir}/bash-completion/completions/homectl
%{_mandir}/man*/*homectl*
%{_mandir}/man*/*homed*
%{_mandir}/man*/org.freedesktop.home1*
%{_mandir}/man*/pam_systemd_home*
%endif

%changelog
openSUSE Build Service is sponsored by