systemd/systemd.spec
Marcus Meissner f8f2bd4b02 - links more manpages for migrated tools (from Christopher
Yeleighton).
- disable boot.localnet service, ypbind service will do the right
  thing now (bnc#716746)
- add xdm-display-manager.patch: pull xdm.service instead of
  display-manager.service (needed until xdm initscript is migrated
  to native systemd service).
- Add fix-permissions-btmp.patch: ensure btmp is owned only by root
  (bnc#777405).
- Have the udev package create a tape group, as referenced by
  50-udev-default.rules and 60-persistent-storage-tape.rules
  (DimStar).
- Add fix-bad-memory-access.patch: fix crash in journal rotation.
- Add fix-dbus-crash.patch: fix D-Bus caused crash.
- Add sync-on-shutdown.patch: ensure sync is done when initiating
  shutdown.
- Add mount-efivars.patch: mount efivars if booting on UEFI.

- Ship a empty systemd-journald initscript in systemd-logger to
  stop insserv to complain about missing syslog dependency.
- Update
  0001-service-Fix-dependencies-added-when-parsing-insserv..patch
  with bug fixes from Debian.


old: Base:System/systemd
new: home:fcrozat:branches:Base:System/systemd rev NoneIndex: 0001-service-Fix-dependencies-added-when-parsing-insserv..patch
===================================================================
--- 0001-service-Fix-dependencies-added-when-parsing-insserv..patch (revision 311)
+++ 0001-service-Fix-dependencies-added-when-parsing-insserv..patch (revision 5)
@@ -1,17 +1,35 @@
-From 6620bceb7233a830be3635a4f7a7dc75c13a9c8e Mon Sep 17 00:00:00 2001
-From: Frederic Crozat <fcrozat@suse.com>
-Date: Fri, 30 Sep 2011 14:12:45 +0200
-Subject: [PATCH] service: Fix dependencies added when parsing insserv.conf
-
----
- src/service.c |   16 +++++++++-------
- 1 files changed, 9 insertions(+), 7 deletions(-)
-
-Index: systemd-41/src/service.c
+Index: systemd-195/src/core/service.c
 ===================================================================
---- systemd-41.orig/src/core/service.c
-+++ systemd-41/src/core/service.c
-@@ -3210,23 +3210,30 @@ static void sysv_facility_in_insserv_con
+--- systemd-195.orig/src/core/service.c
++++ systemd-195/src/core/service.c
+@@ -3391,12 +3391,13 @@ static void service_notify_message(Unit
+ 
+ #ifdef HAVE_SYSV_COMPAT
+ 
+-#ifdef TARGET_SUSE
+-static void sysv_facility_in_insserv_conf(Manager *mgr) {
+-        FILE *f=NULL;
++#if defined(TARGET_SUSE) || defined(TARGET_DEBIAN)
++static void sysv_parse_insserv_conf(Manager *mgr, const char* filename) {
++        FILE *f = NULL;
+         int r;
+ 
+-        if (!(f = fopen("/etc/insserv.conf", "re"))) {
++        if (!(f = fopen(filename, "re"))) {
++                log_error("Failed to open file %s", filename);
+                 r = errno == ENOENT ? 0 : -errno;
+                 goto finish;
+         }
+@@ -3410,7 +3411,7 @@ static void sysv_facility_in_insserv_con
+                                 break;
+ 
+                         r = -errno;
+-                        log_error("Failed to read configuration file '/etc/insserv.conf': %s", strerror(-r));
++                        log_error("Failed to read configuration file '%s': %s", filename, strerror(-r));
+                         goto finish;
+                 }
+ 
+@@ -3425,23 +3426,30 @@ static void sysv_facility_in_insserv_con
                          Unit *u;
                          if (sysv_translate_facility(parsed[0], NULL, &facility) < 0)
                                  continue;
@@ -29,12 +47,12 @@
                                  STRV_FOREACH (j, parsed+1) {
 -                                        if (*j[0]=='+') {
 -                                                e = UNIT_WANTS;
-+                                        if (*j[0]=='+')
++                                        if (*j[0] == '+')
                                                  name = *j+1;
 -                                        }
 -                                        else {
 -                                                e = UNIT_REQUIRES;
-+                                        else
++                                        else 
                                                  name = *j;
 -                                        }
 +                                        if (streq(name, "boot.localfs") ||
@@ -44,9 +62,54 @@
                                                  continue;
  
 -                                        r = unit_add_two_dependencies_by_name(u, UNIT_BEFORE, e, dep, NULL, true);
-+                                        r = unit_add_dependency_by_name_inverse(u, UNIT_BEFORE, dep, NULL, true);
-+                                        if (*j[0]!='+')
++                                        r = unit_add_two_dependencies_by_name_inverse(u, UNIT_WANTS, UNIT_BEFORE, dep, NULL, true);
++                                        if (*j[0] != '+')
 +                                                r = unit_add_dependency_by_name(u, UNIT_REQUIRES, dep, NULL, true);
                                          free(dep);
                                  }
                          }
+@@ -3454,6 +3462,35 @@ finish:
+                 fclose(f);
+ 
+ }
++
++static void sysv_facility_in_insserv_conf(Manager *mgr) {
++        DIR *d =NULL;
++        struct dirent *de;
++
++#ifdef TARGET_DEBIAN
++        if (!(d = opendir("/etc/insserv.conf.d/")))
++                if (errno != ENOENT) {
++                       log_warning("opendir() failed on /etc/insserv.conf.d/ %s", strerror(errno));
++                       goto finish;
++                }
++
++        while ((de = readdir(d))) {
++                char *path = NULL;
++                if (ignore_file(de->d_name))
++                        continue;
++
++                path = join("/etc/insserv.conf.d/", de->d_name, NULL);
++                sysv_parse_insserv_conf(mgr, path);
++                free(path);
++        }
++finish:
++        if (d)
++                closedir(d);
++#endif
++
++        sysv_parse_insserv_conf(mgr, "/etc/insserv.conf");
++}
++
+ #endif
+ 
+ static int service_enumerate(Manager *m) {
+@@ -3604,7 +3641,7 @@ static int service_enumerate(Manager *m)
+ 
+         r = 0;
+ 
+-#ifdef TARGET_SUSE
++#if defined(TARGET_SUSE) || defined(TARGET_DEBIAN)
+         sysv_facility_in_insserv_conf (m);
+ #endif
+ 
Index: systemd-mini.changes
===================================================================
--- systemd-mini.changes (revision 311)
+++ systemd-mini.changes (revision 5)
@@ -1,4 +1,35 @@
 -------------------------------------------------------------------
+Tue Nov 20 09:36:43 UTC 2012 - fcrozat@suse.com
+
+- links more manpages for migrated tools (from Christopher
+  Yeleighton).
+- disable boot.localnet service, ypbind service will do the right
+  thing now (bnc#716746)
+- add xdm-display-manager.patch: pull xdm.service instead of
+  display-manager.service (needed until xdm initscript is migrated
+  to native systemd service).
+- Add fix-permissions-btmp.patch: ensure btmp is owned only by root
+  (bnc#777405).
+- Have the udev package create a tape group, as referenced by
+  50-udev-default.rules and 60-persistent-storage-tape.rules
+  (DimStar).
+- Add fix-bad-memory-access.patch: fix crash in journal rotation.
+- Add fix-dbus-crash.patch: fix D-Bus caused crash.
+- Add sync-on-shutdown.patch: ensure sync is done when initiating
+  shutdown.
+- Add mount-efivars.patch: mount efivars if booting on UEFI.
+
+
+-------------------------------------------------------------------
+Thu Nov 15 14:31:28 UTC 2012 - fcrozat@suse.com
+
+- Ship a empty systemd-journald initscript in systemd-logger to
+  stop insserv to complain about missing syslog dependency.
+- Update
+  0001-service-Fix-dependencies-added-when-parsing-insserv..patch
+  with bug fixes from Debian.
+
+-------------------------------------------------------------------
 Wed Nov 14 17:36:05 UTC 2012 - fcrozat@suse.com
 
 - /var/log/journal is now only provided by systemd-logger (journal
Index: systemd-mini.spec
===================================================================
--- systemd-mini.spec (revision 311)
+++ systemd-mini.spec (revision 5)
@@ -102,6 +102,7 @@
 Source5:        systemd-insserv_conf
 Source6:        baselibs.conf
 Source7:        libgcrypt.m4
+Source8:        systemd-journald.init
 
 Source1060:     boot.udev
 Source1061:     write_dev_root_rule
@@ -128,6 +129,8 @@
 Patch56:        support-suse-clock-sysconfig.patch
 Patch59:        fix-enable-disable-boot-initscript.patch
 Patch60:        var-run-lock.patch
+Patch63:        xdm-display-manager.patch
+Patch64:        fix-permissions-btmp.patch
 
 # Upstream First - Policy:
 # Never add any patches to this package without the upstream commit id
@@ -137,6 +140,14 @@
 Patch61:        fix-logind-pty-seat.patch
 # PATCH-FIX-UPSTREAM fix-build-glibc217.patch fcrozat@suse.com -- fix build with latest glibc
 Patch62:        fix-build-glibc217.patch
+# PATCH-FIX-UPSTREAM fix-bad-memory-access.patch fcrozat@suse.com -- fix bad memory access
+Patch65:        fix-bad-memory-access.patch
+# PATCH-FIX-UPSTREAM fix-dbus-crash.patch fcrozat@suse.com -- fix D-Bus caused crash
+Patch66:        fix-dbus-crash.patch
+# PATCH-FIX-UPSTREAM sync-on-shutdown.patch fcrozat@suse.com -- Sync on shutdown
+Patch67:        sync-on-shutdown.patch
+# PATCH-FIX-UPSTREAM mount-efivars.patch fcrozat@suse.com -- mount efivars if booting under UEFI
+Patch68:        mount-efivars.patch
 
 # udev patches
 # PATCH-FIX-OPENSUSE 0001-Reinstate-TIMEOUT-handling.patch
@@ -151,8 +162,6 @@
 # PATCH-FIX-OPENSUSE 0027-udev-fix-sg-autoload-regression.patch
 Patch1027:      0027-udev-fix-sg-autoload-regression.patch
 
-# systemd patches
-
 %description
 Systemd is a system and service manager, compatible with SysV and LSB
 init scripts for Linux. systemd provides aggressive parallelization
@@ -313,6 +322,7 @@
 %patch1026 -p1
 %patch1027 -p1
 
+#systemd
 %patch1 -p1
 %patch6 -p1
 # don't apply when bootstrapping to not modify configure.in
@@ -337,6 +347,12 @@
 %patch60 -p1
 %patch61 -p1
 %patch62 -p1
+%patch63 -p1
+%patch64 -p1
+%patch65 -p1
+%patch66 -p1
+%patch67 -p1
+%patch68 -p1
 
 %build
 autoreconf -fiv
@@ -368,8 +384,14 @@
 ln -sf %{_bindir}/systemd-ask-password $RPM_BUILD_ROOT/bin/systemd-ask-password
 ln -sf %{_bindir}/systemctl $RPM_BUILD_ROOT/bin/systemctl
 ln -sf %{_prefix}/lib/systemd/systemd-udevd $RPM_BUILD_ROOT/sbin/udevd
+%if ! 0%{?bootstrap}
+ln -sf systemd-udevd.8 $RPM_BUILD_ROOT/%{_mandir}/man8/udevd.8
+%endif
 mkdir -p $RPM_BUILD_ROOT/%{_prefix}/usr/lib/firmware/updates
 ln -sf /lib/firmware $RPM_BUILD_ROOT/usr/lib/firmware
+%if ! 0%{?bootstrap}
+install -m755 -D %{S:8} $RPM_BUILD_ROOT/etc/init.d/systemd-journald
+%endif
 
 install -m755 -D %{S:1060} $RPM_BUILD_ROOT/etc/init.d/boot.udev
 ln -s systemd-udevd.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/udev.service
@@ -378,11 +400,6 @@
 mkdir -p $RPM_BUILD_ROOT/lib/systemd/system/basic.target.wants
 ln -sf ../udev-root-symlink.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/basic.target.wants
 
-#fix manpages
-%if ! 0%{?bootstrap}
-sed -i -e 's,^\(\.so \)\(.*\.\)\([0-9]\),\1man\3/\2\3,g' %{buildroot}/%{_mandir}/*/*
-%endif
-
 #workaround for 716939
 chmod 644 %{buildroot}%{_bindir}/systemd-analyze
 mkdir -p %{buildroot}%{_sysconfdir}/rpm
@@ -392,7 +409,7 @@
 
 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:5} %{buildroot}/usr/lib/systemd/system-generators
 ln -s ../usr/lib/systemd/systemd %{buildroot}/bin/systemd
 ln -s ../usr/lib/systemd/systemd %{buildroot}/sbin/init
 ln -s ../usr/bin/systemctl %{buildroot}/sbin/reboot
@@ -415,8 +432,7 @@
 ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/ldconfig.service
 ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/loadmodules.service
 install -m644 %{S:2} %{buildroot}/%{_prefix}/lib/systemd/system/localfs.service
-# need to be implemented in systemd directly
-#ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/localnet.service
+ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/localnet.service
 ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/proc.service
 ln -s systemd-fsck-root.service %{buildroot}/%{_prefix}/lib/systemd/system/rootfsck.service
 ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/single.service
@@ -442,8 +458,12 @@
 %endif
 
 # legacy links
-ln -s loginctl %{buildroot}%{_bindir}/systemd-loginctl
-ln -s journalctl %{buildroot}%{_bindir}/systemd-journalctl
+for f in loginctl journalctl ; do 
+  ln -s $f %{buildroot}%{_bindir}/systemd-$f
+%if ! 0%{?bootstrap}
+  ln -s $f.1 %{buildroot}%{_mandir}/man1/systemd-$f.1
+%endif
+done
 ln -s /usr/lib/udev %{buildroot}/lib/udev
 
 # Create the /var/log/journal directory to change the volatile journal to a persistent one
@@ -532,6 +552,8 @@
 elif [ ! -e /lib/udev ]; then
   ln -s /usr/lib/udev /lib/udev
 fi
+# Create "tape" group which is referenced by 50-udev-default.rules and 60-persistent-storage-tape.rules
+/usr/sbin/groupadd -r tape 2> /dev/null || :
 # kill daemon if we are not in a chroot
 if test -f /proc/1/exe -a -d /proc/1/root ; then
         if test "$(stat -Lc '%%D-%%i' /)" = "$(stat -Lc '%%D-%%i' /proc/1/root)"; then
@@ -724,6 +746,10 @@
 %exclude %{_mandir}/man8/telinit.8*
 %exclude %{_mandir}/man8/runlevel.8*
 %exclude %{_mandir}/man*/*udev*.[0-9]*
+
+# Packaged in analyze subpackage
+%exclude %{_mandir}/man1/systemd-analyze.1*
+
 %{_mandir}/man1/*.1*
 %{_mandir}/man3/*.3*
 %{_mandir}/man5/*.5*
@@ -787,7 +813,11 @@
 %endif
 
 %files analyze
+%defattr(-,root,root)
 %attr(0755,root,root) /usr/bin/systemd-analyze
+%if ! 0%{?bootstrap}
+%{_mandir}/man1/systemd-analyze.1*
+%endif
 
 %files -n %{udevpkgname}
 %defattr(-,root,root)
@@ -878,6 +908,7 @@
 %defattr(-,root,root)
 %dir /var/log/journal
 /var/log/README
+/etc/init.d/systemd-journald
 
 %endif
 
Index: systemd.changes
===================================================================
--- systemd.changes (revision 311)
+++ systemd.changes (revision 5)
@@ -1,4 +1,35 @@
 -------------------------------------------------------------------
+Tue Nov 20 09:36:43 UTC 2012 - fcrozat@suse.com
+
+- links more manpages for migrated tools (from Christopher
+  Yeleighton).
+- disable boot.localnet service, ypbind service will do the right
+  thing now (bnc#716746)
+- add xdm-display-manager.patch: pull xdm.service instead of
+  display-manager.service (needed until xdm initscript is migrated
+  to native systemd service).
+- Add fix-permissions-btmp.patch: ensure btmp is owned only by root
+  (bnc#777405).
+- Have the udev package create a tape group, as referenced by
+  50-udev-default.rules and 60-persistent-storage-tape.rules
+  (DimStar).
+- Add fix-bad-memory-access.patch: fix crash in journal rotation.
+- Add fix-dbus-crash.patch: fix D-Bus caused crash.
+- Add sync-on-shutdown.patch: ensure sync is done when initiating
+  shutdown.
+- Add mount-efivars.patch: mount efivars if booting on UEFI.
+
+
+-------------------------------------------------------------------
+Thu Nov 15 14:31:28 UTC 2012 - fcrozat@suse.com
+
+- Ship a empty systemd-journald initscript in systemd-logger to
+  stop insserv to complain about missing syslog dependency.
+- Update
+  0001-service-Fix-dependencies-added-when-parsing-insserv..patch
+  with bug fixes from Debian.
+
+-------------------------------------------------------------------
 Wed Nov 14 17:36:05 UTC 2012 - fcrozat@suse.com
 
 - /var/log/journal is now only provided by systemd-logger (journal
Index: systemd.spec
===================================================================
--- systemd.spec (revision 311)
+++ systemd.spec (revision 5)
@@ -97,6 +97,7 @@
 Source5:        systemd-insserv_conf
 Source6:        baselibs.conf
 Source7:        libgcrypt.m4
+Source8:        systemd-journald.init
 
 Source1060:     boot.udev
 Source1061:     write_dev_root_rule
@@ -123,6 +124,8 @@
 Patch56:        support-suse-clock-sysconfig.patch
 Patch59:        fix-enable-disable-boot-initscript.patch
 Patch60:        var-run-lock.patch
+Patch63:        xdm-display-manager.patch
+Patch64:        fix-permissions-btmp.patch
 
 # Upstream First - Policy:
 # Never add any patches to this package without the upstream commit id
@@ -132,6 +135,14 @@
 Patch61:        fix-logind-pty-seat.patch
 # PATCH-FIX-UPSTREAM fix-build-glibc217.patch fcrozat@suse.com -- fix build with latest glibc
 Patch62:        fix-build-glibc217.patch
+# PATCH-FIX-UPSTREAM fix-bad-memory-access.patch fcrozat@suse.com -- fix bad memory access
+Patch65:        fix-bad-memory-access.patch
+# PATCH-FIX-UPSTREAM fix-dbus-crash.patch fcrozat@suse.com -- fix D-Bus caused crash
+Patch66:        fix-dbus-crash.patch
+# PATCH-FIX-UPSTREAM sync-on-shutdown.patch fcrozat@suse.com -- Sync on shutdown
+Patch67:        sync-on-shutdown.patch
+# PATCH-FIX-UPSTREAM mount-efivars.patch fcrozat@suse.com -- mount efivars if booting under UEFI
+Patch68:        mount-efivars.patch
 
 # udev patches
 # PATCH-FIX-OPENSUSE 0001-Reinstate-TIMEOUT-handling.patch
@@ -146,8 +157,6 @@
 # PATCH-FIX-OPENSUSE 0027-udev-fix-sg-autoload-regression.patch
 Patch1027:      0027-udev-fix-sg-autoload-regression.patch
 
-# systemd patches
-
 %description
 Systemd is a system and service manager, compatible with SysV and LSB
 init scripts for Linux. systemd provides aggressive parallelization
@@ -308,6 +317,7 @@
 %patch1026 -p1
 %patch1027 -p1
 
+#systemd
 %patch1 -p1
 %patch6 -p1
 # don't apply when bootstrapping to not modify configure.in
@@ -332,6 +342,12 @@
 %patch60 -p1
 %patch61 -p1
 %patch62 -p1
+%patch63 -p1
+%patch64 -p1
+%patch65 -p1
+%patch66 -p1
+%patch67 -p1
+%patch68 -p1
 
 %build
 autoreconf -fiv
@@ -363,8 +379,14 @@
 ln -sf %{_bindir}/systemd-ask-password $RPM_BUILD_ROOT/bin/systemd-ask-password
 ln -sf %{_bindir}/systemctl $RPM_BUILD_ROOT/bin/systemctl
 ln -sf %{_prefix}/lib/systemd/systemd-udevd $RPM_BUILD_ROOT/sbin/udevd
+%if ! 0%{?bootstrap}
+ln -sf systemd-udevd.8 $RPM_BUILD_ROOT/%{_mandir}/man8/udevd.8
+%endif
 mkdir -p $RPM_BUILD_ROOT/%{_prefix}/usr/lib/firmware/updates
 ln -sf /lib/firmware $RPM_BUILD_ROOT/usr/lib/firmware
+%if ! 0%{?bootstrap}
+install -m755 -D %{S:8} $RPM_BUILD_ROOT/etc/init.d/systemd-journald
+%endif
 
 install -m755 -D %{S:1060} $RPM_BUILD_ROOT/etc/init.d/boot.udev
 ln -s systemd-udevd.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/udev.service
@@ -373,11 +395,6 @@
 mkdir -p $RPM_BUILD_ROOT/lib/systemd/system/basic.target.wants
 ln -sf ../udev-root-symlink.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/basic.target.wants
 
-#fix manpages
-%if ! 0%{?bootstrap}
-sed -i -e 's,^\(\.so \)\(.*\.\)\([0-9]\),\1man\3/\2\3,g' %{buildroot}/%{_mandir}/*/*
-%endif
-
 #workaround for 716939
 chmod 644 %{buildroot}%{_bindir}/systemd-analyze
 mkdir -p %{buildroot}%{_sysconfdir}/rpm
@@ -387,7 +404,7 @@
 
 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:5} %{buildroot}/usr/lib/systemd/system-generators
 ln -s ../usr/lib/systemd/systemd %{buildroot}/bin/systemd
 ln -s ../usr/lib/systemd/systemd %{buildroot}/sbin/init
 ln -s ../usr/bin/systemctl %{buildroot}/sbin/reboot
@@ -410,8 +427,7 @@
 ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/ldconfig.service
 ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/loadmodules.service
 install -m644 %{S:2} %{buildroot}/%{_prefix}/lib/systemd/system/localfs.service
-# need to be implemented in systemd directly
-#ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/localnet.service
+ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/localnet.service
 ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/proc.service
 ln -s systemd-fsck-root.service %{buildroot}/%{_prefix}/lib/systemd/system/rootfsck.service
 ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/single.service
@@ -437,8 +453,12 @@
 %endif
 
 # legacy links
-ln -s loginctl %{buildroot}%{_bindir}/systemd-loginctl
-ln -s journalctl %{buildroot}%{_bindir}/systemd-journalctl
+for f in loginctl journalctl ; do 
+  ln -s $f %{buildroot}%{_bindir}/systemd-$f
+%if ! 0%{?bootstrap}
+  ln -s $f.1 %{buildroot}%{_mandir}/man1/systemd-$f.1
+%endif
+done
 ln -s /usr/lib/udev %{buildroot}/lib/udev
 
 # Create the /var/log/journal directory to change the volatile journal to a persistent one
@@ -527,6 +547,8 @@
 elif [ ! -e /lib/udev ]; then
   ln -s /usr/lib/udev /lib/udev
 fi
+# Create "tape" group which is referenced by 50-udev-default.rules and 60-persistent-storage-tape.rules
+/usr/sbin/groupadd -r tape 2> /dev/null || :
 # kill daemon if we are not in a chroot
 if test -f /proc/1/exe -a -d /proc/1/root ; then
         if test "$(stat -Lc '%%D-%%i' /)" = "$(stat -Lc '%%D-%%i' /proc/1/root)"; then
@@ -719,6 +741,10 @@
 %exclude %{_mandir}/man8/telinit.8*
 %exclude %{_mandir}/man8/runlevel.8*
 %exclude %{_mandir}/man*/*udev*.[0-9]*
+
+# Packaged in analyze subpackage
+%exclude %{_mandir}/man1/systemd-analyze.1*
+
 %{_mandir}/man1/*.1*
 %{_mandir}/man3/*.3*
 %{_mandir}/man5/*.5*
@@ -782,7 +808,11 @@
 %endif
 
 %files analyze
+%defattr(-,root,root)
 %attr(0755,root,root) /usr/bin/systemd-analyze
+%if ! 0%{?bootstrap}
+%{_mandir}/man1/systemd-analyze.1*
+%endif
 
 %files -n %{udevpkgname}
 %defattr(-,root,root)
@@ -873,6 +903,7 @@
 %defattr(-,root,root)
 %dir /var/log/journal
 /var/log/README
+/etc/init.d/systemd-journald
 
 %endif
 
Index: fix-bad-memory-access.patch
===================================================================
--- fix-bad-memory-access.patch (added)
+++ fix-bad-memory-access.patch (revision 5)
@@ -0,0 +1,23 @@
+From 7d73c1343be02a59b17de0cd34375deeb815d89c Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 20 Nov 2012 00:19:27 +0100
+Subject: [PATCH] journald: fix bad memory access
+
+https://bugzilla.redhat.com/show_bug.cgi?id=875653
+---
+ src/journal/journald-server.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: systemd-195/src/journal/journald.c
+===================================================================
+--- systemd-195.orig/src/journal/journald.c
++++ systemd-195/src/journal/journald.c
+@@ -342,7 +342,7 @@ static void server_rotate(Server *s) {
+         HASHMAP_FOREACH_KEY(f, k, s->user_journals, i) {
+                 r = journal_file_rotate(&f, s->compress, s->seal);
+                 if (r < 0)
+-                        if (f->path)
++                        if (f)
+                                 log_error("Failed to rotate %s: %s", f->path, strerror(-r));
+                         else
+                                 log_error("Failed to create user journal: %s", strerror(-r));
Index: fix-dbus-crash.patch
===================================================================
--- fix-dbus-crash.patch (added)
+++ fix-dbus-crash.patch (revision 5)
@@ -0,0 +1,32 @@
+From 645a9e5a2bbb06464a3fba1a3501e9d79e5bbad8 Mon Sep 17 00:00:00 2001
+From: Eelco Dolstra <eelco.dolstra@logicblox.com>
+Date: Wed, 31 Oct 2012 11:53:56 +0100
+Subject: [PATCH] dbus-manager: fix a fatal dbus abort in
+ bus_manager_message_handler()
+
+If ListUnitFiles fails, or an OOM occurs, then dbus_message_unref()
+will be called twice on "reply", causing systemd to crash.  So remove
+the call to dbus_message_unref(); it is unnecessary because of
+the cleanup attribute on "reply".
+
+[zj: modified to leave one dbus_message_unref() alone, per Colin
+Walters' comment.]
+---
+ src/core/dbus-manager.c |    1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
+index 2010241..3cf3e90 100644
+--- a/src/core/dbus-manager.c
++++ b/src/core/dbus-manager.c
+@@ -1436,7 +1436,6 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
+                 r = unit_file_get_list(m->running_as == SYSTEMD_SYSTEM ? UNIT_FILE_SYSTEM : UNIT_FILE_USER, NULL, h);
+                 if (r < 0) {
+                         unit_file_list_free(h);
+-                        dbus_message_unref(reply);
+                         return bus_send_error_reply(connection, message, NULL, r);
+                 }
+ 
+-- 
+1.7.10.4
+
Index: fix-permissions-btmp.patch
===================================================================
--- fix-permissions-btmp.patch (added)
+++ fix-permissions-btmp.patch (revision 5)
@@ -0,0 +1,13 @@
+Index: systemd-44/tmpfiles.d/systemd.conf
+===================================================================
+--- systemd-44.orig/tmpfiles.d/systemd.conf
++++ systemd-44/tmpfiles.d/systemd.conf
+@@ -11,7 +11,7 @@ d /run/user 0755 root root 10d
+ F /run/utmp 0664 root utmp -
+ 
+ f /var/log/wtmp 0664 root utmp -
+-f /var/log/btmp 0600 root utmp -
++f /var/log/btmp 0600 root root -
+ 
+ d /var/cache/man - - - 30d
+ 
Index: mount-efivars.patch
===================================================================
--- mount-efivars.patch (added)
+++ mount-efivars.patch (revision 5)
@@ -0,0 +1,336 @@
+From f271dd97622b656c1c013d181ea615c671cc2438 Mon Sep 17 00:00:00 2001
+From: "Lee, Chun-Yi" <joeyli.kernel@gmail.com>
+Date: Sat, 27 Oct 2012 11:23:22 +0800
+Subject: [PATCH] systemd: mount the EFI variable filesystem
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add efivarfs to the mount_table in mount-setup.c, so the EFI variable
+filesystem will be mounted when systemd executed.
+
+The EFI variable filesystem will merge in v3.7 or v3.8 linux kernel.
+
+Cc: Kay Sievers <kay@vrfy.org>
+Cc: Lennart Poettering <lennart@poettering.net>
+Cc: Mantas Mikulėnas <grawity@gmail.com>
+Cc: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
+Cc: Matt Fleming <matt.fleming@intel.com>
+Cc: Jeremy Kerr <jeremy.kerr@canonical.com>
+Cc: Matthew Garrett <mjg@redhat.com>
+Signed-off-by: Lee, Chun-Yi <jlee@suse.com>
+---
+ src/core/kmod-setup.c  |    7 ++++---
+ src/core/mount-setup.c |    1 +
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
+index cc2a2d9..ce8a8e7 100644
+--- a/src/core/kmod-setup.c
++++ b/src/core/kmod-setup.c
+@@ -31,9 +31,10 @@
+ #include "kmod-setup.h"
+ 
+ static const char * const kmod_table[] = {
+-        "autofs4", "/sys/class/misc/autofs",
+-        "ipv6",    "/sys/module/ipv6",
+-        "unix",    "/proc/net/unix"
++        "autofs4",  "/sys/class/misc/autofs",
++        "ipv6",     "/sys/module/ipv6",
++        "efivarfs", "/sys/firmware/efi/efivars",
++        "unix",     "/proc/net/unix"
+ };
+ 
+ #pragma GCC diagnostic push
+diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c
+index 0fd112f..9894c7f 100644
+--- a/src/core/mount-setup.c
++++ b/src/core/mount-setup.c
+@@ -66,6 +66,7 @@ static const MountPoint mount_table[] = {
+         { "sysfs",    "/sys",                   "sysfs",    NULL,                MS_NOSUID|MS_NOEXEC|MS_NODEV,                true,  true  },
+         { "devtmpfs", "/dev",                   "devtmpfs", "mode=755",          MS_NOSUID|MS_STRICTATIME,                    true,  true  },
+         { "securityfs", "/sys/kernel/security", "securityfs", NULL,              MS_NOSUID|MS_NOEXEC|MS_NODEV,                false, false },
++        { "efivarfs", "/sys/firmware/efi/efivars", "efivarfs", NULL,             MS_NOSUID|MS_NOEXEC|MS_NODEV,                false, false },
+         { "tmpfs",    "/dev/shm",               "tmpfs",    "mode=1777",         MS_NOSUID|MS_NODEV|MS_STRICTATIME,           true,  true  },
+         { "devpts",   "/dev/pts",               "devpts",   "mode=620,gid=" STRINGIFY(TTY_GID), MS_NOSUID|MS_NOEXEC,          false, true  },
+         { "tmpfs",    "/run",                   "tmpfs",    "mode=755",          MS_NOSUID|MS_NODEV|MS_STRICTATIME,           true,  true  },
+-- 
+1.7.10.4
+
+From c1e5704657315b436c0409e8172c1fcb76adccad Mon Sep 17 00:00:00 2001
+From: Kay Sievers <kay@vrfy.org>
+Date: Sun, 4 Nov 2012 16:06:27 +0100
+Subject: [PATCH] shared: add is_efiboot()
+
+---
+ src/shared/util.c |    4 ++++
+ src/shared/util.h |    2 ++
+ 2 files changed, 6 insertions(+)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 2a8afae..9983695 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -77,6 +77,10 @@ char **saved_argv = NULL;
+ static volatile unsigned cached_columns = 0;
+ static volatile unsigned cached_lines = 0;
+ 
++bool is_efiboot(void) {
++        return access("/sys/firmware/efi", F_OK) >= 0;
++}
++
+ size_t page_size(void) {
+         static __thread size_t pgsz = 0;
+         long r;
+diff --git a/src/shared/util.h b/src/shared/util.h
+index e387b12..99972cc 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -90,6 +90,8 @@ union dirent_storage {
+ #define ANSI_HIGHLIGHT_YELLOW_ON "\x1B[1;33m"
+ #define ANSI_HIGHLIGHT_OFF "\x1B[0m"
+ 
++bool is_efiboot(void);
++
+ usec_t now(clockid_t clock);
+ 
+ dual_timestamp* dual_timestamp_get(dual_timestamp *ts);
+-- 
+1.7.10.4
+
+From 1022373284b7562431fb0a6dba45db8af089a0e3 Mon Sep 17 00:00:00 2001
+From: Kay Sievers <kay@vrfy.org>
+Date: Sun, 4 Nov 2012 16:54:19 +0100
+Subject: [PATCH] kmod-setup: add conditional module loading callback
+
+---
+ src/core/kmod-setup.c |   32 ++++++++++++++++++++------------
+ 1 file changed, 20 insertions(+), 12 deletions(-)
+
+diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
+index ce8a8e7..383a6b2 100644
+--- a/src/core/kmod-setup.c
++++ b/src/core/kmod-setup.c
+@@ -30,11 +30,17 @@
+ 
+ #include "kmod-setup.h"
+ 
+-static const char * const kmod_table[] = {
+-        "autofs4",  "/sys/class/misc/autofs",
+-        "ipv6",     "/sys/module/ipv6",
+-        "efivarfs", "/sys/firmware/efi/efivars",
+-        "unix",     "/proc/net/unix"
++typedef struct Kmodule {
++        const char *name;
++        const char *directory;
++        bool (*condition_fn)(void);
++} KModule;
++
++static const KModule kmod_table[] = {
++        { "autofs4",  "/sys/class/misc/autofs",    NULL } ,
++        { "ipv6",     "/sys/module/ipv6",          NULL },
++        { "efivarfs", "/sys/firmware/efi/efivars", NULL },
++        { "unix",     "/proc/net/unix",            NULL } ,
+ };
+ 
+ #pragma GCC diagnostic push
+@@ -42,7 +48,8 @@ static const char * const kmod_table[] = {
+ static void systemd_kmod_log(void *data, int priority, const char *file, int line,
+                              const char *fn, const char *format, va_list args)
+ {
+-        log_metav(priority, file, line, fn, format, args);
++        /* library logging is enabled at debug only */
++        log_metav(LOG_DEBUG, file, line, fn, format, args);
+ }
+ #pragma GCC diagnostic pop
+ 
+@@ -53,13 +60,15 @@ int kmod_setup(void) {
+         int err;
+ 
+         for (i = 0; i < ELEMENTSOF(kmod_table); i += 2) {
++                if (kmod_table[i].condition_fn && !kmod_table[i].condition_fn())
++                        continue;
+ 
+-                if (access(kmod_table[i+1], F_OK) >= 0)
++                if (access(kmod_table[i].directory, F_OK) >= 0)
+                         continue;
+ 
+                 log_debug("Your kernel apparently lacks built-in %s support. Might be a good idea to compile it in. "
+                           "We'll now try to work around this by loading the module...",
+-                          kmod_table[i]);
++                          kmod_table[i].name);
+ 
+                 if (!ctx) {
+                         ctx = kmod_new(NULL, NULL);
+@@ -69,13 +78,12 @@ int kmod_setup(void) {
+                         }
+ 
+                         kmod_set_log_fn(ctx, systemd_kmod_log, NULL);
+-
+                         kmod_load_resources(ctx);
+                 }
+ 
+-                err = kmod_module_new_from_name(ctx, kmod_table[i], &mod);
++                err = kmod_module_new_from_name(ctx, kmod_table[i].name, &mod);
+                 if (err < 0) {
+-                        log_error("Failed to load module '%s'", kmod_table[i]);
++                        log_error("Failed to lookup module '%s'", kmod_table[i].name);
+                         continue;
+                 }
+ 
+@@ -85,7 +93,7 @@ int kmod_setup(void) {
+                 else if (err == KMOD_PROBE_APPLY_BLACKLIST)
+                         log_info("Module '%s' is blacklisted", kmod_module_get_name(mod));
+                 else
+-                        log_error("Failed to insert '%s'", kmod_module_get_name(mod));
++                        log_error("Failed to insert module '%s'", kmod_module_get_name(mod));
+ 
+                 kmod_module_unref(mod);
+         }
+-- 
+1.7.10.4
+
+From 3dfb265083347cb5700dc38f7cc0f479f378e6e9 Mon Sep 17 00:00:00 2001
+From: Kay Sievers <kay@vrfy.org>
+Date: Sun, 4 Nov 2012 16:55:23 +0100
+Subject: [PATCH] kmod-setup: mounting efivarfs, *after* we tried to mount it,
+ is pointless
+
+The mount() system call, which we issue before loading modules, will trigger
+a modprobe by the kernel and block until it returns. Trying to load it again
+later, will have exactly the same result as the first time.
+---
+ src/core/kmod-setup.c |    1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
+index 383a6b2..20ab232 100644
+--- a/src/core/kmod-setup.c
++++ b/src/core/kmod-setup.c
+@@ -39,7 +39,6 @@ typedef struct Kmodule {
+ static const KModule kmod_table[] = {
+         { "autofs4",  "/sys/class/misc/autofs",    NULL } ,
+         { "ipv6",     "/sys/module/ipv6",          NULL },
+-        { "efivarfs", "/sys/firmware/efi/efivars", NULL },
+         { "unix",     "/proc/net/unix",            NULL } ,
+ };
+ 
+-- 
+1.7.10.4
+
+From 6aa220e019f9dffd96590b06b68f937985204109 Mon Sep 17 00:00:00 2001
+From: Kay Sievers <kay@vrfy.org>
+Date: Sun, 4 Nov 2012 17:03:48 +0100
+Subject: [PATCH] mount-setup: try mounting 'efivarfs' only if the system
+ bootet with EFI
+
+---
+ TODO                   |    3 ---
+ src/core/mount-setup.c |   50 ++++++++++++++++++++++++++++++++----------------
+ 2 files changed, 34 insertions(+), 19 deletions(-)
+
+diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c
+index 9894c7f..98614d0 100644
+--- a/src/core/mount-setup.c
++++ b/src/core/mount-setup.c
+@@ -46,14 +46,20 @@
+ #define TTY_GID 5
+ #endif
+ 
++typedef enum MountMode {
++        MNT_NONE  =        0,
++        MNT_FATAL =        1 <<  0,
++        MNT_IN_CONTAINER = 1 <<  1,
++} MountMode;
++
+ typedef struct MountPoint {
+         const char *what;
+         const char *where;
+         const char *type;
+         const char *options;
+         unsigned long flags;
+-        bool fatal;
+-        bool in_container;
++        bool (*condition_fn)(void);
++        MountMode mode;
+ } MountPoint;
+ 
+ /* The first three entries we might need before SELinux is up. The
+@@ -62,16 +68,26 @@ typedef struct MountPoint {
+ #define N_EARLY_MOUNT 4
+ 
+ static const MountPoint mount_table[] = {
+-        { "proc",     "/proc",                  "proc",     NULL,                MS_NOSUID|MS_NOEXEC|MS_NODEV,                true,  true  },
+-        { "sysfs",    "/sys",                   "sysfs",    NULL,                MS_NOSUID|MS_NOEXEC|MS_NODEV,                true,  true  },
+-        { "devtmpfs", "/dev",                   "devtmpfs", "mode=755",          MS_NOSUID|MS_STRICTATIME,                    true,  true  },
+-        { "securityfs", "/sys/kernel/security", "securityfs", NULL,              MS_NOSUID|MS_NOEXEC|MS_NODEV,                false, false },
+-        { "efivarfs", "/sys/firmware/efi/efivars", "efivarfs", NULL,             MS_NOSUID|MS_NOEXEC|MS_NODEV,                false, false },
+-        { "tmpfs",    "/dev/shm",               "tmpfs",    "mode=1777",         MS_NOSUID|MS_NODEV|MS_STRICTATIME,           true,  true  },
+-        { "devpts",   "/dev/pts",               "devpts",   "mode=620,gid=" STRINGIFY(TTY_GID), MS_NOSUID|MS_NOEXEC,          false, true  },
+-        { "tmpfs",    "/run",                   "tmpfs",    "mode=755",          MS_NOSUID|MS_NODEV|MS_STRICTATIME,           true,  true  },
+-        { "tmpfs",    "/sys/fs/cgroup",         "tmpfs",    "mode=755",          MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME, false, true  },
+-        { "cgroup",   "/sys/fs/cgroup/systemd", "cgroup",   "none,name=systemd", MS_NOSUID|MS_NOEXEC|MS_NODEV,                false, true  },
++        { "proc",       "/proc",                     "proc",       NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
++          NULL,       MNT_FATAL|MNT_IN_CONTAINER },
++        { "sysfs",      "/sys",                      "sysfs",      NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
++          NULL,       MNT_FATAL|MNT_IN_CONTAINER },
++        { "devtmpfs",   "/dev",                      "devtmpfs",   "mode=755", MS_NOSUID|MS_STRICTATIME,
++          NULL,       MNT_FATAL|MNT_IN_CONTAINER },
++        { "securityfs", "/sys/kernel/security",      "securityfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
++          NULL,       MNT_NONE },
++        { "efivarfs",   "/sys/firmware/efi/efivars", "efivarfs",   NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
++          is_efiboot, MNT_NONE },
++        { "tmpfs",      "/dev/shm",                  "tmpfs",      "mode=1777", MS_NOSUID|MS_NODEV|MS_STRICTATIME,
++          NULL,       MNT_FATAL|MNT_IN_CONTAINER },
++        { "devpts",     "/dev/pts",                  "devpts",     "mode=620,gid=" STRINGIFY(TTY_GID), MS_NOSUID|MS_NOEXEC,
++          NULL,       MNT_IN_CONTAINER },
++        { "tmpfs",      "/run",                      "tmpfs",      "mode=755", MS_NOSUID|MS_NODEV|MS_STRICTATIME,
++          NULL,       MNT_FATAL|MNT_IN_CONTAINER },
++        { "tmpfs",      "/sys/fs/cgroup",            "tmpfs",      "mode=755", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME,
++          NULL,       MNT_IN_CONTAINER },
++        { "cgroup",     "/sys/fs/cgroup/systemd",    "cgroup",     "none,name=systemd", MS_NOSUID|MS_NOEXEC|MS_NODEV,
++          NULL,       MNT_IN_CONTAINER },
+ };
+ 
+ /* These are API file systems that might be mounted by other software,
+@@ -119,6 +135,9 @@ static int mount_one(const MountPoint *p, bool relabel) {
+ 
+         assert(p);
+ 
++        if (p->condition_fn && !p->condition_fn())
++                return 0;
++
+         /* Relabel first, just in case */
+         if (relabel)
+                 label_fix(p->where, true, true);
+@@ -131,7 +150,7 @@ static int mount_one(const MountPoint *p, bool relabel) {
+                 return 0;
+ 
+         /* Skip securityfs in a container */
+-        if (!p->in_container && detect_container(NULL) > 0)
++        if (!(p->mode & MNT_IN_CONTAINER) && detect_container(NULL) > 0)
+                 return 0;
+ 
+         /* The access mode here doesn't really matter too much, since
+@@ -149,8 +168,8 @@ static int mount_one(const MountPoint *p, bool relabel) {
+                   p->type,
+                   p->flags,
+                   p->options) < 0) {
+-                log_full(p->fatal ? LOG_ERR : LOG_DEBUG, "Failed to mount %s: %s", p->where, strerror(errno));
+-                return p->fatal ? -errno : 0;
++                log_full((p->mode & MNT_FATAL) ? LOG_ERR : LOG_DEBUG, "Failed to mount %s: %s", p->where, strerror(errno));
++                return (p->mode & MNT_FATAL) ? -errno : 0;
+         }
+ 
+         /* Relabel again, since we now mounted something fresh here */
+@@ -289,7 +308,6 @@ int mount_cgroup_controllers(char ***join_controllers) {
+                 p.type = "cgroup";
+                 p.options = options;
+                 p.flags = MS_NOSUID|MS_NOEXEC|MS_NODEV;
+-                p.fatal = false;
+ 
+                 r = mount_one(&p, true);
+                 free(controller);
+-- 
+1.7.10.4
+
Index: sync-on-shutdown.patch
===================================================================
--- sync-on-shutdown.patch (added)
+++ sync-on-shutdown.patch (revision 5)
@@ -0,0 +1,49 @@
+From 0049f05a8bb82c3e084bacc5945596761d706c55 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 16 Nov 2012 01:30:29 +0100
+Subject: [PATCH] shutdown: readd explicit sync() when shutting down
+
+As it turns out reboot() doesn't actually imply a file system sync, but
+only a disk sync. Accordingly, readd explicit sync() invocations
+immediately before we invoke reboot().
+
+This is much less dramatic than it might sounds as we umount all
+disks/read-only remount them anyway before going down.
+---
+ src/core/service.c  |    1 +
+ src/core/shutdown.c |    7 +++++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/src/core/service.c b/src/core/service.c
+index cf08485..df72aba 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -2485,6 +2485,7 @@ static int service_start_limit_test(Service *s) {
+ 
+         case SERVICE_START_LIMIT_REBOOT_IMMEDIATE:
+                 log_warning("%s start request repeated too quickly, rebooting immediately.", UNIT(s)->id);
++                sync();
+                 reboot(RB_AUTOBOOT);
+                 break;
+ 
+diff --git a/src/core/shutdown.c b/src/core/shutdown.c
+index cc8c57b..b59aef1 100644
+--- a/src/core/shutdown.c
++++ b/src/core/shutdown.c
+@@ -273,6 +273,13 @@ int main(int argc, char *argv[]) {
+                 }
+         }
+ 
++        /* The kernel will automaticall flush ATA disks and suchlike
++         * on reboot(), but the file systems need to be synce'd
++         * explicitly in advance. So let's do this here, but not
++         * needlessly slow down containers. */
++        if (!in_container)
++                sync();
++
+         if (cmd == LINUX_REBOOT_CMD_KEXEC) {
+ 
+                 if (!in_container) {
+-- 
+1.7.10.4
+
Index: systemd-journald.init
===================================================================
--- systemd-journald.init (added)
+++ systemd-journald.init (revision 5)
@@ -0,0 +1,33 @@
+#! /bin/sh
+#
+# Copyright (c) 2001-2002 SuSE Linux AG, Nuernberg, Germany.
+# All rights reserved.
+#
+# /etc/init.d/systemd-journald
+#
+### BEGIN INIT INFO
+# Provides:          syslog
+# Required-Start:    $null
+# Required-Stop:     $null
+# Default-Start:     2 3 5
+# Default-Stop:
+# Short-Description: compat wrapper for journald
+# Description:       compat wrapper for journald
+### END INIT INFO
+
+. /etc/rc.status
+
+rc_reset
+
+case "$1" in
+  start|stop|restart)
+	rc_failed 3
+	rc_status -v
+	;;
+    *)
+	echo "Usage: $0 {start|stop|restart}"
+	exit 1
+	;;
+esac
+
+rc_exit
Index: xdm-display-manager.patch
===================================================================
--- xdm-display-manager.patch (added)
+++ xdm-display-manager.patch (revision 5)
@@ -0,0 +1,13 @@
+Index: systemd-195/units/graphical.target
+===================================================================
+--- systemd-195.orig/units/graphical.target
++++ systemd-195/units/graphical.target
+@@ -11,7 +11,7 @@ Documentation=man:systemd.special(7)
+ Requires=multi-user.target
+ After=multi-user.target
+ Conflicts=rescue.target
+-Wants=display-manager.service
++Wants=xdm.service
+ AllowIsolate=yes
+ 
+ [Install]

OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=312
2012-11-20 12:10:12 +00:00

911 lines
31 KiB
RPMSpec

#
# 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 bootstrap 0
%define real systemd
%define udevpkgname udev
%define udev_major 1
Name: systemd
Url: http://www.freedesktop.org/wiki/Software/systemd
Version: 195
Release: 0
Summary: A System and Session Manager
License: LGPL-2.1+
Group: System/Base
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: audit-devel
BuildRequires: dbus-1
%if ! 0%{?bootstrap}
BuildRequires: docbook-xsl-stylesheets
%endif
BuildRequires: fdupes
%if ! 0%{?bootstrap}
BuildRequires: gobject-introspection-devel
%endif
BuildRequires: gperf
%if ! 0%{?bootstrap}
BuildRequires: gtk-doc
%endif
BuildRequires: intltool
BuildRequires: libacl-devel
BuildRequires: libcap-devel
BuildRequires: libsepol-devel
BuildRequires: libtool
BuildRequires: libusb-devel
%if ! 0%{?bootstrap}
BuildRequires: libxslt-tools
%endif
BuildRequires: pam-devel
BuildRequires: tcpd-devel
BuildRequires: xz
BuildRequires: pkgconfig(blkid) >= 2.20
BuildRequires: pkgconfig(dbus-1) >= 1.3.2
%if ! 0%{?bootstrap}
BuildRequires: pkgconfig(glib-2.0) >= 2.22.0
BuildRequires: pkgconfig(libcryptsetup) >= 1.4.2
%endif
BuildRequires: pkgconfig(libkmod) >= 5
BuildRequires: pkgconfig(liblzma)
%if ! 0%{?bootstrap}
BuildRequires: pkgconfig(libmicrohttpd)
%endif
BuildRequires: pkgconfig(libpci) >= 3
%if ! 0%{?bootstrap}
BuildRequires: pkgconfig(libqrencode)
%endif
BuildRequires: pkgconfig(libselinux) >= 2.1.9
BuildRequires: pkgconfig(libsepol)
BuildRequires: pkgconfig(usbutils) >= 0.82
%if 0%{?bootstrap}
Requires: this-is-only-for-build-envs
%else
# the buildignore is important for bootstrapping
#!BuildIgnore: udev
Requires: %{udevpkgname} >= 172
Requires: dbus-1 >= 1.4.0
Requires: kbd
Requires: pam-config >= 0.79-5
Requires: pwdutils
Requires: systemd-presets-branding
Requires: util-linux >= 2.21
Requires(post): coreutils
Requires(post): findutils
%endif
Conflicts: filesystem < 11.5
Conflicts: mkinitrd < 2.7.0
Source0: http://www.freedesktop.org/software/systemd/systemd-%{version}.tar.xz
Source1: systemd-rpmlintrc
Source2: localfs.service
Source3: systemd-sysv-convert
Source4: macros.systemd
Source5: systemd-insserv_conf
Source6: baselibs.conf
Source7: libgcrypt.m4
Source8: systemd-journald.init
Source1060: boot.udev
Source1061: write_dev_root_rule
Source1062: udev-root-symlink.systemd
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
Patch7: systemd-numlock-suse.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
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
Patch38: dm-lvm-after-local-fs-pre-target.patch
Patch53: fastboot-forcefsck.patch
Patch56: support-suse-clock-sysconfig.patch
Patch59: fix-enable-disable-boot-initscript.patch
Patch60: var-run-lock.patch
Patch63: xdm-display-manager.patch
Patch64: fix-permissions-btmp.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.
# PATCH-FIX-UPSTREAM fix-logind-pty-seat.patch fcrozat@suse.com -- fix logind complaining when doing su/sudo in X terminal
Patch61: fix-logind-pty-seat.patch
# PATCH-FIX-UPSTREAM fix-build-glibc217.patch fcrozat@suse.com -- fix build with latest glibc
Patch62: fix-build-glibc217.patch
# PATCH-FIX-UPSTREAM fix-bad-memory-access.patch fcrozat@suse.com -- fix bad memory access
Patch65: fix-bad-memory-access.patch
# PATCH-FIX-UPSTREAM fix-dbus-crash.patch fcrozat@suse.com -- fix D-Bus caused crash
Patch66: fix-dbus-crash.patch
# PATCH-FIX-UPSTREAM sync-on-shutdown.patch fcrozat@suse.com -- Sync on shutdown
Patch67: sync-on-shutdown.patch
# PATCH-FIX-UPSTREAM mount-efivars.patch fcrozat@suse.com -- mount efivars if booting under UEFI
Patch68: mount-efivars.patch
# udev patches
# PATCH-FIX-OPENSUSE 0001-Reinstate-TIMEOUT-handling.patch
Patch1001: 0001-Reinstate-TIMEOUT-handling.patch
# PATCH-FIX-OPENSUSE 0013-re-enable-by_path-links-for-ata-devices.patch
Patch1013: 0013-re-enable-by_path-links-for-ata-devices.patch
# PATCH-FIX-OPENSUSE 0014-rules-create-by-id-scsi-links-for-ATA-devices.patch
Patch1014: 0014-rules-create-by-id-scsi-links-for-ATA-devices.patch
# PATCH-FIX-OPENSUSE 0026-udev-netlink-null-rules.patch
Patch1026: 0026-udev-netlink-null-rules.patch
# PATCH-FIX-OPENSUSE 0027-udev-fix-sg-autoload-regression.patch
Patch1027: 0027-udev-fix-sg-autoload-regression.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
License: LGPL-2.1+
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}
%description devel
Development headers and auxiliary files for developing applications for systemd.
%package sysvinit
Summary: System V init tools
License: LGPL-2.1+
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.
%package analyze
Summary: Tool for processing systemd profiling information
License: LGPL-2.1+
Group: System/Base
Requires: %{name} = %{version}
Requires: dbus-1-python
Requires: python-cairo
# for the systemd-analyze split:
Conflicts: systemd < 44-10
%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 -n %{udevpkgname}
Summary: A rule-based device node and kernel event manager
License: GPL-2.0
Group: System/Kernel
Url: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
PreReq: /bin/pidof /bin/rm /usr/bin/stat %insserv_prereq %fillup_prereq /usr/sbin/groupadd /usr/bin/getent /sbin/mkinitrd
Requires(post): lib%{udevpkgname}%{udev_major}
Conflicts: systemd < 39
Conflicts: aaa_base < 11.5
Conflicts: filesystem < 11.5
Conflicts: mkinitrd < 2.7.0
Conflicts: util-linux < 2.16
Conflicts: ConsoleKit < 0.4.1
Requires: filesystem
%if 0%{?bootstrap}
Provides: udev = %{version}
%endif
%description -n %{udevpkgname}
Udev creates and removes device nodes in /dev for devices discovered or
removed from the system. It receives events via kernel netlink messages
and dispatches them according to rules in /lib/udev/rules.d/. Matching
rules may name a device node, create additional symlinks to the node,
call tools to initialize a device, or load needed kernel modules.
%package -n lib%{udevpkgname}%{udev_major}
Summary: Dynamic library to access udev device information
License: LGPL-2.1+
Group: System/Libraries
Requires: %{udevpkgname} >= %{version}-%{release}
%description -n lib%{udevpkgname}%{udev_major}
This package contains the dynamic library libudev, which provides
access to udev device information
%package -n lib%{udevpkgname}-devel
Summary: Development files for libudev
License: LGPL-2.1+
Group: Development/Libraries/Other
Requires: lib%{udevpkgname}%{udev_major} = %{version}-%{release}
%if 0%{?bootstrap}
Provides: libudev-devel = %{version}
%endif
%description -n lib%{udevpkgname}-devel
This package contains the development files for the library libudev, a
dynamic library, which provides access to udev device information.
%if ! 0%{?bootstrap}
%package -n libgudev-1_0-0
Summary: GObject library, to access udev device information
License: LGPL-2.1+
Group: System/Libraries
Requires: lib%{udevpkgname}%{udev_major} = %{version}-%{release}
%description -n libgudev-1_0-0
This package contains the GObject library libgudev, which provides
access to udev device information.
%package -n typelib-1_0-GUdev-1_0
Summary: GObject library, to access udev device information -- Introspection bindings
License: LGPL-2.1+
Group: System/Libraries
%description -n typelib-1_0-GUdev-1_0
This package provides the GObject Introspection bindings for libgudev, which
provides access to udev device information.
%package -n libgudev-1_0-devel
Summary: Devel package for libgudev
License: LGPL-2.1+
Group: Development/Libraries/Other
Requires: glib2-devel
Requires: libgudev-1_0-0 = %{version}-%{release}
Requires: libudev-devel = %{version}-%{release}
Requires: typelib-1_0-GUdev-1_0 = %{version}-%{release}
%description -n libgudev-1_0-devel
This is the devel package for the GObject library libgudev, which
provides GObject access to udev device information.
%package logger
Summary: Journal only logging
License: LGPL-2.1+
Group: System/Base
Provides: syslog
Provides: sysvinit(syslog)
Conflicts: otherproviders(syslog)
%description logger
This package marks the installation to not use syslog but only the journal.
%endif
%prep
%setup -q -n systemd-%{version}
# only needed for bootstrap
%if 0%{?bootstrap}
cp %{SOURCE7} m4/
%endif
#udev
%patch1001 -p1
%patch1013 -p1
%patch1014 -p1
%patch1026 -p1
%patch1027 -p1
#systemd
%patch1 -p1
%patch6 -p1
# don't apply when bootstrapping to not modify configure.in
%if ! 0%{?bootstrap}
%patch7 -p1
%endif
%patch8 -p1
%patch10 -p1
%patch13 -p1
%patch15 -p1
%patch16 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch31 -p1
%patch33 -p1
%patch36 -p1
%patch38 -p1
%patch53 -p1
%patch56 -p1
%patch59 -p1
%patch60 -p1
%patch61 -p1
%patch62 -p1
%patch63 -p1
%patch64 -p1
%patch65 -p1
%patch66 -p1
%patch67 -p1
%patch68 -p1
%build
autoreconf -fiv
# prevent pre-generated and distributed files from re-building
find . -name "*.[1-8]" -exec touch '{}' \;
export V=1
# keep split-usr until all packages have moved their systemd rules to /usr
%configure \
--with-distro=suse \
--docdir=%{_docdir}/systemd \
--with-pamlibdir=/%{_lib}/security \
%if 0%{?bootstrap}
--disable-gudev \
%else
--enable-manpages \
--enable-gtk-doc \
%endif
--enable-selinux \
--enable-split-usr \
--disable-static \
CFLAGS="%{optflags}"
make %{?_smp_mflags}
%install
%makeinstall
mkdir -p $RPM_BUILD_ROOT/{sbin,lib,bin}
ln -sf %{_bindir}/udevadm $RPM_BUILD_ROOT/sbin/udevadm
ln -sf %{_bindir}/systemd-ask-password $RPM_BUILD_ROOT/bin/systemd-ask-password
ln -sf %{_bindir}/systemctl $RPM_BUILD_ROOT/bin/systemctl
ln -sf %{_prefix}/lib/systemd/systemd-udevd $RPM_BUILD_ROOT/sbin/udevd
%if ! 0%{?bootstrap}
ln -sf systemd-udevd.8 $RPM_BUILD_ROOT/%{_mandir}/man8/udevd.8
%endif
mkdir -p $RPM_BUILD_ROOT/%{_prefix}/usr/lib/firmware/updates
ln -sf /lib/firmware $RPM_BUILD_ROOT/usr/lib/firmware
%if ! 0%{?bootstrap}
install -m755 -D %{S:8} $RPM_BUILD_ROOT/etc/init.d/systemd-journald
%endif
install -m755 -D %{S:1060} $RPM_BUILD_ROOT/etc/init.d/boot.udev
ln -s systemd-udevd.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/udev.service
install -m755 -D %{S:1061} $RPM_BUILD_ROOT/%{_prefix}/lib/udev/write_dev_root_rule
install -m644 -D %{S:1062} $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/udev-root-symlink.service
mkdir -p $RPM_BUILD_ROOT/lib/systemd/system/basic.target.wants
ln -sf ../udev-root-symlink.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/basic.target.wants
#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}/usr/lib/systemd/{system-generators,user-generators,system-preset,user-preset,system/halt.target.wants,system/kexec.target.wants,system/poweroff.target.wants,system/reboot.target.wants}
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}/usr/lib/systemd/system-generators
ln -s ../usr/lib/systemd/systemd %{buildroot}/bin/systemd
ln -s ../usr/lib/systemd/systemd %{buildroot}/sbin/init
ln -s ../usr/bin/systemctl %{buildroot}/sbin/reboot
ln -s ../usr/bin/systemctl %{buildroot}/sbin/halt
ln -s ../usr/bin/systemctl %{buildroot}/sbin/shutdown
ln -s ../usr/bin/systemctl %{buildroot}/sbin/poweroff
ln -s ../usr/bin/systemctl %{buildroot}/sbin/telinit
ln -s ../usr/bin/systemctl %{buildroot}/sbin/runlevel
rm -rf %{buildroot}/etc/systemd/system/*.target.wants
rm -f %{buildroot}/etc/systemd/system/default.target
# aliases for /etc/init.d/*
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/cgroup.service
ln -s systemd-tmpfiles-setup.service %{buildroot}/%{_prefix}/lib/systemd/system/cleanup.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/clock.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/crypto.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/crypto-early.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/device-mapper.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/earlysyslog.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/kbd.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/ldconfig.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/loadmodules.service
install -m644 %{S:2} %{buildroot}/%{_prefix}/lib/systemd/system/localfs.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/localnet.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/proc.service
ln -s systemd-fsck-root.service %{buildroot}/%{_prefix}/lib/systemd/system/rootfsck.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/single.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/swap.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/startpreload.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/stoppreload.service
ln -s /dev/null %{buildroot}/%{_prefix}/lib/systemd/system/earlyxdm.service
ln -s systemd-sysctl.service %{buildroot}/%{_prefix}/lib/systemd/system/sysctl.service
ln -s systemd-random-seed-load.service %{buildroot}/%{_prefix}/lib/systemd/system/random.service
# don't mount /tmp as tmpfs for now
rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount
# 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
# remove README file for now
rm -f %{buildroot}/etc/init.d/README
%if 0%{?bootstrap}
rm -f %{buildroot}/var/log/README
%endif
# legacy links
for f in loginctl journalctl ; do
ln -s $f %{buildroot}%{_bindir}/systemd-$f
%if ! 0%{?bootstrap}
ln -s $f.1 %{buildroot}%{_mandir}/man1/systemd-$f.1
%endif
done
ln -s /usr/lib/udev %{buildroot}/lib/udev
# Create the /var/log/journal directory to change the volatile journal to a persistent one
mkdir -p %{buildroot}/var/log/journal
# Make sure the NTP units dir exists
mkdir -p %{buildroot}%{_prefix}/lib/systemd/ntp-units.d/
# Make sure the shutdown/sleep drop-in dirs exist
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-shutdown/
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-sleep/
# Make sure these directories are properly owned
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/default.target.wants
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/dbus.target.wants
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/syslog.target.wants
%fdupes -s %{buildroot}%{_mandir}
%pre
getent group adm >/dev/null || groupadd -r adm
exit 0
%post
/usr/sbin/pam-config -a --systemd >/dev/null 2>&1 || :
/sbin/ldconfig
/usr/bin/systemd-machine-id-setup >/dev/null 2>&1 || :
/usr/lib/systemd/systemd-random-seed save >/dev/null 2>&1 || :
/usr/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 -a -e /etc/inittab ]; then
runlevel=$(awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' /etc/inittab 2> /dev/null)
if [ -n "$runlevel" ] ; then
/bin/ln -sf /usr/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.
/usr/bin/systemctl enable \
getty@.service \
systemd-readahead-collect.service \
systemd-readahead-replay.service \
remote-fs.target >/dev/null 2>&1 || :
else
# migrate any symlink which may refer to the old path
for f in $(find /etc/systemd/system -type l -xtype l); do
new_target="/usr$(readlink $f)"
[ -f "$new_target" ] && ln -s -f $new_target $f || :
done
fi
%postun
/sbin/ldconfig
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
/usr/sbin/pam-config -d --systemd >/dev/null 2>&1 || :
fi
%preun
if [ $1 -eq 0 ]; then
/usr/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
%pretrans -n %{udevpkgname} -p <lua>
if posix.stat("/lib/udev") and not posix.stat("/usr/lib/udev") then
posix.symlink("/lib/udev", "/usr/lib/udev")
end
%pre -n %{udevpkgname}
if test -L /usr/lib/udev -a /lib/udev -ef /usr/lib/udev ; then
rm /usr/lib/udev
mv /lib/udev /usr/lib
ln -s /usr/lib/udev /lib/udev
elif [ ! -e /lib/udev ]; then
ln -s /usr/lib/udev /lib/udev
fi
# Create "tape" group which is referenced by 50-udev-default.rules and 60-persistent-storage-tape.rules
/usr/sbin/groupadd -r tape 2> /dev/null || :
# kill daemon if we are not in a chroot
if test -f /proc/1/exe -a -d /proc/1/root ; then
if test "$(stat -Lc '%%D-%%i' /)" = "$(stat -Lc '%%D-%%i' /proc/1/root)"; then
systemctl stop systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-udevd.service udev.service udev-control.socket udev-kernel.socket >/dev/null 2>&1 || :
udevadm control --exit 2>&1 || :
fi
fi
%post -n %{udevpkgname}
%{fillup_and_insserv -Y boot.udev}
# add KERNEL name match to existing persistent net rules
sed -ri '/KERNEL/ ! { s/NAME="(eth|wlan|ath)([0-9]+)"/KERNEL=="\1*", NAME="\1\2"/}' \
/etc/udev/rules.d/70-persistent-net.rules >/dev/null 2>&1 || :
# cleanup old stuff
rm -f /etc/sysconfig/udev
rm -f /etc/udev/rules.d/20-cdrom.rules
rm -f /etc/udev/rules.d/55-cdrom.rules
rm -f /etc/udev/rules.d/65-cdrom.rules
systemctl daemon-reload >/dev/null 2>&1 || :
# start daemon if we are not in a chroot
if test -f /proc/1/exe -a -d /proc/1/root; then
if test "$(stat -Lc '%%D-%%i' /)" = "$(stat -Lc '%%D-%%i' /proc/1/root)"; then
if ! systemctl start systemd-udevd.service >/dev/null 2>&1; then
/usr/lib/systemd/systemd-udevd --daemon >/dev/null 2>&1 || :
fi
fi
fi
[ -x /sbin/mkinitrd_setup ] && /sbin/mkinitrd_setup
if [ -e /var/lib/no_initrd_recreation_by_suspend ]; then
echo "Skipping recreation of existing initial ramdisks, due"
echo "to presence of /var/lib/no_initrd_recreation_by_suspend"
elif [ -x /sbin/mkinitrd ]; then
/sbin/mkinitrd
fi
%postun -n %{udevpkgname}
%insserv_cleanup
systemctl daemon-reload >/dev/null 2>&1 || :
[ -x /sbin/mkinitrd_setup ] && /sbin/mkinitrd_setup
if [ -e /var/lib/no_initrd_recreation_by_suspend ]; then
echo "Skipping recreation of existing initial ramdisks, due"
echo "to presence of /var/lib/no_initrd_recreation_by_suspend"
elif [ -x /sbin/mkinitrd ]; then
/sbin/mkinitrd
fi
%post -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig
%postun -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig
%if ! 0%{?bootstrap}
%post -n libgudev-1_0-0 -p /sbin/ldconfig
%postun -n libgudev-1_0-0 -p /sbin/ldconfig
%endif
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root)
/bin/systemd
/bin/systemd-ask-password
/bin/systemctl
%{_bindir}/hostnamectl
%{_bindir}/localectl
%{_bindir}/systemctl
%{_bindir}/systemd-coredumpctl
%{_bindir}/systemd-delta
%{_bindir}/systemd-notify
%{_bindir}/systemd-journalctl
%{_bindir}/journalctl
%{_bindir}/systemd-ask-password
%{_bindir}/loginctl
%{_bindir}/systemd-loginctl
%{_bindir}/systemd-inhibit
%{_bindir}/systemd-tty-ask-password-agent
%{_bindir}/systemd-tmpfiles
%{_bindir}/systemd-machine-id-setup
%{_bindir}/systemd-nspawn
%{_bindir}/systemd-stdio-bridge
%{_bindir}/systemd-detect-virt
%{_bindir}/timedatectl
%{_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
%dir %{_prefix}/lib/systemd
%dir %{_prefix}/lib/systemd/user
%dir %{_prefix}/lib/systemd/system
%exclude %{_prefix}/lib/systemd/system/systemd-udev*.*
%exclude %{_prefix}/lib/systemd/system/udev.service
%exclude %{_prefix}/lib/systemd/system/udev-root-symlink.service
%exclude %{_prefix}/lib/systemd/system/*.target.wants/systemd-udev*.*
%exclude %{_prefix}/lib/systemd/system/basic.target.wants/udev-root-symlink.service
%{_prefix}/lib/systemd/system/*.automount
%{_prefix}/lib/systemd/system/*.service
%{_prefix}/lib/systemd/system/*.target
%{_prefix}/lib/systemd/system/*.mount
%{_prefix}/lib/systemd/system/*.timer
%{_prefix}/lib/systemd/system/*.socket
%{_prefix}/lib/systemd/system/*.wants
%{_prefix}/lib/systemd/system/*.path
%{_prefix}/lib/systemd/user/*.target
%{_prefix}/lib/systemd/user/*.service
%exclude %{_prefix}/lib/systemd/systemd-udevd
%{_prefix}/lib/systemd/systemd-*
%{_prefix}/lib/systemd/systemd
%dir %{_prefix}/lib/systemd/system-shutdown
%dir %{_prefix}/lib/systemd/system-preset
%dir %{_prefix}/lib/systemd/user-preset
%dir %{_prefix}/lib/systemd/system-generators
%dir %{_prefix}/lib/systemd/user-generators
%dir %{_prefix}/lib/systemd/ntp-units.d/
%dir %{_prefix}/lib/systemd/system-shutdown/
%dir %{_prefix}/lib/systemd/system-sleep/
%dir %{_prefix}/lib/systemd/system/default.target.wants
%dir %{_prefix}/lib/systemd/system/dbus.target.wants
%dir %{_prefix}/lib/systemd/system/syslog.target.wants
%if ! 0%{?bootstrap}
%{_prefix}/lib/systemd/system-generators/systemd-cryptsetup-generator
%endif
%{_prefix}/lib/systemd/system-generators/systemd-getty-generator
%{_prefix}/lib/systemd/system-generators/systemd-rc-local-generator
%{_prefix}/lib/systemd/system-generators/systemd-fstab-generator
%{_prefix}/lib/systemd/system-generators/systemd-system-update-generator
/%{_lib}/security/pam_systemd.so
%dir %{_libexecdir}/modules-load.d
%dir %{_sysconfdir}/modules-load.d
%dir %{_libexecdir}/tmpfiles.d
%dir %{_sysconfdir}/tmpfiles.d
%{_libexecdir}/tmpfiles.d/*.conf
%dir %{_libexecdir}/binfmt.d
%dir %{_sysconfdir}/binfmt.d
%dir %{_libexecdir}/sysctl.d
%dir %{_sysconfdir}/sysctl.d
%dir %{_sysconfdir}/systemd
%dir %{_sysconfdir}/systemd/system
%dir %{_sysconfdir}/systemd/user
%dir %{_sysconfdir}/xdg/systemd
%dir %{_sysconfdir}/xdg/systemd/user
%config(noreplace) %{_sysconfdir}/systemd/system.conf
%config(noreplace) %{_sysconfdir}/systemd/logind.conf
%config(noreplace) %{_sysconfdir}/systemd/journald.conf
%config(noreplace) %{_sysconfdir}/systemd/user.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
%{_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
%dir %{_datadir}/polkit-1
%dir %{_datadir}/polkit-1/actions
%{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.timedate1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.login1.policy
%{_datadir}/systemd
%if ! 0%{?bootstrap}
# 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*
%exclude %{_mandir}/man*/*udev*.[0-9]*
# Packaged in analyze subpackage
%exclude %{_mandir}/man1/systemd-analyze.1*
%{_mandir}/man1/*.1*
%{_mandir}/man3/*.3*
%{_mandir}/man5/*.5*
%{_mandir}/man7/*.7*
%{_mandir}/man8/*.8*
%endif
%{_docdir}/systemd
%{_prefix}/lib/udev/rules.d/70-uaccess.rules
%{_prefix}/lib/udev/rules.d/71-seat.rules
%{_prefix}/lib/udev/rules.d/73-seat-late.rules
%if ! 0%{?bootstrap}
%{_prefix}/lib/udev/rules.d/73-seat-numlock.rules
%endif
%{_prefix}/lib/udev/rules.d/99-systemd.rules
%if ! 0%{?bootstrap}
%{_prefix}/lib/udev/numlock-on
%endif
%dir %{_sysconfdir}/bash_completion.d
%{_sysconfdir}/bash_completion.d/systemd-bash-completion.sh
%{_sysconfdir}/rpm/macros.systemd
%dir /var/lib/systemd
%dir /var/lib/systemd/sysv-convert
%dir /var/lib/systemd/migrated
%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
%{_includedir}/systemd/sd-shutdown.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
%files sysvinit
%defattr(-,root,root,-)
/sbin/init
/sbin/reboot
/sbin/halt
/sbin/shutdown
/sbin/poweroff
/sbin/telinit
/sbin/runlevel
%if ! 0%{?bootstrap}
%{_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*
%endif
%files analyze
%defattr(-,root,root)
%attr(0755,root,root) /usr/bin/systemd-analyze
%if ! 0%{?bootstrap}
%{_mandir}/man1/systemd-analyze.1*
%endif
%files -n %{udevpkgname}
%defattr(-,root,root)
/sbin/udevd
/sbin/udevadm
# keep for compatibility
%ghost /lib/udev
%{_bindir}/udevadm
%{_prefix}/lib/firmware
%dir %{_prefix}/lib/udev/
%{_prefix}/lib/udev/accelerometer
%{_prefix}/lib/udev/ata_id
%{_prefix}/lib/udev/cdrom_id
%{_prefix}/lib/udev/collect
%{_prefix}/lib/udev/findkeyboards
%{_prefix}/lib/udev/keymap
%{_prefix}/lib/udev/mtd_probe
%{_prefix}/lib/udev/scsi_id
%{_prefix}/lib/udev/v4l_id
%{_prefix}/lib/udev/write_dev_root_rule
%dir %{_prefix}/lib/udev/keymaps
%{_prefix}/lib/udev/keymaps/*
%{_prefix}/lib/udev/keyboard-force-release.sh
%dir %{_prefix}/lib/udev/rules.d/
%exclude %{_prefix}/lib/udev/rules.d/70-uaccess.rules
%exclude %{_prefix}/lib/udev/rules.d/71-seat.rules
%exclude %{_prefix}/lib/udev/rules.d/73-seat-late.rules
%exclude %{_prefix}/lib/udev/rules.d/73-seat-numlock.rules
%exclude %{_prefix}/lib/udev/rules.d/99-systemd.rules
%{_prefix}/lib/udev/rules.d/*.rules
%{_sysconfdir}/init.d/boot.udev
%dir %{_sysconfdir}/udev/
%dir %{_sysconfdir}/udev/rules.d/
%config(noreplace) %{_sysconfdir}/udev/udev.conf
%if ! 0%{?bootstrap}
%{_mandir}/man?/*udev*.[0-9]*
%endif
%dir %{_prefix}/lib/systemd/system
%{_prefix}/lib/systemd/systemd-udevd
%{_prefix}/lib/systemd/system/udev-root-symlink.service
%{_prefix}/lib/systemd/system/*udev*.service
%{_prefix}/lib/systemd/system/systemd-udevd*.socket
%dir %{_prefix}/lib/systemd/system/sysinit.target.wants
%{_prefix}/lib/systemd/system/sysinit.target.wants/systemd-udev*.service
%dir %{_prefix}/lib/systemd/system/sockets.target.wants
%{_prefix}/lib/systemd/system/sockets.target.wants/systemd-udev*.socket
%files -n lib%{udevpkgname}%{udev_major}
%defattr(-,root,root)
%{_libdir}/libudev.so.*
%files -n lib%{udevpkgname}-devel
%defattr(-,root,root)
%{_includedir}/libudev.h
%{_libdir}/libudev.so
%{_datadir}/pkgconfig/udev.pc
%{_libdir}/pkgconfig/libudev.pc
%if ! 0%{?bootstrap}
%dir %{_datadir}/gtk-doc
%dir %{_datadir}/gtk-doc/html
%dir %{_datadir}/gtk-doc/html/libudev
%{_datadir}/gtk-doc/html/libudev/*
%endif
%if ! 0%{?bootstrap}
%files -n libgudev-1_0-0
%defattr(-,root,root)
%{_libdir}/libgudev-1.0.so.*
%files -n typelib-1_0-GUdev-1_0
%defattr(-,root,root)
%{_libdir}/girepository-1.0/GUdev-1.0.typelib
%files -n libgudev-1_0-devel
%defattr(-,root,root)
%dir %{_includedir}/gudev-1.0
%dir %{_includedir}/gudev-1.0/gudev
%{_includedir}/gudev-1.0/gudev/*.h
%{_libdir}/libgudev-1.0.so
%{_libdir}/pkgconfig/gudev-1.0.pc
%dir %{_datadir}/gtk-doc
%dir %{_datadir}/gtk-doc/html
%dir %{_datadir}/gtk-doc/html/gudev
%{_datadir}/gtk-doc/html/gudev/*
%{_datadir}/gir-1.0/GUdev-1.0.gir
%files logger
%defattr(-,root,root)
%dir /var/log/journal
/var/log/README
/etc/init.d/systemd-journald
%endif
%changelog