File systemd.spec of Package systemd

#
# spec file for package systemd
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# 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 http://bugs.opensuse.org/
#


%define bootstrap 0
%define real systemd
%define udevpkgname udev
%define udev_major 1

Name:           systemd
Url:            http://www.freedesktop.org/wiki/Software/systemd
Version:        195
Release:        0
Summary:        A System and Session Manager
License:        LGPL-2.1+
Group:          System/Base
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildRequires:  audit-devel
BuildRequires:  dbus-1
%if ! 0%{?bootstrap}
BuildRequires:  docbook-xsl-stylesheets
%endif
BuildRequires:  fdupes
%if ! 0%{?bootstrap}
BuildRequires:  gobject-introspection-devel
%endif
BuildRequires:  gperf
%if ! 0%{?bootstrap}
BuildRequires:  gtk-doc
%endif
BuildRequires:  intltool
BuildRequires:  libacl-devel
BuildRequires:  libcap-devel
BuildRequires:  libsepol-devel
BuildRequires:  libtool
BuildRequires:  libusb-devel
%if ! 0%{?bootstrap}
BuildRequires:  libxslt-tools
%endif
BuildRequires:  pam-devel
BuildRequires:  tcpd-devel
BuildRequires:  xz
BuildRequires:  pkgconfig(blkid) >= 2.20
BuildRequires:  pkgconfig(dbus-1) >= 1.3.2
%if ! 0%{?bootstrap}
BuildRequires:  pkgconfig(glib-2.0) >= 2.22.0
BuildRequires:  pkgconfig(libcryptsetup) >= 1.4.2
%endif
BuildRequires:  pkgconfig(libkmod) >= 5
BuildRequires:  pkgconfig(liblzma)
%if ! 0%{?bootstrap}
BuildRequires:  pkgconfig(libmicrohttpd)
%endif
BuildRequires:  pkgconfig(libpci) >= 3
%if ! 0%{?bootstrap}
BuildRequires:  pkgconfig(libqrencode)
%endif
BuildRequires:  pkgconfig(libselinux) >= 2.1.9
BuildRequires:  pkgconfig(libsepol)
BuildRequires:  pkgconfig(usbutils) >= 0.82
%if 0%{?bootstrap}
Requires:       this-is-only-for-build-envs
%else
# the buildignore is important for bootstrapping
#!BuildIgnore:  udev
Requires:       %{udevpkgname} >= 172
Requires:       dbus-1 >= 1.4.0
Requires:       kbd
Requires:       pam-config >= 0.79-5
Requires:       pwdutils
Requires:       systemd-presets-branding
Requires:       util-linux >= 2.21
Requires(post): coreutils
Requires(post): findutils
%endif
Conflicts:      filesystem < 11.5
Conflicts:      mkinitrd < 2.7.0
Source0:        http://www.freedesktop.org/software/systemd/systemd-%{version}.tar.xz
Source1:        systemd-rpmlintrc
Source2:        localfs.service
Source3:        systemd-sysv-convert
Source4:        macros.systemd
Source5:        systemd-insserv_conf
Source6:        baselibs.conf
Source7:        libgcrypt.m4
Source8:        systemd-journald.init

Source1060:     boot.udev
Source1061:     write_dev_root_rule
Source1062:     systemd-udev-root-symlink

Patch1:         0001-Add-bootsplash-handling-for-password-dialogs.patch
# handle SUSE specific kbd settings
Patch6:         0001-handle-disable_caplock-and-compose_table-and-kbd_rat.patch
Patch7:         systemd-numlock-suse.patch
# don't start getty on tty1 until all password request are done
Patch8:         tty1.patch
Patch10:        0001-service-Fix-dependencies-added-when-parsing-insserv..patch
Patch13:        0001-service-flags-sysv-service-with-detected-pid-as-Rema.patch
Patch15:        support-sysvinit.patch
Patch16:        modules_on_boot.patch
Patch22:        new-lsb-headers.patch
Patch23:        storage-after-cryptsetup.patch
Patch24:        delay-fsck-cryptsetup-after-md-lvm-dmraid.patch
Patch31:        lock-opensuse.patch
Patch33:        crypt-loop-file.patch
Patch36:        sysctl-modules.patch
Patch38:        dm-lvm-after-local-fs-pre-target.patch
Patch53:        fastboot-forcefsck.patch
Patch56:        support-suse-clock-sysconfig.patch
Patch59:        fix-enable-disable-boot-initscript.patch
Patch60:        var-run-lock.patch
Patch63:        xdm-display-manager.patch
Patch64:        fix-permissions-btmp.patch
# PATCH-FIX-UPSTREAM fix-debugshell.patch fcrozat@suse.com bnc#789052 -- use bash if sushell isn't available
Patch71:        fix-debugshell.patch
# PATCH-FIX-OPENSUSE handle-root-uses-lang.patch bnc#792182 fcrozat@suse.com -- handle ROOT_USES_LANG=ctype
Patch72:        handle-root-uses-lang.patch
# PATCH-FIX-OPENSUSE multiple-sulogin.patch bnc#793182 fcrozat@suse.com -- handle multiple sulogin
Patch76:        multiple-sulogin.patch
# PATCH-FIX-OPENSUSE systemctl-options.patch bnc#798620 fcrozat@suse.com -- handle SYSTEMCTL_OPTIONS environment variable
Patch77:        systemctl-options.patch

