From a36c4a33891932acf2ac1cdebbb9caed01d7df6f Mon Sep 17 00:00:00 2001 From: root Date: Tue, 14 Aug 2012 00:02:20 +0000 Subject: Tue Aug 14 00:02:20 UTC 2012 --- ...cursively-mark-root-as-private-before-piv.patch | 31 +++++++++ ...tl-fix-issue-with-systemctl-daemon-reexec.patch | 73 ++++++++++++++++++++++ core/systemd/PKGBUILD | 30 ++++++--- 3 files changed, 127 insertions(+), 7 deletions(-) create mode 100644 core/systemd/0001-shutdown-recursively-mark-root-as-private-before-piv.patch create mode 100644 core/systemd/0001-systemctl-fix-issue-with-systemctl-daemon-reexec.patch (limited to 'core') diff --git a/core/systemd/0001-shutdown-recursively-mark-root-as-private-before-piv.patch b/core/systemd/0001-shutdown-recursively-mark-root-as-private-before-piv.patch new file mode 100644 index 000000000..5c6085c95 --- /dev/null +++ b/core/systemd/0001-shutdown-recursively-mark-root-as-private-before-piv.patch @@ -0,0 +1,31 @@ +From 4bfa638d43c05e8db052cd55818765bb3575a405 Mon Sep 17 00:00:00 2001 +From: Dave Reisner +Date: Fri, 10 Aug 2012 11:02:03 -0400 +Subject: [PATCH] shutdown: recursively mark root as private before pivot + +Because root is now recursively marked as shared on bootup, we need to +recursively mark root as private. This prevents a pivot_root failure on +shutdown: + + Cannot finalize remaining file systems and devices, giving up. + pivot failed: Invalid argument +--- + src/core/shutdown.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/shutdown.c b/src/core/shutdown.c +index 105a604..0b7cbd8 100644 +--- a/src/core/shutdown.c ++++ b/src/core/shutdown.c +@@ -109,7 +109,7 @@ static int pivot_to_new_root(void) { + It works for pivot_root, but the ref count for the root device + is not decreasing :-/ + */ +- if (mount(NULL, "/", NULL, MS_PRIVATE, NULL) < 0) { ++ if (mount(NULL, "/", NULL, MS_REC|MS_PRIVATE, NULL) < 0) { + log_error("Failed to make \"/\" private mount %m"); + return -errno; + } +-- +1.7.11.4 + diff --git a/core/systemd/0001-systemctl-fix-issue-with-systemctl-daemon-reexec.patch b/core/systemd/0001-systemctl-fix-issue-with-systemctl-daemon-reexec.patch new file mode 100644 index 000000000..3aec94edc --- /dev/null +++ b/core/systemd/0001-systemctl-fix-issue-with-systemctl-daemon-reexec.patch @@ -0,0 +1,73 @@ +From c516c8d17f77a1c761447f4c40c8dfffeda2e06d Mon Sep 17 00:00:00 2001 +From: Simon Peeters +Date: Fri, 10 Aug 2012 17:32:19 +0200 +Subject: [PATCH] systemctl: fix issue with systemctl daemon-reexec + +--- + src/shared/dbus-common.c | 3 ++- + src/systemctl/systemctl.c | 11 ++++++++--- + 2 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c +index 7f0dce5..da2dc2e 100644 +--- a/src/shared/dbus-common.c ++++ b/src/shared/dbus-common.c +@@ -1287,7 +1287,8 @@ int bus_method_call_with_reply(DBusConnection *bus, + reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error); + dbus_message_unref(m); + if (!reply) { +- log_error("Failed to issue method call: %s", bus_error_message(&error)); ++ if (!return_error) ++ log_error("Failed to issue method call: %s", bus_error_message(&error)); + if (bus_error_is_no_service(&error)) + r = -ENOENT; + else if (dbus_error_has_name(&error, DBUS_ERROR_ACCESS_DENIED)) +diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c +index 2e0aaaa..13e0f91 100644 +--- a/src/systemctl/systemctl.c ++++ b/src/systemctl/systemctl.c +@@ -1537,11 +1537,12 @@ static int start_unit_one( + DBUS_TYPE_INVALID); + free(n); + if (r) { +- if (r == -ENOENT && arg_action != ACTION_SYSTEMCTL ) { ++ if (r == -ENOENT && arg_action != ACTION_SYSTEMCTL ) + /* There's always a fallback possible for + * legacy actions. */ + r = -EADDRNOTAVAIL; +- } ++ else ++ log_error("Failed to issue method call: %s", bus_error_message(error)); + goto finish; + } + +@@ -3143,6 +3144,7 @@ finish: + static int daemon_reload(DBusConnection *bus, char **args) { + int r; + const char *method; ++ DBusError error; + + if (arg_action == ACTION_RELOAD) + method = "Reload"; +@@ -3171,7 +3173,7 @@ static int daemon_reload(DBusConnection *bus, char **args) { + "org.freedesktop.systemd1.Manager", + method, + NULL, +- NULL, ++ &error, + DBUS_TYPE_INVALID); + + if (r == -ENOENT && arg_action != ACTION_SYSTEMCTL) +@@ -3182,6 +3184,9 @@ static int daemon_reload(DBusConnection *bus, char **args) { + /* On reexecution, we expect a disconnect, not + * a reply */ + r = 0; ++ else if (r) ++ log_error("Failed to issue method call: %s", bus_error_message(&error)); ++ dbus_error_free(&error); + + return r; + } +-- +1.7.11.4 + diff --git a/core/systemd/PKGBUILD b/core/systemd/PKGBUILD index 82ac3b88f..b20882fd5 100644 --- a/core/systemd/PKGBUILD +++ b/core/systemd/PKGBUILD @@ -3,8 +3,8 @@ pkgbase=systemd pkgname=('systemd' 'libsystemd' 'systemd-tools' 'systemd-sysvcompat') -pkgver=187 -pkgrel=4 +pkgver=188 +pkgrel=2 arch=('i686' 'x86_64') url="http://www.freedesktop.org/wiki/Software/systemd" license=('GPL2' 'LGPL2.1' 'MIT') @@ -17,13 +17,17 @@ source=("http://www.freedesktop.org/software/$pkgname/$pkgname-$pkgver.tar.xz" 'initcpio-install-timestamp' '0001-Reinstate-TIMEOUT-handling.patch' 'locale.sh' + 0001-shutdown-recursively-mark-root-as-private-before-piv.patch + 0001-systemctl-fix-issue-with-systemctl-daemon-reexec.patch 'use-split-usr-path.patch') -md5sums=('26606e3c84448800ef0b3ffd57e6e8b6' +md5sums=('d89b42699695554949d072ef46c0dfc9' 'e99e9189aa2f6084ac28b8ddf605aeb8' '59e91c4d7a69b7bf12c86a9982e37ced' 'df69615503ad293c9ddf9d8b7755282d' '5543be25f205f853a21fa5ee68e03f0d' 'f15956945052bb911e5df81cf5e7e5dc' + '49d145ef3ca299025c085555314212b6' + 'bccb994f4cfbd251b6c34d7d90a6ba0f' '482dba45a783f06c2239f1355f4ce72f') build() { @@ -31,7 +35,15 @@ build() { # still waiting on ipw2x00 to get fixed... patch -Np1 <"$srcdir/0001-Reinstate-TIMEOUT-handling.patch" - patch -Np1 < "$srcdir/use-split-usr-path.patch" + patch -Np1 <"$srcdir/use-split-usr-path.patch" + + # http://bugs.archlinux.org/task/31089 + # upstream c516c8d17f77a1c761447f4c40c8dfffeda2e06d + patch -Np1 <"$srcdir/0001-systemctl-fix-issue-with-systemctl-daemon-reexec.patch" + + # http://bugs.archlinux.org/task/31092 + # upstream 4bfa638d43c05e8db052cd55818765bb3575a405 + patch -Np1 <"$srcdir/0001-shutdown-recursively-mark-root-as-private-before-piv.patch" ./configure \ --libexecdir=/usr/lib \ @@ -89,8 +101,11 @@ package_systemd() { rm "$pkgdir/etc/systemd/system/getty.target.wants/getty@tty1.service" rmdir "$pkgdir/etc/systemd/system/getty.target.wants" - # fix systemd-analyze for python2. the 'plot' verb does not work - # with py3k due to a bug in python-cairo + ### get rid of RPM macros + rm -r "$pkgdir/etc/rpm/macros.systemd" + + # can't use py3k yet with systemd-analyze -- the 'plot' verb will not work. + # https://pokersource.info/show_bug.cgi?id=50989 sed -i '1s/python$/python2/' "$pkgdir/usr/bin/systemd-analyze" ### split off libsystemd (libs, includes, pkgconfig, man3) @@ -140,7 +155,8 @@ package_systemd() { mv "$pkgdir"/usr/share/gir-1.0 usr/share mv "$pkgdir"/usr/share/gtk-doc/html/{g,lib}udev usr/share/gtk-doc/html mv "$pkgdir"/usr/share/man/man7/udev.7 usr/share/man/man7 - mv "$pkgdir"/usr/share/man/man8/{systemd-{tmpfiles,udevd},udevadm}.8 usr/share/man/man8 + mv "$pkgdir"/usr/share/man/man8/{systemd-tmpfiles,udevadm}.8 usr/share/man/man8 + mv "$pkgdir"/usr/share/man/man8/systemd-udevd{,.service,{-control,-kernel}.socket}.8 usr/share/man/man8 mv "$pkgdir"/usr/share/man/man1/systemd-{ask-password,delta,detect-virt,machine-id-setup}.1 usr/share/man/man1 mv "$pkgdir"/usr/share/man/man5/{binfmt,modules-load,sysctl,tmpfiles}.d.5 usr/share/man/man5 mv "$pkgdir"/usr/share/man/man5/{hostname,{vconsole,locale}.conf,crypttab}.5 usr/share/man/man5 -- cgit v1.2.3-54-g00ecf