Date: Wednesday, May 27, 2015 @ 19:55:08 Author: foutrelis Revision: 239819
upgpkg: systemd 220-2 - Backport fix for incorrect SIGCHLD handling in --daemon mode (FS#45086). - Use git sources to work around incomplete release tarball. - Enable gnuefi support. Modified: systemd/trunk/PKGBUILD Deleted: systemd/trunk/0001-udevd-worker-fully-clean-up-unnecessary-fds.patch systemd/trunk/0002-udevd-worker-modernize-a-bit.patch systemd/trunk/0003-udevd-event-fix-event-queue-in-daemenozied-mode.patch ------------------------------------------------------------+ 0001-udevd-worker-fully-clean-up-unnecessary-fds.patch | 34 ------ 0002-udevd-worker-modernize-a-bit.patch | 58 ----------- 0003-udevd-event-fix-event-queue-in-daemenozied-mode.patch | 45 -------- PKGBUILD | 38 +++---- 4 files changed, 18 insertions(+), 157 deletions(-) Deleted: 0001-udevd-worker-fully-clean-up-unnecessary-fds.patch =================================================================== --- 0001-udevd-worker-fully-clean-up-unnecessary-fds.patch 2015-05-27 17:31:03 UTC (rev 239818) +++ 0001-udevd-worker-fully-clean-up-unnecessary-fds.patch 2015-05-27 17:55:08 UTC (rev 239819) @@ -1,34 +0,0 @@ -From 6d1b1e0bc6bd020218afc5f05286bf372be283d5 Mon Sep 17 00:00:00 2001 -From: Tom Gundersen <t...@jklm.no> -Date: Sun, 24 May 2015 15:10:04 +0200 -Subject: [PATCH 1/3] udevd: worker - fully clean up unnecessary fds - -These are only ever used in the parent process, so close them early in the worker. ---- - src/udev/udevd.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/src/udev/udevd.c b/src/udev/udevd.c -index afd4640..d8cb046 100644 ---- a/src/udev/udevd.c -+++ b/src/udev/udevd.c -@@ -329,11 +329,15 @@ static void worker_spawn(Manager *manager, struct event *event) { - - manager_workers_free(manager); - event_queue_cleanup(manager, EVENT_UNDEF); -+ - manager->monitor = udev_monitor_unref(manager->monitor); -+ manager->ctrl_conn_blocking = udev_ctrl_connection_unref(manager->ctrl_conn_blocking); - manager->ctrl = udev_ctrl_unref(manager->ctrl); -+ -+ manager->fd_ep = safe_close(manager->fd_ep); - manager->fd_signal = safe_close(manager->fd_signal); -+ manager->fd_inotify = safe_close(manager->fd_inotify); - manager->worker_watch[READ_END] = safe_close(manager->worker_watch[READ_END]); -- manager->fd_ep = safe_close(manager->fd_ep); - - sigfillset(&mask); - fd_signal = signalfd(-1, &mask, SFD_NONBLOCK|SFD_CLOEXEC); --- -2.4.1 - Deleted: 0002-udevd-worker-modernize-a-bit.patch =================================================================== --- 0002-udevd-worker-modernize-a-bit.patch 2015-05-27 17:31:03 UTC (rev 239818) +++ 0002-udevd-worker-modernize-a-bit.patch 2015-05-27 17:55:08 UTC (rev 239819) @@ -1,58 +0,0 @@ -From 2dd9f98d2d7a06a8e28729da6339fce50d66e9cc Mon Sep 17 00:00:00 2001 -From: Tom Gundersen <t...@jklm.no> -Date: Sun, 24 May 2015 15:14:43 +0200 -Subject: [PATCH 2/3] udevd: worker - modernize a bit - -Initialize structs when declaring rather than using memzero(). ---- - src/udev/udevd.c | 18 +++++++----------- - 1 file changed, 7 insertions(+), 11 deletions(-) - -diff --git a/src/udev/udevd.c b/src/udev/udevd.c -index d8cb046..4a44b03 100644 ---- a/src/udev/udevd.c -+++ b/src/udev/udevd.c -@@ -316,10 +316,11 @@ static void worker_spawn(Manager *manager, struct event *event) { - switch (pid) { - case 0: { - struct udev_device *dev = NULL; -+ _cleanup_rtnl_unref_ sd_rtnl *rtnl = NULL; - int fd_monitor; - _cleanup_close_ int fd_signal = -1, fd_ep = -1; -- _cleanup_rtnl_unref_ sd_rtnl *rtnl = NULL; -- struct epoll_event ep_signal, ep_monitor; -+ struct epoll_event ep_signal = { .events = EPOLLIN }; -+ struct epoll_event ep_monitor = { .events = EPOLLIN }; - sigset_t mask; - int r = 0; - -@@ -345,6 +346,10 @@ static void worker_spawn(Manager *manager, struct event *event) { - r = log_error_errno(errno, "error creating signalfd %m"); - goto out; - } -+ ep_signal.data.fd = fd_signal; -+ -+ fd_monitor = udev_monitor_get_fd(worker_monitor); -+ ep_monitor.data.fd = fd_monitor; - - fd_ep = epoll_create1(EPOLL_CLOEXEC); - if (fd_ep < 0) { -@@ -352,15 +357,6 @@ static void worker_spawn(Manager *manager, struct event *event) { - goto out; - } - -- memzero(&ep_signal, sizeof(struct epoll_event)); -- ep_signal.events = EPOLLIN; -- ep_signal.data.fd = fd_signal; -- -- fd_monitor = udev_monitor_get_fd(worker_monitor); -- memzero(&ep_monitor, sizeof(struct epoll_event)); -- ep_monitor.events = EPOLLIN; -- ep_monitor.data.fd = fd_monitor; -- - if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_signal, &ep_signal) < 0 || - epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_monitor, &ep_monitor) < 0) { - r = log_error_errno(errno, "fail to add fds to epoll: %m"); --- -2.4.1 - Deleted: 0003-udevd-event-fix-event-queue-in-daemenozied-mode.patch =================================================================== --- 0003-udevd-event-fix-event-queue-in-daemenozied-mode.patch 2015-05-27 17:31:03 UTC (rev 239818) +++ 0003-udevd-event-fix-event-queue-in-daemenozied-mode.patch 2015-05-27 17:55:08 UTC (rev 239819) @@ -1,45 +0,0 @@ -From 040e689654ef08c63ab93bf0875865398e8d9c91 Mon Sep 17 00:00:00 2001 -From: Tom Gundersen <t...@jklm.no> -Date: Sun, 24 May 2015 15:20:36 +0200 -Subject: [PATCH 3/3] udevd: event - fix event queue in daemenozied mode -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We would enforce that events could only be added to the queue from the -main process, but that brake in daemonized mode. Relax the restriction -to only allow one process to add events to the queue. - -Reported by Mantas MikulÄ—nas. ---- - src/udev/udevd.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/src/udev/udevd.c b/src/udev/udevd.c -index 4a44b03..b33a262 100644 ---- a/src/udev/udevd.c -+++ b/src/udev/udevd.c -@@ -564,7 +564,10 @@ static int event_queue_insert(Manager *manager, struct udev_device *dev) { - assert(manager); - assert(dev); - -- /* only the main process can add events to the queue */ -+ /* only one process can add events to the queue */ -+ if (manager->pid == 0) -+ manager->pid = getpid(); -+ - assert(manager->pid == getpid()); - - event = new0(struct event, 1); -@@ -1300,8 +1303,6 @@ static int manager_new(Manager **ret) { - if (!manager) - return log_oom(); - -- manager->pid = getpid(); -- - manager->fd_ep = -1; - manager->fd_ctrl = -1; - manager->fd_uevent = -1; --- -2.4.1 - Modified: PKGBUILD =================================================================== --- PKGBUILD 2015-05-27 17:31:03 UTC (rev 239818) +++ PKGBUILD 2015-05-27 17:55:08 UTC (rev 239819) @@ -4,42 +4,39 @@ pkgbase=systemd pkgname=('systemd' 'libsystemd' 'systemd-sysvcompat') pkgver=220 -pkgrel=1 +pkgrel=2 arch=('i686' 'x86_64') url="http://www.freedesktop.org/wiki/Software/systemd" makedepends=('acl' 'cryptsetup' 'docbook-xsl' 'gobject-introspection' 'gperf' 'gtk-doc' 'intltool' 'iptables' 'kmod' 'libcap' 'libidn' 'libgcrypt' 'libmicrohttpd' 'libxslt' 'util-linux' 'linux-api-headers' 'lz4' 'pam' - 'python' 'python-lxml' 'quota-tools' 'shadow' 'xz') + 'python' 'python-lxml' 'quota-tools' 'shadow' 'xz' 'gnu-efi-libs' 'git') options=('strip' 'debug') -source=("http://www.freedesktop.org/software/$pkgname/$pkgname-$pkgver.tar.xz" +source=("git://anongit.freedesktop.org/systemd/systemd#tag=v$pkgver" 'initcpio-hook-udev' 'initcpio-install-systemd' - 'initcpio-install-udev' - '0001-udevd-worker-fully-clean-up-unnecessary-fds.patch' - '0002-udevd-worker-modernize-a-bit.patch' - '0003-udevd-event-fix-event-queue-in-daemenozied-mode.patch') -md5sums=('60acd92b04c0f5faa806678abd433014' + 'initcpio-install-udev') +md5sums=('SKIP' '90ea67a7bb237502094914622a39e281' '8516a7bd65157d0115c113118c10c3f3' - 'bde43090d4ac0ef048e3eaee8202a407' - '498cf4130f8ae5d0d8262baf49d79459' - '9549dd7a683be0e6ac798f3caa433458' - 'fee8074218b71bf5e4195d5c15bba61a') + 'bde43090d4ac0ef048e3eaee8202a407') prepare() { - cd "$pkgname-$pkgver" + cd "$pkgname" - rm -f src/journal/audit_type-to-name.h src/udev/keyboard-keys-from-name.gperf + # udevd: event - fix event queue in daemenozied mode + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=040e689654ef + git cherry-pick -n 040e689654ef - patch -Np1 < ../0001-udevd-worker-fully-clean-up-unnecessary-fds.patch - patch -Np1 < ../0002-udevd-worker-modernize-a-bit.patch - patch -Np1 < ../0003-udevd-event-fix-event-queue-in-daemenozied-mode.patch + # udevd: fix SIGCHLD handling in --daemon mode + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=86c3bece38bc + git cherry-pick -n 86c3bece38bc + ./autogen.sh } build() { - cd "$pkgname-$pkgver" + cd "$pkgname" local timeservers=({0..3}.arch.pool.ntp.org) @@ -51,6 +48,7 @@ --enable-gtk-doc \ --enable-lz4 \ --enable-compat-libs \ + --enable-gnuefi \ --disable-audit \ --disable-ima \ --disable-kdbus \ @@ -98,7 +96,7 @@ etc/udev/udev.conf) install="systemd.install" - make -C "$pkgname-$pkgver" DESTDIR="$pkgdir" install + make -C "$pkgname" DESTDIR="$pkgdir" install # don't write units to /etc by default. some of these will be re-enabled on # post_install. @@ -108,7 +106,7 @@ rm -r "$pkgdir/usr/lib/rpm" # add back tmpfiles.d/legacy.conf - install -m644 "systemd-$pkgver/tmpfiles.d/legacy.conf" "$pkgdir/usr/lib/tmpfiles.d" + install -m644 "$pkgname/tmpfiles.d/legacy.conf" "$pkgdir/usr/lib/tmpfiles.d" # Replace dialout/tape/cdrom group in rules with uucp/storage/optical group sed -i 's#GROUP="dialout"#GROUP="uucp"#g;