# Upstream First - Policy:
# Never add any patches to this package without the upstream commit id
# in the patch. Any patches added here without a very good reason to make
# an exception will be silently removed with the next version update.
# PATCH-FIX-UPSTREAM fix-logind-pty-seat.patch fcrozat@suse.com -- fix logind complaining when doing su/sudo in X terminal
Patch61:        fix-logind-pty-seat.patch
# PATCH-FIX-UPSTREAM fix-build-glibc217.patch fcrozat@suse.com -- fix build with latest glibc
Patch62:        fix-build-glibc217.patch
# PATCH-FIX-UPSTREAM fix-bad-memory-access.patch fcrozat@suse.com -- fix bad memory access
Patch65:        fix-bad-memory-access.patch
# PATCH-FIX-UPSTREAM fix-dbus-crash.patch fcrozat@suse.com -- fix D-Bus caused crash
Patch66:        fix-dbus-crash.patch
# PATCH-FIX-UPSTREAM sync-on-shutdown.patch fcrozat@suse.com -- Sync on shutdown
Patch67:        sync-on-shutdown.patch
# PATCH-FIX-UPSTREAM mount-efivars.patch fcrozat@suse.com -- mount efivars if booting under UEFI
Patch68:        mount-efivars.patch
# PATCH-FIX-UPSTREAM switch-root-try-pivot-root.patch fcrozat@suse.com -- try pivot_root before overmounting /
Patch69:        switch-root-try-pivot-root.patch
# PATCH-FIX-UPSTREAM remount-ro-before-unmount.patch fcrozat@suse.com -- remount ro before unmounting in final shutdown loop
Patch70:        remount-ro-before-unmount.patch
# PATCH-FIX-UPSTREAM revert-of-9279749b84cc87c7830280b7895a48bed03c9429.patch  crrodriguez@opensuse.org -- do not consider failure to umount / and /usr an error.
Patch73:        revert-of-9279749b84cc87c7830280b7895a48bed03c9429.patch
# PATCH-FIX-UPSTREAM detect-btrfs-ssd.patch  crrodriguez@opensuse.org -- fix BTRFS detection on systemd-readhead 
Patch74:        detect-btrfs-ssd.patch
# PATCH-FIX-UPSTREAM timedated-donot-close-bogus-dbus-connection.patch crrodriguez@opensuse.org -- Fix assertion failure when dbus is gone.
Patch75:        timedated-donot-close-bogus-dbus-connection.patch
# PATCH-FIX-UPSTREAM journalctl-remove-leftover-message.patch fcrozat@suse.com -- remove debug message in systemctl
Patch78:        journalctl-remove-leftover-message.patch
# PATCH-FIX-UPSTREAM job-avoid-recursion-when-cancelling.patch fcrozat@suse.com -- prevent potential recursion when cancelling a service
Patch79:        job-avoid-recursion-when-cancelling.patch
# PATCH-FIX-UPSTREAM sysctl-parse-all-keys.patch fcrozat@suse.com -- ensure sysctl file is fully parsed
Patch80:        sysctl-parse-all-keys.patch
# PATCH-FIX-UPSTREAM journal-fix-cutoff-max-date.patch fcrozat@suse.com -- fix computation of cutoff max date for journal
Patch81:        journal-fix-cutoff-max-date.patch
# PATCH-FIX-UPSTREAM reword-rescue-mode-hints.patch fcrozat@suse.com -- reword rescue prompt
Patch82:        reword-rescue-mode-hints.patch
# PATCH-FIX-UPSTREAM improve-overflow-checks.patch fcrozat@suse.com -- improve time overflow checks
Patch83:        improve-overflow-checks.patch
# PATCH-FIX-UPSTREAM fix-swap-behaviour-with-symlinks.patch fcrozat@suse.com -- fix swap behaviour with symlinks
Patch84:        fix-swap-behaviour-with-symlinks.patch
# PATCH-FIX-UPSTREAM hostnamectl-fix-set-hostname-with-no-argument.patch fcrozat@suse.com -- ensure hostnamectl requires an argument when called with set-hostname option
Patch85:        hostnamectl-fix-set-hostname-with-no-argument.patch
# PATCH-FIX-UPSTREAM agetty-overrides-term.patch fcrozat@suse.com -- pass correctly terminal type to agetty
Patch86:        agetty-overrides-term.patch
# PATCH-FIX-UPSTREAM check-for-empty-strings-in-strto-conversions.patch fcrozat@suse.com -- better check for empty strings in strto* conversions
Patch87:        check-for-empty-strings-in-strto-conversions.patch
# PATCH-FIX-UPSTREAM strv-cleanup-error-path-loops.patch fcrozat@suse.com -- cleanup strv on error path
Patch88:        strv-cleanup-error-path-loops.patch
# PATCH-FIX-UPSTREAM cryptsetup-handle-plain.patch fcrozat@suse.com -- correctly handle "plain" option in cryptsetup
Patch89:        cryptsetup-handle-plain.patch
# PATCH-FIX-UPSTREAM fstab-generator-improve-error-message.patch fcrozat@suse.com -- improve error message in fstab-generator
Patch90:        fstab-generator-improve-error-message.patch
# PATCH-FIX-UPSTREAM delta-accept-t-option.patch fcrozat@suse.com -- accept -t option in systemd-delta
Patch91:        delta-accept-t-option.patch
# PATCH-FIX-UPSTREAM highlight-ordering-cycle-deletions.patch fcrozat@suse.com -- highlight ordering cycle deletions in logs
Patch92:        highlight-ordering-cycle-deletions.patch
# PATCH-FIX-UPSTREAM core-interpret-escaped-semicolon-as-escaped.patch fcrozat@suse.com -- accept \; in ExecStart
Patch93:        core-interpret-escaped-semicolon-as-escaped.patch
# PATCH-FIX-UPSTREAM hostnamectl-fix-parsing-no-ask-password.patch fcrozat@suse.com -- accept no-ask-password in hostnamectl
Patch94:        hostnamectl-fix-parsing-no-ask-password.patch
# PATCH-FIX-UPSTREAM systemd-cgls-fix-piping-output.patch fcrozat@suse.com -- fix piping output of systemd-cgls
Patch95:        systemd-cgls-fix-piping-output.patch
# PATCH-FIX-UPSTREAM core-load-fragment-improve-error-message.patch fcrozat@suse.com -- improve error message when parsing fragments
Patch96:        core-load-fragment-improve-error-message.patch
# PATCH-FIX-UPSTREAM fix-potential-bad-mem-access.patch fcrozat@suse.com -- fix potential bad memory access
Patch97:        fix-potential-bad-mem-access.patch
# PATCH-FIX-UPSTREAM socket-improve-error-message.patch fcrozat@suse.com -- improve error message in socket handling
Patch98:        socket-improve-error-message.patch
# PATCH-FIX-UPSTREAM journal-send-always-send-syslog_identifier.patch fcrozat@suse.com -- always send syslog_identifier if available for journal
Patch99:        journal-send-always-send-syslog_identifier.patch
# PATCH-FIX-UPSTREAM crypsetup-handle-nofail.patch fcrozat@suse.com -- handle nofail in cryptsetup
Patch100:       crypsetup-handle-nofail.patch
# PATCH-FIX-UPSTREAM crypsetup-generator-state-file-name-in-error-message.patch fcrozat@suse.com -- add filename in error message from crypsetup-generator
Patch101:       crypsetup-generator-state-file-name-in-error-message.patch
# PATCH-FIX-UPSTREAM fstab-generator-error-message-on-duplicates.patch fcrozat@suse.com -- improve error message on duplicate in fstab-generator
Patch102:       fstab-generator-error-message-on-duplicates.patch
# PATCH-FIX-UPSTREAM systemctl-verbose-message-on-missing-install.patch fcrozat@suse.com -- reword missing install error message in systemctl
Patch103:       systemctl-verbose-message-on-missing-install.patch
# PATCH-FIX-UPSTREAM shutdown-improvements.patch fcrozat@suse.com -- various improvements at shutdown
Patch104:       shutdown-improvements.patch
# PATCH-FIX-UPSTREAM localectl-fix-assertion.patch fcrozat@suse.com -- fix assertion in localectl
Patch105:       localectl-fix-assertion.patch
# PATCH-FIX-UPSTREAM path-util-fix-potential-crash.patch fcrozat@suse.com -- fix potential crash in path-util
Patch106:       path-util-fix-potential-crash.patch
# PATCH-FIX-UPSTREAM coredumpctl-fix-crash.patch fcrozat@suse.com -- fix crash in coredumpctl
Patch107:       coredumpctl-fix-crash.patch
# PATCH-FIX-UPSTREAM socket-verbose-error-message.patch fcrozat@suse.com -- add more verbose error message in socket handling
Patch108:       socket-verbose-error-message.patch
# PATCH-FIX-UPSTREAM pam-properly-handle-ssh-logins-without-pam-tty-field.patch fcrozat@suse.com -- handle properly ssh-logins without pam tty field
Patch109:       pam-properly-handle-ssh-logins-without-pam-tty-field.patch
# PATCH-FIX-UPSTREAM fstab-generator-properly-detect-bind-mounts.patch fcrozat@suse.com -- properly detect bind-mounts in fstab-generator
Patch110:       fstab-generator-properly-detect-bind-mounts.patch
# PATCH-FIX-UPSTREAM localectl-support-systems-without-locale-archive.patch fcrozat@suse.com -- localectl now supports systemd without locale-archive file
Patch111:       localectl-support-systems-without-locale-archive.patch
# PATCH-FIX-UPSTREAM logind-capability-making-seats-without-fb.patch fcrozat@suse.com -- allows capability of making seats without fb
Patch112:       logind-capability-making-seats-without-fb.patch
# PATCH-FIX-UPSTREAM service-forking-ignore-exit-status-main-process.patch fcrozat@suse.com -- ignore exit-statis of main process when forking, if specified in unit file
Patch113:       service-forking-ignore-exit-status-main-process.patch
# PATCH-FIX-UPSTREAM systemctl-no-assert-on-reboot-without-dbus.patch fcrozat@suse.com -- don't assert on reboot if dbus isn't there
Patch114:       systemctl-no-assert-on-reboot-without-dbus.patch
# PATCH-FIX-UPSTREAM logind-ignore-non-tty-non-x11-session-on-shutdown.patch fcrozat@suse.com -- ignore non tty non-x11 session on shutdown
Patch115:       logind-ignore-non-tty-non-x11-session-on-shutdown.patch
# PATCH-FIX-UPSTREAM journalctl-quit-on-io-error.patch fcrozat@suse.com -- fix journalctl quit on io error
Patch116:       journalctl-quit-on-io-error.patch
# PATCH-FIX-UPSTREAM do-not-make-sockets-dependent-on-lo.patch fcrozat@suse.com -- do not make sockets dependent on lo interface
Patch117:       do-not-make-sockets-dependent-on-lo.patch
# PATCH-FIX-UPSTREAM shutdown-dont-force-mnt-force-on-final-umount.patch fcrozat@suse.com -- don't force MNT_FORCE on final umount at shutdown
Patch118:       shutdown-dont-force-mnt-force-on-final-umount.patch
# PATCH-FIX-UPSTREAM shutdown-ignore-loop-devices-without-backing-file.patch fcrozat@suse.com -- ignore loop devices without backing file at shutdown
Patch119:       shutdown-ignore-loop-devices-without-backing-file.patch
# PATCH-FIX-UPSTREAM fix-bad-mem-access.patch fcrozat@suse.com -- fix bad memory access
Patch120:       fix-bad-mem-access.patch
# PATCH-FIX-UPSTREAM parse-multiline-env-file.patch fcrozat@suse.com bnc#793411 -- correctly parse multiline environment files
Patch121:       parse-multiline-env-file.patch
# PATCH-FIX-UPSTREAM improve-man-environment.patch fcrozat@suse.com -- improve Environment section in manpage
Patch122:       improve-man-environment.patch
# PATCH-FIX-UPSTREAM tmpfiles-X-type.patch fcrozat@suse.com -- allow to clean directories with removing them
Patch123:       tmpfiles-X-type.patch
# PATCH-FIX-UPSTREAM systemd-fix-merge-ignore-dependencies.patch fcrozat@suse.com bnc#800365 -- fix merging with --ignore-dependencies waiting for dependencies
Patch124:       systemd-fix-merge-ignore-dependencies.patch
# PATCH-FIX-UPSTREAM journalctl-require-argument-for-priority
Patch125:       journalctl-require-argument-for-priority
# PATCH-FIX-UPSTREAM cryptsetup-accept-read-only.patch fcrozat@suse.com -- Accept read-only as well as readonly as parameters for crypttab
Patch126:       cryptsetup-accept-read-only.patch
# PATCH-FIX-OPENSUSE disable-nss-myhostname-warning-bnc-783841.diff lnussel@suse.de -- disable nss-myhostname warning (bnc#783841)
Patch127:       disable-nss-myhostname-warning-bnc-783841.diff
# PATCH-FIX-UPSTREAM early-sync-shutdown.patch fcrozat@suse.com -- Start sync on shutdown early
Patch128:       early-sync-shutdown.patch
# PATCH-FIX-OPENSUSE handle-HOSTNAME.patch fcrozat@suse.com -- handle /etc/HOSTNAME (bnc#803653)
Patch129:       handle-HOSTNAME.patch
# PATCH-FIX-UPSTREAM systemctl-print-wall-on-if-successful.patch fcrozat@suse.com -- Only print on wall if successful
Patch130:       systemctl-print-wall-on-if-successful.patch
# PATCH-FIX-UPSTREAM improve-bash-completion.patch fcrozat@suse.com -- improve bash completion
Patch131:       improve-bash-completion.patch
# PATCH-FIX-UPSTREAM improve-journal-perf.patch fcrozat@suse.com -- improve journal performance
Patch132:       improve-journal-perf.patch
# PATCH-FIX-UPSTREAM support-hybrid-suspend.patch fcrozat@suse.com -- support hybrid suspend
Patch133:       support-hybrid-suspend.patch
# PATCH-FIX-OPENSUSE forward-to-pmutils.patch fcrozat@suse.com bnc#790157 -- forward to pm-utils
Patch134:       forward-to-pmutils.patch
# PATCH-FIX-UPSTREAM rbind-mount.patch fcrozat@suse.com bnc#804575 -- Handle rbind mount point correctly
Patch135:       rbind-mount.patch

