2012-10-26 14:34:44 +02:00
#
# spec file for package systemd-mini
#
2015-02-16 12:36:25 +01:00
# Copyright (c) 2015 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
2014-02-09 19:45:14 +01:00
%bcond_without bash_completion
2015-02-13 11:05:19 +01:00
%bcond_without networkd
2014-02-28 18:10:52 +01:00
%bcond_with python
2014-11-03 16:22:08 +01:00
%bcond_with parentpathid
2014-06-12 11:30:28 +02:00
%ifarch %{ix86} x86_64 aarch64
%define has_efi 1
%else
%define has_efi 0
%endif
2014-07-25 13:07:45 +02:00
%if 0%{?suse_version} > 1315
2014-07-28 12:21:09 +02:00
%bcond_without permission
2014-07-25 12:06:14 +02:00
%bcond_without blkrrpart
2014-07-25 13:38:51 +02:00
%bcond_without udevsettle
2014-07-25 13:07:45 +02:00
%else
2014-07-28 12:21:09 +02:00
%bcond_with permission
2014-07-25 13:07:45 +02:00
%bcond_with blkrrpart
2014-07-25 13:38:51 +02:00
%bcond_with udevsettle
2014-07-25 13:07:45 +02:00
%endif
2014-08-18 16:41:57 +02:00
%bcond_with systemgrps
2012-10-26 14:34:44 +02:00
Name : systemd-mini
Url : http://www.freedesktop.org/wiki/Software/systemd
2015-02-16 12:36:25 +01:00
Version : 218.g1050
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}
2014-06-03 16:53:17 +02:00
BuildRequires : acl
2012-10-26 14:34:44 +02:00
BuildRequires : audit-devel
2015-02-16 12:36:25 +01:00
BuildRequires : autoconf
BuildRequires : automake
2012-10-26 14:34:44 +02:00
BuildRequires : fdupes
BuildRequires : gperf
2015-02-16 12:36:25 +01:00
BuildRequires : gtk-doc
2012-10-26 14:34:44 +02:00
BuildRequires : intltool
BuildRequires : libacl-devel
BuildRequires : libcap-devel
2014-02-28 18:10:52 +01:00
BuildRequires : libkmod-devel
2012-10-26 14:34:44 +02:00
BuildRequires : libsepol-devel
BuildRequires : libtool
2015-02-16 12:36:25 +01:00
BuildRequires : libtool
2012-10-26 14:34:44 +02:00
BuildRequires : pam-devel
2015-02-13 10:43:21 +01:00
BuildRequires : config(suse-module-tools)
2014-02-07 14:20:42 +01:00
%if 0%{?suse_version} > 1310
BuildRequires : systemd-rpm-macros
%endif
2012-10-26 14:34:44 +02:00
BuildRequires : xz
BuildRequires : pkgconfig(blkid) >= 2.20
2014-02-28 18:10:52 +01:00
BuildRequires : pkgconfig(libkmod) >= 15
2012-10-26 14:34:44 +02:00
BuildRequires : pkgconfig(liblzma)
BuildRequires : pkgconfig(libpci) >= 3
2013-12-16 17:54:19 +01:00
BuildRequires : pkgconfig(libpcre)
2015-02-13 10:43:21 +01:00
BuildRequires : pkgconfig(mount) >= 2.20
2014-07-11 14:26:50 +02:00
%if 0%{?suse_version} >= 1315
%ifarch %ix86 x86_64 x32 %arm ppc64le s390x
BuildRequires : pkgconfig(libseccomp)
%endif
%else
2014-06-05 08:57:37 +02:00
%if 0%{?suse_version} >= 1310
2014-03-03 15:25:26 +01:00
%ifarch %ix86 x86_64 x32 %arm
2014-02-28 18:10:52 +01:00
BuildRequires : pkgconfig(libseccomp)
%endif
2014-03-03 15:25:26 +01:00
%endif
2014-07-11 14:49:28 +02:00
%endif
2012-10-26 14:34:44 +02:00
BuildRequires : pkgconfig(libselinux) >= 2.1.9
BuildRequires : pkgconfig(libsepol)
2014-04-14 17:09:11 +02:00
%if 0%{?suse_version} > 1310
Conflicts : sysvinit
%endif
2012-10-26 14:34:44 +02:00
%if 0%{?bootstrap}
2013-07-01 14:11:31 +02:00
#!BuildIgnore: dbus-1
2012-10-26 14:34:44 +02:00
Requires : this-is-only-for-build-envs
2013-04-22 16:35:32 +02:00
Conflicts : systemd
2013-04-23 14:55:16 +02:00
Conflicts : kiwi
2012-10-26 14:34:44 +02:00
%else
2015-02-13 10:43:21 +01:00
BuildRequires : docbook-xsl-stylesheets
BuildRequires : gobject-introspection-devel
BuildRequires : gtk-doc
BuildRequires : libgcrypt-devel
BuildRequires : libusb-devel
BuildRequires : libxslt-tools
%if %{with python}
BuildRequires : python
%endif
BuildRequires : libapparmor-devel
BuildRequires : pkgconfig(glib-2.0) >= 2.22.0
BuildRequires : pkgconfig(libcryptsetup) >= 1.6.0
BuildRequires : pkgconfig(libmicrohttpd)
BuildRequires : pkgconfig(libqrencode)
BuildRequires : pkgconfig(usbutils) >= 0.82
2012-10-26 14:34:44 +02:00
# the buildignore is important for bootstrapping
#!BuildIgnore: udev
Requires : %{udevpkgname} >= 172
2014-02-08 11:46:51 +01:00
Recommends: %{name} -bash-completion
2012-10-26 14:34:44 +02:00
Requires : dbus-1 >= 1.4.0
Requires : kbd
2014-02-28 18:31:17 +01:00
Requires : kmod >= 15
2014-06-24 13:34:12 +02:00
Requires : netcfg
2012-10-26 14:34:44 +02:00
Requires : pam-config >= 0.79-5
2015-02-13 11:05:19 +01:00
BuildRequires : 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
2014-07-15 09:40:33 +02:00
Requires : sysvinit-tools
2015-02-13 10:43:21 +01:00
Requires : util-linux >= 2.25
2012-10-29 19:55:30 +01:00
Requires(post) : coreutils
Requires(post) : findutils
2014-07-03 09:03:56 +02:00
Requires(post) : pam-config >= 0.79-5
2013-10-02 16:37:41 +02:00
%endif
2014-06-05 10:47:12 +02:00
Requires(pre) : /usr/bin/getent
Requires(pre) : /usr/sbin/groupadd
2014-06-06 13:40:36 +02:00
Requires(post) : /usr/bin/awk
Requires(post) : /usr/bin/getent
2014-12-18 14:53:53 +01:00
Requires(post) : /usr/bin/setfacl
2012-10-26 14:34:44 +02:00
Conflicts : filesystem < 11.5
Conflicts : mkinitrd < 2.7.0
2013-04-13 13:09:53 +02:00
Obsoletes : systemd-analyze < 201
2013-04-22 16:35:32 +02:00
Provides : systemd-analyze = %{version}
2015-02-16 12:36:25 +01:00
#Git-Clone: git://anongit.freedesktop.org/systemd/systemd
#Snapshot: v218-1050-g38ab096
Source0 : systemd-%{version} .tar.xz
2014-06-26 12:03:25 +02:00
%if ! 0%{?bootstrap}
2012-10-26 14:34:44 +02:00
Source1 : systemd-rpmlintrc
2014-06-26 12:03:25 +02:00
%else
Source1 : systemd-mini-rpmlintrc
%endif
2012-10-26 14:34:44 +02:00
Source2 : localfs.service
Source3 : systemd-sysv-convert
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
2013-04-13 13:09:53 +02:00
Source9 : nss-myhostname-config
2013-06-19 13:05:44 +02:00
Source10 : macros.systemd.upstream
2013-10-01 09:23:27 +02:00
Source11 : after-local.service
2012-10-26 14:34:44 +02:00
Source1060 : boot.udev
2014-07-24 11:03:14 +02:00
Source1063 : udev-generate-persistent-rule.sh
2014-03-25 18:29:50 +01:00
Source1064 : systemd-sleep-grub
2014-07-14 17:05:04 +02:00
Source1065 : systemd-remount-tmpfs
2012-10-26 14:34:44 +02:00
# handle SUSE specific kbd settings
2013-04-13 13:09:53 +02:00
Patch3 : handle-disable_caplock-and-compose_table-and-kbd_rate.patch
Patch4 : handle-numlock-value-in-etc-sysconfig-keyboard.patch
2013-07-02 22:42:56 +02:00
Patch6 : insserv-generator.patch
2013-04-13 13:09:53 +02:00
Patch12 : Fix-run-lock-directories-permissions-to-follow-openSUSE-po.patch
Patch15 : timedate-add-support-for-openSUSE-version-of-etc-sysconfig.patch
Patch16 : fix-support-for-boot-prefixed-initscript-bnc-746506.patch
Patch17 : restore-var-run-and-var-lock-bind-mount-if-they-aren-t-sym.patch
# PATCH-FIX-OPENSUSE ensure-ask-password-wall-starts-after-getty-tty1.patch -- don't start getty on tty1 until all password request are done
Patch5 : ensure-ask-password-wall-starts-after-getty-tty1.patch
# PATCH-FIX-OPENSUSE handle-root_uses_lang-value-in-etc-sysconfig-language.patch bnc#792182 fcrozat@suse.com -- handle ROOT_USES_LANG=ctype
Patch20 : handle-root_uses_lang-value-in-etc-sysconfig-language.patch
# PATCH-FIX-OPENSUSE allow-multiple-sulogin-to-be-started.patch bnc#793182 fcrozat@suse.com -- handle multiple sulogin
Patch21 : allow-multiple-sulogin-to-be-started.patch
# PATCH-FIX-OPENSUSE apply-ACL-for-nvidia-device-nodes.patch bnc#808319 -- set ACL on nvidia devices
Patch27 : apply-ACL-for-nvidia-device-nodes.patch
2014-06-03 16:52:37 +02:00
# PATCH-FIX-OPENSUSE apply-ACL-for-nvidia-uvm-device-node.patch bnc#879767 -- set ACL on nvidia-uvm device
Patch28 : apply-ACL-for-nvidia-uvm-device-node.patch
2013-05-17 17:16:28 +02:00
# PATCH-FIX-OPENSUSE systemd-tmp-safe-defaults.patch FATE#314974 max@suse.de -- Return to SUSE's "safe defaults" policy on deleting files from tmp direcorie.
2013-04-19 22:31:17 +02:00
Patch39 : systemd-tmp-safe-defaults.patch
2013-05-17 17:16:28 +02:00
# PATCH-FIX-OPENSUSE sysctl-handle-boot-sysctl.conf-kernel_release.patch bnc#809420 fcrozat@suse.com -- handle /boot/sysctl.conf-<kernel_release> file
Patch40 : sysctl-handle-boot-sysctl.conf-kernel_release.patch
2013-05-29 17:26:40 +02:00
# PATCH-FIX-OPENSUSE ensure-shortname-is-set-as-hostname-bnc-820213.patch bnc#820213 fcrozat@suse.com -- Do not set anything beyond first dot as hostname
Patch41 : ensure-shortname-is-set-as-hostname-bnc-820213.patch
2013-09-13 09:25:15 +02:00
Patch42 : systemd-pam_config.patch
2013-10-04 14:28:12 +02:00
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.
2013-02-16 10:43:26 +01:00
# PATCH-FIX-OPENSUSE handle-HOSTNAME.patch fcrozat@suse.com -- handle /etc/HOSTNAME (bnc#803653)
2013-04-13 13:09:53 +02:00
Patch24 : handle-etc-HOSTNAME.patch
2014-11-20 13:21:44 +01:00
# PATCH-FIX-OPENSUSE forward to pm-utils -- until boo#904828 is addressed
2014-03-25 18:29:50 +01:00
Patch25 : Forward-suspend-hibernate-calls-to-pm-utils.patch
2013-04-19 22:31:17 +02:00
# PATCH-FIX-UPSTREAM rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch rjschwei@suse.com -- add lid switch of ARM based Chromebook as a power switch to logind
Patch38 : rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
2014-01-23 14:37:13 +01:00
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
Patch84 : make-emergency.service-conflict-with-syslog.socket.patch
2014-01-28 13:57:54 +01:00
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
Patch86 : 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
2014-01-30 13:35:04 +01:00
# PATCH-FIX-SUSE 0001-On_s390_con3270_disable_ANSI_colour_esc.patch
Patch90 : 0001-On_s390_con3270_disable_ANSI_colour_esc.patch
2014-02-05 15:40:22 +01:00
# PATCH-FIX-SUSE plymouth-quit-and-wait-for-emergency-service.patch -- Make sure that no plymouthd is locking the tty
Patch91 : plymouth-quit-and-wait-for-emergency-service.patch
2014-02-28 18:10:52 +01:00
# PATCH-FIX-SUSE 0001-avoid-abort-due-timeout-at-user-service.patch werner@suse.com
Patch120 : 0001-avoid-abort-due-timeout-at-user-service.patch
2014-04-10 11:02:21 +02:00
# PATCH-FIX-OPENSUSE 0009-make-xsltproc-use-correct-ROFF-links.patch -- Make ROFF links working again in manual pages (bnc#842844)
2014-04-10 11:12:03 +02:00
Patch177 : 0009-make-xsltproc-use-correct-ROFF-links.patch
2014-04-10 11:02:21 +02:00
# PATCH-FIX-OPENSUSE 0010-do-not-install-sulogin-unit-with-poweroff.patch -- Avoid installing console-shell.service (bnc#849071)
2014-04-10 11:12:03 +02:00
Patch178 : 0010-do-not-install-sulogin-unit-with-poweroff.patch
2014-02-28 18:10:52 +01:00
# PATCH-FIX-SUSE 0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch
2014-04-10 11:12:03 +02:00
Patch179 : 0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch
2014-04-10 11:02:21 +02:00
# PATCH-FIX-OPENSUSE 0014-journald-with-journaling-FS.patch
2014-04-10 11:12:03 +02:00
Patch180 : 0014-journald-with-journaling-FS.patch
2014-04-10 11:02:21 +02:00
# PATCH-FIX-SUSE 0019-make-completion-smart-to-be-able-to-redirect.patch
2014-04-10 11:12:03 +02:00
Patch182 : 0019-make-completion-smart-to-be-able-to-redirect.patch
2014-03-03 15:25:26 +01:00
# PATCH-FIX-SUSE 0001-add-network-device-after-NFS-mount-units.patch werner@suse.com
2014-04-10 11:12:03 +02:00
Patch183 : 0001-add-network-device-after-NFS-mount-units.patch
2014-03-13 15:14:59 +01:00
# PATCH-FIX-SUSE systemd-powerd-initctl-support.patch
2014-04-10 11:12:03 +02:00
Patch185 : systemd-powerd-initctl-support.patch
2014-03-19 13:11:12 +01:00
# PATCH-FIX-SUSE systemctl-set-default-target.patch
2014-04-10 11:12:03 +02:00
Patch186 : systemctl-set-default-target.patch
2014-03-25 18:29:50 +01:00
# PATCH-FIX-SUSE prepare-suspend-to-disk.patch (fate #316824)
2014-04-10 11:12:03 +02:00
Patch187 : prepare-suspend-to-disk.patch
2014-03-25 18:29:50 +01:00
# PATCH-FIX-SUSE boot-local-start.patch (bnc #869142)
2014-04-10 11:12:03 +02:00
Patch188 : boot-local-start.patch
2014-03-25 18:29:50 +01:00
# PATCH-FIX-SUSE avoid random hangs on timeouts due lost cwd at terminating user manager
2014-04-10 11:12:03 +02:00
Patch189 : avoid-random-hangs-on-timeouts-due-lost-cwd.patch
2014-03-03 15:25:26 +01:00
# PATCH-FIX-SUSE systemd-install-compat_pkgconfig-always.patch
2014-04-10 11:12:03 +02:00
Patch190 : systemd-install-compat_pkgconfig-always.patch
2014-03-12 14:12:18 +01:00
# PATCH-FIX-OPENSUSE systemd-dbus-system-bus-address.patch always use /run/dbus not /var/run
2014-04-10 11:12:03 +02:00
Patch191 : systemd-dbus-system-bus-address.patch
2014-03-13 14:49:36 +01:00
# PATCH-FIX-SUSE During linkage of systemd-cryptsetup let linker find libudev for libdevmapper
2014-04-10 11:12:03 +02:00
Patch192 : let-linker-find-libudev-for-libdevmapper.patch
2014-04-10 11:14:13 +02:00
# PATCH-FIX-SUSE Make sure that rpcbind socket as well as service is up with the target
Patch193 : portmap-wants-rpcbind-socket.patch
2014-04-15 13:25:54 +02:00
# PATCH-FIX-SUSE Avoid that emergency and rescue sulogin are fighting on console
Patch197 : rescue-emergency-target-conflicts.patch
2014-04-17 15:36:39 +02:00
# PATCH-FIX-SUSE Avoid a divide by zero sigtrap
Patch198 : avoid-divide-by-zero-sigtrap.patch
2014-04-28 11:54:18 +02:00
# PATCH-FIX-SUSE System fails to boot if nfs mounts get added to fstab (bnc#874665)
Patch203 : respect-nfs-bg-option.patch
2014-05-07 12:43:30 +02:00
# PATCH-FIX-SUSE Do not ignores option 'noauto' in /etc/crypttab (bnc#742774)
Patch208 : parse-crypttab-for-noauto-option.patch
2014-07-15 09:40:33 +02:00
# PATCH-FIX-SUSE Do a vhangup on all consoles lines (bnc#886599)
Patch338 : vhangup-on-all-consoles.patch
2014-07-28 12:21:09 +02:00
# PATCH-FIX-SUSE Shut up rpmlint warning
Patch345 : shut-up-rpmlint-on-var-log-journal.patch
2014-07-22 14:08:18 +02:00
# PATCH-FIX-SUSE
Patch352 : set-and-use-default-logconsole.patch
2015-02-16 12:36:25 +01:00
Patch362 : tty-ask-password-agent-on-console.patch
2014-07-30 14:44:17 +02:00
# PATCH-FIX-SUSE Provide the /var/lock/subsys at start (bnc#889357)
Patch366 : tomcat6-var-lock-subsys-legacy.patch
2014-08-20 17:07:31 +02:00
# PATCH-FIX-SUSE Remove error messages for tab completion for systemctl isolate (bnc#892162)
Patch368 : 0001-let-systemctl-completion-ignore-at-names.patch
2014-08-27 14:53:07 +02:00
# PATCH-FIX-SUSE Use RNDADDENTROPY ioctl to load random-seed and to increase entropy count as well (bnc#892096)
Patch386 : use-rndaddentropy-ioctl-to-load-random-seed.patch
2014-09-19 17:11:53 +02:00
# PATCH-FIX-SUSE AUDIT-0: Power button press at gdm login should not prompt for credentials (bnc#888612)
2014-09-19 15:11:36 +02:00
Patch430 : 0001-bnc888612-logind-polkit-acpi.patch
2014-10-24 15:30:04 +02:00
Patch475 : journald-advice-about-use-of-memory.patch
2014-11-07 13:36:25 +01:00
# PATCH-FIX-SUSE added at 2014/11/05
Patch490 : watch_resolv.conf_for_become_changed.patch
2014-12-18 12:26:58 +01:00
# PATCH-FIX-SUSE systemd-add-user-keep.patch (bnc#903009)
Patch520 : systemd-add-user-keep.patch
2015-01-20 12:37:36 +01:00
# PATCH-FIX-SUSE systemd-add-user-keep.patch (bnc#903009)
Patch521 : kbd-model-map.patch
2014-12-18 12:26:58 +01:00
#
2014-04-08 10:17:15 +02:00
2014-04-10 12:19:46 +02:00
# UDEV PATCHES
# ============
# NOTE: all udev patches start with 1XXX-*.patch, do not use anything else.
# Udev patches mean: patches that affect udev code, src/{udev,libudev}
# nothing else, even if the patch might affect indirectly udev, as long
# as it's not changing the code of udev and libudev, then is not a udev
# patch. Further patches which add and/or changes udev rules.
2014-02-14 17:08:20 +01:00
# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch
Patch1001 : 1001-re-enable-by_path-links-for-ata-devices.patch
# PATCH-FIX-OPENSUSE 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
Patch1002 : 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
# PATCH-FIX-OPENSUSE 1003-udev-netlink-null-rules.patch
Patch1003 : 1003-udev-netlink-null-rules.patch
# PATCH-FIX-OPENSUSE 1005-create-default-links-for-primary-cd_dvd-drive.patch
Patch1005 : 1005-create-default-links-for-primary-cd_dvd-drive.patch
2014-03-04 11:58:29 +01:00
# PATCH-FIX-OPENSUSE 1006-udev-always-rename-network.patch
Patch1006 : 1006-udev-always-rename-network.patch
2014-02-14 17:08:20 +01:00
# PATCH-FIX-OPENSUSE 1007-physical-hotplug-cpu-and-memory.patch
Patch1007 : 1007-physical-hotplug-cpu-and-memory.patch
2014-03-14 12:10:20 +01:00
# PATCH-FIX-OPENSUSE 1008-add-msft-compability-rules.patch -- for code base <= 1310
Patch1008 : 1008-add-msft-compability-rules.patch
2014-04-10 12:19:46 +02:00
# PATCH-FIX-SUSE skip btrfs check if devices are not ready (bnc#872929)
Patch1011 : 1011-64-btrfs.rules-skip-btrfs-check-if-devices-are-not-r.patch
# PATCH-FIX-SUSE skip persistent device link creation on mp device (bnc#872929)
Patch1012 : 1012-Skip-persistent-device-link-creation-on-multipath-de.patch
2014-04-28 11:54:18 +02:00
# PATCH-FIX-SUSE Do not use runtime PM for some IBM consoles (bnc#868931)
2014-04-28 11:21:34 +02:00
Patch1013 : 1013-no-runtime-PM-for-IBM-consoles.patch
2014-05-30 13:13:04 +02:00
# PATCH-FIX-SUSE 1021-udev-re-add-persistent-net-rules.patch
Patch1021 : 1021-udev-re-add-persistent-net-rules.patch
2014-06-12 14:30:27 +02:00
# PATCH-FIX-SUSE 1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch
Patch1035 : 1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch
2014-06-17 14:09:34 +02:00
# PATCH-FIX-SUSE 1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch
Patch1036 : 1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch
2014-06-18 15:10:45 +02:00
# PATCH-FIX-SUSE See bnc#882714 comment #51
Patch1037 : 1037-udev-exclude-cd-dvd-from-block-device.patch
2014-06-25 20:17:16 +02:00
# PATCH-FIX-SUSE 1040-re-enable-dev_id-conditionally-in-persistent-rules.patch (bnc#884403 and bnc#882714)
Patch1040 : 1040-re-enable-dev_id-conditionally-in-persistent-rules.patch
2014-07-02 20:09:12 +02:00
# PATCH-FIX-SUSE 1046-fix-duplicated-rules-with-layer3-interfaces.patch (bnc#882714)
Patch1046 : 1046-fix-duplicated-rules-with-layer3-interfaces.patch
2014-07-15 14:33:30 +02:00
# PATCH-FIX-SUSE 1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch (bnc#885232)
Patch1050 : 1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch
2014-07-17 08:35:02 +02:00
# PATCH-FIX-SUSE 1051-check-if-NAME-has-a-value.patch (bnc#885232)
Patch1051 : 1051-check-if-NAME-has-a-value.patch
2014-07-23 11:23:13 +02:00
# PATCH-FIX-SUSE 1053-better-checks-in-write_net_rules.patch (bnc#888178)
Patch1053 : 1053-better-checks-in-write_net_rules.patch
2014-07-30 14:17:21 +02:00
# PATCH-FIX-SUSE 1055-let-9719859c07aa13539ed2cd4b31972cd30f678543-apply.patch
Patch1055 : 1055-let-9719859c07aa13539ed2cd4b31972cd30f678543-apply.patch
2014-07-31 09:57:12 +02:00
# PATCH-FIX-SUSE 1060-udev-use-device-mapper-target-name-for-btrfs-device-ready.patch
Patch1060 : 1060-udev-use-device-mapper-target-name-for-btrfs-device-ready.patch
2014-08-08 14:55:43 +02:00
# PATCH-FIX-SUSE 1062-rules-set-default-permissions-for-GenWQE-devices.patch (bnc#890977)
Patch1062 : 1062-rules-set-default-permissions-for-GenWQE-devices.patch
2014-09-02 14:58:23 +02:00
# PATCH-FIX-SUSE 1066-udev-add-compatibility-links-for-truncated-by-id-links.patch (bnc#886852)
Patch1066 : 1066-udev-add-compatibility-links-for-truncated-by-id-links.patch
2014-10-22 16:18:20 +02:00
# PATCH-FIX-SUSE 1088-drop-renaming-of-virtual-interfaces-in-guest.patch (bnc#898432)
2014-09-26 11:37:41 +02:00
Patch1088 : 1088-drop-renaming-of-virtual-interfaces-in-guest.patch
2014-11-13 11:20:35 +01:00
# PATCH-FIX-SUSE 1095-set-ssd-disk-to-use-deadline-scheduler.patch (bnc#904517)
Patch1095 : 1095-set-ssd-disk-to-use-deadline-scheduler.patch
2014-11-14 13:19:40 +01:00
# PATCH-FIX-SUSE 1096-new-udev-root-symlink-generator.patch
Patch1096 : 1096-new-udev-root-symlink-generator.patch
2014-11-28 09:06:54 +01:00
# PATCH-FIX-SUSE 1097-udevd-increase-maximum-number-of-children.patch
Patch1097 : 1097-udevd-increase-maximum-number-of-children.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.
2014-02-08 11:46:51 +01:00
%package bash-completion
Summary : Bash completion support for systemd
License : LGPL-2.1+
Group : System/Base
Requires : bash
2014-02-09 19:45:14 +01:00
%if %{with bash_completion}
2014-02-08 11:46:51 +01:00
Requires : bash-completion
2014-02-09 19:45:14 +01:00
%endif
2014-03-11 12:12:39 +01:00
BuildArch : noarch
2014-02-08 11:46:51 +01:00
%description bash-completion
Some systemd commands offer bash completion, but it's an optional dependency.
2012-10-26 14:34:44 +02:00
%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}
2013-06-19 09:04:23 +02:00
Requires : systemd-rpm-macros
2013-04-23 14:55:16 +02:00
%if 0%{?bootstrap}
Conflicts : systemd-devel
%endif
2012-10-26 14:34:44 +02:00
%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 -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
2014-06-05 10:47:12 +02:00
PreReq : /bin/rm
PreReq : %insserv_prereq
PreReq : %fillup_prereq
PreReq : /usr/bin/sg_inq
Requires(pre) : /usr/bin/stat
Requires(pre) : /usr/sbin/groupadd
Requires(pre) : /usr/bin/getent
2012-11-14 21:14:47 +01:00
Requires(post) : lib%{udevpkgname} %{udev_major}
2014-04-16 13:59:56 +02:00
Requires(post) : sed
2014-06-05 10:47:12 +02:00
Requires(post) : /usr/bin/systemctl
2014-04-16 12:17:08 +02:00
%if %{defined regenerate_initrd_post}
2014-04-16 13:59:56 +02:00
Requires(post) : coreutils
2014-06-05 10:47:12 +02:00
Requires(post) : /usr/bin/stat
2014-04-16 13:59:56 +02:00
Requires(postun) : coreutils
2014-04-17 15:36:39 +02:00
Requires(posttrans) : suse-module-tools
Requires(posttrans) : /sbin/mkinitrd
2014-04-16 13:59:56 +02:00
%else
2014-04-17 15:36:39 +02:00
Requires(post) : /sbin/mkinitrd
Requires(postun) : /sbin/mkinitrd
2014-04-16 12:17:08 +02:00
%endif
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}
2013-04-23 14:55:16 +02:00
Conflicts : libudev%{udev_major}
2013-04-22 16:35:32 +02:00
Conflicts : udev
2014-02-11 11:26:19 +01:00
# avoid kiwi picking it for bootstrap
Requires : this-is-only-for-build-envs
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}
2013-04-23 14:55:16 +02:00
Conflicts : kiwi
2014-02-11 11:26:19 +01:00
# avoid kiwi picking it for bootstrap
Requires : this-is-only-for-build-envs
2012-12-05 19:07:07 +01:00
%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}
2013-04-22 16:35:32 +02:00
Conflicts : libudev-devel
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.
%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)
2014-06-05 10:47:12 +02:00
Requires(pre) : /usr/bin/getent
Requires(pre) : /usr/sbin/groupadd
Requires(post) : /usr/bin/getent
Requires(post) : /usr/bin/setfacl
Requires(post) : /usr/bin/systemctl
2014-07-21 15:37:02 +02:00
Requires(post) : permissions
2012-11-06 15:52:17 +01:00
Conflicts : otherproviders(syslog)
%description logger
This package marks the installation to not use syslog but only the journal.
2013-04-13 13:09:53 +02:00
%package -n nss-myhostname
Summary : Plugin for local system host name resolution
License : LGPL-2.1+
Group : System/Libraries
%description -n nss-myhostname
nss-myhostname is a plugin for the GNU Name Service Switch (NSS)
functionality of the GNU C Library (glibc) providing host name
resolution for the locally configured system hostname as returned by
gethostname(2). Various software relies on an always resolvable local
host name. When using dynamic hostnames this is usually achieved by
patching /etc/hosts at the same time as changing the host name. This
however is not ideal since it requires a writable /etc file system and
is fragile because the file might be edited by the administrator at
the same time. nss-myhostname simply returns all locally
configured public IP addresses, or -- if none are configured --
the IPv4 address 127.0.0.2 (wich is on the local loopback) and the
IPv6 address ::1 (which is the local host) for whatever system
hostname is configured locally. Patching /etc/hosts is thus no
longer necessary.
Note that nss-myhostname only provides a workaround for broken
software. If nss-myhostname is trigged by an application a message
is logged to /var/log/messages. Please check whether that's worth
a bug report then.
This package marks the installation to not use syslog but only the journal.
2015-02-13 10:43:21 +01:00
%package -n nss-mymachines
Summary : Plugin for local virtual host name resolution
License : LGPL-2.1+
Group : System/Libraries
%description -n nss-mymachines
nss-myhostname is a plugin for the GNU Name Service Switch (NSS)
functionality of the GNU C Library (glibc) providing host name
resolution for the locally configured containers and virtual machines
systemd-machined knows about.
%package -n nss-resolve
Summary : Plugin for local hostname resolution via systemd-resolved
License : LGPL-2.1+
Group : System/Libraries
%description -n nss-resolve
2013-07-25 17:40:51 +02:00
%package journal-gateway
Summary : Gateway for serving journal events over the network using HTTP
License : LGPL-2.1+
Group : System/Base
Requires : %{name} = %{version} -%{release}
Requires(post) : systemd
Requires(preun) : systemd
Requires(postun) : systemd
%description journal-gateway
systemd-journal-gatewayd serves journal events over the network using HTTP.
2012-10-26 14:34:44 +02:00
%prep
2015-02-16 12:36:25 +01:00
%setup -q -n systemd
2013-06-19 13:05:44 +02:00
echo " C h e c k i n g w h e t h e r u p s t r e a m r p m m a c r o s c h a n g e d . . . "
2015-02-13 10:43:21 +01:00
diff -au " % { S : 1 0 } " src/core/macros.systemd.in
2012-10-26 14:34:44 +02:00
2012-11-14 21:14:47 +01:00
# only needed for bootstrap
%if 0%{?bootstrap}
cp %{SOURCE7} m4/
%endif
2013-06-11 13:22:32 +02:00
# systemd patches
2013-04-13 13:09:53 +02:00
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch12 -p1
2012-10-26 14:34:44 +02:00
%patch15 -p1
%patch16 -p1
2013-04-13 13:09:53 +02:00
%patch17 -p1
%patch20 -p1
%patch21 -p1
2012-10-26 14:34:44 +02:00
%patch24 -p1
2014-03-25 18:29:50 +01:00
%patch25 -p1
2014-02-28 18:10:52 +01:00
# check if this is still needed, or can be derived from fbdev uaccess rule
# http://lists.freedesktop.org/archives/systemd-devel/2012-November/007561.html
2014-02-28 18:31:17 +01:00
%patch27 -p1
2014-06-03 16:52:37 +02:00
%patch28 -p1
2013-04-19 22:31:17 +02:00
%patch39 -p1
2013-05-17 17:16:28 +02:00
%patch40 -p1
2013-05-27 11:58:29 +02:00
%patch41 -p1
2013-09-13 09:25:15 +02:00
%patch42 -p1
2014-01-23 14:37:13 +01:00
%patch84 -p1
2014-01-28 13:57:54 +01:00
%patch86 -p1
2014-01-30 13:35:04 +01:00
%patch90 -p1
2014-02-05 15:40:22 +01:00
%patch91 -p1
2014-02-28 18:10:52 +01:00
%patch120 -p1
2014-04-10 11:02:21 +02:00
%patch177 -p1
%patch178 -p1
%patch179 -p1
%patch180 -p1
%patch182 -p1
%patch183 -p1
%patch185 -p1
%patch186 -p1
%patch187 -p1
2014-04-10 11:17:32 +02:00
%patch188 -p1
2014-04-10 11:02:21 +02:00
%patch189 -p1
2014-04-10 11:17:32 +02:00
%patch190 -p1
%patch191 -p1
%patch192 -p1
%patch193 -p1
2014-04-15 13:25:54 +02:00
%patch197 -p1
2014-04-17 15:36:39 +02:00
%patch198 -p1
2014-04-28 11:54:18 +02:00
%patch203 -p1
2014-05-07 12:43:30 +02:00
%patch208 -p1
2015-02-13 10:43:21 +01:00
%patch338 -p1
2014-07-28 12:21:09 +02:00
%patch345 -p1
2015-02-13 10:43:21 +01:00
%patch352 -p1
2015-02-16 12:36:25 +01:00
%patch362 -p1
2014-07-30 14:44:17 +02:00
%patch366 -p1
2014-08-20 17:07:31 +02:00
%patch368 -p1
2014-08-27 14:53:07 +02:00
%patch386 -p1
2014-09-19 15:11:36 +02:00
%patch430 -p1
2015-02-16 12:36:25 +01:00
%patch475 -p1
2014-10-15 11:06:56 +02:00
%ifarch %arm
%patch38 -p1
%endif
2015-02-13 10:43:21 +01:00
%patch490 -p1
2014-12-18 12:26:58 +01:00
%patch520 -p1
2015-02-16 12:36:25 +01:00
%patch521 -p1
2014-04-10 11:02:21 +02:00
2013-06-11 13:22:32 +02:00
# udev patches
%patch1001 -p1
%patch1002 -p1
%patch1003 -p1
%patch1005 -p1
2014-03-04 11:58:29 +01:00
%patch1006 -p1
2013-06-11 13:22:32 +02:00
%patch1007 -p1
2014-03-14 12:10:20 +01:00
%if 0%{?suse_version} <= 1310
%patch1008 -p1
%endif
2014-04-10 12:19:46 +02:00
%patch1011 -p1
%patch1012 -p1
2014-04-28 11:21:34 +02:00
%patch1013 -p1
2014-05-30 13:13:04 +02:00
%patch1021 -p1
2014-06-12 14:30:27 +02:00
%patch1035 -p1
2014-06-17 14:09:34 +02:00
%patch1036 -p1
2014-07-25 12:06:14 +02:00
%if %{with blkrrpart}
2014-06-18 15:10:45 +02:00
%patch1037 -p1
2014-07-25 12:06:14 +02:00
%endif
2014-06-25 20:17:16 +02:00
%patch1040 -p1
2014-07-02 20:09:12 +02:00
%patch1046 -p1
2014-07-15 14:33:30 +02:00
%patch1050 -p1
2014-07-17 08:35:02 +02:00
%patch1051 -p1
2014-07-23 11:23:13 +02:00
%patch1053 -p1
2014-07-25 12:06:14 +02:00
%if %{with blkrrpart}
2014-07-30 14:17:21 +02:00
%else
%patch1055 -p1
%endif
2014-07-31 08:53:04 +02:00
%patch1060 -p1
2014-08-08 14:55:43 +02:00
%patch1062 -p1
2014-09-02 14:58:23 +02:00
%patch1066 -p1
2014-09-26 11:37:41 +02:00
%patch1088 -p1
2014-11-13 11:20:35 +01:00
%patch1095 -p1
2014-11-14 13:19:40 +01:00
%patch1096 -p1
2014-11-28 09:06:54 +01:00
%patch1097 -p1
2013-06-11 13:22:32 +02:00
2014-08-26 13:39:55 +02:00
# remove patch backups
find -name '*.orig' -exec rm -f '{}' \+
2013-09-27 22:05:07 +02:00
# ensure generate files are removed
rm -f units/emergency.service
2014-06-05 15:40:35 +02:00
# disable "-l" option for fsck if it does not support new locking scheme
# compare with commit c343be283b7152554bac0c02493a4e1759c163f7
2014-06-10 22:00:15 +02:00
PATH=${PATH}:/sbin:/usr/sbin
2014-06-10 17:30:38 +02:00
PATH_FSCK=$(type -p fsck)
if grep -q /run/fsck/%%s\\.lock $PATH_FSCK
then
2014-06-24 13:34:12 +02:00
echo Found new $PATH_FSCK that is allow private locking
else
echo Found old $PATH_FSCK that is disable flock for this one
2014-06-10 17:30:38 +02:00
sed -ri 's@^([[:blank:]]+)(cmdline\[i\+\+\][[:blank:]]+=[[:blank:]]+"-l")(;)@\1/* \2 */\3@' src/fsck/fsck.c
fi
2014-06-05 15:40:35 +02:00
2014-06-25 16:14:00 +02:00
%if 0%{?suse_version} <= 1310
#
# Older versions like oS 13.1 do not distinguish between
# network.target and network-online.target
#
for f in src/core/service.c src/insserv-generator/insserv-generator.c
do
sed -ri '/"network",.*SPECIAL_NETWORK_ONLINE_TARGET,/{ s/SPECIAL_NETWORK_ONLINE_TARGET/SPECIAL_NETWORK_TARGET/}' $f
done
%endif
2014-07-22 14:08:18 +02:00
#
# In combination with Patch352 set-and-use-default-logconsole.patch
# Ensure that journald log on tty10
#
%ifarch %ix86 x86_64 x32
sed -ri 's:#TTYPath=/dev/console:#TTYPath=/dev/tty10:' src/journal/journald.conf
%endif
2012-10-26 14:34:44 +02:00
%build
2014-06-10 13:19:53 +02:00
cflags ()
{
local flag=$1; shift
local var=$1; shift
local gold
test -n " $ { f l a g } " -a -n " $ { v a r } " || return
case " $ { ! v a r } " in
*${flag}*) return
esac
if type ld.gold > /dev/null 2>&1 ; then
gold=-Wl,-fuse-ld=gold
fi
set -o noclobber
case " $ f l a g " in
-Wl,*)
if echo 'int main () { return 0; }' | \
${CC:-gcc} -Werror $gold $flag -o /dev/null -xc - > /dev/null 2>&1 ; then
eval $var=\${$var:+\$$var\ }$flag
fi
rm -f ldtest.c
;;
*)
if ${CC:-gcc} -Werror $gold $flag -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then
eval $var=\${$var:+\$$var\ }$flag
fi
if ${CXX:-g++} -Werror $gold $flag -S -o /dev/null -xc++ /dev/null > /dev/null 2>&1 ; then
eval $var=\${$var:+\$$var\ }$flag
fi
esac
set +o noclobber
}
2015-02-16 12:36:25 +01:00
./autogen.sh
2012-10-26 14:34:44 +02:00
# prevent pre-generated and distributed files from re-building
2013-02-18 17:15:49 +01:00
find . -name " * . [ 1 - 8 ] " -exec touch '{}' '+' ;
2014-06-10 13:19:53 +02:00
export V=e
export CFLAGS=" %{optflags} $ ( g e t c o n f L F S _ C F L A G S ) "
export LDFLAGS
%if 0%{?suse_version} == 1315
CFLAGS=" $ C F L A G S - D N E T _ I F N A M E S = 1 "
%else
CFLAGS=" $ C F L A G S - D N E T _ I F N A M E S = 0 "
2014-06-11 15:37:55 +02:00
for rules in 75-persistent-net-generator 76-net-sriov-names
do
sed -ri '/^ENV\{net.ifnames\}=="1", GOTO="[^"]*"$/{ s/=="1"/!="0"/ }' src/udev/rule_generator/${rules}.rules
done
2014-06-10 13:19:53 +02:00
%endif
cflags -pipe CFLAGS
cflags -Wl,-O2 LDFLAGS
cflags -Wl,--hash-size=8599 LDFLAGS
2012-10-26 14:34:44 +02:00
# keep split-usr until all packages have moved their systemd rules to /usr
%configure \
--docdir=%{_docdir} /systemd \
--with-pamlibdir=/%{_lib}/security \
2014-03-12 16:08:08 +01:00
--with-dbuspolicydir=%{_sysconfdir} /dbus-1/system.d \
--with-dbussessionservicedir=%{_datadir} /dbus-1/services \
--with-dbussystemservicedir=%{_datadir} /dbus-1/system-services \
--with-dbusinterfacedir=%{_datadir} /dbus-1/interfaces \
2012-10-26 14:34:44 +02:00
%if 0%{?bootstrap}
--disable-gudev \
2013-04-13 13:09:53 +02:00
--disable-myhostname \
2014-03-03 15:25:26 +01:00
--disable-manpages \
2012-10-26 14:34:44 +02:00
%else
--enable-manpages \
2014-02-28 18:10:52 +01:00
%if %{with python}
--with-python \
%endif
2012-10-26 14:34:44 +02:00
--enable-gtk-doc \
2013-04-13 13:09:53 +02:00
--with-nss-my-hostname-warning \
2012-10-26 14:34:44 +02:00
%endif
--enable-selinux \
--enable-split-usr \
--disable-static \
2014-06-05 10:47:12 +02:00
%if 0%{?suse_version} <= 1310
2013-05-13 20:45:42 +02:00
--with-firmware-path=" %{_prefix} / l i b / f i r m w a r e : / l i b / f i r m w a r e " \
2014-06-12 11:30:28 +02:00
%endif
2014-11-07 13:36:25 +01:00
%if ! 0%{?has_efi}
2014-06-12 11:30:28 +02:00
--disable-efi \
2014-06-05 10:47:12 +02:00
%endif
2013-05-15 08:50:16 +02:00
--with-rc-local-script-path-start=/etc/init.d/boot.local \
--with-rc-local-script-path-stop=/etc/init.d/halt.local \
2013-05-29 17:26:40 +02:00
--with-debug-shell=/bin/bash \
2013-09-19 09:46:03 +02:00
--disable-smack \
--disable-ima \
2013-12-20 13:23:11 +01:00
%if 0%{?suse_version} > 1310
--disable-multi-seat-x \
2014-02-28 18:10:52 +01:00
%endif
%if %{without networkd}
--disable-networkd \
2013-12-20 13:23:11 +01:00
%endif
2015-02-16 10:43:50 +01:00
--disable-resolved \
2014-06-10 13:19:53 +02:00
--disable-kdbus
2012-10-26 14:34:44 +02:00
make %{?_smp_mflags}
2014-03-19 14:37:37 +01:00
%if ! 0%{?bootstrap}
make %{?_smp_mflags} update-man-list man
%endif
2012-10-26 14:34:44 +02:00
%install
2015-02-16 12:36:25 +01:00
%if !0%{?bootstrap}
cp man/man[0-9]/*.[0-9] man/
%endif
2013-06-17 14:29:15 +02:00
make install DESTDIR=" % b u i l d r o o t "
2012-10-26 14:34:44 +02:00
2013-04-13 13:09:53 +02:00
# move to %{_lib}
%if ! 0%{?bootstrap}
2014-02-28 18:10:52 +01:00
mv %{buildroot} %{_libdir} /libnss_myhostname.so.2 %{buildroot} /%{_lib}
2013-04-13 13:09:53 +02:00
%endif
2014-02-28 18:10:52 +01:00
mkdir -p %{buildroot} /{sbin,lib,bin}
ln -sf %{_bindir} /udevadm %{buildroot} /sbin/udevadm
ln -sf %{_bindir} /systemd-ask-password %{buildroot} /bin/systemd-ask-password
ln -sf %{_bindir} /systemctl %{buildroot} /bin/systemctl
ln -sf %{_prefix} /lib/systemd/systemd-udevd %{buildroot} /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}
2014-02-28 18:10:52 +01:00
ln -sf systemd-udevd.8 %{buildroot} /%{_mandir} /man8/udevd.8
- 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
%endif
2014-06-05 10:47:12 +02:00
%if 0%{?suse_version} <= 1310
2014-02-28 18:10:52 +01:00
ln -sf /lib/firmware %{buildroot} /usr/lib/firmware
2014-06-05 10:47:12 +02:00
%endif
- 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}
2014-02-28 18:10:52 +01:00
install -m755 -D %{S:8} %{buildroot} /etc/init.d/systemd-journald
2013-04-13 13:09:53 +02:00
install -D -m 755 %{S:9} %{buildroot} %{_sbindir} /nss-myhostname-config
- 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
%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}
2014-02-28 18:10:52 +01:00
install -m755 -D %{S:1060} %{buildroot} /etc/init.d/boot.udev
ln -s systemd-udevd.service %{buildroot} /%{_prefix} /lib/systemd/system/udev.service
2014-07-24 11:03:14 +02:00
install -m755 -D %{S:1063} %{buildroot} /%{_prefix} /lib/udev/udev-generate-persistent-rule
2014-03-25 18:29:50 +01:00
install -m755 -D %{S:1064} %{buildroot} /%{_bindir} /systemd-sleep-grub
2014-07-14 17:05:04 +02:00
install -m755 -D %{S:1065} %{buildroot} /%{_prefix} /lib/udev/remount-tmpfs
2014-11-20 13:20:19 +01:00
mkdir -p %{buildroot} /%{_prefix} /lib/systemd/system/basic.target.wants
2013-06-19 09:04:23 +02:00
rm -rf %{buildroot} %{_sysconfdir} /rpm
2013-02-18 17:15:49 +01:00
find %{buildroot} -type f -name '*.la' -delete
2013-08-01 18:06:31 +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,system/shutdown.target.wants}
2012-10-26 14:34:44 +02:00
install -m755 %{S:3} -D %{buildroot} %{_sbindir} /systemd-sysv-convert
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/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
2013-07-05 09:29:00 +02:00
ln -s systemd-random-seed.service %{buildroot} /%{_prefix} /lib/systemd/system/random.service
2012-10-26 14:34:44 +02:00
# don't mount /tmp as tmpfs for now
rm %{buildroot} /%{_prefix} /lib/systemd/system/local-fs.target.wants/tmp.mount
2013-10-02 13:01:24 +02:00
# don't enable wall ask password service, it spams every console (bnc#747783)
rm %{buildroot} %{_prefix} /lib/systemd/system/multi-user.target.wants/systemd-ask-password-wall.path
2013-04-25 10:33:19 +02:00
# create %{_libexecdir}/modules-load.d
mkdir -p %{buildroot} %{_libexecdir} /modules-load.d
cat << EOF > %{buildroot} %{_libexecdir} /modules-load.d/sg.conf
# load sg module at boot time
sg
EOF
2012-10-26 14:34:44 +02:00
# 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.
2013-05-27 11:58:29 +02:00
rm -f %{buildroot} %{_prefix} /lib/sysctl.d/50-coredump.conf
# do not ship sysctl defaults in systemd package, will be part of
# aaa_base (in procps for now)
rm -f %{buildroot} %{_prefix} /lib/sysctl.d/50-default.conf
2012-10-26 14:34:44 +02:00
2012-11-14 21:14:47 +01:00
# remove README file for now
rm -f %{buildroot} /etc/init.d/README
%if 0%{?bootstrap}
2014-03-03 15:25:26 +01:00
rm -f %{buildroot} %{_localstatedir} /log/README
2014-02-11 19:40:08 +01:00
rm -rf %{buildroot} %{_datadir} /bash-completion
2012-11-14 21:14:47 +01:00
%endif
2012-10-29 19:55:30 +01:00
2012-10-26 14:34:44 +02:00
# legacy links
2013-10-02 16:37:41 +02:00
for f in loginctl journalctl ; do
- 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 $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
2014-07-28 12:21:09 +02:00
mkdir -p %{buildroot} %{_localstatedir} /log/journal/
2012-10-26 14:34:44 +02:00
2013-04-13 13:09:53 +02:00
# Make sure directories in /var exist
2014-03-03 15:25:26 +01:00
mkdir -p %{buildroot} %{_localstatedir} /lib/systemd/coredump
mkdir -p %{buildroot} %{_localstatedir} /lib/systemd/catalog
2013-04-13 13:09:53 +02:00
#create ghost databases
2014-03-03 15:25:26 +01:00
touch %{buildroot} %{_localstatedir} /lib/systemd/catalog/database
2013-04-13 13:09:53 +02:00
touch %{buildroot} %{_sysconfdir} /udev/hwdb.bin
2012-10-26 14:34:44 +02:00
# 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
2013-04-25 09:23:12 +02:00
# create drop-in to prevent tty1 to be cleared (bnc#804158)
mkdir -p %{buildroot} %{_prefix} /lib/systemd/system/getty@tty1.service.d/
2013-07-29 18:25:21 +02:00
cat << EOF > %{buildroot} %{_prefix} /lib/systemd/system/getty@tty1.service.d/noclear.conf
2013-04-25 09:23:12 +02:00
[Service]
# ensure tty1 isn't cleared (bnc#804158)
TTYVTDisallocate=no
EOF
2013-02-18 17:15:49 +01:00
2013-10-01 09:23:27 +02:00
# ensure after.local wrapper is called
2013-10-02 13:01:24 +02:00
install -m 644 %{S:11} %{buildroot} /%{_prefix} /lib/systemd/system/
2013-10-01 09:23:27 +02:00
ln -s ../after-local.service %{buildroot} /%{_prefix} /lib/systemd/system/multi-user.target.wants/
2014-03-03 15:25:26 +01:00
mkdir -p %{buildroot} %{_localstatedir} /lib/systemd/backlight
mkdir -p %{buildroot} %{_localstatedir} /lib/systemd/random-seed
2012-10-26 14:34:44 +02:00
%fdupes -s %{buildroot} %{_mandir}
2014-03-03 15:58:29 +01:00
%if ! 0%{?bootstrap}
for f in %{buildroot} %{_datadir} /bash-completion/completions/*
do
test -e " $ f " || break
grep -q _init_completion " $ f " || continue
2014-03-11 08:49:28 +01:00
echo " % e x c l u d e %{_datadir} / b a s h - c o m p l e t i o n / c o m p l e t i o n s / $ { f # # * / } "
2014-03-03 15:58:29 +01:00
done > files.completion
%else
> files.completion
%endif
2014-02-07 14:20:42 +01:00
%if 0%{suse_version} >= 1310
- Update to release 205:
+ two new unit types have been introduced:
- Scope units are very similar to service units, however, are
created out of pre-existing processes -- instead of PID 1
forking off the processes.
- Slice units may be used to partition system resources in an
hierarchial fashion and then assign other units to them. By
default there are now three slices: system.slice (for all
system services), user.slice (for all user sessions),
machine.slice (for VMs and containers).
+ new concept of "transient" units, which are created at runtime
using an API and not based on configuration from disk.
+ logind has been updated to make use of scope and slice units to
manage user sessions. Logind will no longer create cgroups
hierchies itself but will relying on PID 1.
+ A new mini-daemon "systemd-machined" has been added which
may be used by virtualization managers to register local
VMs/containers. machinectl tool has been added to query
meta-data from systemd-machined.
+ Low-level cgroup configuration options ControlGroup=,
ControlGroupModify=, ControlGroupPersistent=,
ControlGroupAttribute= have been removed. High-level attribute
settings or slice units should be used instead?
+ A new bus call SetUnitProperties() has been added to alter
various runtime parameters of a unit, including cgroup
parameters. systemctl gained set-properties command to wrap
this call.
+ A new tool "systemd-run" has been added which can be used to
run arbitrary command lines as transient services or scopes,
while configuring a number of settings via the command
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=412
2013-07-04 17:28:49 +02:00
# packaged in systemd-rpm-macros
rm -f %{buildroot} /%{_prefix} /lib/rpm/macros.d/macros.systemd
2014-02-07 14:20:42 +01:00
%endif
- Update to release 205:
+ two new unit types have been introduced:
- Scope units are very similar to service units, however, are
created out of pre-existing processes -- instead of PID 1
forking off the processes.
- Slice units may be used to partition system resources in an
hierarchial fashion and then assign other units to them. By
default there are now three slices: system.slice (for all
system services), user.slice (for all user sessions),
machine.slice (for VMs and containers).
+ new concept of "transient" units, which are created at runtime
using an API and not based on configuration from disk.
+ logind has been updated to make use of scope and slice units to
manage user sessions. Logind will no longer create cgroups
hierchies itself but will relying on PID 1.
+ A new mini-daemon "systemd-machined" has been added which
may be used by virtualization managers to register local
VMs/containers. machinectl tool has been added to query
meta-data from systemd-machined.
+ Low-level cgroup configuration options ControlGroup=,
ControlGroupModify=, ControlGroupPersistent=,
ControlGroupAttribute= have been removed. High-level attribute
settings or slice units should be used instead?
+ A new bus call SetUnitProperties() has been added to alter
various runtime parameters of a unit, including cgroup
parameters. systemctl gained set-properties command to wrap
this call.
+ A new tool "systemd-run" has been added which can be used to
run arbitrary command lines as transient services or scopes,
while configuring a number of settings via the command
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=412
2013-07-04 17:28:49 +02:00
2014-03-07 10:33:04 +01:00
%if %{without compat_libs}
2014-03-07 16:36:40 +01:00
lib=%{_libdir} /libsystemd.so
2014-03-07 10:33:04 +01:00
for lnk in daemon login id128 journal
do
lnk=%{buildroot} %{_libdir} /libsystemd-${lnk}.so
echo '/* GNU ld script */' > ${lnk}
echo 'INPUT(' ${lib}')' >> ${lnk}
done
%endif
2014-06-06 13:40:36 +02:00
%if 0%{suse_version} <= 1310
2014-05-21 16:13:32 +02:00
cat > %{buildroot} /%{_prefix} /lib/systemd/system/fix.service <<-'EOF'
[Unit]
Description=Fix against deadlock at shutdown
Wants=remote-fs.target remote-fs-pre.target
Before=remote-fs.target systemd-logind.service
After=remote-fs-pre.target network.target rpcbind.target nss-lookup.target nss-user-lookup.target
ConditionPathExists=|/etc/init.d/autofs
ConditionPathExists=|/etc/init.d/nfs
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=-/etc/init.d/autofs stop
ExecStop=-/etc/init.d/nfs stop
[Install]
WantedBy=remote-fs.target
EOF
mkdir -p %{buildroot} /%{_prefix} /lib/systemd/system/remote-fs.target.wants
ln -sf ../fix.service %{buildroot} /%{_prefix} /lib/systemd/system/remote-fs.target.wants
%endif
2014-06-12 12:21:33 +02:00
# Some files which may created by us or by the admin later on
mkdir -p %{buildroot} %{_sysconfdir} /X11/xorg.conf.d
for ghost in X11/xorg.conf.d/00-keyboard.conf vconsole.conf locale.conf \
2014-06-24 13:34:12 +02:00
machine-id machine-info \
2014-06-12 12:21:33 +02:00
systemd/system/runlevel2.target \
systemd/system/runlevel3.target \
systemd/system/runlevel4.target \
systemd/system/runlevel4.target \
systemd/system/runlevel5.target
do
> %{buildroot} %{_sysconfdir} /$ghost
done
# Workaround for bug #882393
for runlevel in poweroff rescue multi-user graphical reboot
do
mkdir -p %{buildroot} %{_prefix} /lib/systemd/system/${runlevel}.target.wants
ln -sf ../systemd-update-utmp-runlevel.service %{buildroot} %{_prefix} /lib/systemd/system/${runlevel}.target.wants/
done
2014-06-03 18:28:48 +02:00
%find_lang systemd
2012-11-14 21:14:47 +01:00
%pre
2013-04-13 13:09:53 +02:00
getent group systemd-journal >/dev/null || groupadd -r systemd-journal || :
2012-11-14 21:14:47 +01:00
exit 0
2012-10-26 14:34:44 +02:00
%post
2013-10-02 13:01:24 +02:00
%if ! 0%{?bootstrap}
2013-09-23 13:12:09 +02:00
/usr/sbin/pam-config -a --systemd || :
2013-10-02 13:01:24 +02:00
%endif
2012-10-26 14:34:44 +02:00
/sbin/ldconfig
2014-03-03 15:25:26 +01:00
[ -e %{_localstatedir} /lib/random-seed ] && mv %{_localstatedir} /lib/random-seed %{_localstatedir} /lib/systemd/ > /dev/null || :
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 || :
2013-04-13 13:09:53 +02:00
/usr/bin/journalctl --update-catalog >/dev/null 2>&1 || :
2013-10-02 13:01:24 +02:00
# Make sure new journal files
2014-06-06 13:40:36 +02:00
chgrp systemd-journal %{_localstatedir} /log/journal/ > /dev/null 2>&1 || :
chmod g+s %{_localstatedir} /log/journal/ > /dev/null 2>&1 || :
if read ID < /etc/machine-id > /dev/null 2>&1 ; then
chgrp systemd-journal %{_localstatedir} /log/journal/$ID > /dev/null 2>&1 || :
chmod g+s %{_localstatedir} /log/journal/$ID > /dev/null 2>&1 || :
fi
2014-08-18 16:41:57 +02:00
%if %{with systemgrps}
2014-06-06 13:40:36 +02:00
getent group wheel && setfacl -Rnm g:wheel:rx,d:g:wheel:rx %{_localstatedir} /log/journal/ > /dev/null 2>&1 || :
getent group adm && setfacl -Rnm g:adm:rx,d:g:adm:rx %{_localstatedir} /log/journal/ > /dev/null 2>&1 || :
2014-08-18 16:41:57 +02:00
%endif
2015-02-13 10:43:21 +01:00
systemd-sysusers || :
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 \
2013-08-06 11:25:50 +02:00
getty@tty1.service \
2012-10-26 14:34:44 +02:00
systemd-readahead-collect.service \
systemd-readahead-replay.service \
remote-fs.target >/dev/null 2>&1 || :
2012-12-05 19:07:07 +01:00
fi
2013-09-19 01:39:18 +02:00
# since v207 /etc/sysctl.conf is no longer parsed, however
# backward compatibility is provided by /etc/sysctl.d/99-sysctl.conf
if [ ! -L /etc/sysctl.d/99-sysctl.conf -a -e /etc/sysctl.conf ]; then
/bin/ln -sf /etc/sysctl.conf /etc/sysctl.d/99-sysctl.conf || :
fi
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
2013-10-02 13:01:24 +02:00
%if ! 0%{?bootstrap}
2012-10-26 14:34:44 +02:00
if [ $1 -eq 0 ]; then
2013-09-23 13:12:09 +02:00
/usr/sbin/pam-config -d --systemd || :
2012-10-26 14:34:44 +02:00
fi
2013-10-02 13:01:24 +02:00
%endif
2012-10-26 14:34:44 +02:00
%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
2014-06-05 10:47:12 +02:00
getent group tape >/dev/null || 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}
2013-04-13 13:09:53 +02:00
/usr/bin/udevadm hwdb --update >/dev/null 2>&1 || :
2012-10-26 14:34:44 +02:00
%{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
2014-03-03 15:25:26 +01:00
if [ -e %{_localstatedir} /lib/no_initrd_recreation_by_suspend ]; then
2012-11-23 12:06:55 +01:00
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 "
2014-03-03 15:25:26 +01:00
echo " t o p r e s e n c e o f %{_localstatedir} / 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 "
2014-04-16 12:17:08 +02:00
%if %{defined regenerate_initrd_post}
else
%regenerate_initrd_post
%else
2012-11-23 12:06:55 +01:00
elif [ -x /sbin/mkinitrd ]; then
[ -x /sbin/mkinitrd_setup ] && /sbin/mkinitrd_setup
/sbin/mkinitrd || :
2014-04-16 12:17:08 +02:00
%endif
2012-11-23 12:06:55 +01:00
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
2014-03-03 15:25:26 +01:00
if [ -e %{_localstatedir} /lib/no_initrd_recreation_by_suspend ]; then
2012-11-23 12:06:55 +01:00
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 "
2014-03-03 15:25:26 +01:00
echo " t o p r e s e n c e o f %{_localstatedir} / 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 "
2014-04-16 12:17:08 +02:00
%if %{defined regenerate_initrd_post}
else
%regenerate_initrd_post
%else
2012-11-23 12:06:55 +01:00
elif [ -x /sbin/mkinitrd ]; then
[ -x /sbin/mkinitrd_setup ] && /sbin/mkinitrd_setup
/sbin/mkinitrd || :
2014-04-16 12:17:08 +02:00
%endif
2012-11-23 12:06:55 +01:00
fi
2012-10-26 14:34:44 +02:00
fi
2014-04-16 12:17:08 +02:00
%if %{defined regenerate_initrd_post}
%posttrans -n %{udevpkgname}
%regenerate_initrd_posttrans
%endif
2012-10-26 14:34:44 +02:00
%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
2013-02-20 09:34:16 +01:00
2014-07-21 15:37:02 +02:00
%if %{with permission}
%verify script logger
2014-07-28 12:21:09 +02:00
%verify _permissions -e %{_localstatedir} /log/journal/
2014-07-21 15:37:02 +02:00
%endif
2014-06-05 10:47:12 +02:00
%pre logger
getent group systemd-journal >/dev/null || groupadd -r systemd-journal || :
exit 0
2013-02-20 09:34:16 +01:00
%post logger
2014-07-21 15:37:02 +02:00
%if %{with permission}
2014-07-28 12:21:09 +02:00
%set_permissions %{_localstatedir} /log/journal/
2014-07-21 15:37:02 +02:00
%endif
2014-08-18 16:41:57 +02:00
%if %{with systemgrps}
2014-06-06 13:40:36 +02:00
getent group wheel && setfacl -Rnm g:wheel:rx,d:g:wheel:rx %{_localstatedir} /log/journal/ > /dev/null 2>&1 || :
getent group adm && setfacl -Rnm g:adm:rx,d:g:adm:rx %{_localstatedir} /log/journal/ > /dev/null 2>&1 || :
2014-08-18 16:41:57 +02:00
%endif
2013-02-20 09:34:16 +01:00
if [ " $ 1 " -eq 1 ]; then
# tell journal to start logging on disk if directory didn't exist before
systemctl --no-block restart systemd-journal-flush.service >/dev/null 2>&1 || :
fi
2013-04-13 13:09:53 +02:00
%preun -n nss-myhostname
if [ " $ 1 " -eq 0 -a -f /etc/nsswitch.conf ] ; then
%{_sbindir} /nss-myhostname-config --disable
fi
%post -n nss-myhostname -p /sbin/ldconfig
%postun -n nss-myhostname -p /sbin/ldconfig
2015-02-13 10:43:21 +01:00
%post -n nss-mymachines -p /sbin/ldconfig
%postun -n nss-mymachines -p /sbin/ldconfig
2013-07-25 17:40:51 +02:00
%pre journal-gateway
2014-07-28 12:21:09 +02:00
getent passwd systemd-journal-gateway >/dev/null || useradd -r -l -g systemd-journal-gateway -d %{_localstatedir} /log/journal/ -s /usr/sbin/nologin -c " J o u r n a l G a t e w a y " systemd-journal-gateway >/dev/null 2>&1 || :
2013-07-25 17:40:51 +02:00
getent group systemd-journal-gateway >/dev/null || groupadd -r systemd-journal-gateway || :
%service_add_pre systemd-journal-gatewayd.socket systemd-journal-gatewayd.service
exit 0
%post journal-gateway
%service_add_post systemd-journal-gatewayd.socket systemd-journal-gatewayd.service
%preun journal-gateway
%service_del_preun systemd-journal-gatewayd.socket systemd-journal-gatewayd.service
%postun journal-gateway
%service_del_postun systemd-journal-gatewayd.socket systemd-journal-gatewayd.service
2012-10-26 14:34:44 +02:00
%endif
2014-07-21 15:37:02 +02:00
%files -f systemd.lang
2012-10-26 14:34:44 +02:00
%defattr (-,root,root)
/bin/systemd
2012-10-29 19:55:30 +01:00
/bin/systemd-ask-password
/bin/systemctl
2015-02-13 11:05:19 +01:00
%if %{with networkd}
%{_bindir} /networkctl
%endif
2014-03-25 18:29:50 +01:00
%{_bindir} /systemd-sleep-grub
2014-02-28 18:10:52 +01:00
%{_bindir} /busctl
2013-04-13 13:09:53 +02:00
%{_bindir} /kernel-install
2012-10-29 19:55:30 +01:00
%{_bindir} /hostnamectl
%{_bindir} /localectl
- Update to release 205:
+ two new unit types have been introduced:
- Scope units are very similar to service units, however, are
created out of pre-existing processes -- instead of PID 1
forking off the processes.
- Slice units may be used to partition system resources in an
hierarchial fashion and then assign other units to them. By
default there are now three slices: system.slice (for all
system services), user.slice (for all user sessions),
machine.slice (for VMs and containers).
+ new concept of "transient" units, which are created at runtime
using an API and not based on configuration from disk.
+ logind has been updated to make use of scope and slice units to
manage user sessions. Logind will no longer create cgroups
hierchies itself but will relying on PID 1.
+ A new mini-daemon "systemd-machined" has been added which
may be used by virtualization managers to register local
VMs/containers. machinectl tool has been added to query
meta-data from systemd-machined.
+ Low-level cgroup configuration options ControlGroup=,
ControlGroupModify=, ControlGroupPersistent=,
ControlGroupAttribute= have been removed. High-level attribute
settings or slice units should be used instead?
+ A new bus call SetUnitProperties() has been added to alter
various runtime parameters of a unit, including cgroup
parameters. systemctl gained set-properties command to wrap
this call.
+ A new tool "systemd-run" has been added which can be used to
run arbitrary command lines as transient services or scopes,
while configuring a number of settings via the command
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=412
2013-07-04 17:28:49 +02:00
%{_bindir} /machinectl
2012-10-26 14:34:44 +02:00
%{_bindir} /systemctl
2013-04-13 13:09:53 +02:00
%{_bindir} /systemd-analyze
2015-02-13 10:43:21 +01:00
%{_bindir} /coredumpctl
2012-10-26 14:34:44 +02:00
%{_bindir} /systemd-delta
2015-02-13 10:43:21 +01:00
%{_bindir} /systemd-escape
%{_bindir} /systemd-firstboot
%{_bindir} /systemd-path
%{_bindir} /systemd-sysusers
2012-10-26 14:34:44 +02:00
%{_bindir} /systemd-notify
2015-02-16 12:36:25 +01:00
%{_bindir} /systemd-hwdb
- Update to release 205:
+ two new unit types have been introduced:
- Scope units are very similar to service units, however, are
created out of pre-existing processes -- instead of PID 1
forking off the processes.
- Slice units may be used to partition system resources in an
hierarchial fashion and then assign other units to them. By
default there are now three slices: system.slice (for all
system services), user.slice (for all user sessions),
machine.slice (for VMs and containers).
+ new concept of "transient" units, which are created at runtime
using an API and not based on configuration from disk.
+ logind has been updated to make use of scope and slice units to
manage user sessions. Logind will no longer create cgroups
hierchies itself but will relying on PID 1.
+ A new mini-daemon "systemd-machined" has been added which
may be used by virtualization managers to register local
VMs/containers. machinectl tool has been added to query
meta-data from systemd-machined.
+ Low-level cgroup configuration options ControlGroup=,
ControlGroupModify=, ControlGroupPersistent=,
ControlGroupAttribute= have been removed. High-level attribute
settings or slice units should be used instead?
+ A new bus call SetUnitProperties() has been added to alter
various runtime parameters of a unit, including cgroup
parameters. systemctl gained set-properties command to wrap
this call.
+ A new tool "systemd-run" has been added which can be used to
run arbitrary command lines as transient services or scopes,
while configuring a number of settings via the command
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=412
2013-07-04 17:28:49 +02:00
%{_bindir} /systemd-run
2012-10-26 14:34:44 +02:00
%{_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
2014-02-28 18:10:52 +01:00
%{_libdir} /libsystemd.so.*
%if %{with compat_libs}
2012-10-26 14:34:44 +02:00
%{_libdir} /libsystemd-daemon.so.*
%{_libdir} /libsystemd-login.so.*
%{_libdir} /libsystemd-id128.so.*
%{_libdir} /libsystemd-journal.so.*
2014-02-28 18:10:52 +01:00
%endif
2012-10-26 14:34:44 +02:00
%{_bindir} /systemd-cgls
%{_bindir} /systemd-cgtop
%{_bindir} /systemd-cat
2013-05-29 17:26:40 +02:00
%dir %{_prefix} /lib/kernel
%dir %{_prefix} /lib/kernel/install.d
%{_prefix} /lib/kernel/install.d/50-depmod.install
%{_prefix} /lib/kernel/install.d/90-loaderentry.install
2012-10-26 14:34:44 +02:00
%dir %{_prefix} /lib/systemd
%dir %{_prefix} /lib/systemd/user
%dir %{_prefix} /lib/systemd/system
%exclude %{_prefix} /lib/systemd/system/systemd-udev*.*
2014-03-14 12:10:20 +01:00
%exclude %{_prefix} /lib/systemd/system/udev.service
%exclude %{_prefix} /lib/systemd/system/initrd-udevadm-cleanup-db.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*.*
2014-11-14 13:19:40 +01:00
%exclude %{_prefix} /lib/systemd/system/sysinit.target.wants/systemd-udev-root-symlink.service
2014-03-03 15:25:26 +01:00
%if ! 0%{?bootstrap}
2013-07-25 17:40:51 +02:00
%exclude %{_prefix} /lib/systemd/system/systemd-journal-gatewayd.*
2014-03-03 15:25:26 +01:00
%endif
2012-10-26 14:34:44 +02:00
%{_prefix} /lib/systemd/system/*.automount
%{_prefix} /lib/systemd/system/*.service
- Update to release 205:
+ two new unit types have been introduced:
- Scope units are very similar to service units, however, are
created out of pre-existing processes -- instead of PID 1
forking off the processes.
- Slice units may be used to partition system resources in an
hierarchial fashion and then assign other units to them. By
default there are now three slices: system.slice (for all
system services), user.slice (for all user sessions),
machine.slice (for VMs and containers).
+ new concept of "transient" units, which are created at runtime
using an API and not based on configuration from disk.
+ logind has been updated to make use of scope and slice units to
manage user sessions. Logind will no longer create cgroups
hierchies itself but will relying on PID 1.
+ A new mini-daemon "systemd-machined" has been added which
may be used by virtualization managers to register local
VMs/containers. machinectl tool has been added to query
meta-data from systemd-machined.
+ Low-level cgroup configuration options ControlGroup=,
ControlGroupModify=, ControlGroupPersistent=,
ControlGroupAttribute= have been removed. High-level attribute
settings or slice units should be used instead?
+ A new bus call SetUnitProperties() has been added to alter
various runtime parameters of a unit, including cgroup
parameters. systemctl gained set-properties command to wrap
this call.
+ A new tool "systemd-run" has been added which can be used to
run arbitrary command lines as transient services or scopes,
while configuring a number of settings via the command
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=412
2013-07-04 17:28:49 +02:00
%{_prefix} /lib/systemd/system/*.slice
2012-10-26 14:34:44 +02:00
%{_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
2014-03-03 15:25:26 +01:00
%if ! 0%{?bootstrap}
2013-07-25 17:40:51 +02:00
%exclude %{_prefix} /lib/systemd/systemd-journal-gatewayd
2014-03-03 15:25:26 +01:00
%endif
2012-10-26 14:34:44 +02:00
%{_prefix} /lib/systemd/systemd-*
%{_prefix} /lib/systemd/systemd
2013-04-13 13:09:53 +02:00
%dir %{_prefix} /lib/systemd/catalog
%{_prefix} /lib/systemd/catalog/systemd.catalog
2014-02-28 18:10:52 +01:00
%{_prefix} /lib/systemd/catalog/systemd.*.catalog
2012-10-26 14:34:44 +02:00
%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
2013-04-25 09:23:12 +02:00
%dir %{_prefix} /lib/systemd/system/getty@tty1.service.d
%{_prefix} /lib/systemd/system/getty@tty1.service.d/noclear.conf
2012-10-26 14:34:44 +02:00
%if ! 0%{?bootstrap}
%{_prefix} /lib/systemd/system-generators/systemd-cryptsetup-generator
%endif
2014-06-12 11:30:28 +02:00
%if 0%{has_efi}
%{_bindir} /bootctl
2013-04-13 13:09:53 +02:00
%{_prefix} /lib/systemd/system-generators/systemd-efi-boot-generator
2014-06-12 11:30:28 +02:00
%endif
2015-02-13 10:43:21 +01:00
%{_prefix} /lib/systemd/system-generators/systemd-debug-generator
%{_prefix} /lib/systemd/system-generators/systemd-hibernate-resume-generator
%{_prefix} /lib/systemd/system-generators/systemd-sysv-generator
2012-10-26 14:34:44 +02:00
%{_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
2013-07-02 22:42:56 +02:00
%{_prefix} /lib/systemd/system-generators/systemd-insserv-generator
2013-09-13 09:25:15 +02:00
%{_prefix} /lib/systemd/system-generators/systemd-gpt-auto-generator
2015-02-13 10:43:21 +01:00
%{_prefix} /lib/systemd/system-preset/
%{_prefix} /lib/sysusers.d/
2012-10-26 14:34:44 +02:00
/%{_lib}/security/pam_systemd.so
2014-07-21 15:37:02 +02:00
%config /etc/pam.d/systemd-user
2012-10-26 14:34:44 +02:00
%dir %{_libexecdir} /modules-load.d
%dir %{_sysconfdir} /modules-load.d
2013-04-25 10:33:19 +02:00
%{_libexecdir} /modules-load.d/sg.conf
2012-10-26 14:34:44 +02:00
%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
2014-03-14 12:36:31 +01:00
%dir %{_sysconfdir} /dbus-1
%dir %{_sysconfdir} /dbus-1/system.d
2013-07-12 17:10:22 +02:00
%{_sysconfdir} /xdg/systemd/user
2014-03-14 12:36:31 +01:00
%dir %{_datadir} /dbus-1
%dir %{_datadir} /dbus-1/services
%dir %{_datadir} /dbus-1/system-services
2013-04-13 13:09:53 +02:00
%config (noreplace) %{_sysconfdir} /systemd/bootchart.conf
2015-02-13 10:43:21 +01:00
%config (noreplace) %{_sysconfdir} /systemd/coredump.conf
%if !0%{?bootstrap}
%config (noreplace) %{_sysconfdir} /systemd/journal-remote.conf
%endif
%config (noreplace) %{_sysconfdir} /systemd/timesyncd.conf
2012-10-26 14:34:44 +02:00
%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
- Update to release 205:
+ two new unit types have been introduced:
- Scope units are very similar to service units, however, are
created out of pre-existing processes -- instead of PID 1
forking off the processes.
- Slice units may be used to partition system resources in an
hierarchial fashion and then assign other units to them. By
default there are now three slices: system.slice (for all
system services), user.slice (for all user sessions),
machine.slice (for VMs and containers).
+ new concept of "transient" units, which are created at runtime
using an API and not based on configuration from disk.
+ logind has been updated to make use of scope and slice units to
manage user sessions. Logind will no longer create cgroups
hierchies itself but will relying on PID 1.
+ A new mini-daemon "systemd-machined" has been added which
may be used by virtualization managers to register local
VMs/containers. machinectl tool has been added to query
meta-data from systemd-machined.
+ Low-level cgroup configuration options ControlGroup=,
ControlGroupModify=, ControlGroupPersistent=,
ControlGroupAttribute= have been removed. High-level attribute
settings or slice units should be used instead?
+ A new bus call SetUnitProperties() has been added to alter
various runtime parameters of a unit, including cgroup
parameters. systemctl gained set-properties command to wrap
this call.
+ A new tool "systemd-run" has been added which can be used to
run arbitrary command lines as transient services or scopes,
while configuring a number of settings via the command
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=412
2013-07-04 17:28:49 +02:00
%config (noreplace) %{_sysconfdir} /dbus-1/system.d/org.freedesktop.machine1.conf
2015-02-16 12:36:25 +01:00
%config (noreplace) %{_sysconfdir} /dbus-1/system.d/org.freedesktop.network1.conf
2012-10-26 14:34:44 +02:00
%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
2014-06-12 12:21:33 +02:00
# Some files which may created by us
%dir %{_sysconfdir} /X11/xorg.conf.d
%ghost %config (noreplace) %{_sysconfdir} /X11/xorg.conf.d/00-keyboard.conf
%ghost %config (noreplace) %{_sysconfdir} /vconsole.conf
%ghost %config (noreplace) %{_sysconfdir} /locale.conf
%ghost %config (noreplace) %{_sysconfdir} /machine-id
%ghost %config (noreplace) %{_sysconfdir} /machine-info
%ghost %config (noreplace) %{_sysconfdir} /systemd/system/runlevel2.target
%ghost %config (noreplace) %{_sysconfdir} /systemd/system/runlevel3.target
%ghost %config (noreplace) %{_sysconfdir} /systemd/system/runlevel4.target
%ghost %config (noreplace) %{_sysconfdir} /systemd/system/runlevel5.target
2015-02-13 10:43:21 +01:00
%{_datadir} /factory/
2012-10-26 14:34:44 +02:00
%{_datadir} /dbus-1/services/org.freedesktop.systemd1.service
2015-02-16 12:36:25 +01:00
%{_datadir} /dbus-1/system-services/org.freedesktop.network1.service
2012-10-26 14:34:44 +02:00
%{_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
- Update to release 205:
+ two new unit types have been introduced:
- Scope units are very similar to service units, however, are
created out of pre-existing processes -- instead of PID 1
forking off the processes.
- Slice units may be used to partition system resources in an
hierarchial fashion and then assign other units to them. By
default there are now three slices: system.slice (for all
system services), user.slice (for all user sessions),
machine.slice (for VMs and containers).
+ new concept of "transient" units, which are created at runtime
using an API and not based on configuration from disk.
+ logind has been updated to make use of scope and slice units to
manage user sessions. Logind will no longer create cgroups
hierchies itself but will relying on PID 1.
+ A new mini-daemon "systemd-machined" has been added which
may be used by virtualization managers to register local
VMs/containers. machinectl tool has been added to query
meta-data from systemd-machined.
+ Low-level cgroup configuration options ControlGroup=,
ControlGroupModify=, ControlGroupPersistent=,
ControlGroupAttribute= have been removed. High-level attribute
settings or slice units should be used instead?
+ A new bus call SetUnitProperties() has been added to alter
various runtime parameters of a unit, including cgroup
parameters. systemctl gained set-properties command to wrap
this call.
+ A new tool "systemd-run" has been added which can be used to
run arbitrary command lines as transient services or scopes,
while configuring a number of settings via the command
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=412
2013-07-04 17:28:49 +02:00
%{_datadir} /dbus-1/system-services/org.freedesktop.machine1.service
2012-10-26 14:34:44 +02:00
%{_datadir} /dbus-1/system-services/org.freedesktop.timedate1.service
%dir %{_datadir} /polkit-1
%dir %{_datadir} /polkit-1/actions
2015-02-16 12:36:25 +01:00
%{_datadir} /polkit-1/actions/org.freedesktop.machine1.policy
2012-10-26 14:34:44 +02:00
%{_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
2014-03-03 15:25:26 +01:00
%if ! 0%{?bootstrap}
2013-07-25 17:40:51 +02:00
%exclude %{_datadir} /systemd/gatewayd
2014-03-03 15:25:26 +01:00
%endif
2012-10-26 14:34:44 +02:00
%{_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]*
2013-07-25 17:40:51 +02:00
%exclude %{_mandir} /man8/systemd-journal-gatewayd.*
2012-10-26 14:34:44 +02:00
%{_mandir} /man1/*.1*
%{_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
%{_prefix} /lib/udev/numlock-on
2013-06-19 09:04:23 +02:00
%if 0%{suse_version} < 1310
2012-10-26 14:34:44 +02:00
%{_sysconfdir} /rpm/macros.systemd
2013-06-19 09:04:23 +02:00
%endif
2014-03-03 15:25:26 +01:00
%dir %{_localstatedir} /lib/systemd
%dir %{_localstatedir} /lib/systemd/sysv-convert
%dir %{_localstatedir} /lib/systemd/migrated
%dir %{_localstatedir} /lib/systemd/catalog
%ghost %{_localstatedir} /lib/systemd/catalog/database
%dir %{_localstatedir} /lib/systemd/coredump
%dir %{_datadir} /zsh
%dir %{_datadir} /zsh/site-functions
%{_datadir} /zsh/site-functions/*
%ghost %{_localstatedir} /lib/systemd/backlight
%ghost %{_localstatedir} /lib/systemd/random-seed
2012-10-26 14:34:44 +02:00
2014-02-11 11:54:05 +01:00
%if ! 0%{?bootstrap}
2014-03-03 15:58:29 +01:00
%files bash-completion -f files.completion
2014-02-08 11:46:51 +01:00
%defattr (-,root,root,-)
%dir %{_datadir} /bash-completion
%dir %{_datadir} /bash-completion/completions
%{_datadir} /bash-completion/completions/*
2014-02-11 11:54:05 +01:00
%endif
2014-02-08 11:46:51 +01:00
2012-10-26 14:34:44 +02:00
%files devel
%defattr (-,root,root,-)
2014-02-28 18:10:52 +01:00
%{_libdir} /libsystemd.so
2012-10-26 14:34:44 +02:00
%{_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
2014-02-28 18:10:52 +01:00
%{_includedir} /systemd/_sd-common.h
2015-02-16 12:36:25 +01:00
%{_libdir} /pkgconfig/systemd.pc
2014-02-28 18:10:52 +01:00
%{_libdir} /pkgconfig/libsystemd.pc
2012-10-26 14:34:44 +02:00
%{_libdir} /pkgconfig/libsystemd-daemon.pc
%{_libdir} /pkgconfig/libsystemd-login.pc
%{_libdir} /pkgconfig/libsystemd-id128.pc
%{_libdir} /pkgconfig/libsystemd-journal.pc
2014-08-22 14:45:12 +02:00
%if ! 0%{?bootstrap}
%{_mandir} /man3/*.3*
%endif
2012-10-26 14:34:44 +02:00
%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 -n %{udevpkgname}
%defattr (-,root,root)
/sbin/udevd
/sbin/udevadm
# keep for compatibility
%ghost /lib/udev
%{_bindir} /udevadm
2014-06-05 10:47:12 +02:00
%if 0%{?suse_version} <= 1310
2012-10-26 14:34:44 +02:00
%{_prefix} /lib/firmware
2014-06-05 10:47:12 +02:00
%endif
2012-10-26 14:34:44 +02:00
%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/mtd_probe
%{_prefix} /lib/udev/scsi_id
%{_prefix} /lib/udev/v4l_id
2014-07-24 12:08:27 +02:00
%{_prefix} /lib/udev/udev-generate-persistent-rule
2014-05-30 13:13:04 +02:00
%{_prefix} /lib/udev/net-set-sriov-names
2014-07-14 17:05:04 +02:00
%{_prefix} /lib/udev/remount-tmpfs
2014-05-30 13:13:04 +02:00
%{_prefix} /lib/udev/rule_generator.functions
%{_prefix} /lib/udev/write_net_rules
2014-11-14 13:19:40 +01:00
%{_prefix} /lib/udev/rootsymlink-generator
2012-10-26 14:34:44 +02:00
%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
2013-04-13 13:09:53 +02:00
%dir %{_prefix} /lib/udev/hwdb.d
%{_prefix} /lib/udev/hwdb.d/*
2012-10-26 14:34:44 +02:00
%{_sysconfdir} /init.d/boot.udev
%dir %{_sysconfdir} /udev/
%dir %{_sysconfdir} /udev/rules.d/
2013-04-13 13:09:53 +02:00
%ghost %{_sysconfdir} /udev/hwdb.bin
2012-10-26 14:34:44 +02:00
%config (noreplace) %{_sysconfdir} /udev/udev.conf
%if ! 0%{?bootstrap}
%{_mandir} /man?/*udev*.[0-9]*
%endif
%dir %{_prefix} /lib/systemd/system
%{_prefix} /lib/systemd/systemd-udevd
%{_prefix} /lib/systemd/system/*udev*.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
2014-02-28 18:10:52 +01:00
%dir %{_prefix} /lib/systemd/network
%{_prefix} /lib/systemd/network/*.link
2014-03-03 15:25:26 +01:00
%{_prefix} /lib/systemd/network/*.network
2014-05-21 10:58:28 +02:00
%if 0%{?suse_version} > 1310
%{_datadir} /pkgconfig/udev.pc
%endif
2012-10-26 14:34:44 +02:00
%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
2014-05-21 10:58:28 +02:00
%if 0%{?suse_version} <= 1310
2012-10-26 14:34:44 +02:00
%{_datadir} /pkgconfig/udev.pc
2014-05-21 10:58:28 +02:00
%endif
2012-10-26 14:34:44 +02:00
%{_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)
2014-07-28 12:21:09 +02:00
%dir %attr (2755,root,systemd-journal) %{_localstatedir} /log/journal/
2014-03-03 15:25:26 +01:00
%{_localstatedir} /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
2013-04-13 13:09:53 +02:00
%files -n nss-myhostname
%defattr (-, root, root)
%{_sbindir} /nss-myhostname-config
/%{_lib}/*nss_myhostname*
2013-07-25 17:40:51 +02:00
%files journal-gateway
%defattr (-, root, root)
%{_prefix} /lib/systemd/system/systemd-journal-gatewayd.*
%{_prefix} /lib/systemd/systemd-journal-gatewayd
%{_mandir} /man8/systemd-journal-gatewayd.*
%{_datadir} /systemd/gatewayd
2012-10-26 14:34:44 +02:00
%endif
2015-02-13 10:43:21 +01:00
%files -n nss-mymachines
%defattr (-,root,root)
%_libdir /libnss_mymachines.so*
2012-10-26 14:34:44 +02:00
%changelog