# # spec file for package systemd # # Copyright (c) 2012 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 build_plymouth 0 #don't require python, use recommends (bnc#716939) Name: systemd Url: http://www.freedesktop.org/wiki/Software/systemd Version: 40 Release: 0 Summary: A System and Session Manager License: GPL-2.0+ Group: System/Base BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: audit-devel BuildRequires: dbus-1-devel BuildRequires: fdupes BuildRequires: gperf BuildRequires: intltool BuildRequires: libacl-devel BuildRequires: libcap-devel BuildRequires: libcryptsetup-devel BuildRequires: libselinux-devel BuildRequires: libsepol-devel BuildRequires: libtool BuildRequires: libudev-devel BuildRequires: pam-devel BuildRequires: pkg-config BuildRequires: tcpd-devel BuildRequires: udev BuildRequires: xz BuildRequires: xz-devel Requires: udev >= 172 Requires: dbus-1 >= 1.4.0 Requires: kbd Requires: util-linux >= 2.19 Requires: pam-config >= 0.79-5 Requires: systemd-presets-branding Recommends: dbus-1-python Conflicts: filesystem < 11.5 Conflicts: mkinitrd < 2.7.0 Source0: http://www.freedesktop.org/software/systemd/%{name}-%{version}.tar.xz Source1: systemd-rpmlintrc Source2: localfs.service Source3: systemd-sysv-convert Source4: macros.systemd Source5: systemd-insserv_conf Source6: baselibs.conf Source7: systemd-bootsplash Source8: bootsplash-startup.service Source9: bootsplash-quit.service Source10: bootsplash-shutdown.service # Stop-gap, just to ensure things work fine with rsyslog without having to change the package right-away Source11: listen.conf 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 # 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 Patch19: avoid-random-seed-cycle.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 # 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. Patch21: no-tmpfs-fsck.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 Group: Development/Libraries/C and C++ Requires: %{name} = %{version} Requires: pkg-config %description devel Development headers and auxiliary files for developing applications for systemd. %package sysvinit Summary: System V init tools 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. %if %{build_plymouth} %package plymouth Summary: Plymouth support for systemd Group: System/Base Requires: %{name} = %{version} Requires: plymouth %description plymouth Plymouth integration for systemd %endif %prep %setup -q %patch1 -p1 %patch6 -p1 %patch8 -p1 %patch10 -p1 %patch13 -p1 %patch15 -p1 %patch16 -p1 %patch19 -p1 %patch21 -p1 %patch22 -p1 %patch23 -p1 %patch24 -p1 %patch31 -p1 %patch33 -p1 %patch36 -p1 %build autoreconf -fiv # prevent pre-generated and distributed files from re-building find . -name "*.[1-8]" -exec touch '{}' \; touch src/systemadm.c export V=1 %configure \ --with-distro=suse \ --docdir=%{_docdir}/systemd \ --with-rootprefix= \ --with-pamlibdir=/%{_lib}/security \ --disable-gtk \ CFLAGS="%{optflags}" make %{?_smp_mflags} %install %makeinstall #fix manpages sed -i -e 's,^\(\.so \)\(.*\.\)\([0-9]\),\1man\3/\2\3,g' %{buildroot}/%{_mandir}/*/* #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' -exec rm -f {} ';' mkdir -p %{buildroot}/{sbin,var/lib/systemd/sysv-convert,var/lib/systemd/migrated} %{buildroot}/lib/systemd/{system.preset,user.preset} 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}/lib/systemd/system-generators install -m755 %{S:7} %{buildroot}/lib/systemd/ install -m644 %{S:8} %{S:9} %{S:10} %{buildroot}/lib/systemd/system/ ln -s ../bootsplash-startup.service %{buildroot}/lib/systemd/system/basic.target.wants/ ln -s ../bootsplash-quit.service %{buildroot}/lib/systemd/system/multi-user.target.wants/ ln -s ../bootsplash-shutdown.service %{buildroot}/lib/systemd/system/shutdown.target.wants/ ln -s ../bootsplash-shutdown.service %{buildroot}/lib/systemd/system/reboot.target.wants/ ln -s ../bin/systemd %{buildroot}/sbin/init ln -s ../bin/systemctl %{buildroot}/sbin/reboot ln -s ../bin/systemctl %{buildroot}/sbin/halt ln -s ../bin/systemctl %{buildroot}/sbin/shutdown ln -s ../bin/systemctl %{buildroot}/sbin/poweroff ln -s ../bin/systemctl %{buildroot}/sbin/telinit ln -s ../bin/systemctl %{buildroot}/sbin/runlevel rm -rf %{buildroot}/etc/systemd/system/*.target.wants rm -f %{buildroot}/etc/systemd/system/default.target %if !%{build_plymouth} rm -f %{buildroot}/lib/systemd/system/plymouth-*.service rm -f %{buildroot}/lib/systemd/system/*.wants/plymouth-*.service rm -f %{buildroot}/lib/systemd/system/systemd-ask-password-plymouth.* %endif # aliases for /etc/init.d/* ln -s /dev/null %{buildroot}/lib/systemd/system/cgroup.service ln -s systemd-tmpfiles-setup.service %{buildroot}/lib/systemd/system/cleanup.service ln -s /dev/null %{buildroot}/lib/systemd/system/clock.service ln -s /dev/null %{buildroot}/lib/systemd/system/crypto.service ln -s /dev/null %{buildroot}/lib/systemd/system/crypto-early.service ln -s /dev/null %{buildroot}/lib/systemd/system/device-mapper.service ln -s /dev/null %{buildroot}/lib/systemd/system/earlysyslog.service ln -s /dev/null %{buildroot}/lib/systemd/system/kbd.service ln -s /dev/null %{buildroot}/lib/systemd/system/ldconfig.service ln -s /dev/null %{buildroot}/lib/systemd/system/loadmodules.service install -m644 %{S:2} %{buildroot}/lib/systemd/system/localfs.service # need to be implemented in systemd directly #ln -s /dev/null %{buildroot}/lib/systemd/system/localnet.service ln -s /dev/null %{buildroot}/lib/systemd/system/proc.service ln -s fsck-root.service %{buildroot}/lib/systemd/system/rootfsck.service ln -s /dev/null %{buildroot}/lib/systemd/system/single.service ln -s /dev/null %{buildroot}/lib/systemd/system/swap.service ln -s /dev/null %{buildroot}/lib/systemd/system/startpreload.service ln -s /dev/null %{buildroot}/lib/systemd/system/stoppreload.service ln -s /dev/null %{buildroot}/lib/systemd/system/earlyxdm.service ln -s systemd-sysctl.service %{buildroot}/lib/systemd/system/sysctl.service ln -s systemd-random-seed-load.service %{buildroot}/lib/systemd/system/random.service # 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 # Let rsyslog read from /proc/kmsg for now sed -i -e 's/\#ImportKernel=yes/ImportKernel=no/' %{buildroot}%{_sysconfdir}/systemd/systemd-journald.conf # Install rsyslog fragment mkdir -p %{buildroot}%{_sysconfdir}/rsyslog.d/ install -m 0644 %{SOURCE11} %{buildroot}%{_sysconfdir}/rsyslog.d/ # Create the /var/log/journal directory to change the volatile journal to a persistent one mkdir -p %{buildroot}/var/log/journal %if %{build_plymouth} (cd %{buildroot} && find . -name '*plymouth*') > files.plymouth %endif %fdupes $RPM_BUILD_ROOT %post /usr/sbin/pam-config -a --systemd >/dev/null 2>&1 || : /sbin/ldconfig /bin/systemd-machine-id-setup >/dev/null 2>&1 || : /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 ]; then runlevel=$(awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' /etc/inittab 2> /dev/null) if [ -n "$runlevel" ] ; then /bin/ln -sf /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. /bin/systemctl enable \ getty@.service \ systemd-readahead-collect.service \ systemd-readahead-replay.service \ remote-fs.target >/dev/null 2>&1 || : fi %postun /sbin/ldconfig if [ $1 -ge 1 ]; then /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 /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 %clean rm -rf %{buildroot} %files %defattr(-,root,root) /bin/systemd /bin/systemctl /bin/systemd-notify /bin/systemd-journalctl /bin/systemd-ask-password /bin/systemd-loginctl /bin/systemd-tty-ask-password-agent /bin/systemd-tmpfiles /bin/systemd-machine-id-setup /usr/bin/systemd-nspawn /usr/bin/systemd-stdio-bridge %attr(0755,root,root) /usr/bin/systemd-analyze %{_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 /lib/systemd/systemd-* %dir /lib/systemd/system-shutdown %dir /lib/systemd/system.preset %dir /lib/systemd/user.preset /%{_lib}/security/pam_systemd.so %dir %{_sysconfdir}/systemd/system %dir %{_sysconfdir}/systemd/user %dir %{_sysconfdir}/xdg/systemd %dir %{_sysconfdir}/xdg/systemd/user %dir /usr/lib/modules-load.d %dir %{_sysconfdir}/modules-load.d %dir /usr/lib/tmpfiles.d %dir %{_sysconfdir}/tmpfiles.d %dir /usr/lib/binfmt.d %dir %{_sysconfdir}/binfmt.d %dir /usr/lib/sysctl.d %dir %{_sysconfdir}/sysctl.d %dir %{_sysconfdir}/rsyslog.d /usr/lib/tmpfiles.d/*.conf %config(noreplace) %{_sysconfdir}/systemd/system.conf %config(noreplace) %{_sysconfdir}/systemd/systemd-logind.conf %config(noreplace) %{_sysconfdir}/systemd/systemd-journald.conf %config(noreplace) %{_sysconfdir}/systemd/user.conf %config(noreplace) %{_sysconfdir}/systemd/system.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 %config(noreplace) %{_sysconfdir}/rsyslog.d/listen.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 %{_datadir}/polkit-1 %{_datadir}/polkit-1/actions %{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy %{_datadir}/systemd %if %{build_plymouth} # Packaged in plymouth subpackage %exclude /lib/systemd/system/plymouth-*.service %exclude /lib/systemd/system/*.wants/plymouth-*.service %exclude /lib/systemd/system/systemd-ask-password-plymouth.* %endif # Packaged in gtk subpackage %exclude %{_mandir}/man1/systemadm.1* # 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* %{_mandir}/man1/*.1* %{_mandir}/man3/*.3* %{_mandir}/man5/*.5* %{_mandir}/man7/*.7* %{_mandir}/man8/*.8* %{_docdir}/systemd /lib/udev/rules.d/*.rules %dir /lib/systemd /lib/systemd/system /lib/systemd/system-generators %dir /usr/lib/systemd /usr/lib/systemd/user %dir %{_sysconfdir}/systemd %dir %{_sysconfdir}/bash_completion.d /etc/bash_completion.d/systemd-bash-completion.sh /etc/rpm/macros.systemd %dir /var/lib/systemd %dir /var/lib/systemd/sysv-convert %dir /var/lib/systemd/migrated %dir /var/log/journal %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 %{_datadir}/pkgconfig/systemd.pc %{_libdir}/pkgconfig/libsystemd-daemon.pc %{_libdir}/pkgconfig/libsystemd-login.pc %{_libdir}/pkgconfig/libsystemd-id128.pc %{_libdir}/pkgconfig/libsystemd-journal.pc %if %{build_plymouth} %files plymouth %defattr(-,root,root,-) /lib/systemd/system/plymouth-*.service /lib/systemd/system/*.wants/plymouth-*.service /lib/systemd/system/systemd-ask-password-plymouth.* %endif %files sysvinit %defattr(-,root,root,-) /sbin/init /sbin/reboot /sbin/halt /sbin/shutdown /sbin/poweroff /sbin/telinit /sbin/runlevel %{_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* %changelog