# udev patches
# PATCH-FIX-OPENSUSE 1001-Reinstate-TIMEOUT-handling.patch
Patch1001:      1001-Reinstate-TIMEOUT-handling.patch
# PATCH-FIX-OPENSUSE 1002-re-enable-by_path-links-for-ata-devices.patch
Patch1002:      1002-re-enable-by_path-links-for-ata-devices.patch
# PATCH-FIX-OPENSUSE 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch
Patch1003:      1003-rules-create-by-id-scsi-links-for-ATA-devices.patch
# PATCH-FIX-OPENSUSE 1004-udev-netlink-null-rules.patch
Patch1004:      1004-udev-netlink-null-rules.patch
# PATCH-FIX-OPENSUSE 1005-udev-fix-sg-autoload-regression.patch
Patch1005:      1005-udev-fix-sg-autoload-regression.patch
# PATCH-FIX-OPENSUSE 1007-fix-devname-prefix.patch fcrozat@suse.com -- fix modules.devname path, it isn't in /usr
Patch1006:      1006-fix-devname-prefix.patch
# PATCH-FIX-UPSTREAM 1007-udevd-add-missing-to-getopt_long-e.patch
Patch1007:      1007-udevd-add-missing-to-getopt_long-e.patch
# PATCH-FIX-UPSTREAM 1008-udev-path_id-handle-Hyper-V-devices.patch
Patch1008:      1008-udev-path_id-handle-Hyper-V-devices.patch 
# PATCH-FIX-UPSTREAM 1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch
Patch1009:      1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch 
# PATCH-FIX-UPSTREAM 1010-keymap-Add-Samsung-700T.patch
Patch1010:      1010-keymap-Add-Samsung-700T.patch 
# PATCH-FIX-UPSTREAM 1011-libudev-avoid-leak-during-realloc-failure.patch
Patch1011:      1011-libudev-avoid-leak-during-realloc-failure.patch 
# PATCH-FIX-UPSTREAM 1012-libudev-do-not-resolve-attr-device-symlinks.patch
Patch1012:      1012-libudev-do-not-resolve-attr-device-symlinks.patch 
# PATCH-FIX-UPSTREAM 1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch
Patch1013:      1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch 
# PATCH-FIX-UPSTREAM 1014-udev-fix-whitespace.patch
Patch1014:      1014-udev-fix-whitespace.patch 
# PATCH-FIX-UPSTREAM 1015-udev-properly-handle-symlink-removal-by-change-event.patch
Patch1015:      1015-udev-properly-handle-symlink-removal-by-change-event.patch 
# PATCH-FIX-UPSTREAM 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch
Patch1016:      1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch 
# PATCH-FIX-UPSTREAM 1017-udev-use-usec_t-and-now.patch
Patch1017:      1017-udev-use-usec_t-and-now.patch 
# PATCH-FIX-UPSTREAM 1018-keymap-add-aditional-support.patch
Patch1018:      1018-keymap-add-aditional-support.patch
# PATCH-FIX-UPSTREAM 1019-udev-Fix-device-matching-in-the-accelerometer.patch
Patch1019:      1019-udev-Fix-device-matching-in-the-accelerometer.patch
# PATCH-FIX-OPENSUSE 1020-usb_id-some-strange-devices-have-a-very-bogus-or-strage-serial.patch
Patch1020:      1020-usb_id-some-strange-devices-have-a-very-bogus-or-strage-serial.patch
# PATCH-FIX-OPENSUSE 1021-create-default-links-for-primary-cd_dvd-drive.patch
Patch1021:      1021-create-default-links-for-primary-cd_dvd-drive.patch
# PATCH-FIX-UPSTREAM 1022-udev-use-unique-names-for-temporary-files-created-in.patch
Patch1022:      1022-udev-use-unique-names-for-temporary-files-created-in.patch
# PATCH-FIX-UPSTREAM 1023-cdrom_id-add-data-track-count-for-bad-virtual-drive.patch
Patch1023:      1023-cdrom_id-add-data-track-count-for-bad-virtual-drive.patch
# PATCH-FIX-UPSTREAM 1024-udev-usb_id-parse-only-size-bytes-of-the-descriptors.patch
Patch1024:      1024-udev-usb_id-parse-only-size-bytes-of-the-descriptors.patch
# PATCH-FIX-UPSTREAM 1025-udev-expose-new-ISO9660-properties-from-libblkid.patch
Patch1025:      1025-udev-expose-new-ISO9660-properties-from-libblkid.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+
Group:          Development/Libraries/C and C++
Requires:       %{name} = %{version}

