2012-10-26 14:34:44 +02:00
#
# spec file for package systemd-mini
#
2013-01-08 13:54:22 +01:00
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
2012-10-26 14:34:44 +02:00
#
# 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/
#
##### WARNING: please do not edit this auto generated spec file. Use the systemd.spec! #####
%define bootstrap 1
%define real systemd
##### WARNING: please do not edit this auto generated spec file. Use the systemd.spec! #####
%define udevpkgname udev-mini
%define udev_major 1
Name : systemd-mini
Url : http://www.freedesktop.org/wiki/Software/systemd
2012-10-29 19:55:30 +01:00
Version : 195
2012-10-26 14:34:44 +02:00
Release : 0
Summary : A System and Session Manager
License : LGPL-2.1+
Group : System/Base
BuildRoot : %{_tmppath} /%{name} -%{version} -build
Provides : %{real} = %{version} -%{release}
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
2012-11-14 21:14:47 +01:00
Requires : pwdutils
2012-10-26 14:34:44 +02:00
Requires : systemd-presets-branding
Requires : util-linux >= 2.21
2012-10-29 19:55:30 +01:00
Requires(post) : coreutils
Requires(post) : findutils
2012-10-26 14:34:44 +02:00
%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
2012-11-14 21:14:47 +01:00
Source7 : libgcrypt.m4
- 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 13:10:12 +01:00
Source8 : systemd-journald.init
2012-10-26 14:34:44 +02:00
Source1060 : boot.udev
Source1061 : write_dev_root_rule
2013-01-29 14:40:40 +01:00
Source1062 : systemd-udev-root-symlink
2012-10-26 14:34:44 +02:00
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
2012-10-29 19:55:30 +01:00
Patch60 : var-run-lock.patch
- 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 13:10:12 +01:00
Patch63 : xdm-display-manager.patch
Patch64 : fix-permissions-btmp.patch
2012-12-05 19:07:07 +01:00
# PATCH-FIX-UPSTREAM fix-debugshell.patch fcrozat@suse.com bnc#789052 -- use bash if sushell isn't available
Patch71 : fix-debugshell.patch
# PATCH-FIX-OPENSUSE handle-root-uses-lang.patch bnc#792182 fcrozat@suse.com -- handle ROOT_USES_LANG=ctype
Patch72 : handle-root-uses-lang.patch
2013-01-10 20:35:11 +01:00
# PATCH-FIX-OPENSUSE multiple-sulogin.patch bnc#793182 fcrozat@suse.com -- handle multiple sulogin
Patch76 : multiple-sulogin.patch
2013-01-23 14:44:07 +01:00
# PATCH-FIX-OPENSUSE systemctl-options.patch bnc#798620 fcrozat@suse.com -- handle SYSTEMCTL_OPTIONS environment variable
Patch77 : systemctl-options.patch
2012-10-26 14:34:44 +02:00
# 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.
2012-11-05 19:33:03 +01:00
# 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
2012-11-14 21:14:47 +01:00
# PATCH-FIX-UPSTREAM fix-build-glibc217.patch fcrozat@suse.com -- fix build with latest glibc
Patch62 : fix-build-glibc217.patch
- 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 13:10:12 +01:00
# 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
2012-11-20 18:57:51 +01:00
# PATCH-FIX-UPSTREAM switch-root-try-pivot-root.patch fcrozat@suse.com -- try pivot_root before overmounting /
Patch69 : switch-root-try-pivot-root.patch
# PATCH-FIX-UPSTREAM remount-ro-before-unmount.patch fcrozat@suse.com -- remount ro before unmounting in final shutdown loop
Patch70 : remount-ro-before-unmount.patch
2012-12-07 09:12:17 +01:00
# PATCH-FIX-UPSTREAM revert-of-9279749b84cc87c7830280b7895a48bed03c9429.patch crrodriguez@opensuse.org -- do not consider failure to umount / and /usr an error.
Patch73 : revert-of-9279749b84cc87c7830280b7895a48bed03c9429.patch
2012-12-13 10:24:00 +01:00
# PATCH-FIX-UPSTREAM detect-btrfs-ssd.patch crrodriguez@opensuse.org -- fix BTRFS detection on systemd-readhead
Patch74 : detect-btrfs-ssd.patch
# PATCH-FIX-UPSTREAM timedated-donot-close-bogus-dbus-connection.patch crrodriguez@opensuse.org -- Fix assertion failure when dbus is gone.
Patch75 : timedated-donot-close-bogus-dbus-connection.patch
2013-01-23 14:44:07 +01:00
# PATCH-FIX-UPSTREAM journalctl-remove-leftover-message.patch fcrozat@suse.com -- remove debug message in systemctl
Patch78 : journalctl-remove-leftover-message.patch
# PATCH-FIX-UPSTREAM job-avoid-recursion-when-cancelling.patch fcrozat@suse.com -- prevent potential recursion when cancelling a service
Patch79 : job-avoid-recursion-when-cancelling.patch
# PATCH-FIX-UPSTREAM sysctl-parse-all-keys.patch fcrozat@suse.com -- ensure sysctl file is fully parsed
Patch80 : sysctl-parse-all-keys.patch
# PATCH-FIX-UPSTREAM journal-fix-cutoff-max-date.patch fcrozat@suse.com -- fix computation of cutoff max date for journal
Patch81 : journal-fix-cutoff-max-date.patch
# PATCH-FIX-UPSTREAM reword-rescue-mode-hints.patch fcrozat@suse.com -- reword rescue prompt
Patch82 : reword-rescue-mode-hints.patch
# PATCH-FIX-UPSTREAM improve-overflow-checks.patch fcrozat@suse.com -- improve time overflow checks
Patch83 : improve-overflow-checks.patch
# PATCH-FIX-UPSTREAM fix-swap-behaviour-with-symlinks.patch fcrozat@suse.com -- fix swap behaviour with symlinks
Patch84 : fix-swap-behaviour-with-symlinks.patch
# PATCH-FIX-UPSTREAM hostnamectl-fix-set-hostname-with-no-argument.patch fcrozat@suse.com -- ensure hostnamectl requires an argument when called with set-hostname option
Patch85 : hostnamectl-fix-set-hostname-with-no-argument.patch
# PATCH-FIX-UPSTREAM agetty-overrides-term.patch fcrozat@suse.com -- pass correctly terminal type to agetty
Patch86 : agetty-overrides-term.patch
# PATCH-FIX-UPSTREAM check-for-empty-strings-in-strto-conversions.patch fcrozat@suse.com -- better check for empty strings in strto* conversions
Patch87 : check-for-empty-strings-in-strto-conversions.patch
# PATCH-FIX-UPSTREAM strv-cleanup-error-path-loops.patch fcrozat@suse.com -- cleanup strv on error path
Patch88 : strv-cleanup-error-path-loops.patch
# PATCH-FIX-UPSTREAM cryptsetup-handle-plain.patch fcrozat@suse.com -- correctly handle "plain" option in cryptsetup
Patch89 : cryptsetup-handle-plain.patch
# PATCH-FIX-UPSTREAM fstab-generator-improve-error-message.patch fcrozat@suse.com -- improve error message in fstab-generator
Patch90 : fstab-generator-improve-error-message.patch
# PATCH-FIX-UPSTREAM delta-accept-t-option.patch fcrozat@suse.com -- accept -t option in systemd-delta
Patch91 : delta-accept-t-option.patch
# PATCH-FIX-UPSTREAM highlight-ordering-cycle-deletions.patch fcrozat@suse.com -- highlight ordering cycle deletions in logs
Patch92 : highlight-ordering-cycle-deletions.patch
# PATCH-FIX-UPSTREAM core-interpret-escaped-semicolon-as-escaped.patch fcrozat@suse.com -- accept \; in ExecStart
Patch93 : core-interpret-escaped-semicolon-as-escaped.patch
# PATCH-FIX-UPSTREAM hostnamectl-fix-parsing-no-ask-password.patch fcrozat@suse.com -- accept no-ask-password in hostnamectl
Patch94 : hostnamectl-fix-parsing-no-ask-password.patch
# PATCH-FIX-UPSTREAM systemd-cgls-fix-piping-output.patch fcrozat@suse.com -- fix piping output of systemd-cgls
Patch95 : systemd-cgls-fix-piping-output.patch
# PATCH-FIX-UPSTREAM core-load-fragment-improve-error-message.patch fcrozat@suse.com -- improve error message when parsing fragments
Patch96 : core-load-fragment-improve-error-message.patch
# PATCH-FIX-UPSTREAM fix-potential-bad-mem-access.patch fcrozat@suse.com -- fix potential bad memory access
Patch97 : fix-potential-bad-mem-access.patch
# PATCH-FIX-UPSTREAM socket-improve-error-message.patch fcrozat@suse.com -- improve error message in socket handling
Patch98 : socket-improve-error-message.patch
# PATCH-FIX-UPSTREAM journal-send-always-send-syslog_identifier.patch fcrozat@suse.com -- always send syslog_identifier if available for journal
Patch99 : journal-send-always-send-syslog_identifier.patch
# PATCH-FIX-UPSTREAM crypsetup-handle-nofail.patch fcrozat@suse.com -- handle nofail in cryptsetup
Patch100 : crypsetup-handle-nofail.patch
# PATCH-FIX-UPSTREAM crypsetup-generator-state-file-name-in-error-message.patch fcrozat@suse.com -- add filename in error message from crypsetup-generator
Patch101 : crypsetup-generator-state-file-name-in-error-message.patch
# PATCH-FIX-UPSTREAM fstab-generator-error-message-on-duplicates.patch fcrozat@suse.com -- improve error message on duplicate in fstab-generator
Patch102 : fstab-generator-error-message-on-duplicates.patch
# PATCH-FIX-UPSTREAM systemctl-verbose-message-on-missing-install.patch fcrozat@suse.com -- reword missing install error message in systemctl
Patch103 : systemctl-verbose-message-on-missing-install.patch
# PATCH-FIX-UPSTREAM shutdown-improvements.patch fcrozat@suse.com -- various improvements at shutdown
Patch104 : shutdown-improvements.patch
# PATCH-FIX-UPSTREAM localectl-fix-assertion.patch fcrozat@suse.com -- fix assertion in localectl
Patch105 : localectl-fix-assertion.patch
# PATCH-FIX-UPSTREAM path-util-fix-potential-crash.patch fcrozat@suse.com -- fix potential crash in path-util
Patch106 : path-util-fix-potential-crash.patch
# PATCH-FIX-UPSTREAM coredumpctl-fix-crash.patch fcrozat@suse.com -- fix crash in coredumpctl
Patch107 : coredumpctl-fix-crash.patch
# PATCH-FIX-UPSTREAM socket-verbose-error-message.patch fcrozat@suse.com -- add more verbose error message in socket handling
Patch108 : socket-verbose-error-message.patch
# PATCH-FIX-UPSTREAM pam-properly-handle-ssh-logins-without-pam-tty-field.patch fcrozat@suse.com -- handle properly ssh-logins without pam tty field
Patch109 : pam-properly-handle-ssh-logins-without-pam-tty-field.patch
# PATCH-FIX-UPSTREAM fstab-generator-properly-detect-bind-mounts.patch fcrozat@suse.com -- properly detect bind-mounts in fstab-generator
Patch110 : fstab-generator-properly-detect-bind-mounts.patch
# PATCH-FIX-UPSTREAM localectl-support-systems-without-locale-archive.patch fcrozat@suse.com -- localectl now supports systemd without locale-archive file
Patch111 : localectl-support-systems-without-locale-archive.patch
# PATCH-FIX-UPSTREAM logind-capability-making-seats-without-fb.patch fcrozat@suse.com -- allows capability of making seats without fb
Patch112 : logind-capability-making-seats-without-fb.patch
# PATCH-FIX-UPSTREAM service-forking-ignore-exit-status-main-process.patch fcrozat@suse.com -- ignore exit-statis of main process when forking, if specified in unit file
Patch113 : service-forking-ignore-exit-status-main-process.patch
# PATCH-FIX-UPSTREAM systemctl-no-assert-on-reboot-without-dbus.patch fcrozat@suse.com -- don't assert on reboot if dbus isn't there
Patch114 : systemctl-no-assert-on-reboot-without-dbus.patch
# PATCH-FIX-UPSTREAM logind-ignore-non-tty-non-x11-session-on-shutdown.patch fcrozat@suse.com -- ignore non tty non-x11 session on shutdown
Patch115 : logind-ignore-non-tty-non-x11-session-on-shutdown.patch
# PATCH-FIX-UPSTREAM journalctl-quit-on-io-error.patch fcrozat@suse.com -- fix journalctl quit on io error
Patch116 : journalctl-quit-on-io-error.patch
# PATCH-FIX-UPSTREAM do-not-make-sockets-dependent-on-lo.patch fcrozat@suse.com -- do not make sockets dependent on lo interface
Patch117 : do-not-make-sockets-dependent-on-lo.patch
# PATCH-FIX-UPSTREAM shutdown-dont-force-mnt-force-on-final-umount.patch fcrozat@suse.com -- don't force MNT_FORCE on final umount at shutdown
Patch118 : shutdown-dont-force-mnt-force-on-final-umount.patch
# PATCH-FIX-UPSTREAM shutdown-ignore-loop-devices-without-backing-file.patch fcrozat@suse.com -- ignore loop devices without backing file at shutdown
Patch119 : shutdown-ignore-loop-devices-without-backing-file.patch
# PATCH-FIX-UPSTREAM fix-bad-mem-access.patch fcrozat@suse.com -- fix bad memory access
Patch120 : fix-bad-mem-access.patch
# PATCH-FIX-UPSTREAM parse-multiline-env-file.patch fcrozat@suse.com bnc#793411 -- correctly parse multiline environment files
Patch121 : parse-multiline-env-file.patch
2013-01-28 14:36:03 +01:00
# PATCH-FIX-UPSTREAM improve-man-environment.patch fcrozat@suse.com -- improve Environment section in manpage
Patch122 : improve-man-environment.patch
# PATCH-FIX-UPSTREAM tmpfiles-X-type.patch fcrozat@suse.com -- allow to clean directories with removing them
Patch123 : tmpfiles-X-type.patch
# PATCH-FIX-UPSTREAM systemd-fix-merge-ignore-dependencies.patch fcrozat@suse.com bnc#800365 -- fix merging with --ignore-dependencies waiting for dependencies
Patch124 : systemd-fix-merge-ignore-dependencies.patch
2013-02-12 10:21:01 +01:00
# PATCH-FIX-UPSTREAM journalctl-require-argument-for-priority
2013-01-29 14:48:02 +01:00
Patch125 : journalctl-require-argument-for-priority
2013-02-12 10:21:01 +01:00
# PATCH-FIX-UPSTREAM cryptsetup-accept-read-only.patch fcrozat@suse.com -- Accept read-only as well as readonly as parameters for crypttab
Patch126 : cryptsetup-accept-read-only.patch
2013-02-15 15:53:23 +01:00
# PATCH-FIX-OPENSUSE disable-nss-myhostname-warning-bnc-783841.diff lnussel@suse.de -- disable nss-myhostname warning (bnc#783841)
Patch127 : disable-nss-myhostname-warning-bnc-783841.diff
2013-02-16 10:43:26 +01:00
# PATCH-FIX-UPSTREAM early-sync-shutdown.patch fcrozat@suse.com -- Start sync on shutdown early
Patch128 : early-sync-shutdown.patch
# PATCH-FIX-OPENSUSE handle-HOSTNAME.patch fcrozat@suse.com -- handle /etc/HOSTNAME (bnc#803653)
Patch129 : handle-HOSTNAME.patch
# PATCH-FIX-UPSTREAM systemctl-print-wall-on-if-successful.patch fcrozat@suse.com -- Only print on wall if successful
Patch130 : systemctl-print-wall-on-if-successful.patch
# PATCH-FIX-UPSTREAM improve-bash-completion.patch fcrozat@suse.com -- improve bash completion
Patch131 : improve-bash-completion.patch
2012-10-26 14:34:44 +02:00
# udev patches
2013-01-08 13:54:22 +01:00
# PATCH-FIX-OPENSUSE 1001-Reinstate-TIMEOUT-handling.patch
Patch1001 : 1001-Reinstate-TIMEOUT-handling.patch
# PATCH-FIX-OPENSUSE 1002-re-enable-by_path-links-for-ata-devices.patch
Patch1002 : 1002-re-enable-by_path-links-for-ata-devices.patch
# PATCH-FIX-OPENSUSE 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch
Patch1003 : 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch
# PATCH-FIX-OPENSUSE 1004-udev-netlink-null-rules.patch
Patch1004 : 1004-udev-netlink-null-rules.patch
# PATCH-FIX-OPENSUSE 1005-udev-fix-sg-autoload-regression.patch
Patch1005 : 1005-udev-fix-sg-autoload-regression.patch
# PATCH-FIX-OPENSUSE 1007-fix-devname-prefix.patch fcrozat@suse.com -- fix modules.devname path, it isn't in /usr
Patch1006 : 1006-fix-devname-prefix.patch
# PATCH-FIX-UPSTREAM 1007-udevd-add-missing-to-getopt_long-e.patch
Patch1007 : 1007-udevd-add-missing-to-getopt_long-e.patch
2013-01-09 10:46:41 +01:00
# PATCH-FIX-UPSTREAM 1008-udev-path_id-handle-Hyper-V-devices.patch
Patch1008 : 1008-udev-path_id-handle-Hyper-V-devices.patch
# PATCH-FIX-UPSTREAM 1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch
Patch1009 : 1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch
# PATCH-FIX-UPSTREAM 1010-keymap-Add-Samsung-700T.patch
Patch1010 : 1010-keymap-Add-Samsung-700T.patch
# PATCH-FIX-UPSTREAM 1011-libudev-avoid-leak-during-realloc-failure.patch
Patch1011 : 1011-libudev-avoid-leak-during-realloc-failure.patch
# PATCH-FIX-UPSTREAM 1012-libudev-do-not-resolve-attr-device-symlinks.patch
Patch1012 : 1012-libudev-do-not-resolve-attr-device-symlinks.patch
# PATCH-FIX-UPSTREAM 1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch
Patch1013 : 1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch
# PATCH-FIX-UPSTREAM 1014-udev-fix-whitespace.patch
Patch1014 : 1014-udev-fix-whitespace.patch
# PATCH-FIX-UPSTREAM 1015-udev-properly-handle-symlink-removal-by-change-event.patch
Patch1015 : 1015-udev-properly-handle-symlink-removal-by-change-event.patch
# PATCH-FIX-UPSTREAM 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch
Patch1016 : 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch
# PATCH-FIX-UPSTREAM 1017-udev-use-usec_t-and-now.patch
2013-01-10 20:35:11 +01:00
Patch1017 : 1017-udev-use-usec_t-and-now.patch
2013-01-29 14:40:40 +01:00
# PATCH-FIX-UPSTREAM 1018-keymap-add-aditional-support.patch
Patch1018 : 1018-keymap-add-aditional-support.patch
# PATCH-FIX-UPSTREAM 1019-udev-Fix-device-matching-in-the-accelerometer.patch
Patch1019 : 1019-udev-Fix-device-matching-in-the-accelerometer.patch
2013-02-12 10:21:01 +01:00
# PATCH-FIX-OPENSUSE 1020-usb_id-some-strange-devices-have-a-very-bogus-or-strage-serial.patch
Patch1020 : 1020-usb_id-some-strange-devices-have-a-very-bogus-or-strage-serial.patch
# PATCH-FIX-OPENSUSE 1021-create-default-links-for-primary-cd_dvd-drive.patch
Patch1021 : 1021-create-default-links-for-primary-cd_dvd-drive.patch
2013-02-13 13:01:15 +01:00
# PATCH-FIX-UPSTREAM 1022-udev-use-unique-names-for-temporary-files-created-in.patch
Patch1022 : 1022-udev-use-unique-names-for-temporary-files-created-in.patch
# PATCH-FIX-UPSTREAM 1023-cdrom_id-add-data-track-count-for-bad-virtual-drive.patch
Patch1023 : 1023-cdrom_id-add-data-track-count-for-bad-virtual-drive.patch
2012-10-26 14:34:44 +02:00
%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
2012-11-02 15:16:22 +01:00
License : LGPL-2.1+
2012-10-26 14:34:44 +02:00
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
2012-11-02 15:16:22 +01:00
License : LGPL-2.1+
2012-10-26 14:34:44 +02:00
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
2012-11-02 15:16:22 +01:00
License : LGPL-2.1+
2012-10-26 14:34:44 +02:00
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
2012-11-02 15:16:22 +01:00
License : GPL-2.0
2012-10-26 14:34:44 +02:00
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
2012-11-14 21:14:47 +01:00
Requires(post) : lib%{udevpkgname} %{udev_major}
2012-10-26 14:34:44 +02:00
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}
2012-12-10 15:22:55 +01:00
Conflicts : libudev%{udev_major} = %{version}
2012-10-26 14:34:44 +02:00
%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
2012-11-02 15:16:22 +01:00
License : LGPL-2.1+
2012-10-26 14:34:44 +02:00
Group : System/Libraries
Requires : %{udevpkgname} >= %{version} -%{release}
2012-12-05 19:07:07 +01:00
%if 0%{?bootstrap}
Conflicts : libudev%{udev_major}
%endif
2012-10-26 14:34:44 +02:00
%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
2012-11-02 15:16:22 +01:00
License : LGPL-2.1+
2012-10-26 14:34:44 +02:00
Group : Development/Libraries/Other
Requires : lib%{udevpkgname} %{udev_major} = %{version} -%{release}
%if 0%{?bootstrap}
Provides : libudev-devel = %{version}
2012-12-10 15:22:55 +01:00
Conflicts : libudev%{udev_major} = %{version}
2012-10-26 14:34:44 +02:00
%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
2012-11-02 15:16:22 +01:00
License : LGPL-2.1+
2012-10-26 14:34:44 +02:00
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
2012-11-02 15:16:22 +01:00
License : LGPL-2.1+
2012-10-26 14:34:44 +02:00
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
2012-11-02 15:16:22 +01:00
License : LGPL-2.1+
2012-10-26 14:34:44 +02:00
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.
2012-11-06 15:52:17 +01:00
%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.
2012-10-26 14:34:44 +02:00
%endif
%prep
%setup -q -n systemd-%{version}
2012-11-14 21:14:47 +01:00
# only needed for bootstrap
%if 0%{?bootstrap}
cp %{SOURCE7} m4/
%endif
2012-10-26 14:34:44 +02:00
#udev
%patch1001 -p1
2013-01-08 13:54:22 +01:00
%patch1002 -p1
%patch1003 -p1
%patch1004 -p1
%patch1005 -p1
%patch1006 -p1
%patch1007 -p1
2013-01-09 10:46:41 +01:00
%patch1008 -p1
%patch1009 -p1
%patch1010 -p1
%patch1011 -p1
%patch1012 -p1
%patch1013 -p1
%patch1014 -p1
%patch1015 -p1
%patch1016 -p1
%patch1017 -p1
2013-01-29 14:40:40 +01:00
%patch1018 -p1
%patch1019 -p1
2013-02-12 10:21:01 +01:00
%patch1020 -p1
%patch1021 -p1
2013-02-13 13:01:15 +01:00
%patch1022 -p1
%patch1023 -p1
2012-10-26 14:34:44 +02:00
- 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 13:10:12 +01:00
#systemd
2012-10-26 14:34:44 +02:00
%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
2012-10-29 19:55:30 +01:00
%patch60 -p1
2012-11-05 19:33:03 +01:00
%patch61 -p1
2012-11-14 21:14:47 +01:00
%patch62 -p1
- 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 13:10:12 +01:00
%patch63 -p1
%patch64 -p1
%patch65 -p1
%patch66 -p1
%patch67 -p1
%patch68 -p1
2012-11-20 18:57:51 +01:00
%patch69 -p1
%patch70 -p1
2012-12-05 19:07:07 +01:00
%patch71 -p1
%patch72 -p1
2012-12-07 09:12:17 +01:00
%patch73 -p1
2012-12-13 10:24:00 +01:00
%patch74 -p1
%patch75 -p1
2013-01-10 20:35:11 +01:00
%patch76 -p1
2013-01-23 14:44:07 +01:00
%patch77 -p1
%patch78 -p1
%patch79 -p1
%patch80 -p1
%patch81 -p1
%patch82 -p1
%patch83 -p1
%patch84 -p1
%patch85 -p1
%patch86 -p1
%patch87 -p1
%patch88 -p1
%patch89 -p1
%patch90 -p1
%patch91 -p1
%patch92 -p1
%patch93 -p1
%patch94 -p1
%patch95 -p1
%patch96 -p1
%patch97 -p1
%patch98 -p1
%patch99 -p1
%patch100 -p1
%patch101 -p1
%patch102 -p1
%patch103 -p1
%patch104 -p1
%patch105 -p1
%patch106 -p1
%patch107 -p1
%patch108 -p1
%patch109 -p1
%patch110 -p1
%patch111 -p1
%patch112 -p1
%patch113 -p1
%patch114 -p1
%patch115 -p1
%patch116 -p1
%patch117 -p1
%patch118 -p1
%patch119 -p1
%patch120 -p1
%patch121 -p1
2013-01-28 14:36:03 +01:00
%patch122 -p1
%patch123 -p1
%patch124 -p1
2013-01-29 14:48:02 +01:00
%patch125 -p1
2013-02-12 10:21:01 +01:00
%patch126 -p1
2013-02-15 15:53:23 +01:00
%patch127 -p1
2013-02-16 10:43:26 +01:00
%patch128 -p1
%patch129 -p1
%patch130 -p1
%patch131 -p1
2012-10-26 14:34:44 +02:00
%build
autoreconf -fiv
# prevent pre-generated and distributed files from re-building
2013-02-18 17:15:49 +01:00
find . -name " * . [ 1 - 8 ] " -exec touch '{}' '+' ;
2012-10-26 14:34:44 +02:00
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
2012-10-29 19:55:30 +01:00
ln -sf %{_bindir} /systemd-ask-password $RPM_BUILD_ROOT /bin/systemd-ask-password
ln -sf %{_bindir} /systemctl $RPM_BUILD_ROOT /bin/systemctl
2012-10-26 14:34:44 +02:00
ln -sf %{_prefix} /lib/systemd/systemd-udevd $RPM_BUILD_ROOT /sbin/udevd
- 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 13:10:12 +01:00
%if ! 0%{?bootstrap}
ln -sf systemd-udevd.8 $RPM_BUILD_ROOT /%{_mandir} /man8/udevd.8
%endif
2012-10-26 14:34:44 +02:00
mkdir -p $RPM_BUILD_ROOT /%{_prefix} /usr/lib/firmware/updates
ln -sf /lib/firmware $RPM_BUILD_ROOT /usr/lib/firmware
- 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 13:10:12 +01:00
%if ! 0%{?bootstrap}
install -m755 -D %{S:8} $RPM_BUILD_ROOT /etc/init.d/systemd-journald
%endif
2012-10-26 14:34:44 +02:00
2013-01-08 14:29:03 +01:00
sed -ie " s | @ @ P R E F I X @ @ | %{_prefix} / l i b / u d e v | g " %{S:1060}
sed -ie " s | @ @ S Y S T E M D @ @ | %{_prefix} / l i b / s y s t e m d | g " %{S:1060}
sed -ie " s | @ @ B I N D I R @ @ | %{_bindir} | g " %{S:1060}
2012-10-26 14:34:44 +02:00
install -m755 -D %{S:1060} $RPM_BUILD_ROOT /etc/init.d/boot.udev
2012-11-05 19:33:03 +01:00
ln -s systemd-udevd.service $RPM_BUILD_ROOT /%{_prefix} /lib/systemd/system/udev.service
2012-11-23 12:06:55 +01:00
sed -ie " s | @ @ P R E F I X @ @ | %{_bindir} | g " %{S:1061}
2012-10-26 14:34:44 +02:00
install -m755 -D %{S:1061} $RPM_BUILD_ROOT /%{_prefix} /lib/udev/write_dev_root_rule
2012-11-23 12:06:55 +01:00
sed -ie " s | @ @ P R E F I X @ @ | %{_prefix} / l i b / u d e v | g " %{S:1062}
2013-01-29 14:40:40 +01:00
install -m644 -D %{S:1062} $RPM_BUILD_ROOT /%{_prefix} /lib/systemd/system/systemd-udev-root-symlink.service
2013-01-08 13:54:22 +01:00
mkdir -p $RPM_BUILD_ROOT /%{_prefix} /lib/systemd/system/basic.target.wants
2013-01-29 14:40:40 +01:00
ln -sf ../systemd-udev-root-symlink.service $RPM_BUILD_ROOT /%{_prefix} /lib/systemd/system/basic.target.wants
2012-10-26 14:34:44 +02:00
#workaround for 716939
chmod 644 %{buildroot} %{_bindir} /systemd-analyze
mkdir -p %{buildroot} %{_sysconfdir} /rpm
install -m644 %{S:4} %{buildroot} %{_sysconfdir} /rpm
2013-02-18 17:15:49 +01:00
find %{buildroot} -type f -name '*.la' -delete
2012-10-26 14:34:44 +02:00
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
- 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 13:10:12 +01:00
#install -m755 %{S:5} %{buildroot}/usr/lib/systemd/system-generators
2012-10-26 14:34:44 +02:00
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
- 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 13:10:12 +01:00
ln -s /dev/null %{buildroot} /%{_prefix} /lib/systemd/system/localnet.service
2012-10-26 14:34:44 +02:00
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
2012-11-14 21:14:47 +01:00
# remove README file for now
rm -f %{buildroot} /etc/init.d/README
%if 0%{?bootstrap}
rm -f %{buildroot} /var/log/README
%endif
2012-10-29 19:55:30 +01:00
2012-10-26 14:34:44 +02:00
# legacy links
- 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 13:10:12 +01:00
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
2012-10-26 14:34:44 +02:00
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
2013-02-18 17:15:49 +01:00
src=" % b u i l d r o o t / %_libexecdir / s y s t e m d / s y s t e m / g e t t y @ . s e r v i c e "
dst=" $ { s r c / @ / @ t t y 1 } "
cp " $ s r c " " $ d s t "
perl -i -pe 's{^# the VT is cleared.*}{}i;s{(^TTYVTDisallocate=.*)}{}' " $ d s t "
2012-10-26 14:34:44 +02:00
%fdupes -s %{buildroot} %{_mandir}
2012-11-14 21:14:47 +01:00
%pre
getent group adm >/dev/null || groupadd -r adm
exit 0
2012-10-26 14:34:44 +02:00
%post
/usr/sbin/pam-config -a --systemd >/dev/null 2>&1 || :
/sbin/ldconfig
2012-10-29 19:55:30 +01:00
/usr/bin/systemd-machine-id-setup >/dev/null 2>&1 || :
2012-11-14 21:14:47 +01:00
/usr/lib/systemd/systemd-random-seed save >/dev/null 2>&1 || :
2012-10-29 19:55:30 +01:00
/usr/bin/systemctl daemon-reexec >/dev/null 2>&1 || :
2012-10-26 14:34:44 +02:00
# 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 " $ r u n l e v e l " ] ; 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.
2012-10-29 19:55:30 +01:00
/usr/bin/systemctl enable \
2012-10-26 14:34:44 +02:00
getty@.service \
systemd-readahead-collect.service \
systemd-readahead-replay.service \
remote-fs.target >/dev/null 2>&1 || :
2012-12-05 19:07:07 +01:00
fi
%triggerpostun -- systemd < 194
2012-10-29 19:55:30 +01:00
# migrate any symlink which may refer to the old path
for f in $(find /etc/systemd/system -type l -xtype l); do
new_target=" / u s r $ ( r e a d l i n k $ f ) "
[ -f " $ n e w _ t a r g e t " ] && ln -s -f $new_target $f || :
done
2012-10-26 14:34:44 +02:00
%postun
/sbin/ldconfig
if [ $1 -ge 1 ]; then
2012-11-14 21:14:47 +01:00
/usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
2012-10-29 19:55:30 +01:00
/usr/bin/systemctl try-restart systemd-logind.service >/dev/null 2>&1 || :
2012-10-26 14:34:44 +02:00
fi
if [ $1 -eq 0 ]; then
/usr/sbin/pam-config -d --systemd >/dev/null 2>&1 || :
fi
%preun
if [ $1 -eq 0 ]; then
2012-10-29 19:55:30 +01:00
/usr/bin/systemctl disable \
2012-10-26 14:34:44 +02:00
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(" / l i b / u d e v " ) and not posix.stat(" / u s r / l i b / u d e v " ) then
posix.symlink(" / l i b / u d e v " , " / u s r / l i b / u d e v " )
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
2012-11-14 21:14:47 +01:00
elif [ ! -e /lib/udev ]; then
ln -s /usr/lib/udev /lib/udev
2012-10-26 14:34:44 +02:00
fi
- 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 13:10:12 +01:00
# 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 || :
2012-11-05 19:33:03 +01:00
# kill daemon if we are not in a chroot
if test -f /proc/1/exe -a -d /proc/1/root ; then
if test " $ ( s t a t - L c ' % % D - % % i ' / ) " = " $ ( s t a t - L c ' % % D - % % i ' / p r o c / 1 / r o o t ) " ; 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
2012-10-26 14:34:44 +02:00
%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
2012-11-05 19:33:03 +01:00
systemctl daemon-reload >/dev/null 2>&1 || :
2012-10-26 14:34:44 +02:00
# start daemon if we are not in a chroot
if test -f /proc/1/exe -a -d /proc/1/root; then
if test " $ ( s t a t - L c ' % % D - % % i ' / ) " = " $ ( s t a t - L c ' % % D - % % i ' / p r o c / 1 / r o o t ) " ; then
2012-11-05 19:33:03 +01:00
if ! systemctl start systemd-udevd.service >/dev/null 2>&1; then
/usr/lib/systemd/systemd-udevd --daemon >/dev/null 2>&1 || :
fi
2012-10-26 14:34:44 +02:00
fi
fi
2012-11-23 12:06:55 +01:00
if [ " $ { Y A S T _ I S _ R U N N I N G } " != " i n s t s y s " ]; then
if [ -e /var/lib/no_initrd_recreation_by_suspend ]; then
echo " S k i p p i n g r e c r e a t i o n o f e x i s t i n g i n i t i a l r a m d i s k s , d u e "
echo " t o p r e s e n c e o f / v a r / l i b / n o _ i n i t r d _ r e c r e a t i o n _ b y _ s u s p e n d "
elif [ -x /sbin/mkinitrd ]; then
[ -x /sbin/mkinitrd_setup ] && /sbin/mkinitrd_setup
/sbin/mkinitrd || :
fi
2012-10-26 14:34:44 +02:00
fi
%postun -n %{udevpkgname}
%insserv_cleanup
2012-11-05 19:33:03 +01:00
systemctl daemon-reload >/dev/null 2>&1 || :
2012-10-26 14:34:44 +02:00
2012-11-23 12:06:55 +01:00
if [ " $ { Y A S T _ I S _ R U N N I N G } " != " i n s t s y s " ]; then
if [ -e /var/lib/no_initrd_recreation_by_suspend ]; then
echo " S k i p p i n g r e c r e a t i o n o f e x i s t i n g i n i t i a l r a m d i s k s , d u e "
echo " t o p r e s e n c e o f / v a r / l i b / n o _ i n i t r d _ r e c r e a t i o n _ b y _ s u s p e n d "
elif [ -x /sbin/mkinitrd ]; then
[ -x /sbin/mkinitrd_setup ] && /sbin/mkinitrd_setup
/sbin/mkinitrd || :
fi
2012-10-26 14:34:44 +02:00
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
2012-11-23 12:06:55 +01:00
# rm -rf %{buildroot}
2012-10-26 14:34:44 +02:00
%files
%defattr (-,root,root)
/bin/systemd
2012-10-29 19:55:30 +01:00
/bin/systemd-ask-password
/bin/systemctl
%{_bindir} /hostnamectl
%{_bindir} /localectl
2012-10-26 14:34:44 +02:00
%{_bindir} /systemctl
2012-10-29 19:55:30 +01:00
%{_bindir} /systemd-coredumpctl
2012-10-26 14:34:44 +02:00
%{_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
2012-10-29 19:55:30 +01:00
%{_bindir} /timedatectl
2012-10-26 14:34:44 +02:00
%{_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*.*
2012-11-05 19:33:03 +01:00
%exclude %{_prefix} /lib/systemd/system/udev.service
2013-01-29 14:40:40 +01:00
%exclude %{_prefix} /lib/systemd/system/systemd-udev-root-symlink.service
2012-10-26 14:34:44 +02:00
%exclude %{_prefix} /lib/systemd/system/*.target.wants/systemd-udev*.*
2013-01-29 14:40:40 +01:00
%exclude %{_prefix} /lib/systemd/system/basic.target.wants/systemd-udev-root-symlink.service
2012-10-26 14:34:44 +02:00
%{_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]*
- 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 13:10:12 +01:00
# Packaged in analyze subpackage
%exclude %{_mandir} /man1/systemd-analyze.1*
2012-10-26 14:34:44 +02:00
%{_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
- 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 13:10:12 +01:00
%defattr (-,root,root)
2012-10-26 14:34:44 +02:00
%attr (0755,root,root) /usr/bin/systemd-analyze
- 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 13:10:12 +01:00
%if ! 0%{?bootstrap}
%{_mandir} /man1/systemd-analyze.1*
%endif
2012-10-26 14:34:44 +02:00
%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
2013-01-29 14:40:40 +01:00
%{_prefix} /lib/systemd/system/systemd-udev-root-symlink.service
2013-01-29 15:18:53 +01:00
%{_prefix} /lib/systemd/system/basic.target.wants/systemd-udev-root-symlink.service
2012-10-26 14:34:44 +02:00
%{_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
2012-11-06 15:52:17 +01:00
%files logger
%defattr (-,root,root)
%dir /var/log/journal
2012-11-14 21:14:47 +01:00
/var/log/README
- 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 13:10:12 +01:00
/etc/init.d/systemd-journald
2012-11-06 15:52:17 +01:00
2012-10-26 14:34:44 +02:00
%endif
%changelog