diff --git a/0001-Let-some-boolean-survive-a-daemon-reload.patch b/0001-Let-some-boolean-survive-a-daemon-reload.patch deleted file mode 100644 index 6e7b7fb9..00000000 --- a/0001-Let-some-boolean-survive-a-daemon-reload.patch +++ /dev/null @@ -1,69 +0,0 @@ -Based on deff2d3e18e831d63bf98dd4114e4e35e41966e8 Mon Sep 17 00:00:00 2001 -From: Werner Fink -Date: Wed, 10 Jun 2015 10:47:13 +0200 -Subject: [PATCH] Let some boolean survive a daemon-reload - -Without the boolean bus_name_good services as well as cgroup_realized -for units a unit of Type=dbus and ExecReload sending SIGHUP to $MAINPID -will be terminated if systemd will be daemon reloaded. - -https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=746151 -https://bugs.freedesktop.org/show_bug.cgi?id=78311 -https://bugzilla.opensuse.org/show_bug.cgi?id=934077 ---- - src/core/service.c | 9 +++++++++ - src/core/unit.c | 11 +++++++++++ - 2 files changed, 20 insertions(+) - ---- systemd-219/src/core/service.c -+++ systemd-219/src/core/service.c 2015-06-11 12:24:36.769519910 +0000 -@@ -1920,6 +1920,7 @@ static int service_serialize(Unit *u, FI - unit_serialize_item_format(u, f, "main-pid", PID_FMT, s->main_pid); - - unit_serialize_item(u, f, "main-pid-known", yes_no(s->main_pid_known)); -+ unit_serialize_item(u, f, "bus-name-good", yes_no(s->bus_name_good)); - - if (s->status_text) - unit_serialize_item(u, f, "status-text", s->status_text); -@@ -2044,6 +2045,14 @@ static int service_deserialize_item(Unit - log_unit_debug(u->id, "Failed to parse main-pid-known value %s", value); - else - s->main_pid_known = b; -+ } else if (streq(key, "bus-name-good")) { -+ int b; -+ -+ b = parse_boolean(value); -+ if (b < 0) -+ log_unit_debug(u->id, "Failed to parse bus-name-good value %s", value); -+ else -+ s->bus_name_good = b; - } else if (streq(key, "status-text")) { - char *t; - ---- systemd-219/src/core/unit.c -+++ systemd-219/src/core/unit.c 2015-06-11 12:30:56.805519155 +0000 -@@ -2612,6 +2612,7 @@ int unit_serialize(Unit *u, FILE *f, FDS - - if (u->cgroup_path) - unit_serialize_item(u, f, "cgroup", u->cgroup_path); -+ unit_serialize_item(u, f, "cgroup-realized", yes_no(u->cgroup_realized)); - - if (serialize_jobs) { - if (u->job) { -@@ -2803,6 +2804,16 @@ int unit_deserialize(Unit *u, FILE *f, F - assert(hashmap_put(u->manager->cgroup_unit, s, u) == 1); - - continue; -+ } else if (streq(l, "cgroup-realized")) { -+ int b; -+ -+ b = parse_boolean(v); -+ if (b < 0) -+ log_debug("Failed to parse cgroup-realized bool %s", v); -+ else -+ u->cgroup_realized = b; -+ -+ continue; - } - - if (unit_can_serialize(u)) { diff --git a/0001-On_s390_con3270_disable_ANSI_colour_esc.patch b/0001-On_s390_con3270_disable_ANSI_colour_esc.patch index ef656b99..9756786c 100644 --- a/0001-On_s390_con3270_disable_ANSI_colour_esc.patch +++ b/0001-On_s390_con3270_disable_ANSI_colour_esc.patch @@ -1,29 +1,183 @@ --- rules/99-systemd.rules.in | 2 + src/basic/terminal-util.c | 99 ++++++++++++++++++++++++++++++++++++++++++++-- + src/basic/terminal-util.h | 1 src/core/manager.c | 24 ++++++++--- - src/shared/util.c | 99 ++++++++++++++++++++++++++++++++++++++++++++-- - src/shared/util.h | 1 4 files changed, 116 insertions(+), 10 deletions(-) -Index: systemd/rules/99-systemd.rules.in +Index: systemd-221/rules/99-systemd.rules.in =================================================================== ---- systemd.orig/rules/99-systemd.rules.in -+++ systemd/rules/99-systemd.rules.in +--- systemd-221.orig/rules/99-systemd.rules.in ++++ systemd-221/rules/99-systemd.rules.in @@ -7,7 +7,7 @@ ACTION=="remove", GOTO="systemd_end" -SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty[0-9]*", TAG+="systemd" +SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty*", TAG+="systemd" - KERNEL=="vport*", TAG+="systemd" -Index: systemd/src/core/manager.c + SUBSYSTEM=="block", TAG+="systemd" +Index: systemd-221/src/basic/terminal-util.c =================================================================== ---- systemd.orig/src/core/manager.c -+++ systemd/src/core/manager.c -@@ -113,7 +113,7 @@ static int manager_watch_jobs_in_progres +--- systemd-221.orig/src/basic/terminal-util.c ++++ systemd-221/src/basic/terminal-util.c +@@ -647,6 +647,7 @@ int status_vprintf(const char *status, b + struct iovec iovec[6] = {}; + int n = 0; + static bool prev_ephemeral; ++ static int is_ansi_console = -1; + + assert(format); + +@@ -660,6 +661,41 @@ int status_vprintf(const char *status, b + if (fd < 0) + return fd; + ++ if (_unlikely_(is_ansi_console < 0)) ++ is_ansi_console = ansi_console(fd); ++ ++ if (status && !is_ansi_console) { ++ const char *esc, *ptr; ++ esc = strchr(status, 0x1B); ++ if (esc && (ptr = strpbrk(esc, "SOFDTI*"))) { ++ switch(*ptr) { ++ case 'S': ++ status = " SKIP "; ++ break; ++ case 'O': ++ status = " OK "; ++ break; ++ case 'F': ++ status = "FAILED"; ++ break; ++ case 'D': ++ status = "DEPEND"; ++ break; ++ case 'T': ++ status = " TIME "; ++ break; ++ case 'I': ++ status = " INFO "; ++ break; ++ case '*': ++ status = " BUSY "; ++ break; ++ default: ++ break; ++ } ++ } ++ } ++ + if (ellipse) { + char *e; + size_t emax, sl; +@@ -682,8 +718,12 @@ int status_vprintf(const char *status, b + } + } + +- if (prev_ephemeral) +- IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE); ++ if (prev_ephemeral) { ++ if (is_ansi_console) ++ IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE); ++ else ++ IOVEC_SET_STRING(iovec[n++], "\r"); ++ } + prev_ephemeral = ephemeral; + + if (status) { +@@ -807,10 +847,47 @@ bool tty_is_vc_resolve(const char *tty) + return tty_is_vc(tty); + } + ++bool ansi_console(int fd) { ++ static int cached_ansi_console = -1; ++ ++ if (_likely_(cached_ansi_console >= 0)) ++ return cached_ansi_console; ++ ++ cached_ansi_console = isatty(fd) > 0; ++#if defined(__s390__) || defined(__s390x__) ++ if (cached_ansi_console) { ++ const char *e = getenv("TERM"); ++ if (e != NULL && (streq(e, "dumb") || strneq(e, "ibm3", 4))) { ++ _cleanup_free_ char *mode = NULL; ++ int r = parse_env_file("/proc/cmdline", WHITESPACE, ++ "conmode", &mode, NULL); ++ if (r < 0 || mode == NULL || !streq(mode, "3270")) ++ cached_ansi_console = 0; ++ } ++ } ++#endif ++ return cached_ansi_console; ++} ++ + const char *default_term_for_tty(const char *tty) { + assert(tty); + +- return tty_is_vc_resolve(tty) ? "TERM=linux" : "TERM=vt220"; ++ if (tty_is_vc_resolve(tty)) ++ return "TERM=linux"; ++ if (startswith(tty, "/dev/")) ++ tty += 5; ++#if defined (__s390__) || defined (__s390x__) ++ if (streq(tty, "ttyS0")) { ++ _cleanup_free_ char *mode = NULL; ++ int r = parse_env_file("/proc/cmdline", WHITESPACE, "conmode", ++ &mode, NULL); ++ if (r < 0 || mode == NULL || !streq(mode, "3270")) ++ return "TERM=dumb"; ++ if (streq(mode, "3270")) ++ return "TERM=ibm327x"; ++ } ++#endif ++ return "TERM=vt220"; + } + + int fd_columns(int fd) { +@@ -890,8 +967,22 @@ void columns_lines_cache_reset(int signu + bool on_tty(void) { + static int cached_on_tty = -1; + +- if (_unlikely_(cached_on_tty < 0)) ++ if (_unlikely_(cached_on_tty < 0)) { + cached_on_tty = isatty(STDOUT_FILENO) > 0; ++#if defined (__s390__) || defined (__s390x__) ++ if (cached_on_tty) { ++ const char *e = getenv("TERM"); ++ if (!e) ++ return cached_on_tty; ++ if (streq(e, "dumb") || strneq(e, "ibm3", 4)) { ++ char *mode = NULL; ++ int r = parse_env_file("/proc/cmdline", WHITESPACE, "conmode", &mode, NULL); ++ if (r < 0 || !mode || !streq(mode, "3270")) ++ cached_on_tty = 0; ++ } ++ } ++#endif ++ } + + return cached_on_tty; + } +Index: systemd-221/src/basic/terminal-util.h +=================================================================== +--- systemd-221.orig/src/basic/terminal-util.h ++++ systemd-221/src/basic/terminal-util.h +@@ -77,6 +77,7 @@ unsigned lines(void); + void columns_lines_cache_reset(int _unused_ signum); + + bool on_tty(void); ++bool ansi_console(int fd); + + static inline const char *ansi_highlight(void) { + return on_tty() ? ANSI_HIGHLIGHT_ON : ""; +Index: systemd-221/src/core/manager.c +=================================================================== +--- systemd-221.orig/src/core/manager.c ++++ systemd-221/src/core/manager.c +@@ -113,7 +113,7 @@ static void manager_watch_jobs_in_progre #define CYLON_BUFFER_EXTRA (2*(sizeof(ANSI_RED_ON)-1) + sizeof(ANSI_HIGHLIGHT_RED_ON)-1 + 2*(sizeof(ANSI_HIGHLIGHT_OFF)-1)) @@ -89,161 +243,3 @@ Index: systemd/src/core/manager.c m->jobs_in_progress_iteration++; -Index: systemd/src/shared/util.c -=================================================================== ---- systemd.orig/src/shared/util.c -+++ systemd/src/shared/util.c -@@ -3212,6 +3212,7 @@ int status_vprintf(const char *status, b - struct iovec iovec[6] = {}; - int n = 0; - static bool prev_ephemeral; -+ static int is_ansi_console = -1; - - assert(format); - -@@ -3225,6 +3226,41 @@ int status_vprintf(const char *status, b - if (fd < 0) - return fd; - -+ if (_unlikely_(is_ansi_console < 0)) -+ is_ansi_console = ansi_console(fd); -+ -+ if (status && !is_ansi_console) { -+ const char *esc, *ptr; -+ esc = strchr(status, 0x1B); -+ if (esc && (ptr = strpbrk(esc, "SOFDTI*"))) { -+ switch(*ptr) { -+ case 'S': -+ status = " SKIP "; -+ break; -+ case 'O': -+ status = " OK "; -+ break; -+ case 'F': -+ status = "FAILED"; -+ break; -+ case 'D': -+ status = "DEPEND"; -+ break; -+ case 'T': -+ status = " TIME "; -+ break; -+ case 'I': -+ status = " INFO "; -+ break; -+ case '*': -+ status = " BUSY "; -+ break; -+ default: -+ break; -+ } -+ } -+ } -+ - if (ellipse) { - char *e; - size_t emax, sl; -@@ -3247,8 +3283,12 @@ int status_vprintf(const char *status, b - } - } - -- if (prev_ephemeral) -- IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE); -+ if (prev_ephemeral) { -+ if (is_ansi_console) -+ IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE); -+ else -+ IOVEC_SET_STRING(iovec[n++], "\r"); -+ } - prev_ephemeral = ephemeral; - - if (status) { -@@ -3504,8 +3544,22 @@ void columns_lines_cache_reset(int signu - bool on_tty(void) { - static int cached_on_tty = -1; - -- if (_unlikely_(cached_on_tty < 0)) -+ if (_unlikely_(cached_on_tty < 0)) { - cached_on_tty = isatty(STDOUT_FILENO) > 0; -+#if defined (__s390__) || defined (__s390x__) -+ if (cached_on_tty) { -+ const char *e = getenv("TERM"); -+ if (!e) -+ return cached_on_tty; -+ if (streq(e, "dumb") || strneq(e, "ibm3", 4)) { -+ char *mode = NULL; -+ int r = parse_env_file("/proc/cmdline", WHITESPACE, "conmode", &mode, NULL); -+ if (r < 0 || !mode || !streq(mode, "3270")) -+ cached_on_tty = 0; -+ } -+ } -+#endif -+ } - - return cached_on_tty; - } -@@ -3523,6 +3577,27 @@ int files_same(const char *filea, const - a.st_ino == b.st_ino; - } - -+bool ansi_console(int fd) { -+ static int cached_ansi_console = -1; -+ -+ if (_unlikely_(cached_ansi_console < 0)) { -+ cached_ansi_console = isatty(fd) > 0; -+#if defined (__s390__) || defined (__s390x__) -+ if (cached_ansi_console) { -+ const char *e = getenv("TERM"); -+ if (e && (streq(e, "dumb") || strneq(e, "ibm3", 4))) { -+ char *mode = NULL; -+ int r = parse_env_file("/proc/cmdline", WHITESPACE, "conmode", &mode, NULL); -+ if (r < 0 || !mode || !streq(mode, "3270")) -+ cached_ansi_console = 0; -+ } -+ } -+#endif -+ } -+ -+ return cached_ansi_console; -+} -+ - int running_in_chroot(void) { - int ret; - -@@ -4006,7 +4081,23 @@ bool tty_is_vc_resolve(const char *tty) - const char *default_term_for_tty(const char *tty) { - assert(tty); - -- return tty_is_vc_resolve(tty) ? "TERM=linux" : "TERM=vt220"; -+ if (tty_is_vc_resolve(tty)) -+ return "TERM=linux"; -+ -+ if (startswith(tty, "/dev/")) -+ tty += 5; -+ -+#if defined (__s390__) || defined (__s390x__) -+ if (streq(tty, "ttyS0")) { -+ char *mode = NULL; -+ int r = parse_env_file("/proc/cmdline", WHITESPACE, "conmode", &mode, NULL); -+ if (r < 0 || !mode || !streq(mode, "3270")) -+ return "TERM=dumb"; -+ if (streq(mode, "3270")) -+ return "TERM=ibm327x"; -+ } -+#endif -+ return "TERM=vt220"; - } - - bool dirent_is_file(const struct dirent *de) { -Index: systemd/src/shared/util.h -=================================================================== ---- systemd.orig/src/shared/util.h -+++ systemd/src/shared/util.h -@@ -475,6 +475,7 @@ unsigned lines(void); - void columns_lines_cache_reset(int _unused_ signum); - - bool on_tty(void); -+bool ansi_console(int fd); - - static inline const char *ansi_highlight(void) { - return on_tty() ? ANSI_HIGHLIGHT_ON : ""; diff --git a/0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch b/0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch index d6b6fa3a..ea7eeafa 100644 --- a/0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch +++ b/0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch @@ -3,11 +3,11 @@ src/systemctl/systemctl.c | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) -Index: systemd-218/src/core/shutdown.c +Index: systemd-221/src/core/shutdown.c =================================================================== ---- systemd-218.orig/src/core/shutdown.c -+++ systemd-218/src/core/shutdown.c -@@ -400,6 +400,10 @@ int main(int argc, char *argv[]) { +--- systemd-221.orig/src/core/shutdown.c ++++ systemd-221/src/core/shutdown.c +@@ -396,6 +396,10 @@ int main(int argc, char *argv[]) { } reboot(cmd); @@ -18,11 +18,11 @@ Index: systemd-218/src/core/shutdown.c if (errno == EPERM && in_container) { /* If we are in a container, and we lacked * CAP_SYS_BOOT just exit, this will kill our -Index: systemd-218/src/systemctl/systemctl.c +Index: systemd-221/src/systemctl/systemctl.c =================================================================== ---- systemd-218.orig/src/systemctl/systemctl.c -+++ systemd-218/src/systemctl/systemctl.c -@@ -94,6 +94,7 @@ static bool arg_no_pager = false; +--- systemd-221.orig/src/systemctl/systemctl.c ++++ systemd-221/src/systemctl/systemctl.c +@@ -93,6 +93,7 @@ static bool arg_no_pager = false; static bool arg_no_wtmp = false; static bool arg_no_wall = false; static bool arg_no_reload = false; @@ -30,7 +30,7 @@ Index: systemd-218/src/systemctl/systemctl.c static bool arg_show_types = false; static bool arg_ignore_inhibitors = false; static bool arg_dry = false; -@@ -6813,6 +6814,7 @@ static int halt_parse_argv(int argc, cha +@@ -6636,6 +6637,7 @@ static int halt_parse_argv(int argc, cha { "reboot", no_argument, NULL, ARG_REBOOT }, { "force", no_argument, NULL, 'f' }, { "wtmp-only", no_argument, NULL, 'w' }, @@ -38,7 +38,7 @@ Index: systemd-218/src/systemctl/systemctl.c { "no-wtmp", no_argument, NULL, 'd' }, { "no-wall", no_argument, NULL, ARG_NO_WALL }, {} -@@ -6865,10 +6867,13 @@ static int halt_parse_argv(int argc, cha +@@ -6688,10 +6690,13 @@ static int halt_parse_argv(int argc, cha case 'i': case 'h': @@ -53,7 +53,7 @@ Index: systemd-218/src/systemctl/systemctl.c case '?': return -EINVAL; -@@ -7511,7 +7516,8 @@ static int halt_now(enum action a) { +@@ -7291,7 +7296,8 @@ static int halt_now(enum action a) { /* The kernel will automaticall flush ATA disks and suchlike * on reboot(), but the file systems need to be synce'd * explicitly in advance. */ @@ -63,7 +63,7 @@ Index: systemd-218/src/systemctl/systemctl.c /* Make sure C-A-D is handled by the kernel from this point * on... */ -@@ -7519,14 +7525,14 @@ static int halt_now(enum action a) { +@@ -7299,14 +7305,14 @@ static int halt_now(enum action a) { switch (a) { diff --git a/0001-add-network-device-after-NFS-mount-units.patch b/0001-add-network-device-after-NFS-mount-units.patch index eb070d64..955314ff 100644 --- a/0001-add-network-device-after-NFS-mount-units.patch +++ b/0001-add-network-device-after-NFS-mount-units.patch @@ -5,17 +5,17 @@ NFS share is added as "After=" dependency to the .mount. --- Makefile.am | 2 + src/basic/util.c | 1 src/core/mount-iface.c | 173 +++++++++++++++++++++++++++++++++++++++++++++++++ src/core/mount-iface.h | 25 +++++++ src/core/mount.c | 35 +++++++++ - src/shared/util.c | 1 5 files changed, 234 insertions(+), 2 deletions(-) -Index: systemd-218/Makefile.am +Index: systemd-221/Makefile.am =================================================================== ---- systemd-218.orig/Makefile.am -+++ systemd-218/Makefile.am -@@ -1134,6 +1134,8 @@ libsystemd_core_la_SOURCES = \ +--- systemd-221.orig/Makefile.am ++++ systemd-221/Makefile.am +@@ -1164,6 +1164,8 @@ libcore_la_SOURCES = \ src/core/machine-id-setup.h \ src/core/mount-setup.c \ src/core/mount-setup.h \ @@ -24,10 +24,22 @@ Index: systemd-218/Makefile.am src/core/kmod-setup.c \ src/core/kmod-setup.h \ src/core/loopback-setup.h \ -Index: systemd-218/src/core/mount-iface.c +Index: systemd-221/src/basic/util.c +=================================================================== +--- systemd-221.orig/src/basic/util.c ++++ systemd-221/src/basic/util.c +@@ -1478,6 +1478,7 @@ bool fstype_is_network(const char *fstyp + "ncp\0" + "nfs\0" + "nfs4\0" ++ "afs\0" + "gfs\0" + "gfs2\0" + "glusterfs\0"; +Index: systemd-221/src/core/mount-iface.c =================================================================== --- /dev/null -+++ systemd-218/src/core/mount-iface.c ++++ systemd-221/src/core/mount-iface.c @@ -0,0 +1,173 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + @@ -202,10 +214,10 @@ Index: systemd-218/src/core/mount-iface.c + freeifaddrs(ifa_list); + ifa_list = NULL; +} -Index: systemd-218/src/core/mount-iface.h +Index: systemd-221/src/core/mount-iface.h =================================================================== --- /dev/null -+++ systemd-218/src/core/mount-iface.h ++++ systemd-221/src/core/mount-iface.h @@ -0,0 +1,25 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + @@ -232,11 +244,11 @@ Index: systemd-218/src/core/mount-iface.h + +char *host2iface(const char *ip); +void freeroutes(void); -Index: systemd-218/src/core/mount.c +Index: systemd-221/src/core/mount.c =================================================================== ---- systemd-218.orig/src/core/mount.c -+++ systemd-218/src/core/mount.c -@@ -38,6 +38,7 @@ +--- systemd-221.orig/src/core/mount.c ++++ systemd-221/src/core/mount.c +@@ -35,6 +35,7 @@ #include "mkdir.h" #include "path-util.h" #include "mount-setup.h" @@ -244,7 +256,7 @@ Index: systemd-218/src/core/mount.c #include "unit-name.h" #include "dbus-mount.h" #include "special.h" -@@ -1365,8 +1366,9 @@ static int mount_add_one( +@@ -1332,8 +1333,9 @@ static int mount_setup_unit( _cleanup_free_ char *e = NULL, *w = NULL, *o = NULL, *f = NULL; bool load_extras = false; MountParameters *p; @@ -255,17 +267,17 @@ Index: systemd-218/src/core/mount.c int r; assert(m); -@@ -1391,6 +1393,8 @@ static int mount_add_one( - if (!e) - return -ENOMEM; +@@ -1358,6 +1360,8 @@ static int mount_setup_unit( + if (r < 0) + return r; + isnetwork = fstype_is_network(fstype); + u = manager_get_unit(m, e); if (!u) { delete = true; -@@ -1419,7 +1423,7 @@ static int mount_add_one( - if (m->running_as == SYSTEMD_SYSTEM) { +@@ -1385,7 +1389,7 @@ static int mount_setup_unit( + if (m->running_as == MANAGER_SYSTEM) { const char* target; - target = mount_needs_network(options, fstype) ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET; @@ -273,7 +285,7 @@ Index: systemd-218/src/core/mount.c r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true); if (r < 0) goto fail; -@@ -1505,6 +1509,32 @@ static int mount_add_one( +@@ -1471,6 +1475,32 @@ static int mount_setup_unit( goto fail; } @@ -296,7 +308,7 @@ Index: systemd-218/src/core/mount.c + else { + r = unit_add_dependency_by_name(u, UNIT_AFTER, target, NULL, true); + if (r < 0) -+ log_unit_error(u->id, "Failed to add dependency on %s, ignoring: %s", ++ log_unit_error(u, "Failed to add dependency on %s, ignoring: %s", + target, strerror(-r)); + } + } @@ -306,7 +318,7 @@ Index: systemd-218/src/core/mount.c if (changed) unit_add_to_dbus_queue(u); -@@ -1560,6 +1590,7 @@ static int mount_load_proc_self_mountinf +@@ -1537,6 +1567,7 @@ static int mount_load_proc_self_mountinf if (r == 0 && k < 0) r = k; } @@ -314,15 +326,3 @@ Index: systemd-218/src/core/mount.c return r; } -Index: systemd-218/src/shared/util.c -=================================================================== ---- systemd-218.orig/src/shared/util.c -+++ systemd-218/src/shared/util.c -@@ -1667,6 +1667,7 @@ bool fstype_is_network(const char *fstyp - "ncp\0" - "nfs\0" - "nfs4\0" -+ "afs\0" - "gfs\0" - "gfs2\0" - "glusterfs\0"; diff --git a/0001-avoid-abort-due-timeout-at-user-service.patch b/0001-avoid-abort-due-timeout-at-user-service.patch index e441beb2..af7fed5d 100644 --- a/0001-avoid-abort-due-timeout-at-user-service.patch +++ b/0001-avoid-abort-due-timeout-at-user-service.patch @@ -1,6 +1,12 @@ ---- systemd-209/src/login/logind-session.c -+++ systemd-209/src/login/logind-session.c 2014-02-28 12:12:14.762736079 +0000 -@@ -525,6 +525,12 @@ int session_start(Session *s) { +--- + src/login/logind-session.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +Index: systemd-221/src/login/logind-session.c +=================================================================== +--- systemd-221.orig/src/login/logind-session.c ++++ systemd-221/src/login/logind-session.c +@@ -548,6 +548,12 @@ int session_start(Session *s) { if (r < 0) return r; diff --git a/0001-bnc888612-logind-polkit-acpi.patch b/0001-bnc888612-logind-polkit-acpi.patch index 104339e0..505e1791 100644 --- a/0001-bnc888612-logind-polkit-acpi.patch +++ b/0001-bnc888612-logind-polkit-acpi.patch @@ -1,13 +1,13 @@ --- src/login/logind-action.c | 5 +++++ - src/login/logind-dbus.c | 20 ++++++++++++++++---- - 2 files changed, 21 insertions(+), 4 deletions(-) + src/login/logind-dbus.c | 31 +++++++++++++++++++++++-------- + 2 files changed, 28 insertions(+), 8 deletions(-) -Index: systemd-218/src/login/logind-action.c +Index: systemd-221/src/login/logind-action.c =================================================================== ---- systemd-218.orig/src/login/logind-action.c -+++ systemd-218/src/login/logind-action.c -@@ -83,6 +83,11 @@ int manager_handle_action( +--- systemd-221.orig/src/login/logind-action.c ++++ systemd-221/src/login/logind-action.c +@@ -85,6 +85,11 @@ int manager_handle_action( /* If the key handling is inhibited, don't do anything */ if (inhibit_key > 0) { @@ -19,57 +19,83 @@ Index: systemd-218/src/login/logind-action.c if (manager_is_inhibited(m, inhibit_key, INHIBIT_BLOCK, NULL, true, false, 0, NULL)) { log_debug("Refusing operation, %s is inhibited.", inhibit_what_to_string(inhibit_key)); return 0; -Index: systemd-218/src/login/logind-dbus.c +Index: systemd-221/src/login/logind-dbus.c =================================================================== ---- systemd-218.orig/src/login/logind-dbus.c -+++ systemd-218/src/login/logind-dbus.c -@@ -1487,9 +1487,11 @@ static int method_do_shutdown_or_sleep( - sd_bus_error *error) { +--- systemd-221.orig/src/login/logind-dbus.c ++++ systemd-221/src/login/logind-dbus.c +@@ -1625,12 +1625,13 @@ static int verify_shutdown_creds( + const char *action, + const char *action_multiple_sessions, + const char *action_ignore_inhibit, +- sd_bus_error *error) { ++ sd_bus_error *error, const char *sleep_verb) { _cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL; - bool multiple_sessions, blocked; + bool multiple_sessions, blocked, shutdown_through_acpi; - int interactive, r; uid_t uid; -+ int fd; +- int r; ++ int r, fd; + struct stat buf; assert(m); assert(message); -@@ -1533,7 +1535,17 @@ static int method_do_shutdown_or_sleep( +@@ -1652,7 +1653,19 @@ static int verify_shutdown_creds( multiple_sessions = r > 0; blocked = manager_is_inhibited(m, w, INHIBIT_BLOCK, NULL, false, true, uid, NULL); -- if (multiple_sessions) { +- if (multiple_sessions && action_multiple_sessions) { + fd = open ("/run/systemd/acpi-shutdown", O_NOFOLLOW|O_PATH|O_CLOEXEC); + if (fd >= 0) { -+ shutdown_through_acpi = ((fstat(fd,&buf) == 0) && (time(NULL) - buf.st_mtime <= 65) && !sleep_verb); ++ shutdown_through_acpi = fstat(fd, &buf) == 0 && ++ time(NULL) - buf.st_mtime <= 65 && ++ sleep_verb == NULL; + close(fd); + unlink ("/run/systemd/acpi-shutdown"); + } + else + shutdown_through_acpi = false; + -+ -+ if (multiple_sessions && !shutdown_through_acpi) { - r = bus_verify_polkit_async(message, CAP_SYS_BOOT, action_multiple_sessions, interactive, &m->polkit_registry, error); ++ if (multiple_sessions && action_multiple_sessions && ++ !shutdown_through_acpi) { + r = bus_verify_polkit_async(message, CAP_SYS_BOOT, action_multiple_sessions, interactive, UID_INVALID, &m->polkit_registry, error); if (r < 0) return r; -@@ -1541,7 +1553,7 @@ static int method_do_shutdown_or_sleep( +@@ -1660,7 +1673,7 @@ static int verify_shutdown_creds( return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */ } -- if (blocked) { -+ if (blocked && !shutdown_through_acpi) { - r = bus_verify_polkit_async(message, CAP_SYS_BOOT, action_ignore_inhibit, interactive, &m->polkit_registry, error); +- if (blocked && action_ignore_inhibit) { ++ if (blocked && action_ignore_inhibit && !shutdown_through_acpi) { + r = bus_verify_polkit_async(message, CAP_SYS_BOOT, action_ignore_inhibit, interactive, UID_INVALID, &m->polkit_registry, error); if (r < 0) return r; -@@ -1549,7 +1561,7 @@ static int method_do_shutdown_or_sleep( +@@ -1668,7 +1681,8 @@ static int verify_shutdown_creds( return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */ } -- if (!multiple_sessions && !blocked) { -+ if (!multiple_sessions && !blocked && !shutdown_through_acpi) { - r = bus_verify_polkit_async(message, CAP_SYS_BOOT, action, interactive, &m->polkit_registry, error); +- if (!multiple_sessions && !blocked && action) { ++ if (!multiple_sessions && !blocked && action && ++ !shutdown_through_acpi) { + r = bus_verify_polkit_async(message, CAP_SYS_BOOT, action, interactive, UID_INVALID, &m->polkit_registry, error); if (r < 0) return r; +@@ -1716,7 +1730,7 @@ static int method_do_shutdown_or_sleep( + } + + r = verify_shutdown_creds(m, message, w, interactive, action, action_multiple_sessions, +- action_ignore_inhibit, error); ++ action_ignore_inhibit, error, sleep_verb); + if (r != 0) + return r; + +@@ -1896,7 +1910,8 @@ static int method_schedule_shutdown(sd_b + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Unsupported shutdown type"); + + r = verify_shutdown_creds(m, message, INHIBIT_SHUTDOWN, false, +- action, action_multiple_sessions, action_ignore_inhibit, error); ++ action, action_multiple_sessions, ++ action_ignore_inhibit, error, "UNUSED"); + if (r != 0) + return r; + diff --git a/0001-core-rework-device-state-logic.patch b/0001-core-rework-device-state-logic.patch deleted file mode 100644 index 0234602c..00000000 --- a/0001-core-rework-device-state-logic.patch +++ /dev/null @@ -1,917 +0,0 @@ -From 628c89cc68ab96fce2de7ebba5933725d147aecc Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Fri, 27 Feb 2015 21:55:08 +0100 -Subject: [PATCH] core: rework device state logic -References: https://bugzilla.redhat.com/show_bug.cgi?id=1196452 - -This change introduces a new state "tentative" for device units. Device -units are considered "plugged" when udev announced them, "dead" when -they are not available in the kernel, and "tentative" when they are -referenced in /proc/self/mountinfo or /proc/swaps but not (yet) -announced via udev. - -This should fix a race when device nodes (like loop devices) are created -and immediately mounted. Previously, systemd might end up seeing the -mount unit before the device, and would thus pull down the mount because -its BindTo dependency on the device would not be fulfilled. -=== -[The bug can be triggered by - cp -a /dev/sda1 (pick any source) /dev/xxx; mount /dev/xxx /mnt; - since "xxx" is a device udev does not know about even if it runs - and is race-free in the moment you are trying. - -jengelh] ---- - src/core/device.c | 368 +++++++++++++++++++++++++++++++++--------------------- - src/core/device.h | 14 ++- - src/core/mount.c | 46 ++++--- - src/core/swap.c | 32 +++-- - src/core/swap.h | 4 +- - src/core/unit.c | 1 - - 6 files changed, 285 insertions(+), 180 deletions(-) - -diff --git a/src/core/device.c b/src/core/device.c -index 2d983cc..e41ed41 100644 ---- a/src/core/device.c -+++ b/src/core/device.c -@@ -34,7 +34,8 @@ - - static const UnitActiveState state_translation_table[_DEVICE_STATE_MAX] = { - [DEVICE_DEAD] = UNIT_INACTIVE, -- [DEVICE_PLUGGED] = UNIT_ACTIVE -+ [DEVICE_TENTATIVE] = UNIT_ACTIVATING, -+ [DEVICE_PLUGGED] = UNIT_ACTIVE, - }; - - static int device_dispatch_io(sd_event_source *source, int fd, uint32_t revents, void *userdata); -@@ -63,6 +64,41 @@ static void device_unset_sysfs(Device *d) { - d->sysfs = NULL; - } - -+static int device_set_sysfs(Device *d, const char *sysfs) { -+ Device *first; -+ char *copy; -+ int r; -+ -+ assert(d); -+ -+ if (streq_ptr(d->sysfs, sysfs)) -+ return 0; -+ -+ r = hashmap_ensure_allocated(&UNIT(d)->manager->devices_by_sysfs, &string_hash_ops); -+ if (r < 0) -+ return r; -+ -+ copy = strdup(sysfs); -+ if (!copy) -+ return -ENOMEM; -+ -+ device_unset_sysfs(d); -+ -+ first = hashmap_get(UNIT(d)->manager->devices_by_sysfs, sysfs); -+ LIST_PREPEND(same_sysfs, first, d); -+ -+ r = hashmap_replace(UNIT(d)->manager->devices_by_sysfs, copy, first); -+ if (r < 0) { -+ LIST_REMOVE(same_sysfs, first, d); -+ free(copy); -+ return r; -+ } -+ -+ d->sysfs = copy; -+ -+ return 0; -+} -+ - static void device_init(Unit *u) { - Device *d = DEVICE(u); - -@@ -110,8 +146,13 @@ static int device_coldplug(Unit *u) { - assert(d); - assert(d->state == DEVICE_DEAD); - -- if (d->sysfs) -+ if (d->found & DEVICE_FOUND_UDEV) -+ /* If udev says the device is around, it's around */ - device_set_state(d, DEVICE_PLUGGED); -+ else if (d->found != DEVICE_NOT_FOUND) -+ /* If a device is found in /proc/self/mountinfo or -+ * /proc/swaps, it's "tentatively" around. */ -+ device_set_state(d, DEVICE_TENTATIVE); - - return 0; - } -@@ -140,49 +181,9 @@ _pure_ static const char *device_sub_state_to_string(Unit *u) { - return device_state_to_string(DEVICE(u)->state); - } - --static int device_add_escaped_name(Unit *u, const char *dn) { -- _cleanup_free_ char *e = NULL; -- int r; -- -- assert(u); -- assert(dn); -- assert(dn[0] == '/'); -- -- e = unit_name_from_path(dn, ".device"); -- if (!e) -- return -ENOMEM; -- -- r = unit_add_name(u, e); -- if (r < 0 && r != -EEXIST) -- return r; -- -- return 0; --} -- --static int device_find_escape_name(Manager *m, const char *dn, Unit **_u) { -- _cleanup_free_ char *e = NULL; -- Unit *u; -- -- assert(m); -- assert(dn); -- assert(dn[0] == '/'); -- assert(_u); -- -- e = unit_name_from_path(dn, ".device"); -- if (!e) -- return -ENOMEM; -- -- u = manager_get_unit(m, e); -- if (u) { -- *_u = u; -- return 1; -- } -- -- return 0; --} -- --static int device_make_description(Unit *u, struct udev_device *dev, const char *path) { -+static int device_update_description(Unit *u, struct udev_device *dev, const char *path) { - const char *model; -+ int r; - - assert(u); - assert(dev); -@@ -207,13 +208,16 @@ static int device_make_description(Unit *u, struct udev_device *dev, const char - - j = strjoin(model, " ", label, NULL); - if (j) -- return unit_set_description(u, j); -- } -+ r = unit_set_description(u, j); -+ } else -+ r = unit_set_description(u, model); -+ } else -+ r = unit_set_description(u, path); - -- return unit_set_description(u, model); -- } -+ if (r < 0) -+ log_unit_error_errno(u->id, r, "Failed to set device description: %m"); - -- return unit_set_description(u, path); -+ return r; - } - - static int device_add_udev_wants(Unit *u, struct udev_device *dev) { -@@ -240,20 +244,20 @@ static int device_add_udev_wants(Unit *u, struct udev_device *dev) { - - n = unit_name_mangle(e, MANGLE_NOGLOB); - if (!n) -- return -ENOMEM; -+ return log_oom(); - - r = unit_add_dependency_by_name(u, UNIT_WANTS, n, NULL, true); - if (r < 0) -- return r; -+ return log_unit_error_errno(u->id, r, "Failed to add wants dependency: %m"); - } - if (!isempty(state)) -- log_unit_warning(u->id, "Property %s on %s has trailing garbage, ignoring.", -- property, strna(udev_device_get_syspath(dev))); -+ log_unit_warning(u->id, "Property %s on %s has trailing garbage, ignoring.", property, strna(udev_device_get_syspath(dev))); - - return 0; - } - --static int device_update_unit(Manager *m, struct udev_device *dev, const char *path, bool main) { -+static int device_setup_unit(Manager *m, struct udev_device *dev, const char *path, bool main) { -+ _cleanup_free_ char *e = NULL; - const char *sysfs; - Unit *u = NULL; - bool delete; -@@ -267,12 +271,18 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p - if (!sysfs) - return 0; - -- r = device_find_escape_name(m, path, &u); -- if (r < 0) -- return r; -+ e = unit_name_from_path(path, ".device"); -+ if (!e) -+ return log_oom(); -+ -+ u = manager_get_unit(m, e); - -- if (u && DEVICE(u)->sysfs && !path_equal(DEVICE(u)->sysfs, sysfs)) -+ if (u && -+ DEVICE(u)->sysfs && -+ !path_equal(DEVICE(u)->sysfs, sysfs)) { -+ log_unit_error(u->id, "Device %s appeared twice with different sysfs paths %s and %s", e, DEVICE(u)->sysfs, sysfs); - return -EEXIST; -+ } - - if (!u) { - delete = true; -@@ -281,7 +291,7 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p - if (!u) - return log_oom(); - -- r = device_add_escaped_name(u, path); -+ r = unit_add_name(u, e); - if (r < 0) - goto fail; - -@@ -293,37 +303,16 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p - * actually been seen yet ->sysfs will not be - * initialized. Hence initialize it if necessary. */ - -- if (!DEVICE(u)->sysfs) { -- Device *first; -- -- DEVICE(u)->sysfs = strdup(sysfs); -- if (!DEVICE(u)->sysfs) { -- r = -ENOMEM; -- goto fail; -- } -- -- r = hashmap_ensure_allocated(&m->devices_by_sysfs, &string_hash_ops); -- if (r < 0) -- goto fail; -- -- first = hashmap_get(m->devices_by_sysfs, sysfs); -- LIST_PREPEND(same_sysfs, first, DEVICE(u)); -- -- r = hashmap_replace(m->devices_by_sysfs, DEVICE(u)->sysfs, first); -- if (r < 0) -- goto fail; -- } -- -- device_make_description(u, dev, path); -+ r = device_set_sysfs(DEVICE(u), sysfs); -+ if (r < 0) -+ goto fail; - -- if (main) { -- /* The additional systemd udev properties we only -- * interpret for the main object */ -+ (void) device_update_description(u, dev, path); - -- r = device_add_udev_wants(u, dev); -- if (r < 0) -- goto fail; -- } -+ /* The additional systemd udev properties we only interpret -+ * for the main object */ -+ if (main) -+ (void) device_add_udev_wants(u, dev); - - /* Note that this won't dispatch the load queue, the caller - * has to do that if needed and appropriate */ -@@ -332,7 +321,7 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p - return 0; - - fail: -- log_warning_errno(r, "Failed to load device unit: %m"); -+ log_unit_warning_errno(u->id, r, "Failed to set up device unit: %m"); - - if (delete && u) - unit_free(u); -@@ -340,7 +329,7 @@ fail: - return r; - } - --static int device_process_new_device(Manager *m, struct udev_device *dev) { -+static int device_process_new(Manager *m, struct udev_device *dev) { - const char *sysfs, *dn, *alias; - struct udev_list_entry *item = NULL, *first = NULL; - int r; -@@ -352,14 +341,14 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) { - return 0; - - /* Add the main unit named after the sysfs path */ -- r = device_update_unit(m, dev, sysfs, true); -+ r = device_setup_unit(m, dev, sysfs, true); - if (r < 0) - return r; - - /* Add an additional unit for the device node */ - dn = udev_device_get_devnode(dev); - if (dn) -- device_update_unit(m, dev, dn, false); -+ (void) device_setup_unit(m, dev, dn, false); - - /* Add additional units for all symlinks */ - first = udev_device_get_devlinks_list_entry(dev); -@@ -386,7 +375,7 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) { - st.st_rdev != udev_device_get_devnum(dev)) - continue; - -- device_update_unit(m, dev, p, false); -+ (void) device_setup_unit(m, dev, p, false); - } - - /* Add additional units for all explicitly configured -@@ -403,7 +392,7 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) { - e[l] = 0; - - if (path_is_absolute(e)) -- device_update_unit(m, dev, e, false); -+ (void) device_setup_unit(m, dev, e, false); - else - log_warning("SYSTEMD_ALIAS for %s is not an absolute path, ignoring: %s", sysfs, e); - } -@@ -414,39 +403,62 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) { - return 0; - } - --static void device_set_path_plugged(Manager *m, struct udev_device *dev) { -- const char *sysfs; -+static void device_update_found_one(Device *d, bool add, DeviceFound found, bool now) { -+ DeviceFound n; -+ -+ assert(d); -+ -+ n = add ? (d->found | found) : (d->found & ~found); -+ if (n == d->found) -+ return; -+ -+ d->found = n; -+ -+ if (now) { -+ if (d->found & DEVICE_FOUND_UDEV) -+ device_set_state(d, DEVICE_PLUGGED); -+ else if (d->found != DEVICE_NOT_FOUND) -+ device_set_state(d, DEVICE_TENTATIVE); -+ else -+ device_set_state(d, DEVICE_DEAD); -+ } -+} -+ -+static int device_update_found_by_sysfs(Manager *m, const char *sysfs, bool add, DeviceFound found, bool now) { - Device *d, *l; - - assert(m); -- assert(dev); -+ assert(sysfs); - -- sysfs = udev_device_get_syspath(dev); -- if (!sysfs) -- return; -+ if (found == DEVICE_NOT_FOUND) -+ return 0; - - l = hashmap_get(m->devices_by_sysfs, sysfs); - LIST_FOREACH(same_sysfs, d, l) -- device_set_state(d, DEVICE_PLUGGED); -+ device_update_found_one(d, add, found, now); -+ -+ return 0; - } - --static int device_process_removed_device(Manager *m, struct udev_device *dev) { -- const char *sysfs; -- Device *d; -+static int device_update_found_by_name(Manager *m, const char *path, bool add, DeviceFound found, bool now) { -+ _cleanup_free_ char *e = NULL; -+ Unit *u; - - assert(m); -- assert(dev); -+ assert(path); - -- sysfs = udev_device_get_syspath(dev); -- if (!sysfs) -- return -ENOMEM; -+ if (found == DEVICE_NOT_FOUND) -+ return 0; - -- /* Remove all units of this sysfs path */ -- while ((d = hashmap_get(m->devices_by_sysfs, sysfs))) { -- device_unset_sysfs(d); -- device_set_state(d, DEVICE_DEAD); -- } -+ e = unit_name_from_path(path, ".device"); -+ if (!e) -+ return log_oom(); - -+ u = manager_get_unit(m, e); -+ if (!u) -+ return 0; -+ -+ device_update_found_one(DEVICE(u), add, found, now); - return 0; - } - -@@ -462,22 +474,6 @@ static bool device_is_ready(struct udev_device *dev) { - return parse_boolean(ready) != 0; - } - --static int device_process_new_path(Manager *m, const char *path) { -- _cleanup_udev_device_unref_ struct udev_device *dev = NULL; -- -- assert(m); -- assert(path); -- -- dev = udev_device_new_from_syspath(m->udev, path); -- if (!dev) -- return log_oom(); -- -- if (!device_is_ready(dev)) -- return 0; -- -- return device_process_new_device(m, dev); --} -- - static Unit *device_following(Unit *u) { - Device *d = DEVICE(u); - Device *other, *first = NULL; -@@ -604,12 +600,31 @@ static int device_enumerate(Manager *m) { - goto fail; - - first = udev_enumerate_get_list_entry(e); -- udev_list_entry_foreach(item, first) -- device_process_new_path(m, udev_list_entry_get_name(item)); -+ udev_list_entry_foreach(item, first) { -+ _cleanup_udev_device_unref_ struct udev_device *dev = NULL; -+ const char *sysfs; -+ -+ sysfs = udev_list_entry_get_name(item); -+ -+ dev = udev_device_new_from_syspath(m->udev, sysfs); -+ if (!dev) { -+ log_oom(); -+ continue; -+ } -+ -+ if (!device_is_ready(dev)) -+ continue; -+ -+ (void) device_process_new(m, dev); -+ -+ device_update_found_by_sysfs(m, sysfs, true, DEVICE_FOUND_UDEV, false); -+ } - - return 0; - - fail: -+ log_error_errno(r, "Failed to enumerate devices: %m"); -+ - device_shutdown(m); - return r; - } -@@ -617,7 +632,7 @@ fail: - static int device_dispatch_io(sd_event_source *source, int fd, uint32_t revents, void *userdata) { - _cleanup_udev_device_unref_ struct udev_device *dev = NULL; - Manager *m = userdata; -- const char *action; -+ const char *action, *sysfs; - int r; - - assert(m); -@@ -639,33 +654,47 @@ static int device_dispatch_io(sd_event_source *source, int fd, uint32_t revents, - if (!dev) - return 0; - -+ sysfs = udev_device_get_syspath(dev); -+ if (!sysfs) { -+ log_error("Failed to get udev sys path."); -+ return 0; -+ } -+ - action = udev_device_get_action(dev); - if (!action) { - log_error("Failed to get udev action string."); - return 0; - } - -- if (streq(action, "remove") || !device_is_ready(dev)) { -- r = device_process_removed_device(m, dev); -- if (r < 0) -- log_error_errno(r, "Failed to process device remove event: %m"); -- -- r = swap_process_removed_device(m, dev); -+ if (streq(action, "remove")) { -+ r = swap_process_device_remove(m, dev); - if (r < 0) - log_error_errno(r, "Failed to process swap device remove event: %m"); - -- } else { -- r = device_process_new_device(m, dev); -- if (r < 0) -- log_error_errno(r, "Failed to process device new event: %m"); -+ /* If we get notified that a device was removed by -+ * udev, then it's completely gone, hence unset all -+ * found bits */ -+ device_update_found_by_sysfs(m, sysfs, false, DEVICE_FOUND_UDEV|DEVICE_FOUND_MOUNT|DEVICE_FOUND_SWAP, true); - -- r = swap_process_new_device(m, dev); -+ } else if (device_is_ready(dev)) { -+ -+ (void) device_process_new(m, dev); -+ -+ r = swap_process_device_new(m, dev); - if (r < 0) - log_error_errno(r, "Failed to process swap device new event: %m"); - - manager_dispatch_load_queue(m); - -- device_set_path_plugged(m, dev); -+ /* The device is found now, set the udev found bit */ -+ device_update_found_by_sysfs(m, sysfs, true, DEVICE_FOUND_UDEV, true); -+ -+ } else { -+ /* The device is nominally around, but not ready for -+ * us. Hence unset the udev bit, but leave the rest -+ * around. */ -+ -+ device_update_found_by_sysfs(m, sysfs, false, DEVICE_FOUND_UDEV, true); - } - - return 0; -@@ -684,9 +713,58 @@ static bool device_supported(Manager *m) { - return read_only <= 0; - } - -+int device_found_node(Manager *m, const char *node, bool add, DeviceFound found, bool now) { -+ _cleanup_udev_device_unref_ struct udev_device *dev = NULL; -+ struct stat st; -+ -+ assert(m); -+ assert(node); -+ -+ /* This is called whenever we find a device referenced in -+ * /proc/swaps or /proc/self/mounts. Such a device might be -+ * mounted/enabled at a time where udev has not finished -+ * probing it yet, and we thus haven't learned about it -+ * yet. In this case we will set the device unit to -+ * "tentative" state. */ -+ -+ if (add) { -+ if (!path_startswith(node, "/dev")) -+ return 0; -+ -+ if (stat(node, &st) < 0) { -+ if (errno == ENOENT) -+ return 0; -+ -+ return log_error_errno(errno, "Failed to stat device node file %s: %m", node); -+ } -+ -+ if (!S_ISBLK(st.st_mode) && !S_ISCHR(st.st_mode)) -+ return 0; -+ -+ dev = udev_device_new_from_devnum(m->udev, S_ISBLK(st.st_mode) ? 'b' : 'c', st.st_rdev); -+ if (!dev) { -+ if (errno == ENOENT) -+ return 0; -+ -+ return log_oom(); -+ } -+ -+ /* If the device is known in the kernel and newly -+ * appeared, then we'll create a device unit for it, -+ * under the name referenced in /proc/swaps or -+ * /proc/self/mountinfo. */ -+ -+ (void) device_setup_unit(m, dev, node, false); -+ } -+ -+ /* Update the device unit's state, should it exist */ -+ return device_update_found_by_name(m, node, add, found, now); -+} -+ - static const char* const device_state_table[_DEVICE_STATE_MAX] = { - [DEVICE_DEAD] = "dead", -- [DEVICE_PLUGGED] = "plugged" -+ [DEVICE_TENTATIVE] = "tentative", -+ [DEVICE_PLUGGED] = "plugged", - }; - - DEFINE_STRING_TABLE_LOOKUP(device_state, DeviceState); -diff --git a/src/core/device.h b/src/core/device.h -index 9065085..9f46e08 100644 ---- a/src/core/device.h -+++ b/src/core/device.h -@@ -28,20 +28,28 @@ typedef struct Device Device; - * simplifies the state engine greatly */ - typedef enum DeviceState { - DEVICE_DEAD, -- DEVICE_PLUGGED, -+ DEVICE_TENTATIVE, /* mounted or swapped, but not (yet) announced by udev */ -+ DEVICE_PLUGGED, /* announced by udev */ - _DEVICE_STATE_MAX, - _DEVICE_STATE_INVALID = -1 - } DeviceState; - -+typedef enum DeviceFound { -+ DEVICE_NOT_FOUND = 0, -+ DEVICE_FOUND_UDEV = 1, -+ DEVICE_FOUND_MOUNT = 2, -+ DEVICE_FOUND_SWAP = 4, -+} DeviceFound; -+ - struct Device { - Unit meta; - - char *sysfs; -+ DeviceFound found; - - /* In order to be able to distinguish dependencies on - different device nodes we might end up creating multiple - devices for the same sysfs path. We chain them up here. */ -- - LIST_FIELDS(struct Device, same_sysfs); - - DeviceState state; -@@ -51,3 +59,5 @@ extern const UnitVTable device_vtable; - - const char* device_state_to_string(DeviceState i) _const_; - DeviceState device_state_from_string(const char *s) _pure_; -+ -+int device_found_node(Manager *m, const char *node, bool add, DeviceFound found, bool now); -diff --git a/src/core/mount.c b/src/core/mount.c -index 40037e7..8e4a376 100644 ---- a/src/core/mount.c -+++ b/src/core/mount.c -@@ -1386,7 +1386,7 @@ static int mount_dispatch_timer(sd_event_source *source, usec_t usec, void *user - return 0; - } - --static int mount_add_one( -+static int mount_setup_unit( - Manager *m, - const char *what, - const char *where, -@@ -1429,7 +1429,7 @@ static int mount_add_one( - - u = unit_new(m, sizeof(Mount)); - if (!u) -- return -ENOMEM; -+ return log_oom(); - - r = unit_add_name(u, e); - if (r < 0) -@@ -1542,6 +1542,8 @@ static int mount_add_one( - return 0; - - fail: -+ log_warning_errno(r, "Failed to set up mount unit: %m"); -+ - if (delete && u) - unit_free(u); - -@@ -1549,33 +1551,36 @@ fail: - } - - static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) { -- _cleanup_(mnt_free_tablep) struct libmnt_table *tb = NULL; -- _cleanup_(mnt_free_iterp) struct libmnt_iter *itr = NULL; -- struct libmnt_fs *fs; -+ _cleanup_(mnt_free_tablep) struct libmnt_table *t = NULL; -+ _cleanup_(mnt_free_iterp) struct libmnt_iter *i = NULL; - int r = 0; - - assert(m); - -- tb = mnt_new_table(); -- itr = mnt_new_iter(MNT_ITER_FORWARD); -- if (!tb || !itr) -+ t = mnt_new_table(); -+ if (!t) - return log_oom(); - -- r = mnt_table_parse_mtab(tb, NULL); -+ i = mnt_new_iter(MNT_ITER_FORWARD); -+ if (!i) -+ return log_oom(); -+ -+ r = mnt_table_parse_mtab(t, NULL); - if (r < 0) -- return r; -+ return log_error_errno(r, "Failed to parse /proc/self/mountinfo: %m"); - - r = 0; - for (;;) { - const char *device, *path, *options, *fstype; - _cleanup_free_ const char *d = NULL, *p = NULL; -+ struct libmnt_fs *fs; - int k; - -- k = mnt_table_next_fs(tb, itr, &fs); -+ k = mnt_table_next_fs(t, i, &fs); - if (k == 1) - break; -- else if (k < 0) -- return log_error_errno(k, "Failed to get next entry from /etc/fstab: %m"); -+ if (k < 0) -+ return log_error_errno(k, "Failed to get next entry from /proc/self/mountinfo: %m"); - - device = mnt_fs_get_source(fs); - path = mnt_fs_get_target(fs); -@@ -1583,11 +1588,16 @@ static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) { - fstype = mnt_fs_get_fstype(fs); - - d = cunescape(device); -+ if (!d) -+ return log_oom(); -+ - p = cunescape(path); -- if (!d || !p) -+ if (!p) - return log_oom(); - -- k = mount_add_one(m, d, p, options, fstype, set_flags); -+ (void) device_found_node(m, d, true, DEVICE_FOUND_MOUNT, set_flags); -+ -+ k = mount_setup_unit(m, d, p, options, fstype, set_flags); - if (r == 0 && k < 0) - r = k; - } -@@ -1731,8 +1741,6 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents, - - r = mount_load_proc_self_mountinfo(m, true); - if (r < 0) { -- log_error_errno(r, "Failed to reread /proc/self/mountinfo: %m"); -- - /* Reset flags, just in case, for later calls */ - LIST_FOREACH(units_by_type, u, m->units_by_type[UNIT_MOUNT]) { - Mount *mount = MOUNT(u); -@@ -1765,6 +1773,10 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents, - break; - } - -+ if (mount->parameters_proc_self_mountinfo.what) -+ (void) device_found_node(m, mount->parameters_proc_self_mountinfo.what, false, DEVICE_FOUND_MOUNT, true); -+ -+ - } else if (mount->just_mounted || mount->just_changed) { - - /* New or changed mount entry */ -diff --git a/src/core/swap.c b/src/core/swap.c -index f73a8e6..de3a5d8 100644 ---- a/src/core/swap.c -+++ b/src/core/swap.c -@@ -331,7 +331,7 @@ static int swap_load(Unit *u) { - return swap_verify(s); - } - --static int swap_add_one( -+static int swap_setup_unit( - Manager *m, - const char *what, - const char *what_proc_swaps, -@@ -356,8 +356,10 @@ static int swap_add_one( - - if (u && - SWAP(u)->from_proc_swaps && -- !path_equal(SWAP(u)->parameters_proc_swaps.what, what_proc_swaps)) -+ !path_equal(SWAP(u)->parameters_proc_swaps.what, what_proc_swaps)) { -+ log_error("Swap %s appeared twice with different device paths %s and %s", e, SWAP(u)->parameters_proc_swaps.what, what_proc_swaps); - return -EEXIST; -+ } - - if (!u) { - delete = true; -@@ -372,7 +374,7 @@ static int swap_add_one( - - SWAP(u)->what = strdup(what); - if (!SWAP(u)->what) { -- r = log_oom(); -+ r = -ENOMEM; - goto fail; - } - -@@ -400,7 +402,6 @@ static int swap_add_one( - p->priority = priority; - - unit_add_to_dbus_queue(u); -- - return 0; - - fail: -@@ -412,7 +413,7 @@ fail: - return r; - } - --static int swap_process_new_swap(Manager *m, const char *device, int prio, bool set_flags) { -+static int swap_process_new(Manager *m, const char *device, int prio, bool set_flags) { - _cleanup_udev_device_unref_ struct udev_device *d = NULL; - struct udev_list_entry *item = NULL, *first = NULL; - const char *dn; -@@ -421,7 +422,7 @@ static int swap_process_new_swap(Manager *m, const char *device, int prio, bool - - assert(m); - -- r = swap_add_one(m, device, device, prio, set_flags); -+ r = swap_setup_unit(m, device, device, prio, set_flags); - if (r < 0) - return r; - -@@ -437,7 +438,7 @@ static int swap_process_new_swap(Manager *m, const char *device, int prio, bool - /* Add the main device node */ - dn = udev_device_get_devnode(d); - if (dn && !streq(dn, device)) -- swap_add_one(m, dn, device, prio, set_flags); -+ swap_setup_unit(m, dn, device, prio, set_flags); - - /* Add additional units for all symlinks */ - first = udev_device_get_devlinks_list_entry(d); -@@ -458,7 +459,7 @@ static int swap_process_new_swap(Manager *m, const char *device, int prio, bool - st.st_rdev != udev_device_get_devnum(d)) - continue; - -- swap_add_one(m, p, device, prio, set_flags); -+ swap_setup_unit(m, p, device, prio, set_flags); - } - - return r; -@@ -1084,15 +1085,17 @@ static int swap_load_proc_swaps(Manager *m, bool set_flags) { - if (k == EOF) - break; - -- log_warning("Failed to parse /proc/swaps:%u", i); -+ log_warning("Failed to parse /proc/swaps:%u.", i); - continue; - } - - d = cunescape(dev); - if (!d) -- return -ENOMEM; -+ return log_oom(); -+ -+ device_found_node(m, d, true, DEVICE_FOUND_SWAP, set_flags); - -- k = swap_process_new_swap(m, d, prio, set_flags); -+ k = swap_process_new(m, d, prio, set_flags); - if (k < 0) - r = k; - } -@@ -1144,6 +1147,9 @@ static int swap_dispatch_io(sd_event_source *source, int fd, uint32_t revents, v - break; - } - -+ if (swap->what) -+ device_found_node(m, swap->what, false, DEVICE_FOUND_SWAP, true); -+ - } else if (swap->just_activated) { - - /* New swap entry */ -@@ -1291,7 +1297,7 @@ fail: - return r; - } - --int swap_process_new_device(Manager *m, struct udev_device *dev) { -+int swap_process_device_new(Manager *m, struct udev_device *dev) { - struct udev_list_entry *item = NULL, *first = NULL; - _cleanup_free_ char *e = NULL; - const char *dn; -@@ -1334,7 +1340,7 @@ int swap_process_new_device(Manager *m, struct udev_device *dev) { - return r; - } - --int swap_process_removed_device(Manager *m, struct udev_device *dev) { -+int swap_process_device_remove(Manager *m, struct udev_device *dev) { - const char *dn; - int r = 0; - Swap *s; -diff --git a/src/core/swap.h b/src/core/swap.h -index c36c6f2..5de8c20 100644 ---- a/src/core/swap.h -+++ b/src/core/swap.h -@@ -115,8 +115,8 @@ struct Swap { - - extern const UnitVTable swap_vtable; - --int swap_process_new_device(Manager *m, struct udev_device *dev); --int swap_process_removed_device(Manager *m, struct udev_device *dev); -+int swap_process_device_new(Manager *m, struct udev_device *dev); -+int swap_process_device_remove(Manager *m, struct udev_device *dev); - - const char* swap_state_to_string(SwapState i) _const_; - SwapState swap_state_from_string(const char *s) _pure_; -diff --git a/src/core/unit.c b/src/core/unit.c -index 63ccd67..7cd7043 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -2834,7 +2834,6 @@ int unit_add_node_link(Unit *u, const char *what, bool wants) { - return -ENOMEM; - - r = manager_load_unit(u->manager, e, NULL, NULL, &device); -- - if (r < 0) - return r; - --- -2.1.4 - diff --git a/0001-let-systemctl-completion-ignore-at-names.patch b/0001-let-systemctl-completion-ignore-at-names.patch index 4763dcaf..4159038e 100644 --- a/0001-let-systemctl-completion-ignore-at-names.patch +++ b/0001-let-systemctl-completion-ignore-at-names.patch @@ -1,5 +1,11 @@ ---- systemd-210/shell-completion/bash/systemctl.in -+++ systemd-210/shell-completion/bash/systemctl.in 2014-08-20 15:01:04.502736981 +0000 +--- + shell-completion/bash/systemctl.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: systemd-221/shell-completion/bash/systemctl.in +=================================================================== +--- systemd-221.orig/shell-completion/bash/systemctl.in ++++ systemd-221/shell-completion/bash/systemctl.in @@ -43,7 +43,7 @@ __filter_units_by_property () { local units=("$@") local props diff --git a/0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch b/0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch index 291de476..0375d595 100644 --- a/0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch +++ b/0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch @@ -8,12 +8,14 @@ is used, the XDG_RUNTIME_DIR will not be clobbered by the new uid. This belongs to BNC#852015 and also to BNC#855160 --- - pam_systemd.c | 19 +++++++++++++++++++ + src/login/pam_systemd.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) ---- systemd-209/src/login/pam_systemd.c -+++ systemd-209/src/login/pam_systemd.c 2014-02-26 14:31:30.158235525 +0000 -@@ -447,6 +447,25 @@ _public_ PAM_EXTERN int pam_sm_open_sess +Index: systemd-221/src/login/pam_systemd.c +=================================================================== +--- systemd-221.orig/src/login/pam_systemd.c ++++ systemd-221/src/login/pam_systemd.c +@@ -445,6 +445,25 @@ _public_ PAM_EXTERN int pam_sm_open_sess r = export_legacy_dbus_address(handle, pw->pw_uid, runtime_path); if (r != PAM_SUCCESS) return r; diff --git a/0009-make-xsltproc-use-correct-ROFF-links.patch b/0009-make-xsltproc-use-correct-ROFF-links.patch index c2f879d5..d3ee47a2 100644 --- a/0009-make-xsltproc-use-correct-ROFF-links.patch +++ b/0009-make-xsltproc-use-correct-ROFF-links.patch @@ -1,5 +1,11 @@ ---- systemd-208/man/custom-man.xsl -+++ systemd-208/man/custom-man.xsl 2013-10-21 09:23:31.030735259 +0000 +--- + man/custom-man.xsl | 3 +++ + 1 file changed, 3 insertions(+) + +Index: systemd-221/man/custom-man.xsl +=================================================================== +--- systemd-221.orig/man/custom-man.xsl ++++ systemd-221/man/custom-man.xsl @@ -61,4 +61,7 @@ " diff --git a/0010-do-not-install-sulogin-unit-with-poweroff.patch b/0010-do-not-install-sulogin-unit-with-poweroff.patch index c854754f..af9d7f53 100644 --- a/0010-do-not-install-sulogin-unit-with-poweroff.patch +++ b/0010-do-not-install-sulogin-unit-with-poweroff.patch @@ -2,9 +2,15 @@ | Belongs to bnc#849071 that is do not install console-shell.service | in any system target as this will cause automatic poweroff at boot. | ---- systemd-208/units/console-shell.service.m4.in -+++ systemd-208/units/console-shell.service.m4.in 2013-11-06 09:35:37.958693570 +0000 -@@ -26,6 +26,3 @@ StandardError=inherit +--- + units/console-shell.service.m4.in | 3 --- + 1 file changed, 3 deletions(-) + +Index: systemd-221/units/console-shell.service.m4.in +=================================================================== +--- systemd-221.orig/units/console-shell.service.m4.in ++++ systemd-221/units/console-shell.service.m4.in +@@ -28,6 +28,3 @@ StandardError=inherit KillMode=process IgnoreSIGPIPE=no SendSIGHUP=yes diff --git a/0014-journald-with-journaling-FS.patch b/0014-journald-with-journaling-FS.patch index c3ae1a23..a8255ab5 100644 --- a/0014-journald-with-journaling-FS.patch +++ b/0014-journald-with-journaling-FS.patch @@ -13,10 +13,10 @@ No word on compression… src/journal/journald-server.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) -Index: systemd/src/journal/journald-server.c +Index: systemd-221/src/journal/journald-server.c =================================================================== ---- systemd.orig/src/journal/journald-server.c -+++ systemd/src/journal/journald-server.c +--- systemd-221.orig/src/journal/journald-server.c ++++ systemd-221/src/journal/journald-server.c @@ -21,6 +21,7 @@ #include @@ -25,7 +25,7 @@ Index: systemd/src/journal/journald-server.c #include #include #include -@@ -917,6 +918,38 @@ finish: +@@ -918,6 +919,38 @@ finish: dispatch_message_real(s, iovec, n, m, ucred, tv, label, label_len, unit_id, priority, object_pid); } @@ -64,7 +64,7 @@ Index: systemd/src/journal/journald-server.c static int system_journal_open(Server *s, bool flush_requested) { int r; -@@ -946,6 +979,7 @@ static int system_journal_open(Server *s +@@ -947,6 +980,7 @@ static int system_journal_open(Server *s fn = strjoina("/var/log/journal/", ids); (void) mkdir(fn, 0755); diff --git a/0019-make-completion-smart-to-be-able-to-redirect.patch b/0019-make-completion-smart-to-be-able-to-redirect.patch index a545cf08..ca3a4b0c 100644 --- a/0019-make-completion-smart-to-be-able-to-redirect.patch +++ b/0019-make-completion-smart-to-be-able-to-redirect.patch @@ -12,10 +12,10 @@ shell-completion/bash/udevadm | 6 +++++- 11 files changed, 70 insertions(+), 11 deletions(-) -Index: systemd/shell-completion/bash/coredumpctl +Index: systemd-221/shell-completion/bash/coredumpctl =================================================================== ---- systemd.orig/shell-completion/bash/coredumpctl -+++ systemd/shell-completion/bash/coredumpctl +--- systemd-221.orig/shell-completion/bash/coredumpctl ++++ systemd-221/shell-completion/bash/coredumpctl @@ -44,6 +44,10 @@ _coredumpctl() { [DUMP]='dump gdb' ) @@ -33,10 +33,10 @@ Index: systemd/shell-completion/bash/coredumpctl -complete -F _coredumpctl coredumpctl +complete -o default -o bashdefault -F _coredumpctl coredumpctl -Index: systemd/shell-completion/bash/hostnamectl +Index: systemd-221/shell-completion/bash/hostnamectl =================================================================== ---- systemd.orig/shell-completion/bash/hostnamectl -+++ systemd/shell-completion/bash/hostnamectl +--- systemd-221.orig/shell-completion/bash/hostnamectl ++++ systemd-221/shell-completion/bash/hostnamectl @@ -30,6 +30,10 @@ _hostnamectl() { local OPTS='-h --help --version --transient --static --pretty --no-ask-password -H --host --machine' @@ -54,10 +54,10 @@ Index: systemd/shell-completion/bash/hostnamectl -complete -F _hostnamectl hostnamectl +complete -o default -o bashdefault -F _hostnamectl hostnamectl -Index: systemd/shell-completion/bash/journalctl +Index: systemd-221/shell-completion/bash/journalctl =================================================================== ---- systemd.orig/shell-completion/bash/journalctl -+++ systemd/shell-completion/bash/journalctl +--- systemd-221.orig/shell-completion/bash/journalctl ++++ systemd-221/shell-completion/bash/journalctl @@ -55,6 +55,10 @@ _journalctl() { --root --machine' ) @@ -75,10 +75,10 @@ Index: systemd/shell-completion/bash/journalctl -complete -F _journalctl journalctl +complete -o default -o bashdefault -F _journalctl journalctl -Index: systemd/shell-completion/bash/kernel-install +Index: systemd-221/shell-completion/bash/kernel-install =================================================================== ---- systemd.orig/shell-completion/bash/kernel-install -+++ systemd/shell-completion/bash/kernel-install +--- systemd-221.orig/shell-completion/bash/kernel-install ++++ systemd-221/shell-completion/bash/kernel-install @@ -18,11 +18,22 @@ # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see . @@ -108,10 +108,10 @@ Index: systemd/shell-completion/bash/kernel-install -complete -F _kernel_install kernel-install +complete -o default -o bashdefault -F _kernel_install kernel-install -Index: systemd/shell-completion/bash/localectl +Index: systemd-221/shell-completion/bash/localectl =================================================================== ---- systemd.orig/shell-completion/bash/localectl -+++ systemd/shell-completion/bash/localectl +--- systemd-221.orig/shell-completion/bash/localectl ++++ systemd-221/shell-completion/bash/localectl @@ -36,6 +36,10 @@ _localectl() { local OPTS='-h --help --version --no-convert --no-pager --no-ask-password -H --host --machine' @@ -129,10 +129,10 @@ Index: systemd/shell-completion/bash/localectl -complete -F _localectl localectl +complete -o default -o bashdefault -F _localectl localectl -Index: systemd/shell-completion/bash/loginctl +Index: systemd-221/shell-completion/bash/loginctl =================================================================== ---- systemd.orig/shell-completion/bash/loginctl -+++ systemd/shell-completion/bash/loginctl +--- systemd-221.orig/shell-completion/bash/loginctl ++++ systemd-221/shell-completion/bash/loginctl @@ -38,6 +38,10 @@ _loginctl () { [ARG]='--host -H --kill-who --property -p --signal -s --machine' ) @@ -150,12 +150,12 @@ Index: systemd/shell-completion/bash/loginctl -complete -F _loginctl loginctl +complete -o default -o bashdefault -F _loginctl loginctl -Index: systemd/shell-completion/bash/systemctl.in +Index: systemd-221/shell-completion/bash/systemctl.in =================================================================== ---- systemd.orig/shell-completion/bash/systemctl.in -+++ systemd/shell-completion/bash/systemctl.in +--- systemd-221.orig/shell-completion/bash/systemctl.in ++++ systemd-221/shell-completion/bash/systemctl.in @@ -96,6 +96,10 @@ _systemctl () { - [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --root' + [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --job-mode --root' ) + if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then @@ -165,16 +165,16 @@ Index: systemd/shell-completion/bash/systemctl.in if __contains_word "--user" ${COMP_WORDS[*]}; then mode=--user else -@@ -264,4 +268,4 @@ _systemctl () { +@@ -268,4 +272,4 @@ _systemctl () { return 0 } -complete -F _systemctl systemctl +complete -o default -o bashdefault -F _systemctl systemctl -Index: systemd/shell-completion/bash/systemd-analyze +Index: systemd-221/shell-completion/bash/systemd-analyze =================================================================== ---- systemd.orig/shell-completion/bash/systemd-analyze -+++ systemd/shell-completion/bash/systemd-analyze +--- systemd-221.orig/shell-completion/bash/systemd-analyze ++++ systemd-221/shell-completion/bash/systemd-analyze @@ -47,6 +47,10 @@ _systemd_analyze() { [VERIFY]='verify' ) @@ -192,10 +192,10 @@ Index: systemd/shell-completion/bash/systemd-analyze -complete -F _systemd_analyze systemd-analyze +complete -o default -o bashdefault -F _systemd_analyze systemd-analyze -Index: systemd/shell-completion/bash/systemd-run +Index: systemd-221/shell-completion/bash/systemd-run =================================================================== ---- systemd.orig/shell-completion/bash/systemd-run -+++ systemd/shell-completion/bash/systemd-run +--- systemd-221.orig/shell-completion/bash/systemd-run ++++ systemd-221/shell-completion/bash/systemd-run @@ -17,6 +17,13 @@ # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see . @@ -228,10 +228,10 @@ Index: systemd/shell-completion/bash/systemd-run -complete -F _systemd_run systemd-run +complete -o default -o bashdefault -F _systemd_run systemd-run -Index: systemd/shell-completion/bash/timedatectl +Index: systemd-221/shell-completion/bash/timedatectl =================================================================== ---- systemd.orig/shell-completion/bash/timedatectl -+++ systemd/shell-completion/bash/timedatectl +--- systemd-221.orig/shell-completion/bash/timedatectl ++++ systemd-221/shell-completion/bash/timedatectl @@ -30,6 +30,10 @@ _timedatectl() { local OPTS='-h --help --version --adjust-system-clock --no-pager --no-ask-password -H --host --machine' @@ -249,10 +249,10 @@ Index: systemd/shell-completion/bash/timedatectl -complete -F _timedatectl timedatectl +complete -o default -o bashdefault -F _timedatectl timedatectl -Index: systemd/shell-completion/bash/udevadm +Index: systemd-221/shell-completion/bash/udevadm =================================================================== ---- systemd.orig/shell-completion/bash/udevadm -+++ systemd/shell-completion/bash/udevadm +--- systemd-221.orig/shell-completion/bash/udevadm ++++ systemd-221/shell-completion/bash/udevadm @@ -36,6 +36,10 @@ _udevadm() { local verbs=(info trigger settle control monitor hwdb test-builtin test) diff --git a/1001-re-enable-by_path-links-for-ata-devices.patch b/1001-re-enable-by_path-links-for-ata-devices.patch index b4bc2d07..5520c601 100644 --- a/1001-re-enable-by_path-links-for-ata-devices.patch +++ b/1001-re-enable-by_path-links-for-ata-devices.patch @@ -25,11 +25,11 @@ Signed-off-by: Hannes Reinecke src/udev/udev-builtin-path_id.c | 53 ++++++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 12 deletions(-) -Index: systemd-218/src/udev/udev-builtin-path_id.c +Index: systemd-221/src/udev/udev-builtin-path_id.c =================================================================== ---- systemd-218.orig/src/udev/udev-builtin-path_id.c -+++ systemd-218/src/udev/udev-builtin-path_id.c -@@ -426,6 +426,46 @@ static struct udev_device *handle_scsi_h +--- systemd-221.orig/src/udev/udev-builtin-path_id.c ++++ systemd-221/src/udev/udev-builtin-path_id.c +@@ -447,6 +447,46 @@ static struct udev_device *handle_scsi_h return parent; } @@ -76,7 +76,7 @@ Index: systemd-218/src/udev/udev-builtin-path_id.c static struct udev_device *handle_scsi(struct udev_device *parent, char **path, bool *supported_parent) { const char *devtype; const char *name; -@@ -465,19 +505,8 @@ static struct udev_device *handle_scsi(s +@@ -486,19 +526,8 @@ static struct udev_device *handle_scsi(s goto out; } diff --git a/1002-rules-create-by-id-scsi-links-for-ATA-devices.patch b/1002-rules-create-by-id-scsi-links-for-ATA-devices.patch index bd7904c6..cea9163a 100644 --- a/1002-rules-create-by-id-scsi-links-for-ATA-devices.patch +++ b/1002-rules-create-by-id-scsi-links-for-ATA-devices.patch @@ -4,12 +4,14 @@ Subject: rules create by id scsi links for ATA devices Re-enable creation of by-id scsi links for ATA devices. (bnc#769002) --- - rules/60-persistent-storage.rules | 4 ++++ + rules/60-persistent-storage.rules | 4 ++++ 1 file changed, 4 insertions(+) ---- systemd-206.orig/rules/60-persistent-storage.rules -+++ systemd-206/rules/60-persistent-storage.rules -@@ -42,6 +42,10 @@ KERNEL=="cciss*", ENV{DEVTYPE}=="disk", +Index: systemd-221/rules/60-persistent-storage.rules +=================================================================== +--- systemd-221.orig/rules/60-persistent-storage.rules ++++ systemd-221/rules/60-persistent-storage.rules +@@ -36,6 +36,10 @@ KERNEL=="cciss*", ENV{DEVTYPE}=="disk", KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}" KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n" @@ -17,6 +19,6 @@ Re-enable creation of by-id scsi links for ATA devices. (bnc#769002) +KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="ata", PROGRAM="scsi_id --whitelisted --replace-whitespace -p0x80 -d $devnode", RESULT=="?*", ENV{ID_SCSI_COMPAT}="$result", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}" +KERNEL=="sd*[0-9]", ENV{ID_SCSI_COMPAT}=="?*", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}-part%n" + - # firewire + # FireWire KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}" KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n" diff --git a/1003-udev-netlink-null-rules.patch b/1003-udev-netlink-null-rules.patch index eee1415f..92bfef99 100644 --- a/1003-udev-netlink-null-rules.patch +++ b/1003-udev-netlink-null-rules.patch @@ -7,16 +7,16 @@ udevd race for netlink events (bnc#774646) src/udev/udevd.c | 2 ++ 1 file changed, 2 insertions(+) -Index: systemd-218/src/udev/udevd.c +Index: systemd-221/src/udev/udevd.c =================================================================== ---- systemd-218.orig/src/udev/udevd.c -+++ systemd-218/src/udev/udevd.c -@@ -1468,6 +1468,8 @@ int main(int argc, char *argv[]) { - dev = udev_monitor_receive_device(monitor); - if (dev != NULL) { - udev_device_set_usec_initialized(dev, now(CLOCK_MONOTONIC)); -+ if (rules == NULL) -+ rules = udev_rules_new(udev, arg_resolve_names); - if (event_queue_insert(dev) < 0) - udev_device_unref(dev); - } +--- systemd-221.orig/src/udev/udevd.c ++++ systemd-221/src/udev/udevd.c +@@ -917,6 +917,8 @@ static int on_uevent(sd_event_source *s, + dev = udev_monitor_receive_device(manager->monitor); + if (dev) { + udev_device_ensure_usec_initialized(dev, NULL); ++ if (manager->rules == NULL) ++ manager->rules = udev_rules_new(manager->udev, arg_resolve_names); + r = event_queue_insert(manager, dev); + if (r < 0) + udev_device_unref(dev); diff --git a/1005-create-default-links-for-primary-cd_dvd-drive.patch b/1005-create-default-links-for-primary-cd_dvd-drive.patch index 85abb1f7..868247ed 100644 --- a/1005-create-default-links-for-primary-cd_dvd-drive.patch +++ b/1005-create-default-links-for-primary-cd_dvd-drive.patch @@ -7,10 +7,10 @@ cdrom_id: created links for the default cd/dvd drive (bnc#783054). rules/60-cdrom_id.rules | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) -Index: systemd/rules/60-cdrom_id.rules +Index: systemd-221/rules/60-cdrom_id.rules =================================================================== ---- systemd.orig/rules/60-cdrom_id.rules -+++ systemd/rules/60-cdrom_id.rules +--- systemd-221.orig/rules/60-cdrom_id.rules ++++ systemd-221/rules/60-cdrom_id.rules @@ -20,6 +20,9 @@ IMPORT{program}="cdrom_id --lock-media $ # stale mounts after ejecting ENV{DISK_MEDIA_CHANGE}=="?*", ENV{ID_CDROM_MEDIA}!="?*", ENV{SYSTEMD_READY}="0" diff --git a/1006-udev-always-rename-network.patch b/1006-udev-always-rename-network.patch index f838b9ac..36bb93ba 100644 --- a/1006-udev-always-rename-network.patch +++ b/1006-udev-always-rename-network.patch @@ -13,11 +13,11 @@ Port the patch of Robert to systemd v210 and test it out. 1 file changed, 37 insertions(+), 4 deletions(-) -Index: systemd-218/src/udev/udev-event.c +Index: systemd-221/src/udev/udev-event.c =================================================================== ---- systemd-218.orig/src/udev/udev-event.c -+++ systemd-218/src/udev/udev-event.c -@@ -767,20 +767,53 @@ out: +--- systemd-221.orig/src/udev/udev-event.c ++++ systemd-221/src/udev/udev-event.c +@@ -796,20 +796,53 @@ out: static int rename_netif(struct udev_event *event) { struct udev_device *dev = event->dev; char name[IFNAMSIZ]; @@ -50,7 +50,7 @@ Index: systemd-218/src/udev/udev-event.c + oldname, interim, strerror(-r)); + return r; + } -+ ++ + /* log temporary name */ + log_info("renamed network interface %s to %s\n", oldname, interim); + diff --git a/1007-physical-hotplug-cpu-and-memory.patch b/1007-physical-hotplug-cpu-and-memory.patch index 98500575..5365f17c 100644 --- a/1007-physical-hotplug-cpu-and-memory.patch +++ b/1007-physical-hotplug-cpu-and-memory.patch @@ -1,5 +1,27 @@ ---- systemd-210/rules/80-hotplug-cpu-mem.rules -+++ systemd-210/rules/80-hotplug-cpu-mem.rules 2014-05-21 15:47:01.885605543 +0000 +--- + Makefile.am | 4 ++++ + rules/80-hotplug-cpu-mem.rules | 12 ++++++++++++ + 2 files changed, 16 insertions(+) + +Index: systemd-221/Makefile.am +=================================================================== +--- systemd-221.orig/Makefile.am ++++ systemd-221/Makefile.am +@@ -3841,6 +3841,10 @@ dist_udevrules_DATA += \ + rules/73-seat-numlock.rules + + # ------------------------------------------------------------------------------ ++dist_udevrules_DATA += \ ++ rules/80-hotplug-cpu-mem.rules ++ ++# ------------------------------------------------------------------------------ + mtd_probe_SOURCES = \ + src/udev/mtd_probe/mtd_probe.c \ + src/udev/mtd_probe/mtd_probe.h \ +Index: systemd-221/rules/80-hotplug-cpu-mem.rules +=================================================================== +--- /dev/null ++++ systemd-221/rules/80-hotplug-cpu-mem.rules @@ -0,0 +1,12 @@ +# do not edit this file, it will be overwritten on update + @@ -13,16 +35,3 @@ + +# +TAG=="tmpfs", RUN+="/usr/lib/udev/remount-tmpfs" ---- systemd-210/Makefile.am -+++ systemd-210/Makefile.am -@@ -2480,6 +2480,10 @@ dist_udevrules_DATA += \ - rules/73-seat-numlock.rules - - # ------------------------------------------------------------------------------ -+dist_udevrules_DATA += \ -+ rules/80-hotplug-cpu-mem.rules -+ -+# ------------------------------------------------------------------------------ - if ENABLE_GUDEV - if ENABLE_GTK_DOC - SUBDIRS += \ diff --git a/1011-64-btrfs.rules-skip-btrfs-check-if-devices-are-not-r.patch b/1011-64-btrfs.rules-skip-btrfs-check-if-devices-are-not-r.patch index 391592ee..9d5a39f0 100644 --- a/1011-64-btrfs.rules-skip-btrfs-check-if-devices-are-not-r.patch +++ b/1011-64-btrfs.rules-skip-btrfs-check-if-devices-are-not-r.patch @@ -7,13 +7,13 @@ If any devices are marked with 'SYSTEMD_READY=0' then we shouldn't run any btrfs check on them. --- - rules/64-btrfs.rules | 1 + + rules/64-btrfs.rules | 1 + 1 file changed, 1 insertion(+) -diff --git a/rules/64-btrfs.rules b/rules/64-btrfs.rules -index fe01001..57631bc 100644 ---- a/rules/64-btrfs.rules -+++ b/rules/64-btrfs.rules +Index: systemd-221/rules/64-btrfs.rules +=================================================================== +--- systemd-221.orig/rules/64-btrfs.rules ++++ systemd-221/rules/64-btrfs.rules @@ -3,6 +3,7 @@ SUBSYSTEM!="block", GOTO="btrfs_end" ACTION=="remove", GOTO="btrfs_end" @@ -22,6 +22,3 @@ index fe01001..57631bc 100644 # let the kernel know about this btrfs filesystem, and check if it is complete IMPORT{builtin}="btrfs ready $devnode" --- -1.8.1.4 - diff --git a/1012-Skip-persistent-device-link-creation-on-multipath-de.patch b/1012-Skip-persistent-device-link-creation-on-multipath-de.patch index 087dc3a0..c5bd4a13 100644 --- a/1012-Skip-persistent-device-link-creation-on-multipath-de.patch +++ b/1012-Skip-persistent-device-link-creation-on-multipath-de.patch @@ -10,15 +10,15 @@ persistent symlinks to that device. Otherwise systemd will get confused about which device to use. --- - rules/60-persistent-storage.rules | 7 +++++-- + rules/60-persistent-storage.rules | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) -diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules -index 1208bd3..fd5bedd 100644 ---- a/rules/60-persistent-storage.rules -+++ b/rules/60-persistent-storage.rules -@@ -39,8 +39,8 @@ KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{builtin - # scsi devices +Index: systemd-221/rules/60-persistent-storage.rules +=================================================================== +--- systemd-221.orig/rules/60-persistent-storage.rules ++++ systemd-221/rules/60-persistent-storage.rules +@@ -33,8 +33,8 @@ KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}! + # SCSI devices KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="scsi" KERNEL=="cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="cciss" -KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}" @@ -28,7 +28,7 @@ index 1208bd3..fd5bedd 100644 # scsi compat links for ATA devices KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="ata", PROGRAM="scsi_id --whitelisted --replace-whitespace -p0x80 -d $devnode", RESULT=="?*", ENV{ID_SCSI_COMPAT}="$result", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}" -@@ -70,6 +70,9 @@ KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DAT +@@ -66,6 +66,9 @@ KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!= KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", \ IMPORT{builtin}="blkid --noraid" @@ -38,6 +38,3 @@ index 1208bd3..fd5bedd 100644 # probe filesystem metadata of disks KERNEL!="sr*", IMPORT{builtin}="blkid" --- -1.8.1.4 - diff --git a/1013-no-runtime-PM-for-IBM-consoles.patch b/1013-no-runtime-PM-for-IBM-consoles.patch index 164ca499..79123f44 100644 --- a/1013-no-runtime-PM-for-IBM-consoles.patch +++ b/1013-no-runtime-PM-for-IBM-consoles.patch @@ -1,6 +1,12 @@ ---- systemd-210/rules/42-usb-hid-pm.rules.old 2014-04-23 10:54:31.694485615 +0200 -+++ systemd-210/rules/42-usb-hid-pm.rules 2014-04-23 10:55:21.969423056 +0200 -@@ -22,8 +22,6 @@ ACTION=="add", SUBSYSTEM=="usb", ATTR{id +--- + rules/42-usb-hid-pm.rules | 2 -- + 1 file changed, 2 deletions(-) + +Index: systemd-221/rules/42-usb-hid-pm.rules +=================================================================== +--- systemd-221.orig/rules/42-usb-hid-pm.rules ++++ systemd-221/rules/42-usb-hid-pm.rules +@@ -19,8 +19,6 @@ ACTION=="add", SUBSYSTEM=="usb", ATTR{id ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="413c", ATTR{idProduct}=="0000", TEST=="power/control", ATTR{power/control}="auto" # IBM remote access diff --git a/1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch b/1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch index 09c5202c..400cd94d 100644 --- a/1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch +++ b/1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch @@ -12,21 +12,18 @@ References: bnc#881942 Signed-off-by: Hannes Reinecke --- - rules/99-systemd.rules.in | 1 + + rules/99-systemd.rules.in | 1 + 1 file changed, 1 insertion(+) -diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in -index db72373..11ee262 100644 ---- a/rules/99-systemd.rules.in -+++ b/rules/99-systemd.rules.in -@@ -11,6 +11,7 @@ SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270 - +Index: systemd-221/rules/99-systemd.rules.in +=================================================================== +--- systemd-221.orig/rules/99-systemd.rules.in ++++ systemd-221/rules/99-systemd.rules.in +@@ -10,6 +10,7 @@ ACTION=="remove", GOTO="systemd_end" + SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty*", TAG+="systemd" KERNEL=="vport*", TAG+="systemd" -+SUBSYSTEM=="block", KERNEL!="ram*", ENV{SYSTEMD_READY}=="0", GOTO="systemd_end" - SUBSYSTEM=="block", KERNEL!="ram*", TAG+="systemd" - SUBSYSTEM=="block", KERNEL!="ram*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0" ++SUBSYSTEM=="block", ENV{SYSTEMD_READY}=="0", GOTO="systemd_end" + SUBSYSTEM=="block", TAG+="systemd" + SUBSYSTEM=="block", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0" --- -1.8.4.5 - diff --git a/1037-udev-exclude-cd-dvd-from-block-device.patch b/1037-udev-exclude-cd-dvd-from-block-device.patch index 0b8d68ff..2b001518 100644 --- a/1037-udev-exclude-cd-dvd-from-block-device.patch +++ b/1037-udev-exclude-cd-dvd-from-block-device.patch @@ -1,8 +1,14 @@ Exclude cd/dvd as well (bnc#882714) ---- systemd-210/src/udev/udevd.c -+++ systemd-210/src/udev/udevd.c 2014-06-18 12:53:34.454235577 +0000 -@@ -744,7 +744,8 @@ static int synthesize_change(struct udev +--- + src/udev/udevd.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +Index: systemd-221/src/udev/udevd.c +=================================================================== +--- systemd-221.orig/src/udev/udevd.c ++++ systemd-221/src/udev/udevd.c +@@ -1022,7 +1022,8 @@ static int synthesize_change(struct udev if (streq_ptr("block", udev_device_get_subsystem(dev)) && streq_ptr("disk", udev_device_get_devtype(dev)) && diff --git a/1060-udev-use-device-mapper-target-name-for-btrfs-device-ready.patch b/1060-udev-use-device-mapper-target-name-for-btrfs-device-ready.patch index 862afa48..02ead8c8 100644 --- a/1060-udev-use-device-mapper-target-name-for-btrfs-device-ready.patch +++ b/1060-udev-use-device-mapper-target-name-for-btrfs-device-ready.patch @@ -29,8 +29,10 @@ Signed-off-by: Jeff Mahoney rules/64-btrfs.rules | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ---- a/rules/64-btrfs.rules -+++ b/rules/64-btrfs.rules +Index: systemd-221/rules/64-btrfs.rules +=================================================================== +--- systemd-221.orig/rules/64-btrfs.rules ++++ systemd-221/rules/64-btrfs.rules @@ -6,7 +6,8 @@ ENV{ID_FS_TYPE}!="btrfs", GOTO="btrfs_en ENV{SYSTEMD_READY}=="0", GOTO="btrfs_end" diff --git a/1062-rules-set-default-permissions-for-GenWQE-devices.patch b/1062-rules-set-default-permissions-for-GenWQE-devices.patch index 8db264df..80c434dc 100644 --- a/1062-rules-set-default-permissions-for-GenWQE-devices.patch +++ b/1062-rules-set-default-permissions-for-GenWQE-devices.patch @@ -1,11 +1,15 @@ -Index: systemd-210/rules/50-udev-default.rules +--- + rules/50-udev-default.rules | 2 ++ + 1 file changed, 2 insertions(+) + +Index: systemd-221/rules/50-udev-default.rules =================================================================== ---- systemd-210.orig/rules/50-udev-default.rules -+++ systemd-210/rules/50-udev-default.rules -@@ -66,4 +66,6 @@ KERNEL=="tun", MODE="0666", OPTIONS+="st +--- systemd-221.orig/rules/50-udev-default.rules ++++ systemd-221/rules/50-udev-default.rules +@@ -74,4 +74,6 @@ KERNEL=="tun", MODE="0666", OPTIONS+="st KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse" +KERNEL=="genwqe*", MODE="0666" + - LABEL="default_permissions_end" + LABEL="default_end" diff --git a/1066-udev-add-compatibility-links-for-truncated-by-id-links.patch b/1066-udev-add-compatibility-links-for-truncated-by-id-links.patch index e08ad9f8..637c2be8 100644 --- a/1066-udev-add-compatibility-links-for-truncated-by-id-links.patch +++ b/1066-udev-add-compatibility-links-for-truncated-by-id-links.patch @@ -18,11 +18,11 @@ Signed-off-by: Jeff Mahoney src/udev/scsi_id/scsi_serial.c | 19 +++++++++++++------ 4 files changed, 32 insertions(+), 7 deletions(-) -Index: systemd/rules/60-persistent-storage.rules +Index: systemd-221/rules/60-persistent-storage.rules =================================================================== ---- systemd.orig/rules/60-persistent-storage.rules -+++ systemd/rules/60-persistent-storage.rules -@@ -46,6 +46,10 @@ KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="par +--- systemd-221.orig/rules/60-persistent-storage.rules ++++ systemd-221/rules/60-persistent-storage.rules +@@ -40,6 +40,10 @@ KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="par KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="ata", PROGRAM="scsi_id --whitelisted --replace-whitespace -p0x80 -d $devnode", RESULT=="?*", ENV{ID_SCSI_COMPAT}="$result", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}" KERNEL=="sd*[0-9]", ENV{ID_SCSI_COMPAT}=="?*", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}-part%n" @@ -30,13 +30,13 @@ Index: systemd/rules/60-persistent-storage.rules +KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="ata", PROGRAM="scsi_id --truncated-serial --whitelisted --replace-whitespace -p0x80 -d$tempnode", RESULT=="?*", ENV{ID_SCSI_COMPAT_TRUNCATED}="$result", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT_TRUNCATED}" +KERNEL=="sd*[0-9]", ENV{ID_SCSI_COMPAT_TRUNCATED}=="?*", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT_TRUNCATED}-part%n" + - # firewire + # FireWire KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}" KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n" -Index: systemd/src/udev/scsi_id/scsi_id.c +Index: systemd-221/src/udev/scsi_id/scsi_id.c =================================================================== ---- systemd.orig/src/udev/scsi_id/scsi_id.c -+++ systemd/src/udev/scsi_id/scsi_id.c +--- systemd-221.orig/src/udev/scsi_id/scsi_id.c ++++ systemd-221/src/udev/scsi_id/scsi_id.c @@ -43,6 +43,7 @@ static const struct option options[] = { { "replace-whitespace", no_argument, NULL, 'u' }, { "sg-version", required_argument, NULL, 's' }, @@ -94,11 +94,11 @@ Index: systemd/src/udev/scsi_id/scsi_id.c util_replace_chars(serial_str, NULL); printf("%s\n", serial_str); goto out; -Index: systemd/src/udev/scsi_id/scsi_id.h +Index: systemd-221/src/udev/scsi_id/scsi_id.h =================================================================== ---- systemd.orig/src/udev/scsi_id/scsi_id.h -+++ systemd/src/udev/scsi_id/scsi_id.h -@@ -43,6 +43,7 @@ struct scsi_id_device { +--- systemd-221.orig/src/udev/scsi_id/scsi_id.h ++++ systemd-221/src/udev/scsi_id/scsi_id.h +@@ -45,6 +45,7 @@ struct scsi_id_device { char kernel[64]; char serial[MAX_SERIAL_LEN]; char serial_short[MAX_SERIAL_LEN]; @@ -106,11 +106,11 @@ Index: systemd/src/udev/scsi_id/scsi_id.h int use_sg; /* Always from page 0x80 e.g. 'B3G1P8500RWT' - may not be unique */ -Index: systemd/src/udev/scsi_id/scsi_serial.c +Index: systemd-221/src/udev/scsi_id/scsi_serial.c =================================================================== ---- systemd.orig/src/udev/scsi_id/scsi_serial.c -+++ systemd/src/udev/scsi_id/scsi_serial.c -@@ -96,7 +96,8 @@ static const char hex_str[]="0123456789a +--- systemd-221.orig/src/udev/scsi_id/scsi_serial.c ++++ systemd-221/src/udev/scsi_id/scsi_serial.c +@@ -97,7 +97,8 @@ static const char hex_str[]="0123456789a static int do_scsi_page80_inquiry(struct udev *udev, struct scsi_id_device *dev_scsi, int fd, @@ -120,7 +120,7 @@ Index: systemd/src/udev/scsi_id/scsi_serial.c static int sg_err_category_new(struct udev *udev, int scsi_status, int msg_status, int -@@ -619,7 +620,7 @@ static int do_scsi_page83_inquiry(struct +@@ -620,7 +621,7 @@ static int do_scsi_page83_inquiry(struct unsigned char page_83[SCSI_INQ_BUFF_LEN]; /* also pick up the page 80 serial number */ @@ -129,7 +129,7 @@ Index: systemd/src/udev/scsi_id/scsi_serial.c memzero(page_83, SCSI_INQ_BUFF_LEN); retval = scsi_inquiry(udev, dev_scsi, fd, 1, PAGE_83, page_83, -@@ -764,7 +765,8 @@ static int do_scsi_page83_prespc3_inquir +@@ -765,7 +766,8 @@ static int do_scsi_page83_prespc3_inquir /* Get unit serial number VPD page */ static int do_scsi_page80_inquiry(struct udev *udev, struct scsi_id_device *dev_scsi, int fd, @@ -139,7 +139,7 @@ Index: systemd/src/udev/scsi_id/scsi_serial.c { int retval; int ser_ind; -@@ -798,9 +800,14 @@ static int do_scsi_page80_inquiry(struct +@@ -799,9 +801,14 @@ static int do_scsi_page80_inquiry(struct ser_ind = prepend_vendor_model(udev, dev_scsi, &serial[1]); if (ser_ind < 0) return 1; @@ -155,7 +155,7 @@ Index: systemd/src/udev/scsi_id/scsi_serial.c } if (serial_short != NULL) { memcpy(serial_short, &buf[4], len); -@@ -876,7 +883,7 @@ int scsi_get_serial(struct udev *udev, +@@ -877,7 +884,7 @@ int scsi_get_serial(struct udev *udev, return 1; if (page_code == PAGE_80) { @@ -164,7 +164,7 @@ Index: systemd/src/udev/scsi_id/scsi_serial.c retval = 1; goto completed; } else { -@@ -950,7 +957,7 @@ int scsi_get_serial(struct udev *udev, +@@ -951,7 +958,7 @@ int scsi_get_serial(struct udev *udev, for (ind = 4; ind <= page0[3] + 3; ind++) if (page0[ind] == PAGE_80) if (!do_scsi_page80_inquiry(udev, dev_scsi, fd, diff --git a/1095-set-ssd-disk-to-use-deadline-scheduler.patch b/1095-set-ssd-disk-to-use-deadline-scheduler.patch index d9d128f2..932ea747 100644 --- a/1095-set-ssd-disk-to-use-deadline-scheduler.patch +++ b/1095-set-ssd-disk-to-use-deadline-scheduler.patch @@ -3,22 +3,22 @@ rules/60-ssd-scheduler.rules | 11 +++++++++++ 2 files changed, 12 insertions(+) -Index: systemd/Makefile.am +Index: systemd-221/Makefile.am =================================================================== ---- systemd.orig/Makefile.am -+++ systemd/Makefile.am -@@ -3576,6 +3576,7 @@ dist_udevrules_DATA += \ +--- systemd-221.orig/Makefile.am ++++ systemd-221/Makefile.am +@@ -3501,6 +3501,7 @@ dist_udevrules_DATA += \ rules/60-persistent-input.rules \ rules/60-persistent-alsa.rules \ rules/60-persistent-storage.rules \ + rules/60-ssd-scheduler.rules \ + rules/60-serial.rules \ rules/64-btrfs.rules \ rules/70-mouse.rules \ - rules/70-touchpad.rules \ -Index: systemd/rules/60-ssd-scheduler.rules +Index: systemd-221/rules/60-ssd-scheduler.rules =================================================================== --- /dev/null -+++ systemd/rules/60-ssd-scheduler.rules ++++ systemd-221/rules/60-ssd-scheduler.rules @@ -0,0 +1,11 @@ +# do not edit this file, it will be overwritten on update + diff --git a/1096-new-udev-root-symlink-generator.patch b/1096-new-udev-root-symlink-generator.patch index 7f09f46e..2d302af6 100644 --- a/1096-new-udev-root-symlink-generator.patch +++ b/1096-new-udev-root-symlink-generator.patch @@ -5,11 +5,11 @@ units/systemd-udev-root-symlink.service.in | 10 ++ 4 files changed, 96 insertions(+) -Index: systemd/Makefile.am +Index: systemd-221/Makefile.am =================================================================== ---- systemd.orig/Makefile.am -+++ systemd/Makefile.am -@@ -3862,6 +3862,25 @@ EXTRA_DIST += \ +--- systemd-221.orig/Makefile.am ++++ systemd-221/Makefile.am +@@ -3754,6 +3754,25 @@ EXTRA_DIST += \ # ------------------------------------------------------------------------------ @@ -35,10 +35,10 @@ Index: systemd/Makefile.am ata_id_SOURCES = \ src/udev/ata_id/ata_id.c -Index: systemd/src/udev/rootsymlink_generator/rootsymlink_generator.c +Index: systemd-221/src/udev/rootsymlink_generator/rootsymlink_generator.c =================================================================== --- /dev/null -+++ systemd/src/udev/rootsymlink_generator/rootsymlink_generator.c ++++ systemd-221/src/udev/rootsymlink_generator/rootsymlink_generator.c @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2014-2015 Robert Milasan @@ -97,10 +97,10 @@ Index: systemd/src/udev/rootsymlink_generator/rootsymlink_generator.c + return errno; + return 0; +} -Index: systemd/units/systemd-udev-root-symlink.service +Index: systemd-221/units/systemd-udev-root-symlink.service =================================================================== --- /dev/null -+++ systemd/units/systemd-udev-root-symlink.service ++++ systemd-221/units/systemd-udev-root-symlink.service @@ -0,0 +1,10 @@ +[Unit] +Description=Rule generator for /dev/root symlink @@ -112,10 +112,10 @@ Index: systemd/units/systemd-udev-root-symlink.service +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/lib/udev/rootsymlink-generator -Index: systemd/units/systemd-udev-root-symlink.service.in +Index: systemd-221/units/systemd-udev-root-symlink.service.in =================================================================== --- /dev/null -+++ systemd/units/systemd-udev-root-symlink.service.in ++++ systemd-221/units/systemd-udev-root-symlink.service.in @@ -0,0 +1,10 @@ +[Unit] +Description=Rule generator for /dev/root symlink diff --git a/1097-udevd-increase-maximum-number-of-children.patch b/1097-udevd-increase-maximum-number-of-children.patch index 486be9b2..6693d757 100644 --- a/1097-udevd-increase-maximum-number-of-children.patch +++ b/1097-udevd-increase-maximum-number-of-children.patch @@ -2,25 +2,25 @@ src/udev/udevd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: systemd-218/src/udev/udevd.c +Index: systemd-221/src/udev/udevd.c =================================================================== ---- systemd-218.orig/src/udev/udevd.c -+++ systemd-218/src/udev/udevd.c -@@ -446,7 +446,7 @@ static void event_run(struct event *even +--- systemd-221.orig/src/udev/udevd.c ++++ systemd-221/src/udev/udevd.c +@@ -569,7 +569,7 @@ static void event_run(Manager *manager, - if (children >= arg_children_max) { + if (hashmap_size(manager->workers) >= arg_children_max) { if (arg_children_max > 1) -- log_debug("maximum number (%i) of children reached", children); -+ log_error("maximum number (%i) of children reached", children); +- log_debug("maximum number (%i) of children reached", hashmap_size(manager->workers)); ++ log_error("maximum number (%i) of children reached", hashmap_size(manager->workers)); return; } -@@ -1265,7 +1265,7 @@ int main(int argc, char *argv[]) { +@@ -1641,7 +1641,7 @@ int main(int argc, char *argv[]) { arg_children_max = 8; if (sched_getaffinity(0, sizeof (cpu_set), &cpu_set) == 0) { -- arg_children_max += CPU_COUNT(&cpu_set) * 2; +- arg_children_max += CPU_COUNT(&cpu_set) * 2; + arg_children_max += CPU_COUNT(&cpu_set) * 64; } - } - log_debug("set children_max to %u", arg_children_max); + + log_debug("set children_max to %u", arg_children_max); diff --git a/1098-systemd-networkd-alias-network-service.patch b/1098-systemd-networkd-alias-network-service.patch index 92afb327..a3c666f4 100644 --- a/1098-systemd-networkd-alias-network-service.patch +++ b/1098-systemd-networkd-alias-network-service.patch @@ -1,8 +1,12 @@ -Index: systemd-219/units/systemd-networkd.service.in +--- + units/systemd-networkd.service.m4.in | 1 + + 1 file changed, 1 insertion(+) + +Index: systemd-221/units/systemd-networkd.service.m4.in =================================================================== ---- systemd-219.orig/units/systemd-networkd.service.in -+++ systemd-219/units/systemd-networkd.service.in -@@ -29,4 +29,5 @@ WatchdogSec=1min +--- systemd-221.orig/units/systemd-networkd.service.m4.in ++++ systemd-221/units/systemd-networkd.service.m4.in +@@ -34,4 +34,5 @@ WatchdogSec=1min [Install] WantedBy=multi-user.target diff --git a/Fix-run-lock-directories-permissions-to-follow-openSUSE-po.patch b/Fix-run-lock-directories-permissions-to-follow-openSUSE-po.patch index 95c19107..d780d327 100644 --- a/Fix-run-lock-directories-permissions-to-follow-openSUSE-po.patch +++ b/Fix-run-lock-directories-permissions-to-follow-openSUSE-po.patch @@ -8,10 +8,10 @@ disable /var/lock/{subsys,lockdev} and change default permissions on tmpfiles.d/legacy.conf | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) -Index: systemd-218/tmpfiles.d/legacy.conf +Index: systemd-221/tmpfiles.d/legacy.conf =================================================================== ---- systemd-218.orig/tmpfiles.d/legacy.conf -+++ systemd-218/tmpfiles.d/legacy.conf +--- systemd-221.orig/tmpfiles.d/legacy.conf ++++ systemd-221/tmpfiles.d/legacy.conf @@ -10,13 +10,14 @@ # These files are considered legacy and are unnecessary on legacy-free # systems. @@ -36,5 +36,5 @@ Index: systemd-218/tmpfiles.d/legacy.conf -d /run/lock/lockdev 0775 root lock - +#d /run/lock/lockdev 0775 root lock - - # /forcefsck, /fastboot and /forcequotecheck are deprecated in favor of the + # /forcefsck, /fastboot and /forcequotacheck are deprecated in favor of the # kernel command line options 'fsck.mode=force', 'fsck.mode=skip' and diff --git a/Forward-suspend-hibernate-calls-to-pm-utils.patch b/Forward-suspend-hibernate-calls-to-pm-utils.patch index 96de1ed2..223b311f 100644 --- a/Forward-suspend-hibernate-calls-to-pm-utils.patch +++ b/Forward-suspend-hibernate-calls-to-pm-utils.patch @@ -7,19 +7,19 @@ forward suspend/hibernation calls to pm-utils, if installed (bnc#790157) src/sleep/sleep.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) -Index: systemd/src/sleep/sleep.c +Index: systemd-221/src/sleep/sleep.c =================================================================== ---- systemd.orig/src/sleep/sleep.c -+++ systemd/src/sleep/sleep.c -@@ -24,6 +24,7 @@ +--- systemd-221.orig/src/sleep/sleep.c ++++ systemd-221/src/sleep/sleep.c +@@ -23,6 +23,7 @@ + #include #include - #include #include +#include - #include "sd-id128.h" #include "sd-messages.h" -@@ -36,6 +37,8 @@ + #include "log.h" +@@ -34,6 +35,8 @@ #include "def.h" static char* arg_verb = NULL; @@ -28,7 +28,7 @@ Index: systemd/src/sleep/sleep.c static int write_mode(char **modes) { int r = 0; -@@ -53,10 +56,6 @@ static int write_mode(char **modes) { +@@ -51,10 +54,6 @@ static int write_mode(char **modes) { if (r == 0) r = k; } @@ -39,7 +39,7 @@ Index: systemd/src/sleep/sleep.c return r; } -@@ -97,6 +96,8 @@ static int execute(char **modes, char ** +@@ -95,6 +94,8 @@ static int execute(char **modes, char ** int r; _cleanup_fclose_ FILE *f = NULL; @@ -48,7 +48,7 @@ Index: systemd/src/sleep/sleep.c /* This file is opened first, so that if we hit an error, * we can abort before modifying any state. */ f = fopen("/sys/power/state", "we"); -@@ -107,6 +108,7 @@ static int execute(char **modes, char ** +@@ -105,6 +106,7 @@ static int execute(char **modes, char ** r = write_mode(modes); if (r < 0) return r; @@ -56,7 +56,7 @@ Index: systemd/src/sleep/sleep.c execute_directories(dirs, DEFAULT_TIMEOUT_USEC, arguments); -@@ -115,8 +117,10 @@ static int execute(char **modes, char ** +@@ -113,8 +115,10 @@ static int execute(char **modes, char ** LOG_MESSAGE("Suspending system..."), "SLEEP=%s", arg_verb, NULL); @@ -68,7 +68,7 @@ Index: systemd/src/sleep/sleep.c if (r < 0) return r; -@@ -156,6 +160,7 @@ static int parse_argv(int argc, char *ar +@@ -154,6 +158,7 @@ static int parse_argv(int argc, char *ar }; int c; @@ -76,7 +76,7 @@ Index: systemd/src/sleep/sleep.c assert(argc >= 0); assert(argv); -@@ -193,6 +198,18 @@ static int parse_argv(int argc, char *ar +@@ -191,6 +196,18 @@ static int parse_argv(int argc, char *ar return -EINVAL; } diff --git a/allow-multiple-sulogin-to-be-started.patch b/allow-multiple-sulogin-to-be-started.patch index 507d8fc2..8bc6e24f 100644 --- a/allow-multiple-sulogin-to-be-started.patch +++ b/allow-multiple-sulogin-to-be-started.patch @@ -4,13 +4,15 @@ Subject: allow multiple sulogin to be started allows multiple sulogin instance (bnc#793182). --- - units/getty@.service.m4 | 1 + - units/rescue.target | 1 + - units/serial-getty@.service.m4 | 1 + + units/getty@.service.m4 | 1 + + units/rescue.target | 1 + + units/serial-getty@.service.m4 | 1 + 3 files changed, 3 insertions(+) ---- systemd-206.orig/units/getty@.service.m4 -+++ systemd-206/units/getty@.service.m4 +Index: systemd-221/units/getty@.service.m4 +=================================================================== +--- systemd-221.orig/units/getty@.service.m4 ++++ systemd-221/units/getty@.service.m4 @@ -9,6 +9,7 @@ Description=Getty on %I Documentation=man:agetty(8) man:systemd-getty-generator(8) @@ -19,8 +21,10 @@ allows multiple sulogin instance (bnc#793182). After=systemd-user-sessions.service plymouth-quit-wait.service m4_ifdef(`HAVE_SYSV_COMPAT', After=rc-local.service ---- systemd-206.orig/units/rescue.target -+++ systemd-206/units/rescue.target +Index: systemd-221/units/rescue.target +=================================================================== +--- systemd-221.orig/units/rescue.target ++++ systemd-221/units/rescue.target @@ -10,6 +10,7 @@ Description=Rescue Mode Documentation=man:systemd.special(7) Requires=sysinit.target rescue.service @@ -29,8 +33,10 @@ allows multiple sulogin instance (bnc#793182). AllowIsolate=yes [Install] ---- systemd-206.orig/units/serial-getty@.service.m4 -+++ systemd-206/units/serial-getty@.service.m4 +Index: systemd-221/units/serial-getty@.service.m4 +=================================================================== +--- systemd-221.orig/units/serial-getty@.service.m4 ++++ systemd-221/units/serial-getty@.service.m4 @@ -10,6 +10,7 @@ Description=Serial Getty on %I Documentation=man:agetty(8) man:systemd-getty-generator(8) Documentation=http://0pointer.de/blog/projects/serial-console.html diff --git a/apply-ACL-for-nvidia-device-nodes.patch b/apply-ACL-for-nvidia-device-nodes.patch index d151032e..257c329b 100644 --- a/apply-ACL-for-nvidia-device-nodes.patch +++ b/apply-ACL-for-nvidia-device-nodes.patch @@ -4,14 +4,14 @@ Subject: apply ACL for nvidia device nodes set ACL on nvidia devices (bnc#808319). --- - logind-acl.c | 12 ++++++++++++ + src/login/logind-acl.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -Index: systemd-210/src/login/logind-acl.c +Index: systemd-221/src/login/logind-acl.c =================================================================== ---- systemd-210.orig/src/login/logind-acl.c -+++ systemd-210/src/login/logind-acl.c -@@ -283,5 +283,17 @@ int devnode_acl_all(struct udev *udev, +--- systemd-221.orig/src/login/logind-acl.c ++++ systemd-221/src/login/logind-acl.c +@@ -285,5 +285,17 @@ int devnode_acl_all(struct udev *udev, r = k; } diff --git a/apply-ACL-for-nvidia-uvm-device-node.patch b/apply-ACL-for-nvidia-uvm-device-node.patch index 6471d229..00a7c608 100644 --- a/apply-ACL-for-nvidia-uvm-device-node.patch +++ b/apply-ACL-for-nvidia-uvm-device-node.patch @@ -5,13 +5,13 @@ Subject: [PATCH] apply ACL for nvidia-uvm device node set ACL on nvidia-uvm device (bnc#879767). --- - src/login/logind-acl.c | 2 ++ + src/login/logind-acl.c | 2 ++ 1 file changed, 2 insertions(+) -diff --git a/src/login/logind-acl.c b/src/login/logind-acl.c -index 54bc16b..a40af21 100644 ---- a/src/login/logind-acl.c -+++ b/src/login/logind-acl.c +Index: systemd-221/src/login/logind-acl.c +=================================================================== +--- systemd-221.orig/src/login/logind-acl.c ++++ systemd-221/src/login/logind-acl.c @@ -295,6 +295,8 @@ int devnode_acl_all(struct udev *udev, if (devnode_acl(devname, flush, del, old_uid, add, new_uid) < 0) break; @@ -21,6 +21,3 @@ index 54bc16b..a40af21 100644 } return r; --- -1.8.4.5 - diff --git a/avoid-divide-by-zero-sigtrap.patch b/avoid-divide-by-zero-sigtrap.patch index 4f676e87..8a8c3caa 100644 --- a/avoid-divide-by-zero-sigtrap.patch +++ b/avoid-divide-by-zero-sigtrap.patch @@ -1,8 +1,28 @@ Nasty bug reported on bnc#867663 ---- systemd-210/src/core/manager.c -+++ systemd-210/src/core/manager.c 2014-04-17 13:29:07.366236714 +0000 -@@ -1780,7 +1780,8 @@ static int manager_dispatch_jobs_in_prog +--- + src/basic/def.h | 2 +- + src/core/manager.c | 3 ++- + 2 files changed, 3 insertions(+), 2 deletions(-) + +Index: systemd-221/src/basic/def.h +=================================================================== +--- systemd-221.orig/src/basic/def.h ++++ systemd-221/src/basic/def.h +@@ -37,7 +37,7 @@ + + #define SYSTEMD_CGROUP_CONTROLLER "systemd" + +-#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT ++#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT,SIGTRAP,SIGSYS + #define SIGNALS_IGNORE SIGPIPE + + #define DIGITS "0123456789" +Index: systemd-221/src/core/manager.c +=================================================================== +--- systemd-221.orig/src/core/manager.c ++++ systemd-221/src/core/manager.c +@@ -1991,7 +1991,8 @@ static int manager_dispatch_jobs_in_prog assert(m); assert(source); @@ -12,14 +32,3 @@ Nasty bug reported on bnc#867663 next = now(CLOCK_MONOTONIC) + JOBS_IN_PROGRESS_PERIOD_USEC; r = sd_event_source_set_time(source, next); ---- systemd-210/src/shared/def.h -+++ systemd-210/src/shared/def.h 2014-04-17 13:47:10.946234983 +0000 -@@ -37,7 +37,7 @@ - - #define SYSTEMD_CGROUP_CONTROLLER "name=systemd" - --#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT -+#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT,SIGTRAP,SIGSYS - #define SIGNALS_IGNORE SIGPIPE - - #define DIGITS "0123456789" diff --git a/avoid-random-hangs-on-timeouts-due-lost-cwd.patch b/avoid-random-hangs-on-timeouts-due-lost-cwd.patch index 3e11c296..45208124 100644 --- a/avoid-random-hangs-on-timeouts-due-lost-cwd.patch +++ b/avoid-random-hangs-on-timeouts-due-lost-cwd.patch @@ -7,8 +7,14 @@ later by a shutdown may fail with (journalctl -b -1): which then caused the subsequent fault that umounting the users home directories done by automount are busy. ---- systemd-210/units/user/systemd-exit.service.in -+++ systemd-210/units/user/systemd-exit.service.in 2014-03-25 16:59:20.406235916 +0000 +--- + units/user/systemd-exit.service.in | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +Index: systemd-221/units/user/systemd-exit.service.in +=================================================================== +--- systemd-221.orig/units/user/systemd-exit.service.in ++++ systemd-221/units/user/systemd-exit.service.in @@ -10,8 +10,9 @@ Description=Exit the Session Documentation=man:systemd.special(7) DefaultDependencies=no diff --git a/baselibs.conf b/baselibs.conf index 7ed6abac..96a432f2 100644 --- a/baselibs.conf +++ b/baselibs.conf @@ -5,6 +5,7 @@ systemd # postun "if [ "$1" == "0" ]; then" # postun "%{_sbindir}/pam-config -d --systemd || :" # postun "fi" -libgudev-1_0-0 +libsystemd0 libudev1 nss-myhostname +nss-mymachines diff --git a/boot-local-start.patch b/boot-local-start.patch index 2f9e9d55..67576b9f 100644 --- a/boot-local-start.patch +++ b/boot-local-start.patch @@ -1,6 +1,11 @@ -diff -Naur systemd-210/units/rc-local.service.in systemd-210-mod/units/rc-local.service.in ---- systemd-210/units/rc-local.service.in 2013-08-13 22:02:52.788756123 +0200 -+++ systemd-210-mod/units/rc-local.service.in 2014-03-25 08:34:40.317587764 +0100 +--- + units/rc-local.service.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: systemd-221/units/rc-local.service.in +=================================================================== +--- systemd-221.orig/units/rc-local.service.in ++++ systemd-221/units/rc-local.service.in @@ -10,7 +10,7 @@ [Unit] Description=@RC_LOCAL_SCRIPT_PATH_START@ Compatibility diff --git a/ensure-ask-password-wall-starts-after-getty-tty1.patch b/ensure-ask-password-wall-starts-after-getty-tty1.patch index ac8dbcfd..eb2fa9a4 100644 --- a/ensure-ask-password-wall-starts-after-getty-tty1.patch +++ b/ensure-ask-password-wall-starts-after-getty-tty1.patch @@ -9,8 +9,10 @@ ensure passphrase is handled before starting getty on tty1. units/systemd-ask-password-wall.service.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ---- systemd-206_git201308300826.orig/units/systemd-ask-password-wall.service.in -+++ systemd-206_git201308300826/units/systemd-ask-password-wall.service.in +Index: systemd-221/units/systemd-ask-password-wall.service.in +=================================================================== +--- systemd-221.orig/units/systemd-ask-password-wall.service.in ++++ systemd-221/units/systemd-ask-password-wall.service.in @@ -8,7 +8,8 @@ [Unit] Description=Forward Password Requests to Wall diff --git a/ensure-shortname-is-set-as-hostname-bnc-820213.patch b/ensure-shortname-is-set-as-hostname-bnc-820213.patch index 77bed82d..7771f1c9 100644 --- a/ensure-shortname-is-set-as-hostname-bnc-820213.patch +++ b/ensure-shortname-is-set-as-hostname-bnc-820213.patch @@ -4,30 +4,28 @@ Subject: ensure shortname is set as hostname (bnc#820213) strip hostname so the domain part isn't set as part of the hostname --- - src/core/hostname-setup.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) + src/core/hostname-setup.c | 4 ++++ + 1 file changed, 4 insertions(+) -Index: systemd-218/src/core/hostname-setup.c +Index: systemd-221/src/core/hostname-setup.c =================================================================== ---- systemd-218.orig/src/core/hostname-setup.c -+++ systemd-218/src/core/hostname-setup.c -@@ -32,7 +32,7 @@ - #include "fileio.h" - - static int read_and_strip_hostname(const char *path, char **hn) { -- char *s; -+ char *s, *domain; +--- systemd-221.orig/src/core/hostname-setup.c ++++ systemd-221/src/core/hostname-setup.c +@@ -34,6 +34,7 @@ int hostname_setup(void) { int r; + _cleanup_free_ char *b = NULL; + const char *hn; ++ char *domain; + bool enoent = false; - assert(path); -@@ -49,6 +49,10 @@ static int read_and_strip_hostname(const - return -ENOENT; - } - + r = read_hostname_config("/etc/hostname", &b); +@@ -46,6 +47,9 @@ int hostname_setup(void) { + hn = NULL; + } else + hn = b; + /* strip any leftover of a domain name */ -+ if ((domain = strchr(s, '.')) != NULL) ++ if ((domain = strchr(hn, '.')) != NULL) + *domain = '\0'; -+ - *hn = s; - return 0; - } + + if (isempty(hn)) { + /* Don't override the hostname if it is already set diff --git a/fix-support-for-boot-prefixed-initscript-bnc-746506.patch b/fix-support-for-boot-prefixed-initscript-bnc-746506.patch index c4875197..ded80983 100644 --- a/fix-support-for-boot-prefixed-initscript-bnc-746506.patch +++ b/fix-support-for-boot-prefixed-initscript-bnc-746506.patch @@ -3,14 +3,14 @@ Date: Thu, 23 Aug 2012 11:08:25 +0200 Subject: fix support for boot prefixed initscript (bnc#746506) --- - src/systemctl/systemctl.c | 20 +++++++++++++++++++- - 1 file changed, 19 insertions(+), 1 deletion(-) + src/systemctl/systemctl.c | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) -Index: systemd-218/src/systemctl/systemctl.c +Index: systemd-221/src/systemctl/systemctl.c =================================================================== ---- systemd-218.orig/src/systemctl/systemctl.c -+++ systemd-218/src/systemctl/systemctl.c -@@ -5202,8 +5202,26 @@ static int enable_sysv_units(const char +--- systemd-221.orig/src/systemctl/systemctl.c ++++ systemd-221/src/systemctl/systemctl.c +@@ -5165,8 +5165,24 @@ static int enable_sysv_units(const char p[strlen(p) - strlen(".service")] = 0; found_sysv = access(p, F_OK) >= 0; @@ -27,14 +27,12 @@ Index: systemd-218/src/systemctl/systemctl.c + return -ENOMEM; + p[strlen(p) - sizeof(".service") + 1] = 0; + found_sysv = access(p, F_OK) >= 0; -+ -+ if (!found_sysv) { ++ if (!found_sysv) + continue; -+ } +#else continue; +#endif + } - log_info("%s is not a native service, redirecting to /sbin/chkconfig.", name); - + if (found_native) + log_info("Synchronizing state of %s with SysV init with %s...", name, argv[0]); diff --git a/handle-disable_caplock-and-compose_table-and-kbd_rate.patch b/handle-disable_caplock-and-compose_table-and-kbd_rate.patch index 52af3ee9..865322fb 100644 --- a/handle-disable_caplock-and-compose_table-and-kbd_rate.patch +++ b/handle-disable_caplock-and-compose_table-and-kbd_rate.patch @@ -1,36 +1,41 @@ -From: Frederic Crozat -Date: Fri, 19 Aug 2011 15:29:49 +0000 +Original-From: Frederic Crozat +Original-Date: Fri, 19 Aug 2011 15:29:49 +0000 Subject: handle disable_caplock and compose_table and kbd_rate +References: https://bugzilla.opensuse.org/746595 +Last-Editor: Jan Engelhardt +Date: Fri Jun 19 21:36:27 CEST 2015 -(bnc#746595) --- - src/vconsole/vconsole-setup.c | 151 +++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 148 insertions(+), 3 deletions(-) + src/vconsole/vconsole-setup.c | 151 ++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 147 insertions(+), 4 deletions(-) -Index: systemd-218/src/vconsole/vconsole-setup.c +Index: systemd-221/src/vconsole/vconsole-setup.c =================================================================== ---- systemd-218.orig/src/vconsole/vconsole-setup.c -+++ systemd-218/src/vconsole/vconsole-setup.c -@@ -40,6 +40,7 @@ - #include "macro.h" +--- systemd-221.orig/src/vconsole/vconsole-setup.c ++++ systemd-221/src/vconsole/vconsole-setup.c +@@ -35,6 +35,8 @@ + #include "log.h" #include "virt.h" #include "fileio.h" ++#include "macro.h" +#include "strv.h" - - static bool is_vconsole(int fd) { - unsigned char data[1]; -@@ -101,8 +102,8 @@ static int enable_utf8(int fd) { + #include "process-util.h" + #include "terminal-util.h" + #include "signal-util.h" +@@ -99,8 +101,10 @@ static int enable_utf8(int fd) { return r; } --static int keymap_load(const char *vc, const char *map, const char *map_toggle, bool utf8, pid_t *_pid) { +-static int keyboard_load_and_wait(const char *vc, const char *map, const char *map_toggle, bool utf8) { - const char *args[8]; -+static int keymap_load(const char *vc, const char *map, const char *map_toggle, bool utf8, bool disable_capslock, pid_t *_pid) { ++static int keyboard_load_and_wait(const char *vc, const char *map, ++ const char *map_toggle, bool utf8, bool disable_capslock) ++{ + const char *args[9]; - int i = 0; + int i = 0, r; pid_t pid; -@@ -121,6 +122,8 @@ static int keymap_load(const char *vc, c +@@ -117,6 +121,8 @@ static int keyboard_load_and_wait(const args[i++] = map; if (map_toggle) args[i++] = map_toggle; @@ -39,23 +44,23 @@ Index: systemd-218/src/vconsole/vconsole-setup.c args[i++] = NULL; pid = fork(); -@@ -236,11 +239,113 @@ static void font_copy_to_all_vcs(int fd) +@@ -246,11 +252,117 @@ static void font_copy_to_all_vcs(int fd) } } +#ifdef HAVE_SYSV_COMPAT -+static int load_compose_table(const char *vc, const char *compose_table, pid_t *_pid) { ++static int compose_load_and_wait(const char *vc, const char *compose_table) ++{ + const char *args[1024]; -+ int i = 0, j = 0; ++ unsigned int i = 0, j = 0; ++ int ret; + pid_t pid; + char **strv_compose_table = NULL; + char *to_free[1024]; + -+ if (isempty(compose_table)) { -+ /* An empty map means no compose table*/ -+ *_pid = 0; -+ return 0; -+ } ++ if (isempty(compose_table)) ++ /* An empty map means no compose table */ ++ return 1; + + args[i++] = KBD_LOADKEYS; + args[i++] = "-q"; @@ -69,50 +74,51 @@ Index: systemd-218/src/vconsole/vconsole-setup.c + char **name; + char *arg; + -+ STRV_FOREACH (name, strv_compose_table) { -+ if (streq(*name,"-c") || streq(*name,"clear")) { ++ STRV_FOREACH(name, strv_compose_table) { ++ if (streq(*name, "-c") || streq(*name, "clear")) { + compose_clear = true; + continue; + } -+ if (!compose_loaded) { -+ if (compose_clear) -+ args[i++] = "-c"; -+ } -+ asprintf(&arg, "compose.%s",*name); ++ if (!compose_loaded && compose_clear) ++ args[i++] = "-c"; ++ asprintf(&arg, "compose.%s", *name); + compose_loaded = true; + args[i++] = to_free[j++] = arg; -+ ++ if (i >= ELEMENTSOF(args) - 1) ++ break; + } + strv_free(strv_compose_table); + } + args[i++] = NULL; + -+ if ((pid = fork()) < 0) { -+ log_error("Failed to fork: %m"); -+ return -errno; -+ } else if (pid == 0) { ++ pid = fork(); ++ if (pid < 0) ++ return log_error_errno(errno, "Failed to fork: %m"); ++ if (pid == 0) { ++ reset_all_signal_handlers(); ++ reset_signal_mask(); + execv(args[0], (char **) args); + _exit(EXIT_FAILURE); + } + -+ *_pid = pid; -+ -+ for (i=0 ; i < j ; i++) -+ free (to_free[i]); -+ -+ return 0; ++ ret = wait_for_terminate_and_warn(args[0], pid, true); ++ for (i = 0; i < j; ++i) ++ free(to_free[i]); ++ if (ret < 0) ++ return ret; ++ return ret == 0; +} +#endif + -+static int set_kbd_rate(const char *vc, const char *kbd_rate, const char *kbd_delay, pid_t *_pid) { ++static int kbdrate_set_and_wait(const char *vc, const char *kbd_rate, ++ const char *kbd_delay) ++{ + const char *args[7]; -+ int i = 0; ++ int i = 0, ret; + pid_t pid; + -+ if (isempty(kbd_rate) && isempty(kbd_delay)) { -+ *_pid = 0; -+ return 0; -+ } ++ if (isempty(kbd_rate) && isempty(kbd_delay)) ++ return 1; + + args[i++] = "/bin/kbdrate"; + if (!isempty(kbd_rate)) { @@ -126,16 +132,19 @@ Index: systemd-218/src/vconsole/vconsole-setup.c + args[i++] = "-s"; + args[i++] = NULL; + -+ if ((pid = fork()) < 0) { -+ log_error("Failed to fork: %m"); -+ return -errno; -+ } else if (pid == 0) { ++ pid = fork(); ++ if (pid < 0) ++ return log_error_errno(errno, "Failed to fork: %m"); ++ if (pid == 0) { ++ reset_all_signal_handlers(); ++ reset_signal_mask(); + execv(args[0], (char **) args); + _exit(EXIT_FAILURE); + } -+ -+ *_pid = pid; -+ return 0; ++ ret = wait_for_terminate_and_warn(args[0], pid, true); ++ if (ret < 0) ++ return ret; ++ return ret == 0; +} + int main(int argc, char **argv) { @@ -147,13 +156,13 @@ Index: systemd-218/src/vconsole/vconsole-setup.c + _cleanup_free_ char + *vc_kbd_delay = NULL, *vc_kbd_rate = NULL, + *vc_kbd_disable_caps_lock = NULL, *vc_compose_table = NULL; -+ pid_t kbd_rate_pid = 0, compose_table_pid = 0; +#endif + bool disable_capslock = false; ++ bool comp_ok, rate_ok; _cleanup_close_ int fd = -1; - bool utf8; - pid_t font_pid = 0, keymap_pid = 0; -@@ -273,6 +378,28 @@ int main(int argc, char **argv) { + bool utf8, font_copy = false, font_ok, keyboard_ok; + int r = EXIT_FAILURE; +@@ -281,6 +393,31 @@ int main(int argc, char **argv) { utf8 = is_locale_utf8(); @@ -166,7 +175,8 @@ Index: systemd-218/src/vconsole/vconsole-setup.c + "COMPOSETABLE", &vc_compose_table, + NULL); + if (r < 0 && r != -ENOENT) -+ log_warning("Failed to read /etc/sysconfig/keyboard: %s", strerror(-r)); ++ log_warning("Failed to read /etc/sysconfig/keyboard: %s", ++ strerror(-r)); + + r = parse_env_file("/etc/sysconfig/console", NEWLINE, + "CONSOLE_FONT", &vc_font, @@ -174,45 +184,33 @@ Index: systemd-218/src/vconsole/vconsole-setup.c + "CONSOLE_UNICODEMAP", &vc_font_unimap, + NULL); + if (r < 0 && r != -ENOENT) -+ log_warning("Failed to read /etc/sysconfig/console: %s", strerror(-r)); ++ log_warning("Failed to read /etc/sysconfig/console: %s", ++ strerror(-r)); + -+ disable_capslock = vc_kbd_disable_caps_lock && strcasecmp(vc_kbd_disable_caps_lock, "YES") == 0; -+#endif ++ disable_capslock = vc_kbd_disable_caps_lock && ++ strcasecmp(vc_kbd_disable_caps_lock, "YES") == 0; ++#endif /* HAVE_SYSV_COMPAT */ + r = parse_env_file("/etc/vconsole.conf", NEWLINE, "KEYMAP", &vc_keymap, "KEYMAP_TOGGLE", &vc_keymap_toggle, -@@ -312,14 +439,32 @@ int main(int argc, char **argv) { - if (font_pid > 0) - wait_for_terminate_and_warn(KBD_SETFONT, font_pid, true); +@@ -312,11 +449,17 @@ int main(int argc, char **argv) { + (void) disable_utf8(fd); -- r = keymap_load(vc, vc_keymap, vc_keymap_toggle, utf8, &keymap_pid); -+ r = keymap_load(vc, vc_keymap, vc_keymap_toggle, utf8, disable_capslock, &keymap_pid); - if (r < 0) { - log_error_errno(r, "Failed to start " KBD_LOADKEYS ": %m"); - return EXIT_FAILURE; - } + font_ok = font_load_and_wait(vc, vc_font, vc_font_map, vc_font_unimap) > 0; +- keyboard_ok = keyboard_load_and_wait(vc, vc_keymap, vc_keymap_toggle, utf8) > 0; ++ keyboard_ok = keyboard_load_and_wait(vc, vc_keymap, vc_keymap_toggle, ++ utf8, disable_capslock) > 0; +#ifdef HAVE_SYSV_COMPAT -+ r = load_compose_table(vc, vc_compose_table, &compose_table_pid); -+ if (r < 0) { -+ log_error_errno(r, "Failed to start " KBD_LOADKEYS " loading the compose table: %m"); -+ return EXIT_FAILURE; -+ } -+ r = set_kbd_rate(vc, vc_kbd_rate, vc_kbd_delay, &kbd_rate_pid); -+ if (r < 0) { -+ log_error_errno(r, "Failed to start kbdrate: %m"); -+ return EXIT_FAILURE; -+ } ++ comp_ok = compose_load_and_wait(vc, vc_compose_table); ++ rate_ok = kbdrate_set_and_wait(vc, vc_kbd_rate, vc_kbd_delay); +#endif - if (keymap_pid > 0) - wait_for_terminate_and_warn(KBD_LOADKEYS, keymap_pid, true); -+#ifdef HAVE_SYSV_COMPAT -+ if (compose_table_pid > 0) -+ wait_for_terminate_and_warn(KBD_LOADKEYS, compose_table_pid, true); -+ if (kbd_rate_pid > 0) -+ wait_for_terminate_and_warn("/usr/bin/kbdrate", kbd_rate_pid, true); -+#endif + /* Only copy the font when we executed setfont successfully */ + if (font_copy && font_ok) + (void) font_copy_to_all_vcs(fd); - /* Only copy the font when we started setfont successfully */ - if (font_copy && font_pid > 0) +- return font_ok && keyboard_ok ? EXIT_SUCCESS : EXIT_FAILURE; ++ return font_ok && keyboard_ok && comp_ok && rate_ok ? ++ EXIT_SUCCESS : EXIT_FAILURE; + } diff --git a/handle-numlock-value-in-etc-sysconfig-keyboard.patch b/handle-numlock-value-in-etc-sysconfig-keyboard.patch index a9f6924a..913eb524 100644 --- a/handle-numlock-value-in-etc-sysconfig-keyboard.patch +++ b/handle-numlock-value-in-etc-sysconfig-keyboard.patch @@ -14,11 +14,11 @@ Cristian Rodríguez units/systemd-vconsole-setup.service.in | 2 - 5 files changed, 94 insertions(+), 3 deletions(-) -Index: systemd-218/Makefile.am +Index: systemd-221/Makefile.am =================================================================== ---- systemd-218.orig/Makefile.am -+++ systemd-218/Makefile.am -@@ -3715,6 +3715,19 @@ dist_udevrules_DATA += \ +--- systemd-221.orig/Makefile.am ++++ systemd-221/Makefile.am +@@ -3813,6 +3813,19 @@ dist_udevrules_DATA += \ rules/61-accelerometer.rules # ------------------------------------------------------------------------------ @@ -35,13 +35,13 @@ Index: systemd-218/Makefile.am + rules/73-seat-numlock.rules + +# ------------------------------------------------------------------------------ - if ENABLE_GUDEV - if ENABLE_GTK_DOC - SUBDIRS += \ -Index: systemd-218/rules/73-seat-numlock.rules + mtd_probe_SOURCES = \ + src/udev/mtd_probe/mtd_probe.c \ + src/udev/mtd_probe/mtd_probe.h \ +Index: systemd-221/rules/73-seat-numlock.rules =================================================================== --- /dev/null -+++ systemd-218/rules/73-seat-numlock.rules ++++ systemd-221/rules/73-seat-numlock.rules @@ -0,0 +1,8 @@ +# This file is part of SUSE customization of systemd. +# @@ -51,10 +51,10 @@ Index: systemd-218/rules/73-seat-numlock.rules +# (at your option) any later version. + +SUBSYSTEM=="tty", ACTION=="add", KERNEL=="tty[0-9]|tty1[0-2]", TEST=="/run/numlock-on", RUN+="numlock-on $env{DEVNAME}" -Index: systemd-218/src/login/numlock-on.c +Index: systemd-221/src/login/numlock-on.c =================================================================== --- /dev/null -+++ systemd-218/src/login/numlock-on.c ++++ systemd-221/src/login/numlock-on.c @@ -0,0 +1,34 @@ +/* + * numlock-on.c: Turn numlock-on @@ -90,13 +90,13 @@ Index: systemd-218/src/login/numlock-on.c + + exit(0); +} -Index: systemd-218/src/vconsole/vconsole-setup.c +Index: systemd-221/src/vconsole/vconsole-setup.c =================================================================== ---- systemd-218.orig/src/vconsole/vconsole-setup.c -+++ systemd-218/src/vconsole/vconsole-setup.c -@@ -42,6 +42,10 @@ - #include "fileio.h" - #include "strv.h" +--- systemd-221.orig/src/vconsole/vconsole-setup.c ++++ systemd-221/src/vconsole/vconsole-setup.c +@@ -41,6 +41,10 @@ + #include "terminal-util.h" + #include "signal-util.h" +#define BIOS_DATA_AREA 0x400 +#define BDA_KEYBOARD_STATUS_FLAGS_4 0x97 @@ -105,21 +105,20 @@ Index: systemd-218/src/vconsole/vconsole-setup.c static bool is_vconsole(int fd) { unsigned char data[1]; -@@ -342,10 +346,11 @@ int main(int argc, char **argv) { +@@ -359,9 +363,10 @@ int main(int argc, char **argv) { #ifdef HAVE_SYSV_COMPAT _cleanup_free_ char *vc_kbd_delay = NULL, *vc_kbd_rate = NULL, - *vc_kbd_disable_caps_lock = NULL, *vc_compose_table = NULL; + *vc_kbd_disable_caps_lock = NULL, *vc_compose_table = NULL, + *vc_kbd_numlock = NULL; - pid_t kbd_rate_pid = 0, compose_table_pid = 0; #endif - bool disable_capslock = false; + bool disable_capslock = false, numlock = false; + bool comp_ok, rate_ok; _cleanup_close_ int fd = -1; - bool utf8; - pid_t font_pid = 0, keymap_pid = 0; -@@ -384,6 +389,7 @@ int main(int argc, char **argv) { + bool utf8, font_copy = false, font_ok, keyboard_ok; +@@ -399,6 +404,7 @@ int main(int argc, char **argv) { "KBD_DELAY", &vc_kbd_delay, "KBD_RATE", &vc_kbd_rate, "KBD_DISABLE_CAPS_LOCK", &vc_kbd_disable_caps_lock, @@ -127,54 +126,54 @@ Index: systemd-218/src/vconsole/vconsole-setup.c "COMPOSETABLE", &vc_compose_table, NULL); if (r < 0 && r != -ENOENT) -@@ -398,6 +404,32 @@ int main(int argc, char **argv) { - log_warning("Failed to read /etc/sysconfig/console: %s", strerror(-r)); +@@ -416,6 +422,32 @@ int main(int argc, char **argv) { - disable_capslock = vc_kbd_disable_caps_lock && strcasecmp(vc_kbd_disable_caps_lock, "YES") == 0; + disable_capslock = vc_kbd_disable_caps_lock && + strcasecmp(vc_kbd_disable_caps_lock, "YES") == 0; ++ numlock = vc_kbd_numlock && strcaseeq(vc_kbd_numlock, "yes"); +#if defined(__i386__) || defined(__x86_64__) -+ if (vc_kbd_numlock && strcaseeq(vc_kbd_numlock, "bios")) { -+ int _cleanup_close_ fdmem; -+ char c; ++ if (vc_kbd_numlock && strcaseeq(vc_kbd_numlock, "bios")) { ++ int _cleanup_close_ fdmem; ++ char c; + -+ fdmem = open ("/dev/mem", O_RDONLY); -+ if (fdmem < 0) { -+ log_error("Failed to open /dev/mem: %m"); -+ return EXIT_FAILURE; -+ } ++ fdmem = open ("/dev/mem", O_RDONLY); ++ if (fdmem < 0) { ++ log_error("Failed to open /dev/mem: %m"); ++ return EXIT_FAILURE; ++ } + -+ if (lseek(fdmem, BIOS_DATA_AREA + BDA_KEYBOARD_STATUS_FLAGS_4, SEEK_SET) == (off_t) -1) { -+ log_error("Failed to seek /dev/mem: %m"); -+ return EXIT_FAILURE; -+ } ++ if (lseek(fdmem, BIOS_DATA_AREA + BDA_KEYBOARD_STATUS_FLAGS_4, SEEK_SET) == (off_t) -1) { ++ log_error("Failed to seek /dev/mem: %m"); ++ return EXIT_FAILURE; ++ } + -+ if (read (fdmem, &c, sizeof(char)) == -1) { -+ log_error("Failed to read /dev/mem: %m"); -+ return EXIT_FAILURE; -+ } ++ if (read(fdmem, &c, sizeof(char)) == -1) { ++ log_error("Failed to read /dev/mem: %m"); ++ return EXIT_FAILURE; ++ } + -+ if (c & BDA_KSF4_NUMLOCK_MASK) -+ numlock = true; -+ } else -+#endif -+ numlock = vc_kbd_numlock && strcaseeq(vc_kbd_numlock, "yes"); - #endif ++ if (c & BDA_KSF4_NUMLOCK_MASK) ++ numlock = true; ++ } ++#endif /* x86 */ + #endif /* HAVE_SYSV_COMPAT */ r = parse_env_file("/etc/vconsole.conf", NEWLINE, -@@ -444,6 +476,10 @@ int main(int argc, char **argv) { - log_error_errno(r, "Failed to start " KBD_LOADKEYS ": %m"); - return EXIT_FAILURE; - } +@@ -451,6 +483,10 @@ int main(int argc, char **argv) { + font_ok = font_load_and_wait(vc, vc_font, vc_font_map, vc_font_unimap) > 0; + keyboard_ok = keyboard_load_and_wait(vc, vc_keymap, vc_keymap_toggle, + utf8, disable_capslock) > 0; + if (numlock) + touch("/run/numlock-on"); + else + unlink("/run/numlock-on"); #ifdef HAVE_SYSV_COMPAT - r = load_compose_table(vc, vc_compose_table, &compose_table_pid); - if (r < 0) { -Index: systemd-218/units/systemd-vconsole-setup.service.in + comp_ok = compose_load_and_wait(vc, vc_compose_table); + rate_ok = kbdrate_set_and_wait(vc, vc_kbd_rate, vc_kbd_delay); +Index: systemd-221/units/systemd-vconsole-setup.service.in =================================================================== ---- systemd-218.orig/units/systemd-vconsole-setup.service.in -+++ systemd-218/units/systemd-vconsole-setup.service.in +--- systemd-221.orig/units/systemd-vconsole-setup.service.in ++++ systemd-221/units/systemd-vconsole-setup.service.in @@ -10,7 +10,7 @@ Description=Setup Virtual Console Documentation=man:systemd-vconsole-setup.service(8) man:vconsole.conf(5) DefaultDependencies=no diff --git a/handle-root_uses_lang-value-in-etc-sysconfig-language.patch b/handle-root_uses_lang-value-in-etc-sysconfig-language.patch index a441dd59..16e2272a 100644 --- a/handle-root_uses_lang-value-in-etc-sysconfig-language.patch +++ b/handle-root_uses_lang-value-in-etc-sysconfig-language.patch @@ -7,11 +7,11 @@ handle ROOT_USES_LANG=ctype (bnc#792182). src/core/locale-setup.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) -Index: systemd-218/src/core/locale-setup.c +Index: systemd-221/src/core/locale-setup.c =================================================================== ---- systemd-218.orig/src/core/locale-setup.c -+++ systemd-218/src/core/locale-setup.c -@@ -36,6 +36,11 @@ int locale_setup(char ***environment) { +--- systemd-221.orig/src/core/locale-setup.c ++++ systemd-221/src/core/locale-setup.c +@@ -34,6 +34,11 @@ int locale_setup(char ***environment) { char **add; char *variables[_VARIABLE_LC_MAX] = {}; int r = 0, i; @@ -23,7 +23,7 @@ Index: systemd-218/src/core/locale-setup.c if (detect_container(NULL) <= 0) { r = parse_env_file("/proc/cmdline", WHITESPACE, -@@ -82,6 +87,27 @@ int locale_setup(char ***environment) { +@@ -80,6 +85,27 @@ int locale_setup(char ***environment) { if (r < 0 && r != -ENOENT) log_warning_errno(r, "Failed to read /etc/locale.conf: %m"); } diff --git a/insserv-generator.patch b/insserv-generator.patch index 1e1cdf4e..a61fc41a 100644 --- a/insserv-generator.patch +++ b/insserv-generator.patch @@ -8,14 +8,16 @@ systemd unit drop-in files to add dependencies --- Makefile.am | 9 src/insserv-generator/Makefile | 28 ++ - src/insserv-generator/insserv-generator.c | 312 ++++++++++++++++++++++++++++++ - 3 files changed, 349 insertions(+) + src/insserv-generator/insserv-generator.c | 315 ++++++++++++++++++++++++++++++ + 3 files changed, 351 insertions(+), 1 deletion(-) create mode 100644 src/insserv-generator/Makefile create mode 100644 src/insserv-generator/insserv-generator.c ---- systemd-219.orig/Makefile.am -+++ systemd-219/Makefile.am -@@ -621,7 +621,8 @@ nodist_systemunit_DATA += \ +Index: systemd-221/Makefile.am +=================================================================== +--- systemd-221.orig/Makefile.am ++++ systemd-221/Makefile.am +@@ -618,7 +618,8 @@ nodist_systemunit_DATA += \ systemgenerator_PROGRAMS += \ systemd-sysv-generator \ @@ -25,23 +27,23 @@ systemd unit drop-in files to add dependencies endif EXTRA_DIST += \ -@@ -2565,6 +2566,14 @@ systemd_rc_local_generator_LDADD = \ - libsystemd-label.la \ - libsystemd-shared.la +@@ -2544,6 +2545,12 @@ $(systemd_boot): $(systemd_boot_solib) + endif + endif +#------------------------------------------------------------------------------- +systemd_insserv_generator_SOURCES = \ + src/insserv-generator/insserv-generator.c + -+systemd_insserv_generator_LDADD = \ -+ libsystemd-label.la \ -+ libsystemd-shared.la ++systemd_insserv_generator_LDADD = libbasic.la + # ------------------------------------------------------------------------------ - systemd_remount_fs_SOURCES = \ - src/remount-fs/remount-fs.c \ + stub_headers = \ + src/boot/efi/util.h \ +Index: systemd-221/src/insserv-generator/Makefile +=================================================================== --- /dev/null -+++ systemd-219/src/insserv-generator/Makefile ++++ systemd-221/src/insserv-generator/Makefile @@ -0,0 +1,28 @@ +# This file is part of systemd. +# @@ -71,9 +73,11 @@ systemd unit drop-in files to add dependencies + $(MAKE) -C .. clean + +.PHONY: all clean +Index: systemd-221/src/insserv-generator/insserv-generator.c +=================================================================== --- /dev/null -+++ systemd-219/src/insserv-generator/insserv-generator.c -@@ -0,0 +1,312 @@ ++++ systemd-221/src/insserv-generator/insserv-generator.c +@@ -0,0 +1,315 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** @@ -153,6 +157,7 @@ systemd unit drop-in files to add dependencies + unsigned i; + char *r; + const char *n; ++ int ret; + + assert(name); + assert(_r); @@ -182,7 +187,9 @@ systemd unit drop-in files to add dependencies + return -EINVAL; + + /* Facilities starting with $ are most likely targets */ -+ r = unit_name_build(n, NULL, ".target"); ++ ret = unit_name_build(n, NULL, ".target", &r); ++ if (ret < 0) ++ return ret; + } else if (filename && streq(name, filename)) + /* Names equaling the file name of the services are redundant */ + return 0; diff --git a/journald-advice-about-use-of-memory.patch b/journald-advice-about-use-of-memory.patch index 4caf994f..46a3e446 100644 --- a/journald-advice-about-use-of-memory.patch +++ b/journald-advice-about-use-of-memory.patch @@ -16,11 +16,11 @@ What is the rationale for MAP_STACK? src/journal/mmap-cache.c | 16 +++++++++++++++- 4 files changed, 33 insertions(+), 5 deletions(-) -Index: systemd/src/journal/catalog.c +Index: systemd-221/src/journal/catalog.c =================================================================== ---- systemd.orig/src/journal/catalog.c -+++ systemd/src/journal/catalog.c -@@ -470,6 +470,10 @@ finish: +--- systemd-221.orig/src/journal/catalog.c ++++ systemd-221/src/journal/catalog.c +@@ -469,6 +469,10 @@ finish: static int open_mmap(const char *database, int *_fd, struct stat *_st, void **_p) { const CatalogHeader *h; @@ -31,7 +31,7 @@ Index: systemd/src/journal/catalog.c int fd; void *p; struct stat st; -@@ -492,12 +496,18 @@ static int open_mmap(const char *databas +@@ -491,12 +495,18 @@ static int open_mmap(const char *databas return -EINVAL; } @@ -51,10 +51,10 @@ Index: systemd/src/journal/catalog.c h = p; if (memcmp(h->signature, CATALOG_SIGNATURE, sizeof(h->signature)) != 0 || le64toh(h->header_size) < sizeof(CatalogHeader) || -Index: systemd/src/journal/journal-authenticate.c +Index: systemd-221/src/journal/journal-authenticate.c =================================================================== ---- systemd.orig/src/journal/journal-authenticate.c -+++ systemd/src/journal/journal-authenticate.c +--- systemd-221.orig/src/journal/journal-authenticate.c ++++ systemd-221/src/journal/journal-authenticate.c @@ -355,7 +355,8 @@ int journal_file_fss_load(JournalFile *f goto finish; } @@ -76,10 +76,10 @@ Index: systemd/src/journal/journal-authenticate.c if (f->fss_file == MAP_FAILED) { f->fss_file = NULL; r = -errno; -Index: systemd/src/journal/journald-kmsg.c +Index: systemd-221/src/journal/journald-kmsg.c =================================================================== ---- systemd.orig/src/journal/journald-kmsg.c -+++ systemd/src/journal/journald-kmsg.c +--- systemd-221.orig/src/journal/journald-kmsg.c ++++ systemd-221/src/journal/journald-kmsg.c @@ -454,7 +454,8 @@ int server_open_kernel_seqnum(Server *s) return 0; } @@ -90,11 +90,11 @@ Index: systemd/src/journal/journald-kmsg.c if (p == MAP_FAILED) { log_error_errno(errno, "Failed to map sequential number file, ignoring: %m"); return 0; -Index: systemd/src/journal/mmap-cache.c +Index: systemd-221/src/journal/mmap-cache.c =================================================================== ---- systemd.orig/src/journal/mmap-cache.c -+++ systemd/src/journal/mmap-cache.c -@@ -467,11 +467,14 @@ static int add_mmap( +--- systemd-221.orig/src/journal/mmap-cache.c ++++ systemd-221/src/journal/mmap-cache.c +@@ -466,11 +466,14 @@ static int add_mmap( struct stat *st, void **ret) { @@ -109,7 +109,7 @@ Index: systemd/src/journal/mmap-cache.c int r; assert(m); -@@ -510,7 +513,8 @@ static int add_mmap( +@@ -509,7 +512,8 @@ static int add_mmap( } for (;;) { @@ -119,7 +119,7 @@ Index: systemd/src/journal/mmap-cache.c if (d != MAP_FAILED) break; if (errno != ENOMEM) -@@ -523,6 +527,16 @@ static int add_mmap( +@@ -522,6 +526,16 @@ static int add_mmap( return -ENOMEM; } diff --git a/kbd-model-map.patch b/kbd-model-map.patch index b7327892..f45b0874 100644 --- a/kbd-model-map.patch +++ b/kbd-model-map.patch @@ -5,10 +5,10 @@ Date: Tue Jan 20 11:33:59 UTC 2015 src/locale/kbd-model-map | 13 +++++++++++++ 1 file changed, 13 insertions(+) -Index: systemd/src/locale/kbd-model-map +Index: systemd-221/src/locale/kbd-model-map =================================================================== ---- systemd.orig/src/locale/kbd-model-map -+++ systemd/src/locale/kbd-model-map +--- systemd-221.orig/src/locale/kbd-model-map ++++ systemd-221/src/locale/kbd-model-map @@ -66,3 +66,16 @@ lt.baltic lt pc105 - terminate:ctrl_a lt.l4 lt pc105 - terminate:ctrl_alt_bksp lt lt pc105 - terminate:ctrl_alt_bksp diff --git a/let-linker-find-libudev-for-libdevmapper.patch b/let-linker-find-libudev-for-libdevmapper.patch index 4879c708..af9de7d8 100644 --- a/let-linker-find-libudev-for-libdevmapper.patch +++ b/let-linker-find-libudev-for-libdevmapper.patch @@ -1,35 +1,19 @@ --- - Makefile.am | 4 ++++ configure.ac | 4 ---- - 2 files changed, 4 insertions(+), 4 deletions(-) + 1 file changed, 4 deletions(-) -Index: systemd/Makefile.am +Index: systemd-221/configure.ac =================================================================== ---- systemd.orig/Makefile.am -+++ systemd/Makefile.am -@@ -4789,6 +4789,10 @@ systemd_cryptsetup_CFLAGS = \ - $(AM_CFLAGS) \ - $(LIBCRYPTSETUP_CFLAGS) - -+systemd_cryptsetup_LDFLAGS = \ -+ $(AM_LDFLAGS) \ -+ -Wl,-rpath-link=$(top_srcdir)/.libs -+ - systemd_cryptsetup_LDADD = \ - libsystemd-label.la \ - libudev-internal.la \ -Index: systemd/configure.ac -=================================================================== ---- systemd.orig/configure.ac -+++ systemd/configure.ac -@@ -206,10 +206,6 @@ AS_CASE([$CC], [*clang*], +--- systemd-221.orig/configure.ac ++++ systemd-221/configure.ac +@@ -194,10 +194,6 @@ AS_CASE([$CC], [*clang*], -Wno-gnu-variable-sized-type-not-at-end \ ])]) --AS_CASE([$CFLAGS], [*-O[[12345\ ]]*], +-AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*], - [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ - -flto -ffat-lto-objects])], - [AC_MSG_RESULT([skipping -flto, optimization not enabled])]) AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags") - AS_CASE([$CFLAGS], [*-O[[12345\ ]]*], + AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*], diff --git a/make-emergency.service-conflict-with-syslog.socket.patch b/make-emergency.service-conflict-with-syslog.socket.patch index d5814921..808fc9a2 100644 --- a/make-emergency.service-conflict-with-syslog.socket.patch +++ b/make-emergency.service-conflict-with-syslog.socket.patch @@ -11,10 +11,10 @@ Reference: bnc#852232 units/emergency.service.in | 1 + 1 file changed, 1 insertion(+) -Index: systemd-218/units/emergency.service.in +Index: systemd-221/units/emergency.service.in =================================================================== ---- systemd-218.orig/units/emergency.service.in -+++ systemd-218/units/emergency.service.in +--- systemd-221.orig/units/emergency.service.in ++++ systemd-221/units/emergency.service.in @@ -11,6 +11,7 @@ Documentation=man:sulogin(8) DefaultDependencies=no Conflicts=shutdown.target diff --git a/parse-crypttab-for-noauto-option.patch b/parse-crypttab-for-noauto-option.patch index 4226b51c..cd65edec 100644 --- a/parse-crypttab-for-noauto-option.patch +++ b/parse-crypttab-for-noauto-option.patch @@ -2,11 +2,11 @@ src/fstab-generator/fstab-generator.c | 45 +++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) -Index: systemd/src/fstab-generator/fstab-generator.c +Index: systemd-221/src/fstab-generator/fstab-generator.c =================================================================== ---- systemd.orig/src/fstab-generator/fstab-generator.c -+++ systemd/src/fstab-generator/fstab-generator.c -@@ -48,6 +48,49 @@ static char *arg_usr_what = NULL; +--- systemd-221.orig/src/fstab-generator/fstab-generator.c ++++ systemd-221/src/fstab-generator/fstab-generator.c +@@ -47,6 +47,49 @@ static char *arg_usr_what = NULL; static char *arg_usr_fstype = NULL; static char *arg_usr_options = NULL; @@ -56,7 +56,7 @@ Index: systemd/src/fstab-generator/fstab-generator.c static int add_swap( const char *what, struct mntent *me, -@@ -118,7 +161,7 @@ static int add_swap( +@@ -108,7 +151,7 @@ static int add_swap( if (r < 0) return r; diff --git a/plymouth-quit-and-wait-for-emergency-service.patch b/plymouth-quit-and-wait-for-emergency-service.patch index 242a05d1..b0461bee 100644 --- a/plymouth-quit-and-wait-for-emergency-service.patch +++ b/plymouth-quit-and-wait-for-emergency-service.patch @@ -4,10 +4,10 @@ units/rescue.service.in | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) -Index: systemd/units/console-shell.service.m4.in +Index: systemd-221/units/console-shell.service.m4.in =================================================================== ---- systemd.orig/units/console-shell.service.m4.in -+++ systemd/units/console-shell.service.m4.in +--- systemd-221.orig/units/console-shell.service.m4.in ++++ systemd-221/units/console-shell.service.m4.in @@ -17,6 +17,8 @@ Before=getty.target [Service] Environment=HOME=/root @@ -17,10 +17,10 @@ Index: systemd/units/console-shell.service.m4.in ExecStart=-@SULOGIN@ ExecStopPost=-@SYSTEMCTL@ poweroff Type=idle -Index: systemd/units/emergency.service.in +Index: systemd-221/units/emergency.service.in =================================================================== ---- systemd.orig/units/emergency.service.in -+++ systemd/units/emergency.service.in +--- systemd-221.orig/units/emergency.service.in ++++ systemd-221/units/emergency.service.in @@ -17,7 +17,8 @@ Before=shutdown.target [Service] Environment=HOME=/root @@ -29,12 +29,12 @@ Index: systemd/units/emergency.service.in +ExecStartPre=-/usr/bin/plymouth quit +ExecStartPre=-/usr/bin/plymouth --wait ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\ntry again to boot into default mode.' - ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --fail --no-block default" + ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --job-mode=fail --no-block default" Type=idle -Index: systemd/units/rescue.service.in +Index: systemd-221/units/rescue.service.in =================================================================== ---- systemd.orig/units/rescue.service.in -+++ systemd/units/rescue.service.in +--- systemd-221.orig/units/rescue.service.in ++++ systemd-221/units/rescue.service.in @@ -16,7 +16,8 @@ Before=shutdown.target [Service] Environment=HOME=/root @@ -43,5 +43,5 @@ Index: systemd/units/rescue.service.in +ExecStartPre=-/usr/bin/plymouth quit +ExecStartPre=-/usr/bin/plymouth --wait ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\nboot into default mode.' - ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --fail --no-block default" + ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --job-mode=fail --no-block default" Type=idle diff --git a/portmap-wants-rpcbind-socket.patch b/portmap-wants-rpcbind-socket.patch index 58b9cfbc..77fb2871 100644 --- a/portmap-wants-rpcbind-socket.patch +++ b/portmap-wants-rpcbind-socket.patch @@ -1,5 +1,11 @@ ---- systemd-210/units/rpcbind.target -+++ systemd-210/units/rpcbind.target 2014-04-08 07:21:55.438235838 +0000 +--- + units/rpcbind.target | 1 + + 1 file changed, 1 insertion(+) + +Index: systemd-221/units/rpcbind.target +=================================================================== +--- systemd-221.orig/units/rpcbind.target ++++ systemd-221/units/rpcbind.target @@ -12,3 +12,4 @@ Description=RPC Port Mapper Documentation=man:systemd.special(7) diff --git a/rescue-emergency-target-conflicts.patch b/rescue-emergency-target-conflicts.patch index f4f15988..a02e7ed3 100644 --- a/rescue-emergency-target-conflicts.patch +++ b/rescue-emergency-target-conflicts.patch @@ -1,13 +1,22 @@ ---- systemd-210/units/emergency.target -+++ systemd-210/units/emergency.target 2014-04-15 11:11:18.618235831 +0000 +--- + units/emergency.target | 1 + + units/rescue.target | 3 ++- + 2 files changed, 3 insertions(+), 1 deletion(-) + +Index: systemd-221/units/emergency.target +=================================================================== +--- systemd-221.orig/units/emergency.target ++++ systemd-221/units/emergency.target @@ -10,4 +10,5 @@ Description=Emergency Mode Documentation=man:systemd.special(7) Requires=emergency.service After=emergency.service +Conflicts=getty.target rescue.target AllowIsolate=yes ---- systemd-210/units/rescue.target -+++ systemd-210/units/rescue.target 2014-04-15 11:14:40.606808928 +0000 +Index: systemd-221/units/rescue.target +=================================================================== +--- systemd-221.orig/units/rescue.target ++++ systemd-221/units/rescue.target @@ -10,7 +10,8 @@ Description=Rescue Mode Documentation=man:systemd.special(7) Requires=sysinit.target rescue.service diff --git a/respect-nfs-bg-option.patch b/respect-nfs-bg-option.patch index 91822e07..a4a4ba65 100644 --- a/respect-nfs-bg-option.patch +++ b/respect-nfs-bg-option.patch @@ -2,11 +2,11 @@ src/fstab-generator/fstab-generator.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) -Index: systemd-218/src/fstab-generator/fstab-generator.c +Index: systemd-221/src/fstab-generator/fstab-generator.c =================================================================== ---- systemd-218.orig/src/fstab-generator/fstab-generator.c -+++ systemd-218/src/fstab-generator/fstab-generator.c -@@ -238,8 +238,11 @@ static int add_mount( +--- systemd-221.orig/src/fstab-generator/fstab-generator.c ++++ systemd-221/src/fstab-generator/fstab-generator.c +@@ -289,8 +289,11 @@ static int add_mount( "Documentation=man:fstab(5) man:systemd-fstab-generator(8)\n", source); @@ -18,5 +18,5 @@ Index: systemd-218/src/fstab-generator/fstab-generator.c + fprintf(f, "Before=%s\n", post); + } - if (passno != 0) { - r = generator_write_fsck_deps(f, arg_dest, what, where, fstype); + if (!automount && opts) { + r = write_requires_after(f, opts); diff --git a/restore-var-run-and-var-lock-bind-mount-if-they-aren-t-sym.patch b/restore-var-run-and-var-lock-bind-mount-if-they-aren-t-sym.patch index 132b73e1..37147945 100644 --- a/restore-var-run-and-var-lock-bind-mount-if-they-aren-t-sym.patch +++ b/restore-var-run-and-var-lock-bind-mount-if-they-aren-t-sym.patch @@ -10,11 +10,11 @@ Subject: restore /var/run and /var/lock bind mount if they aren't symlink create mode 100644 units/var-lock.mount create mode 100644 units/var-run.mount -Index: systemd-218/Makefile.am +Index: systemd-221/Makefile.am =================================================================== ---- systemd-218.orig/Makefile.am -+++ systemd-218/Makefile.am -@@ -516,6 +516,12 @@ endif +--- systemd-221.orig/Makefile.am ++++ systemd-221/Makefile.am +@@ -526,6 +526,12 @@ dist_systemunit_DATA += \ dist_systemunit_DATA_busnames += \ units/busnames.target @@ -27,9 +27,9 @@ Index: systemd-218/Makefile.am nodist_systemunit_DATA = \ units/getty@.service \ units/serial-getty@.service \ -@@ -6086,6 +6092,9 @@ RUNLEVEL4_TARGET_WANTS += \ +@@ -6123,6 +6129,9 @@ GRAPHICAL_TARGET_WANTS += \ systemd-update-utmp-runlevel.service - RUNLEVEL5_TARGET_WANTS += \ + RESCUE_TARGET_WANTS += \ systemd-update-utmp-runlevel.service +LOCAL_FS_TARGET_WANTS += \ + var-run.mount \ @@ -37,10 +37,10 @@ Index: systemd-218/Makefile.am endif SYSINIT_TARGET_WANTS += \ -Index: systemd-218/units/var-lock.mount +Index: systemd-221/units/var-lock.mount =================================================================== --- /dev/null -+++ systemd-218/units/var-lock.mount ++++ systemd-221/units/var-lock.mount @@ -0,0 +1,19 @@ +# This file is part of systemd. +# @@ -61,10 +61,10 @@ Index: systemd-218/units/var-lock.mount +Where=/var/lock +Type=bind +Options=bind -Index: systemd-218/units/var-run.mount +Index: systemd-221/units/var-run.mount =================================================================== --- /dev/null -+++ systemd-218/units/var-run.mount ++++ systemd-221/units/var-run.mount @@ -0,0 +1,19 @@ +# This file is part of systemd. +# diff --git a/set-and-use-default-logconsole.patch b/set-and-use-default-logconsole.patch index 23bd0163..c00f8623 100644 --- a/set-and-use-default-logconsole.patch +++ b/set-and-use-default-logconsole.patch @@ -1,16 +1,18 @@ Use and set default logging console for both journald and kernel messages --- - src/journal/journald-console.c | 96 +++++++++++++++++++++++++++++++++++++++++ - src/journal/journald-console.h | 4 + - src/journal/journald-server.c | 5 ++ - 3 files changed, 105 insertions(+) + src/journal/journald-console.c | 100 +++++++++++++++++++++++++++++++++++++++++ + src/journal/journald-console.h | 3 + + src/journal/journald-server.c | 6 ++ + 3 files changed, 109 insertions(+) ---- systemd-219.orig/src/journal/journald-console.c -+++ systemd-219/src/journal/journald-console.c -@@ -23,6 +23,14 @@ +Index: systemd-221/src/journal/journald-console.c +=================================================================== +--- systemd-221.orig/src/journal/journald-console.c ++++ systemd-221/src/journal/journald-console.c +@@ -22,6 +22,14 @@ + #include #include - #include #include +#ifdef HAVE_SYSV_COMPAT +# include @@ -23,11 +25,11 @@ Use and set default logging console for both journald and kernel messages #include "fileio.h" #include "journald-server.h" -@@ -43,6 +51,76 @@ static bool prefix_timestamp(void) { +@@ -45,6 +53,76 @@ static bool prefix_timestamp(void) { return cached_printk_time; } -+void defaul_tty_path(Server *s) ++void default_tty_path(Server *s) +{ +#ifdef HAVE_SYSV_COMPAT + static const char list[] = "/dev/tty10\0" "/dev/console\0"; @@ -100,7 +102,7 @@ Use and set default logging console for both journald and kernel messages void server_forward_console( Server *s, int priority, -@@ -64,6 +142,12 @@ void server_forward_console( +@@ -66,6 +144,12 @@ void server_forward_console( if (LOG_PRI(priority) > s->max_level_console) return; @@ -113,7 +115,7 @@ Use and set default logging console for both journald and kernel messages /* First: timestamp */ if (prefix_timestamp()) { assert_se(clock_gettime(CLOCK_MONOTONIC, &ts) == 0); -@@ -100,7 +184,23 @@ void server_forward_console( +@@ -102,7 +186,23 @@ void server_forward_console( fd = open_terminal(tty, O_WRONLY|O_NOCTTY|O_CLOEXEC); if (fd < 0) { log_debug_errno(errno, "Failed to open %s for logging: %m", tty); @@ -137,22 +139,34 @@ Use and set default logging console for both journald and kernel messages } if (writev(fd, iovec, n) < 0) ---- systemd-219.orig/src/journal/journald-console.h -+++ systemd-219/src/journal/journald-console.h +Index: systemd-221/src/journal/journald-console.h +=================================================================== +--- systemd-221.orig/src/journal/journald-console.h ++++ systemd-221/src/journal/journald-console.h @@ -24,3 +24,6 @@ #include "journald-server.h" void server_forward_console(Server *s, int priority, const char *identifier, const char *message, const struct ucred *ucred); + +void klogconsole(Server *s); -+void defaul_tty_path(Server *s); ---- systemd-219.orig/src/journal/journald-server.c -+++ systemd-219/src/journal/journald-server.c -@@ -1520,6 +1520,11 @@ int server_init(Server *s) { ++void default_tty_path(Server *s); +Index: systemd-221/src/journal/journald-server.c +=================================================================== +--- systemd-221.orig/src/journal/journald-server.c ++++ systemd-221/src/journal/journald-server.c +@@ -52,6 +52,7 @@ + #include "journal-internal.h" + #include "journal-vacuum.h" + #include "journal-authenticate.h" ++#include "journald-console.h" + #include "journald-rate-limit.h" + #include "journald-kmsg.h" + #include "journald-syslog.h" +@@ -1514,6 +1515,11 @@ int server_init(Server *s) { server_parse_config_file(s); server_parse_proc_cmdline(s); -+ defaul_tty_path(s); ++ default_tty_path(s); + + if (s->tty_path) + klogconsole(s); diff --git a/shut-up-rpmlint-on-var-log-journal.patch b/shut-up-rpmlint-on-var-log-journal.patch index 2304a184..d7ffac19 100644 --- a/shut-up-rpmlint-on-var-log-journal.patch +++ b/shut-up-rpmlint-on-var-log-journal.patch @@ -2,12 +2,12 @@ Makefile.am | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) -Index: systemd-218/Makefile.am +Index: systemd-221/Makefile.am =================================================================== ---- systemd-218.orig/Makefile.am -+++ systemd-218/Makefile.am -@@ -4209,11 +4209,11 @@ noinst_LTLIBRARIES += \ - libsystemd-journal-core.la +--- systemd-221.orig/Makefile.am ++++ systemd-221/Makefile.am +@@ -4129,11 +4129,11 @@ noinst_LTLIBRARIES += \ + libjournal-core.la journal-install-hook: - -$(MKDIR_P) $(DESTDIR)/var/log/journal diff --git a/suse-sysv-bootd-support.diff b/suse-sysv-bootd-support.diff index b11ea682..5c201049 100644 --- a/suse-sysv-bootd-support.diff +++ b/suse-sysv-bootd-support.diff @@ -7,12 +7,14 @@ This reverts commit 3cdebc217c42c8529086f2965319b6a48eaaeabe. [Implementation note: currently, the unit is generated, but not activated even if symlinks exist in boot.d. Hmmm... -jengelh@inai.de] --- - src/sysv-generator/sysv-generator.c | 26 +++++++++++++++++++++----- - 1 file changed, 21 insertions(+), 5 deletions(-) + src/sysv-generator/sysv-generator.c | 21 +++++++++++++++------ + 1 file changed, 15 insertions(+), 6 deletions(-) ---- systemd-219.orig/src/sysv-generator/sysv-generator.c -+++ systemd-219/src/sysv-generator/sysv-generator.c -@@ -42,7 +42,8 @@ +Index: systemd-221/src/sysv-generator/sysv-generator.c +=================================================================== +--- systemd-221.orig/src/sysv-generator/sysv-generator.c ++++ systemd-221/src/sysv-generator/sysv-generator.c +@@ -39,7 +39,8 @@ typedef enum RunlevelType { RUNLEVEL_UP, @@ -22,7 +24,7 @@ activated even if symlinks exist in boot.d. Hmmm... -jengelh@inai.de] } RunlevelType; static const struct { -@@ -50,6 +51,9 @@ static const struct { +@@ -47,6 +48,9 @@ static const struct { const char *target; const RunlevelType type; } rcnd_table[] = { @@ -30,9 +32,9 @@ activated even if symlinks exist in boot.d. Hmmm... -jengelh@inai.de] + { "boot.d", SPECIAL_SYSINIT_TARGET, RUNLEVEL_SYSINIT }, + /* Standard SysV runlevels for start-up */ - { "rc1.d", SPECIAL_RESCUE_TARGET, RUNLEVEL_UP }, - { "rc2.d", SPECIAL_RUNLEVEL2_TARGET, RUNLEVEL_UP }, -@@ -65,7 +69,7 @@ static const struct { + { "rc1.d", SPECIAL_RESCUE_TARGET, RUNLEVEL_UP }, + { "rc2.d", SPECIAL_MULTI_USER_TARGET, RUNLEVEL_UP }, +@@ -62,10 +66,10 @@ static const struct { directories in this order, and we want to make sure that sysv_start_priority is known when we first load the unit. And that value we only know from S links. Hence @@ -40,17 +42,12 @@ activated even if symlinks exist in boot.d. Hmmm... -jengelh@inai.de] + UP/SYSINIT must be read before DOWN */ }; - typedef struct SysvStub { -@@ -83,7 +87,7 @@ typedef struct SysvStub { - bool reload; - } SysvStub; - -const char *arg_dest = "/tmp"; +static const char *arg_dest = "/tmp"; - static int add_symlink(const char *service, const char *where) { - _cleanup_free_ char *from = NULL, *to = NULL; -@@ -235,6 +239,10 @@ static bool usage_contains_reload(const + typedef struct SysvStub { + char *name; +@@ -242,6 +246,10 @@ static bool usage_contains_reload(const static char *sysv_translate_name(const char *name) { char *r; @@ -61,7 +58,7 @@ activated even if symlinks exist in boot.d. Hmmm... -jengelh@inai.de] r = new(char, strlen(name) + strlen(".service") + 1); if (!r) return NULL; -@@ -864,10 +872,10 @@ static int set_dependencies_from_rcnd(Lo +@@ -853,10 +861,10 @@ static int set_dependencies_from_rcnd(co if (de->d_name[0] == 'S') { @@ -74,7 +71,7 @@ activated even if symlinks exist in boot.d. Hmmm... -jengelh@inai.de] r = set_ensure_allocated(&runlevel_services[i], NULL); if (r < 0) -@@ -878,7 +886,8 @@ static int set_dependencies_from_rcnd(Lo +@@ -867,7 +875,8 @@ static int set_dependencies_from_rcnd(co goto finish; } else if (de->d_name[0] == 'K' && diff --git a/sysctl-handle-boot-sysctl.conf-kernel_release.patch b/sysctl-handle-boot-sysctl.conf-kernel_release.patch index 08247c82..289f345e 100644 --- a/sysctl-handle-boot-sysctl.conf-kernel_release.patch +++ b/sysctl-handle-boot-sysctl.conf-kernel_release.patch @@ -10,10 +10,10 @@ configuration), needed by openSUSE (bnc#809420). units/systemd-sysctl.service.in | 2 ++ 2 files changed, 10 insertions(+) -Index: systemd-218/src/sysctl/sysctl.c +Index: systemd-221/src/sysctl/sysctl.c =================================================================== ---- systemd-218.orig/src/sysctl/sysctl.c -+++ systemd-218/src/sysctl/sysctl.c +--- systemd-221.orig/src/sysctl/sysctl.c ++++ systemd-221/src/sysctl/sysctl.c @@ -26,6 +26,7 @@ #include #include @@ -22,7 +22,7 @@ Index: systemd-218/src/sysctl/sysctl.c #include "log.h" #include "strv.h" -@@ -310,6 +311,13 @@ int main(int argc, char *argv[]) { +@@ -264,6 +265,13 @@ int main(int argc, char *argv[]) { } else { _cleanup_strv_free_ char **files = NULL; char **f; @@ -36,10 +36,10 @@ Index: systemd-218/src/sysctl/sysctl.c r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); if (r < 0) { -Index: systemd-218/units/systemd-sysctl.service.in +Index: systemd-221/units/systemd-sysctl.service.in =================================================================== ---- systemd-218.orig/units/systemd-sysctl.service.in -+++ systemd-218/units/systemd-sysctl.service.in +--- systemd-221.orig/units/systemd-sysctl.service.in ++++ systemd-221/units/systemd-sysctl.service.in @@ -13,6 +13,8 @@ Conflicts=shutdown.target After=systemd-modules-load.service Before=sysinit.target shutdown.target diff --git a/systemctl-set-default-target.patch b/systemctl-set-default-target.patch index 86aec7e9..de694a4b 100644 --- a/systemctl-set-default-target.patch +++ b/systemctl-set-default-target.patch @@ -6,11 +6,11 @@ This solves the bug bnc#868439 man/systemctl.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -Index: systemd/man/systemctl.xml +Index: systemd-221/man/systemctl.xml =================================================================== ---- systemd.orig/man/systemctl.xml -+++ systemd/man/systemctl.xml -@@ -445,7 +445,7 @@ along with systemd; If not, see @@ -19,7 +19,7 @@ Index: systemd/man/systemctl.xml any existing conflicting symlinks. When used with halt, -@@ -1215,6 +1215,8 @@ kobject-uevent 1 systemd-udevd-kernel.so +@@ -1237,6 +1237,8 @@ kobject-uevent 1 systemd-udevd-kernel.so Return the default target to boot into. This returns the target unit name default.target is aliased (symlinked) to. diff --git a/systemd-219.tar.xz b/systemd-219.tar.xz deleted file mode 100644 index d90808ee..00000000 --- a/systemd-219.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5c57113454e37c040d0cb481bd960ae7cf3a3fe0a231ff4945259bc74503f2d9 -size 3938228 diff --git a/systemd-221.tar.xz b/systemd-221.tar.xz new file mode 100644 index 00000000..5531426d --- /dev/null +++ b/systemd-221.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:085e088650afbfc688ccb13459aedb1fbc7c8810358605b076301f472d51cc4f +size 4010048 diff --git a/systemd-add-user-keep.patch b/systemd-add-user-keep.patch index 8eb7f440..a67fa47f 100644 --- a/systemd-add-user-keep.patch +++ b/systemd-add-user-keep.patch @@ -1,13 +1,13 @@ --- man/tmpfiles.d.xml | 3 +++ - src/tmpfiles/tmpfiles.c | 48 ++++++++++++++++++++++++++++++++++++++++-------- - 2 files changed, 43 insertions(+), 8 deletions(-) + src/tmpfiles/tmpfiles.c | 47 ++++++++++++++++++++++++++++++++++++++++------- + 2 files changed, 43 insertions(+), 7 deletions(-) -Index: systemd/man/tmpfiles.d.xml +Index: systemd-221/man/tmpfiles.d.xml =================================================================== ---- systemd.orig/man/tmpfiles.d.xml -+++ systemd/man/tmpfiles.d.xml -@@ -489,6 +489,9 @@ +--- systemd-221.orig/man/tmpfiles.d.xml ++++ systemd-221/man/tmpfiles.d.xml +@@ -528,6 +528,9 @@ f, F, and w may be used to specify a short string that is written to the file, suffixed by a newline. For @@ -15,13 +15,21 @@ Index: systemd/man/tmpfiles.d.xml + usernames. If given, only paths belonging to these users will be excluded + during directory cleanup. Ignored for all other lines. For C, specifies the source file or - directory. For t determines extended - attributes to be set. For a determines -Index: systemd/src/tmpfiles/tmpfiles.c + directory. For t, T + determines extended attributes to be set. For +Index: systemd-221/src/tmpfiles/tmpfiles.c =================================================================== ---- systemd.orig/src/tmpfiles/tmpfiles.c -+++ systemd/src/tmpfiles/tmpfiles.c -@@ -345,6 +345,7 @@ static int dir_cleanup( +--- systemd-221.orig/src/tmpfiles/tmpfiles.c ++++ systemd-221/src/tmpfiles/tmpfiles.c +@@ -37,6 +37,7 @@ + #include + #include + #include ++#include + + #include "log.h" + #include "util.h" +@@ -358,6 +359,7 @@ static int dir_cleanup( struct timespec times[2]; bool deleted = false; int r = 0; @@ -29,24 +37,23 @@ Index: systemd/src/tmpfiles/tmpfiles.c while ((dent = readdir(d))) { struct stat s; -@@ -395,14 +396,45 @@ static int dir_cleanup( +@@ -408,14 +410,45 @@ static int dir_cleanup( } /* Is there an item configured for this path? */ -- if (hashmap_get(items, sub_path)) { +- if (ordered_hashmap_get(items, sub_path)) { - log_debug("Ignoring \"%s\": a separate entry exists.", sub_path); - continue; -- } ++ bool found_glob = false; ++ found = ordered_hashmap_get(items, sub_path); ++ if (!found) { ++ found_glob = true; ++ found = find_glob(globs, sub_path); + } - - if (find_glob(globs, sub_path)) { - log_debug("Ignoring \"%s\": a separate glob exists.", sub_path); - continue; -+ bool found_glob = false; -+ found = hashmap_get(items, sub_path); -+ if (!found) { -+ found_glob = true; -+ found = find_glob(globs, sub_path); -+ } + if (found) { + struct passwd *pw; + char *userfound = NULL, *args; diff --git a/systemd-dbus-system-bus-address.patch b/systemd-dbus-system-bus-address.patch index 89c83e42..60b98265 100644 --- a/systemd-dbus-system-bus-address.patch +++ b/systemd-dbus-system-bus-address.patch @@ -1,13 +1,26 @@ --- + src/basic/def.h | 2 +- src/libsystemd/sd-bus/sd-bus.c | 4 ++-- - src/shared/def.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) -Index: systemd/src/libsystemd/sd-bus/sd-bus.c +Index: systemd-221/src/basic/def.h =================================================================== ---- systemd.orig/src/libsystemd/sd-bus/sd-bus.c -+++ systemd/src/libsystemd/sd-bus/sd-bus.c -@@ -809,8 +809,8 @@ static int parse_container_unix_address( +--- systemd-221.orig/src/basic/def.h ++++ systemd-221/src/basic/def.h +@@ -61,7 +61,7 @@ + "/usr/lib/kbd/keymaps/\0" + #endif + +-#define UNIX_SYSTEM_BUS_ADDRESS "unix:path=/var/run/dbus/system_bus_socket" ++#define UNIX_SYSTEM_BUS_ADDRESS "unix:path=/run/dbus/system_bus_socket" + #define KERNEL_SYSTEM_BUS_ADDRESS "kernel:path=/sys/fs/kdbus/0-system/bus" + #define DEFAULT_SYSTEM_BUS_ADDRESS KERNEL_SYSTEM_BUS_ADDRESS ";" UNIX_SYSTEM_BUS_ADDRESS + #define UNIX_USER_BUS_ADDRESS_FMT "unix:path=%s/bus" +Index: systemd-221/src/libsystemd/sd-bus/sd-bus.c +=================================================================== +--- systemd-221.orig/src/libsystemd/sd-bus/sd-bus.c ++++ systemd-221/src/libsystemd/sd-bus/sd-bus.c +@@ -837,8 +837,8 @@ static int parse_container_unix_address( b->nspid = 0; b->sockaddr.un.sun_family = AF_UNIX; @@ -18,16 +31,3 @@ Index: systemd/src/libsystemd/sd-bus/sd-bus.c return 0; } -Index: systemd/src/shared/def.h -=================================================================== ---- systemd.orig/src/shared/def.h -+++ systemd/src/shared/def.h -@@ -61,7 +61,7 @@ - "/usr/lib/kbd/keymaps/\0" - #endif - --#define UNIX_SYSTEM_BUS_ADDRESS "unix:path=/var/run/dbus/system_bus_socket" -+#define UNIX_SYSTEM_BUS_ADDRESS "unix:path=/run/dbus/system_bus_socket" - #define KERNEL_SYSTEM_BUS_ADDRESS "kernel:path=/sys/fs/kdbus/0-system/bus" - - #ifdef ENABLE_KDBUS diff --git a/systemd-install-compat_pkgconfig-always.patch b/systemd-install-compat_pkgconfig-always.patch index c378af51..57fb6129 100644 --- a/systemd-install-compat_pkgconfig-always.patch +++ b/systemd-install-compat_pkgconfig-always.patch @@ -1,6 +1,12 @@ ---- a/Makefile.am -+++ b/Makefile.am -@@ -4560,12 +4560,6 @@ lib_LTLIBRARIES += \ +--- + Makefile.am | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +Index: systemd-221/Makefile.am +=================================================================== +--- systemd-221.orig/Makefile.am ++++ systemd-221/Makefile.am +@@ -5876,12 +5876,6 @@ lib_LTLIBRARIES += \ libsystemd-id128.la \ libsystemd-daemon.la @@ -13,7 +19,7 @@ # move lib from $(libdir) to $(rootlibdir) and update devel link, if needed compat-lib-install-hook: libname=libsystemd-login.so && $(move-to-rootlibdir) -@@ -4583,6 +4577,12 @@ INSTALL_EXEC_HOOKS += compat-lib-install +@@ -5899,6 +5893,12 @@ INSTALL_EXEC_HOOKS += compat-lib-install UNINSTALL_EXEC_HOOKS += compat-lib-uninstall-hook endif @@ -24,5 +30,5 @@ + src/compat-libs/libsystemd-daemon.pc + EXTRA_DIST += \ + src/compat-libs/linkwarning.h \ src/compat-libs/libsystemd-journal.pc.in \ - src/compat-libs/libsystemd-login.pc.in \ diff --git a/systemd-mini.changes b/systemd-mini.changes index a469ea14..ae85a326 100644 --- a/systemd-mini.changes +++ b/systemd-mini.changes @@ -1,3 +1,47 @@ +------------------------------------------------------------------- +Fri Jun 19 20:51:14 UTC 2015 - jengelh@inai.de + +- Update to new upstream release 221 +* From 220: +* libgudev was moved into a package of its own +* Runlevels 2, 3 and 4 are no longer distinct, they all map to + multi-user.target. +* The EFI System Partition mounted to /boot will be unmounted + 2 minutes after boot. +* systemd does not support direct live-upgrades (via `systemctl + daemon-reexec`) from versions older than v44 anymore. +* systemd-nspawn may now be called as part of a shell pipeline. +* systemd-shutdownd has been removed. This service was + previously responsible for implementing scheduled shutdowns + as exposed in /usr/bin/shutdown's time parameter. This + functionality has now been moved into systemd-logind and is + accessible via a bus interface. +* udev will no longer call blkid and create symlinks for all + block devices, but merely those from a whitelist + (cf. 60-persistent-storage.rules). +* /usr/lib/os-release gained a new optional field VARIANT= +* Details at + http://lists.freedesktop.org/archives/systemd-devel/2015-May/032147.html +* From 221: +* New sd-bus and sd-event APIs in libsystemd +* If there is both a systemd unit and a SysV init script for the + same service name, and `systemctl enable` or other operation is + run, both will now be enabled (or execute the related operation + on both), not just the unit. +- Split libsystemd0 to support systemd-less nspawn containers +- Redo manpage file lists without %exclude, tends to hide + unpackaged files. +- hwdb belongs to udev +- Resolve memory leak and add missing _cleanup_free_ to + 0001-On_s390_con3270_disable_ANSI_colour_esc.patch +- Remove systemd-powerd-initctl-support.patch + (no longer builds because shutdownd is gone) +- Remove quilt-patches/0001-core-rework-device-state-logic.patch, + 0001-Let-some-boolean-survive-a-daemon-reload.patch + (merged upstream), + 0001-Let-some-boolean-survive-a-daemon-reload.patch + (obsolete) + ------------------------------------------------------------------- Thu Jun 11 14:48:03 UTC 2015 - werner@suse.de diff --git a/systemd-mini.spec b/systemd-mini.spec index 88c4728f..f107c788 100644 --- a/systemd-mini.spec +++ b/systemd-mini.spec @@ -1,7 +1,7 @@ # # spec file for package systemd-mini # -# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -46,7 +46,7 @@ Name: systemd-mini Url: http://www.freedesktop.org/wiki/Software/systemd -Version: 219 +Version: 221 Release: 0 Summary: A System and Session Manager License: LGPL-2.1+ @@ -61,7 +61,6 @@ BuildRequires: autoconf BuildRequires: automake BuildRequires: fdupes BuildRequires: gperf -BuildRequires: gtk-doc BuildRequires: intltool BuildRequires: libacl-devel BuildRequires: libcap-devel @@ -90,8 +89,6 @@ Conflicts: systemd Conflicts: kiwi %else BuildRequires: docbook-xsl-stylesheets -BuildRequires: gobject-introspection-devel -BuildRequires: gtk-doc BuildRequires: libgcrypt-devel BuildRequires: libusb-devel BuildRequires: libxslt-tools @@ -117,7 +114,7 @@ BuildRequires: pam-config >= 0.79-5 Requires: pwdutils Requires: systemd-presets-branding Requires: sysvinit-tools -Requires: util-linux >= 2.25 +Requires: util-linux >= 2.26 Requires(post): coreutils Requires(post): findutils Requires(post): pam-config >= 0.79-5 @@ -206,8 +203,6 @@ Patch180: 0014-journald-with-journaling-FS.patch Patch182: 0019-make-completion-smart-to-be-able-to-redirect.patch # PATCH-FIX-SUSE 0001-add-network-device-after-NFS-mount-units.patch werner@suse.com Patch183: 0001-add-network-device-after-NFS-mount-units.patch -# PATCH-FIX-SUSE systemd-powerd-initctl-support.patch -Patch185: systemd-powerd-initctl-support.patch # PATCH-FIX-SUSE systemctl-set-default-target.patch Patch186: systemctl-set-default-target.patch # PATCH-FIX-SUSE boot-local-start.patch (bnc #869142) @@ -253,9 +248,6 @@ Patch490: watch_resolv.conf_for_become_changed.patch Patch520: systemd-add-user-keep.patch # PATCH-FIX-SUSE systemd-add-user-keep.patch (bnc#903009) Patch521: kbd-model-map.patch -Patch522: 0001-core-rework-device-state-logic.patch -# PATCH-FIX-SUSE/PATCH-FIX-UPSTREAM -Patch523: 0001-Let-some-boolean-survive-a-daemon-reload.patch # UDEV PATCHES # ============ @@ -330,7 +322,7 @@ Some systemd commands offer bash completion, but it's an optional dependency. Summary: Development headers for systemd License: LGPL-2.1+ Group: Development/Libraries/C and C++ -Requires: %{name} = %{version} +Requires: libsystemd0 = %version Requires: systemd-rpm-macros %if 0%{?bootstrap} Conflicts: systemd-devel @@ -351,6 +343,32 @@ Provides: sysvinit:/sbin/init %description sysvinit Drop-in replacement of System V init tools. +%package -n libsystemd0 +Summary: Component library for systemd +License: LGPL-2.1+ +Group: System/Libraries + +%description -n libsystemd0 +This library provides several of the systemd C APIs: + +* sd-bus implements an alternative D-Bus client library that is + relatively easy to use, very efficient and supports both classic + D-Bus as well as kdbus as transport backend. + +* sd-daemon(3): for system services (daemons) to report their status + to systemd and to make easy use of socket-based activation logic + +* sd-event is a generic event loop abstraction that is built around + Linux epoll, but adds features such as event prioritization or + efficient timer handling. + +* sd-id128(3): generation and processing of 128-bit IDs + +* sd-journal(3): API to submit and query journal log entries + +* sd-login(3): APIs to introspect and monitor seat, login session and + user status information on the local system. + %package -n %{udevpkgname} Summary: A rule-based device node and kernel event manager License: GPL-2.0 @@ -432,38 +450,6 @@ This package contains the development files for the library libudev, a dynamic library, which provides access to udev device information. %if ! 0%{?bootstrap} -%package -n libgudev-1_0-0 -Summary: GObject library, to access udev device information -License: LGPL-2.1+ -Group: System/Libraries -Requires: lib%{udevpkgname}%{udev_major} = %{version}-%{release} - -%description -n libgudev-1_0-0 -This package contains the GObject library libgudev, which provides -access to udev device information. - -%package -n typelib-1_0-GUdev-1_0 -Summary: GObject library, to access udev device information -- Introspection bindings -License: LGPL-2.1+ -Group: System/Libraries - -%description -n typelib-1_0-GUdev-1_0 -This package provides the GObject Introspection bindings for libgudev, which -provides access to udev device information. - -%package -n libgudev-1_0-devel -Summary: Devel package for libgudev -License: LGPL-2.1+ -Group: Development/Libraries/Other -Requires: glib2-devel -Requires: libgudev-1_0-0 = %{version}-%{release} -Requires: libudev-devel = %{version}-%{release} -Requires: typelib-1_0-GUdev-1_0 = %{version}-%{release} - -%description -n libgudev-1_0-devel -This is the devel package for the GObject library libgudev, which -provides GObject access to udev device information. - %package logger Summary: Journal only logging License: LGPL-2.1+ @@ -580,7 +566,6 @@ cp %{SOURCE7} m4/ %patch180 -p1 %patch182 -p1 %patch183 -p1 -%patch185 -p1 %patch186 -p1 %patch188 -p1 %patch189 -p1 @@ -607,8 +592,6 @@ cp %{SOURCE7} m4/ %patch490 -p1 %patch520 -p1 %patch521 -p1 -%patch522 -p1 -%patch523 -p1 # udev patches %patch1001 -p1 @@ -713,7 +696,6 @@ cflags -Wl,--hash-size=8599 LDFLAGS --with-dbussystemservicedir=%{_datadir}/dbus-1/system-services \ --with-dbusinterfacedir=%{_datadir}/dbus-1/interfaces \ %if 0%{?bootstrap} - --disable-gudev \ --disable-myhostname \ --disable-manpages \ --disable-machined \ @@ -722,7 +704,6 @@ cflags -Wl,--hash-size=8599 LDFLAGS %if %{with python} --with-python \ %endif - --enable-gtk-doc \ --with-nss-my-hostname-warning \ %endif --enable-selinux \ @@ -1079,16 +1060,13 @@ fi %regenerate_initrd_posttrans %endif -%post -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig - +%post -n libsystemd0 -p /sbin/ldconfig +%postun -n libsystemd0 -p /sbin/ldconfig +%post -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig %postun -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig %if ! 0%{?bootstrap} -%post -n libgudev-1_0-0 -p /sbin/ldconfig - -%postun -n libgudev-1_0-0 -p /sbin/ldconfig - %if %{with permission} %verifyscript logger %verify_permissions -e %{_localstatedir}/log/journal/ @@ -1164,7 +1142,6 @@ exit 0 %{_bindir}/systemd-path %{_bindir}/systemd-sysusers %{_bindir}/systemd-notify -%{_bindir}/systemd-hwdb %{_bindir}/systemd-run %{_bindir}/systemd-journalctl %{_bindir}/journalctl @@ -1180,13 +1157,6 @@ exit 0 %{_bindir}/systemd-detect-virt %{_bindir}/timedatectl %{_sbindir}/systemd-sysv-convert -%{_libdir}/libsystemd.so.* -%if %{with compat_libs} -%{_libdir}/libsystemd-daemon.so.* -%{_libdir}/libsystemd-login.so.* -%{_libdir}/libsystemd-id128.so.* -%{_libdir}/libsystemd-journal.so.* -%endif %{_bindir}/systemd-cgls %{_bindir}/systemd-cgtop %{_bindir}/systemd-cat @@ -1217,6 +1187,7 @@ exit 0 %{_prefix}/lib/systemd/system/*.path %{_prefix}/lib/systemd/user/*.target %{_prefix}/lib/systemd/user/*.service +%{_prefix}/lib/systemd/user/*.socket %exclude %{_prefix}/lib/systemd/systemd-udevd %if ! 0%{?bootstrap} %exclude %{_prefix}/lib/systemd/systemd-journal-gatewayd @@ -1231,6 +1202,7 @@ exit 0 %dir %{_prefix}/lib/systemd/user-preset %dir %{_prefix}/lib/systemd/system-generators %dir %{_prefix}/lib/systemd/user-generators +%{_prefix}/lib/systemd/user-generators/systemd-dbus1-generator %dir %{_prefix}/lib/systemd/ntp-units.d/ %dir %{_prefix}/lib/systemd/system-shutdown/ %dir %{_prefix}/lib/systemd/system-sleep/ @@ -1241,6 +1213,7 @@ exit 0 %if ! 0%{?bootstrap} %{_prefix}/lib/systemd/system-generators/systemd-cryptsetup-generator %endif +%{_prefix}/lib/systemd/system-generators/systemd-dbus1-generator %if 0%{has_efi} %{_bindir}/bootctl %{_prefix}/lib/systemd/system-generators/systemd-efi-boot-generator @@ -1307,6 +1280,7 @@ exit 0 %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf +%{_sysconfdir}/X11/xinit/ # Some files which may created by us %dir %{_sysconfdir}/X11/xorg.conf.d %ghost %config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/00-keyboard.conf @@ -1322,15 +1296,23 @@ exit 0 %{_datadir}/factory/ %{_datadir}/dbus-1/services/org.freedesktop.systemd1.service %if %{with networkd} +%{_prefix}/lib/systemd/system/org.freedesktop.network1.busname %{_datadir}/dbus-1/system-services/org.freedesktop.network1.service %endif +%{_prefix}/lib/systemd/system/org.freedesktop.systemd1.busname %{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service +%{_prefix}/lib/systemd/system/org.freedesktop.locale1.busname %{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service +%{_prefix}/lib/systemd/system/org.freedesktop.login1.busname %{_datadir}/dbus-1/system-services/org.freedesktop.login1.service +%{_prefix}/lib/systemd/system/org.freedesktop.hostname1.busname %{_datadir}/dbus-1/system-services/org.freedesktop.hostname1.service %if !0%{?bootstrap} +%{_prefix}/lib/systemd/system/org.freedesktop.machine1.busname %{_datadir}/dbus-1/system-services/org.freedesktop.machine1.service %endif +%{_prefix}/lib/systemd/system/org.freedesktop.timedate1.busname + %{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service %dir %{_datadir}/polkit-1 %dir %{_datadir}/polkit-1/actions @@ -1348,20 +1330,20 @@ exit 0 %{_datadir}/systemd %if ! 0%{?bootstrap} -# Packaged in sysvinit subpackage -%exclude %{_mandir}/man1/init.1* -%exclude %{_mandir}/man8/halt.8* -%exclude %{_mandir}/man8/reboot.8* -%exclude %{_mandir}/man8/shutdown.8* -%exclude %{_mandir}/man8/poweroff.8* -%exclude %{_mandir}/man8/telinit.8* -%exclude %{_mandir}/man8/runlevel.8* -%exclude %{_mandir}/man*/*udev*.[0-9]* -%exclude %{_mandir}/man8/systemd-journal-gatewayd.* -%{_mandir}/man1/*.1* -%{_mandir}/man5/*.5* -%{_mandir}/man7/*.7* -%{_mandir}/man8/*.8* +%_mandir/man1/[a-rt-z]*ctl.1* +%_mandir/man1/systemc*.1* +%_mandir/man1/systemd*.1* +%_mandir/man5/[a-tv-z]* +%_mandir/man5/user* +%_mandir/man7/[bdfks]* +%_mandir/man8/kern* +%_mandir/man8/pam_* +%_mandir/man8/systemd-[a-gik-tv]* +%_mandir/man8/systemd-h[aioy]* +%_mandir/man8/systemd-journal-remote.* +%_mandir/man8/systemd-journal-upload.* +%_mandir/man8/systemd-journald* +%_mandir/man8/systemd-u[ps]* %endif %{_docdir}/systemd %{_prefix}/lib/udev/rules.d/70-uaccess.rules @@ -1408,21 +1390,16 @@ exit 0 %{_libdir}/libsystemd-login.so %{_libdir}/libsystemd-id128.so %{_libdir}/libsystemd-journal.so -%dir %{_includedir}/systemd -%{_includedir}/systemd/sd-login.h -%{_includedir}/systemd/sd-daemon.h -%{_includedir}/systemd/sd-id128.h -%{_includedir}/systemd/sd-journal.h -%{_includedir}/systemd/sd-messages.h -%{_includedir}/systemd/_sd-common.h -%{_libdir}/pkgconfig/systemd.pc +%{_includedir}/systemd/ +%{_datadir}/pkgconfig/systemd.pc %{_libdir}/pkgconfig/libsystemd.pc %{_libdir}/pkgconfig/libsystemd-daemon.pc %{_libdir}/pkgconfig/libsystemd-login.pc %{_libdir}/pkgconfig/libsystemd-id128.pc %{_libdir}/pkgconfig/libsystemd-journal.pc %if ! 0%{?bootstrap} -%{_mandir}/man3/*.3* +%_mandir/man3/SD*.3* +%_mandir/man3/sd*.3* %endif %files sysvinit @@ -1454,6 +1431,7 @@ exit 0 %if 0%{?suse_version} <= 1310 %{_prefix}/lib/firmware %endif +%{_bindir}/systemd-hwdb %dir %{_prefix}/lib/udev/ %{_prefix}/lib/udev/accelerometer %{_prefix}/lib/udev/ata_id @@ -1472,14 +1450,18 @@ exit 0 %exclude %{_prefix}/lib/udev/rules.d/73-seat-numlock.rules %exclude %{_prefix}/lib/udev/rules.d/99-systemd.rules %{_prefix}/lib/udev/rules.d/*.rules -%dir %{_prefix}/lib/udev/hwdb.d -%{_prefix}/lib/udev/hwdb.d/* +%{_prefix}/lib/udev/hwdb.d/ %dir %{_sysconfdir}/udev/ %dir %{_sysconfdir}/udev/rules.d/ %ghost %{_sysconfdir}/udev/hwdb.bin %config(noreplace) %{_sysconfdir}/udev/udev.conf %if ! 0%{?bootstrap} -%{_mandir}/man?/*udev*.[0-9]* +%_mandir/man5/udev* +%_mandir/man7/hwdb* +%_mandir/man7/udev* +%_mandir/man8/systemd-hwdb* +%_mandir/man8/systemd-udev* +%_mandir/man8/udev* %endif %dir %{_prefix}/lib/systemd/system %{_prefix}/lib/systemd/systemd-udevd @@ -1496,6 +1478,16 @@ exit 0 %{_datadir}/pkgconfig/udev.pc %endif +%files -n libsystemd0 +%defattr(-,root,root) +%_libdir/libsystemd.so.* +%if %{with compat_libs} +%_libdir/libsystemd-daemon.so.* +%_libdir/libsystemd-login.so.* +%_libdir/libsystemd-id128.so.* +%_libdir/libsystemd-journal.so.* +%endif + %files -n lib%{udevpkgname}%{udev_major} %defattr(-,root,root) %{_libdir}/libudev.so.* @@ -1505,35 +1497,9 @@ exit 0 %{_includedir}/libudev.h %{_libdir}/libudev.so %{_libdir}/pkgconfig/libudev.pc -%if ! 0%{?bootstrap} -%dir %{_datadir}/gtk-doc -%dir %{_datadir}/gtk-doc/html -%dir %{_datadir}/gtk-doc/html/libudev -%{_datadir}/gtk-doc/html/libudev/* -%endif +%{_mandir}/man3/*udev*.3* %if ! 0%{?bootstrap} -%files -n libgudev-1_0-0 -%defattr(-,root,root) -%{_libdir}/libgudev-1.0.so.* - -%files -n typelib-1_0-GUdev-1_0 -%defattr(-,root,root) -%{_libdir}/girepository-1.0/GUdev-1.0.typelib - -%files -n libgudev-1_0-devel -%defattr(-,root,root) -%dir %{_includedir}/gudev-1.0 -%dir %{_includedir}/gudev-1.0/gudev -%{_includedir}/gudev-1.0/gudev/*.h -%{_libdir}/libgudev-1.0.so -%{_libdir}/pkgconfig/gudev-1.0.pc -%dir %{_datadir}/gtk-doc -%dir %{_datadir}/gtk-doc/html -%dir %{_datadir}/gtk-doc/html/gudev -%{_datadir}/gtk-doc/html/gudev/* -%{_datadir}/gir-1.0/GUdev-1.0.gir - %files logger %defattr(-,root,root) %dir %attr(2755,root,systemd-journal) %{_localstatedir}/log/journal/ @@ -1544,6 +1510,8 @@ exit 0 %files -n nss-myhostname %defattr(-, root, root) %{_sbindir}/nss-myhostname-config +%{_mandir}/man8/libnss_myhostname.* +%{_mandir}/man8/nss-myhostname.* /%{_lib}/*nss_myhostname* %files journal-gateway @@ -1556,6 +1524,8 @@ exit 0 %files -n nss-mymachines %defattr(-,root,root) %_libdir/libnss_mymachines.so* +%_mandir/man8/libnss_mymachines.* +%_mandir/man8/nss-mymachines.* %endif %changelog diff --git a/systemd-pam_config.patch b/systemd-pam_config.patch index 898a6548..469004d3 100644 --- a/systemd-pam_config.patch +++ b/systemd-pam_config.patch @@ -2,10 +2,10 @@ src/login/systemd-user | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: systemd-218/src/login/systemd-user +Index: systemd-221/src/login/systemd-user =================================================================== ---- systemd-218.orig/src/login/systemd-user -+++ systemd-218/src/login/systemd-user +--- systemd-221.orig/src/login/systemd-user ++++ systemd-221/src/login/systemd-user @@ -2,5 +2,5 @@ # # Used by systemd --user instances. diff --git a/systemd-powerd-initctl-support.patch b/systemd-powerd-initctl-support.patch deleted file mode 100644 index 675124ba..00000000 --- a/systemd-powerd-initctl-support.patch +++ /dev/null @@ -1,121 +0,0 @@ -From 7b8b1ca177a532a6673e5795af867b3631622391 Mon Sep 17 00:00:00 2001 -From: Hannes Reinecke -Date: Fri, 7 Mar 2014 14:04:58 +0100 -Subject: [PATCH] systemd: powerd initctl support - -Old versions of powerd will be using the initctl fifo to signal -state changes. To maintain backward compability systemd should -be interpreting these messages, too. - -Signed-off-by: Hannes Reinecke ---- - src/initctl/initctl.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 70 insertions(+), 1 deletion(-) - ---- systemd-219.orig/src/initctl/initctl.c -+++ systemd-219/src/initctl/initctl.c -@@ -32,8 +32,11 @@ - #include - #include - #include -+#include -+#include - - #include "sd-daemon.h" -+#include "sd-shutdown.h" - #include "sd-bus.h" - - #include "util.h" -@@ -44,6 +47,7 @@ - #include "bus-util.h" - #include "bus-error.h" - #include "def.h" -+#include "socket-util.h" - - #define SERVER_FD_MAX 16 - #define TIMEOUT_MSEC ((int) (DEFAULT_EXIT_USEC/USEC_PER_MSEC)) -@@ -141,7 +145,54 @@ static void change_runlevel(Server *s, i - } - } - -+static int send_shutdownd(unsigned delay, char mode, const char *message) { -+#ifdef HAVE_SYSV_COMPAT -+ usec_t t = now(CLOCK_REALTIME) + delay * USEC_PER_MINUTE; -+ struct sd_shutdown_command c = { -+ .usec = t, -+ .mode = mode, -+ .dry_run = false, -+ .warn_wall = true, -+ }; -+ -+ union sockaddr_union sockaddr = { -+ .un.sun_family = AF_UNIX, -+ .un.sun_path = "/run/systemd/shutdownd", -+ }; -+ -+ struct iovec iovec[2] = {{ -+ .iov_base = (char*) &c, -+ .iov_len = offsetof(struct sd_shutdown_command, wall_message), -+ }}; -+ -+ struct msghdr msghdr = { -+ .msg_name = &sockaddr, -+ .msg_namelen = offsetof(struct sockaddr_un, sun_path) -+ + sizeof("/run/systemd/shutdownd") - 1, -+ .msg_iov = iovec, -+ .msg_iovlen = 1, -+ }; -+ -+ _cleanup_close_ int fd; -+ -+ fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0); -+ if (fd < 0) -+ return -errno; -+ -+ if (!isempty(message)) { -+ iovec[1].iov_base = (char*) message; -+ iovec[1].iov_len = strlen(message); -+ msghdr.msg_iovlen++; -+ } -+ -+ if (sendmsg(fd, &msghdr, MSG_NOSIGNAL) < 0) -+ return -errno; -+#endif -+ return 0; -+} -+ - static void request_process(Server *s, const struct init_request *req) { -+ int r; - assert(s); - assert(req); - -@@ -184,9 +235,28 @@ static void request_process(Server *s, c - return; - - case INIT_CMD_POWERFAIL: -+ r = send_shutdownd(2, SD_SHUTDOWN_POWEROFF, -+ "THE POWER IS FAILED! SYSTEM GOING DOWN! PLEASE LOG OFF NOW!"); -+ if (r < 0) { -+ log_warning("Failed to talk to shutdownd, shutdown cancelled: %s", strerror(-r)); -+ } -+ return; - case INIT_CMD_POWERFAILNOW: -+ r = send_shutdownd(0, SD_SHUTDOWN_POWEROFF, -+ "THE POWER IS FAILED! LOW BATTERY - EMERGENCY SYSTEM SHUTDOWN!"); -+ if (r < 0) { -+ log_warning("Failed to talk to shutdownd, proceeding with immediate shutdown: %s", strerror(-r)); -+ reboot(RB_ENABLE_CAD); -+ reboot(RB_POWER_OFF); -+ } -+ return; -+ - case INIT_CMD_POWEROK: -- log_warning("Received UPS/power initctl request. This is not implemented in systemd. Upgrade your UPS daemon!"); -+ r = send_shutdownd(0, SD_SHUTDOWN_NONE, -+ "THE POWER IS BACK"); -+ if (r < 0) { -+ log_warning("Failed to talk to shutdownd, proceeding with shutdown: %s", strerror(-r)); -+ } - return; - - case INIT_CMD_CHANGECONS: diff --git a/systemd-tmp-safe-defaults.patch b/systemd-tmp-safe-defaults.patch index dd7c0d80..e114231e 100644 --- a/systemd-tmp-safe-defaults.patch +++ b/systemd-tmp-safe-defaults.patch @@ -8,10 +8,10 @@ SUSE policy is to not clean /tmp by default. tmpfiles.d/tmp.conf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -Index: systemd/tmpfiles.d/tmp.conf +Index: systemd-221/tmpfiles.d/tmp.conf =================================================================== ---- systemd.orig/tmpfiles.d/tmp.conf -+++ systemd/tmpfiles.d/tmp.conf +--- systemd-221.orig/tmpfiles.d/tmp.conf ++++ systemd-221/tmpfiles.d/tmp.conf @@ -8,8 +8,9 @@ # See tmpfiles.d(5) for details diff --git a/systemd.changes b/systemd.changes index a469ea14..ae85a326 100644 --- a/systemd.changes +++ b/systemd.changes @@ -1,3 +1,47 @@ +------------------------------------------------------------------- +Fri Jun 19 20:51:14 UTC 2015 - jengelh@inai.de + +- Update to new upstream release 221 +* From 220: +* libgudev was moved into a package of its own +* Runlevels 2, 3 and 4 are no longer distinct, they all map to + multi-user.target. +* The EFI System Partition mounted to /boot will be unmounted + 2 minutes after boot. +* systemd does not support direct live-upgrades (via `systemctl + daemon-reexec`) from versions older than v44 anymore. +* systemd-nspawn may now be called as part of a shell pipeline. +* systemd-shutdownd has been removed. This service was + previously responsible for implementing scheduled shutdowns + as exposed in /usr/bin/shutdown's time parameter. This + functionality has now been moved into systemd-logind and is + accessible via a bus interface. +* udev will no longer call blkid and create symlinks for all + block devices, but merely those from a whitelist + (cf. 60-persistent-storage.rules). +* /usr/lib/os-release gained a new optional field VARIANT= +* Details at + http://lists.freedesktop.org/archives/systemd-devel/2015-May/032147.html +* From 221: +* New sd-bus and sd-event APIs in libsystemd +* If there is both a systemd unit and a SysV init script for the + same service name, and `systemctl enable` or other operation is + run, both will now be enabled (or execute the related operation + on both), not just the unit. +- Split libsystemd0 to support systemd-less nspawn containers +- Redo manpage file lists without %exclude, tends to hide + unpackaged files. +- hwdb belongs to udev +- Resolve memory leak and add missing _cleanup_free_ to + 0001-On_s390_con3270_disable_ANSI_colour_esc.patch +- Remove systemd-powerd-initctl-support.patch + (no longer builds because shutdownd is gone) +- Remove quilt-patches/0001-core-rework-device-state-logic.patch, + 0001-Let-some-boolean-survive-a-daemon-reload.patch + (merged upstream), + 0001-Let-some-boolean-survive-a-daemon-reload.patch + (obsolete) + ------------------------------------------------------------------- Thu Jun 11 14:48:03 UTC 2015 - werner@suse.de diff --git a/systemd.spec b/systemd.spec index 8fbaa905..a2b4e4a1 100644 --- a/systemd.spec +++ b/systemd.spec @@ -1,7 +1,7 @@ # # spec file for package systemd # -# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -44,7 +44,7 @@ Name: systemd Url: http://www.freedesktop.org/wiki/Software/systemd -Version: 219 +Version: 221 Release: 0 Summary: A System and Session Manager License: LGPL-2.1+ @@ -56,7 +56,6 @@ BuildRequires: autoconf BuildRequires: automake BuildRequires: fdupes BuildRequires: gperf -BuildRequires: gtk-doc BuildRequires: intltool BuildRequires: libacl-devel BuildRequires: libcap-devel @@ -85,8 +84,6 @@ Conflicts: systemd Conflicts: kiwi %else BuildRequires: docbook-xsl-stylesheets -BuildRequires: gobject-introspection-devel -BuildRequires: gtk-doc BuildRequires: libgcrypt-devel BuildRequires: libusb-devel BuildRequires: libxslt-tools @@ -112,7 +109,7 @@ BuildRequires: pam-config >= 0.79-5 Requires: pwdutils Requires: systemd-presets-branding Requires: sysvinit-tools -Requires: util-linux >= 2.25 +Requires: util-linux >= 2.26 Requires(post): coreutils Requires(post): findutils Requires(post): pam-config >= 0.79-5 @@ -201,8 +198,6 @@ Patch180: 0014-journald-with-journaling-FS.patch Patch182: 0019-make-completion-smart-to-be-able-to-redirect.patch # PATCH-FIX-SUSE 0001-add-network-device-after-NFS-mount-units.patch werner@suse.com Patch183: 0001-add-network-device-after-NFS-mount-units.patch -# PATCH-FIX-SUSE systemd-powerd-initctl-support.patch -Patch185: systemd-powerd-initctl-support.patch # PATCH-FIX-SUSE systemctl-set-default-target.patch Patch186: systemctl-set-default-target.patch # PATCH-FIX-SUSE boot-local-start.patch (bnc #869142) @@ -248,9 +243,6 @@ Patch490: watch_resolv.conf_for_become_changed.patch Patch520: systemd-add-user-keep.patch # PATCH-FIX-SUSE systemd-add-user-keep.patch (bnc#903009) Patch521: kbd-model-map.patch -Patch522: 0001-core-rework-device-state-logic.patch -# PATCH-FIX-SUSE/PATCH-FIX-UPSTREAM -Patch523: 0001-Let-some-boolean-survive-a-daemon-reload.patch # UDEV PATCHES # ============ @@ -325,7 +317,7 @@ Some systemd commands offer bash completion, but it's an optional dependency. Summary: Development headers for systemd License: LGPL-2.1+ Group: Development/Libraries/C and C++ -Requires: %{name} = %{version} +Requires: libsystemd0 = %version Requires: systemd-rpm-macros %if 0%{?bootstrap} Conflicts: systemd-devel @@ -346,6 +338,32 @@ Provides: sysvinit:/sbin/init %description sysvinit Drop-in replacement of System V init tools. +%package -n libsystemd0 +Summary: Component library for systemd +License: LGPL-2.1+ +Group: System/Libraries + +%description -n libsystemd0 +This library provides several of the systemd C APIs: + +* sd-bus implements an alternative D-Bus client library that is + relatively easy to use, very efficient and supports both classic + D-Bus as well as kdbus as transport backend. + +* sd-daemon(3): for system services (daemons) to report their status + to systemd and to make easy use of socket-based activation logic + +* sd-event is a generic event loop abstraction that is built around + Linux epoll, but adds features such as event prioritization or + efficient timer handling. + +* sd-id128(3): generation and processing of 128-bit IDs + +* sd-journal(3): API to submit and query journal log entries + +* sd-login(3): APIs to introspect and monitor seat, login session and + user status information on the local system. + %package -n %{udevpkgname} Summary: A rule-based device node and kernel event manager License: GPL-2.0 @@ -427,38 +445,6 @@ This package contains the development files for the library libudev, a dynamic library, which provides access to udev device information. %if ! 0%{?bootstrap} -%package -n libgudev-1_0-0 -Summary: GObject library, to access udev device information -License: LGPL-2.1+ -Group: System/Libraries -Requires: lib%{udevpkgname}%{udev_major} = %{version}-%{release} - -%description -n libgudev-1_0-0 -This package contains the GObject library libgudev, which provides -access to udev device information. - -%package -n typelib-1_0-GUdev-1_0 -Summary: GObject library, to access udev device information -- Introspection bindings -License: LGPL-2.1+ -Group: System/Libraries - -%description -n typelib-1_0-GUdev-1_0 -This package provides the GObject Introspection bindings for libgudev, which -provides access to udev device information. - -%package -n libgudev-1_0-devel -Summary: Devel package for libgudev -License: LGPL-2.1+ -Group: Development/Libraries/Other -Requires: glib2-devel -Requires: libgudev-1_0-0 = %{version}-%{release} -Requires: libudev-devel = %{version}-%{release} -Requires: typelib-1_0-GUdev-1_0 = %{version}-%{release} - -%description -n libgudev-1_0-devel -This is the devel package for the GObject library libgudev, which -provides GObject access to udev device information. - %package logger Summary: Journal only logging License: LGPL-2.1+ @@ -575,7 +561,6 @@ cp %{SOURCE7} m4/ %patch180 -p1 %patch182 -p1 %patch183 -p1 -%patch185 -p1 %patch186 -p1 %patch188 -p1 %patch189 -p1 @@ -602,8 +587,6 @@ cp %{SOURCE7} m4/ %patch490 -p1 %patch520 -p1 %patch521 -p1 -%patch522 -p1 -%patch523 -p1 # udev patches %patch1001 -p1 @@ -708,7 +691,6 @@ cflags -Wl,--hash-size=8599 LDFLAGS --with-dbussystemservicedir=%{_datadir}/dbus-1/system-services \ --with-dbusinterfacedir=%{_datadir}/dbus-1/interfaces \ %if 0%{?bootstrap} - --disable-gudev \ --disable-myhostname \ --disable-manpages \ --disable-machined \ @@ -717,7 +699,6 @@ cflags -Wl,--hash-size=8599 LDFLAGS %if %{with python} --with-python \ %endif - --enable-gtk-doc \ --with-nss-my-hostname-warning \ %endif --enable-selinux \ @@ -1074,16 +1055,13 @@ fi %regenerate_initrd_posttrans %endif -%post -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig - +%post -n libsystemd0 -p /sbin/ldconfig +%postun -n libsystemd0 -p /sbin/ldconfig +%post -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig %postun -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig %if ! 0%{?bootstrap} -%post -n libgudev-1_0-0 -p /sbin/ldconfig - -%postun -n libgudev-1_0-0 -p /sbin/ldconfig - %if %{with permission} %verifyscript logger %verify_permissions -e %{_localstatedir}/log/journal/ @@ -1159,7 +1137,6 @@ exit 0 %{_bindir}/systemd-path %{_bindir}/systemd-sysusers %{_bindir}/systemd-notify -%{_bindir}/systemd-hwdb %{_bindir}/systemd-run %{_bindir}/systemd-journalctl %{_bindir}/journalctl @@ -1175,13 +1152,6 @@ exit 0 %{_bindir}/systemd-detect-virt %{_bindir}/timedatectl %{_sbindir}/systemd-sysv-convert -%{_libdir}/libsystemd.so.* -%if %{with compat_libs} -%{_libdir}/libsystemd-daemon.so.* -%{_libdir}/libsystemd-login.so.* -%{_libdir}/libsystemd-id128.so.* -%{_libdir}/libsystemd-journal.so.* -%endif %{_bindir}/systemd-cgls %{_bindir}/systemd-cgtop %{_bindir}/systemd-cat @@ -1212,6 +1182,7 @@ exit 0 %{_prefix}/lib/systemd/system/*.path %{_prefix}/lib/systemd/user/*.target %{_prefix}/lib/systemd/user/*.service +%{_prefix}/lib/systemd/user/*.socket %exclude %{_prefix}/lib/systemd/systemd-udevd %if ! 0%{?bootstrap} %exclude %{_prefix}/lib/systemd/systemd-journal-gatewayd @@ -1226,6 +1197,7 @@ exit 0 %dir %{_prefix}/lib/systemd/user-preset %dir %{_prefix}/lib/systemd/system-generators %dir %{_prefix}/lib/systemd/user-generators +%{_prefix}/lib/systemd/user-generators/systemd-dbus1-generator %dir %{_prefix}/lib/systemd/ntp-units.d/ %dir %{_prefix}/lib/systemd/system-shutdown/ %dir %{_prefix}/lib/systemd/system-sleep/ @@ -1236,6 +1208,7 @@ exit 0 %if ! 0%{?bootstrap} %{_prefix}/lib/systemd/system-generators/systemd-cryptsetup-generator %endif +%{_prefix}/lib/systemd/system-generators/systemd-dbus1-generator %if 0%{has_efi} %{_bindir}/bootctl %{_prefix}/lib/systemd/system-generators/systemd-efi-boot-generator @@ -1302,6 +1275,7 @@ exit 0 %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf +%{_sysconfdir}/X11/xinit/ # Some files which may created by us %dir %{_sysconfdir}/X11/xorg.conf.d %ghost %config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/00-keyboard.conf @@ -1317,15 +1291,23 @@ exit 0 %{_datadir}/factory/ %{_datadir}/dbus-1/services/org.freedesktop.systemd1.service %if %{with networkd} +%{_prefix}/lib/systemd/system/org.freedesktop.network1.busname %{_datadir}/dbus-1/system-services/org.freedesktop.network1.service %endif +%{_prefix}/lib/systemd/system/org.freedesktop.systemd1.busname %{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service +%{_prefix}/lib/systemd/system/org.freedesktop.locale1.busname %{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service +%{_prefix}/lib/systemd/system/org.freedesktop.login1.busname %{_datadir}/dbus-1/system-services/org.freedesktop.login1.service +%{_prefix}/lib/systemd/system/org.freedesktop.hostname1.busname %{_datadir}/dbus-1/system-services/org.freedesktop.hostname1.service %if !0%{?bootstrap} +%{_prefix}/lib/systemd/system/org.freedesktop.machine1.busname %{_datadir}/dbus-1/system-services/org.freedesktop.machine1.service %endif +%{_prefix}/lib/systemd/system/org.freedesktop.timedate1.busname + %{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service %dir %{_datadir}/polkit-1 %dir %{_datadir}/polkit-1/actions @@ -1343,20 +1325,20 @@ exit 0 %{_datadir}/systemd %if ! 0%{?bootstrap} -# Packaged in sysvinit subpackage -%exclude %{_mandir}/man1/init.1* -%exclude %{_mandir}/man8/halt.8* -%exclude %{_mandir}/man8/reboot.8* -%exclude %{_mandir}/man8/shutdown.8* -%exclude %{_mandir}/man8/poweroff.8* -%exclude %{_mandir}/man8/telinit.8* -%exclude %{_mandir}/man8/runlevel.8* -%exclude %{_mandir}/man*/*udev*.[0-9]* -%exclude %{_mandir}/man8/systemd-journal-gatewayd.* -%{_mandir}/man1/*.1* -%{_mandir}/man5/*.5* -%{_mandir}/man7/*.7* -%{_mandir}/man8/*.8* +%_mandir/man1/[a-rt-z]*ctl.1* +%_mandir/man1/systemc*.1* +%_mandir/man1/systemd*.1* +%_mandir/man5/[a-tv-z]* +%_mandir/man5/user* +%_mandir/man7/[bdfks]* +%_mandir/man8/kern* +%_mandir/man8/pam_* +%_mandir/man8/systemd-[a-gik-tv]* +%_mandir/man8/systemd-h[aioy]* +%_mandir/man8/systemd-journal-remote.* +%_mandir/man8/systemd-journal-upload.* +%_mandir/man8/systemd-journald* +%_mandir/man8/systemd-u[ps]* %endif %{_docdir}/systemd %{_prefix}/lib/udev/rules.d/70-uaccess.rules @@ -1403,21 +1385,16 @@ exit 0 %{_libdir}/libsystemd-login.so %{_libdir}/libsystemd-id128.so %{_libdir}/libsystemd-journal.so -%dir %{_includedir}/systemd -%{_includedir}/systemd/sd-login.h -%{_includedir}/systemd/sd-daemon.h -%{_includedir}/systemd/sd-id128.h -%{_includedir}/systemd/sd-journal.h -%{_includedir}/systemd/sd-messages.h -%{_includedir}/systemd/_sd-common.h -%{_libdir}/pkgconfig/systemd.pc +%{_includedir}/systemd/ +%{_datadir}/pkgconfig/systemd.pc %{_libdir}/pkgconfig/libsystemd.pc %{_libdir}/pkgconfig/libsystemd-daemon.pc %{_libdir}/pkgconfig/libsystemd-login.pc %{_libdir}/pkgconfig/libsystemd-id128.pc %{_libdir}/pkgconfig/libsystemd-journal.pc %if ! 0%{?bootstrap} -%{_mandir}/man3/*.3* +%_mandir/man3/SD*.3* +%_mandir/man3/sd*.3* %endif %files sysvinit @@ -1449,6 +1426,7 @@ exit 0 %if 0%{?suse_version} <= 1310 %{_prefix}/lib/firmware %endif +%{_bindir}/systemd-hwdb %dir %{_prefix}/lib/udev/ %{_prefix}/lib/udev/accelerometer %{_prefix}/lib/udev/ata_id @@ -1467,14 +1445,18 @@ exit 0 %exclude %{_prefix}/lib/udev/rules.d/73-seat-numlock.rules %exclude %{_prefix}/lib/udev/rules.d/99-systemd.rules %{_prefix}/lib/udev/rules.d/*.rules -%dir %{_prefix}/lib/udev/hwdb.d -%{_prefix}/lib/udev/hwdb.d/* +%{_prefix}/lib/udev/hwdb.d/ %dir %{_sysconfdir}/udev/ %dir %{_sysconfdir}/udev/rules.d/ %ghost %{_sysconfdir}/udev/hwdb.bin %config(noreplace) %{_sysconfdir}/udev/udev.conf %if ! 0%{?bootstrap} -%{_mandir}/man?/*udev*.[0-9]* +%_mandir/man5/udev* +%_mandir/man7/hwdb* +%_mandir/man7/udev* +%_mandir/man8/systemd-hwdb* +%_mandir/man8/systemd-udev* +%_mandir/man8/udev* %endif %dir %{_prefix}/lib/systemd/system %{_prefix}/lib/systemd/systemd-udevd @@ -1491,6 +1473,16 @@ exit 0 %{_datadir}/pkgconfig/udev.pc %endif +%files -n libsystemd0 +%defattr(-,root,root) +%_libdir/libsystemd.so.* +%if %{with compat_libs} +%_libdir/libsystemd-daemon.so.* +%_libdir/libsystemd-login.so.* +%_libdir/libsystemd-id128.so.* +%_libdir/libsystemd-journal.so.* +%endif + %files -n lib%{udevpkgname}%{udev_major} %defattr(-,root,root) %{_libdir}/libudev.so.* @@ -1500,35 +1492,9 @@ exit 0 %{_includedir}/libudev.h %{_libdir}/libudev.so %{_libdir}/pkgconfig/libudev.pc -%if ! 0%{?bootstrap} -%dir %{_datadir}/gtk-doc -%dir %{_datadir}/gtk-doc/html -%dir %{_datadir}/gtk-doc/html/libudev -%{_datadir}/gtk-doc/html/libudev/* -%endif +%{_mandir}/man3/*udev*.3* %if ! 0%{?bootstrap} -%files -n libgudev-1_0-0 -%defattr(-,root,root) -%{_libdir}/libgudev-1.0.so.* - -%files -n typelib-1_0-GUdev-1_0 -%defattr(-,root,root) -%{_libdir}/girepository-1.0/GUdev-1.0.typelib - -%files -n libgudev-1_0-devel -%defattr(-,root,root) -%dir %{_includedir}/gudev-1.0 -%dir %{_includedir}/gudev-1.0/gudev -%{_includedir}/gudev-1.0/gudev/*.h -%{_libdir}/libgudev-1.0.so -%{_libdir}/pkgconfig/gudev-1.0.pc -%dir %{_datadir}/gtk-doc -%dir %{_datadir}/gtk-doc/html -%dir %{_datadir}/gtk-doc/html/gudev -%{_datadir}/gtk-doc/html/gudev/* -%{_datadir}/gir-1.0/GUdev-1.0.gir - %files logger %defattr(-,root,root) %dir %attr(2755,root,systemd-journal) %{_localstatedir}/log/journal/ @@ -1539,6 +1505,8 @@ exit 0 %files -n nss-myhostname %defattr(-, root, root) %{_sbindir}/nss-myhostname-config +%{_mandir}/man8/libnss_myhostname.* +%{_mandir}/man8/nss-myhostname.* /%{_lib}/*nss_myhostname* %files journal-gateway @@ -1551,6 +1519,8 @@ exit 0 %files -n nss-mymachines %defattr(-,root,root) %_libdir/libnss_mymachines.so* +%_mandir/man8/libnss_mymachines.* +%_mandir/man8/nss-mymachines.* %endif %changelog diff --git a/tomcat6-var-lock-subsys-legacy.patch b/tomcat6-var-lock-subsys-legacy.patch index 71452e81..cf9207ba 100644 --- a/tomcat6-var-lock-subsys-legacy.patch +++ b/tomcat6-var-lock-subsys-legacy.patch @@ -5,9 +5,11 @@ Provide /run/lock/subsys directory to be able to provide the tmpfiles.d/legacy.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ---- systemd-210/tmpfiles.d/legacy.conf -+++ systemd-210/tmpfiles.d/legacy.conf 2014-07-30 12:36:36.862735670 +0000 -@@ -16,7 +16,7 @@ d /run/lock 0775 root lock - +Index: systemd-221/tmpfiles.d/legacy.conf +=================================================================== +--- systemd-221.orig/tmpfiles.d/legacy.conf ++++ systemd-221/tmpfiles.d/legacy.conf +@@ -17,7 +17,7 @@ L /var/lock - - - - ../run/lock # /run/lock/subsys is used for serializing SysV service execution, and # hence without use on SysV-less systems. diff --git a/tty-ask-password-agent-on-console.patch b/tty-ask-password-agent-on-console.patch index ee7e73d8..6c48feb3 100644 --- a/tty-ask-password-agent-on-console.patch +++ b/tty-ask-password-agent-on-console.patch @@ -2,10 +2,10 @@ src/tty-ask-password-agent/tty-ask-password-agent.c | 171 +++++++++++++++++++- 1 file changed, 166 insertions(+), 5 deletions(-) -Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c +Index: systemd-221/src/tty-ask-password-agent/tty-ask-password-agent.c =================================================================== ---- systemd.orig/src/tty-ask-password-agent/tty-ask-password-agent.c -+++ systemd/src/tty-ask-password-agent/tty-ask-password-agent.c +--- systemd-221.orig/src/tty-ask-password-agent/tty-ask-password-agent.c ++++ systemd-221/src/tty-ask-password-agent/tty-ask-password-agent.c @@ -31,6 +31,10 @@ #include #include @@ -24,10 +24,10 @@ Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c +#include "fileio.h" +#include "macro.h" +#include "list.h" - - static enum { - ACTION_LIST, -@@ -50,6 +57,22 @@ static enum { + #include "process-util.h" + #include "terminal-util.h" + #include "signal-util.h" +@@ -53,6 +60,22 @@ static enum { ACTION_WALL } arg_action = ACTION_QUERY; @@ -50,7 +50,7 @@ Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c static bool arg_plymouth = false; static bool arg_console = false; -@@ -208,6 +231,58 @@ static int ask_password_plymouth( +@@ -211,6 +234,58 @@ static int ask_password_plymouth( return 0; } @@ -109,7 +109,7 @@ Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c static int parse_password(const char *filename, char **wall) { _cleanup_free_ char *socket_name = NULL, *message = NULL, *packet = NULL; uint64_t not_after = 0; -@@ -308,7 +383,7 @@ static int parse_password(const char *fi +@@ -311,7 +386,7 @@ static int parse_password(const char *fi _cleanup_free_ char *password = NULL; if (arg_console) { @@ -118,7 +118,7 @@ Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c if (tty_fd < 0) return tty_fd; } -@@ -612,9 +687,85 @@ static int parse_argv(int argc, char *ar +@@ -615,9 +690,85 @@ static int parse_argv(int argc, char *ar return 1; } @@ -205,7 +205,7 @@ Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c log_set_target(LOG_TARGET_AUTO); log_parse_environment(); log_open(); -@@ -625,11 +776,19 @@ int main(int argc, char *argv[]) { +@@ -628,11 +779,19 @@ int main(int argc, char *argv[]) { if (r <= 0) goto finish; @@ -228,7 +228,7 @@ Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c if (IN_SET(arg_action, ACTION_WATCH, ACTION_WALL)) r = watch_passwords(); else -@@ -638,6 +797,8 @@ int main(int argc, char *argv[]) { +@@ -641,6 +800,8 @@ int main(int argc, char *argv[]) { if (r < 0) log_error_errno(r, "Error: %m"); diff --git a/use-rndaddentropy-ioctl-to-load-random-seed.patch b/use-rndaddentropy-ioctl-to-load-random-seed.patch index a91b3701..8561a1e0 100644 --- a/use-rndaddentropy-ioctl-to-load-random-seed.patch +++ b/use-rndaddentropy-ioctl-to-load-random-seed.patch @@ -5,11 +5,13 @@ write back the bytes and increase the entropy bit counter. Related to bnc#892096 --- - systemd-219/src/random-seed/random-seed.c | 71 +++++++++++++++++++++++++----- + src/random-seed/random-seed.c | 71 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 61 insertions(+), 10 deletions(-) ---- systemd-219/src/random-seed/random-seed.c -+++ systemd-219/src/random-seed/random-seed.c 2015-04-21 09:39:03.057518051 +0000 +Index: systemd-221/src/random-seed/random-seed.c +=================================================================== +--- systemd-221.orig/src/random-seed/random-seed.c ++++ systemd-221/src/random-seed/random-seed.c @@ -22,7 +22,9 @@ #include #include @@ -37,7 +39,7 @@ Related to bnc#892096 - buf = malloc(buf_size); - if (!buf) { -+ entropy = (struct rand_pool_info*) malloc(sizeof(struct rand_pool_info) + buf_size); ++ entropy = malloc(sizeof(struct rand_pool_info) + buf_size); + if (!entropy) { r = log_oom(); goto finish; @@ -52,7 +54,7 @@ Related to bnc#892096 + entropy_fd = open(RANDOM_SEED_DIR "entropy_count", O_RDONLY|O_CLOEXEC|O_NOCTTY, 0600); + if (entropy_fd < 0) { -+ entropy->entropy_count = 0; ++ entropy->entropy_count = 0; + if (errno != ENOENT) { + log_error("Failed to open " RANDOM_SEED "/entropy_count: %m"); + r = -errno; @@ -70,18 +72,18 @@ Related to bnc#892096 seed_fd = open(RANDOM_SEED, O_RDWR|O_CLOEXEC|O_NOCTTY|O_CREAT, 0600); if (seed_fd < 0) { seed_fd = open(RANDOM_SEED, O_RDONLY|O_CLOEXEC|O_NOCTTY); -@@ -104,7 +124,7 @@ int main(int argc, char *argv[]) { +@@ -103,7 +123,7 @@ int main(int argc, char *argv[]) { } } - k = loop_read(seed_fd, buf, buf_size, false); + k = loop_read(seed_fd, entropy->buf, entropy->buf_size, false); - if (k <= 0) { - - if (r != 0) -@@ -115,13 +135,29 @@ int main(int argc, char *argv[]) { - } else { - lseek(seed_fd, 0, SEEK_SET); + if (k < 0) + r = log_error_errno(k, "Failed to read seed from " RANDOM_SEED ": %m"); + else if (k == 0) +@@ -111,13 +131,29 @@ int main(int argc, char *argv[]) { + else { + (void) lseek(seed_fd, 0, SEEK_SET); - r = loop_write(random_fd, buf, (size_t) k, false); - if (r < 0) @@ -111,8 +113,8 @@ Related to bnc#892096 + seed_fd = open(RANDOM_SEED, O_WRONLY|O_CLOEXEC|O_NOCTTY|O_CREAT, 0600); if (seed_fd < 0) { - log_error_errno(errno, "Failed to open " RANDOM_SEED ": %m"); -@@ -136,6 +172,21 @@ int main(int argc, char *argv[]) { + r = log_error_errno(errno, "Failed to open " RANDOM_SEED ": %m"); +@@ -130,6 +166,21 @@ int main(int argc, char *argv[]) { goto finish; } @@ -132,20 +134,23 @@ Related to bnc#892096 + } + } else { - log_error("Unknown verb %s.", argv[1]); + log_error("Unknown verb '%s'.", argv[1]); r = -EINVAL; -@@ -149,12 +200,12 @@ int main(int argc, char *argv[]) { - fchmod(seed_fd, 0600); - fchown(seed_fd, 0, 0); +@@ -144,7 +195,7 @@ int main(int argc, char *argv[]) { + (void) fchmod(seed_fd, 0600); + (void) fchown(seed_fd, 0, 0); - k = loop_read(random_fd, buf, buf_size, false); + k = loop_read(random_fd, entropy->buf, entropy->buf_size, false); - if (k <= 0) { - log_error("Failed to read new seed from /dev/urandom: %s", r < 0 ? strerror(-r) : "EOF"); - r = k == 0 ? -EIO : (int) k; - } else { -- r = loop_write(seed_fd, buf, (size_t) k, false); -+ r = loop_write(seed_fd, entropy->buf, (size_t) k, false); - if (r < 0) - log_error_errno(r, "Failed to write new random seed file: %m"); + if (k < 0) { + r = log_error_errno(k, "Failed to read new seed from /dev/urandom: %m"); + goto finish; +@@ -155,7 +206,7 @@ int main(int argc, char *argv[]) { + goto finish; } + +- r = loop_write(seed_fd, buf, (size_t) k, false); ++ r = loop_write(seed_fd, entropy->buf, (size_t) k, false); + if (r < 0) + log_error_errno(r, "Failed to write new random seed file: %m"); + } diff --git a/vhangup-on-all-consoles.patch b/vhangup-on-all-consoles.patch index 3273aba6..c0f4d74f 100644 --- a/vhangup-on-all-consoles.patch +++ b/vhangup-on-all-consoles.patch @@ -14,10 +14,10 @@ track progress: https://bugzilla.redhat.com/show_bug.cgi?id=1141137 units/getty@.service.m4 | 1 + units/serial-getty@.service.m4 | 1 + 2 files changed, 2 insertions(+) -Index: systemd-218/units/getty@.service.m4 +Index: systemd-221/units/getty@.service.m4 =================================================================== ---- systemd-218.orig/units/getty@.service.m4 -+++ systemd-218/units/getty@.service.m4 +--- systemd-221.orig/units/getty@.service.m4 ++++ systemd-221/units/getty@.service.m4 @@ -29,6 +29,7 @@ ConditionPathExists=/dev/tty0 [Service] # the VT is cleared by TTYVTDisallocate @@ -26,10 +26,10 @@ Index: systemd-218/units/getty@.service.m4 Type=idle Restart=always RestartSec=0 -Index: systemd-218/units/serial-getty@.service.m4 +Index: systemd-221/units/serial-getty@.service.m4 =================================================================== ---- systemd-218.orig/units/serial-getty@.service.m4 -+++ systemd-218/units/serial-getty@.service.m4 +--- systemd-221.orig/units/serial-getty@.service.m4 ++++ systemd-221/units/serial-getty@.service.m4 @@ -24,6 +24,7 @@ IgnoreOnIsolate=yes [Service] diff --git a/watch_resolv.conf_for_become_changed.patch b/watch_resolv.conf_for_become_changed.patch index 8aec94ac..fcc01432 100644 --- a/watch_resolv.conf_for_become_changed.patch +++ b/watch_resolv.conf_for_become_changed.patch @@ -3,19 +3,19 @@ src/core/manager.h | 5 ++ 2 files changed, 98 insertions(+) -Index: systemd-218/src/core/manager.c +Index: systemd-221/src/core/manager.c =================================================================== ---- systemd-218.orig/src/core/manager.c -+++ systemd-218/src/core/manager.c -@@ -37,6 +37,7 @@ - #include +--- systemd-221.orig/src/core/manager.c ++++ systemd-221/src/core/manager.c +@@ -32,6 +32,7 @@ + #include #include #include +#include #ifdef HAVE_AUDIT #include -@@ -302,6 +303,91 @@ static int manager_check_ask_password(Ma +@@ -308,6 +309,91 @@ static int manager_check_ask_password(Ma return m->have_ask_password; } @@ -107,7 +107,7 @@ Index: systemd-218/src/core/manager.c static int manager_watch_idle_pipe(Manager *m) { int r; -@@ -557,6 +643,7 @@ int manager_new(SystemdRunningAs running +@@ -585,6 +671,7 @@ int manager_new(ManagerRunningAs running m->pin_cgroupfs_fd = m->notify_fd = m->signal_fd = m->time_change_fd = m->dev_autofs_fd = m->private_listen_fd = m->kdbus_fd = m->utab_inotify_fd = -1; m->current_job_id = 1; /* start as id #1, so that we can leave #0 around as "null-like" value */ @@ -115,7 +115,7 @@ Index: systemd-218/src/core/manager.c m->ask_password_inotify_fd = -1; m->have_ask_password = -EINVAL; /* we don't know */ -@@ -618,6 +705,10 @@ int manager_new(SystemdRunningAs running +@@ -651,6 +738,10 @@ int manager_new(ManagerRunningAs running if (r < 0) goto fail; @@ -126,7 +126,7 @@ Index: systemd-218/src/core/manager.c m->udev = udev_new(); if (!m->udev) { r = -ENOMEM; -@@ -896,6 +987,8 @@ Manager* manager_free(Manager *m) { +@@ -929,6 +1020,8 @@ Manager* manager_free(Manager *m) { if (!m) return NULL; @@ -135,11 +135,11 @@ Index: systemd-218/src/core/manager.c manager_clear_jobs_and_units(m); for (c = 0; c < _UNIT_TYPE_MAX; c++) -Index: systemd-218/src/core/manager.h +Index: systemd-221/src/core/manager.h =================================================================== ---- systemd-218.orig/src/core/manager.h -+++ systemd-218/src/core/manager.h -@@ -185,6 +185,11 @@ struct Manager { +--- systemd-221.orig/src/core/manager.h ++++ systemd-221/src/core/manager.h +@@ -181,6 +181,11 @@ struct Manager { int utab_inotify_fd; sd_event_source *mount_utab_event_source;