%description devel
Development headers and auxiliary files for developing applications for systemd.

%package sysvinit
Summary:        System V init tools
License:        LGPL-2.1+
Group:          System/Base
Requires:       %{name} = %{version}
Provides:       sbin_init
Conflicts:      otherproviders(sbin_init)
Provides:       sysvinit:/sbin/init

%description sysvinit
Drop-in replacement of System V init tools.

%package analyze
Summary:        Tool for processing systemd profiling information
License:        LGPL-2.1+
Group:          System/Base
Requires:       %{name} = %{version}
Requires:       dbus-1-python
Requires:       python-cairo
# for the systemd-analyze split:
Conflicts:      systemd < 44-10

%description analyze
'systemd-analyze blame' lists which systemd unit needed how much time to finish
initialization at boot.
'systemd-analyze plot' renders an SVG visualizing the parallel start of units
at boot.

%package -n %{udevpkgname}
Summary:        A rule-based device node and kernel event manager
License:        GPL-2.0
Group:          System/Kernel
Url:            http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
PreReq:         /bin/pidof /bin/rm /usr/bin/stat %insserv_prereq %fillup_prereq /usr/sbin/groupadd /usr/bin/getent /sbin/mkinitrd
Requires(post): lib%{udevpkgname}%{udev_major}
Conflicts:      systemd < 39
Conflicts:      aaa_base < 11.5
Conflicts:      filesystem < 11.5
Conflicts:      mkinitrd < 2.7.0
Conflicts:      util-linux < 2.16
Conflicts:      ConsoleKit < 0.4.1
Requires:       filesystem
%if 0%{?bootstrap}
Provides:       udev = %{version}
Conflicts:      libudev%{udev_major} = %{version}
%endif

