# TODO:
-# - remove compat-pld-var-run.tmpfiles and maybe tmpfiles-not-fatal.patch
-# after enough packages provide their own tmpfiles.d configs for
-# /var/run directories
# - pldize vconsole setup:
# http://cgit.freedesktop.org/systemd/systemd/tree/src/vconsole/vconsole-setup.c
# - udev initrd needs love (is probably completly unusable in current form)
-# - udev stores it's data now to /run/udev, but that dir is not owned and not even on tmpfs
-#
#
# Conditional build:
%bcond_without audit # without audit support
%bcond_without selinux # without SELinux support
%bcond_without tcpd # libwrap (tcp_wrappers) support
-%bcond_with initrd # build without udev-initrd
+%bcond_without initrd # build without udev-initrd
%bcond_with uClibc # link initrd version with static uClibc
%bcond_with klibc # link initrd version with static klibc
%bcond_with dietlibc # link initrd version with static dietlibc (currently broken and unsupported)
Name: systemd
# Verify ChangeLog and NEWS when updating (since there are incompatible/breaking changes very often)
Version: 183
-Release: 0.1
+Release: 0.7
Epoch: 1
License: GPL v2+
Group: Base
Source1: %{name}-sysv-convert
Source2: %{name}_booted.c
Source3: network.service
-Source5: compat-pld-var-run.tmpfiles
-Source6: var-lock.mount
-Source7: var-run.mount
+Source4: var-lock.mount
+Source5: var-run.mount
Source10: pld-storage-init-late.service
Source11: pld-storage-init.service
Source12: pld-wait-storage.service
Patch7: udev-uClibc.patch
Patch8: udev-ploop-rules.patch
Patch9: udevlibexecdir.patch
+Patch10: static-udev.patch
+Patch11: systemd-udev-service.patch
+Patch12: udevadm-in-sbin.patch
URL: http://www.freedesktop.org/wiki/Software/systemd
BuildRequires: acl-devel
%{?with_audit:BuildRequires: audit-libs-devel}
BuildRequires: xz-static
BuildRequires: zlib-static
%endif
-Requires: %{name}-libs = %{version}-%{release}
-Requires: %{name}-units = %{version}-%{release}
+Requires: %{name}-libs = %{epoch}:%{version}-%{release}
+Requires: %{name}-units = %{epoch}:%{version}-%{release}
Requires: /etc/os-release
Requires: SysVinit-tools
Requires: agetty
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: service(klogd)
Suggests: service(syslog)
Provides: udev-acl
+Obsoletes: systemd-no-compat-tmpfiles
# systemd takes care of that and causes problems
Conflicts: binfmt-detector
# sytemd wants pam with pam_systemd.so in system-auth...
Conflicts: multipath-tools < 0.4.9-7
# no tmpfs on /media, use /run/media/$USER for mounting
Conflicts: udisks2 < 1.92.0
+# packages that have dirs under /var/run and/or /var/lock must provide tmpfiles configs
+Conflicts: ConsoleKit-dirs < 0.4.5-7
+Conflicts: NetworkManager < 2:0.9.2.0-3
+Conflicts: Zope < 2.11.8-2
+Conflicts: amavisd-new < 1:2.7.0-1
+Conflicts: apache-base < 2.2.21-4
+Conflicts: apache-mod_bw < 0.92-3
+Conflicts: apache-mod_fastcgi < 2.4.6-6
+Conflicts: apache1-base < 1.3.42-5
+Conflicts: apache1-mod_fastcgi < 2.4.6-2
+Conflicts: asterisk < 10.0.1-2
+Conflicts: autossh-init < 1.4b-3
+Conflicts: balance < 3.54-2
+Conflicts: bind < 7:9.8.1.P1-4
+Conflicts: bopm < 3.1.3-4
+Conflicts: callweaver < 1.2.1-9
+Conflicts: cassandra-bin < 0.8.9-2
+Conflicts: clamav < 0.97.3-3
+Conflicts: cups < 1:1.5.0-10
+Conflicts: dbus < 1.4.16-4
+Conflicts: dovecot < 1:2.0.16-3
+Conflicts: dspam < 3.9.0-6
+Conflicts: fail2ban < 0.8.4-4
+Conflicts: filesystem < 4.0-3
+Conflicts: gammu-smsd < 1:1.31.0-3
+# 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: jabber-common < 0-9
+Conflicts: laptop-mode-tools < 1.58-2
+Conflicts: libgpod < 0.8.0-6
+Conflicts: libvirt-utils < 0.9.9-4
+Conflicts: lighttpd < 1.4.30-5
+Conflicts: lirc < 0.9.0-20
+Conflicts: mailman < 5:2.1.14-4
+Conflicts: memcached < 1.4.11-2
+Conflicts: mpd < 0.16.5-4
+Conflicts: mrtg < 2.17.0-3
+Conflicts: munin-common < 1.4.5-5
+Conflicts: nagios-nrpe < 2.13-2
+Conflicts: ndisc6-rdnssd < 1.0.1-3
+Conflicts: nscd < 6:2.14.1-5
+Conflicts: nss_ldapd-nslcd < 0.8.4-2
+Conflicts: openct < 0.6.20-3
+Conflicts: openl2tp < 1.8-3
+Conflicts: openldap-overlay-nssov < 2.4.28-4
+Conflicts: openldap-servers < 2.4.28-4
+Conflicts: openvpn < 2.2.2-2
+Conflicts: pam-pam_mount < 2.12-3
+Conflicts: pam-pam_ssh < 1.97-2
+Conflicts: pcsc-lite < 1.8.1-2
+Conflicts: php-dirs < 1.2-3
+Conflicts: policyd < 2.0.10-3
+Conflicts: pound < 2.6-2
+Conflicts: pptp < 1.7.2-3
+Conflicts: proftpd-common < 2:1.3.4a-2
+Conflicts: pulseaudio-server < 1.1-2
+Conflicts: quagga < 0.99.20-3
+Conflicts: radvd < 1.8.5-2
+Conflicts: rc-scripts < 0.4.5.2-3
+Conflicts: red5 < 0.9.0-2
+Conflicts: redis-server < 2.4.2-4
+Conflicts: smokeping < 2.4.2-10
+Conflicts: smtp-gated < 1.4.17-2
+Conflicts: socat < 1.7.2.0-2
+Conflicts: speech-dispatcher < 0.7.1-2
+Conflicts: sphinx < 2.0.3-4
+Conflicts: splashutils < 1.5.4.3-3
+Conflicts: stunnel < 4.50-2
+Conflicts: tenshi < 0.12-2
+Conflicts: tor < 0.2.2.35-2
+Conflicts: ucarp < 1.5.2-3
+Conflicts: udisks < 1.0.4-3
+Conflicts: util-vserver < 0.30.216-1.pre3002.3
+Conflicts: vpnc < 0.5.3-2
+Conflicts: web2ldap < 1.1.0rc1-2
+Conflicts: wesnoth-server < 1:1.10-2
+Conflicts: wpa_supplicant < 0.7.3-10
+Conflicts: xl2tpd < 1.3.0-2
+# end of tmpfiles conflicts
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _sbindir /sbin
Summary: Plymouth support units for systemd
Summary(pl.UTF-8): Jednostki wspierające Plymouth dla systemd
Group: Base
-Requires: %{name}-units = %{version}-%{release}
+Requires: %{name}-units = %{epoch}:%{version}-%{release}
Requires: plymouth
%description plymouth
%package analyze
Summary: Tool for processing systemd profiling information
Group: Base
-Requires: %{name} = %{version}-%{release}
+Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: python-dbus
Requires: python-modules
Requires: python-pycairo
Summary: Header files for systemd libraries
Summary(pl.UTF-8): Pliki nagłówkowe bibliotek systemd
Group: Development/Libraries
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name}-libs = %{epoch}:%{version}-%{release}
%description devel
Header files for systemd libraries.
Summary: bash-completion for systemd
Summary(pl.UTF-8): Bashowe dopełnianie składni dla systemd
Group: Applications/Shells
-Requires: %{name} = %{version}
+Requires: %{name} = %{epoch}:%{version}
Requires: bash-completion
%description -n bash-completion-systemd
%description -n bash-completion-systemd -l pl.UTF-8
Bashowe dopełnianie składni dla systemd
-%package no-compat-tmpfiles
-Summary: Force update of packages that provide tmpfiles.d configuration
-Group: Base
-Requires: %{name} = %{version}-%{release}
-Requires(post): sed > 4.0
-Conflicts: ConsoleKit-dirs < 0.4.5-7
-Conflicts: NetworkManager < 2:0.9.2.0-3
-Conflicts: Zope < 2.11.8-2
-Conflicts: amavisd-new < 1:2.7.0-1
-Conflicts: apache-base < 2.2.21-4
-Conflicts: apache-mod_bw < 0.92-3
-Conflicts: apache-mod_fastcgi < 2.4.6-6
-Conflicts: apache1-base < 1.3.42-5
-Conflicts: apache1-mod_fastcgi < 2.4.6-2
-Conflicts: asterisk < 10.0.1-2
-Conflicts: autossh-init < 1.4b-3
-Conflicts: balance < 3.54-2
-Conflicts: bind < 7:9.8.1.P1-4
-Conflicts: bopm < 3.1.3-4
-Conflicts: callweaver < 1.2.1-9
-Conflicts: cassandra-bin < 0.8.9-2
-Conflicts: clamav < 0.97.3-3
-Conflicts: cups < 1:1.5.0-10
-Conflicts: dbus < 1.4.16-4
-Conflicts: dovecot < 1:2.0.16-3
-Conflicts: dspam < 3.9.0-6
-Conflicts: fail2ban < 0.8.4-4
-Conflicts: filesystem < 4.0-3
-Conflicts: gammu-smsd < 1:1.31.0-3
-# 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: jabber-common < 0-9
-Conflicts: laptop-mode-tools < 1.58-2
-Conflicts: libgpod < 0.8.0-6
-Conflicts: libvirt-utils < 0.9.9-4
-Conflicts: lighttpd < 1.4.30-5
-Conflicts: lirc < 0.9.0-20
-Conflicts: mailman < 5:2.1.14-4
-Conflicts: memcached < 1.4.11-2
-Conflicts: mpd < 0.16.5-4
-Conflicts: mrtg < 2.17.0-3
-Conflicts: munin-common < 1.4.5-5
-Conflicts: nagios-nrpe < 2.13-2
-Conflicts: ndisc6-rdnssd < 1.0.1-3
-Conflicts: nscd < 6:2.14.1-5
-Conflicts: nss_ldapd-nslcd < 0.8.4-2
-Conflicts: openct < 0.6.20-3
-Conflicts: openl2tp < 1.8-3
-Conflicts: openldap-overlay-nssov < 2.4.28-4
-Conflicts: openldap-servers < 2.4.28-4
-Conflicts: openvpn < 2.2.2-2
-Conflicts: pam-pam_mount < 2.12-3
-Conflicts: pam-pam_ssh < 1.97-2
-Conflicts: pcsc-lite < 1.8.1-2
-Conflicts: php-dirs < 1.2-3
-Conflicts: policyd < 2.0.10-3
-Conflicts: pound < 2.6-2
-Conflicts: pptp < 1.7.2-3
-Conflicts: proftpd-common < 2:1.3.4a-2
-Conflicts: pulseaudio-server < 1.1-2
-Conflicts: quagga < 0.99.20-3
-Conflicts: radvd < 1.8.5-2
-Conflicts: rc-scripts < 0.4.5.2-3
-Conflicts: red5 < 0.9.0-2
-Conflicts: redis-server < 2.4.2-4
-Conflicts: smokeping < 2.4.2-10
-Conflicts: smtp-gated < 1.4.17-2
-Conflicts: socat < 1.7.2.0-2
-Conflicts: speech-dispatcher < 0.7.1-2
-Conflicts: sphinx < 2.0.3-4
-Conflicts: splashutils < 1.5.4.3-3
-Conflicts: stunnel < 4.50-2
-Conflicts: tenshi < 0.12-2
-Conflicts: tor < 0.2.2.35-2
-Conflicts: ucarp < 1.5.2-3
-Conflicts: udisks < 1.0.4-3
-Conflicts: util-vserver < 0.30.216-1.pre3002.3
-Conflicts: vpnc < 0.5.3-2
-Conflicts: web2ldap < 1.1.0rc1-2
-Conflicts: wesnoth-server < 1:1.10-2
-Conflicts: wpa_supplicant < 0.7.3-10
-Conflicts: xl2tpd < 1.3.0-2
-
-%description no-compat-tmpfiles
-Force update of packages that provide tmpfiles.d configuration
-
%package -n udev
Summary: Device manager for the Linux 2.6 kernel series
Summary(pl.UTF-8): Zarządca urządzeń dla Linuksa 2.6
%endif
%patch8 -p1
%patch9 -p1
+%patch11 -p1
+%patch12 -p1
cp -p %{SOURCE2} src/systemd_booted.c
+%{__mv} src/udev/keymap/keyboard-force-release.sh{,.in}
+
%build
%{__gtkdocize}
%{__libtoolize}
%{__autoconf}
%{__autoheader}
%{__automake}
+%if %{with initrd}
+patch -p1 <%{PATCH10}
+%configure \
+%if "%{?configure_cache}" == "1"
+ --cache-file=%{?configure_cache_file}%{!?configure_cache_file:configure}-initrd.cache \
+%endif
+ %{?with_uClibc:CC="%{_target_cpu}-uclibc-gcc"} \
+ %{?with_dietlibc:CC="diet %{__cc} %{rpmcflags} %{rpmldflags} -Os -D_BSD_SOURCE"} \
+ %{?with_klibc:CC="%{_bindir}/klcc"} \
+ %{?debug:--enable-debug} \
+ --disable-silent-rules \
+ --disable-shared \
+ --enable-static \
+ --with-distro=pld \
+ --with-rootprefix="" \
+ --with-rootlibdir=/%{_lib} \
+ --disable-rule_generator \
+ --disable-gudev \
+ --disable-keymap \
+ --disable-gtk-doc \
+ --disable-introspection \
+ --disable-logging \
+ --with-pci-ids-path=%{_sysconfdir}/pci.ids \
+ --disable-audit \
+ --disable-cryptsetup \
+ --disable-pam \
+ --disable-plymouth \
+ --disable-selinux \
+ --disable-tcpd \
+ --enable-split-usr
+
+%{__make} \
+ libudev-core.la \
+ systemd-udevd \
+ udevadm \
+ ata_id \
+ cdrom_id \
+ collect \
+ scsi_id \
+ v4l_id \
+ accelerometer \
+ mtd_probe \
+ LDFLAGS="-all-static" \
+ KMOD_LIBS="-lkmod -lz -llzma"
+
+mkdir udev-initrd
+cp -a systemd-udevd \
+ udevadm \
+ ata_id \
+ cdrom_id \
+ collect \
+ scsi_id \
+ v4l_id \
+ accelerometer \
+ mtd_probe \
+ udev-initrd/
+
+%{__make} clean
+patch -p1 -R <%{PATCH10}
+%endif
+
%configure \
%{?debug:--enable-debug} \
%{__enable_disable audit} \
%{__enable_disable selinux} \
%{__enable_disable tcpd tcpwrap} \
--disable-silent-rules \
+ --enable-shared \
+ --enable-static \
--with-distro=pld \
--with-rootprefix="" \
--with-rootlibdir=/%{_lib} \
--with-html-dir=%{_gtkdocdir} \
--with-pci-ids-path=%{_sysconfdir}/pci.ids \
- --with-rootprefix="" \
--enable-gtk-doc \
--enable-introspection \
- --enable-shared \
- --enable-static \
--enable-split-usr
%{__make}
# compat symlinks for "/ merged into /usr" programs
mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/udevadm
ln -s %{_sbindir}/udevadm $RPM_BUILD_ROOT%{_bindir}
+ln -s /lib/udev $RPM_BUILD_ROOT/usr/lib/
# install custom udev rules from pld package
cp -a %{SOURCE101} $RPM_BUILD_ROOT%{_sysconfdir}/udev/rules.d/40-alsa-restore.rules
%if %{with initrd}
install -d $RPM_BUILD_ROOT%{_libdir}/initrd/udev
-install -p udev-initrd/sbin/udevadm $RPM_BUILD_ROOT%{_libdir}/initrd
-install -p udev-initrd/lib/udev/udevd $RPM_BUILD_ROOT%{_libdir}/initrd
+install -p udev-initrd/udevadm $RPM_BUILD_ROOT%{_libdir}/initrd
+install -p udev-initrd/systemd-udevd $RPM_BUILD_ROOT%{_libdir}/initrd
+# hardlink udevd -> systemd-udevd
+ln $RPM_BUILD_ROOT%{_libdir}/initrd/{systemd-,}udevd
ln -s udevd $RPM_BUILD_ROOT%{_libdir}/initrd/udevstart
-install -p udev-initrd/lib/udev/*_id $RPM_BUILD_ROOT%{_libdir}/initrd/udev
-install -p udev-initrd/lib/udev/collect $RPM_BUILD_ROOT%{_libdir}/initrd/udev
+install -p udev-initrd/*_id $RPM_BUILD_ROOT%{_libdir}/initrd/udev
+install -p udev-initrd/collect $RPM_BUILD_ROOT%{_libdir}/initrd/udev
+install -p udev-initrd/mtd_probe $RPM_BUILD_ROOT%{_libdir}/initrd/udev
%endif
# Main binary has been moved, but we don't want to break existing installs
# add static (non-NetworkManager) networking
cp -p %{SOURCE3} $RPM_BUILD_ROOT%{systemdunitdir}/network.service
-# install compatibility tmpfiles configs
-cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/tmpfiles.d/compat-pld-var-run.conf
-
# restore bind-mounts /var/run -> run and /var/lock -> /run/lock
# we don't have those directories symlinked
-cp -p %{SOURCE6} $RPM_BUILD_ROOT%{systemdunitdir}/var-lock.mount
-cp -p %{SOURCE7} $RPM_BUILD_ROOT%{systemdunitdir}/var-run.mount
+cp -p %{SOURCE4} $RPM_BUILD_ROOT%{systemdunitdir}/var-lock.mount
+cp -p %{SOURCE5} $RPM_BUILD_ROOT%{systemdunitdir}/var-run.mount
+ln -s ../var-lock.mount $RPM_BUILD_ROOT%{systemdunitdir}/local-fs.target.wants
+ln -s ../var-run.mount $RPM_BUILD_ROOT%{systemdunitdir}/local-fs.target.wants
# and remove tmp on tmpfs mount
%{__rm} $RPM_BUILD_ROOT%{systemdunitdir}/tmp.mount
+%{__rm} $RPM_BUILD_ROOT%{systemdunitdir}/local-fs.target.wants/tmp.mount
# Install and enable storage subsystems support services (RAID, LVM, etc.)
cp -p %{SOURCE10} $RPM_BUILD_ROOT%{systemdunitdir}/pld-storage-init-late.service
/bin/systemctl daemon-reload > /dev/null 2>&1 || :
fi
-%triggerpostun units -- %{name}-units < 43-7
+%triggerpostun units -- systemd-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
%triggerpostun -n udev-core -- udev < 165
/sbin/udevadm info --convert-db
-%triggerpostun -n udev-core -- %{name}-core < 1:175-4
-%systemd_trigger udev-settle.service
+%triggerpostun -n udev-core -- udev-core < 1:183
+/bin/systemctl --quiet enable systemd-udev-settle.service || :
+%{__rm} -f /etc/systemd/system/basic.target.wants/udev-settle.service || :
%post -n udev-core
if [ $1 -gt 1 ]; then
if [ ! -x /bin/systemd_booted ] || ! /bin/systemd_booted; then
if grep -qs devtmpfs /proc/mounts && [ -n "$(pidof udevd)" ]; then
/sbin/udevadm control --exit
- /lib/udev/udevd --daemon
+ /lib/systemd/systemd-udevd --daemon
fi
else
SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog \
- /bin/systemctl --quiet try-restart udev.service || :
+ /bin/systemctl --quiet try-restart systemd-udev.service || :
fi
fi
-%systemd_post udev-settle.service
+%systemd_post systemd-udev-settle.service
%preun -n udev-core
-%systemd_preun udev-settle.service
+%systemd_preun systemd-udev-settle.service
%postun -n udev-core
%systemd_reload
%dir %{_sysconfdir}/systemd
%dir %{_sysconfdir}/systemd/system
%dir %{_sysconfdir}/tmpfiles.d
-%config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/tmpfiles.d/*.conf
%dir %{_libexecdir}/binfmt.d
%dir %{_libexecdir}/modules-load.d
%dir %{_libexecdir}/sysctl.d
%{systemdunitdir}/*.socket
%{systemdunitdir}/*.target
%{systemdunitdir}/*.timer
+%exclude %{systemdunitdir}/systemd-udev*.*
%if %{with plymouth}
%exclude %{systemdunitdir}/plymouth*.service
%exclude %{systemdunitdir}/systemd-ask-password-plymouth.*
%defattr(644,root,root,755)
/etc/bash_completion.d/systemd-bash-completion.sh
-%files no-compat-tmpfiles
-%defattr(644,root,root,755)
-# empty package
-
%files -n udev
%defattr(644,root,root,755)
%dev(c,1,3) %attr(666,root,root) /dev/null
%defattr(644,root,root,755)
%dir /lib/udev
+/usr/lib/udev
-# /lib/udev/devices is recommended as a directory where packages or
-# the user can place real device nodes, which get copied over to /dev at
-# every boot. This should replace the various solutions with custom config
-# files.
+# /lib/udev/devices/ are not read anymore; systemd-tmpfiles
+# should be used to create dead device nodes as workarounds for broken
+# subsystems.
%dir /lib/udev/devices
%attr(755,root,root) /lib/udev/collect
%{_mandir}/man8/udevadm.8*
%{_mandir}/man8/udevd.8*
-#{systemdunitdir}/basic.target.wants/udev-trigger.service
-#{systemdunitdir}/basic.target.wants/udev.service
%{systemdunitdir}/sockets.target.wants/systemd-udev-control.socket
%{systemdunitdir}/sockets.target.wants/systemd-udev-kernel.socket
%{systemdunitdir}/systemd-udev-control.socket
%files -n udev-initrd
%defattr(644,root,root,755)
%dir %{_libdir}/initrd/udev
+%attr(755,root,root) %{_libdir}/initrd/systemd-udevd
%attr(755,root,root) %{_libdir}/initrd/udevd
%attr(755,root,root) %{_libdir}/initrd/udevadm
%attr(755,root,root) %{_libdir}/initrd/udevstart
%attr(755,root,root) %{_libdir}/initrd/udev/*_id
%attr(755,root,root) %{_libdir}/initrd/udev/collect
+%attr(755,root,root) %{_libdir}/initrd/udev/mtd_probe
%endif