diff --git a/srcpkgs/libudev/template b/srcpkgs/libudev/template index b1854369d7..4ade9dd4ee 100644 --- a/srcpkgs/libudev/template +++ b/srcpkgs/libudev/template @@ -1,14 +1,14 @@ # Template file for 'libudev' pkgname=libudev version=205 -revision=1 +revision=2 wrksrc="systemd-${version}" build_style=gnu-configure configure_args="--libexecdir=/usr/lib --disable-selinux --disable-static --disable-ima --enable-introspection=no --disable-kmod --disable-blkid --disable-chkconfig --disable-selinux --disable-tcpwrap --disable-pam - --disable-acl --disable-xattr --disable-audit + --disable-acl --disable-xattr --disable-audit --disable-machined --disable-libcryptsetup --disable-qrencode --disable-microhttpd --disable-binfmt --disable-vconsole --disable-readahead --disable-bootchart --disable-quotacheck --disable-randomseed --disable-hostnamed diff --git a/srcpkgs/systemd/patches/ad929bcc27e2c6c1aa731053e45882686e9babab.patch b/srcpkgs/systemd/patches/ad929bcc27e2c6c1aa731053e45882686e9babab.patch new file mode 100644 index 0000000000..80df6c800a --- /dev/null +++ b/srcpkgs/systemd/patches/ad929bcc27e2c6c1aa731053e45882686e9babab.patch @@ -0,0 +1,68 @@ +From ad929bcc27e2c6c1aa731053e45882686e9babab Mon Sep 17 00:00:00 2001 +From: Kay Sievers +Date: Thu, 04 Jul 2013 18:31:18 +0000 +Subject: disable the cgroups release agent when shutting down + +During shutdown, when we try to clean up all remaining processes, the +kernel will fork new agents every time a cgroup runs empty. These +new processes cause delays in the final SIGTERM, SIGKILL logic. + +Apart from that, this should also avoid that the kernel-forked binaries +cause unpredictably timed access to the filesystem which we might need to +unmount. +--- +diff --git a/src/core/main.c b/src/core/main.c +index 8b8e110..ada0f9d 100644 +--- src/core/main.c ++++ src/core/main.c +@@ -1942,6 +1942,10 @@ finish: + watchdog_close(true); + } + ++ /* avoid the creation of new processes forked by the kernel; at this ++ * point, we will not listen to the signals anyway */ ++ cg_uninstall_release_agent(SYSTEMD_CGROUP_CONTROLLER); ++ + execve(SYSTEMD_SHUTDOWN_BINARY_PATH, (char **) command_line, env_block); + free(env_block); + log_error("Failed to execute shutdown binary, freezing: %m"); +diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c +index 390259e..73013d1 100644 +--- src/shared/cgroup-util.c ++++ src/shared/cgroup-util.c +@@ -790,6 +790,21 @@ int cg_install_release_agent(const char *controller, const char *agent) { + return 0; + } + ++int cg_uninstall_release_agent(const char *controller) { ++ _cleanup_free_ char *fs = NULL; ++ int r; ++ ++ r = cg_get_path(controller, NULL, "release_agent", &fs); ++ if (r < 0) ++ return r; ++ ++ r = write_string_file(fs, ""); ++ if (r < 0) ++ return r; ++ ++ return 0; ++} ++ + int cg_is_empty(const char *controller, const char *path, bool ignore_self) { + _cleanup_fclose_ FILE *f = NULL; + pid_t pid = 0, self_pid; +diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h +index c781aab..0fc93c1 100644 +--- src/shared/cgroup-util.h ++++ src/shared/cgroup-util.h +@@ -89,6 +89,7 @@ int cg_set_group_access(const char *controller, const char *path, mode_t mode, u + int cg_set_task_access(const char *controller, const char *path, mode_t mode, uid_t uid, gid_t gid); + + int cg_install_release_agent(const char *controller, const char *agent); ++int cg_uninstall_release_agent(const char *controller); + + int cg_is_empty(const char *controller, const char *path, bool ignore_self); + int cg_is_empty_by_spec(const char *spec, bool ignore_self); +-- +cgit v0.9.0.2-2-gbebe diff --git a/srcpkgs/systemd/patches/c1eba3008cac9e625b8bb774e9b44ceec8465980.patch b/srcpkgs/systemd/patches/c1eba3008cac9e625b8bb774e9b44ceec8465980.patch new file mode 100644 index 0000000000..90547e9431 --- /dev/null +++ b/srcpkgs/systemd/patches/c1eba3008cac9e625b8bb774e9b44ceec8465980.patch @@ -0,0 +1,48 @@ +From c1eba3008cac9e625b8bb774e9b44ceec8465980 Mon Sep 17 00:00:00 2001 +From: Kay Sievers +Date: Thu, 04 Jul 2013 18:54:40 +0000 +Subject: cgroups-agent: remove ancient fallback code; turn connection error into warning + +During re-execution and shutdown cgroups agents might not be able +to connect to systemd's private D-Bus socket, the printed error to +the console is misleding in that case, so turn it into a warning. +--- +diff --git a/src/cgroups-agent/cgroups-agent.c b/src/cgroups-agent/cgroups-agent.c +index 0e3d2b7..a47949a 100644 +--- src/cgroups-agent/cgroups-agent.c ++++ src/cgroups-agent/cgroups-agent.c +@@ -48,26 +48,19 @@ int main(int argc, char *argv[]) { + * this to avoid an activation loop when we start dbus when we + * are called when the dbus service is shut down. */ + +- if (!(bus = dbus_connection_open_private("unix:path=/run/systemd/private", &error))) { +-#ifndef NOLEGACY +- dbus_error_free(&error); +- +- /* Retry with the pre v21 socket name, to ease upgrades */ +- if (!(bus = dbus_connection_open_private("unix:abstract=/org/freedesktop/systemd1/private", &error))) { +-#endif +- log_error("Failed to get D-Bus connection: %s", bus_error_message(&error)); +- goto finish; +- } +-#ifndef NOLEGACY ++ bus = dbus_connection_open_private("unix:path=/run/systemd/private", &error); ++ if (!bus) { ++ log_warning("Failed to get D-Bus connection: %s", bus_error_message(&error)); ++ goto finish; + } +-#endif + + if (bus_check_peercred(bus) < 0) { + log_error("Bus owner not root."); + goto finish; + } + +- if (!(m = dbus_message_new_signal("/org/freedesktop/systemd1/agent", "org.freedesktop.systemd1.Agent", "Released"))) { ++ m = dbus_message_new_signal("/org/freedesktop/systemd1/agent", "org.freedesktop.systemd1.Agent", "Released"); ++ if (!m) { + log_error("Could not allocate signal message."); + goto finish; + } +-- +cgit v0.9.0.2-2-gbebe diff --git a/srcpkgs/systemd/template b/srcpkgs/systemd/template index 9f64c60a8f..efeec5d016 100644 --- a/srcpkgs/systemd/template +++ b/srcpkgs/systemd/template @@ -1,7 +1,7 @@ # Template file for 'systemd' pkgname=systemd version=205 -revision=1 +revision=2 short_desc="A system and service manager for Linux" maintainer="Juan RP " homepage="http://www.freedesktop.org/wiki/Software/systemd"