%description -n %{udevpkgname}
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 lib%{udevpkgname}%{udev_major}
Summary:        Dynamic library to access udev device information
License:        LGPL-2.1+
Group:          System/Libraries
Requires:       %{udevpkgname} >= %{version}-%{release}
%if 0%{?bootstrap}
Conflicts:      libudev%{udev_major}
%endif

%description -n lib%{udevpkgname}%{udev_major}
This package contains the dynamic library libudev, which provides
access to udev device information

%package -n lib%{udevpkgname}-devel
Summary:        Development files for libudev
License:        LGPL-2.1+
Group:          Development/Libraries/Other
Requires:       lib%{udevpkgname}%{udev_major} = %{version}-%{release}
%if 0%{?bootstrap}
Provides:       libudev-devel = %{version}
Conflicts:      libudev%{udev_major} = %{version}
%endif

%description -n lib%{udevpkgname}-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 -n libgudev-1_0-0
Summary:        GObject library, to access udev device information
License:        LGPL-2.1+
Group:          System/Libraries
Requires:       lib%{udevpkgname}%{udev_major} = %{version}-%{release}

%description -n libgudev-1_0-0
This package contains the GObject library libgudev, which provides
access to udev device information.

%package -n typelib-1_0-GUdev-1_0
Summary:        GObject library, to access udev device information -- Introspection bindings
License:        LGPL-2.1+
Group:          System/Libraries

%description -n typelib-1_0-GUdev-1_0
This package provides the GObject Introspection bindings for libgudev, which
provides access to udev device information.

%package -n libgudev-1_0-devel
Summary:        Devel package for libgudev
License:        LGPL-2.1+
Group:          Development/Libraries/Other
Requires:       glib2-devel
Requires:       libgudev-1_0-0 = %{version}-%{release}
Requires:       libudev-devel = %{version}-%{release}
Requires:       typelib-1_0-GUdev-1_0 = %{version}-%{release}

%description -n libgudev-1_0-devel
This is the devel package for the GObject library libgudev, which
provides GObject access to udev device information.

%package logger
Summary:        Journal only logging
License:        LGPL-2.1+
Group:          System/Base
Provides:       syslog
Provides:       sysvinit(syslog)
Conflicts:      otherproviders(syslog)

%description logger
This package marks the installation to not use syslog but only the journal.

%endif

%prep
%setup -q -n systemd-%{version}

# only needed for bootstrap
%if 0%{?bootstrap}
cp %{SOURCE7} m4/
%endif

#udev
%patch1001 -p1
%patch1002 -p1
%patch1003 -p1
%patch1004 -p1
%patch1005 -p1
%patch1006 -p1
%patch1007 -p1
%patch1008 -p1
%patch1009 -p1
%patch1010 -p1
%patch1011 -p1
%patch1012 -p1
%patch1013 -p1
%patch1014 -p1
%patch1015 -p1
%patch1016 -p1
%patch1017 -p1
%patch1018 -p1
%patch1019 -p1
%patch1020 -p1
%patch1021 -p1
%patch1022 -p1
%patch1023 -p1
%patch1024 -p1
%patch1025 -p1

#systemd
%patch1 -p1
%patch6 -p1
# don't apply when bootstrapping to not modify configure.in
%if ! 0%{?bootstrap}
%patch7 -p1
%endif
%patch8 -p1
%patch10 -p1
%patch13 -p1
%patch15 -p1
%patch16 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch31 -p1
%patch33 -p1
%patch36 -p1
%patch38 -p1
%patch53 -p1
%patch56 -p1
%patch59 -p1
%patch60 -p1
%patch61 -p1
%patch62 -p1
%patch63 -p1
%patch64 -p1
%patch65 -p1
%patch66 -p1
%patch67 -p1
%patch68 -p1
%patch69 -p1
%patch70 -p1
%patch71 -p1
%patch72 -p1
%patch73 -p1
%patch74 -p1
%patch75 -p1
%patch76 -p1
%patch77 -p1
%patch78 -p1
%patch79 -p1
%patch80 -p1
%patch81 -p1
%patch82 -p1
%patch83 -p1
%patch84 -p1
%patch85 -p1
%patch86 -p1
%patch87 -p1
%patch88 -p1
%patch89 -p1
%patch90 -p1
%patch91 -p1
%patch92 -p1
%patch93 -p1
%patch94 -p1
%patch95 -p1
%patch96 -p1
%patch97 -p1
%patch98 -p1
%patch99 -p1
%patch100 -p1
%patch101 -p1
%patch102 -p1
%patch103 -p1
%patch104 -p1
%patch105 -p1
%patch106 -p1
%patch107 -p1
%patch108 -p1
%patch109 -p1
%patch110 -p1
%patch111 -p1
%patch112 -p1
%patch113 -p1
%patch114 -p1
%patch115 -p1
%patch116 -p1
%patch117 -p1
%patch118 -p1
%patch119 -p1
%patch120 -p1
%patch121 -p1
%patch122 -p1
%patch123 -p1
%patch124 -p1
%patch125 -p1
%patch126 -p1
%patch127 -p1
%patch128 -p1
%patch129 -p1
%patch130 -p1
%patch131 -p1
%patch132 -p1
%patch133 -p1
%patch134 -p1
%patch135 -p1

%build
autoreconf -fiv
# to remove after upgrading to systemd 196+
rm -f man/{systemd.exec.5,logind.conf.5,systemctl.1,systemd-suspend.service.8,systemd.special.7,tmpfiles.d.5}

# prevent pre-generated and distributed files from re-building
find . -name "*.[1-8]" -exec touch '{}' '+';
export V=1
# keep split-usr until all packages have moved their systemd rules to /usr
%configure \
  --with-distro=suse \
  --docdir=%{_docdir}/systemd \
  --with-pamlibdir=/%{_lib}/security \
%if 0%{?bootstrap}
  --disable-gudev \
%else
  --enable-manpages \
  --enable-gtk-doc \
%endif
  --enable-selinux \
  --enable-split-usr \
  --disable-static \
  CFLAGS="%{optflags}"
make %{?_smp_mflags}

%install
%makeinstall

