packaging: add packaging for systemd v255
authorŁukasz Stelmach <l.stelmach@samsung.com>
Wed, 3 Apr 2024 14:01:50 +0000 (16:01 +0200)
committerŁukasz Stelmach <l.stelmach@samsung.com>
Wed, 29 May 2024 22:07:11 +0000 (00:07 +0200)
Change-Id: Ia0f22c8846e88313549ac92fa3239ceda9e2c999
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
.gbs.conf [new file with mode: 0644]
packaging/baselibs.conf [new file with mode: 0644]
packaging/org.tizen.system.conf [new file with mode: 0644]
packaging/systemd-rpmlintrc [new file with mode: 0644]
packaging/systemd.manifest [new file with mode: 0644]
packaging/systemd.spec [new file with mode: 0644]

diff --git a/.gbs.conf b/.gbs.conf
new file mode 100644 (file)
index 0000000..2290232
--- /dev/null
+++ b/.gbs.conf
@@ -0,0 +1,3 @@
+[general]
+upstream_branch = upstream
+upstream_tag = v${upstreamversion}
diff --git a/packaging/baselibs.conf b/packaging/baselibs.conf
new file mode 100644 (file)
index 0000000..c7ec9f0
--- /dev/null
@@ -0,0 +1,2 @@
+libsystemd
+libgudev
diff --git a/packaging/org.tizen.system.conf b/packaging/org.tizen.system.conf
new file mode 100644 (file)
index 0000000..ca6b54b
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+       <policy user="system_fw">
+               <allow send_path="/org/tizen/system"
+                       send_interface="org.tizen.system.Booting"
+                       send_member="BootingDone"
+                       send_type="signal"/>
+       </policy>
+       <policy context="default">
+               <deny send_path="/org/tizen/system"
+                       send_interface="org.tizen.system.Booting"
+                       send_member="BootingDone"
+                       send_type="signal"/>
+       </policy>
+</busconfig>
diff --git a/packaging/systemd-rpmlintrc b/packaging/systemd-rpmlintrc
new file mode 100644 (file)
index 0000000..355b849
--- /dev/null
@@ -0,0 +1,12 @@
+# there is a lot of different manual pages sourcing others,
+# mostly in many-to-one manner
+addFilter('systemd-docs\..* files-duplicate /usr/share/man')
+
+# Unlike other packages which should not install their units config
+# files in /etc/systemd needs to put a few files there.
+addFilter('systemd\..* tizen-filelist-forbidden-systemd-userdirs /etc/systemd/[A-Za-z0-9]+\.conf')
+addFilter('systemd\..* tizen-filelist-forbidden-systemd-userdirs /etc/systemd/system ')
+addFilter('systemd\..* tizen-filelist-forbidden-systemd-userdirs /etc/systemd/user ')
+
+# TODO:
+#systemd.x86_64: W: non-conffile-in-etc /etc/rpm/macros.systemd
diff --git a/packaging/systemd.manifest b/packaging/systemd.manifest
new file mode 100644 (file)
index 0000000..3a30888
--- /dev/null
@@ -0,0 +1,10 @@
+<manifest>
+ <request>
+    <domain name="_"/>
+ </request>
+ <assign>
+   <filesystem path="/etc/locale.conf" label="System::Shared" />
+   <filesystem path="/usr/lib/systemd/systemd-coredump" label="System" exec_label="System" />
+   <filesystem path="/usr/lib/systemd/systemd-cgroups-agent" exec_label="System" />
+ </assign>
+</manifest>
diff --git a/packaging/systemd.spec b/packaging/systemd.spec
new file mode 100644 (file)
index 0000000..aedb894
--- /dev/null
@@ -0,0 +1,793 @@
+# "enable foo" will turn into --enable-foo or --disable-foo
+# depending "with_foo" macro
+%define enable() %{expand:%%{?with_%{1}:--enable-%{1}}%%{!?with_%{1}:--disable-%{1}}}
+
+%define WITH_BACKLIGHT 0
+%define WITH_BASH_COMPLETION 0
+%define WITH_COREDUMP 0
+%define WITH_DOC 0
+%define WITH_HOSTNAMED 0
+%define WITH_MACHINED 0
+%define WITH_OOMD 0
+%define WITH_RANDOMSEED 0
+%define WITH_RFKILL 0
+%define WITH_TIMEDATED 0
+%define WITH_VIRT 1
+%define WITH_ZSH_COMPLETION 0
+
+%define build_dir _build
+%define dbuspolicydir %{_datadir}/dbus-1
+
+# The 'meson' macro is defined in rpm macros, but it uses features from rpm 4.15 ({shrink, set_build_flags)
+# Below is a version suitable for our purposes
+%define meson \
+       CFLAGS="${CFLAGS:-%optflags}" \
+       export CFLAGS \
+       %{__meson} \\\
+               --buildtype=plain \\\
+               --prefix=%{_prefix} \\\
+               --libdir=%{_libdir} \\\
+               --libexecdir=%{_libexecdir} \\\
+               --bindir=%{_bindir} \\\
+               --sbindir=%{_sbindir} \\\
+               --includedir=%{_includedir} \\\
+               --datadir=%{_datadir} \\\
+               --mandir=%{_mandir} \\\
+               --infodir=%{_infodir} \\\
+               --localedir=%{_datadir}/locale \\\
+               --sysconfdir=%{_sysconfdir} \\\
+               --localstatedir=%{_localstatedir} \\\
+               --sharedstatedir=%{_sharedstatedir} \\\
+               --wrap-mode=%{__meson_wrap_mode} \\\
+               %{_vpath_builddir}
+
+# Ninja macros below are defined for ninja in e.g. fedora distro, but
+# so far they are not provided by Tizen's ninja package.
+%define __ninja %{_bindir}/ninja
+%define __ninja_common_opts -v %{?_smp_flags}
+%define ninja_build %{__ninja} %{__ninja_common_opts}
+%define ninja_install DESTDIR=%{buildroot} %{__ninja} install %{__ninja_common_opts}
+
+Name:           systemd
+Version:        255
+Release:        0%{?release_flags}
+# For a breakdown of the licensing, see README
+License:        LGPL-2.1+ and GPL-2.0+
+Summary:        A System and Service Manager
+Url:            http://www.freedesktop.org/wiki/Software/systemd
+Group:          Base/Startup
+Source0:        https://github.com/systemd/systemd/archive/v%{version}.tar.gz
+Source2:        %{name}-rpmlintrc
+Source3:        test-runner.c
+Source4:        wait-default-target.sh
+Source5:        wait-delayed-target.sh
+Source6:        org.tizen.system.conf
+Source7:        send-booting-done.c
+Source8:        wait-target-done.c
+Source9:        delayed-target-trigger.sh
+Source1001:     systemd.manifest
+BuildRequires:  gperf
+BuildRequires:  intltool >= 0.40.0
+BuildRequires:  libacl-devel
+BuildRequires:  libblkid-devel >= 2.20
+BuildRequires:  libcap-devel
+BuildRequires:  libgcrypt-devel
+BuildRequires:  libkmod-devel >= 14
+%if 0%{?WITH_DOC}
+BuildRequires:  xsltproc
+BuildRequires:  docbook-xsl-stylesheets
+%endif
+BuildRequires:  pam-devel
+BuildRequires:  pkgconfig
+# BuildRequires:  pkgconfig(dbus-1)     # for remove circular dependency on OBS
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(liblzma)
+BuildRequires:  pkgconfig(libkmod)
+BuildRequires:  pkgconfig(mount)
+BuildRequires:  pkgconfig(libdbuspolicy1)
+BuildRequires:  pkgconfig(dlog-redirect-stdout)
+BuildRequires:  meson
+BuildRequires:  acl
+BuildRequires:  python
+BuildRequires:  python3-jinja2
+# Requires:       dbus                  # for remove circular dependency on OBS
+Requires:       acl
+Requires:       filesystem
+Requires(post): coreutils
+Requires(pre):  coreutils
+Requires(pre):  /usr/bin/getent
+Requires(pre):  /usr/sbin/groupadd
+Requires(post): %{_sbindir}/update-alternatives
+Requires(preun): %{_sbindir}/update-alternatives
+
+Obsoletes:      SysVinit < 2.86-24
+Obsoletes:      sysvinit < 2.86-24
+Provides:       SysVinit = 2.86-24
+Provides:       sysvinit = 2.86-24
+Provides:       /bin/systemctl
+Provides:       /sbin/shutdown
+Provides:       udev = %{version}
+Obsoletes:      udev < 183
+
+%description
+systemd is a system and service manager for Linux, compatible with
+SysV and LSB init scripts. 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 -n libsystemd
+License:        LGPL-2.1+
+Summary:        Systemd libraries
+Group:          Base/Startup
+Obsoletes:      libudev < 183
+Provides:       libudev = %{version}
+Obsoletes:      systemd < 185-4
+Conflicts:      systemd < 185-4
+
+%description -n libsystemd
+Libraries for systemd and udev, as well as the systemd PAM module.
+
+%package devel
+License:        LGPL-2.1+
+Summary:        Development headers for systemd
+Requires:       %{name} = %{version}
+Requires:       libsystemd = %{version}
+Provides:       libudev-devel = %{version}
+Obsoletes:      libudev-devel < 183
+
+%description devel
+Development headers and auxiliary files for developing applications for systemd.
+
+%package analyze
+License:        LGPL-2.1+
+Summary:        Tool for processing systemd profiling information
+Requires:       %{name} = %{version}
+Obsoletes:      systemd < 38-5
+
+%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 tests
+License:        LGPL-2.1+ and BSD-2-Clause
+Summary:        Set of tests for sd-bus component
+Requires:       %{name} = %{version}
+
+%description tests
+This package is part of 'dbus-integratnion-tests' framework and contains set of tests
+for sd-bus component (DBUS API C library).
+
+%prep
+%setup -q
+%build
+cp %{SOURCE1001} .
+cp %{SOURCE3} .
+cp %{SOURCE7} .
+cp %{SOURCE8} .
+
+%define _vpath_srcdir .
+%define _vpath_builddir %{build_dir}
+CFLAGS="${CFLAGS:-%optflags} -fstack-clash-protection"
+%meson \
+       -Dpamconfdir=%{_sysconfdir}/pam.d \
+       -Ddbus-interfaces-dir=no \
+%if ! 0%{?WITH_VIRT}
+       -Dvirt=false \
+%endif
+%if ! 0%{?WITH_OOMD}
+       -Doomd=false \
+%endif
+%if ! 0%{?WITH_RANDOMSEED}
+       -Drandomseed=false \
+%endif
+%if ! 0%{?WITH_COREDUMP}
+       -Dcoredump=false \
+%endif
+%if ! 0%{?WITH_BACKLIGHT}
+       -Dbacklight=false \
+%endif
+%if ! 0%{?WITH_TIMEDATED}
+       -Dtimedated=false \
+%endif
+%if ! 0%{?WITH_RFKILL}
+       -Drfkill=false \
+%endif
+       -Defi=false \
+       -Dukify=false \
+       -Dhibernate=false \
+       -Dldconfig=false \
+       -Dhwdb=false \
+       -Dsysusers=false \
+       -Dfirstboot=false \
+       -Dpolkit=false \
+       -Dtimesyncd=false \
+       -Dresolve=false \
+       -Dnetworkd=false \
+%if ! 0%{?WITH_MACHINED}
+       -Dmachined=false \
+%endif
+%if ! 0%{?WITH_HOSTNAMED}
+       -Dhostnamed=false \
+%endif
+       -Dimportd=false \
+       -Denvironment-d=false \
+       -Dnss-systemd=false \
+       -Dgcrypt=false \
+%if ! 0%{?WITH_DOC}
+       -Dman=false \
+%endif
+       -Dportabled=false \
+       -Dpstore=false \
+       -Drpmmacrosdir=%{_sysconfdir}/rpm/ \
+       -Dsysvinit-path="" \
+       -Dsysvrcnd-path="" \
+       -Dsmack-run-label=System::Privileged \
+       -Dinstall-tests=true \
+       -Ddefault-hierarchy=legacy \
+       -Dxdg-autostart=false \
+       -Db_pie=true
+%meson_build
+
+# compile test-runner for 'dbus-integration-test' framework
+%__cc %{_builddir}/%{name}-%{version}/test-runner.c -o %{_builddir}/%{name}-%{version}/systemd-tests
+%__cc -fPIE -pie %{_builddir}/%{name}-%{version}/send-booting-done.c -o %{_builddir}/%{name}-%{version}/send-booting-done -Isrc -L%{_builddir}/%{name}-%{version}/%{build_dir} -lsystemd
+%__cc -fPIE -pie %{_builddir}/%{name}-%{version}/wait-target-done.c \
+    -o %{_builddir}/%{name}-%{version}/wait-target-done \
+    -DRELATIVE_SOURCE_PATH=\"\" -DSIZEOF_TIME_T=4 -D_GNU_SOURCE -DHAVE_REALLOCARRAY \
+    -Isrc/fundamental -Isrc/basic -Isrc/systemd \
+    -Wl,-rpath=%{_libdir}/systemd \
+    -L%{_builddir}/%{name}-%{version}/%{build_dir} \
+    -L%{_builddir}/%{name}-%{version}/%{build_dir}/src/shared \
+    -lsystemd -lsystemd-shared-%{version}
+
+%install
+%meson_install
+%find_lang %{name}
+cat <<EOF >> systemd.lang
+%lang(be) /usr/lib/systemd/catalog/systemd.be.catalog
+%lang(be) /usr/lib/systemd/catalog/systemd.be@latin.catalog
+%lang(bg) /usr/lib/systemd/catalog/systemd.bg.catalog
+%lang(da) /usr/lib/systemd/catalog/systemd.da.catalog
+%lang(de) /usr/lib/systemd/catalog/systemd.de.catalog
+%lang(fr) /usr/lib/systemd/catalog/systemd.fr.catalog
+%lang(hr) /usr/lib/systemd/catalog/systemd.hr.catalog
+%lang(hu) /usr/lib/systemd/catalog/systemd.hu.catalog
+%lang(it) /usr/lib/systemd/catalog/systemd.it.catalog
+%lang(ko) /usr/lib/systemd/catalog/systemd.ko.catalog
+%lang(pl) /usr/lib/systemd/catalog/systemd.pl.catalog
+%lang(pt_BR) /usr/lib/systemd/catalog/systemd.pt_BR.catalog
+%lang(ru) /usr/lib/systemd/catalog/systemd.ru.catalog
+%lang(sr) /usr/lib/systemd/catalog/systemd.sr.catalog
+%lang(zh) /usr/lib/systemd/catalog/systemd.zh_CN.catalog
+%lang(zh) /usr/lib/systemd/catalog/systemd.zh_TW.catalog
+EOF
+
+# udev links
+/usr/bin/mkdir -p %{buildroot}/%{_sbindir}
+/usr/bin/ln -s ../bin/udevadm %{buildroot}%{_sbindir}/udevadm
+/usr/bin/mkdir -p %{buildroot}%{_prefix}/lib/firmware/updates
+
+# Create SysV compatibility symlinks. systemctl/systemd are smart
+# enough to detect in which way they are called.
+/usr/bin/ln -s ../lib/systemd/systemd %{buildroot}%{_bindir}/systemd
+/usr/bin/ln -s ../bin/systemctl %{buildroot}%{_sbindir}/telinit
+/usr/bin/ln -s ../bin/systemctl %{buildroot}%{_sbindir}/runlevel
+
+# legacy links
+/usr/bin/ln -s loginctl %{buildroot}%{_bindir}/systemd-loginctl
+
+# We create all wants links manually at installation time to make sure
+# they are not owned and hence overriden by rpm after the used deleted
+# them.
+/usr/bin/rm -fr %{buildroot}%{_sysconfdir}/systemd/system/*.target.wants
+
+# Make sure these directories are properly owned
+/usr/bin/mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/basic.target.wants
+/usr/bin/mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/default.target.wants
+/usr/bin/mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/syslog.target.wants
+
+# Make sure the user generators dir exists too
+/usr/bin/mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-generators
+/usr/bin/mkdir -p %{buildroot}%{_prefix}/lib/systemd/user-generators
+
+# Create new-style configuration files so that we can ghost-own them
+/usr/bin/touch %{buildroot}%{_sysconfdir}/hostname
+/usr/bin/touch %{buildroot}%{_sysconfdir}/vconsole.conf
+/usr/bin/touch %{buildroot}%{_sysconfdir}/locale.conf
+/usr/bin/touch %{buildroot}%{_sysconfdir}/machine-id
+/usr/bin/touch %{buildroot}%{_sysconfdir}/machine-info
+/usr/bin/touch %{buildroot}%{_sysconfdir}/timezone
+
+/usr/bin/mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-preset/
+/usr/bin/mkdir -p %{buildroot}%{_prefix}/lib/systemd/user-preset/
+
+# Make sure the shutdown/sleep drop-in dirs exist
+/usr/bin/mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-shutdown/
+/usr/bin/mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-sleep/
+
+# Make sure the NTP units dir exists
+/usr/bin/mkdir -p %{buildroot}%{_prefix}/lib/systemd/ntp-units.d/
+
+# Install modprobe fragment
+/usr/bin/mkdir -p %{buildroot}%{_sysconfdir}/modprobe.d/
+
+install -m 755 -d %{buildroot}/%{_prefix}/lib/systemd/system
+
+rm -rf %{buildroot}/%{_docdir}/%{name}
+
+# Allow replacing systemd-shutdown and some scripts with tizen-specific variant
+mv %{buildroot}%{_prefix}/lib/systemd/systemd-shutdown %{buildroot}%{_prefix}/lib/systemd/systemd-shutdown-original
+mv %{buildroot}%{_sbindir}/reboot %{buildroot}%{_sbindir}/reboot-original
+mv %{buildroot}%{_sbindir}/halt %{buildroot}%{_sbindir}/halt-original
+mv %{buildroot}%{_sbindir}/poweroff %{buildroot}%{_sbindir}/poweroff-original
+mv %{buildroot}%{_sbindir}/shutdown %{buildroot}%{_sbindir}/shutdown-original
+touch %{buildroot}%{_prefix}/lib/systemd/systemd-shutdown
+touch %{buildroot}%{_sbindir}/reboot
+touch %{buildroot}%{_sbindir}/halt
+touch %{buildroot}%{_sbindir}/poweroff
+touch %{buildroot}%{_sbindir}/shutdown
+
+# Disable some useless services in Tizen
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/system/sysinit.target.wants/dev-hugepages.mount
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/system/sysinit.target.wants/sys-fs-fuse-connections.mount
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/system/sysinit.target.wants/systemd-binfmt.service
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/system/sysinit.target.wants/systemd-modules-load.service
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/system/sysinit.target.wants/systemd-ask-password-console.path
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/system/sysinit.target.wants/systemd-update-utmp.service
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/systemd-ask-password-wall.path
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/system/systemd-update-utmp.service
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/system/systemd-volatile-root.service
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/system/systemd-tmpfiles-clean.timer
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/system/systemd-tmpfiles-clean.service
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/system/timers.target.wants/systemd-tmpfiles-clean.timer
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/user/systemd-tmpfiles-clean.timer
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/user/systemd-tmpfiles-clean.service
+rm -rf %{buildroot}/%{_prefix}/lib/systemd/user/systemd-tmpfiles-setup.service
+
+# Drop kernel-install as it's not used by Tizen kernel scripts
+rm -rf %{buildroot}/%{_bindir}/kernel-install
+rm -rf %{buildroot}/%{_prefix}/lib/kernel
+
+# Exclude ELF binaries
+rm -f %{buildroot}/%{_prefix}/lib/systemd/systemd-update-utmp
+rm -f %{buildroot}/%{_prefix}/lib/systemd/systemd-volatile-root
+rm -f %{buildroot}/%{_prefix}/lib/systemd/systemd-remount-fs
+rm -f %{buildroot}/%{_prefix}/lib/systemd/system-generators/systemd-fstab-generator
+rm -f %{buildroot}/%{_prefix}/lib/systemd/system-generators/systemd-debug-generator
+rm -f %{buildroot}/%{_prefix}/lib/systemd/system-generators/systemd-gpt-auto-generator
+rm -f %{buildroot}/%{_prefix}/lib/systemd/system-generators/systemd-run-generator
+
+# Preapre tests for 'dbus-integration-test' framework
+install -D -m 755 %{_builddir}/%{name}-%{version}/systemd-tests %{buildroot}%{_prefix}/lib/dbus-tests/runner/systemd-tests
+mkdir -p %{buildroot}%{_prefix}/lib/dbus-tests/test-suites/systemd-tests/
+
+# Install send-booting-done helper
+install -D -m 755 %{_builddir}/%{name}-%{version}/send-booting-done %{buildroot}%{_prefix}/lib/systemd/
+install -D -m 755 %{_builddir}/%{name}-%{version}/wait-target-done %{buildroot}%{_prefix}/lib/systemd/
+
+# Shell Completion
+%if ! 0%{?WITH_BASH_COMPLETION}
+rm -rf %{buildroot}/%{_datadir}/bash-completion/*
+%endif
+%if ! 0%{?WITH_ZSH_COMPLETION}
+rm -rf %{buildroot}/%{_datadir}/zsh/site-functions/*
+%endif
+
+mkdir -p %{buildroot}/%{_localstatedir}/log/journal
+
+# Delayed target
+install -m 0755 %{SOURCE4} %{buildroot}%{_bindir}/wait-default-target.sh
+install -m 0755 %{SOURCE5} %{buildroot}%{_bindir}/wait-delayed-target.sh
+install -m 0644 %{SOURCE6} %{buildroot}%{dbuspolicydir}/system.d/org.tizen.system.conf
+install -m 0755 %{SOURCE9} %{buildroot}%{_bindir}/delayed-target-trigger.sh
+
+install -d -m 0755 %{buildroot}/%{_prefix}/lib/systemd/user/default.target.wants
+ln -s ../user-default-target-done.service %{buildroot}/%{_prefix}/lib/systemd/user/default.target.wants/user-default-target-done.service
+ln -s ../user-delayed-target-trigger.service %{buildroot}/%{_prefix}/lib/systemd/user/default.target.wants/user-delayed-target-trigger.service
+install -d -m 0755 %{buildroot}/%{_prefix}/lib/systemd/user/delayed.target.wants
+ln -s ../user-delayed-target-done.service %{buildroot}/%{_prefix}/lib/systemd/user/delayed.target.wants/user-delayed-target-done.service
+
+# end of install
+%pre
+/usr/bin/getent group cdrom >/dev/null 2>&1 || /usr/sbin/groupadd -r -g 11 cdrom >/dev/null 2>&1 || :
+/usr/bin/getent group tape >/dev/null 2>&1 || /usr/sbin/groupadd -r -g 33 tape >/dev/null 2>&1 || :
+/usr/bin/getent group dialout >/dev/null 2>&1 || /usr/sbin/groupadd -r -g 18 dialout >/dev/null 2>&1 || :
+/usr/bin/getent group floppy >/dev/null 2>&1 || /usr/sbin/groupadd -r -g 19 floppy >/dev/null 2>&1 || :
+/usr/bin/systemctl stop systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-udevd.service >/dev/null 2>&1 || :
+
+# Rename configuration files that changed their names
+/usr/bin/mv -n %{_sysconfdir}/systemd/systemd-logind.conf %{_sysconfdir}/systemd/logind.conf >/dev/null 2>&1 || :
+/usr/bin/mv -n %{_sysconfdir}/systemd/systemd-journald.conf %{_sysconfdir}/systemd/journald.conf >/dev/null 2>&1 || :
+
+%post
+/usr/bin/systemd-machine-id-setup > /dev/null 2>&1 || :
+%if 0%{?WITH_RANDOMSEED}
+/usr/lib/systemd/systemd-random-seed save > /dev/null 2>&1 || :
+%endif
+/usr/bin/systemctl daemon-reexec > /dev/null 2>&1 || :
+/usr/bin/systemctl start systemd-udevd.service >/dev/null 2>&1 || :
+/usr/bin/mkdir -p /etc/systemd/network
+/usr/bin/ln -sf /dev/null /etc/systemd/network/99-default.link
+
+# Set the smack label of executable binary tools
+chsmack %{_bindir}/busctl -a "System::Tools"
+%if %{?WITH_MACHINED}
+chsmack %{_bindir}/machinectl -a "System::Tools"
+%endif
+chsmack %{_bindir}/systemd-run -a "System::Tools"
+%if 0%{?WITH_HOSTNAMED}
+chsmack %{_bindir}/hostnamectl -a "System::Tools"
+%endif
+chsmack %{_bindir}/localectl -a "System::Tools"
+%if 0%{?WITH_COREDUMP}
+chsmack %{_bindir}/coredumpctl -a "System::Tools"
+%endif
+%if 0%{?WITH_TIMEDATED}
+chsmack %{_bindir}/timedatectl -a "System::Tools"
+%endif
+chsmack %{_bindir}/systemd -a "System::Tools"
+chsmack %{_bindir}/systemctl -a "System::Tools"
+chsmack %{_bindir}/systemd-notify -a "System::Tools"
+chsmack %{_bindir}/systemd-ask-password -a "System::Tools"
+chsmack %{_bindir}/systemd-tty-ask-password-agent -a "System::Tools"
+chsmack %{_bindir}/systemd-machine-id-setup -a "System::Tools"
+chsmack %{_bindir}/systemd-socket-activate -a "System::Tools"
+chsmack %{_bindir}/loginctl -a "System::Tools"
+chsmack %{_bindir}/systemd-loginctl -a "System::Tools"
+chsmack %{_bindir}/journalctl -a "System::Tools"
+chsmack %{_bindir}/systemd-tmpfiles -a "System::Tools"
+chsmack %{_bindir}/systemd-nspawn -a "System::Tools"
+chsmack %{_bindir}/systemd-stdio-bridge -a "System::Tools"
+chsmack %{_bindir}/systemd-cat -a "System::Tools"
+chsmack %{_bindir}/systemd-cgls -a "System::Tools"
+chsmack %{_bindir}/systemd-cgtop -a "System::Tools"
+chsmack %{_bindir}/systemd-delta -a "System::Tools"
+chsmack %{_bindir}/systemd-inhibit -a "System::Tools"
+chsmack %{_bindir}/udevadm -a "System::Tools"
+chsmack %{_bindir}/systemd-escape -a "System::Tools"
+chsmack %{_bindir}/systemd-path -a "System::Tools"
+chsmack %{_prefix}/lib/systemd/* -a "System::Tools"
+%if 0%{?WITH_VIRT}
+chsmack %{_bindir}/systemd-detect-virt -a "System::Tools"
+%endif
+
+update-alternatives --install %{_prefix}/lib/systemd/systemd-shutdown systemd-shutdown %{_prefix}/lib/systemd/systemd-shutdown-original 100 || :
+update-alternatives --install %{_sbindir}/reboot reboot %{_sbindir}/reboot-original 100 || :
+update-alternatives --install %{_sbindir}/halt halt %{_sbindir}/halt-original 100 || :
+update-alternatives --install %{_sbindir}/poweroff poweroff %{_sbindir}/poweroff-original 100 || :
+update-alternatives --install %{_sbindir}/shutdown shutdown %{_sbindir}/shutdown-original 100 || :
+
+%postun
+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
+       update-alternatives --remove systemd-shutdown %{_prefix}/lib/systemd/systemd-shutdown-original
+       update-alternatives --remove reboot %{_sbindir}/reboot-original
+       update-alternatives --remove halt %{_sbindir}/halt-original
+       update-alternatives --remove poweroff %{_sbindir}/poweroff-original
+       update-alternatives --remove shutdown %{_sbindir}/shutdown-original
+fi
+
+%preun
+if [ $1 -eq 0 ] ; then
+       /usr/bin/systemctl disable \
+               getty@.service \
+               remote-fs.target \
+               systemd-readahead-replay.service \
+               systemd-readahead-collect.service >/dev/null 2>&1 || :
+fi
+
+%post -n libsystemd -p /sbin/ldconfig
+%postun -n libsystemd  -p /sbin/ldconfig
+
+%lang_package
+
+%files
+%manifest %{name}.manifest
+%license LICENSE.LGPL2.1  LICENSE.GPL2
+%config %{_sysconfdir}/pam.d/systemd-user
+%{_bindir}/busctl
+%if 0%{?WITH_MACHINED}
+%{_bindir}/machinectl
+%endif
+%{_bindir}/systemd-run
+%if 0%{?WITH_HOSTNAMED}
+%{_bindir}/hostnamectl
+%endif
+%{_bindir}/localectl
+%if 0%{?WITH_COREDUMP}
+%{_bindir}/coredumpctl
+%endif
+%if 0%{?WITH_TIMEDATED}
+%{_bindir}/timedatectl
+%endif
+%dir %{_sysconfdir}/systemd
+%dir %{_sysconfdir}/systemd/system
+%dir %{_sysconfdir}/systemd/user
+%dir %{_sysconfdir}/tmpfiles.d
+%dir %{_sysconfdir}/sysctl.d
+%dir %{_sysconfdir}/modules-load.d
+%dir %{_sysconfdir}/binfmt.d
+%if 0%{?WITH_BASH_COMPLETION}
+%{_datadir}/bash-completion/*
+%endif
+%if 0%{?WITH_ZSH_COMPLETION}
+%dir %{_datadir}/zsh/site-functions
+%{_datadir}/zsh/site-functions/*
+%endif
+%dir %{_sysconfdir}/udev
+%dir %{_sysconfdir}/udev/rules.d
+%dir %{_prefix}/lib/systemd
+%dir %{_prefix}/lib/systemd/system
+%dir %{_prefix}/lib/systemd/system-generators
+%dir %{_prefix}/lib/systemd/user-generators
+%dir %{_prefix}/lib/systemd/system-preset
+%dir %{_prefix}/lib/systemd/user-preset
+%dir %{_prefix}/lib/systemd/system-shutdown
+%dir %{_prefix}/lib/systemd/system-sleep
+%dir %{_prefix}/lib/tmpfiles.d
+%dir %{_prefix}/lib/sysctl.d
+%dir %{_prefix}/lib/modules-load.d
+%dir %{_prefix}/lib/binfmt.d
+%dir %{_prefix}/lib/firmware
+%dir %{_prefix}/lib/firmware/updates
+%dir %{_datadir}/systemd
+%config(noreplace) %{dbuspolicydir}/system.d/org.freedesktop.systemd1.conf
+%if 0%{?WITH_HOSTNAMED}
+%config(noreplace) %{dbuspolicydir}/system.d/org.freedesktop.hostname1.conf
+%endif
+%config(noreplace) %{dbuspolicydir}/system.d/org.freedesktop.login1.conf
+%config(noreplace) %{dbuspolicydir}/system.d/org.freedesktop.locale1.conf
+%if 0%{?WITH_TIMEDATED}
+%config(noreplace) %{dbuspolicydir}/system.d/org.freedesktop.timedate1.conf
+%endif
+%if 0%{?WITH_MACHINED}
+%config(noreplace) %{dbuspolicydir}/system.d/org.freedesktop.machine1.conf
+%endif
+%if 0%{?WITH_COREDUMP}
+%config(noreplace) %{_sysconfdir}/systemd/coredump.conf
+%endif
+%config(noreplace) %{_sysconfdir}/systemd/system.conf
+%config(noreplace) %{_sysconfdir}/systemd/user.conf
+%config(noreplace) %{_sysconfdir}/systemd/logind.conf
+%config(noreplace) %{_sysconfdir}/systemd/journald.conf
+%config(noreplace) %{_sysconfdir}/systemd/sleep.conf
+%config(noreplace) %{_sysconfdir}/udev/iocost.conf
+%config(noreplace) %{_sysconfdir}/udev/udev.conf
+%{_sysconfdir}/xdg/systemd
+%ghost %config(noreplace) %{_sysconfdir}/hostname
+%ghost %config(noreplace) %{_sysconfdir}/locale.conf
+%ghost %config(noreplace) %{_sysconfdir}/machine-id
+%ghost %config(noreplace) %{_sysconfdir}/machine-info
+%ghost %config(noreplace) %{_sysconfdir}/timezone
+%exclude %{_sysconfdir}/X11/xinit/xinitrc.d/50-systemd-user.sh
+%{_bindir}/systemd
+%{_bindir}/systemctl
+%{_bindir}/systemd-notify
+%{_bindir}/systemd-ask-password
+%{_bindir}/systemd-tty-ask-password-agent
+%{_bindir}/systemd-machine-id-setup
+%{_bindir}/systemd-socket-activate
+%{_bindir}/loginctl
+%{_bindir}/systemd-loginctl
+%{_bindir}/journalctl
+%{_bindir}/systemd-tmpfiles
+%{_bindir}/systemd-nspawn
+%{_bindir}/systemd-stdio-bridge
+%{_bindir}/systemd-cat
+%{_bindir}/systemd-cgls
+%{_bindir}/systemd-cgtop
+%{_bindir}/systemd-delta
+%{_bindir}/systemd-inhibit
+%{_bindir}/systemd-id128
+%{_bindir}/udevadm
+%{_bindir}/systemd-escape
+%{_bindir}/systemd-path
+%{_bindir}/systemd-mount
+%{_bindir}/systemd-umount
+%{_prefix}/lib/sysctl.d/*.conf
+%exclude %{_prefix}/lib/sysctl.d/README
+%{_prefix}/lib/systemd/systemd
+%{_prefix}/lib/systemd/system
+%if 0%{?WITH_VIRT}
+%{_bindir}/systemd-detect-virt
+%endif
+
+%exclude %{_bindir}/bootctl
+%exclude %{_bindir}/systemd-ac-power
+%exclude %{_bindir}/systemd-confext
+%exclude %{_bindir}/systemd-creds
+%exclude %{_bindir}/systemd-dissect
+%exclude %{_bindir}/systemd-sysext
+%exclude %{_bindir}/systemd-vmspawn
+%exclude %{_bindir}/userdbctl
+%exclude %{_bindir}/varlinkctl
+
+%dir %{_prefix}/lib/systemd/system/basic.target.wants
+%dir %{_prefix}/lib/systemd/user
+%dir %{_prefix}/lib/systemd/network
+%dir %{_prefix}/lib/systemd/user/default.target.wants
+%{_prefix}/lib/systemd/user/basic.target
+%{_prefix}/lib/systemd/user/bluetooth.target
+%{_prefix}/lib/systemd/user/exit.target
+%{_prefix}/lib/systemd/user/printer.target
+%{_prefix}/lib/systemd/user/shutdown.target
+%{_prefix}/lib/systemd/user/sockets.target
+%{_prefix}/lib/systemd/user/sound.target
+%{_prefix}/lib/systemd/user/systemd-exit.service
+%{_prefix}/lib/systemd/user/paths.target
+%{_prefix}/lib/systemd/user/smartcard.target
+%{_prefix}/lib/systemd/user/timers.target
+%{_prefix}/lib/systemd/user/default.target
+%exclude %{_prefix}/lib/systemd/user/graphical-session.target
+%exclude %{_prefix}/lib/systemd/user/graphical-session-pre.target
+%{_prefix}/lib/systemd/network/99-default.link
+%exclude %{_prefix}/lib/systemd/system-preset/90-systemd.preset
+%exclude %{_prefix}/lib/systemd/user-preset/90-systemd.preset
+%{_prefix}/lib/systemd/user/delayed.target
+%{_prefix}/lib/systemd/user/user-delayed-target-trigger.service
+%{_prefix}/lib/systemd/user/default.target.wants/user-delayed-target-trigger.service
+%{_prefix}/lib/systemd/user/user-default-target-done.service
+%{_prefix}/lib/systemd/user/default.target.wants/user-default-target-done.service
+%{_prefix}/lib/systemd/user/user-delayed-target-done.service
+%{_prefix}/lib/systemd/user/delayed.target.wants/user-delayed-target-done.service
+%{_prefix}/lib/systemd/user/app.slice
+%{_prefix}/lib/systemd/user/background.slice
+%{_prefix}/lib/systemd/user/session.slice
+
+%{dbuspolicydir}/system.d/org.tizen.system.conf
+%exclude %{_prefix}/lib/modprobe.d/systemd.conf
+%exclude %{_prefix}/lib/modprobe.d/README
+
+%{_libdir}/systemd/libsystemd-core-%{version}.so
+%{_libdir}/systemd/libsystemd-shared-%{version}.so
+%{_prefix}/lib/systemd/systemd-*
+%dir %{_prefix}/lib/systemd/catalog
+%{_prefix}/lib/systemd/catalog/systemd.catalog
+%{_prefix}/lib/udev
+%exclude %{_prefix}/lib/udev/rules.d/README
+%{_prefix}/lib/systemd/system-generators/systemd-getty-generator
+%{_prefix}/lib/systemd/system-generators/systemd-system-update-generator
+%{_prefix}/lib/tmpfiles.d/home.conf
+%{_prefix}/lib/tmpfiles.d/journal-nocow.conf
+%{_prefix}/lib/tmpfiles.d/legacy.conf
+%{_prefix}/lib/tmpfiles.d/systemd.conf
+%{_prefix}/lib/tmpfiles.d/systemd-nologin.conf
+%if 0%{?WITH_MACHINED}
+%{_prefix}/lib/tmpfiles.d/systemd-nspawn.conf
+%endif
+%{_prefix}/lib/tmpfiles.d/tmp.conf
+%{_prefix}/lib/tmpfiles.d/var.conf
+%{_prefix}/lib/tmpfiles.d/x11.conf
+%{_prefix}/lib/tmpfiles.d/static-nodes-permissions.conf
+%{_prefix}/lib/tmpfiles.d/systemd-tmp.conf
+%{_prefix}/lib/tmpfiles.d/tizen.conf
+
+%exclude %{_prefix}/lib/tmpfiles.d/credstore.conf
+%exclude %{_prefix}/lib/tmpfiles.d/etc.conf
+%exclude %{_prefix}/lib/tmpfiles.d/provision.conf
+%exclude %{_prefix}/lib/tmpfiles.d/README
+
+%{_sbindir}/init
+%ghost %{_prefix}/lib/systemd/systemd-shutdown
+%ghost %{_sbindir}/reboot
+%ghost %{_sbindir}/halt
+%ghost %{_sbindir}/poweroff
+%ghost %{_sbindir}/shutdown
+%{_sbindir}/reboot-original
+%{_sbindir}/halt-original
+%{_sbindir}/poweroff-original
+%{_sbindir}/shutdown-original
+%{_sbindir}/telinit
+%{_sbindir}/runlevel
+%{_sbindir}/udevadm
+%{_sbindir}/mount.ddi
+%{_datadir}/systemd/graphinfo.gvpr
+%{_datadir}/systemd/kbd-model-map
+%{_datadir}/systemd/language-fallback-map
+%{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
+%{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
+%if 0%{?WITH_HOSTNAMED}
+%{_datadir}/dbus-1/system-services/org.freedesktop.hostname1.service
+%endif
+%{_datadir}/dbus-1/system-services/org.freedesktop.login1.service
+%{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service
+%exclude %{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy
+%exclude %{_datadir}/polkit-1/actions/org.freedesktop.login1.policy
+%exclude %{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy
+%if 0%{?WITH_TIMEDATED}
+%{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
+%endif
+%if 0%{?WITH_MACHINED}
+%{_datadir}/dbus-1/system-services/org.freedesktop.machine1.service
+%endif
+%dir %{_datadir}/factory/
+%dir %{_datadir}/factory/etc
+%dir %{_datadir}/factory/etc/pam.d
+%{_datadir}/factory/etc/nsswitch.conf
+%{_datadir}/factory/etc/pam.d/other
+%{_datadir}/factory/etc/pam.d/system-auth
+
+%exclude %{_datadir}/factory/etc/issue
+%exclude %{_datadir}/factory/etc/locale.conf
+
+%{_localstatedir}/log/journal
+
+%{_bindir}/wait-default-target.sh
+%{_bindir}/wait-delayed-target.sh
+%{_bindir}/delayed-target-trigger.sh
+
+%{_prefix}/lib/systemd/send-booting-done
+%{_prefix}/lib/systemd/wait-target-done
+
+# Do not install systemd-vconsole-setup
+%exclude %{_datadir}/factory/etc/vconsole.conf
+%exclude %{_prefix}/lib/systemd/system/systemd-vconsole-setup.service
+%exclude %{_prefix}/lib/udev/rules.d/90-vconsole.rules
+%exclude %{_prefix}/lib/systemd/systemd-vconsole-setup
+%ghost %config(noreplace) %{_sysconfdir}/vconsole.conf
+
+%files -n libsystemd
+%manifest %{name}.manifest
+%license LICENSE.LGPL2.1
+%{_libdir}/security/pam_systemd.so
+%exclude %{_libdir}/security/pam_systemd_loadkey.so
+%{_libdir}/libsystemd.so.*
+%{_libdir}/libudev.so.*
+%{_libdir}/libnss_myhostname.so.2
+%if 0%{?WITH_MACHINED}
+%{_libdir}/libnss_mymachines.so.2
+%endif
+
+%files devel
+%manifest %{name}.manifest
+%{_libdir}/libudev.so
+%{_libdir}/libsystemd.so
+%dir %{_includedir}/systemd
+%{_includedir}/libudev.h
+%{_includedir}/systemd/sd-bus.h
+%{_includedir}/systemd/sd-bus-protocol.h
+%{_includedir}/systemd/sd-bus-vtable.h
+%{_includedir}/systemd/_sd-common.h
+%{_includedir}/systemd/sd-daemon.h
+%{_includedir}/systemd/sd-device.h
+%{_includedir}/systemd/sd-event.h
+%{_includedir}/systemd/sd-gpt.h
+%{_includedir}/systemd/sd-hwdb.h
+%{_includedir}/systemd/sd-id128.h
+%{_includedir}/systemd/sd-journal.h
+%{_includedir}/systemd/sd-login.h
+%{_includedir}/systemd/sd-messages.h
+%{_includedir}/systemd/sd-path.h
+
+%{_libdir}/pkgconfig/libudev.pc
+%{_libdir}/pkgconfig/libsystemd.pc
+%{_datadir}/pkgconfig/systemd.pc
+%{_datadir}/pkgconfig/udev.pc
+%{_sysconfdir}/rpm/macros.systemd
+
+%files analyze
+%manifest %{name}.manifest
+%license LICENSE.LGPL2.1
+%{_bindir}/systemd-analyze
+
+%files tests
+%manifest %{name}.manifest
+%{_prefix}/lib/dbus-tests/test-suites/systemd-tests/
+%{_prefix}/lib/dbus-tests/runner/systemd-tests
+%{_prefix}/lib/systemd/tests/
+
+%if 0%{?WITH_DOC}
+%docs_package
+%else
+%exclude %{_docdir}
+%exclude %{_datadir}/doc/systemd
+%endif