%bcond_without cryptsetup # without cryptsetup support
%bcond_without gtk # build gtk tools
%bcond_without pam # PAM authentication support
+%bcond_with plymouth # plymouth support
%bcond_without selinux # without SELinux support
%bcond_without tcpd # libwrap (tcp_wrappers) support
Summary: A System and Service Manager
Summary(pl.UTF-8): systemd - zarządca systemu i usług dla Linuksa
Name: systemd
-Version: 39
+Version: 43
Release: 4
License: GPL v2+
Group: Base
Source0: http://www.freedesktop.org/software/systemd/%{name}-%{version}.tar.xz
-# Source0-md5: 7179b34f6f6553d2a36551ac1dec5f0d
+# Source0-md5: 446cc6db7625617af67e2d8e5f503a49
Source1: %{name}-sysv-convert
Source2: %{name}_booted.c
-Source3: ifup@.service
-Source4: network-post.service
-Source5: network.service
-Source6: compat-pld-media.tmpfiles
-Source7: compat-pld-var-run.tmpfiles
+Source3: network.service
+Source4: compat-pld-media.tmpfiles
+Source5: compat-pld-var-run.tmpfiles
+Source10: pld-storage-init-late.service
+Source11: pld-storage-init.service
+Source12: pld-wait-storage.service
+Source13: pld-storage-init.sh
Patch0: target-pld.patch
Patch1: config-pld.patch
Patch2: shut-sysv-up.patch
%{?with_audit:BuildRequires: audit-libs-devel}
BuildRequires: autoconf >= 2.63
BuildRequires: automake >= 1:1.11
+BuildRequires: binutils >= 3:2.22.52.0.1-2
%{?with_cryptsetup:BuildRequires: cryptsetup-luks-devel}
BuildRequires: dbus-devel >= 1.3.2
BuildRequires: docbook-style-xsl
-%if %{with gtk}
-BuildRequires: glib2-devel >= 1:2.26.1
-BuildRequires: gtk+2-devel >= 2:2.24.0
-BuildRequires: libgee-devel
-BuildRequires: libnotify-devel >= 0.7.0
-%endif
-BuildRequires: binutils >= 3:2.22.52.0.1-2
BuildRequires: gperf
BuildRequires: intltool >= 0.40.0
+BuildRequires: kmod-devel >= 5
BuildRequires: libcap-devel
-%{?with_selinux:BuildRequires: libselinux-devel}
+%{?with_selinux:BuildRequires: libselinux-devel >= 2.1.0}
BuildRequires: libtool >= 2:2.2
%{?with_tcpd:BuildRequires: libwrap-devel}
BuildRequires: libxslt-progs
# not required for building from release (which contains *.c for *.vala)
#BuildRequires: vala >= 0.10.0
BuildRequires: xz-devel
+%if %{with gtk}
+BuildRequires: glib2-devel >= 1:2.26.1
+BuildRequires: gtk+2-devel >= 2:2.24.0
+BuildRequires: libgee-devel
+BuildRequires: libnotify-devel >= 0.7.0
+%endif
Requires: %{name}-libs = %{version}-%{release}
Requires: %{name}-units = %{version}-%{release}
+Requires: /etc/os-release
Requires: SysVinit-tools
Requires: agetty
Requires: dbus >= 1.4.16-6
Requires: setup >= 2.8.0-2
Requires: udev-core >= 1:175-5
Requires: udev-libs >= 1:172
+Requires: virtual(module-tools)
Suggests: ConsoleKit
Suggests: fsck >= 2.20
+Suggests: kmod >= 5
Suggests: nss_myhostname
# python modules required by systemd-analyze
Suggests: %{name}-no-compat-tmpfiles
Provides: udev-acl
# systemd takes care of that and causes problems
Conflicts: binfmt-detector
-# sytemd wants pam with pam_systemd.so in system-auth
+# sytemd wants pam with pam_systemd.so in system-auth...
Conflicts: pam < 1:1.1.5-5
-Conflicts: upstart
+# ...and sudo hates it
+Conflicts: sudo < 1:1.7.8p2-4
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _libexecdir %{_prefix}/lib
Obsoletes: SysVinit
Obsoletes: readahead < 1:1.5.7-3
Obsoletes: virtual(init-daemon)
+Conflicts: upstart
%description init
Install this package when you are ready to final switch to systemd.
Summary(pl.UTF-8): Pliki konfiguracyjne, katalogi i narzędzie instalacyjne dla systemd
Group: Base
Requires(post): coreutils
-Requires(post): gawk
+Requires(post): /bin/awk
%description units
Basic configuration files, directories and installation tool for the
Ten pakiet zawiera ogólną konfigurację, ustawienia można nadpisać
poprzez katalog %{_sysconfdir}/systemd/system.
+%package plymouth
+Summary: Plymouth support units for systemd
+Summary(pl.UTF-8): Jednostki wspierające Plymouth dla systemd
+Group: Base
+Requires: %{name}-units = %{version}-%{release}
+
+%description plymouth
+Plymouth (graphical boot) support units for systemd.
+
+%description plymouth -l pl.UTF-8
+Jednostki wspierające Plymouth (graficzny start systemu) dla systemd.
+
%package gtk
Summary: Graphical frontend for systemd
Summary(pl.UTF-8): Graficzny interfejs do systemd
Conflicts: fail2ban < 0.8.4-4
Conflicts: filesystem < 4.0-3
Conflicts: gammu-smsd < 1:1.31.0-3
-Conflicts: gdm < 2:3.2.1.1-9
+# Break gdm2.20 installs
+#Conflicts: gdm < 2:3.2.1.1-9
Conflicts: greylistd < 0.8.8-2
Conflicts: inn < 2.4.6-7
Conflicts: ipsec-tools < 0.8.0-3
Conflicts: sphinx < 2.0.3-4
Conflicts: splashutils < 1.5.4.3-3
Conflicts: stunnel < 4.50-2
-Conflicts: sudo < 1:1.7.8p2-2
Conflicts: tenshi < 0.12-2
Conflicts: tor < 0.2.2.35-2
Conflicts: ucarp < 1.5.2-3
%setup -q
%patch0 -p1
%patch1 -p1
-#%patch2 -p1
+%patch2 -p1
%patch3 -p1
%patch4 -p1
cp -p %{SOURCE2} src/systemd_booted.c
%{__enable_disable cryptsetup libcryptsetup} \
%{__enable_disable gtk} \
%{__enable_disable pam} \
+ %{__enable_disable plymouth} \
%{__enable_disable selinux} \
%{__enable_disable tcpd tcpwrap} \
--disable-silent-rules \
--disable-static \
--with-distro=pld \
--with-rootprefix= \
- --with-rootlibdir=/%{_lib}
+ --with-rootlibdir=/%{_lib} \
+ --enable-split-usr
%{__make}
./libtool --mode=link --tag=CC %{__cc} %{rpmcppflags} %{rpmcflags} -o systemd_booted %{rpmldflags} src/systemd_booted.c -L. -lsystemd-daemon
./libtool --mode=install install -m755 systemd_booted $RPM_BUILD_ROOT/bin/systemd_booted
+# Main binary has been moved, but we don't want to break existing installs
+ln -s ../lib/systemd/systemd $RPM_BUILD_ROOT/bin/systemd
+
# Create SysV compatibility symlinks. systemctl/systemd are smart
# enough to detect the way they were called
install -d $RPM_BUILD_ROOT/sbin
-ln -s ../bin/systemd $RPM_BUILD_ROOT/sbin/init
+ln -s ../lib/systemd/systemd $RPM_BUILD_ROOT/sbin/init
ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/halt
ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/poweroff
ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/reboot
ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/telinit
ln -s ../modules $RPM_BUILD_ROOT%{_sysconfdir}/modules-load.d/modules.conf
-# disable random and console SYSV service
-ln -s /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/random.service
+
+# disable redundant SYSV services
+ln -s /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/allowlogin.service
ln -s /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/console.service
+ln -s /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/cpusets.service
+ln -s /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/killall.service
+ln -s /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/netfs.service
+ln -s /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/random.service
# add static (non-NetworkManager) networking
-install %{SOURCE3} $RPM_BUILD_ROOT%{systemdunitdir}/ifup@.service
-install %{SOURCE4} $RPM_BUILD_ROOT%{systemdunitdir}/network-post.service
-install %{SOURCE5} $RPM_BUILD_ROOT%{systemdunitdir}/network.service
+install %{SOURCE3} $RPM_BUILD_ROOT%{systemdunitdir}/network.service
# install compatibility tmpfiles configs
-install %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/tmpfiles.d/compat-pld-media.conf
-install %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/tmpfiles.d/compat-pld-var-run.conf
+install %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/tmpfiles.d/compat-pld-media.conf
+install %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/tmpfiles.d/compat-pld-var-run.conf
-# All wants links are created at %post to make sure they are not owned
-# and hence overriden by rpm if the user deletes them (missingok?)
-%{__rm} -r $RPM_BUILD_ROOT%{_sysconfdir}/systemd/system/*.target.wants
+# Install and enable storage subsystems support services (RAID, LVM, etc.)
+install %{SOURCE10} $RPM_BUILD_ROOT%{systemdunitdir}/pld-storage-init-late.service
+install %{SOURCE11} $RPM_BUILD_ROOT%{systemdunitdir}/pld-storage-init.service
+install %{SOURCE12} $RPM_BUILD_ROOT%{systemdunitdir}/pld-wait-storage.service
+install %{SOURCE13} $RPM_BUILD_ROOT/lib/systemd/pld-storage-init
+
+ln -s ../pld-storage-init-late.service $RPM_BUILD_ROOT%{systemdunitdir}/local-fs.target.wants/pld-storage-init-late.service
+ln -s ../pld-storage-init.service $RPM_BUILD_ROOT%{systemdunitdir}/local-fs.target.wants/pld-storage-init.service
# it is in rc-scripts pkg
%{__rm} $RPM_BUILD_ROOT%{systemdunitdir}/rc-local.service
install -d $RPM_BUILD_ROOT%{systemdunitdir}/{dbus,halt,kexec,poweroff,reboot,syslog}.target.wants
# Create new-style configuration files so that we can ghost-own them
-touch $RPM_BUILD_ROOT%{_sysconfdir}/{hostname,locale.conf,machine-id,machine-info,os-release,timezone,vconsole.conf}
+touch $RPM_BUILD_ROOT%{_sysconfdir}/{hostname,locale.conf,machine-id,machine-info,timezone,vconsole.conf}
# Install SysV conversion tool for systemd
install -p %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}
echo $HOSTNAME > /etc/hostname
chmod 644 /etc/hostname
fi
+
+ # Enable the services we install by default.
+ /bin/systemctl enable \
+ getty@.service \
+ network.service \
+ remote-fs.target \
+ systemd-readahead-replay.service \
+ systemd-readahead-collect.service >/dev/null 2>&1 || :
fi
-# Enable the services we install by default.
-/bin/systemctl enable \
- getty@.service \
- network.service \
- network-post.service \
- remote-fs.target \
- systemd-readahead-replay.service \
- systemd-readahead-collect.service >/dev/null 2>&1 || :
-
-# Find and enable all installed interfaces
-mkdir -p %{_sysconfdir}/systemd/system/network.target.wants >/dev/null 2>&1 || :
-for f in /etc/sysconfig/interfaces/ifcfg-* ; do
- ff=$(basename $f)
- ff=${ff##ifcfg-}
- case "$ff" in
- *.rpmorig|*.rpmnew|*.rpmsave|*~|*.orig)
- continue
- ;;
- *)
- DEVICE="" ; ONBOOT="" ; USERS=""
- . $f 2>/dev/null
- [ ${USERS:-no} != no ] && continue
- if [ "$DEVICE" = "$ff" -a ${ONBOOT:-no} = "yes" ]; then
- ln -s %{systemdunitdir}/ifup@.service \
- %{_sysconfdir}/systemd/system/network.target.wants/ifcfg@$ff.service >/dev/null 2>&1 || :
- fi
- ;;
- esac
-done
%preun units
if [ $1 -eq 0 ] ; then
/bin/systemctl disable \
getty@.service \
network.service \
- network-post.service \
remote-fs.target \
systemd-readahead-replay.service \
systemd-readahead-collect.service >/dev/null 2>&1 || :
%{__rm} -f %{_sysconfdir}/systemd/system/default.target >/dev/null 2>&1 || :
- %{__rm} -f %{_sysconfdir}/systemd/system/network.target.wants/ifcfg@*.service >/dev/null 2>&1 || :
fi
%postun units
/bin/systemctl daemon-reload > /dev/null 2>&1 || :
fi
+%triggerpostun units -- %{name}-units < 43-4
+# Remove design fialures
+/bin/systemctl disable network-post.service >/dev/null 2>&1 || :
+rm -f %{_sysconfdir}/systemd/system/network.target.wants/ifcfg@*.service >/dev/null 2>&1 || :
+rm -f %{_sysconfdir}/systemd/system/network.target.wants/network-post.service >/dev/null 2>&1 || :
+
%post no-compat-tmpfiles
-%{__sed} -i -e 's/^/# /g' %{_sysconfdir}/tmpfiles.d/compat-pld-var-run.conf
+%{__sed} -i -e '/^#/!s/^/# /g' %{_sysconfdir}/tmpfiles.d/compat-pld-var-run.conf
%files
%defattr(644,root,root,755)
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/hostname
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/locale.conf
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/machine-info
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/os-release
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/timezone
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/vconsole.conf
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/systemd/*.conf
%dir %{_sysconfdir}/systemd/user
+%dir %{_sysconfdir}/systemd/system/*.target.wants
+%config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/systemd/system/*.target.wants/*.service
+%config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/systemd/system/*.target.wants/*.target
/etc/xdg/systemd
%attr(755,root,root) /bin/systemd
%attr(755,root,root) /bin/systemd-ask-password
%attr(755,root,root) %{_bindir}/systemd-nspawn
%attr(755,root,root) %{_bindir}/systemd-stdio-bridge
%attr(755,root,root) %{_bindir}/systemd-sysv-convert
+%attr(755,root,root) /lib/systemd/pld-storage-init
%attr(755,root,root) /lib/systemd/systemd-*
%dir /lib/systemd/system-generators
+%attr(755,root,root) /lib/systemd/systemd
%attr(755,root,root) /lib/systemd/system-generators/systemd-*-generator
%dir /lib/systemd/system-shutdown
/lib/udev/rules.d/99-systemd.rules
%{systemdunitdir}/*.socket
%{systemdunitdir}/*.target
%{systemdunitdir}/*.timer
-%dir %{systemdunitdir}/*.wants
-%config(noreplace,missingok) %{systemdunitdir}/*.wants/*
+%if %{with plymouth}
+%exclude %{systemdunitdir}/plymouth*.service
+%exclude %{systemdunitdir}/systemd-ask-password-plymouth.*
+%endif
+%dir %{systemdunitdir}/basic.target.wants
+%dir %{systemdunitdir}/dbus.target.wants
+%dir %{systemdunitdir}/final.target.wants
+%dir %{systemdunitdir}/graphical.target.wants
+%dir %{systemdunitdir}/halt.target.wants
+%dir %{systemdunitdir}/kexec.target.wants
+%dir %{systemdunitdir}/local-fs.target.wants
+%dir %{systemdunitdir}/multi-user.target.wants
+%dir %{systemdunitdir}/poweroff.target.wants
+%dir %{systemdunitdir}/reboot.target.wants
+%dir %{systemdunitdir}/runlevel[12345].target.wants
+%dir %{systemdunitdir}/shutdown.target.wants
+%dir %{systemdunitdir}/sockets.target.wants
+%dir %{systemdunitdir}/sysinit.target.wants
+%dir %{systemdunitdir}/syslog.target.wants
+%config(noreplace,missingok) %{systemdunitdir}/basic.target.wants/*
+%config(noreplace,missingok) %{systemdunitdir}/final.target.wants/*
+%config(noreplace,missingok) %{systemdunitdir}/graphical.target.wants/*
+%config(noreplace,missingok) %{systemdunitdir}/local-fs.target.wants/*
+%config(noreplace,missingok) %{systemdunitdir}/multi-user.target.wants/getty.target
+%config(noreplace,missingok) %{systemdunitdir}/multi-user.target.wants/rc-local.service
+%config(noreplace,missingok) %{systemdunitdir}/multi-user.target.wants/systemd-ask-password-wall.path
+%config(noreplace,missingok) %{systemdunitdir}/multi-user.target.wants/systemd-logind.service
+%config(noreplace,missingok) %{systemdunitdir}/multi-user.target.wants/systemd-user-sessions.service
+%config(noreplace,missingok) %{systemdunitdir}/runlevel[12345].target.wants/*
+%config(noreplace,missingok) %{systemdunitdir}/shutdown.target.wants/*
+%config(noreplace,missingok) %{systemdunitdir}/sockets.target.wants/*
+%config(noreplace,missingok) %{systemdunitdir}/sysinit.target.wants/cryptsetup.target
+%config(noreplace,missingok) %{systemdunitdir}/sysinit.target.wants/dev-hugepages.mount
+%config(noreplace,missingok) %{systemdunitdir}/sysinit.target.wants/dev-mqueue.mount
+%config(noreplace,missingok) %{systemdunitdir}/sysinit.target.wants/proc-sys-fs-binfmt_misc.automount
+%config(noreplace,missingok) %{systemdunitdir}/sysinit.target.wants/sys-*.mount
+%config(noreplace,missingok) %{systemdunitdir}/sysinit.target.wants/systemd-*
+
+%if %{with plymouth}
+%files plymouth
+%defattr(644,root,root,755)
+%{systemdunitdir}/plymouth-halt.service
+%{systemdunitdir}/plymouth-kexec.service
+%{systemdunitdir}/plymouth-poweroff.service
+%{systemdunitdir}/plymouth-quit-wait.service
+%{systemdunitdir}/plymouth-quit.service
+%{systemdunitdir}/plymouth-read-write.service
+%{systemdunitdir}/plymouth-reboot.service
+%{systemdunitdir}/plymouth-start.service
+%{systemdunitdir}/systemd-ask-password-plymouth.path
+%{systemdunitdir}/systemd-ask-password-plymouth.service
+%config(noreplace,missingok) %{systemdunitdir}/halt.target.wants/plymouth-halt.service
+%config(noreplace,missingok) %{systemdunitdir}/kexec.target.wants/plymouth-kexec.service
+%config(noreplace,missingok) %{systemdunitdir}/multi-user.target.wants/plymouth-quit.service
+%config(noreplace,missingok) %{systemdunitdir}/multi-user.target.wants/plymouth-quit-wait.service
+%config(noreplace,missingok) %{systemdunitdir}/poweroff.target.wants/plymouth-poweroff.service
+%config(noreplace,missingok) %{systemdunitdir}/reboot.target.wants/plymouth-reboot.service
+%config(noreplace,missingok) %{systemdunitdir}/sysinit.target.wants/plymouth-read-write.service
+%config(noreplace,missingok) %{systemdunitdir}/sysinit.target.wants/plymouth-start.service
+%endif
%if %{with gtk}
%files gtk