mkdir -p $RPM_BUILD_ROOT/{sbin,lib,bin}
ln -sf %{_bindir}/udevadm $RPM_BUILD_ROOT/sbin/udevadm
ln -sf %{_bindir}/systemd-ask-password $RPM_BUILD_ROOT/bin/systemd-ask-password
ln -sf %{_bindir}/systemctl $RPM_BUILD_ROOT/bin/systemctl
ln -sf %{_prefix}/lib/systemd/systemd-udevd $RPM_BUILD_ROOT/sbin/udevd
%if ! 0%{?bootstrap}
ln -sf systemd-udevd.8 $RPM_BUILD_ROOT/%{_mandir}/man8/udevd.8
%endif
mkdir -p $RPM_BUILD_ROOT/%{_prefix}/usr/lib/firmware/updates
ln -sf /lib/firmware $RPM_BUILD_ROOT/usr/lib/firmware
%if ! 0%{?bootstrap}
install -m755 -D %{S:8} $RPM_BUILD_ROOT/etc/init.d/systemd-journald
%endif

sed -ie "s|@@PREFIX@@|%{_prefix}/lib/udev|g" %{S:1060}
sed -ie "s|@@SYSTEMD@@|%{_prefix}/lib/systemd|g" %{S:1060}
sed -ie "s|@@BINDIR@@|%{_bindir}|g" %{S:1060}
install -m755 -D %{S:1060} $RPM_BUILD_ROOT/etc/init.d/boot.udev
ln -s systemd-udevd.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/udev.service
sed -ie "s|@@PREFIX@@|%{_bindir}|g" %{S:1061}
install -m755 -D %{S:1061} $RPM_BUILD_ROOT/%{_prefix}/lib/udev/write_dev_root_rule
sed -ie "s|@@PREFIX@@|%{_prefix}/lib/udev|g" %{S:1062}
install -m644 -D %{S:1062} $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/systemd-udev-root-symlink.service
mkdir -p $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/basic.target.wants
ln -sf ../systemd-udev-root-symlink.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/basic.target.wants

#workaround for 716939
chmod 644 %{buildroot}%{_bindir}/systemd-analyze
mkdir -p %{buildroot}%{_sysconfdir}/rpm
install -m644 %{S:4} %{buildroot}%{_sysconfdir}/rpm
find %{buildroot} -type f -name '*.la' -delete
mkdir -p %{buildroot}/{sbin,var/lib/systemd/sysv-convert,var/lib/systemd/migrated} %{buildroot}/usr/lib/systemd/{system-generators,user-generators,system-preset,user-preset,system/halt.target.wants,system/kexec.target.wants,system/poweroff.target.wants,system/reboot.target.wants}

install -m755 %{S:3} -D %{buildroot}%{_sbindir}/systemd-sysv-convert
# do not install, code has been fixed, might be useful in the future
#install -m755 %{S:5} %{buildroot}/usr/lib/systemd/system-generators
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
rm -f %{buildroot}/etc/systemd/system/default.target
# aliases for /etc/init.d/*
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/cgroup.service
ln -s systemd-tmpfiles-setup.service %{buildroot}/%{_prefix}/lib/systemd/system/cleanup.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/clock.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/crypto.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/crypto-early.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/device-mapper.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/earlysyslog.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/kbd.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/ldconfig.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/loadmodules.service
install -m644 %{S:2} %{buildroot}/%{_prefix}/lib/systemd/system/localfs.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/localnet.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/proc.service
ln -s systemd-fsck-root.service %{buildroot}/%{_prefix}/lib/systemd/system/rootfsck.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/single.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/swap.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/startpreload.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/stoppreload.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/earlyxdm.service
ln -s systemd-sysctl.service %{buildroot}/%{_prefix}/lib/systemd/system/sysctl.service
ln -s systemd-random-seed-load.service %{buildroot}/%{_prefix}/lib/systemd/system/random.service
# don't mount /tmp as tmpfs for now
rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount

# To avoid making life hard for Factory developers, don't package the
# kernel.core_pattern setting until systemd-coredump is a part of an actual
# systemd release and it's made clear how to get the core dumps out of the
# journal.
rm -f %{buildroot}%{_libdir}/../lib/sysctl.d/coredump.conf

# remove README file for now
rm -f %{buildroot}/etc/init.d/README
%if 0%{?bootstrap}
rm -f %{buildroot}/var/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}/var/log/journal

# 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/default.target.wants
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/dbus.target.wants
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/syslog.target.wants

src="%buildroot/%_libexecdir/systemd/system/getty@.service"
dst="${src/@/@tty1}"
cp "$src" "$dst"
perl -i -pe 's{^# the VT is cleared.*}{}i;s{(^TTYVTDisallocate=.*)}{}' "$dst"

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

%pre
getent group adm >/dev/null || groupadd -r adm
exit 0

%post
/usr/sbin/pam-config -a --systemd >/dev/null 2>&1 || :
/sbin/ldconfig
/usr/bin/systemd-machine-id-setup >/dev/null 2>&1 || :
/usr/lib/systemd/systemd-random-seed save >/dev/null 2>&1 || :
/usr/bin/systemctl daemon-reexec >/dev/null 2>&1 || :

# 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 2> /dev/null)
  if [ -n "$runlevel" ] ; then
    /bin/ln -sf /usr/lib/systemd/system/runlevel$runlevel.target /etc/systemd/system/default.target 2>&1 || :
  fi
fi
# Create default config in /etc at first install.
# Later package updates should not overwrite these settings.
if [ "$1" -eq 1 ]; then
  # Enable these services by default.
  /usr/bin/systemctl enable \
    getty@.service \
    systemd-readahead-collect.service \
    systemd-readahead-replay.service \
    remote-fs.target >/dev/null 2>&1 || :
fi

%triggerpostun -- systemd < 194
# 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

%postun
/sbin/ldconfig
if [ $1 -ge 1 ]; then
        /usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
        /usr/bin/systemctl try-restart systemd-logind.service >/dev/null 2>&1 || :
fi
if [ $1 -eq 0 ]; then
  /usr/sbin/pam-config -d --systemd >/dev/null 2>&1 || :
fi

%preun
if [ $1 -eq 0 ]; then
  /usr/bin/systemctl disable \
    getty@.service \
    systemd-readahead-collect.service \
    systemd-readahead-replay.service \
    remote-fs.target >/dev/null 2>&1 || :
  rm -f /etc/systemd/system/default.target 2>&1 || :
fi

%pretrans -n %{udevpkgname} -p <lua>
if posix.stat("/lib/udev") and not posix.stat("/usr/lib/udev") then
  posix.symlink("/lib/udev", "/usr/lib/udev")
end

%pre -n %{udevpkgname}
if test -L /usr/lib/udev -a /lib/udev -ef /usr/lib/udev ; then
  rm /usr/lib/udev
  mv /lib/udev /usr/lib
  ln -s /usr/lib/udev /lib/udev
elif [ ! -e /lib/udev ]; then
  ln -s /usr/lib/udev /lib/udev
