# Conditional build:
%bcond_without audit # without audit support
%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 plymouth # do not install plymouth units
%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: 43
-Release: 2
+Version: 44
+Release: 8
License: GPL v2+
Group: Base
Source0: http://www.freedesktop.org/software/systemd/%{name}-%{version}.tar.xz
-# Source0-md5: 446cc6db7625617af67e2d8e5f503a49
+# Source0-md5: 11f44ff74c87850064e4351518bcff17
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
+Source14: pld-clean-tmp.service
+Source15: pld-clean-tmp.sh
Patch0: target-pld.patch
Patch1: config-pld.patch
Patch2: shut-sysv-up.patch
Patch3: pld-sysv-network.patch
Patch4: tmpfiles-not-fatal.patch
+Patch5: CVE-2012-1174.patch
+Patch6: dont-trash-X-sessions.patch
URL: http://www.freedesktop.org/wiki/Software/systemd
BuildRequires: acl-devel
%{?with_audit:BuildRequires: audit-libs-devel}
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
BuildRequires: pkgconfig >= 0.9.0
BuildRequires: rpmbuild(macros) >= 1.627
BuildRequires: udev-devel >= 1:172
-# 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: agetty
Requires: dbus >= 1.4.16-6
Requires: filesystem >= 4.0-2
-Requires: rc-scripts >= 0.4.5.1-7
+Requires: libutempter
+Requires: rc-scripts >= 0.4.5.3-7
Requires: setup >= 2.8.0-2
Requires: udev-core >= 1:175-5
Requires: udev-libs >= 1:172
Requires: virtual(module-tools)
+Suggests: %{name}-no-compat-tmpfiles
Suggests: ConsoleKit
Suggests: fsck >= 2.20
Suggests: kmod >= 5
Suggests: nss_myhostname
-# python modules required by systemd-analyze
-Suggests: %{name}-no-compat-tmpfiles
-Suggests: python-dbus
-Suggests: python-modules
Suggests: service(klogd)
Suggests: service(syslog)
Provides: udev-acl
Conflicts: pam < 1:1.1.5-5
# ...and sudo hates it
Conflicts: sudo < 1:1.7.8p2-4
-Conflicts: upstart
+# for prefdm script
+Conflicts: xinitrc-ng < 1.0
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): Jednostki wspierające Plymouth dla systemd
Group: Base
Requires: %{name}-units = %{version}-%{release}
+Requires: plymouth
%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
+%package analyze
+Summary: Tool for processing systemd profiling information
Group: Base
Requires: %{name} = %{version}-%{release}
-Requires: polkit
-
-%description gtk
-Graphical front-end for systemd.
+Requires: python-dbus
+Requires: python-modules
+Requires: python-pycairo
+Conflicts: %{name} < 44-3
-%description gtk -l pl.UTF-8
-Graficzny interfejs do systemd.
+%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 libs
Summary: Shared systemd libraries
%patch2 -p1
%patch3 -p1
%patch4 -p1
+%patch5 -p1
+%patch6 -p1
cp -p %{SOURCE2} src/systemd_booted.c
%build
%configure \
%{__enable_disable audit} \
%{__enable_disable cryptsetup libcryptsetup} \
- %{__enable_disable gtk} \
+ --disable-gtk \
%{__enable_disable pam} \
%{__enable_disable plymouth} \
%{__enable_disable selinux} \
%install
rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT/var/lib/%{name}/coredump
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
-./libtool --mode=install install -m755 systemd_booted $RPM_BUILD_ROOT/bin/systemd_booted
+./libtool --mode=install install -p -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
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
+cp -p %{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
+cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/tmpfiles.d/compat-pld-media.conf
+cp -p %{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.)
+cp -p %{SOURCE10} $RPM_BUILD_ROOT%{systemdunitdir}/pld-storage-init-late.service
+cp -p %{SOURCE11} $RPM_BUILD_ROOT%{systemdunitdir}/pld-storage-init.service
+cp -p %{SOURCE12} $RPM_BUILD_ROOT%{systemdunitdir}/pld-wait-storage.service
+cp -p %{SOURCE14} $RPM_BUILD_ROOT%{systemdunitdir}/pld-clean-tmp.service
+install -p %{SOURCE13} $RPM_BUILD_ROOT/lib/systemd/pld-storage-init
+install -p %{SOURCE15} $RPM_BUILD_ROOT/lib/systemd/pld-clean-tmp
-# it is in rc-scripts pkg
-%{__rm} $RPM_BUILD_ROOT%{systemdunitdir}/rc-local.service
+ln -s ../pld-storage-init-late.service $RPM_BUILD_ROOT%{systemdunitdir}/local-fs.target.wants
+ln -s ../pld-storage-init.service $RPM_BUILD_ROOT%{systemdunitdir}/local-fs.target.wants
+ln -s ../pld-clean-tmp.service $RPM_BUILD_ROOT%{systemdunitdir}/local-fs.target.wants
+
+# handled by rc-local sysv service, no need for generator
+%{__rm} $RPM_BUILD_ROOT/lib/systemd/system-generators/systemd-rc-local-generator
# Make sure these directories are properly owned:
# - halt,kexec,poweroff,reboot: generic ones used by ConsoleKit-systemd,
:> $RPM_BUILD_ROOT/var/log/btmp
:> $RPM_BUILD_ROOT/var/log/wtmp
-%if %{without gtk}
%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/systemadm.1*
-%endif
%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/%{name}
%{__rm} $RPM_BUILD_ROOT/%{_lib}/security/pam_systemd.la
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-7
+# Remove design fialures
+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 || :
+rm -f %{_sysconfdir}/systemd/system/multi-user.target.wants/network-post.service >/dev/null 2>&1 || :
+/bin/systemctl reenable network.service >/dev/null 2>&1 || :
+
%post no-compat-tmpfiles
%{__sed} -i -e '/^#/!s/^/# /g' %{_sysconfdir}/tmpfiles.d/compat-pld-var-run.conf
+%post plymouth
+%systemd_reload
+
+%postun plymouth
+%systemd_reload
+
%files
%defattr(644,root,root,755)
%doc DISTRO_PORTING README TODO
%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) /bin/systemd-machine-id-setup
%attr(755,root,root) /bin/systemd-notify
%attr(755,root,root) /bin/systemd-tty-ask-password-agent
-%attr(755,root,root) %{_bindir}/systemd-analyze
%attr(755,root,root) %{_bindir}/systemd-cat
%attr(755,root,root) %{_bindir}/systemd-cgtop
%attr(755,root,root) %{_bindir}/systemd-cgls
%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
%{_datadir}/systemd/kbd-model-map
%{_mandir}/man1/systemd.1*
%{_mandir}/man1/systemd-*.1*
-%{_mandir}/man3/sd_booted.3*
-%{_mandir}/man3/sd_is_fifo.3*
-%{_mandir}/man3/sd_is_socket.3
-%{_mandir}/man3/sd_is_socket_inet.3
-%{_mandir}/man3/sd_is_socket_unix.3
-%{_mandir}/man3/sd_listen_fds.3*
-%{_mandir}/man3/sd_notify.3*
-%{_mandir}/man3/sd_notifyf.3
-%{_mandir}/man3/sd_readahead.3*
%{_mandir}/man5/binfmt.d.5*
%{_mandir}/man5/hostname.5*
%{_mandir}/man5/locale.conf.5*
%{_mandir}/man5/os-release.5*
%{_mandir}/man5/sysctl.d.5*
%{_mandir}/man5/systemd.*.5*
+%{_mandir}/man5/systemd-journald.conf.5*
%{_mandir}/man5/systemd-logind.conf.5*
%{_mandir}/man5/timezone.5*
%{_mandir}/man5/vconsole.conf.5*
%{_mandir}/man7/sd-login.7*
%{_mandir}/man7/sd-readahead.7*
%{_mandir}/man7/systemd.special.7*
+%dir /var/lib/%{name}
+%dir /var/lib/%{name}/coredump
%attr(640,root,root) %ghost /var/log/btmp
%attr(664,root,utmp) %ghost /var/log/wtmp
%config(noreplace,missingok) %{systemdunitdir}/sysinit.target.wants/plymouth-start.service
%endif
-%if %{with gtk}
-%files gtk
+%files analyze
%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/systemadm
-%attr(755,root,root) %{_bindir}/systemd-gnome-ask-password-agent
-%{_mandir}/man1/systemadm.1*
-%endif
+%attr(755,root,root) %{_bindir}/systemd-analyze
%files libs
%defattr(644,root,root,755)
%{_pkgconfigdir}/libsystemd-id128.pc
%{_pkgconfigdir}/libsystemd-journal.pc
%{_pkgconfigdir}/libsystemd-login.pc
+%{_mandir}/man3/sd_booted.3*
%{_mandir}/man3/sd_get_seats.3*
%{_mandir}/man3/sd_get_sessions.3*
%{_mandir}/man3/sd_get_uids.3*
+%{_mandir}/man3/sd_is_fifo.3*
%{_mandir}/man3/sd_is_mq.3*
+%{_mandir}/man3/sd_is_socket.3
+%{_mandir}/man3/sd_is_socket_inet.3
+%{_mandir}/man3/sd_is_socket_unix.3
+%{_mandir}/man3/sd_listen_fds.3*
%{_mandir}/man3/sd_login_monitor_flush.3*
%{_mandir}/man3/sd_login_monitor_get_fd.3*
%{_mandir}/man3/sd_login_monitor_new.3*
%{_mandir}/man3/sd_login_monitor_unref.3*
+%{_mandir}/man3/sd_notify.3*
+%{_mandir}/man3/sd_notifyf.3
%{_mandir}/man3/sd_pid_get_owner_uid.3*
%{_mandir}/man3/sd_pid_get_session.3*
%{_mandir}/man3/sd_pid_get_unit.3*
+%{_mandir}/man3/sd_readahead.3*
%{_mandir}/man3/sd_seat_can_multi_session.3*
%{_mandir}/man3/sd_seat_get_active.3*
%{_mandir}/man3/sd_seat_get_sessions.3*
+%{_mandir}/man3/sd_session_get_class.3*
+%{_mandir}/man3/sd_session_get_display.3*
%{_mandir}/man3/sd_session_get_seat.3*
+%{_mandir}/man3/sd_session_get_service.3*
+%{_mandir}/man3/sd_session_get_type.3*
%{_mandir}/man3/sd_session_get_uid.3*
%{_mandir}/man3/sd_session_is_active.3*
%{_mandir}/man3/sd_uid_get_seats.3*