diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0001-fix-detection-of-missing-loginuid.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0001-fix-detection-of-missing-loginuid.patch deleted file mode 100644 index 2dbbdbb363..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0001-fix-detection-of-missing-loginuid.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index 1a02935..e6f8ce7 100644 ---- a/src/nspawn/nspawn.c -+++ b/src/nspawn/nspawn.c -@@ -1349,7 +1349,7 @@ static int reset_audit_loginuid(void) { - return 0; - - r = read_one_line_file("/proc/self/loginuid", &p); -- if (r == -EEXIST) -+ if (r == -ENOENT) - return 0; - if (r < 0) { - log_error("Failed to read /proc/self/loginuid: %s", strerror(-r)); diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0001-login-fix-pos-array-allocation.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0001-login-fix-pos-array-allocation.patch new file mode 100644 index 0000000000..c044c8d6bd --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0001-login-fix-pos-array-allocation.patch @@ -0,0 +1,54 @@ +From 2d426f2ad06032979fa7a54d11b74be52b8ec047 Mon Sep 17 00:00:00 2001 +From: David Herrmann +Date: Tue, 25 Feb 2014 12:20:25 +0100 +Subject: login: fix pos-array allocation + +GREEDY_REALLOC takes a pointer to the real size, not the array-width as +argument. Therefore, our array is currently way to small to keep the seat +positions. + +Introduce GREEDY_REALLOC0_T() as typed version of GREEDY_REALLOC and store +the array-width instead of array-size. + +(cherry picked from commit a1937e679f76758635d295287398abe526de2522) +--- + src/login/logind-seat.c | 2 +- + src/shared/util.h | 9 +++++++++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c +index 631be5f74098..36ec7ed75740 100644 +--- a/src/login/logind-seat.c ++++ b/src/login/logind-seat.c +@@ -475,7 +475,7 @@ void seat_claim_position(Seat *s, Session *session, unsigned int pos) { + if (seat_has_vts(s)) + pos = session->vtnr; + +- if (!GREEDY_REALLOC0(s->positions, s->position_count, pos + 1)) ++ if (!GREEDY_REALLOC0_T(s->positions, s->position_count, pos + 1)) + return; + + seat_evict_position(s, session); +diff --git a/src/shared/util.h b/src/shared/util.h +index 9913fcefaeba..78b144473922 100644 +--- a/src/shared/util.h ++++ b/src/shared/util.h +@@ -723,6 +723,15 @@ void* greedy_realloc0(void **p, size_t *allocated, size_t need); + #define GREEDY_REALLOC0(array, allocated, need) \ + greedy_realloc0((void**) &(array), &(allocated), sizeof((array)[0]) * (need)) + ++#define GREEDY_REALLOC0_T(array, count, need) \ ++ ({ \ ++ size_t _size = (count) * sizeof((array)[0]); \ ++ void *_ptr = GREEDY_REALLOC0((array), _size, (need)); \ ++ if (_ptr) \ ++ (count) = _size / sizeof((array)[0]); \ ++ _ptr; \ ++ }) ++ + static inline void _reset_errno_(int *saved_errno) { + errno = *saved_errno; + } +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0002-login-set-pos-slot-to-fallback-on-pos-eviction.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0002-login-set-pos-slot-to-fallback-on-pos-eviction.patch new file mode 100644 index 0000000000..237095cc93 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0002-login-set-pos-slot-to-fallback-on-pos-eviction.patch @@ -0,0 +1,54 @@ +From aa6c8bcd17b37634fc7e4d5d59b6b9d93625b4a3 Mon Sep 17 00:00:00 2001 +From: David Herrmann +Date: Tue, 25 Feb 2014 13:08:24 +0100 +Subject: login: set pos-slot to fallback on pos-eviction + +If we evict a session position, we open the position slot for future +sessions. However, there might already be another session on the same +position if both were started on the same VT. This is currently done if +gdm spawns the session on its own Xserver. + +Hence, look for such a session on pos-eviction and claim the new slot +immediately. + +(cherry picked from commit 3e6b205f81e743c7354ccbc69eb45afbdbebe2dc) +--- + src/login/logind-seat.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c +index 36ec7ed75740..96cf08e3b2f1 100644 +--- a/src/login/logind-seat.c ++++ b/src/login/logind-seat.c +@@ -459,6 +459,7 @@ int seat_stop_sessions(Seat *s, bool force) { + } + + void seat_evict_position(Seat *s, Session *session) { ++ Session *iter; + unsigned int pos = session->pos; + + session->pos = 0; +@@ -466,8 +467,19 @@ void seat_evict_position(Seat *s, Session *session) { + if (!pos) + return; + +- if (pos < s->position_count && s->positions[pos] == session) ++ if (pos < s->position_count && s->positions[pos] == session) { + s->positions[pos] = NULL; ++ ++ /* There might be another session claiming the same ++ * position (eg., during gdm->session transition), so lets look ++ * for it and set it on the free slot. */ ++ LIST_FOREACH(sessions_by_seat, iter, s->sessions) { ++ if (iter->pos == pos) { ++ s->positions[pos] = iter; ++ break; ++ } ++ } ++ } + } + + void seat_claim_position(Seat *s, Session *session, unsigned int pos) { +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0003-login-Allow-calling-org.freedesktop.login1.Seat.Swit.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0003-login-Allow-calling-org.freedesktop.login1.Seat.Swit.patch new file mode 100644 index 0000000000..8a5fc33ad7 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0003-login-Allow-calling-org.freedesktop.login1.Seat.Swit.patch @@ -0,0 +1,36 @@ +From 0d0b9805baaed3e4e584916bbff710fec6cb1e8b Mon Sep 17 00:00:00 2001 +From: "Jasper St. Pierre" +Date: Fri, 21 Feb 2014 18:23:17 -0500 +Subject: login: Allow calling org.freedesktop.login1.Seat.SwitchTo + +(cherry picked from commit 9c413373d2112055a0142ef522bf95af9b491b4a) +--- + src/login/org.freedesktop.login1.conf | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/login/org.freedesktop.login1.conf b/src/login/org.freedesktop.login1.conf +index d677f61f1d43..1318328aa0ff 100644 +--- a/src/login/org.freedesktop.login1.conf ++++ b/src/login/org.freedesktop.login1.conf +@@ -141,6 +141,18 @@ + send_member="ActivateSession"/> + + ++ ++ ++ ++ ++ ++ + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0004-fix-typo-in-iDRAC-network-interface-name-irdac-idrac.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0004-fix-typo-in-iDRAC-network-interface-name-irdac-idrac.patch new file mode 100644 index 0000000000..115d7113f6 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0004-fix-typo-in-iDRAC-network-interface-name-irdac-idrac.patch @@ -0,0 +1,23 @@ +From d0550e668858e1af94e2746062931680dc15b555 Mon Sep 17 00:00:00 2001 +From: Tomasz Torcz +Date: Tue, 25 Feb 2014 12:43:55 +0100 +Subject: fix typo in iDRAC network interface name: irdac->idrac + +(cherry picked from commit b3e4387351c835766f96796a20d94971afea7d3b) +--- + hwdb/20-net-ifname.hwdb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/hwdb/20-net-ifname.hwdb b/hwdb/20-net-ifname.hwdb +index 29d263350171..2408dc172fa9 100644 +--- a/hwdb/20-net-ifname.hwdb ++++ b/hwdb/20-net-ifname.hwdb +@@ -2,4 +2,4 @@ + + # Dell iDRAC Virtual USB NIC + usb:v413CpA102* +- ID_NET_NAME_FROM_DATABASE=irdac ++ ID_NET_NAME_FROM_DATABASE=idrac +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0005-Replace-var-run-with-run-in-remaining-places.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0005-Replace-var-run-with-run-in-remaining-places.patch new file mode 100644 index 0000000000..9cc23806b1 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0005-Replace-var-run-with-run-in-remaining-places.patch @@ -0,0 +1,91 @@ +From a980c3fa6bee1b4f0185d9d317c1bbf30ce6b832 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 25 Feb 2014 20:11:04 -0500 +Subject: Replace /var/run with /run in remaining places + +/run was already used almost everywhere, fix the remaining places +for consistency. + +(cherry picked from commit 41a55c46ab8fb4ef6727434227071321fc762cce) +--- + man/daemon.xml | 2 +- + man/runlevel.xml | 2 +- + man/tmpfiles.d.xml | 4 ++-- + src/libsystemd/sd-bus/sd-bus.c | 4 ++-- + src/systemctl/systemctl.c | 4 ++-- + 5 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/man/daemon.xml b/man/daemon.xml +index 88dd082a33e3..fd29ba722d7d 100644 +--- a/man/daemon.xml ++++ b/man/daemon.xml +@@ -149,7 +149,7 @@ + write the daemon PID (as returned by + getpid()) to a + PID file, for example +- /var/run/foobar.pid ++ /run/foobar.pid + (for a hypothetical daemon "foobar") + to ensure that the daemon cannot be + started more than once. This must be +diff --git a/man/runlevel.xml b/man/runlevel.xml +index 976753a737ff..4db06dc87c9a 100644 +--- a/man/runlevel.xml ++++ b/man/runlevel.xml +@@ -124,7 +124,7 @@ + + + +- /var/run/utmp ++ /run/utmp + + The utmp database + runlevel reads the +diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml +index 812129f6132e..0a006d17abcd 100644 +--- a/man/tmpfiles.d.xml ++++ b/man/tmpfiles.d.xml +@@ -441,8 +441,8 @@ r! /tmp/.X[0-9]*-lock + /etc/tmpfiles.d/screen.conf example + screen needs two directories created at boot with specific modes and ownership. + +- d /var/run/screens 1777 root root 10d +-d /var/run/uscreens 0755 root root 10d12h ++ d /run/screens 1777 root root 10d ++d /run/uscreens 0755 root root 10d12h + + + /etc/tmpfiles.d/abrt.conf example +diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c +index 20f540df5802..1318272085ac 100644 +--- a/src/libsystemd/sd-bus/sd-bus.c ++++ b/src/libsystemd/sd-bus/sd-bus.c +@@ -794,8 +794,8 @@ static int parse_container_unix_address(sd_bus *b, const char **p, char **guid) + machine = NULL; + + b->sockaddr.un.sun_family = AF_UNIX; +- strncpy(b->sockaddr.un.sun_path, "/var/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path)); +- b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + sizeof("/var/run/dbus/system_bus_socket") - 1; ++ strncpy(b->sockaddr.un.sun_path, "/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path)); ++ b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + strlen("/run/dbus/system_bus_socket"); + + return 0; + } +diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c +index 34d70792990f..869271628f8a 100644 +--- a/src/systemctl/systemctl.c ++++ b/src/systemctl/systemctl.c +@@ -3758,8 +3758,8 @@ static int show_one( + streq(verb, "status")) { + /* According to LSB: "program not running" */ + /* 0: program is running or service is OK +- * 1: program is dead and /var/run pid file exists +- * 2: program is dead and /var/lock lock file exists ++ * 1: program is dead and /run PID file exists ++ * 2: program is dead and /run/lock lock file exists + * 3: program is not running + * 4: program or service status is unknown + */ +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0006-Revert-back-to-var-run-at-a-couple-of-problems.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0006-Revert-back-to-var-run-at-a-couple-of-problems.patch new file mode 100644 index 0000000000..6ea61c30db --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0006-Revert-back-to-var-run-at-a-couple-of-problems.patch @@ -0,0 +1,62 @@ +From ab64c275efac13ed8fb255e4b2ccf1c287aa0bc6 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 26 Feb 2014 02:47:43 +0100 +Subject: Revert back to /var/run at a couple of problems +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This partially reverts 41a55c46ab8fb4ef6727434227071321fc762cce + +Some specifications we want to stay compatibility actually document +/var/run, not /run, and we should stay compatible with that. In order to +make sure our D-Bus implementation works on any system, regardless if +running systemd or not, we should always use /var/run which is the +only path mandated by the D-Bus spec. + +Similar, glibc hardcodes the utmp location to /var/run, and this is +exposed in _UTMP_PATH in limits.h, hence let's stay in sync with this +public API, too. + +We simply do not support systems where /var/run is not a symlink → /run. +Hence both are equivalent. Staying compatible with upstream +specifications hence weighs more than cleaning up superficial +appearance. + +(cherry picked from commit df1e02046144f41176c32ed011369fd8dba36b76) +--- + man/runlevel.xml | 2 +- + src/libsystemd/sd-bus/sd-bus.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/man/runlevel.xml b/man/runlevel.xml +index 4db06dc87c9a..976753a737ff 100644 +--- a/man/runlevel.xml ++++ b/man/runlevel.xml +@@ -124,7 +124,7 @@ + + + +- /run/utmp ++ /var/run/utmp + + The utmp database + runlevel reads the +diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c +index 1318272085ac..636715f75909 100644 +--- a/src/libsystemd/sd-bus/sd-bus.c ++++ b/src/libsystemd/sd-bus/sd-bus.c +@@ -794,8 +794,8 @@ static int parse_container_unix_address(sd_bus *b, const char **p, char **guid) + machine = NULL; + + b->sockaddr.un.sun_family = AF_UNIX; +- strncpy(b->sockaddr.un.sun_path, "/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path)); +- b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + strlen("/run/dbus/system_bus_socket"); ++ strncpy(b->sockaddr.un.sun_path, "/var/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path)); ++ b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + strlen("/var/run/dbus/system_bus_socket"); + + return 0; + } +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0007-README-document-that-var-run-must-be-a-symlink-run.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0007-README-document-that-var-run-must-be-a-symlink-run.patch new file mode 100644 index 0000000000..ba148995d7 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0007-README-document-that-var-run-must-be-a-symlink-run.patch @@ -0,0 +1,31 @@ +From 10acd244847eb8689e79efbf95475aef8818bb51 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 26 Feb 2014 02:54:37 +0100 +Subject: =?UTF-8?q?README:=20document=20that=20/var/run=20must=20be=20a=20?= + =?UTF-8?q?symlink=20=E2=86=92=20/run?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +(cherry picked from commit 47bc23c18cbc87471dc832534c8565625e4a9d16) +--- + README | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/README b/README +index b9181324e3a6..7a227e7327f0 100644 +--- a/README ++++ b/README +@@ -190,6 +190,9 @@ WARNINGS: + about this, since this kind of file system setup is not really + supported anymore by the basic set of Linux OS components. + ++ systemd requires that the /run mount point exists. systemd also ++ requires that /var/run is a a symlink → /run. ++ + For more information on this issue consult + http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0008-Use-var-run-dbus-system_bus_socket-for-the-D-Bus-soc.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0008-Use-var-run-dbus-system_bus_socket-for-the-D-Bus-soc.patch new file mode 100644 index 0000000000..ce3da4934b --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0008-Use-var-run-dbus-system_bus_socket-for-the-D-Bus-soc.patch @@ -0,0 +1,66 @@ +From d5194bbb174d0b9a87e81d465644624ab455bbf6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 25 Feb 2014 21:26:31 -0500 +Subject: Use /var/run/dbus/system_bus_socket for the D-Bus socket + +(cherry picked from commit 1ae383a8a3ae4824453e297352fda603d2d3fd5e) +--- + man/systemd-bus-proxyd@.service.xml | 2 +- + src/libsystemd/sd-bus/PORTING-DBUS1 | 2 +- + src/shared/def.h | 2 +- + units/systemd-bus-proxyd.socket | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/man/systemd-bus-proxyd@.service.xml b/man/systemd-bus-proxyd@.service.xml +index 75a3c8bc4f86..3a5930d574a0 100644 +--- a/man/systemd-bus-proxyd@.service.xml ++++ b/man/systemd-bus-proxyd@.service.xml +@@ -59,7 +59,7 @@ along with systemd; If not, see . + systemd-bus-proxyd.socket will launch + systemd-bus-proxyd@.service for connections + to the classic D-Bus socket in +- /run/dbus/system_bus_socket. ++ /var/run/dbus/system_bus_socket. + + systemd-bus-proxyd@.service is launched + for an existing D-Bus connection and will use +diff --git a/src/libsystemd/sd-bus/PORTING-DBUS1 b/src/libsystemd/sd-bus/PORTING-DBUS1 +index 90d184b78622..0253a4213785 100644 +--- a/src/libsystemd/sd-bus/PORTING-DBUS1 ++++ b/src/libsystemd/sd-bus/PORTING-DBUS1 +@@ -536,7 +536,7 @@ parameter. + Client libraries should use the following connection string when + connecting to the system bus: + +- kernel:path=/dev/kdbus/0-system/bus;unix:path=/run/dbus/system_bus_socket ++ kernel:path=/dev/kdbus/0-system/bus;unix:path=/var/run/dbus/system_bus_socket + + This will ensure that kdbus is preferred over the legacy AF_UNIX + socket, but compatibility is kept. For the user bus use: +diff --git a/src/shared/def.h b/src/shared/def.h +index 7777756aad45..aa489d80d081 100644 +--- a/src/shared/def.h ++++ b/src/shared/def.h +@@ -61,7 +61,7 @@ + "/usr/lib/kbd/keymaps/\0" + #endif + +-#define UNIX_SYSTEM_BUS_PATH "unix:path=/run/dbus/system_bus_socket" ++#define UNIX_SYSTEM_BUS_PATH "unix:path=/var/run/dbus/system_bus_socket" + #define KERNEL_SYSTEM_BUS_PATH "kernel:path=/dev/kdbus/0-system/bus" + + #ifdef ENABLE_KDBUS +diff --git a/units/systemd-bus-proxyd.socket b/units/systemd-bus-proxyd.socket +index 406e15b5dd4d..6c42d388b4ed 100644 +--- a/units/systemd-bus-proxyd.socket ++++ b/units/systemd-bus-proxyd.socket +@@ -9,5 +9,5 @@ + Description=Legacy D-Bus Protocol Compatibility Socket + + [Socket] +-ListenStream=/run/dbus/system_bus_socket ++ListenStream=/var/run/dbus/system_bus_socket + Accept=yes +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0009-mount-don-t-send-out-PropertiesChanged-message-if-ac.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0009-mount-don-t-send-out-PropertiesChanged-message-if-ac.patch new file mode 100644 index 0000000000..8c488d0af6 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0009-mount-don-t-send-out-PropertiesChanged-message-if-ac.patch @@ -0,0 +1,71 @@ +From f230c64b5ad069b271f163da3142df52eab1202b Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 26 Feb 2014 04:27:50 +0100 +Subject: mount: don't send out PropertiesChanged message if actually nothing + got changed + +(cherry picked from commit ff5f34d08c191c326c41a083745522383ac86cae) +--- + src/core/mount.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/src/core/mount.c b/src/core/mount.c +index a0cea1e7d492..75b133bc66b5 100644 +--- a/src/core/mount.c ++++ b/src/core/mount.c +@@ -1388,7 +1388,7 @@ static int mount_add_one( + _cleanup_free_ char *e = NULL, *w = NULL, *o = NULL, *f = NULL; + bool load_extras = false; + MountParameters *p; +- bool delete; ++ bool delete, changed = false; + Unit *u; + int r; + +@@ -1456,6 +1456,7 @@ static int mount_add_one( + } + + unit_add_to_load_queue(u); ++ changed = true; + } else { + delete = false; + +@@ -1474,6 +1475,7 @@ static int mount_add_one( + /* Load in the extras later on, after we + * finished initialization of the unit */ + load_extras = true; ++ changed = true; + } + } + +@@ -1485,10 +1487,16 @@ static int mount_add_one( + } + + p = &MOUNT(u)->parameters_proc_self_mountinfo; ++ ++ changed = changed || ++ !streq_ptr(p->options, options) || ++ !streq_ptr(p->what, what) || ++ !streq_ptr(p->fstype, fstype); ++ + if (set_flags) { + MOUNT(u)->is_mounted = true; + MOUNT(u)->just_mounted = !MOUNT(u)->from_proc_self_mountinfo; +- MOUNT(u)->just_changed = !streq_ptr(p->options, o); ++ MOUNT(u)->just_changed = changed; + } + + MOUNT(u)->from_proc_self_mountinfo = true; +@@ -1511,7 +1519,8 @@ static int mount_add_one( + goto fail; + } + +- unit_add_to_dbus_queue(u); ++ if (changed) ++ unit_add_to_dbus_queue(u); + + return 0; + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0010-mount-don-t-fire-PropertiesChanged-signals-for-mount.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0010-mount-don-t-fire-PropertiesChanged-signals-for-mount.patch new file mode 100644 index 0000000000..1d956e720f --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0010-mount-don-t-fire-PropertiesChanged-signals-for-mount.patch @@ -0,0 +1,52 @@ +From 3a144cfb90e6c0c6586a976138fc8e472b90bbaf Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 26 Feb 2014 04:28:37 +0100 +Subject: mount: don't fire PropertiesChanged signals for mounts that are + stopped + +(cherry picked from commit aef831369cd2a7a1bd4a58dd96ff8628ed6a85f9) +--- + src/core/mount.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/src/core/mount.c b/src/core/mount.c +index 75b133bc66b5..68b2e83735bd 100644 +--- a/src/core/mount.c ++++ b/src/core/mount.c +@@ -1676,20 +1676,20 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents, + Mount *mount = MOUNT(u); + + if (!mount->is_mounted) { +- /* This has just been unmounted. */ + + mount->from_proc_self_mountinfo = false; + + switch (mount->state) { + + case MOUNT_MOUNTED: ++ /* This has just been unmounted by ++ * somebody else, follow the state ++ * change. */ + mount_enter_dead(mount, MOUNT_SUCCESS); + break; + + default: +- mount_set_state(mount, mount->state); + break; +- + } + + } else if (mount->just_mounted || mount->just_changed) { +@@ -1700,6 +1700,9 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents, + + case MOUNT_DEAD: + case MOUNT_FAILED: ++ /* This has just been mounted by ++ * somebody else, follow the state ++ * change. */ + mount_enter_mounted(mount, MOUNT_SUCCESS); + break; + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0011-logs-show-fix-corrupt-output-with-empty-messages.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0011-logs-show-fix-corrupt-output-with-empty-messages.patch new file mode 100644 index 0000000000..474b25a1e8 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0011-logs-show-fix-corrupt-output-with-empty-messages.patch @@ -0,0 +1,43 @@ +From 494bf9d6d22406676c63822cbf941214fed3111c Mon Sep 17 00:00:00 2001 +From: Uoti Urpala +Date: Thu, 20 Feb 2014 03:00:09 +0200 +Subject: logs-show: fix corrupt output with empty messages + +If a message had zero length, journalctl would print no newline, and +two output lines would be concatenated. Fix. The problem was +introduced in commit 31f7bf199452 ("logs-show: print multiline +messages"). Affected short and verbose output modes. + +Before fix: + +Feb 09 21:16:17 glyph dhclient[1323]: Feb 09 21:16:17 glyph NetworkManager[788]: (enp4s2): DHCPv4 state changed nbi -> preinit + +after: + +Feb 09 21:16:17 glyph dhclient[1323]: +Feb 09 21:16:17 glyph NetworkManager[788]: (enp4s2): DHCPv4 state changed nbi -> preinit + +(cherry picked from commit 47d80904a1f72d559962cc5ad32fffd46672a34a) +--- + src/shared/logs-show.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c +index 61c3652bd5ae..12d4a1caecae 100644 +--- a/src/shared/logs-show.c ++++ b/src/shared/logs-show.c +@@ -124,6 +124,11 @@ static bool print_multiline(FILE *f, unsigned prefix, unsigned n_columns, Output + } + } + ++ /* A special case: make sure that we print a newline when ++ the message is empty. */ ++ if (message_len == 0) ++ fputs("\n", f); ++ + for (pos = message; + pos < message + message_len; + pos = end + 1, line++) { +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0012-journalctl-refuse-extra-arguments-with-verify-and-si.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0012-journalctl-refuse-extra-arguments-with-verify-and-si.patch new file mode 100644 index 0000000000..342790c02b --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0012-journalctl-refuse-extra-arguments-with-verify-and-si.patch @@ -0,0 +1,32 @@ +From 0c4b94ed59075c38da2aa30d162fc9f963d419aa Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Wed, 26 Feb 2014 23:01:43 -0500 +Subject: journalctl: refuse extra arguments with --verify and similar + +Positional arguments only make sense with the default action. +For other actions, complain instead of ignoring them silently. + +(cherry picked from commit 0b6b7c2004317da48e5bbd3078c5662d8f0061b6) +--- + src/journal/journalctl.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c +index a328ba11b0d3..0619b256b959 100644 +--- a/src/journal/journalctl.c ++++ b/src/journal/journalctl.c +@@ -658,6 +658,11 @@ static int parse_argv(int argc, char *argv[]) { + return -EINVAL; + } + ++ if (arg_action != ACTION_SHOW && optind < argc) { ++ log_error("Extraneous arguments starting with '%s'", argv[optind]); ++ return -EINVAL; ++ } ++ + return 1; + } + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0013-cdrom_id-use-the-old-MMC-fallback.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0013-cdrom_id-use-the-old-MMC-fallback.patch new file mode 100644 index 0000000000..93317b8a1f --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0013-cdrom_id-use-the-old-MMC-fallback.patch @@ -0,0 +1,55 @@ +From 2388edd10d9aab9c0f3817e73addd3dc0bc870bf Mon Sep 17 00:00:00 2001 +From: Lukas Nykryn +Date: Thu, 27 Feb 2014 11:06:37 +0100 +Subject: cdrom_id: use the old MMC fallback + +https://bugzilla.redhat.com/show_bug.cgi?id=1038015 +The problem seems to be that the your virtual DVD is emulating a really +old DVD device, and doing it kind of strangely. + +> dracut:# /lib/udev/cdrom_id --debug /dev/sr0 +> probing: '/dev/sr0' +> INQUIRY: [IMM ][Virtual CD/DVD ][0316] +> GET CONFIGURATION failed with SK=5h/ASC=24h/ACQ=00h + +So your virtual drive rejects the GET CONFIGURATION command as illegal. + +Other pre-MMC2 drives that don't accept this command usually return the +error +SK=5h,ASC=20h (invalid/unsupported command code), in which case cdrom_id +tries an older method, and then ID_CDROM_MEDIA_TRACK_COUNT_DATA gets set +and all the /dev/disk/by-label (etc) links get set up. + +The virtual drive returns the error SK=5h,ASC=24h (invalid field in +Command Descriptor Block), which cdrom_id doesn't handle, so it gives up +and the links never get made. + +The ideal solution would be to make the IMM to emulate a device that's +less than 15 years old, but I'm not going to hold my breath waiting for +that. + +So probably cdrom_id should also use the old MMC fallback when the error +is SK=5h,ASC=24h, and then all of this would work as expected. + +Suggested-by:Luca Miccini +(cherry picked from commit a14f14976094650e17d39f3a7d15a1c68c93c333) +--- + src/udev/cdrom_id/cdrom_id.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c +index 93467c2d35b0..33b2bc33317c 100644 +--- a/src/udev/cdrom_id/cdrom_id.c ++++ b/src/udev/cdrom_id/cdrom_id.c +@@ -556,7 +556,7 @@ static int cd_profiles(struct udev *udev, int fd) + if ((err != 0)) { + info_scsi_cmd_err(udev, "GET CONFIGURATION", err); + /* handle pre-MMC2 drives which do not support GET CONFIGURATION */ +- if (SK(err) == 0x5 && ASC(err) == 0x20) { ++ if (SK(err) == 0x5 && (ASC(err) == 0x20 || ASC(err) == 0x24)) { + log_debug("drive is pre-MMC2 and does not support 46h get configuration command"); + log_debug("trying to work around the problem"); + ret = cd_profiles_old_mmc(udev, fd); +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0014-udev-rules-setup-tty-permissions-and-group-for-sclp_.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0014-udev-rules-setup-tty-permissions-and-group-for-sclp_.patch new file mode 100644 index 0000000000..ed6809aec6 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0014-udev-rules-setup-tty-permissions-and-group-for-sclp_.patch @@ -0,0 +1,28 @@ +From 107e2ed29711c813a34a07e4ce626f98c3607534 Mon Sep 17 00:00:00 2001 +From: Lukas Nykryn +Date: Thu, 27 Feb 2014 11:19:09 +0100 +Subject: udev/rules: setup tty permissions and group for sclp_line, ttysclp + and 3270/tty + +(cherry picked from commit c594cccee264cfd98f183ae6ec289b11e70f2d6c) +--- + rules/50-udev-default.rules | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules +index 679dfdfcf417..0bccf67b7b6b 100644 +--- a/rules/50-udev-default.rules ++++ b/rules/50-udev-default.rules +@@ -15,6 +15,9 @@ ACTION!="add", GOTO="default_permissions_end" + SUBSYSTEM=="tty", KERNEL=="ptmx", GROUP="tty", MODE="0666" + SUBSYSTEM=="tty", KERNEL=="tty", GROUP="tty", MODE="0666" + SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620" ++SUBSYSTEM=="tty", KERNEL=="sclp_line[0-9]*", GROUP="tty", MODE="0620" ++SUBSYSTEM=="tty", KERNEL=="ttysclp[0-9]*", GROUP="tty", MODE="0620" ++SUBSYSTEM=="tty", KERNEL=="3270/tty[0-9]*", GROUP="tty", MODE="0620" + SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty" + KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout" + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0015-architecture-Add-tilegx.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0015-architecture-Add-tilegx.patch new file mode 100644 index 0000000000..b89e961fa3 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0015-architecture-Add-tilegx.patch @@ -0,0 +1,58 @@ +From ff02c36bfc811fc7ecbcaebdbc3bc4bebb5f19ab Mon Sep 17 00:00:00 2001 +From: Henrik Grindal Bakken +Date: Thu, 27 Feb 2014 21:19:13 +0100 +Subject: architecture: Add tilegx + +Add Tilera's TILE-GX processor family support. + +(cherry picked from commit 46eea341c36f0caf0bdd5b2274a1ef7cb4e83e97) +--- + src/shared/architecture.c | 3 +++ + src/shared/architecture.h | 3 +++ + 2 files changed, 6 insertions(+) + +diff --git a/src/shared/architecture.c b/src/shared/architecture.c +index ceba492f2b44..fcdb3d54b8d0 100644 +--- a/src/shared/architecture.c ++++ b/src/shared/architecture.c +@@ -112,6 +112,8 @@ Architecture uname_architecture(void) { + { "sh", ARCHITECTURE_SH }, + #elif defined(__m68k__) + { "m68k", ARCHITECTURE_M68K }, ++#elif defined(__tilegx__) ++ { "tilegx", ARCHITECTURE_TILEGX }, + #else + #error "Please register your architecture here!" + #endif +@@ -158,6 +160,7 @@ static const char *const architecture_table[_ARCHITECTURE_MAX] = { + [ARCHITECTURE_SH] = "sh", + [ARCHITECTURE_SH64] = "sh64", + [ARCHITECTURE_M68K] = "m68k", ++ [ARCHITECTURE_TILEGX] = "tilegx", + }; + + DEFINE_STRING_TABLE_LOOKUP(architecture, Architecture); +diff --git a/src/shared/architecture.h b/src/shared/architecture.h +index 3183645fecec..e589a91343bf 100644 +--- a/src/shared/architecture.h ++++ b/src/shared/architecture.h +@@ -47,6 +47,7 @@ typedef enum Architecture { + ARCHITECTURE_SH, + ARCHITECTURE_SH64, + ARCHITECTURE_M68K, ++ ARCHITECTURE_TILEGX, + _ARCHITECTURE_MAX, + _ARCHITECTURE_INVALID = -1 + } Architecture; +@@ -107,6 +108,8 @@ Architecture uname_architecture(void); + # define native_architecture() ARCHITECTURE_SH + #elif defined(__m68k__) + # define native_architecture() ARCHITECTURE_M68K ++#elif defined(__tilegx__) ++# define native_architecture() ARCHITECTURE_TILEGX + #else + #error "Please register your architecture here!" + #endif +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0016-nspawn-fix-detection-of-missing-proc-self-loginuid.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0016-nspawn-fix-detection-of-missing-proc-self-loginuid.patch new file mode 100644 index 0000000000..8bcdba8c6a --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0016-nspawn-fix-detection-of-missing-proc-self-loginuid.patch @@ -0,0 +1,33 @@ +From 0b37b2b7a3fe8e8f96f368848ff46db325a59e70 Mon Sep 17 00:00:00 2001 +From: Tero Roponen +Date: Tue, 25 Feb 2014 17:19:35 +0200 +Subject: nspawn: fix detection of missing /proc/self/loginuid + +Running 'systemd-nspawn -D /srv/Fedora/' gave me this error: + Failed to read /proc/self/loginuid: No such file or directory + + Container Fedora failed with error code 1. + +This patch fixes the problem. + +(cherry picked from commit 13e8ceb84e56907d73b6b07418deb37faaf0e66d) +--- + src/nspawn/nspawn.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c +index de74a431700a..84b727646c7a 100644 +--- a/src/nspawn/nspawn.c ++++ b/src/nspawn/nspawn.c +@@ -1341,7 +1341,7 @@ static int reset_audit_loginuid(void) { + return 0; + + r = read_one_line_file("/proc/self/loginuid", &p); +- if (r == -EEXIST) ++ if (r == -ENOENT) + return 0; + if (r < 0) { + log_error("Failed to read /proc/self/loginuid: %s", strerror(-r)); +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0017-bash-add-completion-for-systemd-nspawn.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0017-bash-add-completion-for-systemd-nspawn.patch new file mode 100644 index 0000000000..0669c0c6f2 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0017-bash-add-completion-for-systemd-nspawn.patch @@ -0,0 +1,145 @@ +From 3300150b370b2a58522d55d7ff17632e5dd58af8 Mon Sep 17 00:00:00 2001 +From: Thomas Andersen +Date: Sat, 1 Mar 2014 03:27:49 +0100 +Subject: bash: add completion for systemd-nspawn + +(cherry picked from commit 0d6883b6a870b66c8c70e43695d22de96aab68e7) +--- + Makefile.am | 1 + + shell-completion/bash/systemd-nspawn | 112 +++++++++++++++++++++++++++++++++++ + 2 files changed, 113 insertions(+) + create mode 100644 shell-completion/bash/systemd-nspawn + +diff --git a/Makefile.am b/Makefile.am +index 529b52588df2..8e6c39276371 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -353,6 +353,7 @@ dist_bashcompletion_DATA = \ + shell-completion/bash/systemctl \ + shell-completion/bash/systemd-analyze \ + shell-completion/bash/systemd-delta \ ++ shell-completion/bash/systemd-nspawn \ + shell-completion/bash/systemd-run \ + shell-completion/bash/udevadm \ + shell-completion/bash/kernel-install +diff --git a/shell-completion/bash/systemd-nspawn b/shell-completion/bash/systemd-nspawn +new file mode 100644 +index 000000000000..5b2ac8212e12 +--- /dev/null ++++ b/shell-completion/bash/systemd-nspawn +@@ -0,0 +1,112 @@ ++# systemd-nspawn(1) completion -*- shell-script -*- ++# ++# This file is part of systemd. ++# ++# Copyright 2014 Thomas H.P. Andersen ++# ++# systemd is free software; you can redistribute it and/or modify it ++# under the terms of the GNU Lesser General Public License as published by ++# the Free Software Foundation; either version 2.1 of the License, or ++# (at your option) any later version. ++# ++# systemd is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public License ++# along with systemd; If not, see . ++ ++__contains_word() { ++ local w word=$1; shift ++ for w in "$@"; do ++ [[ $w = "$word" ]] && return ++ done ++} ++ ++__get_users() { ++ local a b ++ loginctl list-users --no-legend --no-pager | { while read a b; do echo " $b"; done; }; ++} ++ ++__get_slices() { ++ local a b ++ systemctl list-units -t slice --no-legend --no-pager | { while read a b; do echo " $a"; done; }; ++} ++ ++_systemd_nspawn() { ++ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} ++ local i verb comps ++ ++ local -A OPTS=( ++ [STANDALONE]='-h --help --version --private-network -b --boot --read-only -q --quiet --share-system --keep-unit --network-veth -j' ++ [ARG]='-D --directory -u --user --uuid --capability --drop-capability --link-journal --bind --bind-ro -M --machine ++ -S --slice --setenv -Z --selinux-context -L --selinux-apifs-context --register --network-interface --network-bridge ++ --personality' ++ ) ++ ++ _init_completion || return ++ ++ if __contains_word "$prev" ${OPTS[ARG]}; then ++ case $prev in ++ --directory|-D) ++ comps=$(compgen -A directory -- "$cur" ) ++ ;; ++ --user|-u) ++ comps=$( __get_users ) ++ ;; ++ --uuid) ++ comps='' ++ ;; ++ --capability) ++ comps='CAP_BLOCK_SUSPEND CAP_IPC_LOCK CAP_MAC_ADMIN CAP_MAC_OVERRIDE CAP_SYS_MODULE CAP_SYS_PACCT CAP_SYS_RAWIO ++ CAP_SYS_TIME CAP_SYSLOG CAP_WAKE_ALARM CAP_NET_ADMIN' ++ ;; ++ --drop-capability) ++ comps='CAP_AUDIT_CONTROL CAP_AUDIT_WRITE CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_FSETID ++ CAP_IPC_OWNER CAP_KILL CAP_LEASE CAP_LINUX_IMMUTABLE CAP_MKNOD CAP_NET_ADMIN CAP_NET_BIND_SERVICE ++ CAP_NET_BROADCAST CAP_NET_RAW CAP_SETFCAP CAP_SETGID CAP_SETPCAP CAP_SETUID CAP_SYS_ADMIN CAP_SYS_BOOT ++ CAP_SYS_CHROOT CAP_SYS_NICE CAP_SYS_PTRACE CAP_SYS_RESOURCE CAP_SYS_TTY_CONFIG' ++ ;; ++ --link-journal) ++ comps='no auto guest host' ++ ;; ++ --bind|--bind-ro) ++ comps='' ++ ;; ++ --machine|-M) ++ comps='' ++ ;; ++ --slice|-S) ++ comps=$( __get_slices ) ++ ;; ++ --setenv) ++ comps='' ++ ;; ++ --selinux-context|-Z) ++ comps='' ++ ;; ++ --selinux-apifs-context|-L) ++ comps='' ++ ;; ++ --register) ++ comps='yes no' ++ ;; ++ --network-interface) ++ comps='' ++ ;; ++ --network-bridge) ++ comps='' ++ ;; ++ --personality) ++ comps='x86 x86-64' ++ ;; ++ esac ++ COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) ++ return 0 ++ fi ++ ++ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) ++} ++ ++complete -F _systemd_nspawn systemd-nspawn +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0018-add-bash-completion-for-systemd-cgls.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0018-add-bash-completion-for-systemd-cgls.patch new file mode 100644 index 0000000000..421f59835c --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0018-add-bash-completion-for-systemd-cgls.patch @@ -0,0 +1,89 @@ +From 8523c2a84f3d8a8b163a17aad5c55cb0234ebff2 Mon Sep 17 00:00:00 2001 +From: Thomas Hindoe Paaboel Andersen +Date: Sat, 1 Mar 2014 23:08:38 +0100 +Subject: add bash completion for systemd-cgls + +(cherry picked from commit abdab4f602745952030a37b1521cd0374d51d3ea) +--- + Makefile.am | 1 + + shell-completion/bash/systemd-cgls | 56 ++++++++++++++++++++++++++++++++++++++ + 2 files changed, 57 insertions(+) + create mode 100644 shell-completion/bash/systemd-cgls + +diff --git a/Makefile.am b/Makefile.am +index 8e6c39276371..0b83823819fd 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -352,6 +352,7 @@ dist_bashcompletion_DATA = \ + shell-completion/bash/journalctl \ + shell-completion/bash/systemctl \ + shell-completion/bash/systemd-analyze \ ++ shell-completion/bash/systemd-cgls \ + shell-completion/bash/systemd-delta \ + shell-completion/bash/systemd-nspawn \ + shell-completion/bash/systemd-run \ +diff --git a/shell-completion/bash/systemd-cgls b/shell-completion/bash/systemd-cgls +new file mode 100644 +index 000000000000..0570438660bf +--- /dev/null ++++ b/shell-completion/bash/systemd-cgls +@@ -0,0 +1,56 @@ ++# systemd-cgls(1) completion -*- shell-script -*- ++# ++# This file is part of systemd. ++# ++# Copyright 2014 Thomas H.P. Andersen ++# ++# systemd is free software; you can redistribute it and/or modify it ++# under the terms of the GNU Lesser General Public License as published by ++# the Free Software Foundation; either version 2.1 of the License, or ++# (at your option) any later version. ++# ++# systemd is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public License ++# along with systemd; If not, see . ++ ++__contains_word() { ++ local w word=$1; shift ++ for w in "$@"; do ++ [[ $w = "$word" ]] && return ++ done ++} ++ ++__get_machines() { ++ local a b ++ machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; ++} ++ ++_systemd_cgls() { ++ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} ++ local i verb comps ++ ++ local -A OPTS=( ++ [STANDALONE]='-h --help --version --all -l --full -k --no-pager' ++ [ARG]='-M --machine' ++ ) ++ ++ _init_completion || return ++ ++ if __contains_word "$prev" ${OPTS[ARG]}; then ++ case $prev in ++ --machine|-M) ++ comps=$( __get_machines ) ++ ;; ++ esac ++ COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) ++ return 0 ++ fi ++ ++ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) ++} ++ ++complete -F _systemd_cgls systemd-cgls +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0019-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0019-hwdb-Update-database-of-Bluetooth-company-identifier.patch new file mode 100644 index 0000000000..92740e7a19 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0019-hwdb-Update-database-of-Bluetooth-company-identifier.patch @@ -0,0 +1,30 @@ +From a63a8b12c107215fa8b84ca792e84bc2789e6163 Mon Sep 17 00:00:00 2001 +From: Marcel Holtmann +Date: Sun, 2 Mar 2014 10:02:10 -0800 +Subject: hwdb: Update database of Bluetooth company identifiers + +(cherry picked from commit e525326bd07ebf3cabcfd730bc479166723f2d44) +--- + hwdb/20-bluetooth-vendor-product.hwdb | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb +index db3bc2424028..0335a71899f6 100644 +--- a/hwdb/20-bluetooth-vendor-product.hwdb ++++ b/hwdb/20-bluetooth-vendor-product.hwdb +@@ -902,3 +902,12 @@ bluetooth:v0129* + + bluetooth:v012A* + ID_VENDOR_FROM_DATABASE=Changzhou Yongse Infotech Co., Ltd ++ ++bluetooth:v012B* ++ ID_VENDOR_FROM_DATABASE=SportIQ ++ ++bluetooth:v012C* ++ ID_VENDOR_FROM_DATABASE=TEMEC Instruments B.V. ++ ++bluetooth:v012D* ++ ID_VENDOR_FROM_DATABASE=Sony Corporation +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0020-Allow-fractional-parts-in-disk-sizes.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0020-Allow-fractional-parts-in-disk-sizes.patch new file mode 100644 index 0000000000..a4b9e93b96 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0020-Allow-fractional-parts-in-disk-sizes.patch @@ -0,0 +1,159 @@ +From 4cae8946d581a6ecf0b26e154bf9c00e390024b2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sun, 2 Mar 2014 00:05:16 -0500 +Subject: Allow fractional parts in disk sizes + +It seems natural to be able to say SystemMaxUsage=1.5G. + +https://bugzilla.redhat.com/show_bug.cgi?id=1047568 +(cherry picked from commit 9480794b277b5ce33e467578ed669996df576bb9) +--- + src/shared/util.c | 24 ++++++++++++++++++++++-- + src/test/test-util.c | 42 +++++++++++++++++++++++++++++++++++++----- + 2 files changed, 59 insertions(+), 7 deletions(-) + +diff --git a/src/shared/util.c b/src/shared/util.c +index 5cb598c4c561..3164515a9e59 100644 +--- a/src/shared/util.c ++++ b/src/shared/util.c +@@ -2198,6 +2198,8 @@ int parse_size(const char *t, off_t base, off_t *size) { + p = t; + do { + long long l; ++ unsigned long long l2; ++ double frac = 0; + char *e; + unsigned i; + +@@ -2213,14 +2215,32 @@ int parse_size(const char *t, off_t base, off_t *size) { + if (e == p) + return -EINVAL; + ++ if (*e == '.') { ++ e++; ++ if (*e >= '0' && *e <= '9') { ++ char *e2; ++ ++ /* strotoull itself would accept space/+/- */ ++ l2 = strtoull(e, &e2, 10); ++ ++ if (errno == ERANGE) ++ return -errno; ++ ++ /* Ignore failure. E.g. 10.M is valid */ ++ frac = l2; ++ for (; e < e2; e++) ++ frac /= 10; ++ } ++ } ++ + e += strspn(e, WHITESPACE); + + for (i = 0; i < n_entries; i++) + if (startswith(e, table[i].suffix)) { + unsigned long long tmp; +- if ((unsigned long long) l > ULLONG_MAX / table[i].factor) ++ if ((unsigned long long) l + (frac > 0) > ULLONG_MAX / table[i].factor) + return -ERANGE; +- tmp = l * table[i].factor; ++ tmp = l * table[i].factor + (unsigned long long) (frac * table[i].factor); + if (tmp > ULLONG_MAX - r) + return -ERANGE; + +diff --git a/src/test/test-util.c b/src/test/test-util.c +index b718206e8614..74f83a2629e8 100644 +--- a/src/test/test-util.c ++++ b/src/test/test-util.c +@@ -30,6 +30,7 @@ + #include "strv.h" + #include "def.h" + #include "fileio.h" ++#include "conf-parser.h" + + static void test_streq_ptr(void) { + assert_se(streq_ptr(NULL, NULL)); +@@ -441,17 +442,32 @@ static void test_parse_size(void) { + assert_se(parse_size("111", 1024, &bytes) == 0); + assert_se(bytes == 111); + ++ assert_se(parse_size("111.4", 1024, &bytes) == 0); ++ assert_se(bytes == 111); ++ + assert_se(parse_size(" 112 B", 1024, &bytes) == 0); + assert_se(bytes == 112); + +- assert_se(parse_size("3 K", 1024, &bytes) == 0); ++ assert_se(parse_size(" 112.6 B", 1024, &bytes) == 0); ++ assert_se(bytes == 112); ++ ++ assert_se(parse_size("3.5 K", 1024, &bytes) == 0); ++ assert_se(bytes == 3*1024 + 512); ++ ++ assert_se(parse_size("3. K", 1024, &bytes) == 0); ++ assert_se(bytes == 3*1024); ++ ++ assert_se(parse_size("3.0 K", 1024, &bytes) == 0); + assert_se(bytes == 3*1024); + +- assert_se(parse_size(" 4 M 11K", 1024, &bytes) == 0); +- assert_se(bytes == 4*1024*1024 + 11 * 1024); ++ assert_se(parse_size("3. 0 K", 1024, &bytes) == 0); ++ assert_se(bytes == 3); + +- assert_se(parse_size("3B3G", 1024, &bytes) == 0); +- assert_se(bytes == 3ULL*1024*1024*1024 + 3); ++ assert_se(parse_size(" 4 M 11.5K", 1024, &bytes) == 0); ++ assert_se(bytes == 4*1024*1024 + 11 * 1024 + 512); ++ ++ assert_se(parse_size("3B3.5G", 1024, &bytes) == 0); ++ assert_se(bytes == 3ULL*1024*1024*1024 + 512*1024*1024 + 3); + + assert_se(parse_size("3B3G4T", 1024, &bytes) == 0); + assert_se(bytes == (4ULL*1024 + 3)*1024*1024*1024 + 3); +@@ -464,6 +480,10 @@ static void test_parse_size(void) { + + assert_se(parse_size("12X", 1024, &bytes) == -EINVAL); + ++ assert_se(parse_size("12.5X", 1024, &bytes) == -EINVAL); ++ ++ assert_se(parse_size("12.5e3", 1024, &bytes) == -EINVAL); ++ + assert_se(parse_size("1024E", 1024, &bytes) == -ERANGE); + assert_se(parse_size("-1", 1024, &bytes) == -ERANGE); + assert_se(parse_size("-1024E", 1024, &bytes) == -ERANGE); +@@ -473,6 +493,14 @@ static void test_parse_size(void) { + assert_se(parse_size("-10B 20K", 1024, &bytes) == -ERANGE); + } + ++static void test_config_parse_iec_off(void) { ++ off_t offset = 0; ++ assert_se(config_parse_iec_off(NULL, "/this/file", 11, "Section", 22, "Size", 0, "4M", &offset, NULL) == 0); ++ assert_se(offset == 4 * 1024 * 1024); ++ ++ assert_se(config_parse_iec_off(NULL, "/this/file", 11, "Section", 22, "Size", 0, "4.5M", &offset, NULL) == 0); ++} ++ + static void test_strextend(void) { + _cleanup_free_ char *str = strdup("0123"); + strextend(&str, "456", "78", "9", NULL); +@@ -589,6 +617,9 @@ static void test_writing_tmpfile(void) { + } + + int main(int argc, char *argv[]) { ++ log_parse_environment(); ++ log_open(); ++ + test_streq_ptr(); + test_first_word(); + test_close_many(); +@@ -618,6 +649,7 @@ int main(int argc, char *argv[]) { + test_get_process_comm(); + test_protect_errno(); + test_parse_size(); ++ test_config_parse_iec_off(); + test_strextend(); + test_strrep(); + test_split_pair(); +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0021-add-bash-completion-for-systemd-cgtop.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0021-add-bash-completion-for-systemd-cgtop.patch new file mode 100644 index 0000000000..07802267b5 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0021-add-bash-completion-for-systemd-cgtop.patch @@ -0,0 +1,73 @@ +From 6b4293393eb0a15e4f73ba9f08554178ccc4c222 Mon Sep 17 00:00:00 2001 +From: Thomas Hindoe Paaboel Andersen +Date: Sun, 2 Mar 2014 22:58:18 +0100 +Subject: add bash completion for systemd-cgtop + +(cherry picked from commit d9256bac4da4241cb5d97960c899390839f2c6e5) +--- + Makefile.am | 1 + + shell-completion/bash/systemd-cgtop | 40 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 41 insertions(+) + create mode 100644 shell-completion/bash/systemd-cgtop + +diff --git a/Makefile.am b/Makefile.am +index 0b83823819fd..9cabd1dfc4ee 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -353,6 +353,7 @@ dist_bashcompletion_DATA = \ + shell-completion/bash/systemctl \ + shell-completion/bash/systemd-analyze \ + shell-completion/bash/systemd-cgls \ ++ shell-completion/bash/systemd-cgtop \ + shell-completion/bash/systemd-delta \ + shell-completion/bash/systemd-nspawn \ + shell-completion/bash/systemd-run \ +diff --git a/shell-completion/bash/systemd-cgtop b/shell-completion/bash/systemd-cgtop +new file mode 100644 +index 000000000000..d7ea42d9108a +--- /dev/null ++++ b/shell-completion/bash/systemd-cgtop +@@ -0,0 +1,40 @@ ++# systemd-cgtop(1) completion -*- shell-script -*- ++# ++# This file is part of systemd. ++# ++# Copyright 2014 Thomas H.P. Andersen ++# ++# systemd is free software; you can redistribute it and/or modify it ++# under the terms of the GNU Lesser General Public License as published by ++# the Free Software Foundation; either version 2.1 of the License, or ++# (at your option) any later version. ++# ++# systemd is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public License ++# along with systemd; If not, see . ++ ++__contains_word() { ++ local w word=$1; shift ++ for w in "$@"; do ++ [[ $w = "$word" ]] && return ++ done ++} ++ ++_systemd_cgtop() { ++ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} ++ local comps ++ ++ local -A OPTS=( ++ [STANDALONE]='-h --help --version -p -t -c -m -i -b --batch -n --iterations -d --delay' ++ ) ++ ++ _init_completion || return ++ ++ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) ++} ++ ++complete -F _systemd_cgtop systemd-cgtop +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0022-Fix-systemd-stdio-bridge-symlink.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0022-Fix-systemd-stdio-bridge-symlink.patch new file mode 100644 index 0000000000..de6a3d904f --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0022-Fix-systemd-stdio-bridge-symlink.patch @@ -0,0 +1,30 @@ +From 877c2fccf76afdd7364040f9b859c8d84226b9cc Mon Sep 17 00:00:00 2001 +From: Mike Gilbert +Date: Sun, 2 Mar 2014 23:37:39 -0500 +Subject: Fix systemd-stdio-bridge symlink + +The symlink is created in bindir (/usr/bin), and points to a binary +which lives in rootlibexecdir (/lib/systemd or /usr/lib/systemd). A +relative symlink does not work here. + +(cherry picked from commit 8100c1a8f58b2fb5d97e156420a7e16562e93bc4) +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 9cabd1dfc4ee..bc5e719a5c90 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1955,7 +1955,7 @@ systemd_bus_proxyd_LDADD = \ + + bus-proxyd-install-hook: + $(AM_V_at)$(MKDIR_P) $(DESTDIR)$(bindir) +- $(AM_V_LN)$(LN_S) -f ../lib/systemd/systemd-bus-proxyd $(DESTDIR)$(bindir)/systemd-stdio-bridge ++ $(AM_V_LN)$(LN_S) -f $(rootlibexecdir)/systemd-bus-proxyd $(DESTDIR)$(bindir)/systemd-stdio-bridge + + bus-proxyd-uninstall-hook: + rm -f $(DESTDIR)$(bindir)/systemd-stdio-bridge +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0023-execute-free-directory-path-if-we-fail-to-remove-it-.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0023-execute-free-directory-path-if-we-fail-to-remove-it-.patch new file mode 100644 index 0000000000..89462f64fd --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0023-execute-free-directory-path-if-we-fail-to-remove-it-.patch @@ -0,0 +1,55 @@ +From f0eb7735d8cdf44ebf7064613add363ddda329b0 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Mon, 3 Mar 2014 17:11:39 +0100 +Subject: execute: free directory path if we fail to remove it because we + cannot allocate a thread + +(cherry picked from commit 98b47d54ce946ad3524f84eb38d2413498a333dc) +--- + src/core/execute.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +diff --git a/src/core/execute.c b/src/core/execute.c +index a328fc265f71..bb06507ad9f6 100644 +--- a/src/core/execute.c ++++ b/src/core/execute.c +@@ -2579,6 +2579,8 @@ static void *remove_tmpdir_thread(void *p) { + } + + void exec_runtime_destroy(ExecRuntime *rt) { ++ int r; ++ + if (!rt) + return; + +@@ -2588,13 +2590,25 @@ void exec_runtime_destroy(ExecRuntime *rt) { + + if (rt->tmp_dir) { + log_debug("Spawning thread to nuke %s", rt->tmp_dir); +- asynchronous_job(remove_tmpdir_thread, rt->tmp_dir); ++ ++ r = asynchronous_job(remove_tmpdir_thread, rt->tmp_dir); ++ if (r < 0) { ++ log_warning("Failed to nuke %s: %s", rt->tmp_dir, strerror(-r)); ++ free(rt->tmp_dir); ++ } ++ + rt->tmp_dir = NULL; + } + + if (rt->var_tmp_dir) { + log_debug("Spawning thread to nuke %s", rt->var_tmp_dir); +- asynchronous_job(remove_tmpdir_thread, rt->var_tmp_dir); ++ ++ r = asynchronous_job(remove_tmpdir_thread, rt->var_tmp_dir); ++ if (r < 0) { ++ log_warning("Failed to nuke %s: %s", rt->var_tmp_dir, strerror(-r)); ++ free(rt->var_tmp_dir); ++ } ++ + rt->var_tmp_dir = NULL; + } + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0024-update-bash-completion-for-systemd-analyze.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0024-update-bash-completion-for-systemd-analyze.patch new file mode 100644 index 0000000000..83df3e1bd4 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0024-update-bash-completion-for-systemd-analyze.patch @@ -0,0 +1,58 @@ +From 1ec5be9a85b46c697fc87405038427eaf9bebe1b Mon Sep 17 00:00:00 2001 +From: Thomas Hindoe Paaboel Andersen +Date: Mon, 3 Mar 2014 22:01:42 +0100 +Subject: update bash completion for systemd-analyze + +(cherry picked from commit 64ae7f1864d54f38d62e258322a7ea9756c7284b) +--- + shell-completion/bash/systemd-analyze | 24 +++++++++++++++++++++++- + 1 file changed, 23 insertions(+), 1 deletion(-) + +diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze +index 6afcd963c33f..5575bebfc45c 100644 +--- a/shell-completion/bash/systemd-analyze ++++ b/shell-completion/bash/systemd-analyze +@@ -25,10 +25,19 @@ __contains_word () { + done + } + ++__get_machines() { ++ local a b ++ machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; ++} ++ + _systemd_analyze() { + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} +- local OPTS='--help --version --system --user --from-pattern --to-pattern --order --require' ++ ++ local -A OPTS=( ++ [STANDALONE]='--help --version --system --user --from-pattern --to-pattern --order --require --no-pager' ++ [ARG]='-H --host -M --machine' ++ ) + + local -A VERBS=( + [STANDALONE]='time blame plot dump' +@@ -47,6 +56,19 @@ _systemd_analyze() { + fi + done + ++ if __contains_word "$prev" ${OPTS[ARG]}; then ++ case $prev in ++ --host|-H) ++ comps=$(compgen -A hostname) ++ ;; ++ --machine|-M) ++ comps=$( __get_machines ) ++ ;; ++ esac ++ COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) ++ return 0 ++ fi ++ + if [[ -z $verb && $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0025-add-bash-completion-for-systemd-detect-virt.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0025-add-bash-completion-for-systemd-detect-virt.patch new file mode 100644 index 0000000000..d8aecda61a --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0025-add-bash-completion-for-systemd-detect-virt.patch @@ -0,0 +1,73 @@ +From 191479e0e4fb43f667ce743e82aac8bcccfbd6e1 Mon Sep 17 00:00:00 2001 +From: Thomas Hindoe Paaboel Andersen +Date: Mon, 3 Mar 2014 22:16:04 +0100 +Subject: add bash completion for systemd-detect-virt + +(cherry picked from commit 3bfe58cbd4a9b1d2520f425f95de718f3a583d39) +--- + Makefile.am | 1 + + shell-completion/bash/systemd-detect-virt | 40 +++++++++++++++++++++++++++++++ + 2 files changed, 41 insertions(+) + create mode 100644 shell-completion/bash/systemd-detect-virt + +diff --git a/Makefile.am b/Makefile.am +index bc5e719a5c90..834ed6f79747 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -355,6 +355,7 @@ dist_bashcompletion_DATA = \ + shell-completion/bash/systemd-cgls \ + shell-completion/bash/systemd-cgtop \ + shell-completion/bash/systemd-delta \ ++ shell-completion/bash/systemd-detect-virt \ + shell-completion/bash/systemd-nspawn \ + shell-completion/bash/systemd-run \ + shell-completion/bash/udevadm \ +diff --git a/shell-completion/bash/systemd-detect-virt b/shell-completion/bash/systemd-detect-virt +new file mode 100644 +index 000000000000..df06c2984168 +--- /dev/null ++++ b/shell-completion/bash/systemd-detect-virt +@@ -0,0 +1,40 @@ ++# systemd-detect-virt(1) completion -*- shell-script -*- ++# ++# This file is part of systemd. ++# ++# Copyright 2014 Thomas H.P. Andersen ++# ++# systemd is free software; you can redistribute it and/or modify it ++# under the terms of the GNU Lesser General Public License as published by ++# the Free Software Foundation; either version 2.1 of the License, or ++# (at your option) any later version. ++# ++# systemd is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public License ++# along with systemd; If not, see . ++ ++__contains_word() { ++ local w word=$1; shift ++ for w in "$@"; do ++ [[ $w = "$word" ]] && return ++ done ++} ++ ++_systemd_detect_virt() { ++ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} ++ local i verb comps ++ ++ local -A OPTS=( ++ [STANDALONE]='-h --help --version -c --container -v --vm -q --quiet' ++ ) ++ ++ _init_completion || return ++ ++ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) ++} ++ ++complete -F _systemd_detect_virt systemd-detect-virt +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0026-Do-not-print-invalid-UTF-8-in-error-messages.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0026-Do-not-print-invalid-UTF-8-in-error-messages.patch new file mode 100644 index 0000000000..30087b94dc --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0026-Do-not-print-invalid-UTF-8-in-error-messages.patch @@ -0,0 +1,126 @@ +From 799f37dd06946958dfed2aec54788c5e81bf340a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 4 Mar 2014 09:50:26 -0500 +Subject: Do not print invalid UTF-8 in error messages + +Inexplicably, 550a40ec ('core: do not print invalid utf-8 in error +messages') only fixed two paths. Convert all of them now. + +(cherry picked from commit b5d742138f71e87312541a89aac5657015f50f48) + +Conflicts: + src/core/load-fragment.c + src/shared/conf-parser.c +--- + src/core/load-fragment.c | 11 +++-------- + src/shared/conf-parser.c | 6 ++---- + src/shared/conf-parser.h | 6 ++++++ + src/shared/fileio.c | 9 ++++++--- + 4 files changed, 17 insertions(+), 15 deletions(-) + +diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c +index 82aed1eb92c0..027ec5faac6f 100644 +--- a/src/core/load-fragment.c ++++ b/src/core/load-fragment.c +@@ -535,9 +535,7 @@ int config_parse_exec(const char *unit, + } + + if (!utf8_is_valid(path)) { +- log_syntax(unit, LOG_ERR, filename, line, EINVAL, +- "Path is not UTF-8 clean, ignoring assignment: %s", +- rvalue); ++ log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); + r = 0; + goto fail; + } +@@ -552,9 +550,7 @@ int config_parse_exec(const char *unit, + } + + if (!utf8_is_valid(c)) { +- log_syntax(unit, LOG_ERR, filename, line, EINVAL, +- "Path is not UTF-8 clean, ignoring assignment: %s", +- rvalue); ++ log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); + r = 0; + goto fail; + } +@@ -1959,8 +1955,7 @@ int config_parse_unit_requires_mounts_for( + return log_oom(); + + if (!utf8_is_valid(n)) { +- log_syntax(unit, LOG_ERR, filename, line, EINVAL, +- "Path is not UTF-8 clean, ignoring assignment: %s", rvalue); ++ log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); + continue; + } + +diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c +index cfa669b1139b..b6aa85637426 100644 +--- a/src/shared/conf-parser.c ++++ b/src/shared/conf-parser.c +@@ -656,8 +656,7 @@ int config_parse_path(const char *unit, + assert(data); + + if (!utf8_is_valid(rvalue)) { +- log_syntax(unit, LOG_ERR, filename, line, EINVAL, +- "Path is not UTF-8 clean, ignoring assignment: %s", rvalue); ++ log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); + return 0; + } + +@@ -725,8 +724,7 @@ int config_parse_strv(const char *unit, + return log_oom(); + + if (!utf8_is_valid(n)) { +- log_syntax(unit, LOG_ERR, filename, line, EINVAL, +- "String is not UTF-8 clean, ignoring: %s", rvalue); ++ log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); + continue; + } + +diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h +index 4ccdaddd2962..7e1c49331ac9 100644 +--- a/src/shared/conf-parser.h ++++ b/src/shared/conf-parser.h +@@ -124,6 +124,12 @@ int log_syntax_internal(const char *unit, int level, + config_file, config_line, \ + error, __VA_ARGS__) + ++#define log_invalid_utf8(unit, level, config_file, config_line, error, rvalue) { \ ++ _cleanup_free_ char *__p = utf8_escape_invalid(rvalue); \ ++ log_syntax(unit, level, config_file, config_line, error, \ ++ "String is not UTF-8 clean, ignoring assignment: %s", __p); \ ++ } ++ + #define DEFINE_CONFIG_PARSE_ENUM(function,name,type,msg) \ + int function(const char *unit, \ + const char *filename, \ +diff --git a/src/shared/fileio.c b/src/shared/fileio.c +index 0d3f2e90c75d..fcd1b8afece0 100644 +--- a/src/shared/fileio.c ++++ b/src/shared/fileio.c +@@ -598,15 +598,18 @@ static int load_env_file_push(const char *filename, unsigned line, + int r; + + if (!utf8_is_valid(key)) { ++ _cleanup_free_ char *t = utf8_escape_invalid(key); ++ + log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.", +- filename, line, key); ++ filename, line, t); + return -EINVAL; + } + + if (value && !utf8_is_valid(value)) { +- /* FIXME: filter UTF-8 */ ++ _cleanup_free_ char *t = utf8_escape_invalid(value); ++ + log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.", +- filename, line, key, value); ++ filename, line, key, t); + return -EINVAL; + } + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0027-architecture-Add-cris.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0027-architecture-Add-cris.patch new file mode 100644 index 0000000000..0abc1ee8d3 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0027-architecture-Add-cris.patch @@ -0,0 +1,56 @@ +From b4fb5c323dc77954867e0d896dce03edd094617a Mon Sep 17 00:00:00 2001 +From: Umut Tezduyar Lindskog +Date: Tue, 4 Mar 2014 13:58:35 +0100 +Subject: architecture: Add cris + +(cherry picked from commit 86bafac9540ba9e111ccba2fdf4161fe3a67cd3b) +--- + src/shared/architecture.c | 3 +++ + src/shared/architecture.h | 3 +++ + 2 files changed, 6 insertions(+) + +diff --git a/src/shared/architecture.c b/src/shared/architecture.c +index fcdb3d54b8d0..9e0c3efd1124 100644 +--- a/src/shared/architecture.c ++++ b/src/shared/architecture.c +@@ -114,6 +114,8 @@ Architecture uname_architecture(void) { + { "m68k", ARCHITECTURE_M68K }, + #elif defined(__tilegx__) + { "tilegx", ARCHITECTURE_TILEGX }, ++#elif defined(__cris__) ++ { "cris", ARCHITECTURE_CRIS }, + #else + #error "Please register your architecture here!" + #endif +@@ -161,6 +163,7 @@ static const char *const architecture_table[_ARCHITECTURE_MAX] = { + [ARCHITECTURE_SH64] = "sh64", + [ARCHITECTURE_M68K] = "m68k", + [ARCHITECTURE_TILEGX] = "tilegx", ++ [ARCHITECTURE_CRIS] = "cris", + }; + + DEFINE_STRING_TABLE_LOOKUP(architecture, Architecture); +diff --git a/src/shared/architecture.h b/src/shared/architecture.h +index e589a91343bf..20e848bd8f62 100644 +--- a/src/shared/architecture.h ++++ b/src/shared/architecture.h +@@ -48,6 +48,7 @@ typedef enum Architecture { + ARCHITECTURE_SH64, + ARCHITECTURE_M68K, + ARCHITECTURE_TILEGX, ++ ARCHITECTURE_CRIS, + _ARCHITECTURE_MAX, + _ARCHITECTURE_INVALID = -1 + } Architecture; +@@ -110,6 +111,8 @@ Architecture uname_architecture(void); + # define native_architecture() ARCHITECTURE_M68K + #elif defined(__tilegx__) + # define native_architecture() ARCHITECTURE_TILEGX ++#elif defined(__cris__) ++# define native_architecture() ARCHITECTURE_CRIS + #else + #error "Please register your architecture here!" + #endif +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0028-add-bash-completion-for-systemd-cat.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0028-add-bash-completion-for-systemd-cat.patch new file mode 100644 index 0000000000..a01f7ecd8d --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0028-add-bash-completion-for-systemd-cat.patch @@ -0,0 +1,90 @@ +From 7f197e46c944bdb43fa1cedbd97708ac2ea72558 Mon Sep 17 00:00:00 2001 +From: Thomas Hindoe Paaboel Andersen +Date: Tue, 4 Mar 2014 23:16:30 +0100 +Subject: add bash completion for systemd-cat + +(cherry picked from commit 207017017db91232189226bfcf29e61926310a9b) +--- + Makefile.am | 1 + + shell-completion/bash/systemd-cat | 57 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 58 insertions(+) + create mode 100644 shell-completion/bash/systemd-cat + +diff --git a/Makefile.am b/Makefile.am +index 834ed6f79747..7187b8ddea08 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -352,6 +352,7 @@ dist_bashcompletion_DATA = \ + shell-completion/bash/journalctl \ + shell-completion/bash/systemctl \ + shell-completion/bash/systemd-analyze \ ++ shell-completion/bash/systemd-cat \ + shell-completion/bash/systemd-cgls \ + shell-completion/bash/systemd-cgtop \ + shell-completion/bash/systemd-delta \ +diff --git a/shell-completion/bash/systemd-cat b/shell-completion/bash/systemd-cat +new file mode 100644 +index 000000000000..8d84042af175 +--- /dev/null ++++ b/shell-completion/bash/systemd-cat +@@ -0,0 +1,57 @@ ++# systemd-cat(1) completion -*- shell-script -*- ++# ++# This file is part of systemd. ++# ++# Copyright 2014 Thomas H.P. Andersen ++# ++# systemd is free software; you can redistribute it and/or modify it ++# under the terms of the GNU Lesser General Public License as published by ++# the Free Software Foundation; either version 2.1 of the License, or ++# (at your option) any later version. ++# ++# systemd is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public License ++# along with systemd; If not, see . ++ ++__contains_word() { ++ local w word=$1; shift ++ for w in "$@"; do ++ [[ $w = "$word" ]] && return ++ done ++} ++ ++_systemd_cat() { ++ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} ++ local i verb comps ++ ++ local -A OPTS=( ++ [STANDALONE]='-h --help --version' ++ [ARG]='-t --identifier -p --priority --level-prefix' ++ ) ++ ++ _init_completion || return ++ ++ if __contains_word "$prev" ${OPTS[ARG]}; then ++ case $prev in ++ --identifier|-t) ++ comps='' ++ ;; ++ --priority|-p) ++ comps='emerg alert crit err warning notice info debug' ++ ;; ++ --level-prefix) ++ comps='yes no' ++ ;; ++ esac ++ COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) ++ return 0 ++ fi ++ ++ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) ++} ++ ++complete -F _systemd_cat systemd-cat +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0029-man-document-missing-options-of-systemd-run.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0029-man-document-missing-options-of-systemd-run.patch new file mode 100644 index 0000000000..c0dcdb352f --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0029-man-document-missing-options-of-systemd-run.patch @@ -0,0 +1,114 @@ +From 4c626a758f12c2e5862b185de8ae954e0bd795d7 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 5 Mar 2014 03:37:48 +0100 +Subject: man: document missing options of systemd-run + +(cherry picked from commit 981ee551945f4e00de52fcbb7780fd7476bcd47e) +--- + man/systemd-run.xml | 71 ++++++++++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 60 insertions(+), 11 deletions(-) + +diff --git a/man/systemd-run.xml b/man/systemd-run.xml +index 064195a989ff..dc44186aaca6 100644 +--- a/man/systemd-run.xml ++++ b/man/systemd-run.xml +@@ -109,9 +109,9 @@ along with systemd; If not, see . + + + +- Provide description for the unit. If not +- specified, the command itself will be used as a description. +- See Description= in ++ Provide description for the service or scope ++ unit. If not specified, the command itself will be used as a ++ description. See Description= in + systemd.unit5. + + +@@ -128,10 +128,10 @@ along with systemd; If not, see . + + + +- After the service's process has terminated, keep +- the service around until it is explicitly stopped. This is +- useful to collect runtime information about the service after +- it finished running. Also see ++ After the service or scope process has ++ terminated, keep the service around until it is explicitly ++ stopped. This is useful to collect runtime information about ++ the service after it finished running. Also see + RemainAfterExit= in + systemd.service5. + +@@ -141,15 +141,64 @@ along with systemd; If not, see . + + + +- When terminating the scope unit, send a SIGHUP +- immediately after SIGTERM. This is useful to indicate to +- shells and shell-like processes that the connection has been +- severed. Also see SendSIGHUP= in ++ When terminating the scope or service unit, ++ send a SIGHUP immediately after SIGTERM. This is useful to ++ indicate to shells and shell-like processes that the ++ connection has been severed. Also see ++ SendSIGHUP= in + systemd.kill5. + + + + ++ ++ ++ ++ Sets the service type. Also see ++ Type= in ++ systemd.service5. This ++ option has no effect in conjunction with ++ . Defaults to ++ simple. ++ ++ ++ ++ ++ ++ ++ ++ Runs the service process under the UNIX user ++ and group. Also see User= and ++ Group= in ++ systemd.exec5. This ++ option has no effect in conjunction with ++ . ++ ++ ++ ++ ++ ++ ++ Runs the service process with the specified ++ nice level. Also see Nice= in ++ systemd.exec5. This ++ option has no effect in conjunction with ++ . ++ ++ ++ ++ ++ ++ ++ Runs the service process with the specified ++ environment variables set. Also see ++ Environment= in ++ systemd.exec5. This ++ option has no effect in conjunction with ++ . ++ ++ ++ + + + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0030-systemd-run-add-some-extra-safety-checks.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0030-systemd-run-add-some-extra-safety-checks.patch new file mode 100644 index 0000000000..64e8b62278 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0030-systemd-run-add-some-extra-safety-checks.patch @@ -0,0 +1,35 @@ +From 37c3628037acb728660222ad836047c8bb81363f Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 5 Mar 2014 03:38:36 +0100 +Subject: systemd-run: add some extra safety checks + +(cherry picked from commit 1ac67edb7c4d31a287fa98c0b554ae98bd34e71b) +--- + src/run/run.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/run/run.c b/src/run/run.c +index 885d881ec676..7f08c41b86a1 100644 +--- a/src/run/run.c ++++ b/src/run/run.c +@@ -37,7 +37,7 @@ static const char *arg_description = NULL; + static const char *arg_slice = NULL; + static bool arg_send_sighup = false; + static BusTransport arg_transport = BUS_TRANSPORT_LOCAL; +-static char *arg_host = NULL; ++static const char *arg_host = NULL; + static bool arg_user = false; + static const char *arg_service_type = NULL; + static const char *arg_exec_user = NULL; +@@ -183,7 +183,7 @@ static int parse_argv(int argc, char *argv[]) { + + case ARG_NICE: + r = safe_atoi(optarg, &arg_nice); +- if (r < 0) { ++ if (r < 0 || arg_nice < PRIO_MIN || arg_nice >= PRIO_MAX) { + log_error("Failed to parse nice value"); + return -EINVAL; + } +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0031-journal-assume-that-next-entry-is-after-previous-ent.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0031-journal-assume-that-next-entry-is-after-previous-ent.patch new file mode 100644 index 0000000000..3dd6a495ed --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0031-journal-assume-that-next-entry-is-after-previous-ent.patch @@ -0,0 +1,71 @@ +From c77f203a510d27ab08729454bc865547c6111d02 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 27 Feb 2014 00:07:29 -0500 +Subject: journal: assume that next entry is after previous entry + +With a corrupted file, we can get in a situation where two entries +in the entry array point to the same object. Then journal_file_next_entry +will find the first one using generic_arrray_bisect, and try to move to +the second one, but since the address is the same, generic_array_get will +return the first one. journal_file_next_entry ends up in an infinite loop. + +https://bugzilla.redhat.com/show_bug.cgi?id=1047039 +(cherry picked from commit fb099c8d2af6620db2709e826a258089d10cdfe8) +--- + src/journal/journal-file.c | 26 ++++++++++++++++++++------ + 1 file changed, 20 insertions(+), 6 deletions(-) + +diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c +index 23c4d28e7304..c27289c9f476 100644 +--- a/src/journal/journal-file.c ++++ b/src/journal/journal-file.c +@@ -1359,7 +1359,7 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st + } + + typedef struct ChainCacheItem { +- uint64_t first; /* the array at the begin of the chain */ ++ uint64_t first; /* the array at the beginning of the chain */ + uint64_t array; /* the cached array */ + uint64_t begin; /* the first item in the cached array */ + uint64_t total; /* the total number of items in all arrays before this one in the chain */ +@@ -1945,7 +1945,7 @@ int journal_file_next_entry( + direction_t direction, + Object **ret, uint64_t *offset) { + +- uint64_t i, n; ++ uint64_t i, n, ofs; + int r; + + assert(f); +@@ -1986,10 +1986,24 @@ int journal_file_next_entry( + } + + /* And jump to it */ +- return generic_array_get(f, +- le64toh(f->header->entry_array_offset), +- i, +- ret, offset); ++ r = generic_array_get(f, ++ le64toh(f->header->entry_array_offset), ++ i, ++ ret, &ofs); ++ if (r <= 0) ++ return r; ++ ++ if (p > 0 && ++ (direction == DIRECTION_DOWN ? ofs <= p : ofs >= p)) { ++ log_debug("%s: entry array corrupted at entry %"PRIu64, ++ f->path, i); ++ return -EBADMSG; ++ } ++ ++ if (offset) ++ *offset = ofs; ++ ++ return 1; + } + + int journal_file_skip_entry( +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0032-journal-forget-file-after-encountering-an-error.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0032-journal-forget-file-after-encountering-an-error.patch new file mode 100644 index 0000000000..7f5818dd33 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0032-journal-forget-file-after-encountering-an-error.patch @@ -0,0 +1,76 @@ +From c360d2f3141cdc8ec67cddef3df99e4045b6c6d8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 27 Feb 2014 00:11:54 -0500 +Subject: journal: forget file after encountering an error + +If we encounter an inconsistency in a file, let's just +ignore it. Otherwise, after previous patch, we would try, +and fail, to use this file in every invocation of sd_journal_next +or sd_journal_previous that happens afterwards. + +(cherry picked from commit a9a245c128af6c0418085062c60251bc51fa4a94) +--- + src/journal/sd-journal.c | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c +index 3740a9a84035..2dbfda03a9e7 100644 +--- a/src/journal/sd-journal.c ++++ b/src/journal/sd-journal.c +@@ -51,6 +51,8 @@ + + #define DEFAULT_DATA_THRESHOLD (64*1024) + ++static void remove_file_real(sd_journal *j, JournalFile *f); ++ + static bool journal_pid_changed(sd_journal *j) { + assert(j); + +@@ -885,6 +887,7 @@ static int real_journal_next(sd_journal *j, direction_t direction) { + r = next_beyond_location(j, f, direction, &o, &p); + if (r < 0) { + log_debug("Can't iterate through %s, ignoring: %s", f->path, strerror(-r)); ++ remove_file_real(j, f); + continue; + } else if (r == 0) + continue; +@@ -1339,7 +1342,7 @@ static int add_file(sd_journal *j, const char *prefix, const char *filename) { + } + + static int remove_file(sd_journal *j, const char *prefix, const char *filename) { +- char *path; ++ _cleanup_free_ char *path; + JournalFile *f; + + assert(j); +@@ -1351,10 +1354,17 @@ static int remove_file(sd_journal *j, const char *prefix, const char *filename) + return -ENOMEM; + + f = hashmap_get(j->files, path); +- free(path); + if (!f) + return 0; + ++ remove_file_real(j, f); ++ return 0; ++} ++ ++static void remove_file_real(sd_journal *j, JournalFile *f) { ++ assert(j); ++ assert(f); ++ + hashmap_remove(j->files, f->path); + + log_debug("File %s removed.", f->path); +@@ -1372,8 +1382,6 @@ static int remove_file(sd_journal *j, const char *prefix, const char *filename) + journal_file_close(f); + + j->current_invalidate_counter ++; +- +- return 0; + } + + static int add_directory(sd_journal *j, const char *prefix, const char *dirname) { +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0033-core-correctly-unregister-PIDs-from-PID-hashtables.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0033-core-correctly-unregister-PIDs-from-PID-hashtables.patch new file mode 100644 index 0000000000..b5cc1fbcac --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0033-core-correctly-unregister-PIDs-from-PID-hashtables.patch @@ -0,0 +1,103 @@ +From dd935122a989eeb31a0ab4d42ad5381f1f48446e Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Thu, 6 Mar 2014 02:19:42 +0100 +Subject: core: correctly unregister PIDs from PID hashtables + +(cherry picked from commit bd44e61b0480712ec5585ff7b0295362a5f9dd36) +--- + src/core/unit.c | 42 ++++++++++++++++++------------------------ + 1 file changed, 18 insertions(+), 24 deletions(-) + +diff --git a/src/core/unit.c b/src/core/unit.c +index 1bbcb39d3227..5a5592c82430 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -1703,11 +1703,11 @@ int unit_watch_pid(Unit *u, pid_t pid) { + /* Watch a specific PID. We only support one or two units + * watching each PID for now, not more. */ + +- r = hashmap_ensure_allocated(&u->manager->watch_pids1, trivial_hash_func, trivial_compare_func); ++ r = set_ensure_allocated(&u->pids, trivial_hash_func, trivial_compare_func); + if (r < 0) + return r; + +- r = set_ensure_allocated(&u->pids, trivial_hash_func, trivial_compare_func); ++ r = hashmap_ensure_allocated(&u->manager->watch_pids1, trivial_hash_func, trivial_compare_func); + if (r < 0) + return r; + +@@ -1736,7 +1736,17 @@ void unit_unwatch_pid(Unit *u, pid_t pid) { + set_remove(u->pids, LONG_TO_PTR(pid)); + } + +-static int watch_pids_in_path(Unit *u, const char *path) { ++void unit_unwatch_all_pids(Unit *u) { ++ assert(u); ++ ++ while (!set_isempty(u->pids)) ++ unit_unwatch_pid(u, PTR_TO_LONG(set_first(u->pids))); ++ ++ set_free(u->pids); ++ u->pids = NULL; ++} ++ ++static int unit_watch_pids_in_path(Unit *u, const char *path) { + _cleanup_closedir_ DIR *d = NULL; + _cleanup_fclose_ FILE *f = NULL; + int ret = 0, r; +@@ -1774,7 +1784,7 @@ static int watch_pids_in_path(Unit *u, const char *path) { + if (!p) + return -ENOMEM; + +- r = watch_pids_in_path(u, p); ++ r = unit_watch_pids_in_path(u, p); + if (r < 0 && ret >= 0) + ret = r; + } +@@ -1787,31 +1797,15 @@ static int watch_pids_in_path(Unit *u, const char *path) { + return ret; + } + +- + int unit_watch_all_pids(Unit *u) { + assert(u); + +- if (!u->cgroup_path) +- return -ENOENT; +- + /* Adds all PIDs from our cgroup to the set of PIDs we watch */ + +- return watch_pids_in_path(u, u->cgroup_path); +-} +- +-void unit_unwatch_all_pids(Unit *u) { +- Iterator i; +- void *e; +- +- assert(u); +- +- SET_FOREACH(e, u->pids, i) { +- hashmap_remove_value(u->manager->watch_pids1, e, u); +- hashmap_remove_value(u->manager->watch_pids2, e, u); +- } ++ if (!u->cgroup_path) ++ return -ENOENT; + +- set_free(u->pids); +- u->pids = NULL; ++ return unit_watch_pids_in_path(u, u->cgroup_path); + } + + void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2) { +@@ -1829,7 +1823,7 @@ void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2) { + continue; + + if (!pid_is_unwaited(pid)) +- set_remove(u->pids, e); ++ unit_unwatch_pid(u, pid); + } + } + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0034-logind-fix-reference-to-systemd-user-sessions.servic.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0034-logind-fix-reference-to-systemd-user-sessions.servic.patch new file mode 100644 index 0000000000..d05732b568 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0034-logind-fix-reference-to-systemd-user-sessions.servic.patch @@ -0,0 +1,26 @@ +From b7bc83734b75499d3bf9d5446adcb43818796da5 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Thu, 6 Mar 2014 04:52:31 +0100 +Subject: logind: fix reference to systemd-user-sessions.service + +(cherry picked from commit 646e392e10924454576f10b072f78d7676422816) +--- + src/login/logind-session.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/login/logind-session.c b/src/login/logind-session.c +index 548f049202e9..3700522f9b3f 100644 +--- a/src/login/logind-session.c ++++ b/src/login/logind-session.c +@@ -490,7 +490,7 @@ static int session_start_scope(Session *s) { + if (!scope) + return log_oom(); + +- r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-logind.service", "systemd-user-session.service", &error, &job); ++ r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-logind.service", "systemd-user-sessions.service", &error, &job); + if (r < 0) { + log_error("Failed to start session scope %s: %s %s", + scope, bus_error_message(&error, r), error.name); +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0035-man-update-link-to-LSB.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0035-man-update-link-to-LSB.patch new file mode 100644 index 0000000000..633b286e2d --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0035-man-update-link-to-LSB.patch @@ -0,0 +1,36 @@ +From bc447bbd474ed77da1a9cce0dcf85fb4f0e7cb35 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 6 Mar 2014 08:10:19 -0500 +Subject: man: update link to LSB + +https://bugzilla.redhat.com/show_bug.cgi?id=1073402 +(cherry picked from commit 27d14fb331ba8144f99f4da2d13f15cf5c8b8a9f) +--- + man/daemon.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/man/daemon.xml b/man/daemon.xml +index fd29ba722d7d..ab58d08a7642 100644 +--- a/man/daemon.xml ++++ b/man/daemon.xml +@@ -252,7 +252,7 @@ + detect service errors and problems. It + is recommended to follow the exit code + scheme as defined in the LSB ++ url="http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB + recommendations for SysV init + scripts. + +@@ -395,7 +395,7 @@ + exclusively on boot (and manually by the + administrator) via SysV init scripts, as + detailed in the LSB ++ url="http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB + Linux Standard Base Core + Specification. This method of + activation is supported ubiquitously on Linux +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0036-man-systemd-bootchart-fix-spacing-in-command.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0036-man-systemd-bootchart-fix-spacing-in-command.patch new file mode 100644 index 0000000000..927cbe7e19 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0036-man-systemd-bootchart-fix-spacing-in-command.patch @@ -0,0 +1,30 @@ +From 7117b40be2484d2f318c14d42b8c1f47d44a4465 Mon Sep 17 00:00:00 2001 +From: Zachary Cook +Date: Thu, 6 Mar 2014 03:49:49 -0500 +Subject: man: systemd-bootchart - fix spacing in command + +Use the same formatting as the systemd-analyze man page, so that man shows a space. + +(cherry picked from commit 82ed60080d327d7301fcd55f5a1f8511f894b9d5) +--- + man/systemd-bootchart.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml +index d0adaad982cb..1715d5dcf171 100644 +--- a/man/systemd-bootchart.xml ++++ b/man/systemd-bootchart.xml +@@ -78,8 +78,8 @@ + in which order, and where possible problems + exist in the startup sequence of the system. + It is essentially a more detailed version of +- the systemd-analyze +- plot function. ++ the systemd-analyze plot ++ function. + + + Of course, bootchart can also be used at any +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0037-man-add-missing-comma.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0037-man-add-missing-comma.patch new file mode 100644 index 0000000000..2d6efe7dbc --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0037-man-add-missing-comma.patch @@ -0,0 +1,28 @@ +From a478182ddc3abcacd006ecef8de8829c3ec51b13 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 6 Mar 2014 23:54:13 -0500 +Subject: man: add missing comma + +marcosf0> missing comma in udevadm "see also" section + +(cherry picked from commit 7d06ef0a5cd2f0a4e021d3d12f3841cce529e0f2) +--- + man/udevadm.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/man/udevadm.xml b/man/udevadm.xml +index a3f8d548df6b..21d14434a383 100644 +--- a/man/udevadm.xml ++++ b/man/udevadm.xml +@@ -594,7 +594,7 @@ + See Also + + udev7 +- ++ , + + systemd-udevd.service8 + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0038-build-sys-Don-t-distribute-generated-udev-rule.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0038-build-sys-Don-t-distribute-generated-udev-rule.patch new file mode 100644 index 0000000000..3304d685ce --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0038-build-sys-Don-t-distribute-generated-udev-rule.patch @@ -0,0 +1,41 @@ +From 66f231f4c71dfb11dc4552cb337571d3e3019c81 Mon Sep 17 00:00:00 2001 +From: Armin K +Date: Tue, 4 Mar 2014 16:23:41 +0100 +Subject: build-sys: Don't distribute generated udev rule + +It contains hardcoded path to systemd-sysctl executable which +is /usr/lib/systemd/systemd-sysctl on latest stable release and +as such it will complain at runtime if rootprefix != prefix + +[zj: readd the file to nodist_udevrules_DATA] + +(cherry picked from commit e2eb18d56b14eeb405706970f0460d8539cdcf23) +--- + Makefile.am | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 7187b8ddea08..8093526180ad 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -2518,7 +2518,6 @@ dist_network_DATA = \ + network/80-container-host0.network + + dist_udevrules_DATA += \ +- rules/99-systemd.rules \ + rules/42-usb-hid-pm.rules \ + rules/50-udev-default.rules \ + rules/60-drm.rules \ +@@ -2535,6 +2534,9 @@ dist_udevrules_DATA += \ + rules/80-net-setup-link.rules \ + rules/95-udev-late.rules + ++nodist_udevrules_DATA += \ ++ rules/99-systemd.rules ++ + dist_udevhwdb_DATA = \ + hwdb/20-pci-vendor-model.hwdb \ + hwdb/20-pci-classes.hwdb \ +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0039-units-Do-not-unescape-instance-name-in-systemd-backl.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0039-units-Do-not-unescape-instance-name-in-systemd-backl.patch new file mode 100644 index 0000000000..c387abec7d --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0039-units-Do-not-unescape-instance-name-in-systemd-backl.patch @@ -0,0 +1,39 @@ +From 50ab7a793277bd976ea68c1d74b999ce483af50b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Thomas=20B=C3=A4chler?= +Date: Fri, 7 Mar 2014 01:50:34 +0100 +Subject: units: Do not unescape instance name in systemd-backlight@.service + +The instance name is never escaped in the udev rule, but unescaped in the unit. +This results in the following error message on Asus boards: + + Failed to get backlight or LED device 'backlight:eeepc/wmi': No such file or directory + +(cherry picked from commit 6c49212741253dae05b89d22374186f092ef1e5a) +--- + units/systemd-backlight@.service.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/units/systemd-backlight@.service.in b/units/systemd-backlight@.service.in +index 5caa5d531f43..e945d8733f88 100644 +--- a/units/systemd-backlight@.service.in ++++ b/units/systemd-backlight@.service.in +@@ -6,7 +6,7 @@ + # (at your option) any later version. + + [Unit] +-Description=Load/Save Screen Backlight Brightness of %I ++Description=Load/Save Screen Backlight Brightness of %i + Documentation=man:systemd-backlight@.service(8) + DefaultDependencies=no + RequiresMountsFor=/var/lib/systemd/backlight +@@ -17,5 +17,5 @@ Before=sysinit.target shutdown.target + [Service] + Type=oneshot + RemainAfterExit=yes +-ExecStart=@rootlibexecdir@/systemd-backlight load %I +-ExecStop=@rootlibexecdir@/systemd-backlight save %I ++ExecStart=@rootlibexecdir@/systemd-backlight load %i ++ExecStop=@rootlibexecdir@/systemd-backlight save %i +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0040-util-add-timeout-to-generator-execution.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0040-util-add-timeout-to-generator-execution.patch new file mode 100644 index 0000000000..e2bf7e8ce8 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0040-util-add-timeout-to-generator-execution.patch @@ -0,0 +1,313 @@ +From d66226bce64620543d21675ae610ecfeb9395e2a Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Thu, 6 Mar 2014 02:19:06 +0100 +Subject: util: add timeout to generator execution + +(cherry picked from commit aa62a8936f5983770e90b791083d55107659f7a1) +--- + src/core/manager.c | 2 +- + src/core/shutdown.c | 2 +- + src/shared/util.c | 162 ++++++++++++++++++++++++++++------------------------ + src/shared/util.h | 2 +- + src/sleep/sleep.c | 14 +++-- + 5 files changed, 99 insertions(+), 83 deletions(-) + +diff --git a/src/core/manager.c b/src/core/manager.c +index f5801b474951..7c7f0882ee76 100644 +--- a/src/core/manager.c ++++ b/src/core/manager.c +@@ -2654,7 +2654,7 @@ void manager_run_generators(Manager *m) { + argv[4] = NULL; + + RUN_WITH_UMASK(0022) +- execute_directory(generator_path, d, (char**) argv); ++ execute_directory(generator_path, d, DEFAULT_TIMEOUT_USEC, (char**) argv); + + finish: + trim_generator_dir(m, &m->generator_unit_path); +diff --git a/src/core/shutdown.c b/src/core/shutdown.c +index c7510304f226..7ef671ad0f56 100644 +--- a/src/core/shutdown.c ++++ b/src/core/shutdown.c +@@ -368,7 +368,7 @@ int main(int argc, char *argv[]) { + arguments[0] = NULL; + arguments[1] = arg_verb; + arguments[2] = NULL; +- execute_directory(SYSTEM_SHUTDOWN_PATH, NULL, arguments); ++ execute_directory(SYSTEM_SHUTDOWN_PATH, NULL, DEFAULT_TIMEOUT_USEC, arguments); + + if (!in_container && !in_initrd() && + access("/run/initramfs/shutdown", X_OK) == 0) { +diff --git a/src/shared/util.c b/src/shared/util.c +index 3164515a9e59..0d64ede1e57a 100644 +--- a/src/shared/util.c ++++ b/src/shared/util.c +@@ -3681,111 +3681,123 @@ bool dirent_is_file_with_suffix(const struct dirent *de, const char *suffix) { + return endswith(de->d_name, suffix); + } + +-void execute_directory(const char *directory, DIR *d, char *argv[]) { +- DIR *_d = NULL; +- struct dirent *de; +- Hashmap *pids = NULL; ++void execute_directory(const char *directory, DIR *d, usec_t timeout, char *argv[]) { ++ pid_t executor_pid; ++ int r; + + assert(directory); + +- /* Executes all binaries in a directory in parallel and +- * waits for them to finish. */ ++ /* Executes all binaries in a directory in parallel and waits ++ * for them to finish. Optionally a timeout is applied. */ + +- if (!d) { +- if (!(_d = opendir(directory))) { ++ executor_pid = fork(); ++ if (executor_pid < 0) { ++ log_error("Failed to fork: %m"); ++ return; + +- if (errno == ENOENT) +- return; ++ } else if (executor_pid == 0) { ++ _cleanup_hashmap_free_free_ Hashmap *pids = NULL; ++ _cleanup_closedir_ DIR *_d = NULL; ++ struct dirent *de; ++ sigset_t ss; + +- log_error("Failed to enumerate directory %s: %m", directory); +- return; +- } ++ /* We fork this all off from a child process so that ++ * we can somewhat cleanly make use of SIGALRM to set ++ * a time limit */ + +- d = _d; +- } ++ reset_all_signal_handlers(); + +- if (!(pids = hashmap_new(trivial_hash_func, trivial_compare_func))) { +- log_error("Failed to allocate set."); +- goto finish; +- } ++ assert_se(sigemptyset(&ss) == 0); ++ assert_se(sigprocmask(SIG_SETMASK, &ss, NULL) == 0); + +- while ((de = readdir(d))) { +- char *path; +- pid_t pid; +- int k; ++ assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); + +- if (!dirent_is_file(de)) +- continue; ++ if (!d) { ++ d = _d = opendir(directory); ++ if (!d) { ++ if (errno == ENOENT) ++ _exit(EXIT_SUCCESS); + +- if (asprintf(&path, "%s/%s", directory, de->d_name) < 0) { +- log_oom(); +- continue; ++ log_error("Failed to enumerate directory %s: %m", directory); ++ _exit(EXIT_FAILURE); ++ } + } + +- if ((pid = fork()) < 0) { +- log_error("Failed to fork: %m"); +- free(path); +- continue; ++ pids = hashmap_new(NULL, NULL); ++ if (!pids) { ++ log_oom(); ++ _exit(EXIT_FAILURE); + } + +- if (pid == 0) { +- char *_argv[2]; +- /* Child */ ++ FOREACH_DIRENT(de, d, break) { ++ _cleanup_free_ char *path = NULL; ++ pid_t pid; + +- if (!argv) { +- _argv[0] = path; +- _argv[1] = NULL; +- argv = _argv; +- } else +- argv[0] = path; ++ if (!dirent_is_file(de)) ++ continue; + +- execv(path, argv); ++ if (asprintf(&path, "%s/%s", directory, de->d_name) < 0) { ++ log_oom(); ++ _exit(EXIT_FAILURE); ++ } + +- log_error("Failed to execute %s: %m", path); +- _exit(EXIT_FAILURE); +- } ++ pid = fork(); ++ if (pid < 0) { ++ log_error("Failed to fork: %m"); ++ continue; ++ } else if (pid == 0) { ++ char *_argv[2]; + +- log_debug("Spawned %s as %lu", path, (unsigned long) pid); ++ assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); + +- if ((k = hashmap_put(pids, UINT_TO_PTR(pid), path)) < 0) { +- log_error("Failed to add PID to set: %s", strerror(-k)); +- free(path); +- } +- } ++ if (!argv) { ++ _argv[0] = path; ++ _argv[1] = NULL; ++ argv = _argv; ++ } else ++ argv[0] = path; + +- while (!hashmap_isempty(pids)) { +- pid_t pid = PTR_TO_UINT(hashmap_first_key(pids)); +- siginfo_t si = {}; +- char *path; ++ execv(path, argv); ++ log_error("Failed to execute %s: %m", path); ++ _exit(EXIT_FAILURE); ++ } + +- if (waitid(P_PID, pid, &si, WEXITED) < 0) { + +- if (errno == EINTR) +- continue; ++ log_debug("Spawned %s as " PID_FMT ".", path, pid); + +- log_error("waitid() failed: %m"); +- goto finish; ++ r = hashmap_put(pids, UINT_TO_PTR(pid), path); ++ if (r < 0) { ++ log_oom(); ++ _exit(EXIT_FAILURE); ++ } ++ ++ path = NULL; + } + +- if ((path = hashmap_remove(pids, UINT_TO_PTR(si.si_pid)))) { +- if (!is_clean_exit(si.si_code, si.si_status, NULL)) { +- if (si.si_code == CLD_EXITED) +- log_error("%s exited with exit status %i.", path, si.si_status); +- else +- log_error("%s terminated by signal %s.", path, signal_to_string(si.si_status)); +- } else +- log_debug("%s exited successfully.", path); ++ /* Abort execution of this process after the ++ * timout. We simply rely on SIGALRM as default action ++ * terminating the process, and turn on alarm(). */ ++ ++ if (timeout != (usec_t) -1) ++ alarm((timeout + USEC_PER_SEC - 1) / USEC_PER_SEC); ++ ++ while (!hashmap_isempty(pids)) { ++ _cleanup_free_ char *path = NULL; ++ pid_t pid; ++ ++ pid = PTR_TO_UINT(hashmap_first_key(pids)); ++ assert(pid > 0); + +- free(path); ++ path = hashmap_remove(pids, UINT_TO_PTR(pid)); ++ assert(path); ++ ++ wait_for_terminate_and_warn(path, pid); + } +- } + +-finish: +- if (_d) +- closedir(_d); ++ _exit(EXIT_SUCCESS); ++ } + +- if (pids) +- hashmap_free_free(pids); ++ wait_for_terminate_and_warn(directory, executor_pid); + } + + int kill_and_sigcont(pid_t pid, int sig) { +diff --git a/src/shared/util.h b/src/shared/util.h +index 78b144473922..aeb359b30810 100644 +--- a/src/shared/util.h ++++ b/src/shared/util.h +@@ -473,7 +473,7 @@ bool tty_is_console(const char *tty) _pure_; + int vtnr_from_tty(const char *tty); + const char *default_term_for_tty(const char *tty); + +-void execute_directory(const char *directory, DIR *_d, char *argv[]); ++void execute_directory(const char *directory, DIR *_d, usec_t timeout, char *argv[]); + + int kill_and_sigcont(pid_t pid, int sig); + +diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c +index 8da050cd7ed0..94bcb2944a73 100644 +--- a/src/sleep/sleep.c ++++ b/src/sleep/sleep.c +@@ -25,14 +25,15 @@ + #include + #include + +-#include "systemd/sd-id128.h" +-#include "systemd/sd-messages.h" ++#include "sd-id128.h" ++#include "sd-messages.h" + #include "log.h" + #include "util.h" + #include "strv.h" + #include "fileio.h" + #include "build.h" + #include "sleep-config.h" ++#include "def.h" + + static char* arg_verb = NULL; + +@@ -41,9 +42,12 @@ static int write_mode(char **modes) { + char **mode; + + STRV_FOREACH(mode, modes) { +- int k = write_string_file("/sys/power/disk", *mode); ++ int k; ++ ++ k = write_string_file("/sys/power/disk", *mode); + if (k == 0) + return 0; ++ + log_debug("Failed to write '%s' to /sys/power/disk: %s", + *mode, strerror(-k)); + if (r == 0) +@@ -106,7 +110,7 @@ static int execute(char **modes, char **states) { + arguments[1] = (char*) "pre"; + arguments[2] = arg_verb; + arguments[3] = NULL; +- execute_directory(SYSTEM_SLEEP_PATH, NULL, arguments); ++ execute_directory(SYSTEM_SLEEP_PATH, NULL, DEFAULT_TIMEOUT_USEC, arguments); + + log_struct(LOG_INFO, + MESSAGE_ID(SD_MESSAGE_SLEEP_START), +@@ -125,7 +129,7 @@ static int execute(char **modes, char **states) { + NULL); + + arguments[1] = (char*) "post"; +- execute_directory(SYSTEM_SLEEP_PATH, NULL, arguments); ++ execute_directory(SYSTEM_SLEEP_PATH, NULL, DEFAULT_TIMEOUT_USEC, arguments); + + return r; + } +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0041-core-busname-add-lookup-string-for-BUSNAME_FAILURE_S.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0041-core-busname-add-lookup-string-for-BUSNAME_FAILURE_S.patch new file mode 100644 index 0000000000..2a8b712ef4 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0041-core-busname-add-lookup-string-for-BUSNAME_FAILURE_S.patch @@ -0,0 +1,31 @@ +From acf94f3de1060fad3fc8434ccf12b66835cfba83 Mon Sep 17 00:00:00 2001 +From: Daniel Mack +Date: Fri, 7 Mar 2014 11:41:18 +0100 +Subject: core/busname: add lookup string for + BUSNAME_FAILURE_SERVICE_FAILED_PERMANENT + +When a busname unit enters BUSNAME_FAILURE_SERVICE_FAILED_PERMANENT, the +serialization will not be able to look up the result as string via +busname_result_to_string(). This leads to an assertion trap during +daemon-reexec. + +(cherry picked from commit 36d239dbdaf94ba2d96bb60ac45ecfc58624b1eb) +--- + src/core/busname.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/core/busname.c b/src/core/busname.c +index 4c34538c6524..237011ad4da6 100644 +--- a/src/core/busname.c ++++ b/src/core/busname.c +@@ -548,6 +548,7 @@ DEFINE_STRING_TABLE_LOOKUP(busname_state, BusNameState); + static const char* const busname_result_table[_BUSNAME_RESULT_MAX] = { + [BUSNAME_SUCCESS] = "success", + [BUSNAME_FAILURE_RESOURCES] = "resources", ++ [BUSNAME_FAILURE_SERVICE_FAILED_PERMANENT] = "failed-permanent", + }; + + DEFINE_STRING_TABLE_LOOKUP(busname_result, BusNameResult); +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0042-busname-don-t-drop-service-from-the-result-string.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0042-busname-don-t-drop-service-from-the-result-string.patch new file mode 100644 index 0000000000..13c3135425 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0042-busname-don-t-drop-service-from-the-result-string.patch @@ -0,0 +1,26 @@ +From bca84126f2b46068aa0d98c3e35245d6ace9b9dc Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 7 Mar 2014 17:29:16 +0100 +Subject: busname: don't drop 'service' from the result string + +(cherry picked from commit 700ff4d97311902a440109a2c081731ab6ae8a20) +--- + src/core/busname.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/busname.c b/src/core/busname.c +index 237011ad4da6..bca21450216a 100644 +--- a/src/core/busname.c ++++ b/src/core/busname.c +@@ -548,7 +548,7 @@ DEFINE_STRING_TABLE_LOOKUP(busname_state, BusNameState); + static const char* const busname_result_table[_BUSNAME_RESULT_MAX] = { + [BUSNAME_SUCCESS] = "success", + [BUSNAME_FAILURE_RESOURCES] = "resources", +- [BUSNAME_FAILURE_SERVICE_FAILED_PERMANENT] = "failed-permanent", ++ [BUSNAME_FAILURE_SERVICE_FAILED_PERMANENT] = "service-failed-permanent", + }; + + DEFINE_STRING_TABLE_LOOKUP(busname_result, BusNameResult); +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0043-manager-flush-memory-stream-before-using-the-buffer.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0043-manager-flush-memory-stream-before-using-the-buffer.patch new file mode 100644 index 0000000000..3ecae665c9 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0043-manager-flush-memory-stream-before-using-the-buffer.patch @@ -0,0 +1,47 @@ +From b1fc5bc6e56e6b2abd5e1f0782654d22f1220dc5 Mon Sep 17 00:00:00 2001 +From: Daniel Mack +Date: Fri, 7 Mar 2014 14:43:59 +0100 +Subject: manager: flush memory stream before using the buffer + +When the manager receives a SIGUSR2 signal, it opens a memory stream +with open_memstream(), uses the returned file handle for logging, and +dumps the logged content with log_dump(). + +However, the char* buffer is only safe to use after the file handle has +been flushed with fflush, as the man pages states: + + When the stream is closed (fclose(3)) or flushed (fflush(3)), the + locations pointed to by ptr and sizeloc are updated to contain, + respectively, a pointer to the buffer and the current size of the + buffer. + These values remain valid only as long as the caller performs no + further output on the stream. If further output is performed, then the + stream must again be flushed before trying to access these variables. + +Without that call, dump remains NULL and the daemon crashes in +log_dump(). + +(cherry picked from commit b2cdc6664ef6b56e47d38649d69b9943d9f9f5d0) +--- + src/core/manager.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/core/manager.c b/src/core/manager.c +index 7c7f0882ee76..ee92f1b3d345 100644 +--- a/src/core/manager.c ++++ b/src/core/manager.c +@@ -1618,6 +1618,11 @@ static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t + break; + } + ++ if (fflush(f)) { ++ log_warning("Failed to flush status stream"); ++ break; ++ } ++ + log_dump(LOG_INFO, dump); + break; + } +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0044-networkd-link-degrade-failed-UP-to-warning.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0044-networkd-link-degrade-failed-UP-to-warning.patch new file mode 100644 index 0000000000..4df1d1272d --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0044-networkd-link-degrade-failed-UP-to-warning.patch @@ -0,0 +1,37 @@ +From d1df055e24f9daaeda39ee8a57429849c78f71d4 Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Sat, 8 Mar 2014 01:08:30 +0100 +Subject: networkd: link - degrade failed UP to warning + +Something else may still bring the link up, so don't enter failed state prematurely. + +(cherry picked from commit 76800848f281c3705c9364fd3e888153d94aaf34) +--- + src/network/networkd-link.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c +index 1f495b38bbc5..5831d83104ce 100644 +--- a/src/network/networkd-link.c ++++ b/src/network/networkd-link.c +@@ -790,15 +790,13 @@ static int link_up_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) { + return 1; + + r = sd_rtnl_message_get_errno(m); +- if (r < 0) { +- log_struct_link(LOG_ERR, link, ++ if (r < 0) ++ log_struct_link(LOG_WARNING, link, + "MESSAGE=%s: could not bring up interface: %s", + link->ifname, strerror(-r), + "ERRNO=%d", -r, + NULL); +- link_enter_failed(link); + return 1; +- } + + link_update_flags(link, link->flags | IFF_UP); + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0045-networkd-fix-confusion-from-missing-braces.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0045-networkd-fix-confusion-from-missing-braces.patch new file mode 100644 index 0000000000..e0b2238417 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0045-networkd-fix-confusion-from-missing-braces.patch @@ -0,0 +1,39 @@ +From c0229d82761b6c4874acf7a37023b363cd85ec35 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sat, 8 Mar 2014 11:57:28 -0500 +Subject: networkd: fix confusion from missing braces + +Fixup for 76800848f281c3 'networkd: link - degrade failed UP to warning'. + +(cherry picked from commit 58b129170ca6acacffd853b6c8fbec9fce2c2163) +--- + src/network/networkd-link.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c +index 5831d83104ce..305ce2390ce5 100644 +--- a/src/network/networkd-link.c ++++ b/src/network/networkd-link.c +@@ -790,16 +790,14 @@ static int link_up_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) { + return 1; + + r = sd_rtnl_message_get_errno(m); +- if (r < 0) ++ if (r >= 0) ++ link_update_flags(link, link->flags | IFF_UP); ++ else + log_struct_link(LOG_WARNING, link, + "MESSAGE=%s: could not bring up interface: %s", + link->ifname, strerror(-r), + "ERRNO=%d", -r, + NULL); +- return 1; +- +- link_update_flags(link, link->flags | IFF_UP); +- + return 1; + } + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0046-fix-off-by-one-error-in-array-index-assertion.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0046-fix-off-by-one-error-in-array-index-assertion.patch new file mode 100644 index 0000000000..f2df8ed0fe --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0046-fix-off-by-one-error-in-array-index-assertion.patch @@ -0,0 +1,37 @@ +From 30711a3651f5b31cb67422bf8197e05d557dbe23 Mon Sep 17 00:00:00 2001 +From: Dave Reisner +Date: Sat, 8 Mar 2014 17:32:53 -0500 +Subject: fix off by one error in array index assertion + +Since the index is already post-incremented when the array is appended +to, this assertion can be wrongly reached when the array is at capacity +(with the NULL terminator). The bug is reproducible on shutdown with +the following settings in /etc/systemd/system.conf: + + LogTarget=journal-or-kmsg + LogColor=yes + LogLocation=yes + +Reported by Thermi on IRC. + +(cherry picked from commit 26abdc73a212b90f7c4b71808a1028d2e87ab09f) +--- + src/core/main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/main.c b/src/core/main.c +index 4e24f851e264..15bf684d7d5a 100644 +--- a/src/core/main.c ++++ b/src/core/main.c +@@ -1940,7 +1940,7 @@ finish: + if (log_get_show_location()) + command_line[pos++] = "--log-location"; + +- assert(pos + 1 < ELEMENTSOF(command_line)); ++ assert(pos < ELEMENTSOF(command_line)); + + if (arm_reboot_watchdog && arg_shutdown_watchdog > 0) { + char *e; +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0047-input_id-Recognize-buttonless-joystick-types.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0047-input_id-Recognize-buttonless-joystick-types.patch new file mode 100644 index 0000000000..816249289c --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0047-input_id-Recognize-buttonless-joystick-types.patch @@ -0,0 +1,56 @@ +From 33fc27712a13b7502804a2a3016ce490a89e000d Mon Sep 17 00:00:00 2001 +From: Martin Pitt +Date: Mon, 10 Mar 2014 08:54:22 +0100 +Subject: input_id: Recognize buttonless joystick types + +Input devices like rudders or pedals are joystick-like; they don't have +buttons, but axes like RX, THROTTLE, or RUDDER. These don't interfere with +other device types with absolute axes (touch screens, touchpads, and +accelerometers), so it's fairly safe to mark them as ID_INPUT_JOYSTICK and thus +hand out dynamic ACLs to the user. + +https://bugs.freedesktop.org/show_bug.cgi?id=70734 +(cherry picked from commit 2658624399b22a9c4a345a22c69886dc9417f801) +--- + src/udev/udev-builtin-input_id.c | 19 +++++++++++++++---- + 1 file changed, 15 insertions(+), 4 deletions(-) + +diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c +index 828b349d9c50..3b2e8975f586 100644 +--- a/src/udev/udev-builtin-input_id.c ++++ b/src/udev/udev-builtin-input_id.c +@@ -116,16 +116,27 @@ static void test_pointers (struct udev_device *dev, + udev_builtin_add_property(dev, test, "ID_INPUT_TABLET", "1"); + else if (test_bit (BTN_TOOL_FINGER, bitmask_key) && !test_bit (BTN_TOOL_PEN, bitmask_key)) + is_touchpad = 1; +- else if (test_bit (BTN_TRIGGER, bitmask_key) || +- test_bit (BTN_A, bitmask_key) || +- test_bit (BTN_1, bitmask_key)) +- udev_builtin_add_property(dev, test, "ID_INPUT_JOYSTICK", "1"); + else if (test_bit (BTN_MOUSE, bitmask_key)) + /* This path is taken by VMware's USB mouse, which has + * absolute axes, but no touch/pressure button. */ + is_mouse = 1; + else if (test_bit (BTN_TOUCH, bitmask_key)) + udev_builtin_add_property(dev, test, "ID_INPUT_TOUCHSCREEN", "1"); ++ /* joysticks don't necessarily have to have buttons; e. g. ++ * rudders/pedals are joystick-like, but buttonless; they have ++ * other fancy axes */ ++ else if (test_bit (BTN_TRIGGER, bitmask_key) || ++ test_bit (BTN_A, bitmask_key) || ++ test_bit (BTN_1, bitmask_key) || ++ test_bit (ABS_RX, bitmask_abs) || ++ test_bit (ABS_RY, bitmask_abs) || ++ test_bit (ABS_RZ, bitmask_abs) || ++ test_bit (ABS_THROTTLE, bitmask_abs) || ++ test_bit (ABS_RUDDER, bitmask_abs) || ++ test_bit (ABS_WHEEL, bitmask_abs) || ++ test_bit (ABS_GAS, bitmask_abs) || ++ test_bit (ABS_BRAKE, bitmask_abs)) ++ udev_builtin_add_property(dev, test, "ID_INPUT_JOYSTICK", "1"); + } + + if (test_bit (EV_REL, bitmask_ev) && +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0048-logind-fix-policykit-checks.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0048-logind-fix-policykit-checks.patch new file mode 100644 index 0000000000..2f9601f86c --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0048-logind-fix-policykit-checks.patch @@ -0,0 +1,44 @@ +From 10ff861167dc4b03ad9e515141f535845fcfd38a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 10 Mar 2014 08:25:15 -0400 +Subject: logind: fix policykit checks + +(cherry picked from commit 055d406624cb9e01963558767420b71e5f75d2d3) +--- + src/login/logind-dbus.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c +index fc8953155d56..18d4a5681cc5 100644 +--- a/src/login/logind-dbus.c ++++ b/src/login/logind-dbus.c +@@ -1477,6 +1477,8 @@ static int method_do_shutdown_or_sleep( + action_multiple_sessions, interactive, error, method, m); + if (r < 0) + return r; ++ if (r == 0) ++ return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */ + } + + if (blocked) { +@@ -1484,6 +1486,8 @@ static int method_do_shutdown_or_sleep( + action_ignore_inhibit, interactive, error, method, m); + if (r < 0) + return r; ++ if (r == 0) ++ return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */ + } + + if (!multiple_sessions && !blocked) { +@@ -1491,6 +1495,8 @@ static int method_do_shutdown_or_sleep( + action, interactive, error, method, m); + if (r < 0) + return r; ++ if (r == 0) ++ return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */ + } + + r = bus_manager_shutdown_or_sleep_now_or_later(m, unit_name, w, error); +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0049-nspawn-don-t-try-mknod-of-dev-console-with-the-corre.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0049-nspawn-don-t-try-mknod-of-dev-console-with-the-corre.patch new file mode 100644 index 0000000000..ab0d423a54 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0049-nspawn-don-t-try-mknod-of-dev-console-with-the-corre.patch @@ -0,0 +1,79 @@ +From 91dd24f207a5cb93227d4a7d364f033bfd572a31 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Mon, 10 Mar 2014 21:36:01 +0100 +Subject: nspawn: don't try mknod() of /dev/console with the correct + major/minor + +We overmount /dev/console with an external pty anyway, hence there's no +point in using the real major/minor when we create the node to +overmount. Instead, use the one of /dev/null now. + +This fixes a race against the cgroup device controller setup we are +using. In case /dev/console was create before the cgroup policy was +applied all was good, but if created in the opposite order the mknod() +would fail, since creating /dev/console is not allowed by it. Creating +/dev/null instances is however permitted, and hence use it. + +(cherry picked from commit eb0f0863f5af48865fb4569e2076d5f9e2313995) +--- + src/nspawn/nspawn.c | 25 ++++++++++--------------- + 1 file changed, 10 insertions(+), 15 deletions(-) + +diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c +index 84b727646c7a..091307bc49b4 100644 +--- a/src/nspawn/nspawn.c ++++ b/src/nspawn/nspawn.c +@@ -852,23 +852,19 @@ static int setup_ptmx(const char *dest) { + } + + static int setup_dev_console(const char *dest, const char *console) { ++ _cleanup_umask_ mode_t u; ++ const char *to; + struct stat st; +- _cleanup_free_ char *to = NULL; + int r; +- _cleanup_umask_ mode_t u; + + assert(dest); + assert(console); + + u = umask(0000); + +- if (stat(console, &st) < 0) { +- log_error("Failed to stat %s: %m", console); ++ if (stat("/dev/null", &st) < 0) { ++ log_error("Failed to stat /dev/null: %m"); + return -errno; +- +- } else if (!S_ISCHR(st.st_mode)) { +- log_error("/dev/console is not a char device"); +- return -EIO; + } + + r = chmod_and_chown(console, 0600, 0, 0); +@@ -877,16 +873,15 @@ static int setup_dev_console(const char *dest, const char *console) { + return r; + } + +- if (asprintf(&to, "%s/dev/console", dest) < 0) +- return log_oom(); +- + /* We need to bind mount the right tty to /dev/console since + * ptys can only exist on pts file systems. To have something +- * to bind mount things on we create a device node first, that +- * has the right major/minor (note that the major minor +- * doesn't actually matter here, since we mount it over +- * anyway). */ ++ * to bind mount things on we create a device node first, and ++ * use /dev/null for that since we the cgroups device policy ++ * allows us to create that freely, while we cannot create ++ * /dev/console. (Note that the major minor doesn't actually ++ * matter here, since we mount it over anyway). */ + ++ to = strappenda(dest, "/dev/console"); + if (mknod(to, (st.st_mode & ~07777) | 0600, st.st_rdev) < 0) { + log_error("mknod() for /dev/console failed: %m"); + return -errno; +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0050-build-sys-Find-the-tools-for-users-with-no-sbin-usr-.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0050-build-sys-Find-the-tools-for-users-with-no-sbin-usr-.patch new file mode 100644 index 0000000000..7aa3ca1fb3 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0050-build-sys-Find-the-tools-for-users-with-no-sbin-usr-.patch @@ -0,0 +1,41 @@ +From fb197dbb1cfdd13c1ec7cc7efc27e10627f74ec1 Mon Sep 17 00:00:00 2001 +From: Samuli Suominen +Date: Sat, 8 Mar 2014 09:49:29 +0200 +Subject: build-sys: Find the tools for users with no /sbin:/usr/sbin in PATH + since some systems still make the distiction between bin and sbin. + +(cherry picked from commit 2d0efdf1af5ff77441228854343c61d42a89840c) +--- + configure.ac | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 7920d6cad3c0..b275ccb310e1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -65,16 +65,16 @@ AC_PROG_CC_C99 + AC_PATH_PROG([M4], [m4]) + AC_PATH_PROG([XSLTPROC], [xsltproc]) + +-AC_PATH_PROG([QUOTAON], [quotaon], [/usr/sbin/quotaon]) +-AC_PATH_PROG([QUOTACHECK], [quotacheck], [/usr/sbin/quotacheck]) ++AC_PATH_PROG([QUOTAON], [quotaon], [/usr/sbin/quotaon], [$PATH:/usr/sbin:/sbin]) ++AC_PATH_PROG([QUOTACHECK], [quotacheck], [/usr/sbin/quotacheck], [$PATH:/usr/sbin:/sbin]) + +-AC_PATH_PROG([SETCAP], [setcap], [/usr/sbin/setcap]) ++AC_PATH_PROG([SETCAP], [setcap], [/usr/sbin/setcap], [$PATH:/usr/sbin:/sbin]) + +-AC_PATH_PROG([KILL], [kill], [/usr/bin/kill]) ++AC_PATH_PROG([KILL], [kill], [/usr/bin/kill], [$PATH:/usr/sbin:/sbin]) + +-AC_PATH_PROG([KMOD], [kmod], [/usr/bin/kmod]) ++AC_PATH_PROG([KMOD], [kmod], [/usr/bin/kmod], [$PATH:/usr/sbin:/sbin]) + +-AC_PATH_PROG([KEXEC], [kexec], [/usr/sbin/kexec]) ++AC_PATH_PROG([KEXEC], [kexec], [/usr/sbin/kexec], [$PATH:/usr/sbin:/sbin]) + + M4_DEFINES= + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0051-rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0051-rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch new file mode 100644 index 0000000000..f7e715e60b --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/210-0051-rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch @@ -0,0 +1,31 @@ +From 28be65e12016d365783ac9646bf588ec68352b75 Mon Sep 17 00:00:00 2001 +From: Peter Rajnoha +Date: Mon, 10 Mar 2014 22:58:14 +0100 +Subject: rules: mark loop device as SYSTEMD_READY=0 if no file is attached + +Check existence of loop/backing_file in sysfs and mark loop devices with +SYSTEMD_READY if missing. Such loop files is uninitialized and it's not +ready for use yet (there's no file attached). + +(cherry picked from commit ebc54302d7fc70927d5dc119e178ff03f6a911ed) +--- + rules/99-systemd.rules.in | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in +index 021359a84726..04a59c460423 100644 +--- a/rules/99-systemd.rules.in ++++ b/rules/99-systemd.rules.in +@@ -22,6 +22,9 @@ SUBSYSTEM=="block", KERNEL!="ram*", ENV{DM_UUID}=="CRYPT-*", ENV{ID_PART_TABLE_T + SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="md*", TEST!="md/array_state", ENV{SYSTEMD_READY}="0" + SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="md*", ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0" + ++# Ignore loop devices that don't have any file attached ++SUBSYSTEM=="block", KERNEL=="loop[0-9]*", TEST!="loop/backing_file", ENV{SYSTEMD_READY}="0" ++ + # Ignore nbd devices in the "add" event, with "change" the nbd is ready + ACTION=="add", SUBSYSTEM=="block", KERNEL=="nbd*", ENV{SYSTEMD_READY}="0" + +-- +1.9.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-210.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-210-r1.ebuild similarity index 77% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-210.ebuild rename to sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-210-r1.ebuild index 5bfee3538b..39bf69f9aa 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-210.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-210-r1.ebuild @@ -105,7 +105,58 @@ KEYWORDS= fi src_prepare() { - epatch "${FILESDIR}"/210-0001-fix-detection-of-missing-loginuid.patch + epatch "${FILESDIR}"/210-0001-login-fix-pos-array-allocation.patch + epatch "${FILESDIR}"/210-0002-login-set-pos-slot-to-fallback-on-pos-eviction.patch + epatch "${FILESDIR}"/210-0003-login-Allow-calling-org.freedesktop.login1.Seat.Swit.patch + epatch "${FILESDIR}"/210-0004-fix-typo-in-iDRAC-network-interface-name-irdac-idrac.patch + epatch "${FILESDIR}"/210-0005-Replace-var-run-with-run-in-remaining-places.patch + epatch "${FILESDIR}"/210-0006-Revert-back-to-var-run-at-a-couple-of-problems.patch + epatch "${FILESDIR}"/210-0007-README-document-that-var-run-must-be-a-symlink-run.patch +# epatch "${FILESDIR}"/210-0008-Use-var-run-dbus-system_bus_socket-for-the-D-Bus-soc.patch + epatch "${FILESDIR}"/210-0009-mount-don-t-send-out-PropertiesChanged-message-if-ac.patch + epatch "${FILESDIR}"/210-0010-mount-don-t-fire-PropertiesChanged-signals-for-mount.patch + epatch "${FILESDIR}"/210-0011-logs-show-fix-corrupt-output-with-empty-messages.patch + epatch "${FILESDIR}"/210-0012-journalctl-refuse-extra-arguments-with-verify-and-si.patch + epatch "${FILESDIR}"/210-0013-cdrom_id-use-the-old-MMC-fallback.patch + epatch "${FILESDIR}"/210-0014-udev-rules-setup-tty-permissions-and-group-for-sclp_.patch + epatch "${FILESDIR}"/210-0015-architecture-Add-tilegx.patch + epatch "${FILESDIR}"/210-0016-nspawn-fix-detection-of-missing-proc-self-loginuid.patch + epatch "${FILESDIR}"/210-0017-bash-add-completion-for-systemd-nspawn.patch + epatch "${FILESDIR}"/210-0018-add-bash-completion-for-systemd-cgls.patch + epatch "${FILESDIR}"/210-0019-hwdb-Update-database-of-Bluetooth-company-identifier.patch + epatch "${FILESDIR}"/210-0020-Allow-fractional-parts-in-disk-sizes.patch + epatch "${FILESDIR}"/210-0021-add-bash-completion-for-systemd-cgtop.patch + epatch "${FILESDIR}"/210-0022-Fix-systemd-stdio-bridge-symlink.patch + epatch "${FILESDIR}"/210-0023-execute-free-directory-path-if-we-fail-to-remove-it-.patch + epatch "${FILESDIR}"/210-0024-update-bash-completion-for-systemd-analyze.patch + epatch "${FILESDIR}"/210-0025-add-bash-completion-for-systemd-detect-virt.patch + epatch "${FILESDIR}"/210-0026-Do-not-print-invalid-UTF-8-in-error-messages.patch + epatch "${FILESDIR}"/210-0027-architecture-Add-cris.patch + epatch "${FILESDIR}"/210-0028-add-bash-completion-for-systemd-cat.patch + epatch "${FILESDIR}"/210-0029-man-document-missing-options-of-systemd-run.patch + epatch "${FILESDIR}"/210-0030-systemd-run-add-some-extra-safety-checks.patch + epatch "${FILESDIR}"/210-0031-journal-assume-that-next-entry-is-after-previous-ent.patch + epatch "${FILESDIR}"/210-0032-journal-forget-file-after-encountering-an-error.patch + epatch "${FILESDIR}"/210-0033-core-correctly-unregister-PIDs-from-PID-hashtables.patch + epatch "${FILESDIR}"/210-0034-logind-fix-reference-to-systemd-user-sessions.servic.patch + epatch "${FILESDIR}"/210-0035-man-update-link-to-LSB.patch + epatch "${FILESDIR}"/210-0036-man-systemd-bootchart-fix-spacing-in-command.patch + epatch "${FILESDIR}"/210-0037-man-add-missing-comma.patch + epatch "${FILESDIR}"/210-0038-build-sys-Don-t-distribute-generated-udev-rule.patch + epatch "${FILESDIR}"/210-0039-units-Do-not-unescape-instance-name-in-systemd-backl.patch + epatch "${FILESDIR}"/210-0040-util-add-timeout-to-generator-execution.patch + epatch "${FILESDIR}"/210-0041-core-busname-add-lookup-string-for-BUSNAME_FAILURE_S.patch + epatch "${FILESDIR}"/210-0042-busname-don-t-drop-service-from-the-result-string.patch + epatch "${FILESDIR}"/210-0043-manager-flush-memory-stream-before-using-the-buffer.patch + epatch "${FILESDIR}"/210-0044-networkd-link-degrade-failed-UP-to-warning.patch + epatch "${FILESDIR}"/210-0045-networkd-fix-confusion-from-missing-braces.patch + epatch "${FILESDIR}"/210-0046-fix-off-by-one-error-in-array-index-assertion.patch + epatch "${FILESDIR}"/210-0047-input_id-Recognize-buttonless-joystick-types.patch + epatch "${FILESDIR}"/210-0048-logind-fix-policykit-checks.patch + epatch "${FILESDIR}"/210-0049-nspawn-don-t-try-mknod-of-dev-console-with-the-corre.patch + epatch "${FILESDIR}"/210-0050-build-sys-Find-the-tools-for-users-with-no-sbin-usr-.patch + epatch "${FILESDIR}"/210-0051-rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch + if [[ ${PV} == *9999 ]]; then if use doc; then