fi
# Create "tape" group which is referenced by 50-udev-default.rules and 60-persistent-storage-tape.rules
/usr/sbin/groupadd -r tape 2> /dev/null || :
# kill daemon if we are not in a chroot
if test -f /proc/1/exe -a -d /proc/1/root ; then
        if test "$(stat -Lc '%%D-%%i' /)" = "$(stat -Lc '%%D-%%i' /proc/1/root)"; then
                systemctl stop systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-udevd.service udev.service udev-control.socket udev-kernel.socket >/dev/null 2>&1 || :
                udevadm control --exit 2>&1 || :
        fi
fi

%post -n %{udevpkgname}
%{fillup_and_insserv -Y boot.udev}
# 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 >/dev/null 2>&1 || :
# cleanup old stuff
rm -f /etc/sysconfig/udev
rm -f /etc/udev/rules.d/20-cdrom.rules
rm -f /etc/udev/rules.d/55-cdrom.rules
rm -f /etc/udev/rules.d/65-cdrom.rules
systemctl daemon-reload >/dev/null 2>&1 || :
# start daemon if we are not in a chroot
if test -f /proc/1/exe -a -d /proc/1/root; then
	if test "$(stat -Lc '%%D-%%i' /)" = "$(stat -Lc '%%D-%%i' /proc/1/root)"; then
		if ! systemctl start systemd-udevd.service >/dev/null 2>&1; then
                        /usr/lib/systemd/systemd-udevd --daemon >/dev/null 2>&1 || :
                fi
	fi
fi

if [ "${YAST_IS_RUNNING}" != "instsys" ]; then
 if [ -e /var/lib/no_initrd_recreation_by_suspend ]; then
   echo "Skipping recreation of existing initial ramdisks, due"
   echo "to presence of /var/lib/no_initrd_recreation_by_suspend"
 elif [ -x /sbin/mkinitrd ]; then
   [ -x /sbin/mkinitrd_setup ] && /sbin/mkinitrd_setup
   /sbin/mkinitrd || :
 fi
fi

%postun -n %{udevpkgname}
%insserv_cleanup
systemctl daemon-reload >/dev/null 2>&1 || :

if [ "${YAST_IS_RUNNING}" != "instsys" ]; then
 if [ -e /var/lib/no_initrd_recreation_by_suspend ]; then
   echo "Skipping recreation of existing initial ramdisks, due"
   echo "to presence of /var/lib/no_initrd_recreation_by_suspend"
 elif [ -x /sbin/mkinitrd ]; then
   [ -x /sbin/mkinitrd_setup ] && /sbin/mkinitrd_setup
   /sbin/mkinitrd || :
 fi
fi

%post -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig

%postun -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig

%if ! 0%{?bootstrap}

%post -n libgudev-1_0-0 -p /sbin/ldconfig

%postun -n libgudev-1_0-0 -p /sbin/ldconfig

%post logger
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 2>&1 || :
fi

%endif

%clean
# rm -rf %{buildroot}

