diff --git a/0001-bash-completion-p-option-for-journalctl.patch b/0001-bash-completion-p-option-for-journalctl.patch new file mode 100644 index 00000000..f41318f5 --- /dev/null +++ b/0001-bash-completion-p-option-for-journalctl.patch @@ -0,0 +1,46 @@ +From be8f4a9fa732d61e845e1ab1a62ac3a6b368d3a7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sat, 19 Jul 2014 19:46:04 -0400 +Subject: [PATCH] bash-completion: -p option for journalctl + +--- + shell-completion/bash/journalctl | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git shell-completion/bash/journalctl shell-completion/bash/journalctl +index e4b2f4a..14dcd22 100644 +--- shell-completion/bash/journalctl ++++ shell-completion/bash/journalctl +@@ -35,6 +35,8 @@ __journal_fields=(MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC} + _UDEV_{SYSNAME,DEVNODE,DEVLINK} + __CURSOR __{REALTIME,MONOTONIC}_TIMESTAMP) + ++__syslog_priorities=(emerg alert crit err warning notice info debug) ++ + _journalctl() { + local field_vals= cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( +@@ -44,8 +46,8 @@ _journalctl() { + --no-tail -q --quiet --setup-keys --this-boot --verify + --version --list-catalog --update-catalog --list-boots' + [ARG]='-b --boot --this-boot -D --directory --file -F --field +- -o --output -u --unit --user-unit' +- [ARGUNKNOWN]='-c --cursor --interval -n --lines -p --priority --since --until ++ -o --output -u --unit --user-unit -p --priority' ++ [ARGUNKNOWN]='-c --cursor --interval -n --lines --since --until + --verify-key' + ) + +@@ -68,6 +70,9 @@ _journalctl() { + --field|-F) + comps=${__journal_fields[*]} + ;; ++ --priority|-p) ++ comps=${__syslog_priorities[*]} ++ ;; + --unit|-u) + comps=$(journalctl -F '_SYSTEMD_UNIT' 2>/dev/null) + ;; +-- +1.7.9.2 + diff --git a/0001-compress-fix-return-value.patch b/0001-compress-fix-return-value.patch new file mode 100644 index 00000000..b2e03c27 --- /dev/null +++ b/0001-compress-fix-return-value.patch @@ -0,0 +1,34 @@ +From 01c3322e017989d25f7b4b51268245d5315ae678 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 18 Jul 2014 21:44:36 -0400 +Subject: [PATCH] compress: fix return value + +--- + src/journal/compress.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git src/journal/compress.c src/journal/compress.c +index 316c1a6..ee18bc8 100644 +--- src/journal/compress.c ++++ src/journal/compress.c +@@ -132,7 +132,7 @@ int decompress_blob_xz(const void *src, uint64_t src_size, + + space = MIN(src_size * 2, dst_max ?: (uint64_t) -1); + if (!greedy_realloc(dst, dst_alloc_size, space, 1)) +- return false; ++ return -ENOMEM; + + s.next_in = src; + s.avail_in = src_size; +@@ -158,7 +158,7 @@ int decompress_blob_xz(const void *src, uint64_t src_size, + used = space - s.avail_out; + space = MIN(2 * space, dst_max ?: (uint64_t) -1); + if (!greedy_realloc(dst, dst_alloc_size, space, 1)) +- return false; ++ return -ENOMEM; + + s.avail_out = space - used; + s.next_out = *dst + used; +-- +1.7.9.2 + diff --git a/0001-detect-s390-virt.patch b/0001-detect-s390-virt.patch deleted file mode 100644 index 3a437118..00000000 --- a/0001-detect-s390-virt.patch +++ /dev/null @@ -1,35 +0,0 @@ -bnc#880438 - systemd-detect-virt doesn't work on System z - ---- systemd-210/src/shared/virt.c -+++ systemd-210/src/shared/virt.c 2014-06-26 07:55:30.081608729 +0000 -@@ -196,6 +196,30 @@ - } else - return r; - -+#if defined(__s390x__) -+ /* First layer virtualization (PR/SM) is always present on s390x */ -+ _id = "PR/SM"; -+ r = 1; -+ -+ /* Check for second layer virtualization */ -+ _cleanup_fclose_ FILE *f = NULL; -+ char line[LINE_MAX]; -+ f = fopen("/proc/sysinfo", "re"); -+ if (f) { -+ FOREACH_LINE(line, f, return -errno) { -+ if (startswith(line, "VM00 Control Program:")) { -+ if (strstr(line,"z/VM")) -+ _id = "z/VM"; -+ else if (strstr(line,"KVM/Linux")) -+ _id = "KVM"; -+ break; -+ } -+ } -+ } -+ -+ goto finish; -+#endif -+ - /* this will set _id to "other" and return 0 for unknown hypervisors */ - r = detect_vm_cpuid(&_id); - if (r != 0) diff --git a/0001-detect-virt-Fix-Xen-domU-discovery.patch b/0001-detect-virt-Fix-Xen-domU-discovery.patch new file mode 100644 index 00000000..8582f560 --- /dev/null +++ b/0001-detect-virt-Fix-Xen-domU-discovery.patch @@ -0,0 +1,33 @@ +From a71516dfd1858f37712ef52a288bf5fb274383e0 Mon Sep 17 00:00:00 2001 +From: Thomas Blume +Date: Thu, 17 Jul 2014 11:25:37 +0200 +Subject: [PATCH] detect-virt: Fix Xen domU discovery + +The conditional for detection xen virtualization contained a little mistake. +It is checking for i to be empty: 'if (!i) {', but it must check for cap instead, +because: 'cap = strsep(&i, ",")' will set cap to the discovered value and i to +the next value after the separator. +Hence, i would be empty, if there is only control_d in domcap, leading to a wrong +domU detection. + +https://bugs.freedesktop.org/show_bug.cgi?id=77271 +--- + src/shared/virt.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git src/shared/virt.c src/shared/virt.c +index 774915f..20a8d7c 100644 +--- src/shared/virt.c ++++ src/shared/virt.c +@@ -173,7 +173,7 @@ int detect_vm(const char **id) { + if (streq(cap, "control_d")) + break; + +- if (!i) { ++ if (!cap) { + _id = "xen"; + r = 1; + } +-- +1.7.9.2 + diff --git a/0001-fix-only-discover-Xen-domU.patch b/0001-fix-only-discover-Xen-domU.patch deleted file mode 100644 index c832f0a9..00000000 --- a/0001-fix-only-discover-Xen-domU.patch +++ /dev/null @@ -1,17 +0,0 @@ -Fix upstream patch patch 0004-systemd-detect-virt-only-discover-Xen-domU.patch -of the commit 37287585b6ba9a55065c8f94458f6db3c0abe0af ---- - systemd-210/src/shared/virt.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- systemd-210/src/shared/virt.c -+++ systemd-210/src/shared/virt.c 2014-07-17 07:25:12.169628255 +0000 -@@ -174,7 +174,7 @@ - if (streq(cap, "control_d")) - break; - -- if (!i) { -+ if (!cap) { - _id = "xen"; - r = 1; - } diff --git a/0001-systemd-detect-virt-detect-s390-virtualization.patch b/0001-systemd-detect-virt-detect-s390-virtualization.patch new file mode 100644 index 00000000..300258fb --- /dev/null +++ b/0001-systemd-detect-virt-detect-s390-virtualization.patch @@ -0,0 +1,72 @@ +From f41925b4e442a34c93ad120ef1426c974a047ed1 Mon Sep 17 00:00:00 2001 +From: Thomas Blume +Date: Fri, 18 Jul 2014 09:13:36 -0400 +Subject: [PATCH] systemd-detect-virt: detect s390 virtualization + +A system that is running on a logical partition (LPAR) provided by +PR/SM has access to physical hardware (except CPU). It is true that +PR/SM abstracts the hardware, but only for sharing purposes. + +Details are statet at: + +http://publib.boulder.ibm.com/infocenter/eserver/v1r2/topic/eicaz/eicazzlpar.htm + +-->-- +In other words, PR/SM transforms physical resources into virtual resources so +that many logical partitions can share the same physical resources. +--<-- + +Still, from the OS point of view, the shared virtual resource is real +hardware. ConditionVirtualization must be set to false if the OS runs +directly on PR/SM (e.g. in an LPAR). + +[zj: reorder code so that variables are not allocated when #if-def is +false. Add commit message.] +--- + man/systemd.unit.xml | 1 + + src/shared/virt.c | 17 +++++++++++++++++ + 2 files changed, 18 insertions(+) + +diff --git man/systemd.unit.xml man/systemd.unit.xml +index 6447584..86a8cbb 100644 +--- man/systemd.unit.xml ++++ man/systemd.unit.xml +@@ -996,6 +996,7 @@ + virtualization solution, or one of + qemu, + kvm, ++ zvm, + vmware, + microsoft, + oracle, +diff --git src/shared/virt.c src/shared/virt.c +index 20a8d7c..b436895 100644 +--- src/shared/virt.c ++++ src/shared/virt.c +@@ -220,6 +220,23 @@ int detect_vm(const char **id) { + goto finish; + } + ++#if defined(__s390__) ++ { ++ _cleanup_free_ char *t = NULL; ++ ++ r = get_status_field("/proc/sysinfo", "VM00 Control Program:", &t); ++ if (r >= 0) { ++ if (streq(t, "z/VM")) ++ _id = "zvm"; ++ else ++ _id = "kvm"; ++ r = 1; ++ ++ goto finish; ++ } ++ } ++#endif ++ + r = 0; + + finish: +-- +1.7.9.2 + diff --git a/0002-Be-more-verbose-when-bind-or-listen-fails.patch b/0002-Be-more-verbose-when-bind-or-listen-fails.patch new file mode 100644 index 00000000..0a8e80e6 --- /dev/null +++ b/0002-Be-more-verbose-when-bind-or-listen-fails.patch @@ -0,0 +1,92 @@ +Based on 6b9732b2bf0499c5e4ea8a9d4f6051d98033f680 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 3 Mar 2014 19:49:40 -0500 +Subject: [PATCH] Be more verbose when bind or listen fails + +Also be more verbose in devnode_acl_all(). +--- + src/core/manager.c | 2 +- + src/journal/journald-native.c | 2 +- + src/journal/journald-stream.c | 4 ++-- + src/journal/journald-syslog.c | 2 +- + src/login/logind-acl.c | 5 ++++- + src/shared/ask-password-api.c | 2 +- + 6 files changed, 10 insertions(+), 7 deletions(-) + +--- src/core/manager.c ++++ src/core/manager.c 2014-07-21 10:57:20.286367050 +0000 +@@ -571,7 +571,7 @@ static int manager_setup_notify(Manager + + r = bind(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + strlen(sa.un.sun_path+1)); + if (r < 0) { +- log_error("bind() failed: %m"); ++ log_error("bind(@%s) failed: %m", sa.un.sun_path+1); + return -errno; + } + +--- src/journal/journald-native.c ++++ src/journal/journald-native.c 2014-07-21 00:00:00.000000000 +0000 +@@ -405,7 +405,7 @@ int server_open_native_socket(Server*s) + + r = bind(s->native_fd, &sa.sa, offsetof(union sockaddr_union, un.sun_path) + strlen(sa.un.sun_path)); + if (r < 0) { +- log_error("bind() failed: %m"); ++ log_error("bind(%s) failed: %m", sa.un.sun_path); + return -errno; + } + +--- src/journal/journald-stream.c ++++ src/journal/journald-stream.c 2014-07-21 00:00:00.000000000 +0000 +@@ -447,14 +447,14 @@ int server_open_stdout_socket(Server *s) + + r = bind(s->stdout_fd, &sa.sa, offsetof(union sockaddr_union, un.sun_path) + strlen(sa.un.sun_path)); + if (r < 0) { +- log_error("bind() failed: %m"); ++ log_error("bind(%s) failed: %m", sa.un.sun_path); + return -errno; + } + + chmod(sa.un.sun_path, 0666); + + if (listen(s->stdout_fd, SOMAXCONN) < 0) { +- log_error("listen() failed: %m"); ++ log_error("listen(%s) failed: %m", sa.un.sun_path); + return -errno; + } + } else +--- src/journal/journald-syslog.c ++++ src/journal/journald-syslog.c 2014-07-21 00:00:00.000000000 +0000 +@@ -437,7 +437,7 @@ int server_open_syslog_socket(Server *s) + + r = bind(s->syslog_fd, &sa.sa, offsetof(union sockaddr_union, un.sun_path) + strlen(sa.un.sun_path)); + if (r < 0) { +- log_error("bind() failed: %m"); ++ log_error("bind(%s) failed: %m", sa.un.sun_path); + return -errno; + } + +--- src/login/logind-acl.c ++++ src/login/logind-acl.c 2014-07-21 10:59:04.986235573 +0000 +@@ -277,7 +277,10 @@ int devnode_acl_all(struct udev *udev, + SET_FOREACH(n, nodes, i) { + int k; + +- log_debug("Fixing up ACLs at %s for seat %s", n, seat); ++ log_debug("Changing ACLs at %s for seat %s (uid "UID_FMT"→"UID_FMT"%s%s)", ++ n, seat, old_uid, new_uid, ++ del ? " del" : "", add ? " add" : ""); ++ + k = devnode_acl(n, flush, del, old_uid, add, new_uid); + if (k < 0) + r = k; +--- src/shared/ask-password-api.c ++++ src/shared/ask-password-api.c 2014-07-21 00:00:00.000000000 +0000 +@@ -275,7 +275,7 @@ static int create_socket(char **name) { + + if (r < 0) { + r = -errno; +- log_error("bind() failed: %m"); ++ log_error("bind(%s) failed: %m", sa.un.sun_path); + goto fail; + } + diff --git a/0002-journalctl-man-allow-only-between-terms.patch b/0002-journalctl-man-allow-only-between-terms.patch new file mode 100644 index 00000000..c29bdf6f --- /dev/null +++ b/0002-journalctl-man-allow-only-between-terms.patch @@ -0,0 +1,109 @@ +From 4e6029435111adcad71489aca2dd68bc65aeffd4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sat, 19 Jul 2014 21:05:07 -0400 +Subject: [PATCH] journalctl,man: allow + only between terms + +https://bugzilla.redhat.com/show_bug.cgi?id=1110712 +--- + man/journalctl.xml | 19 +++++++++++++++---- + src/journal/journalctl.c | 20 +++++++++++++++++--- + 2 files changed, 32 insertions(+), 7 deletions(-) + +diff --git man/journalctl.xml man/journalctl.xml +index 47b5a05..df9c794 100644 +--- man/journalctl.xml ++++ man/journalctl.xml +@@ -84,10 +84,11 @@ + field, then they are automatically matched as + alternatives, i.e. the resulting output will show + entries matching any of the specified matches for the +- same field. Finally, if the character +- + appears as a separate word on the +- command line, all matches before and after are combined +- in a disjunction (i.e. logical OR). ++ same field. Finally, the character ++ + may appears as a separate word ++ between other terms on the command line. This causes ++ all matches before and after to be combined in a ++ disjunction (i.e. logical OR). + + As shortcuts for a few types of field/value + matches, file paths may be specified. If a file path +@@ -98,11 +99,21 @@ + _KERNEL_DEVICE= match for the + device. + ++ Additional contraints may be added using options ++ , , ++ etc, to futher limit what entries will be shown ++ (logical AND). ++ + Output is interleaved from all accessible + journal files, whether they are rotated or currently + being written, and regardless of whether they belong to the + system itself or are accessible user journals. + ++ The set of journal files which will be used ++ can be modified using the , ++ , , ++ and options, see below. ++ + All users are granted access to their private + per-user journals. However, by default, only root and + users who are members of the systemd-journal +diff --git src/journal/journalctl.c src/journal/journalctl.c +index 92e8286..7aedbf0 100644 +--- src/journal/journalctl.c ++++ src/journal/journalctl.c +@@ -699,15 +699,20 @@ static int generate_new_id128(void) { + + static int add_matches(sd_journal *j, char **args) { + char **i; ++ bool have_term = false; + + assert(j); + + STRV_FOREACH(i, args) { + int r; + +- if (streq(*i, "+")) ++ if (streq(*i, "+")) { ++ if (!have_term) ++ break; + r = sd_journal_add_disjunction(j); +- else if (path_is_absolute(*i)) { ++ have_term = false; ++ ++ } else if (path_is_absolute(*i)) { + _cleanup_free_ char *p, *t = NULL, *t2 = NULL; + const char *path; + _cleanup_free_ char *interpreter = NULL; +@@ -756,8 +761,12 @@ static int add_matches(sd_journal *j, char **args) { + r = sd_journal_add_match(j, t, 0); + if (t2) + r = sd_journal_add_match(j, t2, 0); +- } else ++ have_term = true; ++ ++ } else { + r = sd_journal_add_match(j, *i, 0); ++ have_term = true; ++ } + + if (r < 0) { + log_error("Failed to add match '%s': %s", *i, strerror(-r)); +@@ -765,6 +774,11 @@ static int add_matches(sd_journal *j, char **args) { + } + } + ++ if (!strv_isempty(args) && !have_term) { ++ log_error("\"+\" can only be used between terms"); ++ return -EINVAL; ++ } ++ + return 0; + } + +-- +1.7.9.2 + diff --git a/0003-Add-quotes-to-warning-message.patch b/0003-Add-quotes-to-warning-message.patch new file mode 100644 index 00000000..3a742bac --- /dev/null +++ b/0003-Add-quotes-to-warning-message.patch @@ -0,0 +1,41 @@ +From f0ea29eaeb3449822bfbdfa839b00e323dfc523e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sun, 20 Jul 2014 19:47:42 -0400 +Subject: [PATCH] Add quotes to warning message + +The message for SYSTEMD_LOG_LEVEL= looked a bit strange. +--- + src/shared/log.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git src/shared/log.c src/shared/log.c +index 9039db3..3941e3e 100644 +--- src/shared/log.c ++++ src/shared/log.c +@@ -884,19 +884,19 @@ void log_parse_environment(void) { + + e = secure_getenv("SYSTEMD_LOG_TARGET"); + if (e && log_set_target_from_string(e) < 0) +- log_warning("Failed to parse log target %s. Ignoring.", e); ++ log_warning("Failed to parse log target '%s'. Ignoring.", e); + + e = secure_getenv("SYSTEMD_LOG_LEVEL"); + if (e && log_set_max_level_from_string(e) < 0) +- log_warning("Failed to parse log level %s. Ignoring.", e); ++ log_warning("Failed to parse log level '%s'. Ignoring.", e); + + e = secure_getenv("SYSTEMD_LOG_COLOR"); + if (e && log_show_color_from_string(e) < 0) +- log_warning("Failed to parse bool %s. Ignoring.", e); ++ log_warning("Failed to parse bool '%s'. Ignoring.", e); + + e = secure_getenv("SYSTEMD_LOG_LOCATION"); + if (e && log_show_location_from_string(e) < 0) +- log_warning("Failed to parse bool %s. Ignoring.", e); ++ log_warning("Failed to parse bool '%s'. Ignoring.", e); + } + + LogTarget log_get_target(void) { +-- +1.7.9.2 + diff --git a/0003-systemd-use-pager-for-test-and-help.patch b/0003-systemd-use-pager-for-test-and-help.patch new file mode 100644 index 00000000..a22e0b9d --- /dev/null +++ b/0003-systemd-use-pager-for-test-and-help.patch @@ -0,0 +1,111 @@ +From b87c2aa6bf1247c298c9bd9f56b9b56a87836b2d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 7 Jan 2014 00:00:05 -0500 +Subject: [PATCH] systemd: use pager for --test and --help + +--- + src/core/main.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git src/core/main.c src/core/main.c +index f9ee297..ae38b43 100644 +--- src/core/main.c ++++ src/core/main.c +@@ -50,6 +50,7 @@ + #include "conf-parser.h" + #include "missing.h" + #include "label.h" ++#include "pager.h" + #include "build.h" + #include "strv.h" + #include "def.h" +@@ -94,6 +95,7 @@ static int arg_crash_chvt = -1; + static bool arg_confirm_spawn = false; + static ShowStatus arg_show_status = _SHOW_STATUS_UNSET; + static bool arg_switched_root = false; ++static int arg_no_pager = -1; + static char ***arg_join_controllers = NULL; + static ExecOutput arg_default_std_output = EXEC_OUTPUT_JOURNAL; + static ExecOutput arg_default_std_error = EXEC_OUTPUT_INHERIT; +@@ -117,6 +119,14 @@ static bool arg_default_memory_accounting = false; + + static void nop_handler(int sig) {} + ++static void pager_open_if_enabled(void) { ++ ++ if (arg_no_pager <= 0) ++ return; ++ ++ pager_open(false); ++} ++ + noreturn static void crash(int sig) { + + if (getpid() != 1) +@@ -704,6 +714,7 @@ static int parse_argv(int argc, char *argv[]) { + ARG_SYSTEM, + ARG_USER, + ARG_TEST, ++ ARG_NO_PAGER, + ARG_VERSION, + ARG_DUMP_CONFIGURATION_ITEMS, + ARG_DUMP_CORE, +@@ -725,6 +736,7 @@ static int parse_argv(int argc, char *argv[]) { + { "system", no_argument, NULL, ARG_SYSTEM }, + { "user", no_argument, NULL, ARG_USER }, + { "test", no_argument, NULL, ARG_TEST }, ++ { "no-pager", no_argument, NULL, ARG_NO_PAGER }, + { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, ARG_VERSION }, + { "dump-configuration-items", no_argument, NULL, ARG_DUMP_CONFIGURATION_ITEMS }, +@@ -832,6 +844,12 @@ static int parse_argv(int argc, char *argv[]) { + + case ARG_TEST: + arg_action = ACTION_TEST; ++ if (arg_no_pager < 0) ++ arg_no_pager = true; ++ break; ++ ++ case ARG_NO_PAGER: ++ arg_no_pager = true; + break; + + case ARG_VERSION: +@@ -912,6 +930,8 @@ static int parse_argv(int argc, char *argv[]) { + + case 'h': + arg_action = ACTION_HELP; ++ if (arg_no_pager < 0) ++ arg_no_pager = true; + break; + + case 'D': +@@ -984,6 +1004,7 @@ static int help(void) { + "Starts up and maintains the system or user services.\n\n" + " -h --help Show this help\n" + " --test Determine startup sequence, dump it and exit\n" ++ " --no-pager Do not pipe output into a pager\n" + " --dump-configuration-items Dump understood unit configuration items\n" + " --unit=UNIT Set default unit\n" + " --system Run a system instance, even if PID != 1\n" +@@ -1452,6 +1473,8 @@ int main(int argc, char *argv[]) { + goto finish; + } + ++ pager_open_if_enabled(); ++ + if (arg_action == ACTION_HELP) { + retval = help(); + goto finish; +@@ -1798,6 +1821,8 @@ int main(int argc, char *argv[]) { + } + + finish: ++ pager_close(); ++ + if (m) { + manager_free(m); + m = NULL; +-- +1.7.9.2 + diff --git a/0004-systemd-return-the-first-error-from-manager_startup.patch b/0004-systemd-return-the-first-error-from-manager_startup.patch new file mode 100644 index 00000000..0db56a17 --- /dev/null +++ b/0004-systemd-return-the-first-error-from-manager_startup.patch @@ -0,0 +1,57 @@ +From 1cd974edfd7cd91dcdf321e7202bd220bac50a2d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 18 Jul 2014 17:05:18 -0400 +Subject: [PATCH] systemd: return the first error from manager_startup() + +--- + src/core/manager.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +diff --git src/core/manager.c src/core/manager.c +index 2e63c5e..0653d7e 100644 +--- src/core/manager.c ++++ src/core/manager.c +@@ -1005,11 +1005,8 @@ int manager_startup(Manager *m, FILE *serialization, FDSet *fds) { + dual_timestamp_get(&m->units_load_finish_timestamp); + + /* Second, deserialize if there is something to deserialize */ +- if (serialization) { +- q = manager_deserialize(m, serialization, fds); +- if (q < 0) +- r = q; +- } ++ if (serialization) ++ r = manager_deserialize(m, serialization, fds); + + /* Any fds left? Find some unit which wants them. This is + * useful to allow container managers to pass some file +@@ -1017,13 +1014,15 @@ int manager_startup(Manager *m, FILE *serialization, FDSet *fds) { + * socket-based activation of entire containers. */ + if (fdset_size(fds) > 0) { + q = manager_distribute_fds(m, fds); +- if (q < 0) ++ if (q < 0 && r == 0) + r = q; + } + + /* We might have deserialized the notify fd, but if we didn't + * then let's create the bus now */ +- manager_setup_notify(m); ++ q = manager_setup_notify(m); ++ if (q < 0 && r == 0) ++ r = q; + + /* We might have deserialized the kdbus control fd, but if we + * didn't, then let's create the bus now. */ +@@ -1033,7 +1032,7 @@ int manager_startup(Manager *m, FILE *serialization, FDSet *fds) { + + /* Third, fire things up! */ + q = manager_coldplug(m); +- if (q < 0) ++ if (q < 0 && r == 0) + r = q; + + if (serialization) { +-- +1.7.9.2 + diff --git a/1053-better-checks-in-write_net_rules.patch b/1053-better-checks-in-write_net_rules.patch new file mode 100644 index 00000000..50e03693 --- /dev/null +++ b/1053-better-checks-in-write_net_rules.patch @@ -0,0 +1,29 @@ +Index: systemd-210/src/udev/rule_generator/write_net_rules +=================================================================== +--- systemd-210.orig/src/udev/rule_generator/write_net_rules ++++ systemd-210/src/udev/rule_generator/write_net_rules +@@ -89,6 +89,12 @@ choose_rules_file + + # the DRIVERS key is needed to not match bridges and VLAN sub-interfaces + if [ "$MATCHADDR" ]; then ++ # Check if MACADDR doesn't exist already in the generated rules ++ MAC="$(/usr/bin/grep -w -o -C1 -m1 "$MATCHADDR" "$RULES_FILE" 2>/dev/null || true)" ++ if [ "$MAC" == "$MATCHADDR" ]; then ++ unlock_rules_file ++ exit 0 ++ fi + match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\"" + fi + +@@ -101,8 +107,9 @@ if [ "$MATCHDEVID" ]; then + fi + + if [ "$MATCHID" ]; then +- ID="$(find_all_rules 'KERNELS==' "$MATCHID")" +- if [ "$ID" == "$MATCHID" ]; then ++ # Check if KERNEL doesn't exist already in the generated rules ++ KERNEL="$(find_all_rules 'KERNELS==' "$MATCHID")" ++ if [ "$KERNEL" == "$MATCHID" ]; then + unlock_rules_file + exit 0 + fi diff --git a/set-and-use-default-logconsole.patch b/set-and-use-default-logconsole.patch new file mode 100644 index 00000000..59c5ff56 --- /dev/null +++ b/set-and-use-default-logconsole.patch @@ -0,0 +1,159 @@ +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 ++++ src/journal/journald-console.c 2014-07-23 09:08:29.522235688 +0000 +@@ -23,6 +23,14 @@ + #include + #include + #include ++#ifdef HAVE_SYSV_COMPAT ++# include ++# include ++# include ++# include ++# include ++# include "util.h" ++#endif + + #include "fileio.h" + #include "journald-server.h" +@@ -43,6 +51,74 @@ static bool prefix_timestamp(void) { + return cached_printk_time; + } + ++#ifdef HAVE_SYSV_COMPAT ++void defaul_tty_path(Server *s) ++{ ++ static const char list[] = "/dev/tty10\0" "/dev/console\0"; ++ const char *vc; ++ ++ if (s->tty_path) ++ return; ++ ++ NULSTR_FOREACH(vc, list) { ++ _cleanup_close_ int fd = -1; ++ ++ if (access(vc, F_OK) < 0) ++ continue; ++ ++ fd = open_terminal(vc, O_WRONLY|O_NOCTTY|O_CLOEXEC); ++ if (fd < 0) ++ continue; ++ ++ s->tty_path = strdup(vc); ++ break; ++ } ++} ++ ++void klogconsole(Server *s) ++{ ++ _cleanup_free_ char *klogconsole_params = NULL; ++ _cleanup_close_ int fd = -1; ++ const char *vc = s->tty_path; ++ const char *num; ++ int tiocl[2]; ++ int r; ++ ++ if (!vc || *vc == 0 || !strneq("/dev/tty", vc, 8)) ++ return; ++ ++ num = vc + strcspn(vc, "0123456789"); ++ if (safe_atoi(num, &r) < 0) ++ return; ++ ++ if (access(vc, F_OK) < 0) ++ return false; ++ ++ fd = open_terminal(vc, O_RDWR|O_NOCTTY|O_CLOEXEC); ++ if (fd < 0) ++ return; ++ ++ tiocl[0] = TIOCL_SETKMSGREDIRECT; ++ tiocl[1] = r; ++ ++ if (ioctl(fd, TIOCLINUX, tiocl) < 0) ++ return; ++ ++ zero(klogconsole_params); ++ r = parse_env_file("/etc/sysconfig/boot", NEWLINE, ++ "KLOGCONSOLE_PARAMS", &klogconsole_params, ++ NULL); ++ if (r < 0) ++ return; ++ if (!klogconsole_params || *klogconsole_params == 0) ++ return; ++ ++ num = klogconsole_params + strcspn(klogconsole_params, "0123456789"); ++ if (safe_atoi(num, &r) == 0) ++ klogctl(8, 0, r); ++} ++#endif ++ + void server_forward_console( + Server *s, + int priority, +@@ -63,6 +139,10 @@ void server_forward_console( + + if (LOG_PRI(priority) > s->max_level_console) + return; ++ ++ /* Do not write security/authorization (private) messages to console */ ++ if (priority & LOG_AUTHPRIV) ++ return; + + /* First: timestamp */ + if (prefix_timestamp()) { +@@ -101,7 +181,23 @@ void server_forward_console( + fd = open_terminal(tty, O_WRONLY|O_NOCTTY|O_CLOEXEC); + if (fd < 0) { + log_debug("Failed to open %s for logging: %m", tty); ++#ifdef HAVE_SYSV_COMPAT ++ if (fd != -ENOENT && fd != -ENODEV) ++ return; ++ if (tty != s->tty_path) ++ return; ++ if (!streq("/dev/console", tty)) { ++ if (s->tty_path) ++ free(s->tty_path); ++ s->tty_path = NULL; ++ tty = "/dev/console"; ++ fd = open_terminal(tty, O_WRONLY|O_NOCTTY|O_CLOEXEC); ++ if (fd < 0) ++ return; ++ } ++#else + return; ++#endif + } + + if (writev(fd, iovec, n) < 0) +--- src/journal/journald-console.h ++++ src/journal/journald-console.h 2014-07-22 11:20:52.754235644 +0000 +@@ -24,3 +24,7 @@ + #include "journald-server.h" + + void server_forward_console(Server *s, int priority, const char *identifier, const char *message, struct ucred *ucred); ++#ifdef HAVE_SYSV_COMPAT ++void klogconsole(Server *s); ++void defaul_tty_path(Server *s); ++#endif +--- src/journal/journald-server.c ++++ src/journal/journald-server.c 2014-07-22 11:16:45.966236859 +0000 +@@ -1509,6 +1509,11 @@ int server_init(Server *s) { + + server_parse_config_file(s); + server_parse_proc_cmdline(s); ++ defaul_tty_path(s); ++ ++ if (s->tty_path) ++ klogconsole(s); ++ + if (!!s->rate_limit_interval ^ !!s->rate_limit_burst) { + log_debug("Setting both rate limit interval and burst from %llu,%u to 0,0", + (long long unsigned) s->rate_limit_interval, diff --git a/systemd-mini-rpmlintrc b/systemd-mini-rpmlintrc index 93db6de4..def95a7d 100644 --- a/systemd-mini-rpmlintrc +++ b/systemd-mini-rpmlintrc @@ -18,3 +18,10 @@ addFilter("libudev-mini.*shlib-policy-name-error.*") addFilter("nss-myhostname.*shlib-policy-name-error.*") addFilter("systemd-logger.*useless-provides sysvinit(syslog).*") addFilter("devel-file-in-non-devel-package.*/usr/share/pkgconfig/(udev|systemd)\.pc.*") +addFilter(".*script-without-shebang.*/usr/lib/udev/rule_generator.functions.*") +addFilter(".*files-duplicate.*/systemd-logger.*") +addFilter(".*missing-call-to-setgroups-before-setuid.*") +addFilter(".*missing-call-to-chdir-with-chroot.*") +addFilter(".*systemd-service-without-service.*") +addFilter(".*shlib-policy-missing-suffix.*") +addFilter(".*suse-missing-rclink.*") diff --git a/systemd-mini.changes b/systemd-mini.changes index f63d54dc..bd231f90 100644 --- a/systemd-mini.changes +++ b/systemd-mini.changes @@ -1,3 +1,55 @@ +------------------------------------------------------------------- +Wed Jul 23 09:19:52 UTC 2014 - rmilasan@suse.com + +- Enable better checks in write_net_rules to skip adding duplicated + entries in the generate rules (bnc#888178). + Add 1053-better-checks-in-write_net_rules.patch + +------------------------------------------------------------------- +Wed Jul 23 09:13:43 UTC 2014 - werner@suse.de + +- Change patch set-and-use-default-logconsole.patch to avoid to + write security/authorization (private) messages to console + +------------------------------------------------------------------- +Tue Jul 22 11:50:44 UTC 2014 - werner@suse.de + +- Add patch set-and-use-default-logconsole.patch to use and set + the default logging console for both journald and kernel messages + +------------------------------------------------------------------- +Mon Jul 21 13:22:35 UTC 2014 - werner@suse.de + +- Add upstream patches + 0001-bash-completion-p-option-for-journalctl.patch + 0002-journalctl-man-allow-only-between-terms.patch + 0003-systemd-use-pager-for-test-and-help.patch + +------------------------------------------------------------------- +Mon Jul 21 12:49:00 UTC 2014 - werner@suse.de + +- Use verify scripts and add permission files for systemd logger +- Avoid useless warning about static systemd unit files +- Make pam file a config file +- Remove non-break-space from this changelog + +------------------------------------------------------------------- +Mon Jul 21 11:09:44 UTC 2014 - werner@suse.de + +- Add upstream patches + 0001-compress-fix-return-value.patch + 0002-Be-more-verbose-when-bind-or-listen-fails.patch + 0003-Add-quotes-to-warning-message.patch + 0004-systemd-return-the-first-error-from-manager_startup.patch + +------------------------------------------------------------------- +Mon Jul 21 10:42:10 UTC 2014 - werner@suse.de + +- Replace patch 0001-fix-only-discover-Xen-domU.patch with + upstream patch 0001-detect-virt-Fix-Xen-domU-discovery.patch +- Replace patch 0001-detect-s390-virt.patch with upstream + patch 0001-systemd-detect-virt-detect-s390-virtualization.patch + ------------------------------------------------------------------- Thu Jul 17 09:30:28 UTC 2014 - werner@suse.de @@ -2504,15 +2556,15 @@ Fri Apr 19 16:40:17 UTC 2013 - fcrozat@suse.com may now be passed more than once. 'systemctl list-sockets' has been added. + systemd gained a new unit 'systemd-static-nodes.service' -    that generates static device nodes earlier during boot, and -    can run in conjunction with udev. + that generates static device nodes earlier during boot, and + can run in conjunction with udev. + systemd-nspawn now places all containers in the new /machine -    top-level cgroup directory in the name=systemd hierarchy. + top-level cgroup directory in the name=systemd hierarchy. + bootchart can now store its data in the journal. + journactl can now take multiple --unit= and --user-unit= -    switches. + switches. + The cryptsetup logic now understands the "luks.key=" kernel -    command line switch. If a configured key file is missing, it + line switch. If a configured key file is missing, it will fallback to prompting the user. - Rebase some patches - Update handle-SYSTEMCTL_OPTIONS-environment-variable.patch to diff --git a/systemd-mini.spec b/systemd-mini.spec index 50f02669..821ddb1c 100644 --- a/systemd-mini.spec +++ b/systemd-mini.spec @@ -31,7 +31,8 @@ %else %define has_efi 0 %endif -%bcond_with udevsettle +%bcond_with udevsettle +%bcond_with permission Name: systemd-mini Url: http://www.freedesktop.org/wiki/Software/systemd @@ -577,8 +578,8 @@ Patch277: 0006-log-honour-the-kernel-s-quiet-cmdline-argument.patch Patch278: 0001-core-fix-invalid-free-in-killall.patch # PATCH-FIX-UPSTREAM added at 2014/06/17 Patch279: 0003-install-fix-invalid-free-in-unit_file_mask.patch -# PATCH-FIX-SUSE detect virtualization layers on S390 (bnc#880438) -Patch280: 0001-detect-s390-virt.patch +# PATCH-FIX-UPSTREAM detect virtualization layers on S390 (bnc#880438) +Patch280: 0001-systemd-detect-virt-detect-s390-virtualization.patch # PATCH-FIX-UPSTREAM 0001-core-sysvcompat-network-should-be-equivalent-to-netw.patch arvidjaar@gmail.com -- Ensure legacy services are started after network is available Patch281: 0001-core-sysvcompat-network-should-be-equivalent-to-netw.patch # PATCH-FIX-UPSTREAM added at 2014/06/24 @@ -705,8 +706,24 @@ Patch341: 0001-po-add-Ukrainian-translation.patch Patch342: 0002-man-document-yearly-and-annually-in-systemd.time-7.patch # PATCH-FIX-UPSTREAM added at 2014/07/17 Patch343: 0003-core-nicer-message-when-inotify-watches-are-exhauste.patch -# PATCH-FIX-SUSE Fix patch 0004-systemd-detect-virt-only-discover-Xen-domU.patch -Patch344: 0001-fix-only-discover-Xen-domU.patch +# PATCH-FIX-UPSTREAM Fix patch 0004-systemd-detect-virt-only-discover-Xen-domU.patch +Patch344: 0001-detect-virt-Fix-Xen-domU-discovery.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch345: 0001-compress-fix-return-value.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch346: 0002-Be-more-verbose-when-bind-or-listen-fails.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch347: 0003-Add-quotes-to-warning-message.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch348: 0004-systemd-return-the-first-error-from-manager_startup.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch349: 0001-bash-completion-p-option-for-journalctl.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch350: 0002-journalctl-man-allow-only-between-terms.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch351: 0003-systemd-use-pager-for-test-and-help.patch +# PATCH-FIX-SUSE +Patch352: set-and-use-default-logconsole.patch # UDEV PATCHES # ============ @@ -818,6 +835,8 @@ Patch1050: 1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patc Patch1051: 1051-check-if-NAME-has-a-value.patch # PATCH-FIX-UPSTREAM 1052-rules-uaccess-add-ID_SOFTWARE_RADIO.patch Patch1052: 1052-rules-uaccess-add-ID_SOFTWARE_RADIO.patch +# PATCH-FIX-SUSE 1053-better-checks-in-write_net_rules.patch (bnc#888178) +Patch1053: 1053-better-checks-in-write_net_rules.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -992,6 +1011,7 @@ Requires(pre): /usr/sbin/groupadd Requires(post): /usr/bin/getent Requires(post): /usr/bin/setfacl Requires(post): /usr/bin/systemctl +Requires(post): permissions Conflicts: otherproviders(syslog) %description logger @@ -1255,7 +1275,7 @@ cp %{SOURCE7} m4/ %patch277 -p0 %patch278 -p0 %patch279 -p0 -%patch280 -p1 +%patch280 -p0 %patch281 -p1 %patch282 -p0 %patch283 -p0 @@ -1319,7 +1339,15 @@ cp %{SOURCE7} m4/ %patch341 -p0 %patch342 -p0 %patch343 -p0 -%patch344 -p1 +%patch344 -p0 +%patch345 -p0 +%patch346 -p0 +%patch347 -p0 +%patch348 -p0 +%patch349 -p0 +%patch350 -p0 +%patch351 -p0 +%patch352 -p0 # udev patches %patch1001 -p1 @@ -1381,6 +1409,7 @@ cp %{SOURCE7} m4/ %patch1050 -p1 %patch1051 -p1 %patch1052 -p0 +%patch1053 -p1 # ensure generate files are removed rm -f units/emergency.service @@ -1408,6 +1437,14 @@ do done %endif +# +# In combination with Patch352 set-and-use-default-logconsole.patch +# Ensure that journald log on tty10 +# +%ifarch %ix86 x86_64 x32 +sed -ri 's:#TTYPath=/dev/console:#TTYPath=/dev/tty10:' src/journal/journald.conf +%endif + %build cflags () { @@ -1751,6 +1788,17 @@ do ln -sf ../systemd-update-utmp-runlevel.service %{buildroot}%{_prefix}/lib/systemd/system/${runlevel}.target.wants/ done +# Add permission files for logger +%if %{with permission} +mkdir -p %{buildroot}%{_sysconfdir}/permissions.d +cat > %{buildroot}%{_sysconfdir}/permissions.d/systemd-logger <<-'EOF' + %{_localstatedir}/log/journal/ root:systemd-journal 2755 +EOF +cat > %{buildroot}%{_sysconfdir}/permissions.d/systemd-logger.paranoid <<-'EOF' + %{_localstatedir}/log/journal/ root:systemd-journal 2755 +EOF +%endif + %find_lang systemd %pre @@ -1922,11 +1970,19 @@ fi %postun -n libgudev-1_0-0 -p /sbin/ldconfig +%if %{with permission} +%verifyscript logger +%verify_permissions -e %{_localstatedir}/log/journal +%endif + %pre logger getent group systemd-journal >/dev/null || groupadd -r systemd-journal || : exit 0 %post logger +%if %{with permission} +%set_permissions %{_localstatedir}/log/journal +%endif getent group wheel && setfacl -Rnm g:wheel:rx,d:g:wheel:rx %{_localstatedir}/log/journal/ > /dev/null 2>&1 || : getent group adm && setfacl -Rnm g:adm:rx,d:g:adm:rx %{_localstatedir}/log/journal/ > /dev/null 2>&1 || : if [ "$1" -eq 1 ]; then @@ -1960,7 +2016,7 @@ exit 0 %endif -%files +%files -f systemd.lang %defattr(-,root,root) /bin/systemd /bin/systemd-ask-password @@ -2064,7 +2120,7 @@ exit 0 %{_prefix}/lib/systemd/system-generators/systemd-insserv-generator %{_prefix}/lib/systemd/system-generators/systemd-gpt-auto-generator /%{_lib}/security/pam_systemd.so -/etc/pam.d/systemd-user +%config /etc/pam.d/systemd-user %dir %{_libexecdir}/modules-load.d %dir %{_sysconfdir}/modules-load.d @@ -2132,7 +2188,6 @@ exit 0 %exclude %{_datadir}/systemd/gatewayd %endif %{_datadir}/systemd -%{_datadir}/locale/*/LC_MESSAGES %if ! 0%{?bootstrap} # Packaged in sysvinit subpackage @@ -2329,6 +2384,10 @@ exit 0 %files logger %defattr(-,root,root) +%if %{with permission} +%config %{_sysconfdir}/permissions.d/systemd-logger +%config %{_sysconfdir}/permissions.d/systemd-logger.paranoid +%endif %dir %attr(2755,root,systemd-journal) %{_localstatedir}/log/journal %{_localstatedir}/log/README /etc/init.d/systemd-journald diff --git a/systemd-rpmlintrc b/systemd-rpmlintrc index 93db6de4..def95a7d 100644 --- a/systemd-rpmlintrc +++ b/systemd-rpmlintrc @@ -18,3 +18,10 @@ addFilter("libudev-mini.*shlib-policy-name-error.*") addFilter("nss-myhostname.*shlib-policy-name-error.*") addFilter("systemd-logger.*useless-provides sysvinit(syslog).*") addFilter("devel-file-in-non-devel-package.*/usr/share/pkgconfig/(udev|systemd)\.pc.*") +addFilter(".*script-without-shebang.*/usr/lib/udev/rule_generator.functions.*") +addFilter(".*files-duplicate.*/systemd-logger.*") +addFilter(".*missing-call-to-setgroups-before-setuid.*") +addFilter(".*missing-call-to-chdir-with-chroot.*") +addFilter(".*systemd-service-without-service.*") +addFilter(".*shlib-policy-missing-suffix.*") +addFilter(".*suse-missing-rclink.*") diff --git a/systemd.changes b/systemd.changes index f63d54dc..bd231f90 100644 --- a/systemd.changes +++ b/systemd.changes @@ -1,3 +1,55 @@ +------------------------------------------------------------------- +Wed Jul 23 09:19:52 UTC 2014 - rmilasan@suse.com + +- Enable better checks in write_net_rules to skip adding duplicated + entries in the generate rules (bnc#888178). + Add 1053-better-checks-in-write_net_rules.patch + +------------------------------------------------------------------- +Wed Jul 23 09:13:43 UTC 2014 - werner@suse.de + +- Change patch set-and-use-default-logconsole.patch to avoid to + write security/authorization (private) messages to console + +------------------------------------------------------------------- +Tue Jul 22 11:50:44 UTC 2014 - werner@suse.de + +- Add patch set-and-use-default-logconsole.patch to use and set + the default logging console for both journald and kernel messages + +------------------------------------------------------------------- +Mon Jul 21 13:22:35 UTC 2014 - werner@suse.de + +- Add upstream patches + 0001-bash-completion-p-option-for-journalctl.patch + 0002-journalctl-man-allow-only-between-terms.patch + 0003-systemd-use-pager-for-test-and-help.patch + +------------------------------------------------------------------- +Mon Jul 21 12:49:00 UTC 2014 - werner@suse.de + +- Use verify scripts and add permission files for systemd logger +- Avoid useless warning about static systemd unit files +- Make pam file a config file +- Remove non-break-space from this changelog + +------------------------------------------------------------------- +Mon Jul 21 11:09:44 UTC 2014 - werner@suse.de + +- Add upstream patches + 0001-compress-fix-return-value.patch + 0002-Be-more-verbose-when-bind-or-listen-fails.patch + 0003-Add-quotes-to-warning-message.patch + 0004-systemd-return-the-first-error-from-manager_startup.patch + +------------------------------------------------------------------- +Mon Jul 21 10:42:10 UTC 2014 - werner@suse.de + +- Replace patch 0001-fix-only-discover-Xen-domU.patch with + upstream patch 0001-detect-virt-Fix-Xen-domU-discovery.patch +- Replace patch 0001-detect-s390-virt.patch with upstream + patch 0001-systemd-detect-virt-detect-s390-virtualization.patch + ------------------------------------------------------------------- Thu Jul 17 09:30:28 UTC 2014 - werner@suse.de @@ -2504,15 +2556,15 @@ Fri Apr 19 16:40:17 UTC 2013 - fcrozat@suse.com may now be passed more than once. 'systemctl list-sockets' has been added. + systemd gained a new unit 'systemd-static-nodes.service' -    that generates static device nodes earlier during boot, and -    can run in conjunction with udev. + that generates static device nodes earlier during boot, and + can run in conjunction with udev. + systemd-nspawn now places all containers in the new /machine -    top-level cgroup directory in the name=systemd hierarchy. + top-level cgroup directory in the name=systemd hierarchy. + bootchart can now store its data in the journal. + journactl can now take multiple --unit= and --user-unit= -    switches. + switches. + The cryptsetup logic now understands the "luks.key=" kernel -    command line switch. If a configured key file is missing, it + line switch. If a configured key file is missing, it will fallback to prompting the user. - Rebase some patches - Update handle-SYSTEMCTL_OPTIONS-environment-variable.patch to diff --git a/systemd.spec b/systemd.spec index 318788d6..0e5ecf3a 100644 --- a/systemd.spec +++ b/systemd.spec @@ -29,7 +29,8 @@ %else %define has_efi 0 %endif -%bcond_with udevsettle +%bcond_with udevsettle +%bcond_with permission Name: systemd Url: http://www.freedesktop.org/wiki/Software/systemd @@ -572,8 +573,8 @@ Patch277: 0006-log-honour-the-kernel-s-quiet-cmdline-argument.patch Patch278: 0001-core-fix-invalid-free-in-killall.patch # PATCH-FIX-UPSTREAM added at 2014/06/17 Patch279: 0003-install-fix-invalid-free-in-unit_file_mask.patch -# PATCH-FIX-SUSE detect virtualization layers on S390 (bnc#880438) -Patch280: 0001-detect-s390-virt.patch +# PATCH-FIX-UPSTREAM detect virtualization layers on S390 (bnc#880438) +Patch280: 0001-systemd-detect-virt-detect-s390-virtualization.patch # PATCH-FIX-UPSTREAM 0001-core-sysvcompat-network-should-be-equivalent-to-netw.patch arvidjaar@gmail.com -- Ensure legacy services are started after network is available Patch281: 0001-core-sysvcompat-network-should-be-equivalent-to-netw.patch # PATCH-FIX-UPSTREAM added at 2014/06/24 @@ -700,8 +701,24 @@ Patch341: 0001-po-add-Ukrainian-translation.patch Patch342: 0002-man-document-yearly-and-annually-in-systemd.time-7.patch # PATCH-FIX-UPSTREAM added at 2014/07/17 Patch343: 0003-core-nicer-message-when-inotify-watches-are-exhauste.patch -# PATCH-FIX-SUSE Fix patch 0004-systemd-detect-virt-only-discover-Xen-domU.patch -Patch344: 0001-fix-only-discover-Xen-domU.patch +# PATCH-FIX-UPSTREAM Fix patch 0004-systemd-detect-virt-only-discover-Xen-domU.patch +Patch344: 0001-detect-virt-Fix-Xen-domU-discovery.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch345: 0001-compress-fix-return-value.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch346: 0002-Be-more-verbose-when-bind-or-listen-fails.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch347: 0003-Add-quotes-to-warning-message.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch348: 0004-systemd-return-the-first-error-from-manager_startup.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch349: 0001-bash-completion-p-option-for-journalctl.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch350: 0002-journalctl-man-allow-only-between-terms.patch +# PATCH-FIX-UPSTREAM added at 2014/07/21 +Patch351: 0003-systemd-use-pager-for-test-and-help.patch +# PATCH-FIX-SUSE +Patch352: set-and-use-default-logconsole.patch # UDEV PATCHES # ============ @@ -813,6 +830,8 @@ Patch1050: 1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patc Patch1051: 1051-check-if-NAME-has-a-value.patch # PATCH-FIX-UPSTREAM 1052-rules-uaccess-add-ID_SOFTWARE_RADIO.patch Patch1052: 1052-rules-uaccess-add-ID_SOFTWARE_RADIO.patch +# PATCH-FIX-SUSE 1053-better-checks-in-write_net_rules.patch (bnc#888178) +Patch1053: 1053-better-checks-in-write_net_rules.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -987,6 +1006,7 @@ Requires(pre): /usr/sbin/groupadd Requires(post): /usr/bin/getent Requires(post): /usr/bin/setfacl Requires(post): /usr/bin/systemctl +Requires(post): permissions Conflicts: otherproviders(syslog) %description logger @@ -1250,7 +1270,7 @@ cp %{SOURCE7} m4/ %patch277 -p0 %patch278 -p0 %patch279 -p0 -%patch280 -p1 +%patch280 -p0 %patch281 -p1 %patch282 -p0 %patch283 -p0 @@ -1314,7 +1334,15 @@ cp %{SOURCE7} m4/ %patch341 -p0 %patch342 -p0 %patch343 -p0 -%patch344 -p1 +%patch344 -p0 +%patch345 -p0 +%patch346 -p0 +%patch347 -p0 +%patch348 -p0 +%patch349 -p0 +%patch350 -p0 +%patch351 -p0 +%patch352 -p0 # udev patches %patch1001 -p1 @@ -1376,6 +1404,7 @@ cp %{SOURCE7} m4/ %patch1050 -p1 %patch1051 -p1 %patch1052 -p0 +%patch1053 -p1 # ensure generate files are removed rm -f units/emergency.service @@ -1403,6 +1432,14 @@ do done %endif +# +# In combination with Patch352 set-and-use-default-logconsole.patch +# Ensure that journald log on tty10 +# +%ifarch %ix86 x86_64 x32 +sed -ri 's:#TTYPath=/dev/console:#TTYPath=/dev/tty10:' src/journal/journald.conf +%endif + %build cflags () { @@ -1746,6 +1783,17 @@ do ln -sf ../systemd-update-utmp-runlevel.service %{buildroot}%{_prefix}/lib/systemd/system/${runlevel}.target.wants/ done +# Add permission files for logger +%if %{with permission} +mkdir -p %{buildroot}%{_sysconfdir}/permissions.d +cat > %{buildroot}%{_sysconfdir}/permissions.d/systemd-logger <<-'EOF' + %{_localstatedir}/log/journal/ root:systemd-journal 2755 +EOF +cat > %{buildroot}%{_sysconfdir}/permissions.d/systemd-logger.paranoid <<-'EOF' + %{_localstatedir}/log/journal/ root:systemd-journal 2755 +EOF +%endif + %find_lang systemd %pre @@ -1917,11 +1965,19 @@ fi %postun -n libgudev-1_0-0 -p /sbin/ldconfig +%if %{with permission} +%verifyscript logger +%verify_permissions -e %{_localstatedir}/log/journal +%endif + %pre logger getent group systemd-journal >/dev/null || groupadd -r systemd-journal || : exit 0 %post logger +%if %{with permission} +%set_permissions %{_localstatedir}/log/journal +%endif getent group wheel && setfacl -Rnm g:wheel:rx,d:g:wheel:rx %{_localstatedir}/log/journal/ > /dev/null 2>&1 || : getent group adm && setfacl -Rnm g:adm:rx,d:g:adm:rx %{_localstatedir}/log/journal/ > /dev/null 2>&1 || : if [ "$1" -eq 1 ]; then @@ -1955,7 +2011,7 @@ exit 0 %endif -%files +%files -f systemd.lang %defattr(-,root,root) /bin/systemd /bin/systemd-ask-password @@ -2059,7 +2115,7 @@ exit 0 %{_prefix}/lib/systemd/system-generators/systemd-insserv-generator %{_prefix}/lib/systemd/system-generators/systemd-gpt-auto-generator /%{_lib}/security/pam_systemd.so -/etc/pam.d/systemd-user +%config /etc/pam.d/systemd-user %dir %{_libexecdir}/modules-load.d %dir %{_sysconfdir}/modules-load.d @@ -2127,7 +2183,6 @@ exit 0 %exclude %{_datadir}/systemd/gatewayd %endif %{_datadir}/systemd -%{_datadir}/locale/*/LC_MESSAGES %if ! 0%{?bootstrap} # Packaged in sysvinit subpackage @@ -2324,6 +2379,10 @@ exit 0 %files logger %defattr(-,root,root) +%if %{with permission} +%config %{_sysconfdir}/permissions.d/systemd-logger +%config %{_sysconfdir}/permissions.d/systemd-logger.paranoid +%endif %dir %attr(2755,root,systemd-journal) %{_localstatedir}/log/journal %{_localstatedir}/log/README /etc/init.d/systemd-journald