%files
%defattr(-,root,root)
/bin/systemd
/bin/systemd-ask-password
/bin/systemctl
%{_bindir}/hostnamectl
%{_bindir}/localectl
%{_bindir}/systemctl
%{_bindir}/systemd-coredumpctl
%{_bindir}/systemd-delta
%{_bindir}/systemd-notify
%{_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
%{_libdir}/libsystemd-daemon.so.*
%{_libdir}/libsystemd-login.so.*
%{_libdir}/libsystemd-id128.so.*
%{_libdir}/libsystemd-journal.so.*
%{_bindir}/systemd-cgls
%{_bindir}/systemd-cgtop
%{_bindir}/systemd-cat
%dir %{_prefix}/lib/systemd
%dir %{_prefix}/lib/systemd/user
%dir %{_prefix}/lib/systemd/system
%exclude %{_prefix}/lib/systemd/system/systemd-udev*.*
%exclude %{_prefix}/lib/systemd/system/udev.service
%exclude %{_prefix}/lib/systemd/system/systemd-udev-root-symlink.service
%exclude %{_prefix}/lib/systemd/system/*.target.wants/systemd-udev*.*
%exclude %{_prefix}/lib/systemd/system/basic.target.wants/systemd-udev-root-symlink.service
%{_prefix}/lib/systemd/system/*.automount
%{_prefix}/lib/systemd/system/*.service
%{_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
%exclude %{_prefix}/lib/systemd/systemd-udevd
%{_prefix}/lib/systemd/systemd-*
%{_prefix}/lib/systemd/systemd
%dir %{_prefix}/lib/systemd/system-shutdown
%dir %{_prefix}/lib/systemd/system-preset
%dir %{_prefix}/lib/systemd/user-preset
%dir %{_prefix}/lib/systemd/system-generators
%dir %{_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/default.target.wants
%dir %{_prefix}/lib/systemd/system/dbus.target.wants
%dir %{_prefix}/lib/systemd/system/syslog.target.wants
%if ! 0%{?bootstrap}
%{_prefix}/lib/systemd/system-generators/systemd-cryptsetup-generator
%endif
%{_prefix}/lib/systemd/system-generators/systemd-getty-generator
%{_prefix}/lib/systemd/system-generators/systemd-rc-local-generator
%{_prefix}/lib/systemd/system-generators/systemd-fstab-generator
%{_prefix}/lib/systemd/system-generators/systemd-system-update-generator
/%{_lib}/security/pam_systemd.so

%dir %{_libexecdir}/modules-load.d
%dir %{_sysconfdir}/modules-load.d

%dir %{_libexecdir}/tmpfiles.d
%dir %{_sysconfdir}/tmpfiles.d
%{_libexecdir}/tmpfiles.d/*.conf

%dir %{_libexecdir}/binfmt.d
%dir %{_sysconfdir}/binfmt.d

%dir %{_libexecdir}/sysctl.d
%dir %{_sysconfdir}/sysctl.d

%dir %{_sysconfdir}/systemd
%dir %{_sysconfdir}/systemd/system
%dir %{_sysconfdir}/systemd/user
%dir %{_sysconfdir}/xdg/systemd
%dir %{_sysconfdir}/xdg/systemd/user
%config(noreplace) %{_sysconfdir}/systemd/system.conf
%config(noreplace) %{_sysconfdir}/systemd/logind.conf
%config(noreplace) %{_sysconfdir}/systemd/journald.conf
%config(noreplace) %{_sysconfdir}/systemd/user.conf
%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

%{_datadir}/dbus-1/interfaces/org.freedesktop.hostname1.xml
%{_datadir}/dbus-1/interfaces/org.freedesktop.locale1.xml
%{_datadir}/dbus-1/interfaces/org.freedesktop.systemd1.*.xml
%{_datadir}/dbus-1/interfaces/org.freedesktop.timedate1.xml
%{_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
%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
%{_datadir}/systemd

%if ! 0%{?bootstrap}
# Packaged in sysvinit subpackage
%exclude %{_mandir}/man1/init.1*
%exclude %{_mandir}/man8/halt.8*
%exclude %{_mandir}/man8/reboot.8*
%exclude %{_mandir}/man8/shutdown.8*
%exclude %{_mandir}/man8/poweroff.8*
%exclude %{_mandir}/man8/telinit.8*
%exclude %{_mandir}/man8/runlevel.8*
%exclude %{_mandir}/man*/*udev*.[0-9]*

# Packaged in analyze subpackage
%exclude %{_mandir}/man1/systemd-analyze.1*

%{_mandir}/man1/*.1*
%{_mandir}/man3/*.3*
%{_mandir}/man5/*.5*
%{_mandir}/man7/*.7*
%{_mandir}/man8/*.8*
%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
%if ! 0%{?bootstrap}
%{_prefix}/lib/udev/rules.d/73-seat-numlock.rules
%endif
%{_prefix}/lib/udev/rules.d/99-systemd.rules
%if ! 0%{?bootstrap}
%{_prefix}/lib/udev/numlock-on
%endif
%dir %{_sysconfdir}/bash_completion.d
%{_sysconfdir}/bash_completion.d/systemd-bash-completion.sh
%{_sysconfdir}/rpm/macros.systemd
%dir /var/lib/systemd
%dir /var/lib/systemd/sysv-convert
%dir /var/lib/systemd/migrated

%files devel
%defattr(-,root,root,-)
%{_libdir}/libsystemd-daemon.so
%{_libdir}/libsystemd-login.so
%{_libdir}/libsystemd-id128.so
%{_libdir}/libsystemd-journal.so
%dir %{_includedir}/systemd
%{_includedir}/systemd/sd-login.h
%{_includedir}/systemd/sd-daemon.h
%{_includedir}/systemd/sd-id128.h
%{_includedir}/systemd/sd-journal.h
%{_includedir}/systemd/sd-messages.h
%{_includedir}/systemd/sd-shutdown.h
%{_datadir}/pkgconfig/systemd.pc
%{_libdir}/pkgconfig/libsystemd-daemon.pc
%{_libdir}/pkgconfig/libsystemd-login.pc
%{_libdir}/pkgconfig/libsystemd-id128.pc
%{_libdir}/pkgconfig/libsystemd-journal.pc

%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 analyze
%defattr(-,root,root)
%attr(0755,root,root) /usr/bin/systemd-analyze
%if ! 0%{?bootstrap}
%{_mandir}/man1/systemd-analyze.1*
%endif

%files -n %{udevpkgname}
%defattr(-,root,root)
/sbin/udevd
/sbin/udevadm
# keep for compatibility
%ghost /lib/udev
%{_bindir}/udevadm
%{_prefix}/lib/firmware
%dir %{_prefix}/lib/udev/
%{_prefix}/lib/udev/accelerometer
%{_prefix}/lib/udev/ata_id
%{_prefix}/lib/udev/cdrom_id
%{_prefix}/lib/udev/collect
%{_prefix}/lib/udev/findkeyboards
%{_prefix}/lib/udev/keymap
%{_prefix}/lib/udev/mtd_probe
%{_prefix}/lib/udev/scsi_id
%{_prefix}/lib/udev/v4l_id
%{_prefix}/lib/udev/write_dev_root_rule
%dir %{_prefix}/lib/udev/keymaps
%{_prefix}/lib/udev/keymaps/*
%{_prefix}/lib/udev/keyboard-force-release.sh
%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/73-seat-numlock.rules
%exclude %{_prefix}/lib/udev/rules.d/99-systemd.rules
%{_prefix}/lib/udev/rules.d/*.rules
%{_sysconfdir}/init.d/boot.udev
%dir %{_sysconfdir}/udev/
%dir %{_sysconfdir}/udev/rules.d/
%config(noreplace) %{_sysconfdir}/udev/udev.conf
%if ! 0%{?bootstrap}
%{_mandir}/man?/*udev*.[0-9]*
%endif
%dir %{_prefix}/lib/systemd/system
%{_prefix}/lib/systemd/systemd-udevd
%{_prefix}/lib/systemd/system/systemd-udev-root-symlink.service
%{_prefix}/lib/systemd/system/basic.target.wants/systemd-udev-root-symlink.service
%{_prefix}/lib/systemd/system/*udev*.service
%{_prefix}/lib/systemd/system/systemd-udevd*.socket
%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

%files -n lib%{udevpkgname}%{udev_major}
%defattr(-,root,root)
%{_libdir}/libudev.so.*

%files -n lib%{udevpkgname}-devel
%defattr(-,root,root)
%{_includedir}/libudev.h
%{_libdir}/libudev.so
%{_datadir}/pkgconfig/udev.pc
%{_libdir}/pkgconfig/libudev.pc
%if ! 0%{?bootstrap}
%dir %{_datadir}/gtk-doc
%dir %{_datadir}/gtk-doc/html
%dir %{_datadir}/gtk-doc/html/libudev
%{_datadir}/gtk-doc/html/libudev/*
%endif

%if ! 0%{?bootstrap}
%files -n libgudev-1_0-0
%defattr(-,root,root)
%{_libdir}/libgudev-1.0.so.*

%files -n typelib-1_0-GUdev-1_0
%defattr(-,root,root)
%{_libdir}/girepository-1.0/GUdev-1.0.typelib

%files -n libgudev-1_0-devel
%defattr(-,root,root)
%dir %{_includedir}/gudev-1.0
%dir %{_includedir}/gudev-1.0/gudev
%{_includedir}/gudev-1.0/gudev/*.h
%{_libdir}/libgudev-1.0.so
%{_libdir}/pkgconfig/gudev-1.0.pc
%dir %{_datadir}/gtk-doc
%dir %{_datadir}/gtk-doc/html
%dir %{_datadir}/gtk-doc/html/gudev
%{_datadir}/gtk-doc/html/gudev/*
%{_datadir}/gir-1.0/GUdev-1.0.gir

%files logger
%defattr(-,root,root)
%dir /var/log/journal
/var/log/README
/etc/init.d/systemd-journald

%endif

%changelog
openSUSE Build Service is sponsored by