From 12dd43bb94c9c3eccb73d6b882deb905a9d5c1176c10006b0a42e6a8639c5f64 Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Fri, 7 Feb 2014 13:56:41 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/systemd-rpm-macros?expand=0&rev=3 --- 0001-Fix-bad-assert-in-show_pid_array.patch | 35 ++ ...all-qsort-on-potentially-NULL-arrays.patch | 385 +++++++++++++ ...s390_con3270_disable_ANSI_colour_esc.patch | 123 ++++ ...ix-memory-leak-in-acpi_get_boot_usec.patch | 25 + ...sh-for-reboot-or-hddown-for-poweroff.patch | 537 +++++++++++++++++ ...yze-set-text-on-side-with-most-space.patch | 90 +++ 0001-analyze-set-white-background.patch | 32 ++ ...-missing-setting-of-variable-s-value.patch | 27 - ...ew-KillMode-mixed-which-sends-SIGTER.patch | 225 ++++++++ ...ailureIsolate-setting-by-a-more-gene.patch | 329 +++++++++++ ...ay-we-denote-serialization-attribute.patch | 40 ++ ...dbus-common-avoid-leak-in-error-path.patch | 71 +++ ...rbage-from-acpi-firmware-performance.patch | 33 ++ 0001-drop-ins-check-return-value.patch | 29 + ...tor-exit-immediately-if-in-container.patch | 40 ++ 0001-journald-fix-minor-memory-leak.patch | 25 + ...rotated-file-from-hashmap-when-rotat.patch | 39 ++ ...ix-invalid-free-in-sd_session_get_vt.patch | 27 + ...make-sd_session_get_vt-actually-work.patch | 27 + ...s-introspection-data-for-TakeControl.patch | 25 + 0001-logind-garbage-collect-stale-users.patch | 28 + ...ifying-whether-clients-may-change-en.patch | 45 ++ ...heck-for-NULL-before-reading-pm-what.patch | 29 + ...shared-util-Fix-glob_extend-argument.patch | 28 + ...off-by-one-error-in-tag_to_udev_node.patch | 50 ++ ...mote-mounts-from-mountinfo-before-re.patch | 41 ++ ...ize-deserialize-forbid_restart-value.patch | 51 ++ ...systemctl-halt-reboot-error-handling.patch | 85 +++ 0002-cgroup-correct-the-log-information.patch | 26 - ...ferences-to-var-lib-backlight-random.patch | 55 ++ ...llMode-mixed-in-conjunction-with-PAM.patch | 62 ++ ...e-never-free-an-uninitialized-pointe.patch | 25 + ...ix-incorrectly-setting-memory-cgroup.patch | 46 -- ...o-always-go-through-both-SIGTERM-and.patch | 128 +++++ ...hould-return-errno-of-failed-loop_wr.patch | 25 - ...ctl-fix-name-mangling-for-sysv-units.patch | 134 +++++ 0005-core-cgroup-first-print-then-free.patch | 26 - ...OM-handling-when-parsing-mount-optio.patch | 48 ++ 0006-journald-add-missing-error-check.patch | 25 + 0006-swap-fix-reverse-dependencies.patch | 30 - ...entially-uninitialized-memory-access.patch | 34 ++ 0007-libudev-fix-move_later-comparison.patch | 27 - ...-fix-return-value-of-dispatch_rqueue.patch | 30 + ...-.wants-symlink-to-auto-swap-devices.patch | 90 --- 0009-modules-load-fix-error-handling.patch | 27 + ...all-qsort-on-potentially-NULL-arrays.patch | 26 + ...ccess-potentially-NULL-string-arrays.patch | 27 + ...per-function-pointer-to-mkdir_safe_i.patch | 26 + ...ude-setgid-perms-for-run-log-journal.patch | 26 + ...make-xsltproc-use-correct-ROFF-links.patch | 10 + ...t-install-sulogin-unit-with-poweroff.patch | 13 + 1011-check-4-valid-kmsg-device.patch | 62 ++ ...XDG_RUNTIME_DIR_of_the_original_user.patch | 168 ++++++ 1014-journald-with-journaling-FS.patch | 52 ++ 1016-support-powerfail-with-powerstatus.patch | 90 +++ ...nit-handling-if-sysv-already-handled.patch | 20 + ...ripts-know-about-Required-and-Should.patch | 51 ++ ...pletion-smart-to-be-able-to-redirect.patch | 236 ++++++++ ...pport-for-SysV-scripts-for-the-early.patch | 20 +- ...y_session_activation_on_non_vt_seats.patch | 26 + after-local.service | 18 + ...ze-fix-crash-in-command-line-parsing.patch | 35 ++ apply-ACL-for-nvidia-device-nodes.patch | 37 +- build-sys-make-multi-seat-x-optional.patch | 60 ++ ...etup-after-md-dmraid-lvm-are-started.patch | 16 +- ...STEMCTL_OPTIONS-environment-variable.patch | 12 +- ...lang-value-in-etc-sysconfig-language.patch | 16 +- insserv-generator.patch | 25 +- macros.systemd | 14 + ....service-conflict-with-syslog.socket.patch | 22 + ...-quit-and-wait-for-emergency-service.patch | 35 ++ ...script-heuristic-and-add-new-LSB-hea.patch | 20 +- ...ndle-boot-sysctl.conf-kernel_release.patch | 19 +- systemd-207.tar.xz | 3 - systemd-208.tar.xz | 3 + systemd-mini.changes | 544 ++++++++++++++++-- systemd-mini.spec | 259 ++++++++- systemd-powerfail | 28 + systemd-rpm-macros.spec | 2 +- systemd.changes | 544 ++++++++++++++++-- systemd.spec | 259 ++++++++- ...r-sbin-sulogin-for-emergency-service.patch | 32 +- 82 files changed, 5697 insertions(+), 518 deletions(-) create mode 100644 0001-Fix-bad-assert-in-show_pid_array.patch create mode 100644 0001-Never-call-qsort-on-potentially-NULL-arrays.patch create mode 100644 0001-On_s390_con3270_disable_ANSI_colour_esc.patch create mode 100644 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch create mode 100644 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch create mode 100644 0001-analyze-set-text-on-side-with-most-space.patch create mode 100644 0001-analyze-set-white-background.patch delete mode 100644 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch create mode 100644 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch create mode 100644 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch create mode 100644 0001-core-unify-the-way-we-denote-serialization-attribute.patch create mode 100644 0001-dbus-common-avoid-leak-in-error-path.patch create mode 100644 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch create mode 100644 0001-drop-ins-check-return-value.patch create mode 100644 0001-gpt-auto-generator-exit-immediately-if-in-container.patch create mode 100644 0001-journald-fix-minor-memory-leak.patch create mode 100644 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch create mode 100644 0001-login-fix-invalid-free-in-sd_session_get_vt.patch create mode 100644 0001-login-make-sd_session_get_vt-actually-work.patch create mode 100644 0001-logind-fix-bus-introspection-data-for-TakeControl.patch create mode 100644 0001-logind-garbage-collect-stale-users.patch create mode 100644 0001-manager-when-verifying-whether-clients-may-change-en.patch create mode 100644 0001-mount-check-for-NULL-before-reading-pm-what.patch create mode 100644 0001-shared-util-Fix-glob_extend-argument.patch create mode 100644 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch create mode 100644 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch create mode 100644 0001-systemd-serialize-deserialize-forbid_restart-value.patch create mode 100644 0001-upstream-systemctl-halt-reboot-error-handling.patch delete mode 100644 0002-cgroup-correct-the-log-information.patch create mode 100644 0002-fix-lingering-references-to-var-lib-backlight-random.patch create mode 100644 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch create mode 100644 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch delete mode 100644 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch create mode 100644 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch delete mode 100644 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch create mode 100644 0004-systemctl-fix-name-mangling-for-sysv-units.patch delete mode 100644 0005-core-cgroup-first-print-then-free.patch create mode 100644 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch create mode 100644 0006-journald-add-missing-error-check.patch delete mode 100644 0006-swap-fix-reverse-dependencies.patch create mode 100644 0007-bus-fix-potentially-uninitialized-memory-access.patch delete mode 100644 0007-libudev-fix-move_later-comparison.patch create mode 100644 0008-dbus-fix-return-value-of-dispatch_rqueue.patch delete mode 100644 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch create mode 100644 0009-modules-load-fix-error-handling.patch create mode 100644 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch create mode 100644 0011-strv-don-t-access-potentially-NULL-string-arrays.patch create mode 100644 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch create mode 100644 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch create mode 100644 1009-make-xsltproc-use-correct-ROFF-links.patch create mode 100644 1010-do-not-install-sulogin-unit-with-poweroff.patch create mode 100644 1011-check-4-valid-kmsg-device.patch create mode 100644 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch create mode 100644 1014-journald-with-journaling-FS.patch create mode 100644 1016-support-powerfail-with-powerstatus.patch create mode 100644 1017-skip-native-unit-handling-if-sysv-already-handled.patch create mode 100644 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch create mode 100644 1019-make-completion-smart-to-be-able-to-redirect.patch create mode 100644 U_logind_revert_lazy_session_activation_on_non_vt_seats.patch create mode 100644 after-local.service create mode 100644 analyze-fix-crash-in-command-line-parsing.patch create mode 100644 build-sys-make-multi-seat-x-optional.patch create mode 100644 make-emergency.service-conflict-with-syslog.socket.patch create mode 100644 plymouth-quit-and-wait-for-emergency-service.patch delete mode 100644 systemd-207.tar.xz create mode 100644 systemd-208.tar.xz create mode 100644 systemd-powerfail diff --git a/0001-Fix-bad-assert-in-show_pid_array.patch b/0001-Fix-bad-assert-in-show_pid_array.patch new file mode 100644 index 0000000..e62ab8b --- /dev/null +++ b/0001-Fix-bad-assert-in-show_pid_array.patch @@ -0,0 +1,35 @@ +From a0551d26ab5c6e0d5089b42a6319baef0e28ad92 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 14 Oct 2013 19:15:24 -0400 +Subject: [PATCH] Fix bad assert in show_pid_array + +This function should get the same treatment as other qsort uses +did in 7ff7394 "Never call qsort on potentially NULL arrays". + +Reported-by: Oleksii Shevchuk +--- + src/shared/cgroup-show.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +Index: systemd-208/src/shared/cgroup-show.c +=================================================================== +--- systemd-208.orig/src/shared/cgroup-show.c ++++ systemd-208/src/shared/cgroup-show.c +@@ -44,8 +44,6 @@ static void show_pid_array(int pids[], u + unsigned i, m, pid_width; + pid_t biggest = 0; + +- assert(n_pids > 0); +- + /* Filter duplicates */ + m = 0; + for (i = 0; i < n_pids; i++) { +@@ -65,7 +63,7 @@ static void show_pid_array(int pids[], u + pid_width = DECIMAL_STR_WIDTH(biggest); + + /* And sort */ +- qsort(pids, n_pids, sizeof(pid_t), compare); ++ qsort_safe(pids, n_pids, sizeof(pid_t), compare); + + if(flags & OUTPUT_FULL_WIDTH) + n_columns = 0; diff --git a/0001-Never-call-qsort-on-potentially-NULL-arrays.patch b/0001-Never-call-qsort-on-potentially-NULL-arrays.patch new file mode 100644 index 0000000..515348f --- /dev/null +++ b/0001-Never-call-qsort-on-potentially-NULL-arrays.patch @@ -0,0 +1,385 @@ +From 7ff7394d9e4e9189c30fd018235e6b1728c6f2d0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 11 Oct 2013 19:33:13 -0400 +Subject: [PATCH] Never call qsort on potentially NULL arrays + +This extends 62678ded 'efi: never call qsort on potentially +NULL arrays' to all other places where qsort is used and it +is not obvious that the count is non-zero. +--- + src/analyze/systemd-analyze.c | 2 +- + src/cgtop/cgtop.c | 2 +- + src/core/namespace.c | 38 ++++++++++++++++++++------------------ + src/journal/catalog.c | 2 +- + src/journal/journal-file.c | 2 +- + src/journal/journal-vacuum.c | 3 +-- + src/journal/journalctl.c | 2 +- + src/libsystemd-bus/bus-match.c | 2 +- + src/libudev/libudev-enumerate.c | 2 +- + src/nss-myhostname/netlink.c | 3 ++- + src/readahead/readahead-collect.c | 39 ++++++++++++++++++++++----------------- + src/shared/cgroup-show.c | 2 ++ + src/shared/conf-files.c | 2 +- + src/shared/efivars.c | 3 +-- + src/shared/fileio.c | 1 + + src/shared/util.h | 12 ++++++++++++ + src/systemctl/systemctl.c | 10 +++++----- + 17 files changed, 74 insertions(+), 53 deletions(-) + +diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c +index 27d063c..a4f15eb 100644 +--- a/src/analyze/systemd-analyze.c ++++ b/src/analyze/systemd-analyze.c +@@ -768,7 +768,7 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, unsigned + if (r < 0) + return r; + +- qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare); ++ qsort_safe(deps, strv_length(deps), sizeof (char*), list_dependencies_compare); + + r = acquire_boot_times(bus, &boot); + if (r < 0) +diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c +index cacf705..293a211 100644 +--- a/src/cgtop/cgtop.c ++++ b/src/cgtop/cgtop.c +@@ -461,7 +461,7 @@ static int display(Hashmap *a) { + if (g->n_tasks_valid || g->cpu_valid || g->memory_valid || g->io_valid) + array[n++] = g; + +- qsort(array, n, sizeof(Group*), group_compare); ++ qsort_safe(array, n, sizeof(Group*), group_compare); + + /* Find the longest names in one run */ + for (j = 0; j < n; j++) { +diff --git a/src/core/namespace.c b/src/core/namespace.c +index 16b132b..936f368 100644 +--- a/src/core/namespace.c ++++ b/src/core/namespace.c +@@ -222,7 +222,7 @@ int setup_namespace(char** read_write_dirs, + strv_length(read_only_dirs) + + strv_length(inaccessible_dirs) + + (private_tmp ? 2 : 0); +- BindMount *m, *mounts; ++ BindMount *m, *mounts = NULL; + int r = 0; + + if (!mount_flags) +@@ -231,27 +231,29 @@ int setup_namespace(char** read_write_dirs, + if (unshare(CLONE_NEWNS) < 0) + return -errno; + +- m = mounts = (BindMount *) alloca(n * sizeof(BindMount)); +- if ((r = append_mounts(&m, read_write_dirs, READWRITE)) < 0 || +- (r = append_mounts(&m, read_only_dirs, READONLY)) < 0 || +- (r = append_mounts(&m, inaccessible_dirs, INACCESSIBLE)) < 0) +- return r; ++ if (n) { ++ m = mounts = (BindMount *) alloca(n * sizeof(BindMount)); ++ if ((r = append_mounts(&m, read_write_dirs, READWRITE)) < 0 || ++ (r = append_mounts(&m, read_only_dirs, READONLY)) < 0 || ++ (r = append_mounts(&m, inaccessible_dirs, INACCESSIBLE)) < 0) ++ return r; ++ ++ if (private_tmp) { ++ m->path = "/tmp"; ++ m->mode = PRIVATE_TMP; ++ m++; ++ ++ m->path = "/var/tmp"; ++ m->mode = PRIVATE_VAR_TMP; ++ m++; ++ } + +- if (private_tmp) { +- m->path = "/tmp"; +- m->mode = PRIVATE_TMP; +- m++; ++ assert(mounts + n == m); + +- m->path = "/var/tmp"; +- m->mode = PRIVATE_VAR_TMP; +- m++; ++ qsort(mounts, n, sizeof(BindMount), mount_path_compare); ++ drop_duplicates(mounts, &n); + } + +- assert(mounts + n == m); +- +- qsort(mounts, n, sizeof(BindMount), mount_path_compare); +- drop_duplicates(mounts, &n); +- + /* Remount / as SLAVE so that nothing now mounted in the namespace + shows up in the parent */ + if (mount(NULL, "/", NULL, MS_SLAVE|MS_REC, NULL) < 0) +diff --git a/src/journal/catalog.c b/src/journal/catalog.c +index 7738d24..90ca008 100644 +--- a/src/journal/catalog.c ++++ b/src/journal/catalog.c +@@ -399,7 +399,7 @@ int catalog_update(const char* database, const char* root, const char* const* di + } + + assert(n == hashmap_size(h)); +- qsort(items, n, sizeof(CatalogItem), catalog_compare_func); ++ qsort_safe(items, n, sizeof(CatalogItem), catalog_compare_func); + + r = write_catalog(database, h, sb, items, n); + if (r < 0) +diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c +index 78b937b..901e71b 100644 +--- a/src/journal/journal-file.c ++++ b/src/journal/journal-file.c +@@ -1344,7 +1344,7 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st + + /* Order by the position on disk, in order to improve seek + * times for rotating media. */ +- qsort(items, n_iovec, sizeof(EntryItem), entry_item_cmp); ++ qsort_safe(items, n_iovec, sizeof(EntryItem), entry_item_cmp); + + r = journal_file_append_entry_internal(f, ts, xor_hash, items, n_iovec, seqnum, ret, offset); + +diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c +index 8d5effb..d4a1c6c 100644 +--- a/src/journal/journal-vacuum.c ++++ b/src/journal/journal-vacuum.c +@@ -299,8 +299,7 @@ int journal_directory_vacuum( + n_list ++; + } + +- if (n_list > 0) +- qsort(list, n_list, sizeof(struct vacuum_info), vacuum_compare); ++ qsort_safe(list, n_list, sizeof(struct vacuum_info), vacuum_compare); + + for (i = 0; i < n_list; i++) { + struct statvfs ss; +diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c +index 2f8be1b..275458c 100644 +--- a/src/journal/journalctl.c ++++ b/src/journal/journalctl.c +@@ -761,7 +761,7 @@ static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative + sd_journal_flush_matches(j); + } + +- qsort(all_ids, count, sizeof(boot_id_t), boot_id_cmp); ++ qsort_safe(all_ids, count, sizeof(boot_id_t), boot_id_cmp); + + if (sd_id128_equal(*boot_id, SD_ID128_NULL)) { + if (relative > (int) count || relative <= -(int)count) +diff --git a/src/libsystemd-bus/bus-match.c b/src/libsystemd-bus/bus-match.c +index 1411167..916682a 100644 +--- a/src/libsystemd-bus/bus-match.c ++++ b/src/libsystemd-bus/bus-match.c +@@ -768,7 +768,7 @@ int bus_match_parse( + } + + /* Order the whole thing, so that we always generate the same tree */ +- qsort(components, n_components, sizeof(struct bus_match_component), match_component_compare); ++ qsort_safe(components, n_components, sizeof(struct bus_match_component), match_component_compare); + + /* Check for duplicates */ + for (i = 0; i+1 < n_components; i++) +diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c +index 8146f27..e71d766 100644 +--- a/src/libudev/libudev-enumerate.c ++++ b/src/libudev/libudev-enumerate.c +@@ -276,7 +276,7 @@ _public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enume + size_t move_later_prefix = 0; + + udev_list_cleanup(&udev_enumerate->devices_list); +- qsort(udev_enumerate->devices, udev_enumerate->devices_cur, sizeof(struct syspath), syspath_cmp); ++ qsort_safe(udev_enumerate->devices, udev_enumerate->devices_cur, sizeof(struct syspath), syspath_cmp); + + max = udev_enumerate->devices_cur; + for (i = 0; i < max; i++) { +diff --git a/src/nss-myhostname/netlink.c b/src/nss-myhostname/netlink.c +index b1ef912..47a41f5 100644 +--- a/src/nss-myhostname/netlink.c ++++ b/src/nss-myhostname/netlink.c +@@ -197,7 +197,8 @@ finish: + return r; + } + +- qsort(list, n_list, sizeof(struct address), address_compare); ++ if (n_list) ++ qsort(list, n_list, sizeof(struct address), address_compare); + + *_list = list; + *_n_list = n_list; +diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c +index 32888ad..6b74866 100644 +--- a/src/readahead/readahead-collect.c ++++ b/src/readahead/readahead-collect.c +@@ -536,8 +536,7 @@ done: + HASHMAP_FOREACH_KEY(q, p, files, i) + pack_file(pack, p, on_btrfs); + } else { +- struct item *ordered, *j; +- unsigned k, n; ++ unsigned n; + + /* On rotating media, order things by the block + * numbers */ +@@ -545,25 +544,31 @@ done: + log_debug("Ordering..."); + + n = hashmap_size(files); +- if (!(ordered = new(struct item, n))) { +- r = log_oom(); +- goto finish; +- } +- +- j = ordered; +- HASHMAP_FOREACH_KEY(q, p, files, i) { +- memcpy(j, q, sizeof(struct item)); +- j++; +- } ++ if (n) { ++ _cleanup_free_ struct item *ordered; ++ struct item *j; ++ unsigned k; ++ ++ ordered = new(struct item, n); ++ if (!ordered) { ++ r = log_oom(); ++ goto finish; ++ } + +- assert(ordered + n == j); ++ j = ordered; ++ HASHMAP_FOREACH_KEY(q, p, files, i) { ++ memcpy(j, q, sizeof(struct item)); ++ j++; ++ } + +- qsort(ordered, n, sizeof(struct item), qsort_compare); ++ assert(ordered + n == j); + +- for (k = 0; k < n; k++) +- pack_file(pack, ordered[k].path, on_btrfs); ++ qsort(ordered, n, sizeof(struct item), qsort_compare); + +- free(ordered); ++ for (k = 0; k < n; k++) ++ pack_file(pack, ordered[k].path, on_btrfs); ++ } else ++ log_warning("No pack files"); + } + + log_debug("Finalizing..."); +diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c +index e971f36..cc44ab4 100644 +--- a/src/shared/cgroup-show.c ++++ b/src/shared/cgroup-show.c +@@ -44,6 +44,8 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi + unsigned i, m, pid_width; + pid_t biggest = 0; + ++ assert(n_pids > 0); ++ + /* Filter duplicates */ + m = 0; + for (i = 0; i < n_pids; i++) { +diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c +index 6d99739..ed4070c 100644 +--- a/src/shared/conf-files.c ++++ b/src/shared/conf-files.c +@@ -127,7 +127,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const + return -ENOMEM; + } + +- qsort(files, hashmap_size(fh), sizeof(char *), base_cmp); ++ qsort_safe(files, hashmap_size(fh), sizeof(char *), base_cmp); + *strv = files; + + hashmap_free(fh); +diff --git a/src/shared/efivars.c b/src/shared/efivars.c +index c015b16..f3eb6a6 100644 +--- a/src/shared/efivars.c ++++ b/src/shared/efivars.c +@@ -384,8 +384,7 @@ int efi_get_boot_options(uint16_t **options) { + list[count ++] = id; + } + +- if (list) +- qsort(list, count, sizeof(uint16_t), cmp_uint16); ++ qsort_safe(list, count, sizeof(uint16_t), cmp_uint16); + + *options = list; + return count; +diff --git a/src/shared/fileio.c b/src/shared/fileio.c +index 603a1c7..733b320 100644 +--- a/src/shared/fileio.c ++++ b/src/shared/fileio.c +@@ -662,6 +662,7 @@ int get_status_field(const char *filename, const char *pattern, char **field) { + int r; + + assert(filename); ++ assert(pattern); + assert(field); + + r = read_full_file(filename, &status, NULL); +diff --git a/src/shared/util.h b/src/shared/util.h +index 26af5b3..09e556d 100644 +--- a/src/shared/util.h ++++ b/src/shared/util.h +@@ -772,3 +772,15 @@ bool id128_is_valid(const char *s) _pure_; + void parse_user_at_host(char *arg, char **user, char **host); + + int split_pair(const char *s, const char *sep, char **l, char **r); ++ ++/** ++ * Normal qsort requires base to be nonnull. Here were require ++ * that only if nmemb > 0. ++ */ ++static inline void qsort_safe(void *base, size_t nmemb, size_t size, ++ int (*compar)(const void *, const void *)) { ++ if (nmemb) { ++ assert(base); ++ qsort(base, nmemb, size, compar); ++ } ++} +diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c +index d75281f..036828b 100644 +--- a/src/systemctl/systemctl.c ++++ b/src/systemctl/systemctl.c +@@ -471,7 +471,7 @@ static int list_units(DBusConnection *bus, char **args) { + if (r < 0) + return r; + +- qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info); ++ qsort_safe(unit_infos, c, sizeof(struct unit_info), compare_unit_info); + + output_units_list(unit_infos, c); + +@@ -733,8 +733,8 @@ static int list_sockets(DBusConnection *bus, char **args) { + listen = triggered = NULL; /* avoid cleanup */ + } + +- qsort(socket_infos, cs, sizeof(struct socket_info), +- (__compar_fn_t) socket_info_compare); ++ qsort_safe(socket_infos, cs, sizeof(struct socket_info), ++ (__compar_fn_t) socket_info_compare); + + output_sockets_list(socket_infos, cs); + +@@ -1108,7 +1108,7 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, int leve + if (r < 0) + return r; + +- qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare); ++ qsort_safe(deps, strv_length(deps), sizeof (char*), list_dependencies_compare); + + STRV_FOREACH(c, deps) { + if (strv_contains(u, *c)) { +@@ -3532,7 +3532,7 @@ static int show_all(const char* verb, + if (r < 0) + return r; + +- qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info); ++ qsort_safe(unit_infos, c, sizeof(struct unit_info), compare_unit_info); + + for (u = unit_infos; u < unit_infos + c; u++) { + _cleanup_free_ char *p = NULL; +-- +1.8.4 + diff --git a/0001-On_s390_con3270_disable_ANSI_colour_esc.patch b/0001-On_s390_con3270_disable_ANSI_colour_esc.patch new file mode 100644 index 0000000..843894e --- /dev/null +++ b/0001-On_s390_con3270_disable_ANSI_colour_esc.patch @@ -0,0 +1,123 @@ +--- + rules/99-systemd.rules.in | 2 - + src/getty-generator/getty-generator.c | 2 - + src/shared/util.c | 62 ++++++++++++++++++++++++++++++++-- + 3 files changed, 61 insertions(+), 5 deletions(-) + +--- systemd-208/rules/99-systemd.rules.in ++++ systemd-208/rules/99-systemd.rules.in 2014-02-05 10:34:17.346235540 +0000 +@@ -7,7 +7,7 @@ + + ACTION=="remove", GOTO="systemd_end" + +-SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*", TAG+="systemd" ++SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty*", TAG+="systemd" + + KERNEL=="vport*", TAG+="systemd" + +--- systemd-208/src/shared/util.c ++++ systemd-208/src/shared/util.c 2014-01-31 11:54:07.222235280 +0000 +@@ -2967,6 +2967,7 @@ int status_vprintf(const char *status, b + struct iovec iovec[6] = {}; + int n = 0; + static bool prev_ephemeral; ++ static int cached_on_tty = -1; + + assert(format); + +@@ -2980,6 +2981,51 @@ int status_vprintf(const char *status, b + if (fd < 0) + return fd; + ++ if (_unlikely_(cached_on_tty < 0)) { ++ cached_on_tty = isatty(fd) > 0; ++ if (cached_on_tty) { ++ const char *e = getenv("TERM"); ++ if (e && (strcmp(e, "dumb") == 0 || strcmp(e, "ibm327x") == 0)) { ++ 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; ++ } ++ } ++ } ++ ++ if (status && !cached_on_tty) { ++ 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; +@@ -3002,8 +3048,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 (cached_on_tty) ++ IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE); ++ else ++ IOVEC_SET_STRING(iovec[n++], "\r"); ++ } + prev_ephemeral = ephemeral; + + if (status) { +@@ -3267,8 +3317,14 @@ 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 (cached_on_tty) { ++ const char *e = getenv("TERM"); ++ if (e && (strcmp(e, "dumb") == 0)) ++ cached_on_tty = 0; ++ } ++ } + + return cached_on_tty; + } +--- systemd-208/src/getty-generator/getty-generator.c ++++ systemd-208/src/getty-generator/getty-generator.c 2014-02-05 10:41:29.502245927 +0000 +@@ -149,9 +149,9 @@ int main(int argc, char *argv[]) { + * only for non-VC terminals. */ + + k = add_serial_getty(tty); ++ free(tty); + + if (k < 0) { +- free(tty); + free(active); + r = EXIT_FAILURE; + goto finish; diff --git a/0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch b/0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch new file mode 100644 index 0000000..312a561 --- /dev/null +++ b/0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch @@ -0,0 +1,25 @@ +From 7e326fb5b2c1a839bbe7f879c7efa2af2ed33420 Mon Sep 17 00:00:00 2001 +From: Lukas Nykryn +Date: Wed, 2 Oct 2013 13:39:49 +0200 +Subject: [PATCH 01/15] acpi-fptd: fix memory leak in acpi_get_boot_usec + +--- + src/shared/acpi-fpdt.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c +index b094f34..a7c83ed 100644 +--- a/src/shared/acpi-fpdt.c ++++ b/src/shared/acpi-fpdt.c +@@ -81,7 +81,7 @@ struct acpi_fpdt_boot { + }; + + int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) { +- char *buf; ++ _cleanup_free_ char *buf; + struct acpi_table_header *tbl; + size_t l; + struct acpi_fpdt_header *rec; +-- +1.8.4 + diff --git a/0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch b/0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch new file mode 100644 index 0000000..2d48b38 --- /dev/null +++ b/0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch @@ -0,0 +1,537 @@ +This seems to be a SUSE specific patch. Here we add the check for unmaintained +disk like devices to be able to flush and maybe shut them down. Also we add the +missing sync() system call for the direct halt/reboot systemctl command. Then we +use the system halt as gfallback if poweroff fails for both the direct poweroff +systemctl command as well as for the systemd-shutdown utility. + +--- + Makefile.am | 2 + Makefile.in | 7 + src/core/shutdown.c | 8 - + src/shared/hdflush.c | 365 ++++++++++++++++++++++++++++++++++++++++++++++ + src/shared/hdflush.h | 25 +++ + src/systemctl/systemctl.c | 17 +- + 6 files changed, 416 insertions(+), 8 deletions(-) + +--- systemd-208/Makefile.am ++++ systemd-208/Makefile.am 2014-01-28 11:06:55.638238060 +0000 +@@ -680,6 +680,8 @@ libsystemd_shared_la_SOURCES = \ + src/shared/strbuf.h \ + src/shared/strxcpyx.c \ + src/shared/strxcpyx.h \ ++ src/shared/hdflush.c \ ++ src/shared/hdflush.h \ + src/shared/conf-parser.c \ + src/shared/conf-parser.h \ + src/shared/log.c \ +--- systemd-208/Makefile.in ++++ systemd-208/Makefile.in 2014-01-28 11:06:33.942246196 +0000 +@@ -1509,7 +1509,7 @@ am_libsystemd_shared_la_OBJECTS = src/sh + src/shared/hashmap.lo src/shared/set.lo src/shared/fdset.lo \ + src/shared/prioq.lo src/shared/sleep-config.lo \ + src/shared/strv.lo src/shared/env-util.lo src/shared/strbuf.lo \ +- src/shared/strxcpyx.lo src/shared/conf-parser.lo \ ++ src/shared/strxcpyx.lo src/shared/hdflush.lo src/shared/conf-parser.lo \ + src/shared/log.lo src/shared/ratelimit.lo \ + src/shared/exit-status.lo src/shared/utf8.lo \ + src/shared/pager.lo src/shared/socket-util.lo \ +@@ -4137,6 +4137,8 @@ libsystemd_shared_la_SOURCES = \ + src/shared/strbuf.h \ + src/shared/strxcpyx.c \ + src/shared/strxcpyx.h \ ++ src/shared/hdflush.c \ ++ src/shared/hdflush.h \ + src/shared/conf-parser.c \ + src/shared/conf-parser.h \ + src/shared/log.c \ +@@ -7073,6 +7075,8 @@ src/shared/strbuf.lo: src/shared/$(am__d + src/shared/$(DEPDIR)/$(am__dirstamp) + src/shared/strxcpyx.lo: src/shared/$(am__dirstamp) \ + src/shared/$(DEPDIR)/$(am__dirstamp) ++src/shared/hdflush.lo: src/shared/$(am__dirstamp) \ ++ src/shared/$(DEPDIR)/$(am__dirstamp) + src/shared/conf-parser.lo: src/shared/$(am__dirstamp) \ + src/shared/$(DEPDIR)/$(am__dirstamp) + src/shared/log.lo: src/shared/$(am__dirstamp) \ +@@ -9236,6 +9240,7 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/strbuf.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/strv.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/strxcpyx.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/hdflush.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/time-dst.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/time-util.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/unit-name.Plo@am__quote@ +--- systemd-208/src/shared/hdflush.c ++++ systemd-208/src/shared/hdflush.c 2014-01-28 10:58:56.490735704 +0000 +@@ -0,0 +1,365 @@ ++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ ++ ++/*** ++ This file is part of systemd. ++ ++ Copyright 2014 Werner Fink ++ ++ systemd is free software; you can redistribute it and/or modify it ++ under the terms of the GNU Lesser General Public License as published by ++ the Free Software Foundation; either version 2.1 of the License, or ++ (at your option) any later version. ++ ++ systemd is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with systemd; If not, see . ++***/ ++ ++/* ++ * Find all disks on the system, list out IDE, unmanaged ATA disks, and ++ * USB sticks flush the cache of those and optional shut them down. ++ */ ++ ++#include ++#include ++#ifdef LIST_DEBUG ++# include ++#endif ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#ifdef WORDS_BIGENDIAN ++# include ++#endif ++ ++/* Used in flush_cache_ext(), compare with */ ++#define IDBYTES 512 ++#define MASK_EXT 0xE000 /* Bit 15 shall be zero, bit 14 shall be one, bit 13 flush cache ext */ ++#define TEST_EXT 0x6000 ++ ++/* Maybe set in list_disks() and used in do_standby_disk() */ ++#define DISK_IS_IDE 0x00000001 ++#define DISK_IS_SATA 0x00000002 ++#define DISK_EXTFLUSH 0x00000004 ++#define DISK_REMOVABLE 0x00000008 ++#define DISK_MANAGED 0x00000010 ++#define DISK_FLUSHONLY 0x00000020 ++ ++struct sysfs { ++ struct udev *udev; ++ struct udev_enumerate *num; ++ struct udev_list_entry *item; ++ char *devnode; ++ size_t size; ++}; ++ ++static int flush_cache_ext(const struct sysfs *sysfs); ++ ++static struct sysfs * open_sysfs(void) ++{ ++ static struct sysfs sysfs; ++ sysfs.udev = udev_new(); ++ if (!sysfs.udev) ++ goto err; ++ sysfs.num = udev_enumerate_new(sysfs.udev); ++ if (!sysfs.num) ++ goto err; ++ if (udev_enumerate_add_match_subsystem(sysfs.num, "block") < 0) ++ goto err; ++ if (udev_enumerate_add_match_sysname(sysfs.num, "sd?") < 0) ++ goto err; ++ if (udev_enumerate_add_match_sysname(sysfs.num, "hd?") < 0) ++ goto err; ++ if (udev_enumerate_scan_devices(sysfs.num) < 0) ++ goto err; ++ sysfs.item = udev_enumerate_get_list_entry(sysfs.num); ++ sysfs.devnode = NULL; ++ sysfs.size = 0; ++ return &sysfs; ++err: ++ if (sysfs.num) ++ udev_unref(sysfs.udev); ++ if (sysfs.udev) ++ udev_unref(sysfs.udev); ++ return NULL; ++} ++ ++static void close_sysfs(struct sysfs *sysfs) ++{ ++ if (sysfs->num) ++ udev_enumerate_unref(sysfs->num); ++ if (sysfs->udev) ++ udev_unref(sysfs->udev); ++ if (sysfs->devnode) ++ free(sysfs->devnode); ++ sysfs->devnode = NULL; ++} ++ ++ ++static char *list_disks(struct sysfs *sysfs, unsigned int* flags) ++{ ++ struct udev_device *device, *parent; ++ struct udev_list_entry *item; ++ const char *devnode; ++ char path[PATH_MAX]; ++ ++ device = NULL; ++next: ++ if (device) ++ udev_device_unref(device); ++ if (sysfs->devnode) ++ free(sysfs->devnode); ++ sysfs->devnode = NULL; ++ sysfs->size = 0; ++ *flags = 0; ++ ++ if (!sysfs->item) ++ goto empty; ++ item = sysfs->item; ++ sysfs->item = udev_list_entry_get_next(sysfs->item); ++ ++ if (!(device = udev_device_new_from_syspath(sysfs->udev, udev_list_entry_get_name(item)))) ++ goto out; ++ if (!(devnode = udev_device_get_devnode(device))) ++ goto out; ++ if (!(sysfs->devnode = strdup(devnode))) ++ goto out; ++ ++ path[0] = '\0'; ++ parent = udev_device_get_parent(device); ++ if (parent) { ++ const char *sysname, *devpath; ++ struct udev_device *disk; ++ const char *value; ++ int ret; ++ ++ sysname = udev_device_get_sysname(parent); ++ devpath = udev_device_get_devpath(parent); ++ ++ strcpy(path, "/sys"); ++ strcat(path, devpath); ++ strcat(path, "/scsi_disk/"); ++ strcat(path, sysname); ++ ++ disk = udev_device_new_from_syspath(sysfs->udev, path); ++ if (disk) { ++ value = udev_device_get_sysattr_value(disk, "manage_start_stop"); ++ udev_device_unref(disk); ++ ++ if (value && *value != '0') { ++ *flags = DISK_MANAGED; ++#ifndef LIST_DEBUG ++ goto next; /* Device managed by the kernel */ ++#endif ++ } ++ } ++ ++ value = udev_device_get_sysattr_value(device, "size"); ++ if (value && *value) ++ sysfs->size = (size_t)atoll(value); ++ ++ value = udev_device_get_sysattr_value(device, "removable"); ++ if (value && *value != '0') { ++ *flags |= DISK_REMOVABLE; ++ ++ if ((ret = flush_cache_ext(sysfs))) { ++ if (ret < 0) ++ goto next; ++ *flags |= DISK_EXTFLUSH; ++ } ++ goto out; /* Removable disk like USB stick */ ++ } ++ ++ value = udev_device_get_sysname(device); ++ if (value && *value == 'h') { ++ *flags |= DISK_IS_IDE; ++ ++ if ((ret = flush_cache_ext(sysfs))) { ++ if (ret < 0) ++ goto next; ++ *flags |= DISK_EXTFLUSH; ++ } ++ goto out; /* IDE disk found */ ++ } ++ ++ value = udev_device_get_sysattr_value(parent, "vendor"); ++ if (value && strncmp(value, "ATA", 3) == 0) { ++ *flags |= (DISK_IS_IDE|DISK_IS_SATA); ++ ++ if ((ret = flush_cache_ext(sysfs))) { ++ if (ret < 0) ++ goto next; ++ *flags |= DISK_EXTFLUSH; ++ } ++ goto out; /* SATA disk to shutdown */ ++ } ++ goto next; ++ } ++out: ++ udev_device_unref(device); ++empty: ++ return sysfs->devnode; ++} ++#ifndef LIST_DEBUG ++/* ++ * Check IDE/(S)ATA hard disk identity for ++ * the FLUSH CACHE EXT bit set. ++ */ ++static int flush_cache_ext(const struct sysfs *sysfs) ++{ ++#ifndef WIN_IDENTIFY ++#define WIN_IDENTIFY 0xEC ++#endif ++ unsigned char args[4+IDBYTES]; ++ unsigned short *id = (unsigned short*)(&args[4]); ++ int fd = -1, ret = 0; ++ ++ if (sysfs->size < (1<<28)) ++ goto out; /* small disk */ ++ ++ if ((fd = open(sysfs->devnode, O_RDONLY|O_NONBLOCK|O_CLOEXEC)) < 0) ++ goto out; ++ ++ memset(&args[0], 0, sizeof(args)); ++ args[0] = WIN_IDENTIFY; ++ args[3] = 1; ++ if (ioctl(fd, HDIO_DRIVE_CMD, &args)) ++ goto out; ++#ifdef WORDS_BIGENDIAN ++# if 0 ++ { ++ const unsigned short *end = id + IDBYTES/2; ++ const unsigned short *from = id; ++ unsigned short *to = id; ++ ++ while (from < end) ++ *to++ = bswap_16(*from++); ++ } ++# else ++ id[83] = bswap_16(id[83]); ++# endif ++#endif ++ if ((id[83] & MASK_EXT) == TEST_EXT) ++ ret = 1; ++out: ++ if (fd >= 0) ++ close(fd); ++ return ret; ++} ++ ++/* ++ * Put an IDE/SCSI/SATA disk in standby mode. ++ * Code stolen from hdparm.c ++ */ ++static int do_standby_disk(struct sysfs *sysfs, unsigned int flags) ++{ ++#ifndef WIN_STANDBYNOW1 ++#define WIN_STANDBYNOW1 0xE0 ++#endif ++#ifndef WIN_STANDBYNOW2 ++#define WIN_STANDBYNOW2 0x94 ++#endif ++#ifndef WIN_FLUSH_CACHE_EXT ++#define WIN_FLUSH_CACHE_EXT 0xEA ++#endif ++#ifndef WIN_FLUSH_CACHE ++#define WIN_FLUSH_CACHE 0xE7 ++#endif ++ unsigned char flush1[4] = {WIN_FLUSH_CACHE_EXT,0,0,0}; ++ unsigned char flush2[4] = {WIN_FLUSH_CACHE,0,0,0}; ++ unsigned char stdby1[4] = {WIN_STANDBYNOW1,0,0,0}; ++ unsigned char stdby2[4] = {WIN_STANDBYNOW2,0,0,0}; ++ int fd, ret; ++ ++ if ((fd = open(sysfs->devnode, O_RDWR|O_NONBLOCK|O_CLOEXEC)) < 0) ++ return -1; ++ ++ switch (flags & DISK_EXTFLUSH) { ++ case DISK_EXTFLUSH: ++ if ((ret = ioctl(fd, HDIO_DRIVE_CMD, &flush1)) == 0) ++ break; ++ /* Extend flush rejected, try standard flush */ ++ default: ++ ret = ioctl(fd, HDIO_DRIVE_CMD, &flush2) && ++ ioctl(fd, BLKFLSBUF); ++ break; ++ } ++ ++ if ((flags & DISK_FLUSHONLY) == 0x0) { ++ ret = ioctl(fd, HDIO_DRIVE_CMD, &stdby1) && ++ ioctl(fd, HDIO_DRIVE_CMD, &stdby2); ++ } ++ ++ close(fd); ++ ++ if (ret) ++ return -1; ++ return 0; ++} ++#endif ++#ifdef LIST_DEBUG ++int main() ++{ ++ char *disk; ++ unsigned int flags; ++ struct sysfs *sysfs = open_sysfs(); ++ if (!sysfs) ++ goto err; ++ while ((disk = list_disks(sysfs, &flags))) ++ fprintf(stdout, "%s\n", sysfs->devnode); ++ close_sysfs(sysfs); ++err: ++ return 0; ++} ++#else ++/* ++ * List all disks and put them in standby mode. ++ * This has the side-effect of flushing the writecache, ++ * which is exactly what we want on poweroff. ++ */ ++void hddown(void) ++{ ++ struct sysfs *sysfs; ++ unsigned int flags; ++ char *disk; ++ ++ if (!(sysfs = open_sysfs())) ++ return; ++ ++ while ((disk = list_disks(sysfs, &flags))) ++ do_standby_disk(sysfs, flags); ++ ++ close_sysfs(sysfs); ++} ++ ++/* ++ * List all disks and cause them to flush their buffers. ++ */ ++void hdflush(void) ++{ ++ struct sysfs *sysfs; ++ unsigned int flags; ++ char *disk; ++ ++ if (!(sysfs = open_sysfs())) ++ return; ++ ++ while ((disk = list_disks(sysfs, &flags))) ++ do_standby_disk(sysfs, (flags|DISK_FLUSHONLY)); ++ ++ close_sysfs(sysfs); ++} ++#endif +--- systemd-208/src/shared/hdflush.h ++++ systemd-208/src/shared/hdflush.h 2014-01-28 11:00:08.286235696 +0000 +@@ -0,0 +1,25 @@ ++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ ++ ++#pragma once ++ ++/*** ++ This file is part of systemd. ++ ++ Copyright 2014 Werner Fink ++ ++ systemd is free software; you can redistribute it and/or modify it ++ under the terms of the GNU Lesser General Public License as published by ++ the Free Software Foundation; either version 2.1 of the License, or ++ (at your option) any later version. ++ ++ systemd is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with systemd; If not, see . ++***/ ++ ++void hdflush(void); ++void hddown(void); +--- systemd-208/src/core/shutdown.c ++++ systemd-208/src/core/shutdown.c 2014-01-28 11:14:15.722235591 +0000 +@@ -40,6 +40,7 @@ + #include "missing.h" + #include "log.h" + #include "fileio.h" ++#include "hdflush.h" + #include "umount.h" + #include "util.h" + #include "mkdir.h" +@@ -302,8 +303,13 @@ int main(int argc, char *argv[]) { + * on reboot(), but the file systems need to be synce'd + * explicitly in advance. So let's do this here, but not + * needlessly slow down containers. */ +- if (!in_container) ++ if (!in_container) { + sync(); ++ if (cmd == RB_POWER_OFF || cmd == RB_HALT_SYSTEM) ++ hddown(); ++ else ++ hdflush(); ++ } + + if (cmd == LINUX_REBOOT_CMD_KEXEC) { + +--- systemd-208/src/systemctl/systemctl.c ++++ systemd-208/src/systemctl/systemctl.c 2014-01-28 11:31:27.150735613 +0000 +@@ -87,6 +87,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; ++static bool arg_no_sync = false; + static bool arg_show_types = false; + static bool arg_ignore_inhibitors = false; + static bool arg_dry = false; +@@ -5272,6 +5273,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' }, ++ { "no-sync", no_argument, NULL, 'n' }, + { "no-wtmp", no_argument, NULL, 'd' }, + { "no-wall", no_argument, NULL, ARG_NO_WALL }, + { NULL, 0, NULL, 0 } +@@ -5324,10 +5326,13 @@ static int halt_parse_argv(int argc, cha + + case 'i': + case 'h': +- case 'n': + /* Compatibility nops */ + break; + ++ case 'n': ++ arg_no_sync = true; ++ break; ++ + case '?': + return -EINVAL; + +@@ -5981,14 +5986,14 @@ static int halt_now(enum action a) { + + switch (a) { + +- case ACTION_HALT: +- log_info("Halting."); +- reboot(RB_HALT_SYSTEM); +- return -errno; +- + case ACTION_POWEROFF: + log_info("Powering off."); + reboot(RB_POWER_OFF); ++ /* Fall through */ ++ ++ case ACTION_HALT: ++ log_info("Halting."); ++ reboot(RB_HALT_SYSTEM); + return -errno; + + case ACTION_REBOOT: diff --git a/0001-analyze-set-text-on-side-with-most-space.patch b/0001-analyze-set-text-on-side-with-most-space.patch new file mode 100644 index 0000000..6268160 --- /dev/null +++ b/0001-analyze-set-text-on-side-with-most-space.patch @@ -0,0 +1,90 @@ +From 95168f7d55181475946ad93db30255c4d709df03 Mon Sep 17 00:00:00 2001 +From: Thomas Hindoe Paaboel Andersen +Date: Fri, 01 Nov 2013 21:57:47 +0000 +Subject: analyze: plot: place the text on the side with most space + +Set the width of the svg to always fit the longest string +while taking its starting position into consideration. + +Place the text on the right while the starting point is +in the first half of the screen. After that we put it on +the left to save the svg from being wider that it has to. +--- +diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c +index 6bfe13d..8730723 100644 +--- a/src/analyze/systemd-analyze.c ++++ b/src/analyze/systemd-analyze.c +@@ -509,7 +509,7 @@ static int analyze_plot(sd_bus *bus) { + m++; + + for (u = times; u < times + n; u++) { +- double len; ++ double text_start, text_width; + + if (u->ixt < boot->userspace_time || + u->ixt > boot->finish_time) { +@@ -517,10 +517,14 @@ static int analyze_plot(sd_bus *bus) { + u->name = NULL; + continue; + } +- len = ((boot->firmware_time + u->ixt) * SCALE_X) +- + (10.0 * strlen(u->name)); +- if (len > width) +- width = len; ++ ++ /* If the text cannot fit on the left side then ++ * increase the svg width so it fits on the right. ++ * TODO: calculate the text width more accurately */ ++ text_width = 8.0 * strlen(u->name); ++ text_start = (boot->firmware_time + u->ixt) * SCALE_X; ++ if (text_width > text_start && text_width + text_start > width) ++ width = text_width + text_start; + + if (u->iet > u->ixt && u->iet <= boot->finish_time + && u->aet == 0 && u->axt == 0) +@@ -608,7 +612,7 @@ static int analyze_plot(sd_bus *bus) { + svg_bar("active", boot->userspace_time, boot->finish_time, y); + svg_bar("generators", boot->generators_start_time, boot->generators_finish_time, y); + svg_bar("unitsload", boot->unitsload_start_time, boot->unitsload_finish_time, y); +- svg_text("left", boot->userspace_time, y, "systemd"); ++ svg_text(true, boot->userspace_time, y, "systemd"); + y++; + + for (u = times; u < times + n; u++) { +@@ -622,7 +626,8 @@ static int analyze_plot(sd_bus *bus) { + svg_bar("active", u->aet, u->axt, y); + svg_bar("deactivating", u->axt, u->iet, y); + +- b = u->ixt * SCALE_X > width * 2 / 3; ++ /* place the text on the left if we have passed the half of the svg width */ ++ b = u->ixt * SCALE_X < width / 2; + if (u->time) + svg_text(b, u->ixt, y, "%s (%s)", + u->name, format_timespan(ts, sizeof(ts), u->time, USEC_PER_MSEC)); +@@ -634,19 +639,19 @@ static int analyze_plot(sd_bus *bus) { + /* Legend */ + y++; + svg_bar("activating", 0, 300000, y); +- svg_text("right", 400000, y, "Activating"); ++ svg_text(true, 400000, y, "Activating"); + y++; + svg_bar("active", 0, 300000, y); +- svg_text("right", 400000, y, "Active"); ++ svg_text(true, 400000, y, "Active"); + y++; + svg_bar("deactivating", 0, 300000, y); +- svg_text("right", 400000, y, "Deactivating"); ++ svg_text(true, 400000, y, "Deactivating"); + y++; + svg_bar("generators", 0, 300000, y); +- svg_text("right", 400000, y, "Generators"); ++ svg_text(true, 400000, y, "Generators"); + y++; + svg_bar("unitsload", 0, 300000, y); +- svg_text("right", 400000, y, "Loading unit files"); ++ svg_text(true, 400000, y, "Loading unit files"); + y++; + + svg("\n\n"); +-- +cgit v0.9.0.2-2-gbebe diff --git a/0001-analyze-set-white-background.patch b/0001-analyze-set-white-background.patch new file mode 100644 index 0000000..8906284 --- /dev/null +++ b/0001-analyze-set-white-background.patch @@ -0,0 +1,32 @@ +From 418e37506e6a419a808a82081ca1616caa03a206 Mon Sep 17 00:00:00 2001 +From: Thomas Hindoe Paaboel Andersen +Date: Mon, 21 Oct 2013 19:29:23 +0000 +Subject: analyze: set white backgound + +In programs like eog and gimp the transparant background did not +look very good. + +https://bugs.freedesktop.org/show_bug.cgi?id=70720 +--- +diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c +index 26769d6..0cc4de7 100644 +--- a/src/analyze/systemd-analyze.c ++++ b/src/analyze/systemd-analyze.c +@@ -507,6 +507,7 @@ static int analyze_plot(DBusConnection *bus) { + /* style sheet */ + svg("\n \n\n\n"); + ++ svg("\n"); + svg("%s", pretty_times); + svg("%s %s (%s %s) %s", + isempty(osname) ? "Linux" : osname, +-- +cgit v0.9.0.2-2-gbebe diff --git a/0001-cgroup-add-the-missing-setting-of-variable-s-value.patch b/0001-cgroup-add-the-missing-setting-of-variable-s-value.patch deleted file mode 100644 index 4883bae..0000000 --- a/0001-cgroup-add-the-missing-setting-of-variable-s-value.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 8d7b5ca0a6cdab3e400ef084fa8a05d581d59b55 Mon Sep 17 00:00:00 2001 -From: Gao feng -Date: Fri, 13 Sep 2013 11:17:05 +0800 -Subject: [PATCH 1/7] cgroup: add the missing setting of variable's value - -set the value of variable "r" to the return value -of cg_set_attribute. ---- - src/core/cgroup.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/core/cgroup.c b/src/core/cgroup.c -index 3eeb475..fba0b2f 100644 ---- a/src/core/cgroup.c -+++ b/src/core/cgroup.c -@@ -264,7 +264,7 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha - log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r)); - - sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit); -- cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); -+ r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); - if (r < 0) - log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r)); - } --- -1.8.1.4 - diff --git a/0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch b/0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch new file mode 100644 index 0000000..3729198 --- /dev/null +++ b/0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch @@ -0,0 +1,225 @@ +From 6fa7e1a944a2dbb89e794ad0f9da5d0fda5dc4a9 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 29 Jan 2014 13:38:55 +0100 +Subject: [PATCH 1/3] core: introduce new KillMode=mixed which sends SIGTERM + only to the main process, but SIGKILL to all daemon processes + +This should fix some race with terminating systemd --user, where the +system systemd instance might race against the user systemd instance +when sending SIGTERM. +--- + man/systemd.kill.xml | 77 +++++++++++++++++++++++++++++++++----------------- + src/core/kill.c | 1 + + src/core/kill.h | 1 + + src/core/unit.c | 3 +- + units/user@.service.in | 1 + + 5 files changed, 56 insertions(+), 27 deletions(-) + +diff --git a/man/systemd.kill.xml b/man/systemd.kill.xml +index 1b10fba..a4009aa 100644 +--- a/man/systemd.kill.xml ++++ b/man/systemd.kill.xml +@@ -44,39 +44,44 @@ + + + systemd.kill +- Kill environment configuration ++ Process killing procedure ++ configuration + + + + service.service, + socket.socket, + mount.mount, +- swap.swap ++ swap.swap, ++ scope.scope + + + + Description + + Unit configuration files for services, sockets, +- mount points and swap devices share a subset of +- configuration options which define the process killing +- parameters of spawned processes. ++ mount points, swap devices and scopes share a subset ++ of configuration options which define the ++ killing procedure of processes belonging to the unit. + + This man page lists the configuration options +- shared by these four unit types. See ++ shared by these five unit types. See + systemd.unit5 +- for the common options of all unit configuration +- files, and ++ for the common options shared by all unit ++ configuration files, and + systemd.service5, + systemd.socket5, +- systemd.swap5 +- and ++ systemd.swap5, + systemd.mount5 +- for more information on the specific unit +- configuration files. The execution specific ++ and ++ systemd.scope5 ++ for more information on the configuration file options ++ specific to each unit type. ++ ++ The kill procedure + configuration options are configured in the [Service], +- [Socket], [Mount], or [Swap] section, depending on the unit +- type. ++ [Socket], [Mount] or [Swap] section, depending on the ++ unit type. + + + +@@ -87,32 +92,40 @@ + + KillMode= + Specifies how +- processes of this service shall be ++ processes of this unit shall be + killed. One of + , + , ++ , + . + + If set to + , all + remaining processes in the control +- group of this unit will be terminated +- on unit stop (for services: after the ++ group of this unit will be killed on ++ unit stop (for services: after the + stop command is executed, as + configured with + ExecStop=). If set + to , only the + main process itself is killed. If set +- to , no process is ++ to the ++ SIGTERM signal ++ (see below) is sent to the main ++ process while the subsequent ++ SIGKILL signal ++ (see below) is sent to all remaining ++ processes of the unit's control ++ group. If set to ++ , no process is + killed. In this case only the stop +- command will be executed on unit +- stop, but no process be killed ++ command will be executed on unit stop, ++ but no process be killed + otherwise. Processes remaining alive + after stop are left in their control + group and the control group continues + to exist after stop unless it is +- empty. Defaults to +- . ++ empty. + + Processes will first be + terminated via +@@ -133,14 +146,24 @@ + option). See + kill2 + for more +- information. ++ information. ++ ++ Defaults to ++ . + + + + KillSignal= + Specifies which signal +- to use when killing a +- service. Defaults to SIGTERM. ++ to use when killing a service. This ++ controls the signal that is sent as ++ first step of shutting down a unit ++ (see above), and is usually followed ++ by SIGKILL (see ++ above and below). For a list of valid ++ signals, see ++ signal7. Defaults ++ to SIGTERM. + + + +@@ -184,7 +207,9 @@ + systemd.swap5, + systemd.mount5, + systemd.exec5, +- systemd.directives7 ++ systemd.directives7, ++ kill2, ++ signal7 + + + +diff --git a/src/core/kill.c b/src/core/kill.c +index ea947c2..4271346 100644 +--- a/src/core/kill.c ++++ b/src/core/kill.c +@@ -52,6 +52,7 @@ void kill_context_dump(KillContext *c, FILE *f, const char *prefix) { + static const char* const kill_mode_table[_KILL_MODE_MAX] = { + [KILL_CONTROL_GROUP] = "control-group", + [KILL_PROCESS] = "process", ++ [KILL_MIXED] = "mixed", + [KILL_NONE] = "none" + }; + +diff --git a/src/core/kill.h b/src/core/kill.h +index 41773f0..d5f125f 100644 +--- a/src/core/kill.h ++++ b/src/core/kill.h +@@ -32,6 +32,7 @@ typedef enum KillMode { + /* The kill mode is a property of a unit. */ + KILL_CONTROL_GROUP = 0, + KILL_PROCESS, ++ KILL_MIXED, + KILL_NONE, + _KILL_MODE_MAX, + _KILL_MODE_INVALID = -1 +diff --git a/src/core/unit.c b/src/core/unit.c +index 4b97710..0b10e57 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -3007,7 +3007,7 @@ int unit_kill_context( + } + } + +- if (c->kill_mode == KILL_CONTROL_GROUP && u->cgroup_path) { ++ if ((c->kill_mode == KILL_CONTROL_GROUP || (c->kill_mode == KILL_MIXED && sigkill)) && u->cgroup_path) { + _cleanup_set_free_ Set *pid_set = NULL; + + /* Exclude the main/control pids from being killed via the cgroup */ +@@ -3021,6 +3021,7 @@ int unit_kill_context( + log_warning_unit(u->id, "Failed to kill control group: %s", strerror(-r)); + } else if (r > 0) { + wait_for_exit = true; ++ + if (c->send_sighup) { + set_free(pid_set); + +diff --git a/units/user@.service.in b/units/user@.service.in +index 3718a57..3bb8696 100644 +--- a/units/user@.service.in ++++ b/units/user@.service.in +@@ -17,3 +17,4 @@ Environment=SHELL=%s + ExecStart=-@rootlibexecdir@/systemd --user + Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%I/dbus/user_bus_socket + Slice=user-%i.slice ++KillMode=mixed +-- +1.8.4 + diff --git a/0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch b/0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch new file mode 100644 index 0000000..40479ea --- /dev/null +++ b/0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch @@ -0,0 +1,329 @@ +From d420282b28f50720e233ccb1c02547c562195653 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 26 Nov 2013 01:39:53 +0100 +Subject: [PATCH] core: replace OnFailureIsolate= setting by a more generic + OnFailureJobMode= setting and make use of it where applicable + +--- + man/systemd.unit.xml | 40 +++++++++++++++++++++++++---------- + src/core/dbus-unit.c | 3 ++- + src/core/job.h | 3 +-- + src/core/load-fragment-gperf.gperf.m4 | 3 ++- + src/core/load-fragment.c | 31 +++++++++++++++++++++++++++ + src/core/load-fragment.h | 2 ++ + src/core/unit.c | 11 +++++----- + src/core/unit.h | 4 ++-- + units/initrd-cleanup.service.in | 1 + + units/initrd-fs.target | 2 +- + units/initrd-parse-etc.service.in | 1 + + units/initrd-root-fs.target | 2 +- + units/initrd-switch-root.service.in | 1 + + units/initrd.target | 2 +- + units/local-fs.target | 2 +- + 15 files changed, 82 insertions(+), 26 deletions(-) + +Index: systemd-208/man/systemd.unit.xml +=================================================================== +--- systemd-208.orig/man/systemd.unit.xml ++++ systemd-208/man/systemd.unit.xml +@@ -669,19 +669,37 @@ + + + +- OnFailureIsolate= ++ OnFailureJobMode= + +- Takes a boolean +- argument. If , the +- unit listed in ++ Takes a value of ++ fail, ++ replace, ++ replace-irreversibly ++ or ++ isolate. Defaults ++ to ++ replace. Specifies ++ how the units listed in + OnFailure= will be +- enqueued in isolation mode, i.e. all +- units that are not its dependency will +- be stopped. If this is set, only a ++ enqueued. If set to ++ fail and ++ contradicting jobs are already queued, ++ cause the activation to fail. If set ++ to replace and ++ contradicting jobs area already ++ queued, replace ++ those. replace-irreversibly ++ is similar to ++ replace, however, ++ creates jobs that cannot be reversed ++ unless they finished or are explicitly ++ canceled. isolate ++ may be used to terminate all other ++ units but the specified one. If ++ this is set to ++ isolate, only a + single unit may be listed in +- OnFailure=. Defaults +- to +- . ++ OnFailure=.. + + + +Index: systemd-208/src/core/dbus-unit.c +=================================================================== +--- systemd-208.orig/src/core/dbus-unit.c ++++ systemd-208/src/core/dbus-unit.c +@@ -133,6 +133,7 @@ static int bus_unit_append_description(D + } + + static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_unit_append_load_state, unit_load_state, UnitLoadState); ++static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_unit_append_job_mode, job_mode, JobMode); + + static int bus_unit_append_active_state(DBusMessageIter *i, const char *property, void *data) { + Unit *u = data; +@@ -1079,7 +1080,7 @@ const BusProperty bus_unit_properties[] + { "RefuseManualStop", bus_property_append_bool, "b", offsetof(Unit, refuse_manual_stop) }, + { "AllowIsolate", bus_property_append_bool, "b", offsetof(Unit, allow_isolate) }, + { "DefaultDependencies", bus_property_append_bool, "b", offsetof(Unit, default_dependencies) }, +- { "OnFailureIsolate", bus_property_append_bool, "b", offsetof(Unit, on_failure_isolate) }, ++ { "OnFailureJobMode", bus_unit_append_job_mode, "s", offsetof(Unit, on_failure_job_mode) }, + { "IgnoreOnIsolate", bus_property_append_bool, "b", offsetof(Unit, ignore_on_isolate) }, + { "IgnoreOnSnapshot", bus_property_append_bool, "b", offsetof(Unit, ignore_on_snapshot) }, + { "NeedDaemonReload", bus_unit_append_need_daemon_reload, "b", 0 }, +Index: systemd-208/src/core/job.h +=================================================================== +--- systemd-208.orig/src/core/job.h ++++ systemd-208/src/core/job.h +@@ -83,7 +83,7 @@ enum JobState { + enum JobMode { + JOB_FAIL, /* Fail if a conflicting job is already queued */ + JOB_REPLACE, /* Replace an existing conflicting job */ +- JOB_REPLACE_IRREVERSIBLY, /* Like JOB_REPLACE + produce irreversible jobs */ ++ JOB_REPLACE_IRREVERSIBLY,/* Like JOB_REPLACE + produce irreversible jobs */ + JOB_ISOLATE, /* Start a unit, and stop all others */ + JOB_IGNORE_DEPENDENCIES, /* Ignore both requirement and ordering dependencies */ + JOB_IGNORE_REQUIREMENTS, /* Ignore requirement dependencies */ +Index: systemd-208/src/core/load-fragment-gperf.gperf.m4 +=================================================================== +--- systemd-208.orig/src/core/load-fragment-gperf.gperf.m4 ++++ systemd-208/src/core/load-fragment-gperf.gperf.m4 +@@ -122,7 +122,8 @@ Unit.RefuseManualStart, config_ + Unit.RefuseManualStop, config_parse_bool, 0, offsetof(Unit, refuse_manual_stop) + Unit.AllowIsolate, config_parse_bool, 0, offsetof(Unit, allow_isolate) + Unit.DefaultDependencies, config_parse_bool, 0, offsetof(Unit, default_dependencies) +-Unit.OnFailureIsolate, config_parse_bool, 0, offsetof(Unit, on_failure_isolate) ++Unit.OnFailureJobMode, config_parse_job_mode, 0, offsetof(Unit, on_failure_job_mode) ++Unit.OnFailureIsolate, config_parse_job_mode_isolate, 0, offsetof(Unit, on_failure_job_mode) + Unit.IgnoreOnIsolate, config_parse_bool, 0, offsetof(Unit, ignore_on_isolate) + Unit.IgnoreOnSnapshot, config_parse_bool, 0, offsetof(Unit, ignore_on_snapshot) + Unit.JobTimeoutSec, config_parse_sec, 0, offsetof(Unit, job_timeout) +Index: systemd-208/src/core/load-fragment.c +=================================================================== +--- systemd-208.orig/src/core/load-fragment.c ++++ systemd-208/src/core/load-fragment.c +@@ -2314,6 +2314,36 @@ int config_parse_blockio_bandwidth( + return 0; + } + ++DEFINE_CONFIG_PARSE_ENUM(config_parse_job_mode, job_mode, JobMode, "Failed to parse job mode"); ++ ++int config_parse_job_mode_isolate( ++ const char *unit, ++ const char *filename, ++ unsigned line, ++ const char *section, ++ const char *lvalue, ++ int ltype, ++ const char *rvalue, ++ void *data, ++ void *userdata) { ++ ++ JobMode *m = data; ++ int r; ++ ++ assert(filename); ++ assert(lvalue); ++ assert(rvalue); ++ ++ r = parse_boolean(rvalue); ++ if (r < 0) { ++ log_syntax(unit, LOG_ERR, filename, line, EINVAL, "Failed to parse boolean, ignoring: %s", rvalue); ++ return 0; ++ } ++ ++ *m = r ? JOB_ISOLATE : JOB_REPLACE; ++ return 0; ++} ++ + #define FOLLOW_MAX 8 + + static int open_follow(char **filename, FILE **_f, Set *names, char **_final) { +Index: systemd-208/src/core/load-fragment.h +=================================================================== +--- systemd-208.orig/src/core/load-fragment.h ++++ systemd-208/src/core/load-fragment.h +@@ -83,6 +83,8 @@ int config_parse_device_allow(const char + int config_parse_blockio_weight(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); + int config_parse_blockio_device_weight(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); + int config_parse_blockio_bandwidth(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); ++int config_parse_job_mode(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); ++int config_parse_job_mode_isolate(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); + + /* gperf prototypes */ + const struct ConfigPerfItem* load_fragment_gperf_lookup(const char *key, unsigned length); +Index: systemd-208/src/core/unit.c +=================================================================== +--- systemd-208.orig/src/core/unit.c ++++ systemd-208/src/core/unit.c +@@ -85,6 +85,7 @@ Unit *unit_new(Manager *m, size_t size) + u->deserialized_job = _JOB_TYPE_INVALID; + u->default_dependencies = true; + u->unit_file_state = _UNIT_FILE_STATE_INVALID; ++ u->on_failure_job_mode = JOB_REPLACE; + + return u; + } +@@ -807,14 +808,14 @@ void unit_dump(Unit *u, FILE *f, const c + "%s\tRefuseManualStart: %s\n" + "%s\tRefuseManualStop: %s\n" + "%s\tDefaultDependencies: %s\n" +- "%s\tOnFailureIsolate: %s\n" ++ "%s\tOnFailureJobMode: %s\n" + "%s\tIgnoreOnIsolate: %s\n" + "%s\tIgnoreOnSnapshot: %s\n", + prefix, yes_no(u->stop_when_unneeded), + prefix, yes_no(u->refuse_manual_start), + prefix, yes_no(u->refuse_manual_stop), + prefix, yes_no(u->default_dependencies), +- prefix, yes_no(u->on_failure_isolate), ++ prefix, job_mode_to_string(u->on_failure_job_mode), + prefix, yes_no(u->ignore_on_isolate), + prefix, yes_no(u->ignore_on_snapshot)); + +@@ -985,11 +986,11 @@ int unit_load(Unit *u) { + if (r < 0) + goto fail; + +- if (u->on_failure_isolate && ++ if (u->on_failure_job_mode == JOB_ISOLATE && + set_size(u->dependencies[UNIT_ON_FAILURE]) > 1) { + + log_error_unit(u->id, +- "More than one OnFailure= dependencies specified for %s but OnFailureIsolate= enabled. Refusing.", u->id); ++ "More than one OnFailure= dependencies specified for %s but OnFailureJobMode=isolate set. Refusing.", u->id); + + r = -EINVAL; + goto fail; +@@ -1394,7 +1395,7 @@ void unit_start_on_failure(Unit *u) { + SET_FOREACH(other, u->dependencies[UNIT_ON_FAILURE], i) { + int r; + +- r = manager_add_job(u->manager, JOB_START, other, u->on_failure_isolate ? JOB_ISOLATE : JOB_REPLACE, true, NULL, NULL); ++ r = manager_add_job(u->manager, JOB_START, other, u->on_failure_job_mode, true, NULL, NULL); + if (r < 0) + log_error_unit(u->id, "Failed to enqueue OnFailure= job: %s", strerror(-r)); + } +Index: systemd-208/src/core/unit.h +=================================================================== +--- systemd-208.orig/src/core/unit.h ++++ systemd-208/src/core/unit.h +@@ -228,8 +228,8 @@ struct Unit { + /* Allow isolation requests */ + bool allow_isolate; + +- /* Isolate OnFailure unit */ +- bool on_failure_isolate; ++ /* How to start OnFailure units */ ++ JobMode on_failure_job_mode; + + /* Ignore this unit when isolating */ + bool ignore_on_isolate; +Index: systemd-208/units/initrd-cleanup.service.in +=================================================================== +--- systemd-208.orig/units/initrd-cleanup.service.in ++++ systemd-208/units/initrd-cleanup.service.in +@@ -10,6 +10,7 @@ Description=Cleaning Up and Shutting Dow + DefaultDependencies=no + ConditionPathExists=/etc/initrd-release + OnFailure=emergency.target ++OnFailureJobMode=replace-irreversibly + After=initrd-root-fs.target initrd-fs.target initrd.target + + [Service] +Index: systemd-208/units/initrd-fs.target +=================================================================== +--- systemd-208.orig/units/initrd-fs.target ++++ systemd-208/units/initrd-fs.target +@@ -9,7 +9,7 @@ + Description=Initrd File Systems + Documentation=man:systemd.special(7) + OnFailure=emergency.target +-OnFailureIsolate=yes ++OnFailureJobMode=replace-irreversibly + ConditionPathExists=/etc/initrd-release + After=initrd-parse-etc.service + DefaultDependencies=no +Index: systemd-208/units/initrd-parse-etc.service.in +=================================================================== +--- systemd-208.orig/units/initrd-parse-etc.service.in ++++ systemd-208/units/initrd-parse-etc.service.in +@@ -11,6 +11,7 @@ DefaultDependencies=no + Requires=initrd-root-fs.target + After=initrd-root-fs.target + OnFailure=emergency.target ++OnFailureJobMode=replace-irreversibly + ConditionPathExists=/etc/initrd-release + + [Service] +Index: systemd-208/units/initrd-root-fs.target +=================================================================== +--- systemd-208.orig/units/initrd-root-fs.target ++++ systemd-208/units/initrd-root-fs.target +@@ -10,6 +10,6 @@ Description=Initrd Root File System + Documentation=man:systemd.special(7) + ConditionPathExists=/etc/initrd-release + OnFailure=emergency.target +-OnFailureIsolate=yes ++OnFailureJobMode=replace-irreversibly + DefaultDependencies=no + Conflicts=shutdown.target +Index: systemd-208/units/initrd-switch-root.service.in +=================================================================== +--- systemd-208.orig/units/initrd-switch-root.service.in ++++ systemd-208/units/initrd-switch-root.service.in +@@ -10,6 +10,7 @@ Description=Switch Root + DefaultDependencies=no + ConditionPathExists=/etc/initrd-release + OnFailure=emergency.target ++OnFailureJobMode=replace-irreversibly + AllowIsolate=yes + + [Service] +Index: systemd-208/units/initrd.target +=================================================================== +--- systemd-208.orig/units/initrd.target ++++ systemd-208/units/initrd.target +@@ -9,7 +9,7 @@ + Description=Initrd Default Target + Documentation=man:systemd.special(7) + OnFailure=emergency.target +-OnFailureIsolate=yes ++OnFailureJobMode=replace-irreversibly + ConditionPathExists=/etc/initrd-release + Requires=basic.target + Wants=initrd-root-fs.target initrd-fs.target initrd-parse-etc.service +Index: systemd-208/units/local-fs.target +=================================================================== +--- systemd-208.orig/units/local-fs.target ++++ systemd-208/units/local-fs.target +@@ -12,4 +12,4 @@ After=local-fs-pre.target + DefaultDependencies=no + Conflicts=shutdown.target + OnFailure=emergency.target +-OnFailureIsolate=no ++OnFailureJobMode=replace-irreversibly diff --git a/0001-core-unify-the-way-we-denote-serialization-attribute.patch b/0001-core-unify-the-way-we-denote-serialization-attribute.patch new file mode 100644 index 0000000..e33e45d --- /dev/null +++ b/0001-core-unify-the-way-we-denote-serialization-attribute.patch @@ -0,0 +1,40 @@ +From 8d1a28020409ee4afea6ef8c1c4d3522a209284e Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 9 Oct 2013 00:13:55 +0200 +Subject: [PATCH] core: unify the way we denote serialization attributes + +--- + src/core/service.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/core/service.c b/src/core/service.c +index 98b1599..96ed2d3 100644 +--- a/src/core/service.c ++++ b/src/core/service.c +@@ -2652,7 +2652,7 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) { + unit_serialize_item(u, f, "var-tmp-dir", s->exec_context.var_tmp_dir); + + if (s->forbid_restart) +- unit_serialize_item(u, f, "forbid_restart", yes_no(s->forbid_restart)); ++ unit_serialize_item(u, f, "forbid-restart", yes_no(s->forbid_restart)); + + return 0; + } +@@ -2790,12 +2790,12 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, + return log_oom(); + + s->exec_context.var_tmp_dir = t; +- } else if (streq(key, "forbid_restart")) { ++ } else if (streq(key, "forbid-restart")) { + int b; + + b = parse_boolean(value); + if (b < 0) +- log_debug_unit(u->id, "Failed to parse forbid_restart value %s", value); ++ log_debug_unit(u->id, "Failed to parse forbid-restart value %s", value); + else + s->forbid_restart = b; + } else +-- +1.8.4 + diff --git a/0001-dbus-common-avoid-leak-in-error-path.patch b/0001-dbus-common-avoid-leak-in-error-path.patch new file mode 100644 index 0000000..e2ac93f --- /dev/null +++ b/0001-dbus-common-avoid-leak-in-error-path.patch @@ -0,0 +1,71 @@ +From 74dcc2df7b2a340c3e1fe9e61e5c8deb324c83d7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 11 Oct 2013 19:33:20 -0400 +Subject: [PATCH] dbus-common: avoid leak in error path + +src/shared/dbus-common.c:968:33: warning: Potential leak of memory pointed to by 'l' + return -EINVAL; + ^~~~~~ +--- + src/shared/dbus-common.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c +index c727cae..3ba2d87 100644 +--- a/src/shared/dbus-common.c ++++ b/src/shared/dbus-common.c +@@ -934,7 +934,7 @@ int bus_parse_strv_iter(DBusMessageIter *iter, char ***_l) { + int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) { + DBusMessageIter sub, sub2; + unsigned n = 0, i = 0; +- char **l; ++ _cleanup_strv_free_ char **l = NULL; + + assert(iter); + assert(_l); +@@ -953,6 +953,7 @@ int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) { + l = new(char*, n*2+1); + if (!l) + return -ENOMEM; ++ l[0] = NULL; /* make sure that l is properly terminated at all times */ + + dbus_message_iter_recurse(iter, &sub); + +@@ -968,26 +969,25 @@ int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) { + return -EINVAL; + + l[i] = strdup(a); +- if (!l[i]) { +- strv_free(l); ++ if (!l[i]) + return -ENOMEM; +- } ++ i++; + +- l[++i] = strdup(b); +- if (!l[i]) { +- strv_free(l); ++ l[i] = strdup(b); ++ if (!l[i]) + return -ENOMEM; +- } +- + i++; ++ + dbus_message_iter_next(&sub); + } + + assert(i == n*2); + l[i] = NULL; + +- if (_l) ++ if (_l) { + *_l = l; ++ l = NULL; /* avoid freeing */ ++ } + + return 0; + } +-- +1.8.4 + diff --git a/0001-do-not-accept-garbage-from-acpi-firmware-performance.patch b/0001-do-not-accept-garbage-from-acpi-firmware-performance.patch new file mode 100644 index 0000000..53e8253 --- /dev/null +++ b/0001-do-not-accept-garbage-from-acpi-firmware-performance.patch @@ -0,0 +1,33 @@ +From 6c7980093c4e39d07bf06484f96f489e236c7c29 Mon Sep 17 00:00:00 2001 +From: Kay Sievers +Date: Thu, 10 Oct 2013 01:38:11 +0200 +Subject: [PATCH] do not accept "garbage" from acpi firmware performance data + (FPDT) + +00000000 46 42 50 54 38 00 00 00 02 00 30 02 00 00 00 00 |FBPT8.....0.....| +00000010 23 45 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |#E..............| +00000020 f5 6a 51 00 00 00 00 00 00 00 00 00 00 00 00 00 |.jQ.............| +00000030 00 00 00 00 00 00 00 00 70 74 61 6c 58 00 00 00 |........ptalX...| +--- + src/shared/acpi-fpdt.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c +index af58c7c..75648b4 100644 +--- a/src/shared/acpi-fpdt.c ++++ b/src/shared/acpi-fpdt.c +@@ -146,6 +146,11 @@ int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) { + if (brec.type != ACPI_FPDT_BOOT_REC) + return -EINVAL; + ++ if (brec.startup_start == 0 || brec.exit_services_exit < brec.startup_start) ++ return -EINVAL; ++ if (brec.exit_services_exit > NSEC_PER_HOUR) ++ return -EINVAL; ++ + if (loader_start) + *loader_start = brec.startup_start / 1000; + if (loader_exit) +-- +1.8.4 + diff --git a/0001-drop-ins-check-return-value.patch b/0001-drop-ins-check-return-value.patch new file mode 100644 index 0000000..35a0f70 --- /dev/null +++ b/0001-drop-ins-check-return-value.patch @@ -0,0 +1,29 @@ +From 6891529fe1176c046ece579807ff48e3191692f3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 11 Oct 2013 19:33:36 -0400 +Subject: [PATCH] drop-ins: check return value + +If the function failed, nothing serious would happen +because unlink would probably return EFAULT, but this +would obscure the real error and is a bit sloppy. +--- + src/core/unit.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/core/unit.c b/src/core/unit.c +index 4b97710..1db7d06 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -2908,6 +2908,9 @@ int unit_remove_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name) { + return 0; + + r = drop_in_file(u, mode, name, &p, &q); ++ if (r < 0) ++ return r; ++ + if (unlink(q) < 0) + r = errno == ENOENT ? 0 : -errno; + else +-- +1.8.4 + diff --git a/0001-gpt-auto-generator-exit-immediately-if-in-container.patch b/0001-gpt-auto-generator-exit-immediately-if-in-container.patch new file mode 100644 index 0000000..4d1fee2 --- /dev/null +++ b/0001-gpt-auto-generator-exit-immediately-if-in-container.patch @@ -0,0 +1,40 @@ +From 9a5cb1371b6d8b0a04bd08665bcf9b06cb40c64c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 3 Oct 2013 22:13:01 -0400 +Subject: [PATCH] gpt-auto-generator: exit immediately if in container + +Otherwise we get an ugly warning when running systemd in +a container. +--- + src/gpt-auto-generator/gpt-auto-generator.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c +index ca54925..d2b4213 100644 +--- a/src/gpt-auto-generator/gpt-auto-generator.c ++++ b/src/gpt-auto-generator/gpt-auto-generator.c +@@ -38,6 +38,7 @@ + #include "libudev.h" + #include "special.h" + #include "unit-name.h" ++#include "virt.h" + + /* TODO: + * +@@ -481,6 +482,13 @@ int main(int argc, char *argv[]) { + umask(0022); + + if (in_initrd()) { ++ log_debug("In initrd, exiting."); ++ r = 0; ++ goto finish; ++ } ++ ++ if (detect_container(NULL) > 0) { ++ log_debug("In a container, exiting."); + r = 0; + goto finish; + } +-- +1.8.4 + diff --git a/0001-journald-fix-minor-memory-leak.patch b/0001-journald-fix-minor-memory-leak.patch new file mode 100644 index 0000000..10df2c0 --- /dev/null +++ b/0001-journald-fix-minor-memory-leak.patch @@ -0,0 +1,25 @@ +From 2ee0591d12b9e725c4585502285fd91cde682d9b Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 9 Oct 2013 04:03:45 +0200 +Subject: [PATCH] journald: fix minor memory leak + +--- + src/journal/journal-vacuum.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c +index c73ad8f..8d5effb 100644 +--- a/src/journal/journal-vacuum.c ++++ b/src/journal/journal-vacuum.c +@@ -278,6 +278,8 @@ int journal_directory_vacuum( + } else if (errno != ENOENT) + log_warning("Failed to delete %s/%s: %m", directory, p); + ++ free(p); ++ + continue; + } + +-- +1.8.4 + diff --git a/0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch b/0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch new file mode 100644 index 0000000..0ed6caa --- /dev/null +++ b/0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch @@ -0,0 +1,39 @@ +From 2b98f75a63e6022bf74a7d678c47faa5208c794f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Wed, 9 Oct 2013 22:13:13 -0400 +Subject: [PATCH] journald: remove rotated file from hashmap when rotation + fails + +Before, when the user journal file was rotated, journal_file_rotate +could close the old file and fail to open the new file. In that +case, we would leave the old (deallocated) file in the hashmap. +On subsequent accesses, we could retrieve this stale entry, leading +to a segfault. + +When journal_file_rotate fails with the file pointer set to 0, +old file is certainly gone, and cannot be used anymore. + +https://bugzilla.redhat.com/show_bug.cgi?id=890463 +--- + src/journal/journald-server.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c +index 4f47eb1..e03e413 100644 +--- a/src/journal/journald-server.c ++++ b/src/journal/journald-server.c +@@ -321,8 +321,10 @@ void server_rotate(Server *s) { + if (r < 0) + if (f) + log_error("Failed to rotate %s: %s", f->path, strerror(-r)); +- else ++ else { + log_error("Failed to create user journal: %s", strerror(-r)); ++ hashmap_remove(s->user_journals, k); ++ } + else { + hashmap_replace(s->user_journals, k, f); + server_fix_perms(s, f, PTR_TO_UINT32(k)); +-- +1.8.4 + diff --git a/0001-login-fix-invalid-free-in-sd_session_get_vt.patch b/0001-login-fix-invalid-free-in-sd_session_get_vt.patch new file mode 100644 index 0000000..7a7551e --- /dev/null +++ b/0001-login-fix-invalid-free-in-sd_session_get_vt.patch @@ -0,0 +1,27 @@ +From 3f4fee033bf0f623de74f3e8a14c42b8ff81c36e Mon Sep 17 00:00:00 2001 +From: David Herrmann +Date: Thu, 10 Oct 2013 13:09:37 +0200 +Subject: [PATCH] login: fix invalid free() in sd_session_get_vt() + +We need to clear variables markes as _cleanup_free_. Otherwise, our +error-paths might corrupt random memory. +--- + src/login/sd-login.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/login/sd-login.c b/src/login/sd-login.c +index 71d8c29..6c27dfe 100644 +--- a/src/login/sd-login.c ++++ b/src/login/sd-login.c +@@ -350,7 +350,7 @@ _public_ int sd_session_get_tty(const char *session, char **tty) { + } + + _public_ int sd_session_get_vt(const char *session, unsigned *vtnr) { +- _cleanup_free_ char *vtnr_string; ++ _cleanup_free_ char *vtnr_string = NULL; + unsigned u; + int r; + +-- +1.8.4 + diff --git a/0001-login-make-sd_session_get_vt-actually-work.patch b/0001-login-make-sd_session_get_vt-actually-work.patch new file mode 100644 index 0000000..49a0a13 --- /dev/null +++ b/0001-login-make-sd_session_get_vt-actually-work.patch @@ -0,0 +1,27 @@ +From 0581dac2c146cef0f55841a4c136dc48409c8eaa Mon Sep 17 00:00:00 2001 +From: David Herrmann +Date: Thu, 10 Oct 2013 13:11:27 +0200 +Subject: [PATCH] login: make sd_session_get_vt() actually work + +We use VTNR, not VTNr as key. Until now sd_session_get_vt() just returns +an error. +--- + src/login/sd-login.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/login/sd-login.c b/src/login/sd-login.c +index 6c27dfe..7e25041 100644 +--- a/src/login/sd-login.c ++++ b/src/login/sd-login.c +@@ -354,7 +354,7 @@ _public_ int sd_session_get_vt(const char *session, unsigned *vtnr) { + unsigned u; + int r; + +- r = session_get_string(session, "VTNr", &vtnr_string); ++ r = session_get_string(session, "VTNR", &vtnr_string); + if (r < 0) + return r; + +-- +1.8.4 + diff --git a/0001-logind-fix-bus-introspection-data-for-TakeControl.patch b/0001-logind-fix-bus-introspection-data-for-TakeControl.patch new file mode 100644 index 0000000..829333e --- /dev/null +++ b/0001-logind-fix-bus-introspection-data-for-TakeControl.patch @@ -0,0 +1,25 @@ +From 660ea9620f7b8f99d08a2770d4e81acfd8aea02e Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 4 Oct 2013 21:16:40 +0200 +Subject: [PATCH] logind: fix bus introspection data for TakeControl() + +--- + src/login/logind-session-dbus.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c +index 5f6bafb..be4e01c 100644 +--- a/src/login/logind-session-dbus.c ++++ b/src/login/logind-session-dbus.c +@@ -41,7 +41,7 @@ + " \n" \ + " \n" \ + " \n" \ +- " \n" \ ++ " \n" \ + " \n" \ + " \n" \ + " \n" \ +-- +1.8.4 + diff --git a/0001-logind-garbage-collect-stale-users.patch b/0001-logind-garbage-collect-stale-users.patch new file mode 100644 index 0000000..fd91e8b --- /dev/null +++ b/0001-logind-garbage-collect-stale-users.patch @@ -0,0 +1,28 @@ +From 63966da86d8e71b1f3f2b57d5448770d526421f9 Mon Sep 17 00:00:00 2001 +From: Thomas Bächler +Date: Sun, 15 Dec 2013 11:06:37 +0000 +Subject: login: Don't stop a running user manager from garbage-collecting the user. + +With the current logic, a user will never be garbage-collected, since its +manager will always be around. Change the logic such that a user is +garbage-collected when it has no sessions and linger is disabled. +--- +diff --git a/src/login/logind-user.c b/src/login/logind-user.c +index 6ba8d98..441e086 100644 +--- a/src/login/logind-user.c ++++ b/src/login/logind-user.c +@@ -629,12 +629,6 @@ int user_check_gc(User *u, bool drop_not + if (u->slice_job || u->service_job) + return 1; + +- if (u->slice && manager_unit_is_active(u->manager, u->slice) != 0) +- return 1; +- +- if (u->service && manager_unit_is_active(u->manager, u->service) != 0) +- return 1; +- + return 0; + } + +-- +cgit v0.9.0.2-2-gbebe diff --git a/0001-manager-when-verifying-whether-clients-may-change-en.patch b/0001-manager-when-verifying-whether-clients-may-change-en.patch new file mode 100644 index 0000000..57bb364 --- /dev/null +++ b/0001-manager-when-verifying-whether-clients-may-change-en.patch @@ -0,0 +1,45 @@ +From a316932f5a627c1ef78f568fd5dfa579f12e76b2 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 4 Oct 2013 17:01:37 +0200 +Subject: [PATCH] manager: when verifying whether clients may change + environment using selinux check for "reload" rather "reboot" + +This appears to be a copy/paste error. +--- + src/core/dbus-manager.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c +index 676a07f..8f4d017 100644 +--- a/src/core/dbus-manager.c ++++ b/src/core/dbus-manager.c +@@ -1397,7 +1397,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, + _cleanup_strv_free_ char **l = NULL; + char **e = NULL; + +- SELINUX_ACCESS_CHECK(connection, message, "reboot"); ++ SELINUX_ACCESS_CHECK(connection, message, "reload"); + + r = bus_parse_strv(message, &l); + if (r == -ENOMEM) +@@ -1424,7 +1424,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, + _cleanup_strv_free_ char **l = NULL; + char **e = NULL; + +- SELINUX_ACCESS_CHECK(connection, message, "reboot"); ++ SELINUX_ACCESS_CHECK(connection, message, "reload"); + + r = bus_parse_strv(message, &l); + if (r == -ENOMEM) +@@ -1452,7 +1452,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, + char **f = NULL; + DBusMessageIter iter; + +- SELINUX_ACCESS_CHECK(connection, message, "reboot"); ++ SELINUX_ACCESS_CHECK(connection, message, "reload"); + + if (!dbus_message_iter_init(message, &iter)) + goto oom; +-- +1.8.4 + diff --git a/0001-mount-check-for-NULL-before-reading-pm-what.patch b/0001-mount-check-for-NULL-before-reading-pm-what.patch new file mode 100644 index 0000000..e8c830f --- /dev/null +++ b/0001-mount-check-for-NULL-before-reading-pm-what.patch @@ -0,0 +1,29 @@ +From 9c03872bc8fb2a381eafe7301ef9811b641686dd Mon Sep 17 00:00:00 2001 +From: Dave Reisner +Date: Fri, 4 Oct 2013 18:22:40 -0400 +Subject: [PATCH] mount: check for NULL before reading pm->what + +Since a57f7e2c828b85, a mount unit with garbage in it would cause +systemd to crash on loading it. + +ref: https://bugs.freedesktop.org/show_bug.cgi?id=70148 +--- + src/core/mount.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/mount.c b/src/core/mount.c +index 93bfa99..db055f0 100644 +--- a/src/core/mount.c ++++ b/src/core/mount.c +@@ -182,7 +182,7 @@ static int mount_add_mount_links(Mount *m) { + * for the source path (if this is a bind mount) to be + * available. */ + pm = get_mount_parameters_fragment(m); +- if (pm && path_is_absolute(pm->what)) { ++ if (pm && pm->what && path_is_absolute(pm->what)) { + r = unit_require_mounts_for(UNIT(m), pm->what); + if (r < 0) + return r; +-- +1.8.4 + diff --git a/0001-shared-util-Fix-glob_extend-argument.patch b/0001-shared-util-Fix-glob_extend-argument.patch new file mode 100644 index 0000000..4695547 --- /dev/null +++ b/0001-shared-util-Fix-glob_extend-argument.patch @@ -0,0 +1,28 @@ +From a8ccacf5344c4434b1d5ff3837307acb8fcf93d2 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Mon, 14 Oct 2013 08:15:51 +0200 +Subject: [PATCH] shared/util: Fix glob_extend() argument + +glob_extend() would completely fail to work, or return incorrect +data if it wasn't being passed the current getopt "optarg" variable +as it used the global variable, instead of the passed parameters. +--- + src/shared/util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/shared/util.c b/src/shared/util.c +index 54dbace..1822770 100644 +--- a/src/shared/util.c ++++ b/src/shared/util.c +@@ -4461,7 +4461,7 @@ int glob_extend(char ***strv, const char *path) { + char **p; + + errno = 0; +- k = glob(optarg, GLOB_NOSORT|GLOB_BRACE, NULL, &g); ++ k = glob(path, GLOB_NOSORT|GLOB_BRACE, NULL, &g); + + if (k == GLOB_NOMATCH) + return -ENOENT; +-- +1.8.4 + diff --git a/0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch b/0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch new file mode 100644 index 0000000..eb6dedd --- /dev/null +++ b/0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch @@ -0,0 +1,50 @@ +From 1d5989fd803d2019de0f6aaaf3cfb1cb2bbc3cdb Mon Sep 17 00:00:00 2001 +From: Dave Reisner +Date: Sun, 6 Oct 2013 18:26:23 -0400 +Subject: [PATCH] shared/util: fix off-by-one error in tag_to_udev_node + +Triggered false negatives when encoding a string which needed every +character to be escaped, e.g. "LABEL=/". +--- + src/shared/util.c | 2 +- + src/test/test-device-nodes.c | 4 +++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/shared/util.c b/src/shared/util.c +index 82f4221..31cea79 100644 +--- a/src/shared/util.c ++++ b/src/shared/util.c +@@ -3527,7 +3527,7 @@ static char *tag_to_udev_node(const char *tagvalue, const char *by) { + if (u == NULL) + return NULL; + +- enc_len = strlen(u) * 4; ++ enc_len = strlen(u) * 4 + 1; + t = new(char, enc_len); + if (t == NULL) + return NULL; +diff --git a/src/test/test-device-nodes.c b/src/test/test-device-nodes.c +index 2f3dedb..59ba4be 100644 +--- a/src/test/test-device-nodes.c ++++ b/src/test/test-device-nodes.c +@@ -26,7 +26,7 @@ + + /* helpers for test_encode_devnode_name */ + static char *do_encode_string(const char *in) { +- size_t out_len = strlen(in) * 4; ++ size_t out_len = strlen(in) * 4 + 1; + char *out = malloc(out_len); + + assert_se(out); +@@ -46,6 +46,8 @@ static void test_encode_devnode_name(void) { + assert_se(expect_encoded_as("pinkiepie", "pinkiepie")); + assert_se(expect_encoded_as("valíd\\ųtf8", "valíd\\x5cųtf8")); + assert_se(expect_encoded_as("s/ash/ng", "s\\x2fash\\x2fng")); ++ assert_se(expect_encoded_as("/", "\\x2f")); ++ assert_se(expect_encoded_as("!", "\\x21")); + } + + int main(int argc, char *argv[]) { +-- +1.8.4 + diff --git a/0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch b/0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch new file mode 100644 index 0000000..254212c --- /dev/null +++ b/0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch @@ -0,0 +1,41 @@ +From 77009452cfd25208509b14ea985e81fdf9f7d40e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 3 Oct 2013 22:15:08 -0400 +Subject: [PATCH] systemd: order remote mounts from mountinfo before + remote-fs.target + +Usually the network is stopped before filesystems are umounted. +Ordering network filesystems before remote-fs.target means that their +unmounting will be performed earlier, and can terminate sucessfully. + +https://bugs.freedesktop.org/show_bug.cgi?id=70002 +--- + src/core/mount.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/core/mount.c b/src/core/mount.c +index 3d46557..93bfa99 100644 +--- a/src/core/mount.c ++++ b/src/core/mount.c +@@ -1440,6 +1440,9 @@ static int mount_add_one( + + u = manager_get_unit(m, e); + if (!u) { ++ const char* const target = ++ fstype_is_network(fstype) ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET; ++ + delete = true; + + u = unit_new(m, sizeof(Mount)); +@@ -1466,7 +1469,7 @@ static int mount_add_one( + goto fail; + } + +- r = unit_add_dependency_by_name(u, UNIT_BEFORE, SPECIAL_LOCAL_FS_TARGET, NULL, true); ++ r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true); + if (r < 0) + goto fail; + +-- +1.8.4 + diff --git a/0001-systemd-serialize-deserialize-forbid_restart-value.patch b/0001-systemd-serialize-deserialize-forbid_restart-value.patch new file mode 100644 index 0000000..6184c9a --- /dev/null +++ b/0001-systemd-serialize-deserialize-forbid_restart-value.patch @@ -0,0 +1,51 @@ +From 6aca9a587d4ad40b1c044f99e3714022201b9fd4 Mon Sep 17 00:00:00 2001 +From: Sylvia Else +Date: Sun, 6 Oct 2013 23:06:35 -0400 +Subject: [PATCH] systemd: serialize/deserialize forbid_restart value + +The Service type's forbid_restart field was not preserved by +serialization/deserialization, so the fact that the service should not +be restarted after stopping was lost. + +If a systemctl stop foo command has been given, but the foo service +has not yet stopped, and then the systemctl --system daemon-reload was +given, then when the foo service eventually stopped, systemd would +restart it. + +https://bugs.freedesktop.org/show_bug.cgi?id=69800 +--- + src/core/service.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/src/core/service.c b/src/core/service.c +index 6792024..98b1599 100644 +--- a/src/core/service.c ++++ b/src/core/service.c +@@ -2651,6 +2651,9 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) { + if (s->exec_context.var_tmp_dir) + unit_serialize_item(u, f, "var-tmp-dir", s->exec_context.var_tmp_dir); + ++ if (s->forbid_restart) ++ unit_serialize_item(u, f, "forbid_restart", yes_no(s->forbid_restart)); ++ + return 0; + } + +@@ -2787,6 +2790,14 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, + return log_oom(); + + s->exec_context.var_tmp_dir = t; ++ } else if (streq(key, "forbid_restart")) { ++ int b; ++ ++ b = parse_boolean(value); ++ if (b < 0) ++ log_debug_unit(u->id, "Failed to parse forbid_restart value %s", value); ++ else ++ s->forbid_restart = b; + } else + log_debug_unit(u->id, "Unknown serialization key '%s'", key); + +-- +1.8.4 + diff --git a/0001-upstream-systemctl-halt-reboot-error-handling.patch b/0001-upstream-systemctl-halt-reboot-error-handling.patch new file mode 100644 index 0000000..110b866 --- /dev/null +++ b/0001-upstream-systemctl-halt-reboot-error-handling.patch @@ -0,0 +1,85 @@ +--- systemd-208/src/core/shutdown.c ++++ systemd-208/src/core/shutdown.c 2014-01-27 11:31:38.486235816 +0000 +@@ -329,6 +329,9 @@ int main(int argc, char *argv[]) { + + reboot(cmd); + ++ if (cmd == RB_POWER_OFF) ++ reboot(RB_HALT_SYSTEM); ++ + if (errno == EPERM && in_container) { + /* If we are in a container, and we lacked + * CAP_SYS_BOOT just exit, this will kill our + +--- systemd-208/src/systemctl/systemctl.c ++++ systemd-208/src/systemctl/systemctl.c 2014-01-27 11:05:18.298236035 +0000 +@@ -138,7 +138,7 @@ static bool arg_plain = false; + static bool private_bus = false; + + static int daemon_reload(DBusConnection *bus, char **args); +-static void halt_now(enum action a); ++static int halt_now(enum action a); + + static void pager_open_if_enabled(void) { + +@@ -2227,7 +2227,7 @@ static int start_special(DBusConnection + (a == ACTION_HALT || + a == ACTION_POWEROFF || + a == ACTION_REBOOT)) +- halt_now(a); ++ return halt_now(a); + + if (arg_force >= 1 && + (a == ACTION_HALT || +@@ -5973,7 +5973,7 @@ done: + return 0; + } + +-static _noreturn_ void halt_now(enum action a) { ++static int halt_now(enum action a) { + + /* Make sure C-A-D is handled by the kernel from this + * point on... */ +@@ -5984,23 +5984,22 @@ static _noreturn_ void halt_now(enum act + case ACTION_HALT: + log_info("Halting."); + reboot(RB_HALT_SYSTEM); +- break; ++ return -errno; + + case ACTION_POWEROFF: + log_info("Powering off."); + reboot(RB_POWER_OFF); +- break; ++ return -errno; + + case ACTION_REBOOT: + log_info("Rebooting."); + reboot(RB_AUTOBOOT); +- break; ++ return -errno; + + default: +- assert_not_reached("Unknown halt action."); ++ assert_not_reached("Unknown action."); ++ return -ENOSYS; + } +- +- assert_not_reached("Uh? This shouldn't happen."); + } + + static int halt_main(DBusConnection *bus) { +@@ -6069,9 +6068,10 @@ static int halt_main(DBusConnection *bus + if (arg_dry) + return 0; + +- halt_now(arg_action); +- /* We should never reach this. */ +- return -ENOSYS; ++ r = halt_now(arg_action); ++ log_error("Failed to reboot: %s", strerror(-r)); ++ ++ return r; + } + + static int runlevel_main(void) { diff --git a/0002-cgroup-correct-the-log-information.patch b/0002-cgroup-correct-the-log-information.patch deleted file mode 100644 index 648b5c6..0000000 --- a/0002-cgroup-correct-the-log-information.patch +++ /dev/null @@ -1,26 +0,0 @@ -From ebab7f4535a077eb8168cb8f3a9fe899e56aba17 Mon Sep 17 00:00:00 2001 -From: Gao feng -Date: Fri, 13 Sep 2013 11:17:06 +0800 -Subject: [PATCH 2/7] cgroup: correct the log information - -it should be memory.soft_limit_in_bytes. ---- - src/core/cgroup.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/core/cgroup.c b/src/core/cgroup.c -index fba0b2f..aee93ba 100644 ---- a/src/core/cgroup.c -+++ b/src/core/cgroup.c -@@ -266,7 +266,7 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha - sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit); - r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); - if (r < 0) -- log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r)); -+ log_error("Failed to set memory.soft_limit_in_bytes on %s: %s", path, strerror(-r)); - } - - if (mask & CGROUP_DEVICE) { --- -1.8.1.4 - diff --git a/0002-fix-lingering-references-to-var-lib-backlight-random.patch b/0002-fix-lingering-references-to-var-lib-backlight-random.patch new file mode 100644 index 0000000..6ce0c23 --- /dev/null +++ b/0002-fix-lingering-references-to-var-lib-backlight-random.patch @@ -0,0 +1,55 @@ +From 6c8c92fef72cf6a7ef7109a424ef82dbdc4f6952 Mon Sep 17 00:00:00 2001 +From: Dave Reisner +Date: Wed, 2 Oct 2013 07:46:24 -0400 +Subject: [PATCH 02/15] fix lingering references to + /var/lib/{backlight,random-seed} + +This should have been part of ef5bfcf668e6029faa78534dfe. +--- + man/systemd-backlight@.service.xml | 2 +- + man/systemd-random-seed.service.xml | 2 +- + units/systemd-backlight@.service.in | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/man/systemd-backlight@.service.xml b/man/systemd-backlight@.service.xml +index 2b73625..4318964 100644 +--- a/man/systemd-backlight@.service.xml ++++ b/man/systemd-backlight@.service.xml +@@ -58,7 +58,7 @@ + is a service that restores the display backlight + brightness at early-boot and saves it at shutdown. On + disk, the backlight brightness is stored in +- /var/lib/backlight/. Note that by ++ /var/lib/systemd/backlight/. Note that by + default, only firmware backlight devices are + saved/restored. + +diff --git a/man/systemd-random-seed.service.xml b/man/systemd-random-seed.service.xml +index 8cd14b7..e5cd037 100644 +--- a/man/systemd-random-seed.service.xml ++++ b/man/systemd-random-seed.service.xml +@@ -61,7 +61,7 @@ + for details. Saving/restoring the random seed across + boots increases the amount of available entropy early + at boot. On disk the random seed is stored in +- /var/lib/random-seed. ++ /var/lib/systemd/random-seed. + + + +diff --git a/units/systemd-backlight@.service.in b/units/systemd-backlight@.service.in +index b0e75db..5caa5d5 100644 +--- a/units/systemd-backlight@.service.in ++++ b/units/systemd-backlight@.service.in +@@ -9,7 +9,7 @@ + Description=Load/Save Screen Backlight Brightness of %I + Documentation=man:systemd-backlight@.service(8) + DefaultDependencies=no +-RequiresMountsFor=/var/lib/backlight ++RequiresMountsFor=/var/lib/systemd/backlight + Conflicts=shutdown.target + After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service + Before=sysinit.target shutdown.target +-- +1.8.4 + diff --git a/0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch b/0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch new file mode 100644 index 0000000..76624f9 --- /dev/null +++ b/0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch @@ -0,0 +1,62 @@ +From 95d57e7b631a2d78b9b5d841125194052895470f Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 29 Jan 2014 13:49:54 +0100 +Subject: [PATCH 2/3] service: allow KillMode=mixed in conjunction with + PAMName= + +--- + src/core/service.c | 20 +++++++------------- + 1 file changed, 7 insertions(+), 13 deletions(-) + +diff --git a/src/core/service.c b/src/core/service.c +index 6792024..e7f03e1 100644 +--- a/src/core/service.c ++++ b/src/core/service.c +@@ -1105,37 +1105,31 @@ static int service_verify(Service *s) { + return 0; + + if (!s->exec_command[SERVICE_EXEC_START]) { +- log_error_unit(UNIT(s)->id, +- "%s lacks ExecStart setting. Refusing.", UNIT(s)->id); ++ log_error_unit(UNIT(s)->id, "%s lacks ExecStart setting. Refusing.", UNIT(s)->id); + return -EINVAL; + } + + if (s->type != SERVICE_ONESHOT && + s->exec_command[SERVICE_EXEC_START]->command_next) { +- log_error_unit(UNIT(s)->id, +- "%s has more than one ExecStart setting, which is only allowed for Type=oneshot services. Refusing.", UNIT(s)->id); ++ log_error_unit(UNIT(s)->id, "%s has more than one ExecStart setting, which is only allowed for Type=oneshot services. Refusing.", UNIT(s)->id); + return -EINVAL; + } + + if (s->type == SERVICE_ONESHOT && s->restart != SERVICE_RESTART_NO) { +- log_error_unit(UNIT(s)->id, +- "%s has Restart setting other than no, which isn't allowed for Type=oneshot services. Refusing.", UNIT(s)->id); ++ log_error_unit(UNIT(s)->id, "%s has Restart setting other than no, which isn't allowed for Type=oneshot services. Refusing.", UNIT(s)->id); + return -EINVAL; + } + + if (s->type == SERVICE_DBUS && !s->bus_name) { +- log_error_unit(UNIT(s)->id, +- "%s is of type D-Bus but no D-Bus service name has been specified. Refusing.", UNIT(s)->id); ++ log_error_unit(UNIT(s)->id, "%s is of type D-Bus but no D-Bus service name has been specified. Refusing.", UNIT(s)->id); + return -EINVAL; + } + + if (s->bus_name && s->type != SERVICE_DBUS) +- log_warning_unit(UNIT(s)->id, +- "%s has a D-Bus service name specified, but is not of type dbus. Ignoring.", UNIT(s)->id); ++ log_warning_unit(UNIT(s)->id, "%s has a D-Bus service name specified, but is not of type dbus. Ignoring.", UNIT(s)->id); + +- if (s->exec_context.pam_name && s->kill_context.kill_mode != KILL_CONTROL_GROUP) { +- log_error_unit(UNIT(s)->id, +- "%s has PAM enabled. Kill mode must be set to 'control-group'. Refusing.", UNIT(s)->id); ++ if (s->exec_context.pam_name && !(s->kill_context.kill_mode == KILL_CONTROL_GROUP || s->kill_context.kill_mode == KILL_MIXED)) { ++ log_error_unit(UNIT(s)->id, "%s has PAM enabled. Kill mode must be set to 'control-group' or 'mixed'. Refusing.", UNIT(s)->id); + return -EINVAL; + } + +-- +1.8.4 + diff --git a/0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch b/0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch new file mode 100644 index 0000000..86e1344 --- /dev/null +++ b/0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch @@ -0,0 +1,25 @@ +From 2c64a8d0caf84254e38f2e76528f2034d37da520 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 2 Oct 2013 14:03:56 +0200 +Subject: [PATCH 03/15] acpi: make sure we never free an uninitialized pointer + +--- + src/shared/acpi-fpdt.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c +index a7c83ed..af58c7c 100644 +--- a/src/shared/acpi-fpdt.c ++++ b/src/shared/acpi-fpdt.c +@@ -81,7 +81,7 @@ struct acpi_fpdt_boot { + }; + + int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) { +- _cleanup_free_ char *buf; ++ _cleanup_free_ char *buf = NULL; + struct acpi_table_header *tbl; + size_t l; + struct acpi_fpdt_header *rec; +-- +1.8.4 + diff --git a/0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch b/0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch deleted file mode 100644 index 9b10393..0000000 --- a/0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch +++ /dev/null @@ -1,46 +0,0 @@ -From bebbf30ef61e4cbc782731e48ad67613aab38ec6 Mon Sep 17 00:00:00 2001 -From: Gao feng -Date: Fri, 13 Sep 2013 14:43:04 +0800 -Subject: [PATCH 3/7] cgroup: fix incorrectly setting memory cgroup - -If the memory_limit of unit is -1, we should write "-1" -to the file memory.limit_in_bytes. not the (unit64_t) -1. - -otherwise the memory.limit_in_bytes will be set to zero. ---- - src/core/cgroup.c | 15 +++++++++++---- - 1 file changed, 11 insertions(+), 4 deletions(-) - -diff --git a/src/core/cgroup.c b/src/core/cgroup.c -index aee93ba..244baff 100644 ---- a/src/core/cgroup.c -+++ b/src/core/cgroup.c -@@ -257,14 +257,21 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha - - if (mask & CGROUP_MEMORY) { - char buf[DECIMAL_STR_MAX(uint64_t) + 1]; -+ if (c->memory_limit != (uint64_t) -1) { -+ sprintf(buf, "%" PRIu64 "\n", c->memory_limit); -+ r = cg_set_attribute("memory", path, "memory.limit_in_bytes", buf); -+ } else -+ r = cg_set_attribute("memory", path, "memory.limit_in_bytes", "-1"); - -- sprintf(buf, "%" PRIu64 "\n", c->memory_limit); -- r = cg_set_attribute("memory", path, "memory.limit_in_bytes", buf); - if (r < 0) - log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r)); - -- sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit); -- r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); -+ if (c->memory_soft_limit != (uint64_t) -1) { -+ sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit); -+ r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); -+ } else -+ r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", "-1"); -+ - if (r < 0) - log_error("Failed to set memory.soft_limit_in_bytes on %s: %s", path, strerror(-r)); - } --- -1.8.1.4 - diff --git a/0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch b/0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch new file mode 100644 index 0000000..e6423f5 --- /dev/null +++ b/0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch @@ -0,0 +1,128 @@ +From b2ffdc8da536cd88a305f97517f356e2c5383a52 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 29 Jan 2014 14:58:04 +0100 +Subject: [PATCH 3/3] core: make sure to always go through both SIGTERM and + SIGKILL states of units + +Given that we now have KillMode=mixed where SIGTERM might kill a smaller +set than SIGKILL we need to make sure to always go explicitly throught +the SIGKILL state to get the right end result. +--- + src/core/mount.c | 8 +++++++- + src/core/scope.c | 4 +++- + src/core/service.c | 10 +++++++--- + src/core/socket.c | 6 +++++- + src/core/swap.c | 6 +++++- + 5 files changed, 27 insertions(+), 7 deletions(-) + +diff --git a/src/core/mount.c b/src/core/mount.c +index 3d46557..e418d09 100644 +--- a/src/core/mount.c ++++ b/src/core/mount.c +@@ -854,8 +854,14 @@ static void mount_enter_signal(Mount *m, MountState state, MountResult f) { + goto fail; + + mount_set_state(m, state); +- } else if (state == MOUNT_REMOUNTING_SIGTERM || state == MOUNT_REMOUNTING_SIGKILL) ++ } else if (state == MOUNT_REMOUNTING_SIGTERM) ++ mount_enter_signal(m, MOUNT_REMOUNTING_SIGKILL, MOUNT_SUCCESS); ++ else if (state == MOUNT_REMOUNTING_SIGKILL) + mount_enter_mounted(m, MOUNT_SUCCESS); ++ else if (state == MOUNT_MOUNTING_SIGTERM) ++ mount_enter_signal(m, MOUNT_MOUNTING_SIGKILL, MOUNT_SUCCESS); ++ else if (state == MOUNT_UNMOUNTING_SIGTERM) ++ mount_enter_signal(m, MOUNT_UNMOUNTING_SIGKILL, MOUNT_SUCCESS); + else + mount_enter_dead(m, MOUNT_SUCCESS); + +diff --git a/src/core/scope.c b/src/core/scope.c +index 50e5dba..3a5c95e 100644 +--- a/src/core/scope.c ++++ b/src/core/scope.c +@@ -221,7 +221,9 @@ static void scope_enter_signal(Scope *s, ScopeState state, ScopeResult f) { + } + + scope_set_state(s, state); +- } else ++ } else if (state == SCOPE_STOP_SIGTERM) ++ scope_enter_signal(s, SCOPE_STOP_SIGKILL, SCOPE_SUCCESS); ++ else + scope_enter_dead(s, SCOPE_SUCCESS); + + return; +diff --git a/src/core/service.c b/src/core/service.c +index e7f03e1..4b481c2 100644 +--- a/src/core/service.c ++++ b/src/core/service.c +@@ -1964,10 +1964,9 @@ static void service_enter_stop_post(Service *s, ServiceResult f) { + if (r < 0) + goto fail; + +- + service_set_state(s, SERVICE_STOP_POST); + } else +- service_enter_dead(s, SERVICE_SUCCESS, true); ++ service_enter_signal(s, SERVICE_FINAL_SIGTERM, SERVICE_SUCCESS); + + return; + +@@ -1993,6 +1992,7 @@ static void service_enter_signal(Service *s, ServiceState state, ServiceResult f + s->main_pid, + s->control_pid, + s->main_pid_alien); ++ + if (r < 0) + goto fail; + +@@ -2005,8 +2005,12 @@ static void service_enter_signal(Service *s, ServiceState state, ServiceResult f + } + + service_set_state(s, state); +- } else if (state == SERVICE_STOP_SIGTERM || state == SERVICE_STOP_SIGKILL) ++ } else if (state == SERVICE_STOP_SIGTERM) ++ service_enter_signal(s, SERVICE_STOP_SIGKILL, SERVICE_SUCCESS); ++ else if (state == SERVICE_STOP_SIGKILL) + service_enter_stop_post(s, SERVICE_SUCCESS); ++ else if (state == SERVICE_FINAL_SIGTERM) ++ service_enter_signal(s, SERVICE_FINAL_SIGKILL, SERVICE_SUCCESS); + else + service_enter_dead(s, SERVICE_SUCCESS, true); + +diff --git a/src/core/socket.c b/src/core/socket.c +index 6c0ac1a..831876f 100644 +--- a/src/core/socket.c ++++ b/src/core/socket.c +@@ -1298,8 +1298,12 @@ static void socket_enter_signal(Socket *s, SocketState state, SocketResult f) { + goto fail; + + socket_set_state(s, state); +- } else if (state == SOCKET_STOP_PRE_SIGTERM || state == SOCKET_STOP_PRE_SIGKILL) ++ } else if (state == SOCKET_STOP_PRE_SIGTERM) ++ socket_enter_signal(s, SOCKET_STOP_PRE_SIGKILL, SOCKET_SUCCESS); ++ else if (state == SOCKET_STOP_PRE_SIGKILL) + socket_enter_stop_post(s, SOCKET_SUCCESS); ++ else if (state == SOCKET_FINAL_SIGTERM) ++ socket_enter_signal(s, SOCKET_FINAL_SIGKILL, SOCKET_SUCCESS); + else + socket_enter_dead(s, SOCKET_SUCCESS); + +diff --git a/src/core/swap.c b/src/core/swap.c +index a68ab7c..8886fe8 100644 +--- a/src/core/swap.c ++++ b/src/core/swap.c +@@ -655,7 +655,11 @@ static void swap_enter_signal(Swap *s, SwapState state, SwapResult f) { + goto fail; + + swap_set_state(s, state); +- } else ++ } else if (state == SWAP_ACTIVATING_SIGTERM) ++ swap_enter_signal(s, SWAP_ACTIVATING_SIGKILL, SWAP_SUCCESS); ++ else if (state == SWAP_DEACTIVATING_SIGTERM) ++ swap_enter_signal(s, SWAP_DEACTIVATING_SIGKILL, SWAP_SUCCESS); ++ else + swap_enter_dead(s, SWAP_SUCCESS); + + return; +-- +1.8.4 + diff --git a/0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch b/0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch deleted file mode 100644 index b90fbad..0000000 --- a/0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 0465a409e0a3725b44b0801641a7497e2125e59e Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Fri, 13 Sep 2013 14:12:55 +0200 -Subject: [PATCH 4/7] random-seed: we should return errno of failed loop_write - ---- - src/random-seed/random-seed.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/random-seed/random-seed.c b/src/random-seed/random-seed.c -index 4776c07..afbd500 100644 ---- a/src/random-seed/random-seed.c -+++ b/src/random-seed/random-seed.c -@@ -157,7 +157,7 @@ int main(int argc, char *argv[]) { - r = loop_write(seed_fd, buf, (size_t) k, false); - if (r <= 0) { - log_error("Failed to write new random seed file: %s", r < 0 ? strerror(-r) : "short write"); -- r = k == 0 ? -EIO : (int) k; -+ r = r == 0 ? -EIO : r; - } - } - --- -1.8.1.4 - diff --git a/0004-systemctl-fix-name-mangling-for-sysv-units.patch b/0004-systemctl-fix-name-mangling-for-sysv-units.patch new file mode 100644 index 0000000..a2531e7 --- /dev/null +++ b/0004-systemctl-fix-name-mangling-for-sysv-units.patch @@ -0,0 +1,134 @@ +From cbb13b2a538ece1c7ec3b210e2b36b47df2a13ea Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=A1clav=20Pavl=C3=ADn?= +Date: Wed, 2 Oct 2013 16:42:42 +0200 +Subject: [PATCH 04/15] systemctl: fix name mangling for sysv units + +--- + src/systemctl/systemctl.c | 45 ++++++++++++++++++--------------------------- + 1 file changed, 18 insertions(+), 27 deletions(-) + +diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c +index bb7ada9..d75281f 100644 +--- a/src/systemctl/systemctl.c ++++ b/src/systemctl/systemctl.c +@@ -4218,11 +4218,10 @@ static int set_environment(DBusConnection *bus, char **args) { + return 0; + } + +-static int enable_sysv_units(char **args) { ++static int enable_sysv_units(const char *verb, char **args) { + int r = 0; + + #if defined(HAVE_SYSV_COMPAT) && defined(HAVE_CHKCONFIG) +- const char *verb = args[0]; + unsigned f = 1, t = 1; + LookupPaths paths = {}; + +@@ -4242,7 +4241,7 @@ static int enable_sysv_units(char **args) { + return r; + + r = 0; +- for (f = 1; args[f]; f++) { ++ for (f = 0; args[f]; f++) { + const char *name; + _cleanup_free_ char *p = NULL, *q = NULL; + bool found_native = false, found_sysv; +@@ -4365,7 +4364,7 @@ finish: + lookup_paths_free(&paths); + + /* Drop all SysV units */ +- for (f = 1, t = 1; args[f]; f++) { ++ for (f = 0, t = 0; args[f]; f++) { + + if (isempty(args[f])) + continue; +@@ -4423,16 +4422,16 @@ static int enable_unit(DBusConnection *bus, char **args) { + + dbus_error_init(&error); + +- r = enable_sysv_units(args); +- if (r < 0) +- return r; +- + if (!args[1]) + return 0; + + r = mangle_names(args+1, &mangled_names); + if (r < 0) +- goto finish; ++ return r; ++ ++ r = enable_sysv_units(verb, mangled_names); ++ if (r < 0) ++ return r; + + if (!bus || avoid_bus()) { + if (streq(verb, "enable")) { +@@ -4624,11 +4623,15 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + bool enabled; + char **name; +- char *n; ++ _cleanup_strv_free_ char **mangled_names = NULL; + + dbus_error_init(&error); + +- r = enable_sysv_units(args); ++ r = mangle_names(args+1, &mangled_names); ++ if (r < 0) ++ return r; ++ ++ r = enable_sysv_units(args[0], mangled_names); + if (r < 0) + return r; + +@@ -4636,16 +4639,10 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { + + if (!bus || avoid_bus()) { + +- STRV_FOREACH(name, args+1) { ++ STRV_FOREACH(name, mangled_names) { + UnitFileState state; + +- n = unit_name_mangle(*name); +- if (!n) +- return log_oom(); +- +- state = unit_file_get_state(arg_scope, arg_root, n); +- +- free(n); ++ state = unit_file_get_state(arg_scope, arg_root, *name); + + if (state < 0) + return state; +@@ -4660,13 +4657,9 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { + } + + } else { +- STRV_FOREACH(name, args+1) { ++ STRV_FOREACH(name, mangled_names) { + const char *s; + +- n = unit_name_mangle(*name); +- if (!n) +- return log_oom(); +- + r = bus_method_call_with_reply ( + bus, + "org.freedesktop.systemd1", +@@ -4675,11 +4668,9 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { + "GetUnitFileState", + &reply, + NULL, +- DBUS_TYPE_STRING, &n, ++ DBUS_TYPE_STRING, name, + DBUS_TYPE_INVALID); + +- free(n); +- + if (r) + return r; + +-- +1.8.4 + diff --git a/0005-core-cgroup-first-print-then-free.patch b/0005-core-cgroup-first-print-then-free.patch deleted file mode 100644 index 5aac9a8..0000000 --- a/0005-core-cgroup-first-print-then-free.patch +++ /dev/null @@ -1,26 +0,0 @@ -From fa7341808def8efb736747299374745ae059f398 Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Fri, 13 Sep 2013 14:31:17 +0200 -Subject: [PATCH 5/7] core/cgroup: first print then free - ---- - src/core/cgroup.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/core/cgroup.c b/src/core/cgroup.c -index 244baff..1f41efc 100644 ---- a/src/core/cgroup.c -+++ b/src/core/cgroup.c -@@ -402,8 +402,8 @@ static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) { - is_in_hash = true; - - if (r < 0) { -- free(path); - log_error("cgroup %s exists already: %s", path, strerror(-r)); -+ free(path); - return r; - } - --- -1.8.1.4 - diff --git a/0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch b/0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch new file mode 100644 index 0000000..d46e94d --- /dev/null +++ b/0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch @@ -0,0 +1,48 @@ +From 4b93637fd7dddb0a1518f35171998b2c7cd5c5bd Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 2 Oct 2013 19:36:28 +0200 +Subject: [PATCH 05/15] cryptsetup: fix OOM handling when parsing mount options + +--- + src/cryptsetup/cryptsetup.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c +index 22b5eea..769c3e4 100644 +--- a/src/cryptsetup/cryptsetup.c ++++ b/src/cryptsetup/cryptsetup.c +@@ -74,7 +74,7 @@ static int parse_one_option(const char *option) { + + t = strdup(option+7); + if (!t) +- return -ENOMEM; ++ return log_oom(); + + free(opt_cipher); + opt_cipher = t; +@@ -89,9 +89,10 @@ static int parse_one_option(const char *option) { + } else if (startswith(option, "tcrypt-keyfile=")) { + + opt_type = CRYPT_TCRYPT; +- if (path_is_absolute(option+15)) +- opt_tcrypt_keyfiles = strv_append(opt_tcrypt_keyfiles, strdup(option+15)); +- else ++ if (path_is_absolute(option+15)) { ++ if (strv_extend(&opt_tcrypt_keyfiles, option + 15) < 0) ++ return log_oom(); ++ } else + log_error("Key file path '%s' is not absolute. Ignoring.", option+15); + + } else if (startswith(option, "keyfile-size=")) { +@@ -113,7 +114,7 @@ static int parse_one_option(const char *option) { + + t = strdup(option+5); + if (!t) +- return -ENOMEM; ++ return log_oom(); + + free(opt_hash); + opt_hash = t; +-- +1.8.4 + diff --git a/0006-journald-add-missing-error-check.patch b/0006-journald-add-missing-error-check.patch new file mode 100644 index 0000000..479c37c --- /dev/null +++ b/0006-journald-add-missing-error-check.patch @@ -0,0 +1,25 @@ +From 8c92d4bbc7a538ada11d7e85016cce141beb0e6c Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 2 Oct 2013 19:36:43 +0200 +Subject: [PATCH 06/15] journald: add missing error check + +--- + src/journal/journal-file.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c +index 1236403..81c344f 100644 +--- a/src/journal/journal-file.c ++++ b/src/journal/journal-file.c +@@ -907,6 +907,8 @@ static int journal_file_append_field( + + osize = offsetof(Object, field.payload) + size; + r = journal_file_append_object(f, OBJECT_FIELD, osize, &o, &p); ++ if (r < 0) ++ return r; + + o->field.hash = htole64(hash); + memcpy(o->field.payload, field, size); +-- +1.8.4 + diff --git a/0006-swap-fix-reverse-dependencies.patch b/0006-swap-fix-reverse-dependencies.patch deleted file mode 100644 index 4582c34..0000000 --- a/0006-swap-fix-reverse-dependencies.patch +++ /dev/null @@ -1,30 +0,0 @@ -From dec37dc9e875695c09cfc1ec5e55b5f68eaa39f4 Mon Sep 17 00:00:00 2001 -From: Tom Gundersen -Date: Fri, 13 Sep 2013 14:46:18 +0200 -Subject: [PATCH 6/7] swap: fix reverse dependencies - -Make sure swap.target correctly requires/wants the swap units. - -This fixes https://bugs.freedesktop.org/show_bug.cgi?id=69291. - -Reported-by: Hussam Al-Tayeb ---- - src/core/swap.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/core/swap.c b/src/core/swap.c -index 57d15eb..3950860 100644 ---- a/src/core/swap.c -+++ b/src/core/swap.c -@@ -220,7 +220,7 @@ static int swap_add_default_dependencies(Swap *s) { - } - - if (!noauto) { -- r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, (nofail ? UNIT_WANTED_BY : UNIT_REQUIRED_BY), -+ r = unit_add_two_dependencies_by_name_inverse(UNIT(s), UNIT_AFTER, (nofail ? UNIT_WANTS : UNIT_REQUIRES), - SPECIAL_SWAP_TARGET, NULL, true); - if (r < 0) - return r; --- -1.8.1.4 - diff --git a/0007-bus-fix-potentially-uninitialized-memory-access.patch b/0007-bus-fix-potentially-uninitialized-memory-access.patch new file mode 100644 index 0000000..2f2d2de --- /dev/null +++ b/0007-bus-fix-potentially-uninitialized-memory-access.patch @@ -0,0 +1,34 @@ +From f5f6e41a9ee008e1632f79ab3fa20beef7c2b613 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 2 Oct 2013 19:37:11 +0200 +Subject: [PATCH 07/15] bus: fix potentially uninitialized memory access + +--- + src/libsystemd-bus/bus-internal.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/libsystemd-bus/bus-internal.c b/src/libsystemd-bus/bus-internal.c +index 0e66f3d..cac948e 100644 +--- a/src/libsystemd-bus/bus-internal.c ++++ b/src/libsystemd-bus/bus-internal.c +@@ -63,7 +63,7 @@ bool object_path_is_valid(const char *p) { + + bool interface_name_is_valid(const char *p) { + const char *q; +- bool dot, found_dot; ++ bool dot, found_dot = false; + + if (isempty(p)) + return false; +@@ -103,7 +103,7 @@ bool interface_name_is_valid(const char *p) { + + bool service_name_is_valid(const char *p) { + const char *q; +- bool dot, found_dot, unique; ++ bool dot, found_dot = false, unique; + + if (isempty(p)) + return false; +-- +1.8.4 + diff --git a/0007-libudev-fix-move_later-comparison.patch b/0007-libudev-fix-move_later-comparison.patch deleted file mode 100644 index e1e4d00..0000000 --- a/0007-libudev-fix-move_later-comparison.patch +++ /dev/null @@ -1,27 +0,0 @@ -From f90d045c9168a55bb22eef6fe8756b6a6d2c1e53 Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Fri, 13 Sep 2013 14:12:54 +0200 -Subject: [PATCH 7/7] libudev: fix move_later comparison - -At the beginning move_later is set to -1, but it is set to different -value only if expression !move_later is true. ---- - src/libudev/libudev-enumerate.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c -index bc1e37d..8146f27 100644 ---- a/src/libudev/libudev-enumerate.c -+++ b/src/libudev/libudev-enumerate.c -@@ -300,7 +300,7 @@ _public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enume - /* skip to be delayed devices, and move the to - * the point where the prefix changes. We can - * only move one item at a time. */ -- if (!move_later) { -+ if (move_later == -1) { - move_later_prefix = devices_delay_later(udev_enumerate->udev, entry->syspath); - - if (move_later_prefix > 0) { --- -1.8.1.4 - diff --git a/0008-dbus-fix-return-value-of-dispatch_rqueue.patch b/0008-dbus-fix-return-value-of-dispatch_rqueue.patch new file mode 100644 index 0000000..3985ab2 --- /dev/null +++ b/0008-dbus-fix-return-value-of-dispatch_rqueue.patch @@ -0,0 +1,30 @@ +From 2e8d788c2f90d062f208f8c57a97e7b33cb29f7d Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 2 Oct 2013 19:37:30 +0200 +Subject: [PATCH 08/15] dbus: fix return value of dispatch_rqueue() + +--- + src/libsystemd-bus/sd-bus.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c +index 3f766fb..db0880f 100644 +--- a/src/libsystemd-bus/sd-bus.c ++++ b/src/libsystemd-bus/sd-bus.c +@@ -1215,11 +1215,11 @@ static int dispatch_rqueue(sd_bus *bus, sd_bus_message **m) { + if (r == 0) + return ret; + +- r = 1; ++ ret = 1; + } while (!z); + + *m = z; +- return 1; ++ return ret; + } + + int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { +-- +1.8.4 + diff --git a/0008-swap-create-.wants-symlink-to-auto-swap-devices.patch b/0008-swap-create-.wants-symlink-to-auto-swap-devices.patch deleted file mode 100644 index a81842b..0000000 --- a/0008-swap-create-.wants-symlink-to-auto-swap-devices.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 9981460a8f2d5587fef5216d556b5fb502281be6 Mon Sep 17 00:00:00 2001 -From: Tom Gundersen -Date: Mon, 16 Sep 2013 01:08:32 +0200 -Subject: [PATCH 8/8] swap: create .wants symlink to 'auto' swap devices - -As we load unit files lazily, we need to make sure something pulls in swap -units that should be started automatically, otherwise the default dependencies -will never be applied. - -This partially reinstates code removed in -commit 64347fc2b983f33e7efb0fd2bb44e133fb9f30f4. - -Also don't order swap devices after swap.target when they are 'nofail'. ---- - src/core/swap.c | 8 ++++++-- - src/fstab-generator/fstab-generator.c | 18 ++++++++++++++++-- - 2 files changed, 22 insertions(+), 4 deletions(-) - -diff --git a/src/core/swap.c b/src/core/swap.c -index 3950860..76c7d45 100644 ---- a/src/core/swap.c -+++ b/src/core/swap.c -@@ -220,8 +220,12 @@ static int swap_add_default_dependencies(Swap *s) { - } - - if (!noauto) { -- r = unit_add_two_dependencies_by_name_inverse(UNIT(s), UNIT_AFTER, (nofail ? UNIT_WANTS : UNIT_REQUIRES), -- SPECIAL_SWAP_TARGET, NULL, true); -+ if (nofail) -+ r = unit_add_dependency_by_name_inverse(UNIT(s), -+ UNIT_WANTS, SPECIAL_SWAP_TARGET, NULL, true); -+ else -+ r = unit_add_two_dependencies_by_name_inverse(UNIT(s), -+ UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SWAP_TARGET, NULL, true); - if (r < 0) - return r; - } -diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c -index 6ebe8aa..b73dfa4 100644 ---- a/src/fstab-generator/fstab-generator.c -+++ b/src/fstab-generator/fstab-generator.c -@@ -66,6 +66,7 @@ static int mount_find_pri(struct mntent *me, int *ret) { - static int add_swap(const char *what, struct mntent *me) { - _cleanup_free_ char *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL; - _cleanup_fclose_ FILE *f = NULL; -+ bool noauto; - int r, pri = -1; - - assert(what); -@@ -77,6 +78,8 @@ static int add_swap(const char *what, struct mntent *me) { - return pri; - } - -+ noauto = !!hasmntopt(me, "noauto"); -+ - name = unit_name_from_path(what, ".swap"); - if (!name) - return log_oom(); -@@ -97,8 +100,7 @@ static int add_swap(const char *what, struct mntent *me) { - fprintf(f, - "# Automatically generated by systemd-fstab-generator\n\n" - "[Unit]\n" -- "SourcePath=/etc/fstab\n" -- "\n" -+ "SourcePath=/etc/fstab\n\n" - "[Swap]\n" - "What=%s\n", - what); -@@ -114,6 +116,18 @@ static int add_swap(const char *what, struct mntent *me) { - return -errno; - } - -+ if (!noauto) { -+ lnk = strjoin(arg_dest, "/" SPECIAL_SWAP_TARGET ".wants/", name, NULL); -+ if (!lnk) -+ return log_oom(); -+ -+ mkdir_parents_label(lnk, 0755); -+ if (symlink(unit, lnk) < 0) { -+ log_error("Failed to create symlink %s: %m", lnk); -+ return -errno; -+ } -+ } -+ - return 0; - } - --- -1.8.1.4 - diff --git a/0009-modules-load-fix-error-handling.patch b/0009-modules-load-fix-error-handling.patch new file mode 100644 index 0000000..df35021 --- /dev/null +++ b/0009-modules-load-fix-error-handling.patch @@ -0,0 +1,27 @@ +From b857193b1def5172e3641ca1d5bc9e08ae81aac4 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 2 Oct 2013 19:37:44 +0200 +Subject: [PATCH 09/15] modules-load: fix error handling + +--- + src/modules-load/modules-load.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c +index 7b19ee0..49ee420 100644 +--- a/src/modules-load/modules-load.c ++++ b/src/modules-load/modules-load.c +@@ -302,8 +302,8 @@ int main(int argc, char *argv[]) { + + STRV_FOREACH(i, arg_proc_cmdline_modules) { + k = load_module(ctx, *i); +- if (k < 0) +- r = EXIT_FAILURE; ++ if (k < 0 && r == 0) ++ r = k; + } + + r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); +-- +1.8.4 + diff --git a/0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch b/0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch new file mode 100644 index 0000000..3994d1e --- /dev/null +++ b/0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch @@ -0,0 +1,26 @@ +From 62678deda2dcd43954bf02f783da01e48c7f8fce Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 2 Oct 2013 19:38:09 +0200 +Subject: [PATCH 10/15] efi: never call qsort on potentially NULL arrays + +--- + src/shared/efivars.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/shared/efivars.c b/src/shared/efivars.c +index 1d5b6f9..c015b16 100644 +--- a/src/shared/efivars.c ++++ b/src/shared/efivars.c +@@ -384,7 +384,8 @@ int efi_get_boot_options(uint16_t **options) { + list[count ++] = id; + } + +- qsort(list, count, sizeof(uint16_t), cmp_uint16); ++ if (list) ++ qsort(list, count, sizeof(uint16_t), cmp_uint16); + + *options = list; + return count; +-- +1.8.4 + diff --git a/0011-strv-don-t-access-potentially-NULL-string-arrays.patch b/0011-strv-don-t-access-potentially-NULL-string-arrays.patch new file mode 100644 index 0000000..0ab9050 --- /dev/null +++ b/0011-strv-don-t-access-potentially-NULL-string-arrays.patch @@ -0,0 +1,27 @@ +From 5b4fb02d890d5c9777e9a6e798e0b8922a8a9fd8 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 2 Oct 2013 19:38:28 +0200 +Subject: [PATCH 11/15] strv: don't access potentially NULL string arrays + +--- + src/shared/env-util.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/shared/env-util.c b/src/shared/env-util.c +index 5e29629..7976881 100644 +--- a/src/shared/env-util.c ++++ b/src/shared/env-util.c +@@ -405,7 +405,9 @@ char **strv_env_clean_log(char **e, const char *message) { + e[k++] = *p; + } + +- e[k] = NULL; ++ if (e) ++ e[k] = NULL; ++ + return e; + } + +-- +1.8.4 + diff --git a/0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch b/0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch new file mode 100644 index 0000000..1d91d80 --- /dev/null +++ b/0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch @@ -0,0 +1,26 @@ +From 69c2b6be8fc607412a13cd0ea03a629b4965c816 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Wed, 2 Oct 2013 19:38:52 +0200 +Subject: [PATCH 12/15] mkdir: pass a proper function pointer to + mkdir_safe_internal + +--- + src/shared/mkdir.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/shared/mkdir.c b/src/shared/mkdir.c +index b7e5c6e..43c6ea6 100644 +--- a/src/shared/mkdir.c ++++ b/src/shared/mkdir.c +@@ -53,7 +53,7 @@ int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, mkd + } + + int mkdir_safe(const char *path, mode_t mode, uid_t uid, gid_t gid) { +- return mkdir_safe_internal(path, mode, uid, gid, false); ++ return mkdir_safe_internal(path, mode, uid, gid, mkdir); + } + + static int is_dir(const char* path) { +-- +1.8.4 + diff --git a/0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch b/0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch new file mode 100644 index 0000000..1ed8f92 --- /dev/null +++ b/0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch @@ -0,0 +1,26 @@ +From 7074fecf6747c9a6ad872cc87701481e8bece8b0 Mon Sep 17 00:00:00 2001 +From: Dave Reisner +Date: Wed, 2 Oct 2013 15:35:16 -0400 +Subject: [PATCH 14/15] tmpfiles.d: include setgid perms for /run/log/journal + +4608af4333d0f7f5 set permissions for journal storage on persistent disk +but not the volatile storage. + +ref: https://bugs.archlinux.org/task/37170 +--- + tmpfiles.d/systemd.conf | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/tmpfiles.d/systemd.conf b/tmpfiles.d/systemd.conf +index b630440..a05c657 100644 +--- a/tmpfiles.d/systemd.conf ++++ b/tmpfiles.d/systemd.conf +@@ -26,3 +26,5 @@ F /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)" + + m /var/log/journal 2755 root systemd-journal - - + m /var/log/journal/%m 2755 root systemd-journal - - ++m /run/log/journal 2755 root systemd-journal - - ++m /run/log/journal/%m 2755 root systemd-journal - - +-- +1.8.4 + diff --git a/1009-make-xsltproc-use-correct-ROFF-links.patch b/1009-make-xsltproc-use-correct-ROFF-links.patch new file mode 100644 index 0000000..c2f879d --- /dev/null +++ b/1009-make-xsltproc-use-correct-ROFF-links.patch @@ -0,0 +1,10 @@ +--- systemd-208/man/custom-man.xsl ++++ systemd-208/man/custom-man.xsl 2013-10-21 09:23:31.030735259 +0000 +@@ -61,4 +61,7 @@ + " + + ++ ++ ++ + diff --git a/1010-do-not-install-sulogin-unit-with-poweroff.patch b/1010-do-not-install-sulogin-unit-with-poweroff.patch new file mode 100644 index 0000000..c854754 --- /dev/null +++ b/1010-do-not-install-sulogin-unit-with-poweroff.patch @@ -0,0 +1,13 @@ +| +| 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 + KillMode=process + IgnoreSIGPIPE=no + SendSIGHUP=yes +- +-[Install] +-WantedBy=getty.target diff --git a/1011-check-4-valid-kmsg-device.patch b/1011-check-4-valid-kmsg-device.patch new file mode 100644 index 0000000..6d57c35 --- /dev/null +++ b/1011-check-4-valid-kmsg-device.patch @@ -0,0 +1,62 @@ +From: Werner Fink +Date: Thu, 21 Nov 2013 11:50:32 +0000 +Subject: [PATCH] Avoid busy systemd-journald + +Avoid a busy systemd-journald due polling a broken /dec/kmsg in lxc +environments. + +--- + journald-kmsg.c | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) + +Index: systemd-208/src/journal/journald-kmsg.c +=================================================================== +--- systemd-208/src/journal/journald-kmsg.c ++++ systemd-208/src/journal/journald-kmsg.c 2013-12-20 11:34:39.762236175 +0000 +@@ -377,15 +377,18 @@ int server_flush_dev_kmsg(Server *s) { + + int server_open_dev_kmsg(Server *s) { + struct epoll_event ev; ++ int r; + + assert(s); + + s->dev_kmsg_fd = open("/dev/kmsg", O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY); + if (s->dev_kmsg_fd < 0) { +- log_warning("Failed to open /dev/kmsg, ignoring: %m"); ++ log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING, ++ "Failed to open /dev/kmsg, ignoring: %m"); + return 0; + } + ++ r = 0; + zero(ev); + ev.events = EPOLLIN; + ev.data.fd = s->dev_kmsg_fd; +@@ -394,15 +397,24 @@ int server_open_dev_kmsg(Server *s) { + /* This will fail with EPERM on older kernels where + * /dev/kmsg is not readable. */ + if (errno == EPERM) +- return 0; ++ goto fail; + + log_error("Failed to add /dev/kmsg fd to epoll object: %m"); +- return -errno; ++ r = -errno; ++ goto fail; + } + + s->dev_kmsg_readable = true; + + return 0; ++ ++fail: ++ if (s->dev_kmsg_fd >= 0) { ++ close_nointr_nofail(s->dev_kmsg_fd); ++ s->dev_kmsg_fd = -1; ++ } ++ ++ return r; + } + + int server_open_kernel_seqnum(Server *s) { diff --git a/1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch b/1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch new file mode 100644 index 0000000..bdf9383 --- /dev/null +++ b/1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch @@ -0,0 +1,168 @@ +Based on upstream baae0358f349870544884e405e82e4be7d8add9f +| From: Lennart Poettering +| Date: Tue, 26 Nov 2013 04:05:00 +0000 +| Subject: pam_systemd: do not set XDG_RUNTIME_DIR if the session's original user is not the same as the newly logged in one +| It's better not to set any XDG_RUNTIME_DIR at all rather than one of a +| different user. So let's do this. +--- systemd-208/src/login/logind-dbus.c ++++ systemd-208/src/login/logind-dbus.c 2013-11-26 13:37:05.730735774 +0000 +@@ -523,6 +523,7 @@ static int bus_manager_create_session(Ma + DBUS_TYPE_OBJECT_PATH, &path, + DBUS_TYPE_STRING, &session->user->runtime_path, + DBUS_TYPE_UNIX_FD, &fifo_fd, ++ DBUS_TYPE_UINT32, &session->user->uid, + DBUS_TYPE_STRING, &cseat, + DBUS_TYPE_UINT32, &vtnr, + DBUS_TYPE_BOOLEAN, &exists, +--- systemd-208/src/login/logind-session-dbus.c ++++ systemd-208/src/login/logind-session-dbus.c 2013-11-26 13:36:07.478236401 +0000 +@@ -755,6 +755,7 @@ int session_send_create_reply(Session *s + DBUS_TYPE_OBJECT_PATH, &path, + DBUS_TYPE_STRING, &s->user->runtime_path, + DBUS_TYPE_UNIX_FD, &fifo_fd, ++ DBUS_TYPE_UINT32, &s->user->uid, + DBUS_TYPE_STRING, &cseat, + DBUS_TYPE_UINT32, &vtnr, + DBUS_TYPE_BOOLEAN, &exists, +--- systemd-208/src/login/pam-module.c ++++ systemd-208/src/login/pam-module.c 2013-11-26 14:32:20.194235777 +0000 +@@ -93,24 +93,18 @@ static int get_user_data( + assert(ret_username); + assert(ret_pw); + +- r = audit_loginuid_from_pid(0, &uid); +- if (r >= 0) +- pw = pam_modutil_getpwuid(handle, uid); +- else { +- r = pam_get_user(handle, &username, NULL); +- if (r != PAM_SUCCESS) { +- pam_syslog(handle, LOG_ERR, "Failed to get user name."); +- return r; +- } +- +- if (isempty(username)) { +- pam_syslog(handle, LOG_ERR, "User name not valid."); +- return PAM_AUTH_ERR; +- } ++ r = pam_get_user(handle, &username, NULL); ++ if (r != PAM_SUCCESS) { ++ pam_syslog(handle, LOG_ERR, "Failed to get user name."); ++ return r; ++ } + +- pw = pam_modutil_getpwnam(handle, username); ++ if (isempty(username)) { ++ pam_syslog(handle, LOG_ERR, "User name not valid."); ++ return PAM_AUTH_ERR; + } + ++ pw = pam_modutil_getpwnam(handle, username); + if (!pw) { + pam_syslog(handle, LOG_ERR, "Failed to get user data."); + return PAM_USER_UNKNOWN; +@@ -123,16 +117,14 @@ static int get_user_data( + } + + static int get_seat_from_display(const char *display, const char **seat, uint32_t *vtnr) { +- _cleanup_free_ char *p = NULL; +- int r; +- _cleanup_close_ int fd = -1; + union sockaddr_union sa = { + .un.sun_family = AF_UNIX, + }; ++ _cleanup_free_ char *p = NULL, *tty = NULL; ++ _cleanup_close_ int fd = -1; + struct ucred ucred; + socklen_t l; +- _cleanup_free_ char *tty = NULL; +- int v; ++ int v, r; + + assert(display); + assert(vtnr); +@@ -194,13 +186,12 @@ _public_ PAM_EXTERN int pam_sm_open_sess + dbus_bool_t remote, existing; + int r; + uint32_t vtnr = 0; ++ uid_t original_uid; + + assert(handle); + + dbus_error_init(&error); + +- /* pam_syslog(handle, LOG_INFO, "pam-systemd initializing"); */ +- + /* Make this a NOP on non-logind systems */ + if (!logind_running()) + return PAM_SUCCESS; +@@ -213,6 +204,9 @@ _public_ PAM_EXTERN int pam_sm_open_sess + goto finish; + } + ++ if (debug) ++ pam_syslog(handle, LOG_INFO, "pam-systemd initializing"); ++ + r = get_user_data(handle, &username, &pw); + if (r != PAM_SUCCESS) + goto finish; +@@ -374,7 +368,11 @@ _public_ PAM_EXTERN int pam_sm_open_sess + if (debug) + pam_syslog(handle, LOG_DEBUG, "Asking logind to create session: " + "uid=%u pid=%u service=%s type=%s class=%s seat=%s vtnr=%u tty=%s display=%s remote=%s remote_user=%s remote_host=%s", +- uid, pid, service, type, class, seat, vtnr, tty, display, yes_no(remote), remote_user, remote_host); ++ pw->pw_uid, pid, ++ strempty(service), ++ type, class, ++ seat, vtnr, tty, display, ++ yes_no(remote), remote_user, remote_host); + + reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error); + if (!reply) { +@@ -388,6 +386,7 @@ _public_ PAM_EXTERN int pam_sm_open_sess + DBUS_TYPE_OBJECT_PATH, &object_path, + DBUS_TYPE_STRING, &runtime_path, + DBUS_TYPE_UNIX_FD, &session_fd, ++ DBUS_TYPE_UINT32, &original_uid, + DBUS_TYPE_STRING, &seat, + DBUS_TYPE_UINT32, &vtnr, + DBUS_TYPE_BOOLEAN, &existing, +@@ -399,8 +398,8 @@ _public_ PAM_EXTERN int pam_sm_open_sess + + if (debug) + pam_syslog(handle, LOG_DEBUG, "Reply from logind: " +- "id=%s object_path=%s runtime_path=%s session_fd=%d seat=%s vtnr=%u", +- id, object_path, runtime_path, session_fd, seat, vtnr); ++ "id=%s object_path=%s runtime_path=%s session_fd=%d seat=%s vtnr=%u original_uid=%u", ++ id, object_path, runtime_path, session_fd, seat, vtnr, original_uid); + + r = pam_misc_setenv(handle, "XDG_SESSION_ID", id, 0); + if (r != PAM_SUCCESS) { +@@ -408,10 +407,24 @@ _public_ PAM_EXTERN int pam_sm_open_sess + goto finish; + } + +- r = pam_misc_setenv(handle, "XDG_RUNTIME_DIR", runtime_path, 0); +- if (r != PAM_SUCCESS) { +- pam_syslog(handle, LOG_ERR, "Failed to set runtime dir."); +- goto finish; ++ if (original_uid == pw->pw_uid) { ++ /* Don't set $XDG_RUNTIME_DIR if the user we now ++ * authenticated for does not match the original user ++ * of the session. We do this in order not to result ++ * in privileged apps clobbering the runtime directory ++ * unnecessarily. */ ++ ++ r = pam_misc_setenv(handle, "XDG_RUNTIME_DIR", runtime_path, 0); ++ if (r != PAM_SUCCESS) { ++ pam_syslog(handle, LOG_ERR, "Failed to set runtime dir."); ++ goto finish; ++ } ++ } else if (getenv("XDG_RUNTIME_DIR")) { ++ r = pam_putenv(handle, "XDG_RUNTIME_DIR"); ++ if (r != PAM_SUCCESS && r != PAM_BAD_ITEM) { ++ pam_syslog(handle, LOG_ERR, "Failed to unset runtime dir."); ++ } ++ (void) unsetenv("XDG_RUNTIME_DIR"); + } + + if (!isempty(seat)) { diff --git a/1014-journald-with-journaling-FS.patch b/1014-journald-with-journaling-FS.patch new file mode 100644 index 0000000..6bf95fb --- /dev/null +++ b/1014-journald-with-journaling-FS.patch @@ -0,0 +1,52 @@ +--- systemd-208/src/journal/journald-server.c ++++ systemd-208/src/journal/journald-server.c 2013-12-10 16:31:50.770235717 +0000 +@@ -21,6 +21,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -878,7 +879,7 @@ finish: + + + static int system_journal_open(Server *s) { +- int r; ++ int r, fd; + char *fn; + sd_id128_t machine; + char ids[33]; +@@ -905,7 +906,31 @@ static int system_journal_open(Server *s + (void) mkdir("/var/log/journal/", 0755); + + fn = strappenda("/var/log/journal/", ids); +- (void) mkdir(fn, 0755); ++ (void)mkdir(fn, 0755); ++ ++ /* ++ * On journaling and/or compressing file systems avoid doubling the ++ * efforts for the system, that is set NOCOW and NOCOMP inode flags. ++ * Check for every single flag as otherwise some of the file systems ++ * may return EOPNOTSUPP on one unkown flag (like BtrFS does). ++ */ ++ if ((fd = open(fn, O_DIRECTORY)) >= 0) { ++ long flags; ++ if (ioctl(fd, FS_IOC_GETFLAGS, &flags) == 0) { ++ int old = flags; ++ if (!(flags&FS_NOATIME_FL) && ioctl(fd, FS_IOC_SETFLAGS, flags|FS_NOATIME_FL) == 0) ++ flags |= FS_NOATIME_FL; ++ if (!(flags&FS_NOCOW_FL) && ioctl(fd, FS_IOC_SETFLAGS, flags|FS_NOCOW_FL) == 0) ++ flags |= FS_NOCOW_FL; ++ if (!(flags&FS_NOCOMP_FL) && s->compress) { ++ flags &= ~FS_COMPR_FL; ++ flags |= FS_NOCOMP_FL; ++ } ++ if (old != flags) ++ ioctl(fd, FS_IOC_SETFLAGS, flags); ++ } ++ close(fd); ++ } + + fn = strappenda(fn, "/system.journal"); + r = journal_file_open_reliably(fn, O_RDWR|O_CREAT, 0640, s->compress, s->seal, &s->system_metrics, s->mmap, NULL, &s->system_journal); diff --git a/1016-support-powerfail-with-powerstatus.patch b/1016-support-powerfail-with-powerstatus.patch new file mode 100644 index 0000000..c59f682 --- /dev/null +++ b/1016-support-powerfail-with-powerstatus.patch @@ -0,0 +1,90 @@ +--- systemd-208/units/sigpwr.target ++++ systemd-208/units/sigpwr.target 2014-01-14 15:53:32.878735762 +0000 +@@ -8,3 +8,5 @@ + [Unit] + Description=Power Failure + Documentation=man:systemd.special(7) ++BindsTo=powerfail.service ++DefaultDependencies=no ++RefuseManualStart=yes +--- systemd-208/units/powerfail.service ++++ systemd-208/units/powerfail.service 2014-01-14 16:11:41.802235712 +0000 +@@ -0,0 +1,21 @@ ++# This file is part of systemd. ++# ++# Copyright (c) 2014 SUSE LINUX Products GmbH, Germany. ++# Author: Werner Fink ++# Please send feedback to http://www.suse.de/feedback ++# ++# Description: ++# ++# Used to start the systemd-powerfail.service ++# ++ ++[Unit] ++Description=powerfail handling ++BindsTo=sigpwr.target ++DefaultDependencies=no ++RefuseManualStart=yes ++ ++[Service] ++Type=oneshot ++ExecStart=/usr/lib/systemd/systemd-powerfail ++RemainAfterExit=false +--- systemd-208/man/systemd-powerfail.service.8 ++++ systemd-208/man/systemd-powerfail.service.8 2014-01-14 18:22:21.286735810 +0000 +@@ -0,0 +1,54 @@ ++'\" t ++.TH "SYSTEMD\-POWERFAIL\&.SERVICE" "8" "" "systemd 208" "systemd-powerfail.service" ++.\" ----------------------------------------------------------------- ++.\" * Define some portability stuff ++.\" ----------------------------------------------------------------- ++.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++.\" http://bugs.debian.org/507673 ++.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html ++.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++.ie \n(.g .ds Aq \(aq ++.el .ds Aq ' ++.\" ----------------------------------------------------------------- ++.\" * set default formatting ++.\" ----------------------------------------------------------------- ++.\" disable hyphenation ++.nh ++.\" disable justification (adjust text to left margin only) ++.ad l ++.\" ----------------------------------------------------------------- ++.\" * MAIN CONTENT STARTS HERE * ++.\" ----------------------------------------------------------------- ++.SH "NAME" ++systemd-powerfail.service, systemd-powerfail \- Power Fail signal handling ++.SH "SYNOPSIS" ++.PP ++systemd\-powerfail\&.service ++.PP ++/usr/lib/systemd/systemd\-powerfail ++.SH "DESCRIPTION" ++.PP ++systemd\-powerfail ++is a system service that is used to evaulate the content of ++\fI/var/run/powerstatus\fR. Based on the content of this ++file: ++.IP F(AIL) ++Power is failing, UPS is providing the power. The ++systemd\-powerfail ++is now doing a timed shutdown. ++.IP O(K) ++The power has been restored, and pending shutdown ++will be cancled. ++.IP L(OW) ++The power is failing and the UPS has a low battery. ++The ++systemd\-powerfail ++is doing an immediate shutdown. ++.PP ++If \fI/var/run/powerstatus\fR doesn't exist or contains anything else then the letters ++F, O or L, systemd\-powerfail will behave as if it has read the letter F. ++.PP ++.SH "SEE ALSO" ++.PP ++\fBshutdown\fR(8), ++\fBpowerd\fR(8) diff --git a/1017-skip-native-unit-handling-if-sysv-already-handled.patch b/1017-skip-native-unit-handling-if-sysv-already-handled.patch new file mode 100644 index 0000000..9390c42 --- /dev/null +++ b/1017-skip-native-unit-handling-if-sysv-already-handled.patch @@ -0,0 +1,20 @@ +For bnc#818044 +Based on http://cgit.freedesktop.org/systemd/systemd/patch/?id=67d6621059085963a2a908a3ea99ced3b0ca789e +--- + systemctl.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- systemd-208/src/systemctl/systemctl.c ++++ systemd-208/src/systemctl/systemctl.c 2014-01-21 13:00:52.910736187 +0000 +@@ -4453,6 +4453,11 @@ static int enable_unit(DBusConnection *b + if (r < 0) + return r; + ++ /* If the operation was fully executed by the SysV compat, ++ * let's finish early */ ++ if (strv_isempty(mangled_names)) ++ return 0; ++ + if (!bus || avoid_bus()) { + if (streq(verb, "enable")) { + r = unit_file_enable(arg_scope, arg_runtime, arg_root, mangled_names, arg_force, &changes, &n_changes); diff --git a/1018-Make-LSB-Skripts-know-about-Required-and-Should.patch b/1018-Make-LSB-Skripts-know-about-Required-and-Should.patch new file mode 100644 index 0000000..81a2692 --- /dev/null +++ b/1018-Make-LSB-Skripts-know-about-Required-and-Should.patch @@ -0,0 +1,51 @@ +--- systemd-208/src/core/service.c ++++ systemd-208/src/core/service.c 2014-01-17 12:15:52.527311588 +0000 +@@ -380,6 +380,8 @@ static int sysv_translate_facility(const + "remote_fs", SPECIAL_REMOTE_FS_TARGET, + "syslog", NULL, + "time", SPECIAL_TIME_SYNC_TARGET, ++ "all", SPECIAL_DEFAULT_TARGET, ++ "null", NULL, + }; + + unsigned i; +@@ -389,7 +391,7 @@ static int sysv_translate_facility(const + assert(name); + assert(_r); + +- n = *name == '$' ? name + 1 : name; ++ n = (*name == '$' || *name == '+') ? name + 1 : name; + + for (i = 0; i < ELEMENTSOF(table); i += 2) { + +@@ -816,10 +818,13 @@ static int service_load_sysv_path(Servic + startswith_no_case(t, "Should-Start:") || + startswith_no_case(t, "X-Start-Before:") || + startswith_no_case(t, "X-Start-After:")) { ++ UnitDependency d, e; + char *i, *w; + size_t z; + + state = LSB; ++ d = startswith_no_case(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER; ++ e = startswith_no_case(t, "Required-Start:") ? UNIT_REQUIRES_OVERRIDABLE : UNIT_WANTS; + + FOREACH_WORD_QUOTED(w, z, strchr(t, ':')+1, i) { + char *n, *m; +@@ -838,12 +843,15 @@ static int service_load_sysv_path(Servic + continue; + } + ++ if (*n == '+') ++ e = UNIT_WANTS; ++ + free(n); + + if (r == 0) + continue; + +- r = unit_add_dependency_by_name(u, startswith_no_case(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER, m, NULL, true); ++ r = unit_add_two_dependencies_by_name(u, d, e, m, NULL, true); + + if (r < 0) + log_error_unit(u->id, "[%s:%u] Failed to add dependency on %s, ignoring: %s", diff --git a/1019-make-completion-smart-to-be-able-to-redirect.patch b/1019-make-completion-smart-to-be-able-to-redirect.patch new file mode 100644 index 0000000..d1425d8 --- /dev/null +++ b/1019-make-completion-smart-to-be-able-to-redirect.patch @@ -0,0 +1,236 @@ +--- systemd-208/shell-completion/bash/hostnamectl ++++ systemd-208/shell-completion/bash/hostnamectl 2014-01-17 14:27:16.183272019 +0000 +@@ -30,6 +30,10 @@ _hostnamectl() { + local OPTS='-h --help --version --transient --static --pretty + --no-ask-password -H --host' + ++ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then ++ return 0 ++ fi ++ + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 +@@ -58,4 +62,4 @@ _hostnamectl() { + return 0 + } + +-complete -F _hostnamectl hostnamectl ++complete -o default -o bashdefault -F _hostnamectl hostnamectl +--- systemd-208/shell-completion/bash/journalctl ++++ systemd-208/shell-completion/bash/journalctl 2014-01-17 14:34:30.338737694 +0000 +@@ -49,6 +49,10 @@ _journalctl() { + --verify-key' + ) + ++ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then ++ return 0 ++ fi ++ + if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then + case $prev in + --boot|--this-boot|-b) +@@ -107,4 +111,4 @@ _journalctl() { + fi + } + +-complete -F _journalctl journalctl ++complete -o default -o bashdefault -F _journalctl journalctl +--- systemd-208/shell-completion/bash/kernel-install ++++ systemd-208/shell-completion/bash/kernel-install 2014-01-17 14:34:41.982255874 +0000 +@@ -18,11 +18,22 @@ + # You should have received a copy of the GNU Lesser General Public License + # along with systemd; If not, see . + ++__contains_word () { ++ local w word=$1; shift ++ for w in "$@"; do ++ [[ $w = "$word" ]] && return ++ done ++} ++ + _kernel_install() { + local comps + local MACHINE_ID + local cur=${COMP_WORDS[COMP_CWORD]} + ++ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then ++ return 0 ++ fi ++ + case $COMP_CWORD in + 1) + comps="add remove" +@@ -47,4 +58,4 @@ _kernel_install() { + return 0 + } + +-complete -F _kernel_install kernel-install ++complete -o default -o bashdefault -F _kernel_install kernel-install +--- systemd-208/shell-completion/bash/localectl ++++ systemd-208/shell-completion/bash/localectl 2014-01-17 14:34:52.546235747 +0000 +@@ -30,6 +30,10 @@ _localectl() { + local OPTS='-h --help --version --no-convert --no-pager --no-ask-password + -H --host' + ++ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then ++ return 0 ++ fi ++ + if __contains_word "$prev" $OPTS; then + case $prev in + --host|-H) +@@ -73,4 +77,4 @@ _localectl() { + return 0 + } + +-complete -F _localectl localectl ++complete -o default -o bashdefault -F _localectl localectl +--- systemd-208/shell-completion/bash/loginctl ++++ systemd-208/shell-completion/bash/loginctl 2014-01-17 14:35:03.386245699 +0000 +@@ -37,6 +37,10 @@ _loginctl () { + [ARG]='--host -H --kill-who --property -p --signal -s' + ) + ++ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then ++ return 0 ++ fi ++ + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --signal|-s) +@@ -106,4 +110,4 @@ _loginctl () { + return 0 + } + +-complete -F _loginctl loginctl ++complete -o default -o bashdefault -F _loginctl loginctl +--- systemd-208/shell-completion/bash/systemctl ++++ systemd-208/shell-completion/bash/systemctl 2014-01-17 14:35:26.506235666 +0000 +@@ -77,6 +77,10 @@ _systemctl () { + [ARG]='--host -H --kill-mode --kill-who --property -p --signal -s --type -t --state --root' + ) + ++ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then ++ return 0 ++ fi ++ + if __contains_word "--user" ${COMP_WORDS[*]}; then + mode=--user + else +@@ -226,4 +230,4 @@ _systemctl () { + return 0 + } + +-complete -F _systemctl systemctl ++complete -o default -o bashdefault -F _systemctl systemctl +--- systemd-208/shell-completion/bash/systemd-analyze ++++ systemd-208/shell-completion/bash/systemd-analyze 2014-01-17 14:35:38.366736021 +0000 +@@ -37,6 +37,10 @@ _systemd_analyze() { + [LOG_LEVEL]='set-log-level' + ) + ++ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then ++ return 0 ++ fi ++ + _init_completion || return + + for ((i=0; $i <= $COMP_CWORD; i++)); do +@@ -83,4 +87,4 @@ _systemd_analyze() { + return 0 + } + +-complete -F _systemd_analyze systemd-analyze ++complete -o default -o bashdefault -F _systemd_analyze systemd-analyze +--- systemd-208/shell-completion/bash/systemd-coredumpctl ++++ systemd-208/shell-completion/bash/systemd-coredumpctl 2014-01-17 14:35:46.434235632 +0000 +@@ -44,6 +44,10 @@ _coredumpctl() { + [DUMP]='dump gdb' + ) + ++ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then ++ return 0 ++ fi ++ + if __contains_word "$prev" '--output -o'; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames +@@ -82,4 +86,4 @@ _coredumpctl() { + return 0 + } + +-complete -F _coredumpctl systemd-coredumpctl ++complete -o default -o bashdefault -F _coredumpctl systemd-coredumpctl +--- systemd-208/shell-completion/bash/systemd-run ++++ systemd-208/shell-completion/bash/systemd-run 2014-01-17 14:35:55.938236298 +0000 +@@ -17,6 +17,13 @@ + # You should have received a copy of the GNU Lesser General Public License + # along with systemd; If not, see . + ++__contains_word () { ++ local w word=$1; shift ++ for w in "$@"; do ++ [[ $w = "$word" ]] && return ++ done ++} ++ + __systemctl() { + local mode=$1; shift 1 + systemctl $mode --full --no-legend "$@" +@@ -31,6 +38,11 @@ _systemd_run() { + + local mode=--system + local i ++ ++ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then ++ return 0 ++ fi ++ + for (( i=1; i <= COMP_CWORD; i++ )); do + if [[ ${COMP_WORDS[i]} != -* ]]; then + local root_command=${COMP_WORDS[i]} +@@ -60,4 +72,4 @@ _systemd_run() { + return 0 + } + +-complete -F _systemd_run systemd-run ++complete -o default -o bashdefault -F _systemd_run systemd-run +--- systemd-208/shell-completion/bash/timedatectl ++++ systemd-208/shell-completion/bash/timedatectl 2014-01-17 14:36:06.182735466 +0000 +@@ -30,6 +30,10 @@ _timedatectl() { + local OPTS='-h --help --version --adjust-system-clock --no-pager + --no-ask-password -H --host' + ++ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then ++ return 0 ++ fi ++ + if __contains_word "$prev" $OPTS; then + case $prev in + --host|-H) +@@ -73,4 +77,4 @@ _timedatectl() { + return 0 + } + +-complete -F _timedatectl timedatectl ++complete -o default -o bashdefault -F _timedatectl timedatectl +--- systemd-208/shell-completion/bash/udevadm ++++ systemd-208/shell-completion/bash/udevadm 2014-01-17 14:36:16.406236120 +0000 +@@ -36,6 +36,10 @@ _udevadm() { + + local verbs=(info trigger settle control monitor hwdb test-builtin test) + ++ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then ++ return 0 ++ fi ++ + for ((i=0; i <= COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" "${verbs[@]}" && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then +@@ -94,4 +98,4 @@ _udevadm() { + return 0 + } + +-complete -F _udevadm udevadm ++complete -o default -o bashdefault -F _udevadm udevadm diff --git a/Revert-service-drop-support-for-SysV-scripts-for-the-early.patch b/Revert-service-drop-support-for-SysV-scripts-for-the-early.patch index 137a482..41d51bf 100644 --- a/Revert-service-drop-support-for-SysV-scripts-for-the-early.patch +++ b/Revert-service-drop-support-for-SysV-scripts-for-the-early.patch @@ -10,8 +10,10 @@ Conflicts: src/core/service.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 5 deletions(-) ---- systemd-206.orig/src/core/service.c -+++ systemd-206/src/core/service.c +Index: systemd-208/src/core/service.c +=================================================================== +--- systemd-208.orig/src/core/service.c ++++ systemd-208/src/core/service.c @@ -51,7 +51,8 @@ typedef enum RunlevelType { @@ -53,7 +55,7 @@ Conflicts: #endif static const UnitActiveState state_translation_table[_SERVICE_STATE_MAX] = { -@@ -334,6 +347,9 @@ static char *sysv_translate_name(const c +@@ -340,6 +353,9 @@ static char *sysv_translate_name(const c if (endswith(name, ".sh")) /* Drop .sh suffix */ strcpy(stpcpy(r, name) - 3, ".service"); @@ -63,7 +65,7 @@ Conflicts: else /* Normal init script name */ strcpy(stpcpy(r, name), ".service"); -@@ -936,6 +952,13 @@ static int service_load_sysv_path(Servic +@@ -942,6 +958,13 @@ static int service_load_sysv_path(Servic if ((r = sysv_exec_commands(s, supports_reload)) < 0) goto finish; @@ -77,7 +79,7 @@ Conflicts: if (s->sysv_runlevels && !chars_intersect(RUNLEVELS_UP, s->sysv_runlevels)) { /* If there a runlevels configured for this service -@@ -1017,6 +1040,9 @@ static int service_load_sysv_name(Servic +@@ -1023,6 +1046,9 @@ static int service_load_sysv_name(Servic if (endswith(name, ".sh.service")) return -ENOENT; @@ -87,7 +89,7 @@ Conflicts: STRV_FOREACH(p, UNIT(s)->manager->lookup_paths.sysvinit_path) { char *path; int r; -@@ -1037,6 +1063,18 @@ static int service_load_sysv_name(Servic +@@ -1043,6 +1069,18 @@ static int service_load_sysv_name(Servic } free(path); @@ -106,7 +108,7 @@ Conflicts: if (r < 0) return r; -@@ -3587,7 +3625,7 @@ static int service_enumerate(Manager *m) +@@ -3574,7 +3612,7 @@ static int service_enumerate(Manager *m) if (de->d_name[0] == 'S') { @@ -115,7 +117,7 @@ Conflicts: SERVICE(service)->sysv_start_priority_from_rcnd = MAX(a*10 + b, SERVICE(service)->sysv_start_priority_from_rcnd); -@@ -3604,7 +3642,8 @@ static int service_enumerate(Manager *m) +@@ -3591,7 +3629,8 @@ static int service_enumerate(Manager *m) goto finish; } else if (de->d_name[0] == 'K' && @@ -125,7 +127,7 @@ Conflicts: r = set_ensure_allocated(&shutdown_services, trivial_hash_func, trivial_compare_func); -@@ -3644,7 +3683,9 @@ static int service_enumerate(Manager *m) +@@ -3631,7 +3670,9 @@ static int service_enumerate(Manager *m) * runlevels we assume the stop jobs will be implicitly added * by the core logic. Also, we don't really distinguish here * between the runlevels 0 and 6 and just add them to the diff --git a/U_logind_revert_lazy_session_activation_on_non_vt_seats.patch b/U_logind_revert_lazy_session_activation_on_non_vt_seats.patch new file mode 100644 index 0000000..fca524f --- /dev/null +++ b/U_logind_revert_lazy_session_activation_on_non_vt_seats.patch @@ -0,0 +1,26 @@ +From 3fdb2494c1e24c0a020f5b54022d2c751fd26f50 Mon Sep 17 00:00:00 2001 +From: David Herrmann +Date: Thu, 28 Nov 2013 09:52:18 +0000 +Subject: login: revert lazy session-activation on non-VT seats + +Existing applications like gdm already depend on new sessions to get +immediately activated on seats without VTs. Fixes a bug reported as: + [systemd-devel] systemd 208:trouble with inactive user sessions at non-seat0 seats + +This patch restores the original behavior. We either need to add a new +flag for session-creation or some other heuristic to avoid activating new +sessions in the future. +--- +--- a/src/login/logind-seat.c 2013-11-28 11:30:49.624623090 -0200 ++++ b/src/login/logind-seat.c 2013-11-28 11:31:46.668792391 -0200 +@@ -420,8 +420,8 @@ + seat_send_changed(s, "Sessions\0"); + + /* On seats with VTs, the VT logic defines which session is active. On +- * seats without VTs, we automatically activate the first session. */ +- if (!seat_has_vts(s) && !s->active) ++ * seats without VTs, we automatically activate new sessions. */ ++ if (!seat_has_vts(s)) + seat_set_active(s, session); + + return 0; diff --git a/after-local.service b/after-local.service new file mode 100644 index 0000000..a9fb26a --- /dev/null +++ b/after-local.service @@ -0,0 +1,18 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +[Unit] +Description=/etc/init.d/after.local Compatibility +ConditionFileIsExecutable=/etc/init.d/after.local +After=getty.target + +[Service] +Type=idle +ExecStart=/etc/init.d/after.local +TimeoutSec=0 +RemainAfterExit=yes +SysVStartPriority=99 diff --git a/analyze-fix-crash-in-command-line-parsing.patch b/analyze-fix-crash-in-command-line-parsing.patch new file mode 100644 index 0000000..f76266e --- /dev/null +++ b/analyze-fix-crash-in-command-line-parsing.patch @@ -0,0 +1,35 @@ +From da6de8a55784115451582051c8da620056994a05 Mon Sep 17 00:00:00 2001 +From: Frederic Crozat +Date: Mon, 20 Jan 2014 11:05:22 +0100 +Subject: [PATCH] analyze: fix crash in command line parsing + +Ensure DBusError is set before it can possibly be freed on return. +Fix crash when calling set-log-level without any parameter. + +Fix https://bugzilla.novell.com/show_bug.cgi?id=859365 +--- + src/analyze/systemd-analyze.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c +index 27d063c..cdfae93 100644 +--- a/src/analyze/systemd-analyze.c ++++ b/src/analyze/systemd-analyze.c +@@ -1226,13 +1226,13 @@ static int set_log_level(DBusConnection *bus, char **args) { + assert(bus); + assert(args); + ++ dbus_error_init(&error); + if (strv_length(args) != 1) { + log_error("This command expects one argument only."); + return -E2BIG; + } + + value = args[0]; +- dbus_error_init(&error); + + m = dbus_message_new_method_call("org.freedesktop.systemd1", + "/org/freedesktop/systemd1", +-- +1.8.4 + diff --git a/apply-ACL-for-nvidia-device-nodes.patch b/apply-ACL-for-nvidia-device-nodes.patch index 44d90f3..7b5e362 100644 --- a/apply-ACL-for-nvidia-device-nodes.patch +++ b/apply-ACL-for-nvidia-device-nodes.patch @@ -7,34 +7,29 @@ set ACL on nvidia devices (bnc#808319). src/login/logind-acl.c | 3 +++ 1 file changed, 3 insertions(+) ---- systemd-206.orig/src/login/logind-acl.c -+++ systemd-206/src/login/logind-acl.c -@@ -24,6 +24,7 @@ - #include - #include - #include -+#include - #include "logind-acl.h" - #include "util.h" -@@ -287,6 +288,22 @@ int devnode_acl_all(struct udev *udev, +Index: systemd-208/src/login/logind-acl.c +=================================================================== +--- systemd-208.orig/src/login/logind-acl.c ++++ systemd-208/src/login/logind-acl.c +@@ -287,6 +287,22 @@ int devnode_acl_all(struct udev *udev, r = devnode_acl(n, flush, del, old_uid, add, new_uid); } -+ /* only search for nvidia* if /dev/nvidiactl exists */ -+ if (!devnode_acl("/dev/nvidiactl", flush, del, old_uid, add, new_uid)) { -+ char** directory; -+ char **f, *resolved; ++ /* only apply ACL on nvidia* if /dev/nvidiactl exists */ ++ if (devnode_acl("/dev/nvidiactl", flush, del, old_uid, add, new_uid) >= 0) { ++ int i; ++ char *devname; + -+ if (get_files_in_directory ("/dev", &directory)) { -+ STRV_FOREACH(f,directory) -+ if (startswith(*f,"nvidia")) { -+ resolved = strjoin("/dev/", *f, NULL); -+ devnode_acl(resolved, flush, del, old_uid, add, new_uid); -+ free(resolved); ++ for (i = 0; i <= 256 ; i++) { ++ if (asprintf(&devname, "/dev/nvidia%d", i) < 0) ++ break; ++ if (devnode_acl(devname, flush, del, old_uid, add, new_uid) < 0) { ++ free(devname); ++ break; + } ++ free(devname); + } -+ strv_free(directory); + } + finish: diff --git a/build-sys-make-multi-seat-x-optional.patch b/build-sys-make-multi-seat-x-optional.patch new file mode 100644 index 0000000..c86042c --- /dev/null +++ b/build-sys-make-multi-seat-x-optional.patch @@ -0,0 +1,60 @@ +From bd441fa27a22b7c6e11d9330560e0622fb69f297 Mon Sep 17 00:00:00 2001 +From: Zbigniew Jędrzejewski-Szmek +Date: Thu, 28 Nov 2013 17:07:29 +0000 +Subject: build-sys: make multi-seat-x optional + +At some point it should become disabled by default. + +http://lists.freedesktop.org/archives/systemd-devel/2013-November/014869.html +--- +diff --git a/Makefile.am b/Makefile.am +index 90874df..3598edd 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -4141,6 +4141,8 @@ MULTI_USER_TARGET_WANTS += \ + SYSTEM_UNIT_ALIASES += \ + systemd-logind.service dbus-org.freedesktop.login1.service + ++if ENABLE_MULTI_SEAT_X ++ + systemd_multi_seat_x_SOURCES = \ + src/login/multi-seat-x.c + +@@ -4151,6 +4153,8 @@ systemd_multi_seat_x_LDADD = \ + rootlibexec_PROGRAMS += \ + systemd-multi-seat-x + ++endif ++ + dist_udevrules_DATA += \ + src/login/70-uaccess.rules \ + src/login/70-power-switch.rules +diff --git a/configure.ac b/configure.ac +index f1b00c5..ab24266 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -794,6 +794,14 @@ fi + AM_CONDITIONAL(ENABLE_EFI, [test "x$have_efi" = "xyes"]) + + # ------------------------------------------------------------------------------ ++have_multi_seat_x=no ++AC_ARG_ENABLE(multi_seat_x, AS_HELP_STRING([--disable-multi-seat-x], [do not build multi-seat-x])) ++if test "x$enable_multi_seat_x" != "xno"; then ++ have_multi_seat_x=yes ++fi ++AM_CONDITIONAL(ENABLE_MULTI_SEAT_X, [test "$have_multi_seat_x" = "yes"]) ++ ++# ------------------------------------------------------------------------------ + AC_ARG_WITH(rc-local-script-path-start, + AS_HELP_STRING([--with-rc-local-script-path-start=PATH], + [Path to /etc/rc.local]), +@@ -1077,6 +1085,7 @@ AC_MSG_RESULT([ + nss-myhostname: ${have_myhostname} + gudev: ${enable_gudev} + gintrospection: ${enable_introspection} ++ multi-seat-x: ${have_multi_seat_x} + Python: ${have_python} + Python Headers: ${have_python_devel} + man pages: ${have_manpages} +-- +cgit v0.9.0.2-2-gbebe diff --git a/delay-fsck-cryptsetup-after-md-dmraid-lvm-are-started.patch b/delay-fsck-cryptsetup-after-md-dmraid-lvm-are-started.patch index f1145b9..b9ec512 100644 --- a/delay-fsck-cryptsetup-after-md-dmraid-lvm-are-started.patch +++ b/delay-fsck-cryptsetup-after-md-dmraid-lvm-are-started.patch @@ -7,18 +7,22 @@ Subject: delay fsck / cryptsetup after md / dmraid are started units/systemd-fsck@.service.in | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) ---- systemd-206_git201308300826.orig/src/cryptsetup/cryptsetup-generator.c -+++ systemd-206_git201308300826/src/cryptsetup/cryptsetup-generator.c -@@ -160,6 +160,7 @@ static int create_disk( - "Conflicts=umount.target\n" +Index: systemd-208/src/cryptsetup/cryptsetup-generator.c +=================================================================== +--- systemd-208.orig/src/cryptsetup/cryptsetup-generator.c ++++ systemd-208/src/cryptsetup/cryptsetup-generator.c +@@ -119,6 +119,7 @@ static int create_disk( "DefaultDependencies=no\n" "BindsTo=dev-mapper-%i.device\n" + "IgnoreOnIsolate=true\n" + "After=md.service dmraid.service\n" "After=systemd-readahead-collect.service systemd-readahead-replay.service\n", f); ---- systemd-206_git201308300826.orig/units/systemd-fsck@.service.in -+++ systemd-206_git201308300826/units/systemd-fsck@.service.in +Index: systemd-208/units/systemd-fsck@.service.in +=================================================================== +--- systemd-208.orig/units/systemd-fsck@.service.in ++++ systemd-208/units/systemd-fsck@.service.in @@ -10,7 +10,7 @@ Description=File System Check on %f Documentation=man:systemd-fsck@.service(8) DefaultDependencies=no diff --git a/handle-SYSTEMCTL_OPTIONS-environment-variable.patch b/handle-SYSTEMCTL_OPTIONS-environment-variable.patch index 79b99a6..577f268 100644 --- a/handle-SYSTEMCTL_OPTIONS-environment-variable.patch +++ b/handle-SYSTEMCTL_OPTIONS-environment-variable.patch @@ -7,11 +7,13 @@ Subject: handle SYSTEMCTL_OPTIONS environment variable src/systemctl/systemctl.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) ---- systemd-206.orig/src/systemctl/systemctl.c -+++ systemd-206/src/systemctl/systemctl.c -@@ -6197,6 +6197,28 @@ int main(int argc, char*argv[]) { - log_parse_environment(); - log_open(); +Index: systemd-208/src/systemctl/systemctl.c +=================================================================== +--- systemd-208.orig/src/systemctl/systemctl.c ++++ systemd-208/src/systemctl/systemctl.c +@@ -6115,6 +6115,28 @@ int main(int argc, char*argv[]) { + * ellipsized. */ + original_stdout_is_tty = isatty(STDOUT_FILENO); + if (secure_getenv("SYSTEMCTL_OPTIONS") && + (!program_invocation_short_name || 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 9450a8e..d7bea39 100644 --- a/handle-root_uses_lang-value-in-etc-sysconfig-language.patch +++ b/handle-root_uses_lang-value-in-etc-sysconfig-language.patch @@ -7,10 +7,12 @@ handle ROOT_USES_LANG=ctype (bnc#792182). src/core/locale-setup.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) ---- systemd-206_git201308300826.orig/src/core/locale-setup.c -+++ systemd-206_git201308300826/src/core/locale-setup.c -@@ -72,6 +72,11 @@ int locale_setup(char ***environment) { - char **env; +Index: systemd-208/src/core/locale-setup.c +=================================================================== +--- systemd-208.orig/src/core/locale-setup.c ++++ systemd-208/src/core/locale-setup.c +@@ -73,6 +73,11 @@ int locale_setup(char ***environment) { + char **add; char *variables[_VARIABLE_MAX] = {}; int r = 0, i; +#ifdef HAVE_SYSV_COMPAT @@ -21,12 +23,12 @@ handle ROOT_USES_LANG=ctype (bnc#792182). if (detect_container(NULL) <= 0) { r = parse_env_file("/proc/cmdline", WHITESPACE, -@@ -118,6 +123,27 @@ int locale_setup(char ***environment) { +@@ -119,6 +124,27 @@ int locale_setup(char ***environment) { if (r < 0 && r != -ENOENT) log_warning("Failed to read /etc/locale.conf: %s", strerror(-r)); } +#ifdef HAVE_SYSV_COMPAT -+ if (r <= 0 && ++ if (r <= 0 && + (r = parse_env_file("/etc/sysconfig/language", NEWLINE, + "ROOT_USES_LANG", &root_uses_lang, + "RC_LANG", &variables[VARIABLE_LANG], @@ -47,5 +49,5 @@ handle ROOT_USES_LANG=ctype (bnc#792182). + +#endif + add = NULL; for (i = 0; i < _VARIABLE_MAX; i++) { - if (!variables[i]) diff --git a/insserv-generator.patch b/insserv-generator.patch index 44330bf..3e0deb7 100644 --- a/insserv-generator.patch +++ b/insserv-generator.patch @@ -13,9 +13,11 @@ systemd unit drop-in files to add dependencies create mode 100644 src/insserv-generator/Makefile create mode 100644 src/insserv-generator/insserv-generator.c ---- systemd-206_git201308300826.orig/Makefile.am -+++ systemd-206_git201308300826/Makefile.am -@@ -321,6 +321,7 @@ rootlibexec_PROGRAMS = \ +Index: systemd-208/Makefile.am +=================================================================== +--- systemd-208.orig/Makefile.am ++++ systemd-208/Makefile.am +@@ -322,6 +322,7 @@ rootlibexec_PROGRAMS = \ systemd-sleep systemgenerator_PROGRAMS = \ @@ -23,7 +25,7 @@ systemd unit drop-in files to add dependencies systemd-getty-generator \ systemd-fstab-generator \ systemd-system-update-generator -@@ -1655,6 +1656,14 @@ systemd_delta_LDADD = \ +@@ -1682,6 +1683,14 @@ systemd_delta_LDADD = \ libsystemd-shared.la # ------------------------------------------------------------------------------ @@ -38,8 +40,10 @@ systemd unit drop-in files to add dependencies systemd_getty_generator_SOURCES = \ src/getty-generator/getty-generator.c +Index: systemd-208/src/insserv-generator/Makefile +=================================================================== --- /dev/null -+++ systemd-206_git201308300826/src/insserv-generator/Makefile ++++ systemd-208/src/insserv-generator/Makefile @@ -0,0 +1,28 @@ +# This file is part of systemd. +# @@ -69,9 +73,11 @@ systemd unit drop-in files to add dependencies + $(MAKE) -C .. clean + +.PHONY: all clean +Index: systemd-208/src/insserv-generator/insserv-generator.c +=================================================================== --- /dev/null -+++ systemd-206_git201308300826/src/insserv-generator/insserv-generator.c -@@ -0,0 +1,309 @@ ++++ systemd-208/src/insserv-generator/insserv-generator.c +@@ -0,0 +1,312 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** @@ -119,6 +125,9 @@ systemd unit drop-in files to add dependencies + if (endswith(name, ".sh")) + /* Drop .sh suffix */ + strcpy(stpcpy(r, name) - 3, ".service"); ++ if (startswith(name, "boot.")) ++ /* Drop SuSE-style boot. prefix */ ++ strcpy(stpcpy(r, name + 5), ".service"); + else + /* Normal init script name */ + strcpy(stpcpy(r, name), ".service"); @@ -227,7 +236,7 @@ systemd unit drop-in files to add dependencies + /* we ignore , not used, equivalent to X-Interactive */ + if (parsed && !startswith_no_case (parsed[0], "")) { + _cleanup_free_ char *facility = NULL; -+ if (sysv_translate_facility(parsed[0], NULL, &facility) < 0) ++ if (sysv_translate_facility(parsed[0], NULL, &facility) < 0 || !facility) + continue; + if (streq(facility, SPECIAL_REMOTE_FS_TARGET)) { + _cleanup_free_ char *unit = NULL; diff --git a/macros.systemd b/macros.systemd index dc70ceb..1a00395 100644 --- a/macros.systemd +++ b/macros.systemd @@ -46,6 +46,13 @@ if [ $FIRST_ARG -eq 1 ]; then \ touch "/var/lib/systemd/migrated/$sysv_service" || : \ done \ else \ + if [ $FIRST_ARG -gt 1 ]; then \ + for service in %{?*} ; do \ + if [ ! -e "/usr/lib/systemd/system/$service" ]; then \ + touch "/run/rpm-%{name}-update-$service-new-in-upgrade" \ + fi \ + done \ + fi \ for service in %{?*} ; do \ sysv_service=${service%.*} \ if [ ! -e "/var/lib/systemd/migrated/$sysv_service" ]; then \ @@ -74,6 +81,13 @@ if [ -n "$services_to_migrate" ]; then \ /usr/sbin/systemd-sysv-convert --apply $services_to_migrate >/dev/null 2>&1 || : \ elif [ $FIRST_ARG -eq 1 ]; then \ /usr/bin/systemctl preset %{?*} >/dev/null 2>&1 || : \ +elif [ $FIRST_ARG -gt 1 ]; then \ + for service in %{?*} ; do \ + if [ -e "/run/rpm-%{name}-update-$service-new-in-upgrade" ]; then \ + rm -f "/run/rpm-%{name}-update-$service-new-in-upgrade" \ + /usr/bin/systemctl preset "$service" >/dev/null 2>&1 || : \ + fi \ + done \ fi \ %{nil} diff --git a/make-emergency.service-conflict-with-syslog.socket.patch b/make-emergency.service-conflict-with-syslog.socket.patch new file mode 100644 index 0000000..63e513c --- /dev/null +++ b/make-emergency.service-conflict-with-syslog.socket.patch @@ -0,0 +1,22 @@ +If after emergency service had been started there is incoming +traffic on syslog.socket emergency.service gets killed due to +implicit dependencies on basic.target => sysinit.target which in +turn conflict with emergency.target. + +As a workaround explicitly stop syslog.socket when entering +emergency.service. + +Reference: bnc#852232 +Index: systemd-208/units/emergency.service.in +=================================================================== +--- systemd-208/units/emergency.service.in ++++ systemd-208/units/emergency.service.in +@@ -9,7 +9,7 @@ + Description=Emergency Shell + Documentation=man:sulogin(8) + DefaultDependencies=no +-Conflicts=shutdown.target ++Conflicts=shutdown.target syslog.socket + Before=shutdown.target + + [Service] diff --git a/plymouth-quit-and-wait-for-emergency-service.patch b/plymouth-quit-and-wait-for-emergency-service.patch new file mode 100644 index 0000000..560f9f3 --- /dev/null +++ b/plymouth-quit-and-wait-for-emergency-service.patch @@ -0,0 +1,35 @@ +--- systemd-208/units/console-shell.service.m4.in ++++ systemd-208/units/console-shell.service.m4.in 2014-02-05 11:28:31.446735287 +0000 +@@ -17,6 +17,8 @@ Before=getty.target + [Service] + Environment=HOME=/root + WorkingDirectory=/root ++ExecStartPre=-/usr/bin/plymouth quit ++ExecStartPre=-/usr/bin/plymouth --wait + ExecStart=-/usr/sbin/sulogin + ExecStopPost=-@SYSTEMCTL@ poweroff + Type=idle +--- systemd-208/units/rescue.service.m4.in ++++ systemd-208/units/rescue.service.m4.in 2014-02-05 11:28:45.214235524 +0000 +@@ -16,7 +16,8 @@ Before=shutdown.target + [Service] + Environment=HOME=/root + WorkingDirectory=/root +-ExecStartPre=-/bin/plymouth quit ++ExecStartPre=-/usr/bin/plymouth quit ++ExecStartPre=-/usr/bin/plymouth --wait + ExecStartPre=-/bin/echo -e 'Welcome to rescue mode! Type "systemctl default" or ^D to enter default mode.\\nType "journalctl -xb" to view system logs. Type "systemctl reboot" to reboot.' + ExecStart=-/usr/sbin/sulogin + ExecStopPost=-@SYSTEMCTL@ --fail --no-block default +--- systemd-208/units/emergency.service.in ++++ systemd-208/units/emergency.service.in 2014-02-05 11:28:51.782235282 +0000 +@@ -15,7 +15,8 @@ Before=shutdown.target + [Service] + Environment=HOME=/root + WorkingDirectory=/root +-ExecStartPre=-/bin/plymouth quit ++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" to try again\\nto boot into default mode.' + ExecStart=-/usr/sbin/sulogin + ExecStopPost=@SYSTEMCTL@ --fail --no-block default diff --git a/remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch b/remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch index 8f95318..f1e0dfc 100644 --- a/remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch +++ b/remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch @@ -11,8 +11,10 @@ PIDFile: and X-Systemd-RemainAfterExit to control it. src/core/service.h | 1 + 2 files changed, 33 insertions(+), 2 deletions(-) ---- systemd-206_git201308300826.orig/src/core/service.c -+++ systemd-206_git201308300826/src/core/service.c +Index: systemd-208/src/core/service.c +=================================================================== +--- systemd-208.orig/src/core/service.c ++++ systemd-208/src/core/service.c @@ -135,6 +135,7 @@ static void service_init(Unit *u) { #ifdef HAVE_SYSV_COMPAT s->sysv_start_priority = -1; @@ -21,7 +23,7 @@ PIDFile: and X-Systemd-RemainAfterExit to control it. #endif s->socket_fd = -1; s->guess_main_pid = true; -@@ -879,6 +880,34 @@ static int service_load_sysv_path(Servic +@@ -883,6 +884,34 @@ static int service_load_sysv_path(Servic free(short_description); short_description = d; @@ -56,7 +58,7 @@ PIDFile: and X-Systemd-RemainAfterExit to control it. } else if (state == LSB_DESCRIPTION) { if (startswith(l, "#\t") || startswith(l, "# ")) { -@@ -929,7 +958,8 @@ static int service_load_sysv_path(Servic +@@ -933,7 +962,8 @@ static int service_load_sysv_path(Servic /* Special setting for all SysV services */ s->type = SERVICE_FORKING; @@ -66,7 +68,7 @@ PIDFile: and X-Systemd-RemainAfterExit to control it. s->guess_main_pid = false; s->restart = SERVICE_RESTART_NO; s->exec_context.ignore_sigpipe = false; -@@ -2102,7 +2132,7 @@ static void service_enter_running(Servic +@@ -2080,7 +2110,7 @@ static void service_enter_running(Servic if ((main_pid_ok > 0 || (main_pid_ok < 0 && cgroup_ok != 0)) && (s->bus_name_good || s->type != SERVICE_DBUS)) { #ifdef HAVE_SYSV_COMPAT @@ -75,9 +77,11 @@ PIDFile: and X-Systemd-RemainAfterExit to control it. s->remain_after_exit = false; #endif service_set_state(s, SERVICE_RUNNING); ---- systemd-206_git201308300826.orig/src/core/service.h -+++ systemd-206_git201308300826/src/core/service.h -@@ -177,6 +177,7 @@ struct Service { +Index: systemd-208/src/core/service.h +=================================================================== +--- systemd-208.orig/src/core/service.h ++++ systemd-208/src/core/service.h +@@ -178,6 +178,7 @@ struct Service { bool is_sysv:1; bool sysv_has_lsb:1; bool sysv_enabled:1; diff --git a/sysctl-handle-boot-sysctl.conf-kernel_release.patch b/sysctl-handle-boot-sysctl.conf-kernel_release.patch index 45f1ad5..9b3defb 100644 --- a/sysctl-handle-boot-sysctl.conf-kernel_release.patch +++ b/sysctl-handle-boot-sysctl.conf-kernel_release.patch @@ -10,8 +10,10 @@ configuration), needed by openSUSE (bnc#809420). units/systemd-sysctl.service.in | 1 + 2 files changed, 9 insertions(+) ---- systemd-206.orig/src/sysctl/sysctl.c -+++ systemd-206/src/sysctl/sysctl.c +Index: systemd-207/src/sysctl/sysctl.c +=================================================================== +--- systemd-207.orig/src/sysctl/sysctl.c ++++ systemd-207/src/sysctl/sysctl.c @@ -26,6 +26,7 @@ #include #include @@ -20,7 +22,7 @@ configuration), needed by openSUSE (bnc#809420). #include "log.h" #include "strv.h" -@@ -297,6 +298,13 @@ int main(int argc, char *argv[]) { +@@ -299,6 +300,13 @@ int main(int argc, char *argv[]) { } else { _cleanup_strv_free_ char **files = NULL; char **f; @@ -34,13 +36,16 @@ configuration), needed by openSUSE (bnc#809420). r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); if (r < 0) { ---- systemd-206.orig/units/systemd-sysctl.service.in -+++ systemd-206/units/systemd-sysctl.service.in -@@ -20,6 +20,7 @@ ConditionDirectoryNotEmpty=|/usr/lib/sys +Index: systemd-207/units/systemd-sysctl.service.in +=================================================================== +--- systemd-207.orig/units/systemd-sysctl.service.in ++++ systemd-207/units/systemd-sysctl.service.in +@@ -19,6 +19,8 @@ ConditionDirectoryNotEmpty=|/usr/lib/sys ConditionDirectoryNotEmpty=|/usr/local/lib/sysctl.d ConditionDirectoryNotEmpty=|/etc/sysctl.d ConditionDirectoryNotEmpty=|/run/sysctl.d -+ConditionPathExistsGlob=|/boot/sysctl.conf-* ++ConditionPathExistsGlob=|/boot/sysctl.conf-%v ++RequiresMountsFor=/boot [Service] Type=oneshot diff --git a/systemd-207.tar.xz b/systemd-207.tar.xz deleted file mode 100644 index d97bd0f..0000000 --- a/systemd-207.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ac1f8120315e7969063bbb0c181c8dc59509aeaf10c4266077c257a182ad5942 -size 2363804 diff --git a/systemd-208.tar.xz b/systemd-208.tar.xz new file mode 100644 index 0000000..12a73a8 --- /dev/null +++ b/systemd-208.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa64fa864466fd5727005c55d61c092828b94b4f857272c0b503695022146390 +size 2382904 diff --git a/systemd-mini.changes b/systemd-mini.changes index fdbda22..30031a9 100644 --- a/systemd-mini.changes +++ b/systemd-mini.changes @@ -1,14 +1,476 @@ +------------------------------------------------------------------- +Wed Feb 5 11:19:28 UTC 2014 - werner@suse.de + +- Change and extend patch + 0001-On_s390_con3270_disable_ANSI_colour_esc.patch + to disable the workaround to find /dev/3270/tty1 as this now + should be done by a) the kernel patch + http://lkml.indiana.edu/hypermail/linux/kernel/1402.0/02319.html + and the changed udev rule 99-systemd.rules + +------------------------------------------------------------------- +Sun Feb 2 08:53:17 UTC 2014 - ohering@suse.com + +- Remove PreReq pidof from udev, nothing in this pkg uses it + +------------------------------------------------------------------- +Fri Jan 31 14:24:35 UTC 2014 - werner@suse.de + +- Change and extend patch + 0001-On_s390_con3270_disable_ANSI_colour_esc.patch + to re-enable colouring if 3270 console was enforced on the kernel + command line as 3270 cna handle colour ANSI escape sequences. + Also let the serial getty generator find the /dev/3270/tty1 + character device (bnc#861316) + +------------------------------------------------------------------- +Thu Jan 30 12:33:08 UTC 2014 - werner@suse.de + +- Add patch 0001-On_s390_con3270_disable_ANSI_colour_esc.patch + to strip the colouring ANSI escape sequences from the console + messages (bnc#860937) + +------------------------------------------------------------------- +Thu Jan 30 08:29:00 UTC 2014 - werner@suse.de + +- Change patch 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch + to skip already by the kernel managed devices + +------------------------------------------------------------------- +Wed Jan 29 18:03:39 UTC 2014 - arvidjaar@gmail.com + +- fix timeout stopping user@.service (bnc#841544) + * 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch + * 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch + * 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch + +------------------------------------------------------------------- +Tue Jan 28 12:44:07 UTC 2014 - werner@suse.de + +- Add patch 0001-upstream-systemctl-halt-reboot-error-handling.patch + to be able to detect if the sysctl reboot() returns. +- Add patch 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch + A check for unmaintained disk like devices is added to be able to + flush and maybe shut them down. Also the missing sync() system + call is added for the direct halt/reboot systemctl command. Then + the system halt is used as fallback if poweroff fails for both + the direct poweroff systemctl command as well as for the + systemd-shutdown utility. + +------------------------------------------------------------------- +Thu Jan 23 13:24:53 UTC 2014 - werner@suse.de + +- Make systemd-mini build + +------------------------------------------------------------------- +Thu Jan 23 13:18:39 UTC 2014 - werner@suse.de + +- Make requires bash-completion a recommends + +------------------------------------------------------------------- +Tue Jan 21 13:05:59 UTC 2014 - werner@suse.de + +- Add patch 1017-skip-native-unit-handling-if-sysv-already-handled.patch + to avoid that enabled boot scripts will be handled as unit files + by systemctl status command (bnc#818044) + +------------------------------------------------------------------- +Tue Jan 21 12:51:20 UTC 2014 - werner@suse.de + +- Drop patch 1017-enforce-sufficient-shutdown-warnings.patch + as the original code behaves exactly as the shutdown code of + the old SysVinit (bnc#750845) +- Rename support-powerfail-with-powerstatus.patch to + 1016-support-powerfail-with-powerstatus.patch + +------------------------------------------------------------------- +Mon Jan 20 10:18:20 UTC 2014 - fcrozat@suse.com + +- Add analyze-fix-crash-in-command-line-parsing.patch: fix crash in + systemd-analyze (bnc#859365) + +------------------------------------------------------------------- +Fri Jan 17 16:09:24 UTC 2014 - werner@suse.de + +- Add patch + 1019-make-completion-smart-to-be-able-to-redirect.patch + to make redirections work with the bash command completions for + for systemd command tools (bnc#856858, bnc#859072) + +------------------------------------------------------------------- +Fri Jan 17 12:24:13 UTC 2014 - werner@suse.de + +- Add patch + 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch + to support the "+" to tag wanted dependencies as well as make + sure that required dependencies are handles as required ones. + This should fix bnc#858864 and bnc#857204. + +------------------------------------------------------------------- +Thu Jan 16 16:08:00 UTC 2014 - lnussel@suse.de + +- apply preset also to service files that are new in upgrade + +------------------------------------------------------------------- +Wed Jan 15 14:11:02 UTC 2014 - werner@suse.de + +- Change support-powerfail-with-powerstatus.patch to use BindsTo + instead of BindTo + +------------------------------------------------------------------- +Wed Jan 15 12:34:53 UTC 2014 - werner@suse.de + +- Add patch 1017-enforce-sufficient-shutdown-warnings.patch + Warn once per hour in the last 3 hours, then all 30 minutes in last + hour, all 15 minutes in the last 45 minutes, all 10 minutes in the + last 15 minutes, and then all minute in the last 10 minutes (bnc#750845) + +------------------------------------------------------------------- +Tue Jan 14 18:28:09 UTC 2014 - werner@suse.de + +- Add patch support-powerfail-with-powerstatus.patch and source + file systemd-powerfail to implement SIGPWR support with evaluation + of the file /var/run/powerstatus (bnc#737690) + +------------------------------------------------------------------- +Fri Dec 20 12:06:18 UTC 2013 - werner@suse.de + +- Adapt patch + 1011-check-4-valid-kmsg-device.patch + to fit current upstream version maybe related to bnc#854884 +- Change patch + 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch + to check if XDG_RUNTIME_DIR is set before the call of pam_putenv() + may fix bnc#855160 + +------------------------------------------------------------------- +Fri Dec 20 09:40:01 UTC 2013 - lbsousajr@gmail.com + +- Disable multi-seat-x build, since package xorg-x11-server + currently in Factory no longer needs it. + +------------------------------------------------------------------- +Wed Dec 18 18:56:01 UTC 2013 - hrvoje.senjan@gmail.com + +- Added 0001-logind-garbage-collect-stale-users.patch: Don't stop a + running user manager from garbage-collecting the user. Original + behavior caused bnc#849870 + +------------------------------------------------------------------- +Mon Dec 16 11:08:33 UTC 2013 - lbsousajr@gmail.com + +- Add build-sys-make-multi-seat-x-optional.patch + * See: http://cgit.freedesktop.org/systemd/systemd/commit/?id=bd441fa27a22b7c6e11d9330560e0622fb69f297 + * Now systemd-multi-seat-x build can be disabled with configure option + --disable-multi-seat-x. It should be done when xorg-x11-server + no longer needs it (work in progress). + +------------------------------------------------------------------- +Mon Dec 16 09:43:29 UTC 2013 - fcrozat@suse.com + +- Update insserv-generator.patch: fix crash in insserv generator + (bnc#854314). +- Update apply-ACL-for-nvidia-device-nodes.patch with latest fixes + for Nvidia cards (bnc#808319). + +------------------------------------------------------------------- +Fri Dec 6 13:30:19 UTC 2013 - werner@suse.de + +- Add patch + 1014-journald-with-journaling-FS.patch + which now uses the file system ioctls for switching off atime, + compression, and copy-on-write of the journal directory of the + the systemd-journald (bnc#838475) +- Let us build require the package config for libpcre (bnc#853293) + +------------------------------------------------------------------- +Sat Nov 30 08:16:02 UTC 2013 - arvidjaar@gmail.com + +- Add patch + 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch + Make sure emergency shell is not killed by attempt to start another unit + (bnc#852021). Backported from d420282b28f50720e233ccb1c02547c562195653. +- Add patch + make-emergency.service-conflict-with-syslog.socket.patch + Previous patch did not fix problem if syslog connection request came + after emergency shell was already started. So forcibly stop syslog.socket + when starting emergency.service. (bnc#852232) + +------------------------------------------------------------------- +Thu Nov 28 10:25:58 UTC 2013 - lbsousajr@gmail.com + +- Add U_logind_revert_lazy_session_activation_on_non_vt_seats.patch + * See: http://cgit.freedesktop.org/systemd/systemd/commit/?id=3fdb2494c1e24c0a020f5b54022d2c751fd26f50 + +------------------------------------------------------------------- +Tue Nov 26 15:12:58 UTC 2013 - werner@suse.de + +- Add patch + 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch + to avoid (xdg-)su to set XDG_RUNTIME_DIR to the original user and + avoid that e.g. pulseaudio will create /run/user//pulse owned + by root (bnc#852015) + +------------------------------------------------------------------- +Thu Nov 21 12:27:11 UTC 2013 - werner@suse.de + +- Add patch + 1011-check-4-valid-kmsg-device.patch + to avoid a busy systemd-journald (bnc#851393) + +------------------------------------------------------------------- +Wed Nov 6 09:42:05 UTC 2013 - werner@suse.de + +- Add patch + 1010-do-not-install-sulogin-unit-with-poweroff.patch + that is do not install console-shell.service in any system target + as this will cause automatic poweroff at boot (bnc#849071) + +------------------------------------------------------------------- +Mon Nov 4 15:23:02 UTC 2013 - werner@suse.de + +- Add upstream patch + 0001-analyze-set-text-on-side-with-most-space.patch + to place the text on the side with most space + +------------------------------------------------------------------- +Fri Oct 25 12:12:48 UTC 2013 - werner@suse.de + +- Add upstream patch + 0001-analyze-set-white-background.patch + to make SVG output of systemd analyze readable + +------------------------------------------------------------------- +Mon Oct 21 09:27:36 UTC 2013 - werner@suse.de + +- Add patch + 1009-make-xsltproc-use-correct-ROFF-links.patch + to have valid ROFF links in manual pages working again (bnc#842844) + +------------------------------------------------------------------- +Tue Oct 15 13:50:52 CEST 2013 - fcrozat@suse.com + +- Add + 0001-gpt-auto-generator-exit-immediately-if-in-container.patch: + don't start gpt auto-generator in container (git). +- Add + 0001-manager-when-verifying-whether-clients-may-change-en.patch: + fix reload check in selinux case (git). +- Add 0001-logind-fix-bus-introspection-data-for-TakeControl.patch: + fix introspection for TakeControl (git). +- Add 0001-mount-check-for-NULL-before-reading-pm-what.patch: fix + crash when parsing some incorrect unit (git). +- Add + 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch: + Fix udev rules parsing (git). +- Add + 0001-systemd-serialize-deserialize-forbid_restart-value.patch: + Fix incorrect deserialization for forbid_restart (git). +- Add + 0001-core-unify-the-way-we-denote-serialization-attribute.patch: + Ensure forbid_restart is named like other attributes (git). +- Add 0001-journald-fix-minor-memory-leak.patch: fix memleak in + journald (git). +- Add + 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch: + Improve ACPI firmware performance parsing (git). +- Add + 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch: + Fix journal rotation (git). +- Add + 0001-login-fix-invalid-free-in-sd_session_get_vt.patch: + Fix memory corruption in sd_session_get_vt (git). +- Add 0001-login-make-sd_session_get_vt-actually-work.patch: Ensure + sd_session_get_vt returns correct value (git). +- Add 0001-Never-call-qsort-on-potentially-NULL-arrays.patch: Don't + call qsort on NULL arrays (git). +- Add 0001-dbus-common-avoid-leak-in-error-path.patch: Fix memleak + in dbus-common code (git). +- Add 0001-drop-ins-check-return-value.patch: Fix return value for + drop-ins checks (git). +- Add 0001-shared-util-Fix-glob_extend-argument.patch: Fix + glob_extend argument (git). +- Add 0001-Fix-bad-assert-in-show_pid_array.patch: Fix bad assert + in show_pid_array (git). + + +------------------------------------------------------------------- +Thu Oct 3 08:43:51 UTC 2013 - fcrozat@suse.com + +- Add 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch: + fix acpi memleak. +- Add + 0002-fix-lingering-references-to-var-lib-backlight-random.patch: + fix invalid path in documentation. +- Add + 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch: + fix invalid memory free. +- Add 0004-systemctl-fix-name-mangling-for-sysv-units.patch: fix + name mangling for sysv units. +- Add + 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch: + fix OOM handling. +- Add 0006-journald-add-missing-error-check.patch: add missing + error check. +- Add 0007-bus-fix-potentially-uninitialized-memory-access.patch: + fix uninitialized memory access. +- Add 0008-dbus-fix-return-value-of-dispatch_rqueue.patch: fix + return value. +- Add 0009-modules-load-fix-error-handling.patch: fix error + handling. +- Add 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch: + fix incorrect memory access. +- Add 0011-strv-don-t-access-potentially-NULL-string-arrays.patch: + fix incorrect memory access. +- Add + 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch: + fix invalid pointer. +- Add + 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch: + fix permission on /run/log/journal. +- Add + 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch: + order remote mount points properly before remote-fs.target. + +------------------------------------------------------------------- +Wed Oct 2 14:10:41 UTC 2013 - hrvoje.senjan@gmail.com + +- Explicitly require pam-config for %post of the main package + +------------------------------------------------------------------- +Wed Oct 2 08:03:30 UTC 2013 - fcrozat@suse.com + +- Release v208: + + logind gained support for facilitating privileged input and drm + devices access for unprivileged clients (helps Wayland / + kmscon). + + New kernel command line luks.options= allows to specify LUKS + options, when used with luks.uuid= + + tmpfileS.d snippets can uses specifier expansion in path names + (%m, %b, %H, %v). + + New tmpfiles.d command "m" introduced to change + owner/group/access mode of a file/directory only if it exists. + + MemorySoftLimit= cgroup settings is no longer supported + (underlying kernel cgroup attribute will disappear in the + future). + + memeory.use_hierarchy cgroup attribute is enabled for all + cgroups systemd creates in memory cgroup hierarchy. + + New filed _SYSTEMD_SLICE= is logged in journal messages related + to a slice. + + systemd-journald will no longer adjust the group of journal + files it creates to "systemd-journal" group. Permissions and + owernship is adjusted when package is upgraded. + + Backlight and random seed files are now stored in + /var/lib/systemd. + + Boot time performance measurements included ACPI 5.0 FPDT + informations if available. +- Drop merged patches: + 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch, + 0002-cgroup-correct-the-log-information.patch, + 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch, + 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch, + 0005-core-cgroup-first-print-then-free.patch, + 0006-swap-fix-reverse-dependencies.patch, + 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch, + 0009-polkit-Avoid-race-condition-in-scraping-proc.patch, + Fix-timeout-when-stopping-Type-notify-service.patch, + set-ignoreonisolate-noauto-cryptsetup.patch, + 0001-Fix-buffer-overrun-when-enumerating-files.patch, + 0007-libudev-fix-move_later-comparison.patch. +- Refresh patches + remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch, + delay-fsck-cryptsetup-after-md-dmraid-lvm-are-started.patch, + handle-root_uses_lang-value-in-etc-sysconfig-language.patch, + handle-SYSTEMCTL_OPTIONS-environment-variable.patch, + Revert-service-drop-support-for-SysV-scripts-for-the-early.patch. +- Own more ghost files. +- Do not run pam-config in systemd-mini %post. +- Add after-local.service to run after.local late during the boot + process (bnc#778715). + +------------------------------------------------------------------- +Tue Oct 1 17:09:01 UTC 2013 - fcrozat@suse.com + +- Update Fix-timeout-when-stopping-Type-notify-service.patch with + upstream fix. +- No longer start ask-password-wall, was causing too much spam on + terminals (bnc#747783). + +------------------------------------------------------------------- +Mon Sep 30 15:42:45 UTC 2013 - fcrozat@suse.com + +- Add set-ignoreonisolate-noauto-cryptsetup.patch: ensure noauto + encrypted mounts survives runlevel changes (bnc#843085). +- Add 0001-Fix-buffer-overrun-when-enumerating-files.patch: fix + logind crash when /run/systemd/sessions was too big (bnc#840055, + initial fix from hpj@suse.com). +- Update sysctl-handle-boot-sysctl.conf-kernel_release.patch to + only check for /boot/sysctl.conf- presence. +- Add service wrapper for after.local (bnc#778715). + +------------------------------------------------------------------- +Fri Sep 27 15:47:15 UTC 2013 - fcrozat@suse.com + +- Update use-usr-sbin-sulogin-for-emergency-service.patch to apply + to all services using sulogin and remove generated files from + upstream tarball (bnc#841398). + +------------------------------------------------------------------- +Mon Sep 23 13:09:06 UTC 2013 - arvidjaar@gmail.com + +- Fix-timeout-when-stopping-Type-notify-service.patch + Make sure MAINPID is watched when it becomes known (bnc#841544) + +------------------------------------------------------------------- +Mon Sep 23 13:11:08 CEST 2013 - fcrozat@suse.com + +- Remove output and error redirection to /dev/null in install + script, it might help tracing pam related issue (bnc#841573). + +------------------------------------------------------------------- +Thu Sep 19 16:37:03 CEST 2013 - fcrozat@suse.com + +- Move symlink migration trigger to post (bnc#821800). + +------------------------------------------------------------------- +Wed Sep 18 23:55:09 UTC 2013 - crrodriguez@opensuse.org + +- 0009-polkit-Avoid-race-condition-in-scraping-proc.patch + VUL-0: polkit: process subject race condition [bnc#835827] + CVE-2013-4288 + +------------------------------------------------------------------- +Wed Sep 18 23:45:54 UTC 2013 - crrodriguez@opensuse.org + +- Build with --disable-ima as the openSUSE kernel + does not support IMA (CONFIG_IMA is not set) + +------------------------------------------------------------------- +Wed Sep 18 23:40:27 UTC 2013 - crrodriguez@opensuse.org + +- Build with --disable-smack as the openSUSE kernel + does not support smack (CONFIG_SECURITY_SMACK is not set) + +------------------------------------------------------------------- +Wed Sep 18 12:05:47 UTC 2013 - fcrozat@suse.com + +- Don't use a trigger to create symlink for sysctl.conf, always run + the test on %post (bnc#840864). +- Update sysctl-handle-boot-sysctl.conf-kernel_release.patch to + ensure /boot is mounted before reading /boot/sysctl.conf-* + (bnc#809420). + ------------------------------------------------------------------- Mon Sep 16 17:41:24 UTC 2013 - crrodriguez@opensuse.org -- 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch - really fixes the swap unit problem mentioned in previous +- 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch + really fixes the swap unit problem mentioned in previous commit & the opensuse-factory mailing list. ------------------------------------------------------------------- Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org -- 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch +- 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch missing important check on return value. - 0002-cgroup-correct-the-log-information.patch fix misleading log information. @@ -18,7 +480,7 @@ Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org should fail if write fails. - 0005-core-cgroup-first-print-then-free.patch use-after-free will trigger if there is an error condition. -- 0006-swap-fix-reverse-dependencies.patch reported in +- 0006-swap-fix-reverse-dependencies.patch reported in opensuse-factory list, topic "swap isn't activated" - 0007-libudev-fix-move_later-comparison.patch libudev invalid usage of "move_later". @@ -27,10 +489,10 @@ Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org Sat Sep 14 06:52:32 UTC 2013 - crrodriguez@opensuse.org - while testing this new release I get in the logs ocassionally - at boot "systemd[1]: Failed to open private bus connection: - Failed to connect to socket /var/run/dbus/system_bus_socket: + at boot "systemd[1]: Failed to open private bus connection: + Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory" indeed DBUS_SYSTEM_BUS_DEFAULT_ADDRESS - is defined to /var/run/dbus/system_bus_socket instead of + is defined to /var/run/dbus/system_bus_socket instead of /run/dbus/system_bus_socket and that does not fly when /var/run is not yet available. (systemd-dbus-system-bus-address.patch) @@ -42,10 +504,10 @@ Fri Sep 13 07:47:40 UTC 2013 - fcrozat@suse.com ------------------------------------------------------------------- Fri Sep 13 03:14:36 UTC 2013 - crrodriguez@opensuse.org -- version 207, distribution specific changes follow, for overall +- version 207, distribution specific changes follow, for overall release notes see NEWS. -- Fixed: - * Failed at step PAM spawning /usr/lib/systemd/systemd: +- Fixed: + * Failed at step PAM spawning /usr/lib/systemd/systemd: Operation not permitted * Fix shutdown hang "a stop job is running for Session 1 of user root" that was reported in opensuse-factory list. @@ -152,7 +614,7 @@ Fri Jul 5 02:17:19 UTC 2013 - crrodriguez@opensuse.org ------------------------------------------------------------------- Fri Jul 5 02:09:55 UTC 2013 - crrodriguez@opensuse.org -- fix broken symlink, service is called systemd-random-seed now. +- fix broken symlink, service is called systemd-random-seed now. ------------------------------------------------------------------- Thu Jul 4 10:20:23 CEST 2013 - fcrozat@suse.com @@ -287,13 +749,13 @@ Fri Jun 21 12:40:27 UTC 2013 - rmilasan@suse.com - Automatically online CPUs/Memory on CPU/Memory hotplug add events (bnc#703100, fate#311831). - add: 1008-physical-hotplug-cpu-and-memory.patch + add: 1008-physical-hotplug-cpu-and-memory.patch ------------------------------------------------------------------- Wed Jun 19 08:44:06 UTC 2013 - mhrusecky@suse.com - Dropped backward compatibility -- Added check for upstream rpm macros changes +- Added check for upstream rpm macros changes ------------------------------------------------------------------- Mon Jun 18 12:13:25 UTC 2013 - mhrusecky@suse.com @@ -303,7 +765,7 @@ Mon Jun 18 12:13:25 UTC 2013 - mhrusecky@suse.com ------------------------------------------------------------------- Tue Jun 18 00:33:10 UTC 2013 - crrodriguez@opensuse.org -- 0001-journal-letting-interleaved-seqnums-go.patch and +- 0001-journal-letting-interleaved-seqnums-go.patch and 0002-journal-remember-last-direction-of-search-and-keep-o.patch fix possible infinite loops in the journal code, related to bnc #817778 @@ -340,8 +802,8 @@ Tue Jun 11 02:29:49 UTC 2013 - crrodriguez@opensuse.org - 0004-journald-DO-recalculate-the-ACL-mask-but-only-if-it-.patch fixes : - * systemd-journald[347]: Failed to set ACL on - /var/log/journal/11d90b1c0239b5b2e38ed54f513722e3/user-1000.journal, + * systemd-journald[347]: Failed to set ACL on + /var/log/journal/11d90b1c0239b5b2e38ed54f513722e3/user-1000.journal, ignoring: Invalid argument - 006-systemctl-core-allow-nuking-of-symlinks-to-removed-u.patch systemctl disable should remove dangling symlinks. @@ -403,7 +865,7 @@ support has been removed from the kernel. fixed in systemd v199, commit 89d09e1b5c65a2d97840f682e0932c8bb499f166 - Apply rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch only on ARM, patch rejected upstream because is too generic. -- no such define TARGET_SUSE exists but it is used in +- no such define TARGET_SUSE exists but it is used in Revert-service-drop-support-for-SysV-scripts-for-the-early.patch use HAVE_SYSV_COMPAT instead. @@ -462,7 +924,7 @@ Thu Apr 25 08:19:30 UTC 2013 - rmilasan@suse.com - Rename remaning udev patches (clean-up). - Generate %{_libexecdir}/modules-load.d/sg.conf so we load sg module at - boot time not from udev (bnc#761109). + boot time not from udev (bnc#761109). - Drop unused patches: 1001-Reinstate-TIMEOUT-handling.patch 1005-udev-fix-sg-autoload-regression.patch @@ -490,7 +952,7 @@ Mon Apr 22 09:48:22 UTC 2013 - fcrozat@suse.com ------------------------------------------------------------------- Sun Apr 21 22:24:15 UTC 2013 - crrodriguez@opensuse.org -- Fix packaging error, there is no syslog.target anymore +- Fix packaging error, there is no syslog.target anymore do not pretend there is one. ------------------------------------------------------------------- @@ -531,14 +993,14 @@ Fri Apr 12 16:58:31 UTC 2013 - fcrozat@suse.com from an indexed database. %udev_hwdb_update macro should be used by packages adding entries to this database. + Journal gained support for "Message Catalog", indexed database - to link up additional information with journal entries. + to link up additional information with journal entries. %journal_catalog_update macro should be used by packages adding %entries to this database. + "age" field for tmpfiles entries can be set to 0, forcing removal of files matching this entry. + coredumpctl gained "gdb" verb to invoke gdb on selected coredump. - + New rpm macros has been added: %udev_rules_update(), + + New rpm macros has been added: %udev_rules_update(), %_udevhwdbdir, %_udevrulesdir, %_journalcatalogdir, %_tmpfilesdir, %_sysctldir. + In service files, %U can be used for configured user name of @@ -562,7 +1024,7 @@ Fri Apr 12 16:58:31 UTC 2013 - fcrozat@suse.com (normal clean-up with tmpfiles is still done in addition to this though). + Resource limits (as exposed by cgroup controlers) can be - controlled dynamically at runtime for all units, using + controlled dynamically at runtime for all units, using "systemctl set-cgroup-attr foobar.server cgroup.attribute value". Those settings are stored persistenly on disk. + systemd-vconsole-setup will now copy all fonts settings to all @@ -696,14 +1158,14 @@ Thu Mar 28 09:24:43 UTC 2013 - rmilasan@suse.com - udev: ensure that the network interfaces are renamed even if they exist (bnc#809843). - add: 1027-udev-always-rename-network.patch + add: 1027-udev-always-rename-network.patch ------------------------------------------------------------------- Wed Mar 20 10:14:59 UTC 2013 - rmilasan@suse.com - udev: re-add persistent network rules (bnc#809843). add: 1026-re-add-persistent-net.patch -- rebase all patches, ensure that they apply properly. +- rebase all patches, ensure that they apply properly. ------------------------------------------------------------------- Thu Feb 21 14:45:12 UTC 2013 - fcrozat@suse.com @@ -728,7 +1190,7 @@ Tue Feb 19 09:51:18 UTC 2013 - rmilasan@suse.com - udev: usb_id: parse only 'size' bytes of the 'descriptors' buffer add: 1024-udev-usb_id-parse-only-size-bytes-of-the-descriptors.patch - udev: expose new ISO9660 properties from libblkid - add: 1025-udev-expose-new-ISO9660-properties-from-libblkid.patch + add: 1025-udev-expose-new-ISO9660-properties-from-libblkid.patch ------------------------------------------------------------------- Mon Feb 18 09:27:05 UTC 2013 - jengelh@inai.de @@ -763,7 +1225,7 @@ Wed Feb 13 11:34:06 UTC 2013 - rmilasan@suse.com - udev: use unique names for temporary files created in /dev. add: 1022-udev-use-unique-names-for-temporary-files-created-in.patch - cdrom_id: add data track count for bad virtual drive. - add: 1023-cdrom_id-add-data-track-count-for-bad-virtual-drive.patch + add: 1023-cdrom_id-add-data-track-count-for-bad-virtual-drive.patch ------------------------------------------------------------------- Tue Feb 12 09:16:23 UTC 2013 - rmilasan@suse.com @@ -785,7 +1247,7 @@ Fri Feb 1 16:27:45 UTC 2013 - fcrozat@suse.com Tue Jan 29 13:32:30 UTC 2013 - rmilasan@suse.com - udev: Fix device matching in the accelerometer - add: 1019-udev-Fix-device-matching-in-the-accelerometer.patch + add: 1019-udev-Fix-device-matching-in-the-accelerometer.patch - keymap: add aditional support for some keyboard keys add: 1018-keymap-add-aditional-support.patch - journalctl: require argument for --priority @@ -794,7 +1256,7 @@ Tue Jan 29 13:32:30 UTC 2013 - rmilasan@suse.com libudev-validate-argument-udev_enumerate_new.patch kmod-fix-builtin-typo.patch - rename udev-root-symlink.service to systemd-udev-root-symlink.service. -- fix in udev package missing link in basic.target.wants for +- fix in udev package missing link in basic.target.wants for systemd-udev-root-symlink.service ------------------------------------------------------------------- @@ -926,7 +1388,7 @@ Wed Jan 9 09:42:50 UTC 2013 - rmilasan@suse.com add: 1014-udev-fix-whitespace.patch - udev: properly handle symlink removal by 'change' event add: 1015-udev-properly-handle-symlink-removal-by-change-event.patch -- udev: builtin - do not fail builtin initialization if one of +- udev: builtin - do not fail builtin initialization if one of them returns an error add: 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch - udev: use usec_t and now() @@ -938,7 +1400,7 @@ Tue Jan 8 12:47:43 UTC 2013 - rmilasan@suse.com - udevd: add missing ':' to getopt_long 'e'. add: 1007-udevd-add-missing-to-getopt_long-e.patch - clean up systemd.spec, make it easy to see which are udev and - systemd patches. + systemd patches. - make 'reload' and 'force-reload' LSB compliant (bnc#793936). ------------------------------------------------------------------- @@ -946,8 +1408,8 @@ Tue Dec 11 00:22:50 UTC 2012 - crrodriguez@opensuse.org - detect-btrfs-ssd.patch: Fix btrfs detection on SSD. - timedated-donot-close-bogus-dbus-connection.patch: Avoid - closing an non-existent dbus connection and getting assertion - failures. + closing an non-existent dbus connection and getting assertion + failures. ------------------------------------------------------------------- Mon Dec 10 14:22:21 UTC 2012 - coolo@suse.com @@ -980,7 +1442,7 @@ Tue Dec 4 16:51:32 UTC 2012 - fcrozat@suse.com ------------------------------------------------------------------- Thu Nov 22 14:22:00 UTC 2012 - rmilasan@suse.com -- Fix creation of /dev/root link. +- Fix creation of /dev/root link. ------------------------------------------------------------------- Tue Nov 20 18:25:49 CET 2012 - fcrozat@suse.com @@ -1139,7 +1601,7 @@ Thu Oct 4 11:23:42 UTC 2012 - fcrozat@suse.com + Optional journal gateway daemon (systemd-journal-gatewayd.service) to access journal via HTTP and JSON. Use "wget http://localhost:19531/entries" to get - /var/log/messages compatible format and + /var/log/messages compatible format and 'curl -H"Accept: application/json" http://localhost:19531/entries' for JSON formatted content. HTML5 static page is also available as explained on @@ -1369,7 +1831,7 @@ Thu Apr 19 10:07:47 UTC 2012 - fcrozat@suse.com ------------------------------------------------------------------- Tue Apr 3 09:37:09 UTC 2012 - dvaleev@suse.com -- apply ppc patch to systemd-gtk too (fixes build) +- apply ppc patch to systemd-gtk too (fixes build) ------------------------------------------------------------------- Thu Mar 22 08:47:36 UTC 2012 - fcrozat@suse.com @@ -1451,7 +1913,7 @@ Sun Feb 19 07:56:05 UTC 2012 - jengelh@medozas.de ------------------------------------------------------------------- Fri Feb 17 09:22:50 UTC 2012 - tittiatcoke@gmail.com -- Enable Plymouth integration. +- Enable Plymouth integration. * Bootsplash related files will be moved to the bootsplash package @@ -1502,7 +1964,7 @@ Tue Feb 7 14:43:58 UTC 2012 - fcrozat@suse.com property. + Rudimentary service watchdog support (not complete) + Improve bootcharts, by immediatly changing argv[0] after - forking to to reflect which process will be executed. + forking to to reflect which process will be executed. + Various bug fixes. - Add remote-fs-after-network.patch and update insserv patch: ensure remote-fs-pre.target is enabled and started before network @@ -1561,7 +2023,7 @@ Wed Jan 25 10:37:06 UTC 2012 - fcrozat@suse.com ------------------------------------------------------------------- Thu Jan 19 13:47:39 UTC 2012 - tittiatcoke@gmail.com -- Make the systemd journal persistent by creating the +- Make the systemd journal persistent by creating the /var/log/journal directory ------------------------------------------------------------------- @@ -1571,8 +2033,8 @@ Wed Jan 18 09:03:51 UTC 2012 - tittiatcoke@gmail.com - Bugfixes - Implementation of a Journal Utility Library - Implementation of a 128 Bit ID Utility Library -- 11 Patches integrated upstream -- Add systemd-syslog_away_early_on_shutdown.patch: make sure +- 11 Patches integrated upstream +- Add systemd-syslog_away_early_on_shutdown.patch: make sure syslog socket goes away early during shutdown. - Add listen.conf for rsyslog. This will ensure that it will still work fine with rsyslog and the new journal. @@ -1850,7 +2312,7 @@ Wed Aug 3 07:11:33 UTC 2011 - aj@suse.de * New PrivateNetwork= service setting which allows you to shut off networking for a specific service (i.e. all routable network interfaces will disappear for that service). - * Merged insserv-parsing.patch and bash-completion-restart.patch + * Merged insserv-parsing.patch and bash-completion-restart.patch patches. ------------------------------------------------------------------- diff --git a/systemd-mini.spec b/systemd-mini.spec index 791d8bb..fbeba0d 100644 --- a/systemd-mini.spec +++ b/systemd-mini.spec @@ -1,7 +1,7 @@ # # spec file for package systemd-mini # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -23,9 +23,14 @@ %define udevpkgname udev-mini %define udev_major 1 +%if 0%{?sles_version} == 0 +%global with_bash_completion 1 +%endif +%bcond_with bash_completion + Name: systemd-mini Url: http://www.freedesktop.org/wiki/Software/systemd -Version: 207 +Version: 208 Release: 0 Summary: A System and Session Manager License: LGPL-2.1+ @@ -73,6 +78,7 @@ BuildRequires: pkgconfig(liblzma) BuildRequires: pkgconfig(libmicrohttpd) %endif BuildRequires: pkgconfig(libpci) >= 3 +BuildRequires: pkgconfig(libpcre) %if ! 0%{?bootstrap} BuildRequires: pkgconfig(libqrencode) %endif @@ -88,6 +94,9 @@ Conflicts: kiwi # the buildignore is important for bootstrapping #!BuildIgnore: udev Requires: %{udevpkgname} >= 172 +%if %{with bash_completion} +Recommends: bash-completion +%endif Requires: dbus-1 >= 1.4.0 Requires: kbd Requires: kmod >= 14 @@ -98,6 +107,9 @@ Requires: util-linux >= 2.21 Requires(post): coreutils Requires(post): findutils %endif +%if ! 0%{?bootstrap} +Requires(post): pam-config +%endif Conflicts: filesystem < 11.5 Conflicts: mkinitrd < 2.7.0 Obsoletes: systemd-analyze < 201 @@ -112,6 +124,8 @@ Source7: libgcrypt.m4 Source8: systemd-journald.init Source9: nss-myhostname-config Source10: macros.systemd.upstream +Source11: after-local.service +Source12: systemd-powerfail Source1060: boot.udev Source1061: write_dev_root_rule @@ -156,6 +170,7 @@ Patch40: sysctl-handle-boot-sysctl.conf-kernel_release.patch # PATCH-FIX-OPENSUSE ensure-shortname-is-set-as-hostname-bnc-820213.patch bnc#820213 fcrozat@suse.com -- Do not set anything beyond first dot as hostname Patch41: ensure-shortname-is-set-as-hostname-bnc-820213.patch Patch42: systemd-pam_config.patch + # Upstream First - Policy: # Never add any patches to this package without the upstream commit id # in the patch. Any patches added here without a very good reason to make @@ -170,23 +185,96 @@ Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch # PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin Patch46: use-usr-sbin-sulogin-for-emergency-service.patch -# PATCH-FIX-OPENSUSE systemd-dbus-system-bus-address.patch always use /run/dbus not /var/run +# PATCH-FIX-OPENSUSE systemd-dbus-system-bus-address.patch always use /run/dbus not /var/run Patch47: systemd-dbus-system-bus-address.patch - -# PATCH-FIX-UPSTREAM 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch -- r must be set to the return value of previous call. -Patch48: 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch -# PATCH-FIX-UPSTREAM 0002-cgroup-correct-the-log-information.patch -- fix misleading log information. -Patch49: 0002-cgroup-correct-the-log-information.patch -# PATCH-FIX-UPSTREAM 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch -- memory cgroup setting is wrong. -Patch50: 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch -# PATCH-FIX-UPSTREAM 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch -- systemd-random-seed-load should fail if write fails. -Patch51: 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch -# PATCH-FIX-UPSTREAM 0005-core-cgroup-first-print-then-free.patch -- fix use after free -Patch52: 0005-core-cgroup-first-print-then-free.patch -# PATCH-FIX-UPSTREAM 0006-swap-fix-reverse-dependencies.patch -- SWAP does not mount properly -Patch53: 0006-swap-fix-reverse-dependencies.patch -# PATCH-FIX-UPSTREAM 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch really fix swap units -Patch54: 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch +# PATCH-FIX-UPSTREAM 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch fcrozat@suse.com -- fix acpi memleak +Patch48: 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch +# PATCH-FIX-UPSTREAM 0002-fix-lingering-references-to-var-lib-backlight-random.patch fcrozat@suse.com -- fix invalid path in documentation +Patch49: 0002-fix-lingering-references-to-var-lib-backlight-random.patch +# PATCH-FIX-UPSTREAM 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch fcrozat@suse.com -- fix invalid memory free +Patch50: 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch +# PATCH-FIX-UPSTREAM 0004-systemctl-fix-name-mangling-for-sysv-units.patch fcrozat@suse.com -- fix name mangling for sysv units +Patch51: 0004-systemctl-fix-name-mangling-for-sysv-units.patch +# PATCH-FIX-UPSTREAM 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch fcrozat@suse.com -- fix OOM handling +Patch52: 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch +# PATCH-FIX-UPSTREAM 0006-journald-add-missing-error-check.patch fcrozat@suse.com -- add missing error check +Patch53: 0006-journald-add-missing-error-check.patch +# PATCH-FIX-UPSTREAM 0007-bus-fix-potentially-uninitialized-memory-access.patch fcrozat@suse.com -- fix uninitialized memory access +Patch54: 0007-bus-fix-potentially-uninitialized-memory-access.patch +# PATCH-FIX-UPSTREAM 0008-dbus-fix-return-value-of-dispatch_rqueue.patch fcrozat@suse.com -- fix return value +Patch55: 0008-dbus-fix-return-value-of-dispatch_rqueue.patch +# PATCH-FIX-UPSTREAM 0009-modules-load-fix-error-handling.patch fcrozat@suse.com -- fix error handling +Patch56: 0009-modules-load-fix-error-handling.patch +# PATCH-FIX-UPSTREAM 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch fcrozat@suse.com -- fix incorrect memory access +Patch57: 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch +# PATCH-FIX-UPSTREAM 0011-strv-don-t-access-potentially-NULL-string-arrays.patch fcrozat@suse.com -- fix incorrect memory access +Patch58: 0011-strv-don-t-access-potentially-NULL-string-arrays.patch +# PATCH-FIX-UPSTREAM 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch fcrozat@suse.com -- fix invalid pointer +Patch59: 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch +# PATCH-FIX-UPSTREAM 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch fcrozat@suse.com -- fix permission on /run/log/journal +Patch60: 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch +# PATCH-FIX-UPSTREAM 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch fcrozat@suse.com -- order remote mount points properly before remote-fs.target +Patch61: 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch +# PATCH-FIX-UPSTREAM 0001-gpt-auto-generator-exit-immediately-if-in-container.patch fcrozat@suse.com -- don't start gpt auto-generator in container +Patch62: 0001-gpt-auto-generator-exit-immediately-if-in-container.patch +# PATCH-FIX-UPSTREAM 0001-manager-when-verifying-whether-clients-may-change-en.patch fcrozat@suse.com -- fix reload check in selinux case +Patch63: 0001-manager-when-verifying-whether-clients-may-change-en.patch +# PATCH-FIX-UPSTREAM 0001-logind-fix-bus-introspection-data-for-TakeControl.patch fcrozat@suse.com -- fix introspection for TakeControl +Patch64: 0001-logind-fix-bus-introspection-data-for-TakeControl.patch +# PATCH-FIX-UPSTREAM 0001-mount-check-for-NULL-before-reading-pm-what.patch fcrozat@suse.com -- fix crash when parsing some incorrect unit +Patch65: 0001-mount-check-for-NULL-before-reading-pm-what.patch +# PATCH-FIX-UPSTREAM 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch fcrozat@suse.com -- Fix udev rules parsing +Patch66: 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch +# PATCH-FIX-UPSTREAM 0001-systemd-serialize-deserialize-forbid_restart-value.patch fcrozat@suse.com -- Fix incorrect deserialization for forbid_restart +Patch67: 0001-systemd-serialize-deserialize-forbid_restart-value.patch +# PATCH-FIX-UPSTREAM 0001-core-unify-the-way-we-denote-serialization-attribute.patch fcrozat@suse.com -- Ensure forbid_restart is named like other attributes +Patch68: 0001-core-unify-the-way-we-denote-serialization-attribute.patch +# PATCH-FIX-UPSTREAM 0001-journald-fix-minor-memory-leak.patch fcrozat@suse.com -- fix memleak in journald +Patch69: 0001-journald-fix-minor-memory-leak.patch +# PATCH-FIX-UPSTREAM 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch fcrozat@suse.com -- Improve ACPI firmware performance parsing +Patch70: 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch +# PATCH-FIX-UPSTREAM 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch fcrozat@suse.com -- Fix journal rotation +Patch71: 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch +# PATCH-FIX-UPSTREAM 0001-login-fix-invalid-free-in-sd_session_get_vt.patchfcrozat@suse.com -- Fix memory corruption in sd_session_get_vt +Patch72: 0001-login-fix-invalid-free-in-sd_session_get_vt.patch +# PATCH-FIX-UPSTREAM 0001-login-make-sd_session_get_vt-actually-work.patch fcrozat@suse.com -- Ensure sd_session_get_vt returns correct value +Patch73: 0001-login-make-sd_session_get_vt-actually-work.patch +# PATCH-FIX-UPSTREAM 0001-Never-call-qsort-on-potentially-NULL-arrays.patch fcrozat@suse.com -- Don't call qsort on NULL arrays +Patch74: 0001-Never-call-qsort-on-potentially-NULL-arrays.patch +# PATCH-FIX-UPSTREAM 0001-dbus-common-avoid-leak-in-error-path.patch fcrozat@suse.com -- Fix memleak in dbus-common code +Patch75: 0001-dbus-common-avoid-leak-in-error-path.patch +# PATCH-FIX-UPSTREAM 0001-drop-ins-check-return-value.patch fcrozat@suse.com -- Fix return value for drop-ins checks +Patch76: 0001-drop-ins-check-return-value.patch +# PATCH-FIX-UPSTREAM 0001-shared-util-Fix-glob_extend-argument.patch fcrozat@suse.com -- Fix glob_extend argument +Patch77: 0001-shared-util-Fix-glob_extend-argument.patch +# PATCH-FIX-UPSTREAM 0001-Fix-bad-assert-in-show_pid_array.patch fcrozat@suse.com -- Fix bad assert in show_pid_array +Patch78: 0001-Fix-bad-assert-in-show_pid_array.patch +# PATCH-FIX-UPSTREAM 0001-analyze-set-white-background.patch werner@suse.com -- Make background of systemd-analyze SVG white +Patch79: 0001-analyze-set-white-background.patch +# PATCH-FIX-UPSTREAM 0001-analyze-set-text-on-side-with-most-space.patch werner@suse.com -- Place the text on the side with most space +Patch80: 0001-analyze-set-text-on-side-with-most-space.patch +# PATCH-FIX-UPSTREAM 0001-logind-garbage-collect-stale-users.patch -- Don't stop a running user manager from garbage-collecting the user. +Patch81: 0001-logind-garbage-collect-stale-users.patch +# PATCH-FIX-UPSTREAM analyze-fix-crash-in-command-line-parsing.patch fcrozat@suse.com bnc#859365 -- Fix crash in systemd-analyze +Patch82: analyze-fix-crash-in-command-line-parsing.patch +# PATCH-FIX-UPSTREAM 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch -- Prevent accidental kill of emergency shell (bnc#852021) +Patch83: 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch +# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232) +Patch84: make-emergency.service-conflict-with-syslog.socket.patch +# PATCH-FIX-UPSTREAM 0001-upstream-systemctl-halt-reboot-error-handling.patch +Patch85: 0001-upstream-systemctl-halt-reboot-error-handling.patch +# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch +Patch86: 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch +# PATCH-FIX-UPSTREAM 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch -- Allow sending SIGTERM to main PID only (bnc#841544) +Patch87: 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch +# PATCH-FIX-UPSTREAM 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch -- Allow using it with PAM enabled services (bnc#841544) +Patch88: 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch +# PATCH-FIX-UPSTREAM 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch -- Make sure final SIGKILL actually kills everything (bnc#841544) +Patch89: 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch +# PATCH-FIX-SUSE 0001-On_s390_con3270_disable_ANSI_colour_esc.patch +Patch90: 0001-On_s390_con3270_disable_ANSI_colour_esc.patch +# PATCH-FIX-SUSE plymouth-quit-and-wait-for-emergency-service.patch -- Make sure that no plymouthd is locking the tty +Patch91: plymouth-quit-and-wait-for-emergency-service.patch # udev patches # PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch @@ -203,8 +291,28 @@ Patch1006: 1006-udev-always-rename-network.patch Patch1007: 1007-physical-hotplug-cpu-and-memory.patch # PATCH-FIX-OPENSUSE 1008-add-msft-compability-rules.patch Patch1008: 1008-add-msft-compability-rules.patch -# PATCH-FIX-UPSTREAM libudev: fix move_later comparison -Patch1009: 0007-libudev-fix-move_later-comparison.patch +# PATCH-FIX-OPENSUSE 1009-make-xsltproc-use-correct-ROFF-links.patch -- Make ROFF links working again in manual pages (bnc#842844) +Patch1009: 1009-make-xsltproc-use-correct-ROFF-links.patch +# PATCH-FIX-OPENSUSE 1010-do-not-install-sulogin-unit-with-poweroff.patch -- Avoid installing console-shell.service (bnc#849071) +Patch1010: 1010-do-not-install-sulogin-unit-with-poweroff.patch +# PATCH-FIX-OPENSUSE 1011-check-4-valid-kmsg-device.patch -- Avoid busy systemd-journald (bnc#851393) +Patch1011: 1011-check-4-valid-kmsg-device.patch +# PATCH-FIX-UPSTREAM 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch +Patch1012: 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch +# PATCH-FIX-UPSTREAM U_logind_revert_lazy_session_activation_on_non_vt_seats.patch +Patch1013: U_logind_revert_lazy_session_activation_on_non_vt_seats.patch +# PATCH-FIX-OPENSUSE 1014-journald-with-journaling-FS.patch +Patch1014: 1014-journald-with-journaling-FS.patch +# PATCH-FIX-UPSTREAM build-sys-make-multi-seat-x-optional.patch +Patch1015: build-sys-make-multi-seat-x-optional.patch +# PATCH-FIX-SUSE 1016-support-powerfail-with-powerstatus.patch +Patch1016: 1016-support-powerfail-with-powerstatus.patch +# PATCH-FIX-UPSTREAM 1017-skip-native-unit-handling-if-sysv-already-handled.patch +Patch1017: 1017-skip-native-unit-handling-if-sysv-already-handled.patch +# PATCH-FIX-SUSE 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch +Patch1018: 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch +# PATCH-FIX-SUSE 1019-make-completion-smart-to-be-able-to-redirect.patch +Patch1019: 1019-make-completion-smart-to-be-able-to-redirect.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -248,7 +356,7 @@ Summary: A rule-based device node and kernel event manager License: GPL-2.0 Group: System/Kernel Url: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html -PreReq: /bin/pidof /bin/rm /usr/bin/stat %insserv_prereq %fillup_prereq /usr/sbin/groupadd /usr/bin/getent /sbin/mkinitrd /usr/bin/sg_inq +PreReq: /bin/rm /usr/bin/stat %insserv_prereq %fillup_prereq /usr/sbin/groupadd /usr/bin/getent /sbin/mkinitrd /usr/bin/sg_inq Requires(post): lib%{udevpkgname}%{udev_major} Conflicts: systemd < 39 Conflicts: aaa_base < 11.5 @@ -441,6 +549,43 @@ cp %{SOURCE7} m4/ %patch52 -p1 %patch53 -p1 %patch54 -p1 +%patch55 -p1 +%patch56 -p1 +%patch57 -p1 +%patch58 -p1 +%patch59 -p1 +%patch60 -p1 +%patch61 -p1 +%patch62 -p1 +%patch63 -p1 +%patch64 -p1 +%patch65 -p1 +%patch66 -p1 +%patch67 -p1 +%patch68 -p1 +%patch69 -p1 +%patch70 -p1 +%patch71 -p1 +%patch72 -p1 +%patch73 -p1 +%patch74 -p1 +%patch75 -p1 +%patch76 -p1 +%patch77 -p1 +%patch78 -p1 +%patch79 -p1 +%patch80 -p1 +%patch81 -p1 +%patch82 -p1 +%patch83 -p1 +%patch84 -p1 +%patch85 -p1 +%patch86 -p1 +%patch87 -p1 +%patch88 -p1 +%patch89 -p1 +%patch90 -p1 +%patch91 -p1 # udev patches %patch1001 -p1 @@ -454,6 +599,19 @@ cp %{SOURCE7} m4/ %patch1008 -p1 %endif %patch1009 -p1 +%patch1010 -p1 +%patch1011 -p1 +%patch1012 -p1 +%patch1013 -p1 +%patch1014 -p1 +%patch1015 -p1 +%patch1016 -p1 +%patch1017 -p1 +%patch1018 -p1 +%patch1019 -p1 + +# ensure generate files are removed +rm -f units/emergency.service %build autoreconf -fiv @@ -479,6 +637,11 @@ export V=1 --with-rc-local-script-path-start=/etc/init.d/boot.local \ --with-rc-local-script-path-stop=/etc/init.d/halt.local \ --with-debug-shell=/bin/bash \ + --disable-smack \ + --disable-ima \ +%if 0%{?suse_version} > 1310 + --disable-multi-seat-x \ +%endif CFLAGS="%{optflags}" make %{?_smp_mflags} @@ -555,6 +718,9 @@ ln -s systemd-random-seed.service %{buildroot}/%{_prefix}/lib/systemd/system/ran # don't mount /tmp as tmpfs for now rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount +# don't enable wall ask password service, it spams every console (bnc#747783) +rm %{buildroot}%{_prefix}/lib/systemd/system/multi-user.target.wants/systemd-ask-password-wall.path + # create %{_libexecdir}/modules-load.d mkdir -p %{buildroot}%{_libexecdir}/modules-load.d cat << EOF > %{buildroot}%{_libexecdir}/modules-load.d/sg.conf @@ -579,7 +745,7 @@ rm -f %{buildroot}/var/log/README %endif # legacy links -for f in loginctl journalctl ; do +for f in loginctl journalctl ; do ln -s $f %{buildroot}%{_bindir}/systemd-$f %if ! 0%{?bootstrap} ln -s $f.1 %{buildroot}%{_mandir}/man1/systemd-$f.1 @@ -616,6 +782,27 @@ cat << EOF > %{buildroot}%{_prefix}/lib/systemd/system/getty@tty1.service.d/nocl TTYVTDisallocate=no EOF +# ensure after.local wrapper is called +install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/ +ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/ + +# support for SIGPWR handling with /var/run/powerstatus of e.g. powerd +install -m 755 %{S:12} %{buildroot}/%{_prefix}/lib/systemd/ +install -m 644 units/powerfail.service %{buildroot}/%{_prefix}/lib/systemd/system/ +%if ! 0%{?bootstrap} +install -m 644 man/systemd-powerfail.service.8 %{buildroot}/%{_mandir}/man8/ +%endif + +# clean out some completions which requires bash-completion package +%if %{without bash_completion} +for c in %{buildroot}/%{_datadir}/bash-completion/completions/* +do + test -e "$c" || continue + grep -q _init_completion "$c" || continue + rm -vf "$c" +done +%endif + %fdupes -s %{buildroot}%{_mandir} # packaged in systemd-rpm-macros @@ -626,12 +813,18 @@ getent group systemd-journal >/dev/null || groupadd -r systemd-journal || : exit 0 %post -/usr/sbin/pam-config -a --systemd >/dev/null 2>&1 || : +%if ! 0%{?bootstrap} +/usr/sbin/pam-config -a --systemd || : +%endif /sbin/ldconfig +[ -e /var/lib/random-seed ] && mv /var/lib/random-seed /var/lib/systemd/ > /dev/null || : /usr/bin/systemd-machine-id-setup >/dev/null 2>&1 || : /usr/lib/systemd/systemd-random-seed save >/dev/null 2>&1 || : /usr/bin/systemctl daemon-reexec >/dev/null 2>&1 || : /usr/bin/journalctl --update-catalog >/dev/null 2>&1 || : +# Make sure new journal files +chgrp systemd-journal /var/log/journal/ /var/log/journal/`cat /etc/machine-id 2> /dev/null` >/dev/null 2>&1 || : +chmod g+s /var/log/journal/ /var/log/journal/`cat /etc/machine-id 2> /dev/null` >/dev/null 2>&1 || : # Try to read default runlevel from the old inittab if it exists if [ ! -e /etc/systemd/system/default.target -a -e /etc/inittab ]; then @@ -651,28 +844,29 @@ if [ "$1" -eq 1 ]; then remote-fs.target >/dev/null 2>&1 || : fi -%triggerpostun -- systemd < 194 -# migrate any symlink which may refer to the old path -for f in $(find /etc/systemd/system -type l -xtype l); do - new_target="/usr$(readlink $f)" - [ -f "$new_target" ] && ln -s -f $new_target $f || : -done - # since v207 /etc/sysctl.conf is no longer parsed, however # backward compatibility is provided by /etc/sysctl.d/99-sysctl.conf if [ ! -L /etc/sysctl.d/99-sysctl.conf -a -e /etc/sysctl.conf ]; then /bin/ln -sf /etc/sysctl.conf /etc/sysctl.d/99-sysctl.conf || : fi +# migrate any symlink which may refer to the old path +for f in $(find /etc/systemd/system -type l -xtype l); do + new_target="/usr$(readlink $f)" + [ -f "$new_target" ] && ln -s -f $new_target $f || : +done + %postun /sbin/ldconfig if [ $1 -ge 1 ]; then /usr/bin/systemctl daemon-reload >/dev/null 2>&1 || : /usr/bin/systemctl try-restart systemd-logind.service >/dev/null 2>&1 || : fi +%if ! 0%{?bootstrap} if [ $1 -eq 0 ]; then - /usr/sbin/pam-config -d --systemd >/dev/null 2>&1 || : + /usr/sbin/pam-config -d --systemd || : fi +%endif %preun if [ $1 -eq 0 ]; then @@ -978,10 +1172,13 @@ exit 0 %dir /var/lib/systemd/sysv-convert %dir /var/lib/systemd/migrated %dir /var/lib/systemd/catalog +%ghost /var/lib/systemd/catalog/database %dir /var/lib/systemd/coredump %dir /usr/share/zsh %dir /usr/share/zsh/site-functions /usr/share/zsh/site-functions/* +%ghost /var/lib/systemd/backlight +%ghost /var/lib/systemd/random-seed %files devel %defattr(-,root,root,-) diff --git a/systemd-powerfail b/systemd-powerfail new file mode 100644 index 0000000..797fb7d --- /dev/null +++ b/systemd-powerfail @@ -0,0 +1,28 @@ +#!/bin/bash +# +# /usr/lib/systemd/systemd-powerfail +# +# Copyright (c) 2014 SUSE LINUX Products GmbH, Germany. +# Author: Werner Fink +# Please send feedback to http://www.suse.de/feedback +# +# Description: +# +# Used to evaluate the status of /var/run/powerstatus +# + +trap "echo" SIGINT SIGSEGV SIGTERM + + POWERFAIL='THE POWER IS FAILED! SYSTEM GOING DOWN! PLEASE LOG OFF NOW!' +POWERFAILNOW='THE POWER IS FAILED! LOW BATTERY - EMERGENCY SYSTEM SHUTDOWN!' + POWERISBACK='THE POWER IS BACK' + +typeset pwrstat=0 +test -s /var/run/powerstatus && read pwrstat < /var/run/powerstatus +rm -f /var/run/powerstatus + +case "$pwrstat" in +O*) exec /sbin/shutdown -c +0 "$POWERISBACK" ;; +L*) exec /sbin/shutdown -P +0 "$POWERFAILNOW" ;; +*) exec /sbin/shutdown -P +2 "$POWERFAIL" ;; +esac diff --git a/systemd-rpm-macros.spec b/systemd-rpm-macros.spec index 4c7b714..c8e0234 100644 --- a/systemd-rpm-macros.spec +++ b/systemd-rpm-macros.spec @@ -1,7 +1,7 @@ # # spec file for package systemd-rpm-macros # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed diff --git a/systemd.changes b/systemd.changes index fdbda22..30031a9 100644 --- a/systemd.changes +++ b/systemd.changes @@ -1,14 +1,476 @@ +------------------------------------------------------------------- +Wed Feb 5 11:19:28 UTC 2014 - werner@suse.de + +- Change and extend patch + 0001-On_s390_con3270_disable_ANSI_colour_esc.patch + to disable the workaround to find /dev/3270/tty1 as this now + should be done by a) the kernel patch + http://lkml.indiana.edu/hypermail/linux/kernel/1402.0/02319.html + and the changed udev rule 99-systemd.rules + +------------------------------------------------------------------- +Sun Feb 2 08:53:17 UTC 2014 - ohering@suse.com + +- Remove PreReq pidof from udev, nothing in this pkg uses it + +------------------------------------------------------------------- +Fri Jan 31 14:24:35 UTC 2014 - werner@suse.de + +- Change and extend patch + 0001-On_s390_con3270_disable_ANSI_colour_esc.patch + to re-enable colouring if 3270 console was enforced on the kernel + command line as 3270 cna handle colour ANSI escape sequences. + Also let the serial getty generator find the /dev/3270/tty1 + character device (bnc#861316) + +------------------------------------------------------------------- +Thu Jan 30 12:33:08 UTC 2014 - werner@suse.de + +- Add patch 0001-On_s390_con3270_disable_ANSI_colour_esc.patch + to strip the colouring ANSI escape sequences from the console + messages (bnc#860937) + +------------------------------------------------------------------- +Thu Jan 30 08:29:00 UTC 2014 - werner@suse.de + +- Change patch 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch + to skip already by the kernel managed devices + +------------------------------------------------------------------- +Wed Jan 29 18:03:39 UTC 2014 - arvidjaar@gmail.com + +- fix timeout stopping user@.service (bnc#841544) + * 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch + * 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch + * 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch + +------------------------------------------------------------------- +Tue Jan 28 12:44:07 UTC 2014 - werner@suse.de + +- Add patch 0001-upstream-systemctl-halt-reboot-error-handling.patch + to be able to detect if the sysctl reboot() returns. +- Add patch 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch + A check for unmaintained disk like devices is added to be able to + flush and maybe shut them down. Also the missing sync() system + call is added for the direct halt/reboot systemctl command. Then + the system halt is used as fallback if poweroff fails for both + the direct poweroff systemctl command as well as for the + systemd-shutdown utility. + +------------------------------------------------------------------- +Thu Jan 23 13:24:53 UTC 2014 - werner@suse.de + +- Make systemd-mini build + +------------------------------------------------------------------- +Thu Jan 23 13:18:39 UTC 2014 - werner@suse.de + +- Make requires bash-completion a recommends + +------------------------------------------------------------------- +Tue Jan 21 13:05:59 UTC 2014 - werner@suse.de + +- Add patch 1017-skip-native-unit-handling-if-sysv-already-handled.patch + to avoid that enabled boot scripts will be handled as unit files + by systemctl status command (bnc#818044) + +------------------------------------------------------------------- +Tue Jan 21 12:51:20 UTC 2014 - werner@suse.de + +- Drop patch 1017-enforce-sufficient-shutdown-warnings.patch + as the original code behaves exactly as the shutdown code of + the old SysVinit (bnc#750845) +- Rename support-powerfail-with-powerstatus.patch to + 1016-support-powerfail-with-powerstatus.patch + +------------------------------------------------------------------- +Mon Jan 20 10:18:20 UTC 2014 - fcrozat@suse.com + +- Add analyze-fix-crash-in-command-line-parsing.patch: fix crash in + systemd-analyze (bnc#859365) + +------------------------------------------------------------------- +Fri Jan 17 16:09:24 UTC 2014 - werner@suse.de + +- Add patch + 1019-make-completion-smart-to-be-able-to-redirect.patch + to make redirections work with the bash command completions for + for systemd command tools (bnc#856858, bnc#859072) + +------------------------------------------------------------------- +Fri Jan 17 12:24:13 UTC 2014 - werner@suse.de + +- Add patch + 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch + to support the "+" to tag wanted dependencies as well as make + sure that required dependencies are handles as required ones. + This should fix bnc#858864 and bnc#857204. + +------------------------------------------------------------------- +Thu Jan 16 16:08:00 UTC 2014 - lnussel@suse.de + +- apply preset also to service files that are new in upgrade + +------------------------------------------------------------------- +Wed Jan 15 14:11:02 UTC 2014 - werner@suse.de + +- Change support-powerfail-with-powerstatus.patch to use BindsTo + instead of BindTo + +------------------------------------------------------------------- +Wed Jan 15 12:34:53 UTC 2014 - werner@suse.de + +- Add patch 1017-enforce-sufficient-shutdown-warnings.patch + Warn once per hour in the last 3 hours, then all 30 minutes in last + hour, all 15 minutes in the last 45 minutes, all 10 minutes in the + last 15 minutes, and then all minute in the last 10 minutes (bnc#750845) + +------------------------------------------------------------------- +Tue Jan 14 18:28:09 UTC 2014 - werner@suse.de + +- Add patch support-powerfail-with-powerstatus.patch and source + file systemd-powerfail to implement SIGPWR support with evaluation + of the file /var/run/powerstatus (bnc#737690) + +------------------------------------------------------------------- +Fri Dec 20 12:06:18 UTC 2013 - werner@suse.de + +- Adapt patch + 1011-check-4-valid-kmsg-device.patch + to fit current upstream version maybe related to bnc#854884 +- Change patch + 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch + to check if XDG_RUNTIME_DIR is set before the call of pam_putenv() + may fix bnc#855160 + +------------------------------------------------------------------- +Fri Dec 20 09:40:01 UTC 2013 - lbsousajr@gmail.com + +- Disable multi-seat-x build, since package xorg-x11-server + currently in Factory no longer needs it. + +------------------------------------------------------------------- +Wed Dec 18 18:56:01 UTC 2013 - hrvoje.senjan@gmail.com + +- Added 0001-logind-garbage-collect-stale-users.patch: Don't stop a + running user manager from garbage-collecting the user. Original + behavior caused bnc#849870 + +------------------------------------------------------------------- +Mon Dec 16 11:08:33 UTC 2013 - lbsousajr@gmail.com + +- Add build-sys-make-multi-seat-x-optional.patch + * See: http://cgit.freedesktop.org/systemd/systemd/commit/?id=bd441fa27a22b7c6e11d9330560e0622fb69f297 + * Now systemd-multi-seat-x build can be disabled with configure option + --disable-multi-seat-x. It should be done when xorg-x11-server + no longer needs it (work in progress). + +------------------------------------------------------------------- +Mon Dec 16 09:43:29 UTC 2013 - fcrozat@suse.com + +- Update insserv-generator.patch: fix crash in insserv generator + (bnc#854314). +- Update apply-ACL-for-nvidia-device-nodes.patch with latest fixes + for Nvidia cards (bnc#808319). + +------------------------------------------------------------------- +Fri Dec 6 13:30:19 UTC 2013 - werner@suse.de + +- Add patch + 1014-journald-with-journaling-FS.patch + which now uses the file system ioctls for switching off atime, + compression, and copy-on-write of the journal directory of the + the systemd-journald (bnc#838475) +- Let us build require the package config for libpcre (bnc#853293) + +------------------------------------------------------------------- +Sat Nov 30 08:16:02 UTC 2013 - arvidjaar@gmail.com + +- Add patch + 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch + Make sure emergency shell is not killed by attempt to start another unit + (bnc#852021). Backported from d420282b28f50720e233ccb1c02547c562195653. +- Add patch + make-emergency.service-conflict-with-syslog.socket.patch + Previous patch did not fix problem if syslog connection request came + after emergency shell was already started. So forcibly stop syslog.socket + when starting emergency.service. (bnc#852232) + +------------------------------------------------------------------- +Thu Nov 28 10:25:58 UTC 2013 - lbsousajr@gmail.com + +- Add U_logind_revert_lazy_session_activation_on_non_vt_seats.patch + * See: http://cgit.freedesktop.org/systemd/systemd/commit/?id=3fdb2494c1e24c0a020f5b54022d2c751fd26f50 + +------------------------------------------------------------------- +Tue Nov 26 15:12:58 UTC 2013 - werner@suse.de + +- Add patch + 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch + to avoid (xdg-)su to set XDG_RUNTIME_DIR to the original user and + avoid that e.g. pulseaudio will create /run/user//pulse owned + by root (bnc#852015) + +------------------------------------------------------------------- +Thu Nov 21 12:27:11 UTC 2013 - werner@suse.de + +- Add patch + 1011-check-4-valid-kmsg-device.patch + to avoid a busy systemd-journald (bnc#851393) + +------------------------------------------------------------------- +Wed Nov 6 09:42:05 UTC 2013 - werner@suse.de + +- Add patch + 1010-do-not-install-sulogin-unit-with-poweroff.patch + that is do not install console-shell.service in any system target + as this will cause automatic poweroff at boot (bnc#849071) + +------------------------------------------------------------------- +Mon Nov 4 15:23:02 UTC 2013 - werner@suse.de + +- Add upstream patch + 0001-analyze-set-text-on-side-with-most-space.patch + to place the text on the side with most space + +------------------------------------------------------------------- +Fri Oct 25 12:12:48 UTC 2013 - werner@suse.de + +- Add upstream patch + 0001-analyze-set-white-background.patch + to make SVG output of systemd analyze readable + +------------------------------------------------------------------- +Mon Oct 21 09:27:36 UTC 2013 - werner@suse.de + +- Add patch + 1009-make-xsltproc-use-correct-ROFF-links.patch + to have valid ROFF links in manual pages working again (bnc#842844) + +------------------------------------------------------------------- +Tue Oct 15 13:50:52 CEST 2013 - fcrozat@suse.com + +- Add + 0001-gpt-auto-generator-exit-immediately-if-in-container.patch: + don't start gpt auto-generator in container (git). +- Add + 0001-manager-when-verifying-whether-clients-may-change-en.patch: + fix reload check in selinux case (git). +- Add 0001-logind-fix-bus-introspection-data-for-TakeControl.patch: + fix introspection for TakeControl (git). +- Add 0001-mount-check-for-NULL-before-reading-pm-what.patch: fix + crash when parsing some incorrect unit (git). +- Add + 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch: + Fix udev rules parsing (git). +- Add + 0001-systemd-serialize-deserialize-forbid_restart-value.patch: + Fix incorrect deserialization for forbid_restart (git). +- Add + 0001-core-unify-the-way-we-denote-serialization-attribute.patch: + Ensure forbid_restart is named like other attributes (git). +- Add 0001-journald-fix-minor-memory-leak.patch: fix memleak in + journald (git). +- Add + 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch: + Improve ACPI firmware performance parsing (git). +- Add + 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch: + Fix journal rotation (git). +- Add + 0001-login-fix-invalid-free-in-sd_session_get_vt.patch: + Fix memory corruption in sd_session_get_vt (git). +- Add 0001-login-make-sd_session_get_vt-actually-work.patch: Ensure + sd_session_get_vt returns correct value (git). +- Add 0001-Never-call-qsort-on-potentially-NULL-arrays.patch: Don't + call qsort on NULL arrays (git). +- Add 0001-dbus-common-avoid-leak-in-error-path.patch: Fix memleak + in dbus-common code (git). +- Add 0001-drop-ins-check-return-value.patch: Fix return value for + drop-ins checks (git). +- Add 0001-shared-util-Fix-glob_extend-argument.patch: Fix + glob_extend argument (git). +- Add 0001-Fix-bad-assert-in-show_pid_array.patch: Fix bad assert + in show_pid_array (git). + + +------------------------------------------------------------------- +Thu Oct 3 08:43:51 UTC 2013 - fcrozat@suse.com + +- Add 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch: + fix acpi memleak. +- Add + 0002-fix-lingering-references-to-var-lib-backlight-random.patch: + fix invalid path in documentation. +- Add + 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch: + fix invalid memory free. +- Add 0004-systemctl-fix-name-mangling-for-sysv-units.patch: fix + name mangling for sysv units. +- Add + 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch: + fix OOM handling. +- Add 0006-journald-add-missing-error-check.patch: add missing + error check. +- Add 0007-bus-fix-potentially-uninitialized-memory-access.patch: + fix uninitialized memory access. +- Add 0008-dbus-fix-return-value-of-dispatch_rqueue.patch: fix + return value. +- Add 0009-modules-load-fix-error-handling.patch: fix error + handling. +- Add 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch: + fix incorrect memory access. +- Add 0011-strv-don-t-access-potentially-NULL-string-arrays.patch: + fix incorrect memory access. +- Add + 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch: + fix invalid pointer. +- Add + 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch: + fix permission on /run/log/journal. +- Add + 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch: + order remote mount points properly before remote-fs.target. + +------------------------------------------------------------------- +Wed Oct 2 14:10:41 UTC 2013 - hrvoje.senjan@gmail.com + +- Explicitly require pam-config for %post of the main package + +------------------------------------------------------------------- +Wed Oct 2 08:03:30 UTC 2013 - fcrozat@suse.com + +- Release v208: + + logind gained support for facilitating privileged input and drm + devices access for unprivileged clients (helps Wayland / + kmscon). + + New kernel command line luks.options= allows to specify LUKS + options, when used with luks.uuid= + + tmpfileS.d snippets can uses specifier expansion in path names + (%m, %b, %H, %v). + + New tmpfiles.d command "m" introduced to change + owner/group/access mode of a file/directory only if it exists. + + MemorySoftLimit= cgroup settings is no longer supported + (underlying kernel cgroup attribute will disappear in the + future). + + memeory.use_hierarchy cgroup attribute is enabled for all + cgroups systemd creates in memory cgroup hierarchy. + + New filed _SYSTEMD_SLICE= is logged in journal messages related + to a slice. + + systemd-journald will no longer adjust the group of journal + files it creates to "systemd-journal" group. Permissions and + owernship is adjusted when package is upgraded. + + Backlight and random seed files are now stored in + /var/lib/systemd. + + Boot time performance measurements included ACPI 5.0 FPDT + informations if available. +- Drop merged patches: + 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch, + 0002-cgroup-correct-the-log-information.patch, + 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch, + 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch, + 0005-core-cgroup-first-print-then-free.patch, + 0006-swap-fix-reverse-dependencies.patch, + 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch, + 0009-polkit-Avoid-race-condition-in-scraping-proc.patch, + Fix-timeout-when-stopping-Type-notify-service.patch, + set-ignoreonisolate-noauto-cryptsetup.patch, + 0001-Fix-buffer-overrun-when-enumerating-files.patch, + 0007-libudev-fix-move_later-comparison.patch. +- Refresh patches + remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch, + delay-fsck-cryptsetup-after-md-dmraid-lvm-are-started.patch, + handle-root_uses_lang-value-in-etc-sysconfig-language.patch, + handle-SYSTEMCTL_OPTIONS-environment-variable.patch, + Revert-service-drop-support-for-SysV-scripts-for-the-early.patch. +- Own more ghost files. +- Do not run pam-config in systemd-mini %post. +- Add after-local.service to run after.local late during the boot + process (bnc#778715). + +------------------------------------------------------------------- +Tue Oct 1 17:09:01 UTC 2013 - fcrozat@suse.com + +- Update Fix-timeout-when-stopping-Type-notify-service.patch with + upstream fix. +- No longer start ask-password-wall, was causing too much spam on + terminals (bnc#747783). + +------------------------------------------------------------------- +Mon Sep 30 15:42:45 UTC 2013 - fcrozat@suse.com + +- Add set-ignoreonisolate-noauto-cryptsetup.patch: ensure noauto + encrypted mounts survives runlevel changes (bnc#843085). +- Add 0001-Fix-buffer-overrun-when-enumerating-files.patch: fix + logind crash when /run/systemd/sessions was too big (bnc#840055, + initial fix from hpj@suse.com). +- Update sysctl-handle-boot-sysctl.conf-kernel_release.patch to + only check for /boot/sysctl.conf- presence. +- Add service wrapper for after.local (bnc#778715). + +------------------------------------------------------------------- +Fri Sep 27 15:47:15 UTC 2013 - fcrozat@suse.com + +- Update use-usr-sbin-sulogin-for-emergency-service.patch to apply + to all services using sulogin and remove generated files from + upstream tarball (bnc#841398). + +------------------------------------------------------------------- +Mon Sep 23 13:09:06 UTC 2013 - arvidjaar@gmail.com + +- Fix-timeout-when-stopping-Type-notify-service.patch + Make sure MAINPID is watched when it becomes known (bnc#841544) + +------------------------------------------------------------------- +Mon Sep 23 13:11:08 CEST 2013 - fcrozat@suse.com + +- Remove output and error redirection to /dev/null in install + script, it might help tracing pam related issue (bnc#841573). + +------------------------------------------------------------------- +Thu Sep 19 16:37:03 CEST 2013 - fcrozat@suse.com + +- Move symlink migration trigger to post (bnc#821800). + +------------------------------------------------------------------- +Wed Sep 18 23:55:09 UTC 2013 - crrodriguez@opensuse.org + +- 0009-polkit-Avoid-race-condition-in-scraping-proc.patch + VUL-0: polkit: process subject race condition [bnc#835827] + CVE-2013-4288 + +------------------------------------------------------------------- +Wed Sep 18 23:45:54 UTC 2013 - crrodriguez@opensuse.org + +- Build with --disable-ima as the openSUSE kernel + does not support IMA (CONFIG_IMA is not set) + +------------------------------------------------------------------- +Wed Sep 18 23:40:27 UTC 2013 - crrodriguez@opensuse.org + +- Build with --disable-smack as the openSUSE kernel + does not support smack (CONFIG_SECURITY_SMACK is not set) + +------------------------------------------------------------------- +Wed Sep 18 12:05:47 UTC 2013 - fcrozat@suse.com + +- Don't use a trigger to create symlink for sysctl.conf, always run + the test on %post (bnc#840864). +- Update sysctl-handle-boot-sysctl.conf-kernel_release.patch to + ensure /boot is mounted before reading /boot/sysctl.conf-* + (bnc#809420). + ------------------------------------------------------------------- Mon Sep 16 17:41:24 UTC 2013 - crrodriguez@opensuse.org -- 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch - really fixes the swap unit problem mentioned in previous +- 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch + really fixes the swap unit problem mentioned in previous commit & the opensuse-factory mailing list. ------------------------------------------------------------------- Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org -- 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch +- 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch missing important check on return value. - 0002-cgroup-correct-the-log-information.patch fix misleading log information. @@ -18,7 +480,7 @@ Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org should fail if write fails. - 0005-core-cgroup-first-print-then-free.patch use-after-free will trigger if there is an error condition. -- 0006-swap-fix-reverse-dependencies.patch reported in +- 0006-swap-fix-reverse-dependencies.patch reported in opensuse-factory list, topic "swap isn't activated" - 0007-libudev-fix-move_later-comparison.patch libudev invalid usage of "move_later". @@ -27,10 +489,10 @@ Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org Sat Sep 14 06:52:32 UTC 2013 - crrodriguez@opensuse.org - while testing this new release I get in the logs ocassionally - at boot "systemd[1]: Failed to open private bus connection: - Failed to connect to socket /var/run/dbus/system_bus_socket: + at boot "systemd[1]: Failed to open private bus connection: + Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory" indeed DBUS_SYSTEM_BUS_DEFAULT_ADDRESS - is defined to /var/run/dbus/system_bus_socket instead of + is defined to /var/run/dbus/system_bus_socket instead of /run/dbus/system_bus_socket and that does not fly when /var/run is not yet available. (systemd-dbus-system-bus-address.patch) @@ -42,10 +504,10 @@ Fri Sep 13 07:47:40 UTC 2013 - fcrozat@suse.com ------------------------------------------------------------------- Fri Sep 13 03:14:36 UTC 2013 - crrodriguez@opensuse.org -- version 207, distribution specific changes follow, for overall +- version 207, distribution specific changes follow, for overall release notes see NEWS. -- Fixed: - * Failed at step PAM spawning /usr/lib/systemd/systemd: +- Fixed: + * Failed at step PAM spawning /usr/lib/systemd/systemd: Operation not permitted * Fix shutdown hang "a stop job is running for Session 1 of user root" that was reported in opensuse-factory list. @@ -152,7 +614,7 @@ Fri Jul 5 02:17:19 UTC 2013 - crrodriguez@opensuse.org ------------------------------------------------------------------- Fri Jul 5 02:09:55 UTC 2013 - crrodriguez@opensuse.org -- fix broken symlink, service is called systemd-random-seed now. +- fix broken symlink, service is called systemd-random-seed now. ------------------------------------------------------------------- Thu Jul 4 10:20:23 CEST 2013 - fcrozat@suse.com @@ -287,13 +749,13 @@ Fri Jun 21 12:40:27 UTC 2013 - rmilasan@suse.com - Automatically online CPUs/Memory on CPU/Memory hotplug add events (bnc#703100, fate#311831). - add: 1008-physical-hotplug-cpu-and-memory.patch + add: 1008-physical-hotplug-cpu-and-memory.patch ------------------------------------------------------------------- Wed Jun 19 08:44:06 UTC 2013 - mhrusecky@suse.com - Dropped backward compatibility -- Added check for upstream rpm macros changes +- Added check for upstream rpm macros changes ------------------------------------------------------------------- Mon Jun 18 12:13:25 UTC 2013 - mhrusecky@suse.com @@ -303,7 +765,7 @@ Mon Jun 18 12:13:25 UTC 2013 - mhrusecky@suse.com ------------------------------------------------------------------- Tue Jun 18 00:33:10 UTC 2013 - crrodriguez@opensuse.org -- 0001-journal-letting-interleaved-seqnums-go.patch and +- 0001-journal-letting-interleaved-seqnums-go.patch and 0002-journal-remember-last-direction-of-search-and-keep-o.patch fix possible infinite loops in the journal code, related to bnc #817778 @@ -340,8 +802,8 @@ Tue Jun 11 02:29:49 UTC 2013 - crrodriguez@opensuse.org - 0004-journald-DO-recalculate-the-ACL-mask-but-only-if-it-.patch fixes : - * systemd-journald[347]: Failed to set ACL on - /var/log/journal/11d90b1c0239b5b2e38ed54f513722e3/user-1000.journal, + * systemd-journald[347]: Failed to set ACL on + /var/log/journal/11d90b1c0239b5b2e38ed54f513722e3/user-1000.journal, ignoring: Invalid argument - 006-systemctl-core-allow-nuking-of-symlinks-to-removed-u.patch systemctl disable should remove dangling symlinks. @@ -403,7 +865,7 @@ support has been removed from the kernel. fixed in systemd v199, commit 89d09e1b5c65a2d97840f682e0932c8bb499f166 - Apply rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch only on ARM, patch rejected upstream because is too generic. -- no such define TARGET_SUSE exists but it is used in +- no such define TARGET_SUSE exists but it is used in Revert-service-drop-support-for-SysV-scripts-for-the-early.patch use HAVE_SYSV_COMPAT instead. @@ -462,7 +924,7 @@ Thu Apr 25 08:19:30 UTC 2013 - rmilasan@suse.com - Rename remaning udev patches (clean-up). - Generate %{_libexecdir}/modules-load.d/sg.conf so we load sg module at - boot time not from udev (bnc#761109). + boot time not from udev (bnc#761109). - Drop unused patches: 1001-Reinstate-TIMEOUT-handling.patch 1005-udev-fix-sg-autoload-regression.patch @@ -490,7 +952,7 @@ Mon Apr 22 09:48:22 UTC 2013 - fcrozat@suse.com ------------------------------------------------------------------- Sun Apr 21 22:24:15 UTC 2013 - crrodriguez@opensuse.org -- Fix packaging error, there is no syslog.target anymore +- Fix packaging error, there is no syslog.target anymore do not pretend there is one. ------------------------------------------------------------------- @@ -531,14 +993,14 @@ Fri Apr 12 16:58:31 UTC 2013 - fcrozat@suse.com from an indexed database. %udev_hwdb_update macro should be used by packages adding entries to this database. + Journal gained support for "Message Catalog", indexed database - to link up additional information with journal entries. + to link up additional information with journal entries. %journal_catalog_update macro should be used by packages adding %entries to this database. + "age" field for tmpfiles entries can be set to 0, forcing removal of files matching this entry. + coredumpctl gained "gdb" verb to invoke gdb on selected coredump. - + New rpm macros has been added: %udev_rules_update(), + + New rpm macros has been added: %udev_rules_update(), %_udevhwdbdir, %_udevrulesdir, %_journalcatalogdir, %_tmpfilesdir, %_sysctldir. + In service files, %U can be used for configured user name of @@ -562,7 +1024,7 @@ Fri Apr 12 16:58:31 UTC 2013 - fcrozat@suse.com (normal clean-up with tmpfiles is still done in addition to this though). + Resource limits (as exposed by cgroup controlers) can be - controlled dynamically at runtime for all units, using + controlled dynamically at runtime for all units, using "systemctl set-cgroup-attr foobar.server cgroup.attribute value". Those settings are stored persistenly on disk. + systemd-vconsole-setup will now copy all fonts settings to all @@ -696,14 +1158,14 @@ Thu Mar 28 09:24:43 UTC 2013 - rmilasan@suse.com - udev: ensure that the network interfaces are renamed even if they exist (bnc#809843). - add: 1027-udev-always-rename-network.patch + add: 1027-udev-always-rename-network.patch ------------------------------------------------------------------- Wed Mar 20 10:14:59 UTC 2013 - rmilasan@suse.com - udev: re-add persistent network rules (bnc#809843). add: 1026-re-add-persistent-net.patch -- rebase all patches, ensure that they apply properly. +- rebase all patches, ensure that they apply properly. ------------------------------------------------------------------- Thu Feb 21 14:45:12 UTC 2013 - fcrozat@suse.com @@ -728,7 +1190,7 @@ Tue Feb 19 09:51:18 UTC 2013 - rmilasan@suse.com - udev: usb_id: parse only 'size' bytes of the 'descriptors' buffer add: 1024-udev-usb_id-parse-only-size-bytes-of-the-descriptors.patch - udev: expose new ISO9660 properties from libblkid - add: 1025-udev-expose-new-ISO9660-properties-from-libblkid.patch + add: 1025-udev-expose-new-ISO9660-properties-from-libblkid.patch ------------------------------------------------------------------- Mon Feb 18 09:27:05 UTC 2013 - jengelh@inai.de @@ -763,7 +1225,7 @@ Wed Feb 13 11:34:06 UTC 2013 - rmilasan@suse.com - udev: use unique names for temporary files created in /dev. add: 1022-udev-use-unique-names-for-temporary-files-created-in.patch - cdrom_id: add data track count for bad virtual drive. - add: 1023-cdrom_id-add-data-track-count-for-bad-virtual-drive.patch + add: 1023-cdrom_id-add-data-track-count-for-bad-virtual-drive.patch ------------------------------------------------------------------- Tue Feb 12 09:16:23 UTC 2013 - rmilasan@suse.com @@ -785,7 +1247,7 @@ Fri Feb 1 16:27:45 UTC 2013 - fcrozat@suse.com Tue Jan 29 13:32:30 UTC 2013 - rmilasan@suse.com - udev: Fix device matching in the accelerometer - add: 1019-udev-Fix-device-matching-in-the-accelerometer.patch + add: 1019-udev-Fix-device-matching-in-the-accelerometer.patch - keymap: add aditional support for some keyboard keys add: 1018-keymap-add-aditional-support.patch - journalctl: require argument for --priority @@ -794,7 +1256,7 @@ Tue Jan 29 13:32:30 UTC 2013 - rmilasan@suse.com libudev-validate-argument-udev_enumerate_new.patch kmod-fix-builtin-typo.patch - rename udev-root-symlink.service to systemd-udev-root-symlink.service. -- fix in udev package missing link in basic.target.wants for +- fix in udev package missing link in basic.target.wants for systemd-udev-root-symlink.service ------------------------------------------------------------------- @@ -926,7 +1388,7 @@ Wed Jan 9 09:42:50 UTC 2013 - rmilasan@suse.com add: 1014-udev-fix-whitespace.patch - udev: properly handle symlink removal by 'change' event add: 1015-udev-properly-handle-symlink-removal-by-change-event.patch -- udev: builtin - do not fail builtin initialization if one of +- udev: builtin - do not fail builtin initialization if one of them returns an error add: 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch - udev: use usec_t and now() @@ -938,7 +1400,7 @@ Tue Jan 8 12:47:43 UTC 2013 - rmilasan@suse.com - udevd: add missing ':' to getopt_long 'e'. add: 1007-udevd-add-missing-to-getopt_long-e.patch - clean up systemd.spec, make it easy to see which are udev and - systemd patches. + systemd patches. - make 'reload' and 'force-reload' LSB compliant (bnc#793936). ------------------------------------------------------------------- @@ -946,8 +1408,8 @@ Tue Dec 11 00:22:50 UTC 2012 - crrodriguez@opensuse.org - detect-btrfs-ssd.patch: Fix btrfs detection on SSD. - timedated-donot-close-bogus-dbus-connection.patch: Avoid - closing an non-existent dbus connection and getting assertion - failures. + closing an non-existent dbus connection and getting assertion + failures. ------------------------------------------------------------------- Mon Dec 10 14:22:21 UTC 2012 - coolo@suse.com @@ -980,7 +1442,7 @@ Tue Dec 4 16:51:32 UTC 2012 - fcrozat@suse.com ------------------------------------------------------------------- Thu Nov 22 14:22:00 UTC 2012 - rmilasan@suse.com -- Fix creation of /dev/root link. +- Fix creation of /dev/root link. ------------------------------------------------------------------- Tue Nov 20 18:25:49 CET 2012 - fcrozat@suse.com @@ -1139,7 +1601,7 @@ Thu Oct 4 11:23:42 UTC 2012 - fcrozat@suse.com + Optional journal gateway daemon (systemd-journal-gatewayd.service) to access journal via HTTP and JSON. Use "wget http://localhost:19531/entries" to get - /var/log/messages compatible format and + /var/log/messages compatible format and 'curl -H"Accept: application/json" http://localhost:19531/entries' for JSON formatted content. HTML5 static page is also available as explained on @@ -1369,7 +1831,7 @@ Thu Apr 19 10:07:47 UTC 2012 - fcrozat@suse.com ------------------------------------------------------------------- Tue Apr 3 09:37:09 UTC 2012 - dvaleev@suse.com -- apply ppc patch to systemd-gtk too (fixes build) +- apply ppc patch to systemd-gtk too (fixes build) ------------------------------------------------------------------- Thu Mar 22 08:47:36 UTC 2012 - fcrozat@suse.com @@ -1451,7 +1913,7 @@ Sun Feb 19 07:56:05 UTC 2012 - jengelh@medozas.de ------------------------------------------------------------------- Fri Feb 17 09:22:50 UTC 2012 - tittiatcoke@gmail.com -- Enable Plymouth integration. +- Enable Plymouth integration. * Bootsplash related files will be moved to the bootsplash package @@ -1502,7 +1964,7 @@ Tue Feb 7 14:43:58 UTC 2012 - fcrozat@suse.com property. + Rudimentary service watchdog support (not complete) + Improve bootcharts, by immediatly changing argv[0] after - forking to to reflect which process will be executed. + forking to to reflect which process will be executed. + Various bug fixes. - Add remote-fs-after-network.patch and update insserv patch: ensure remote-fs-pre.target is enabled and started before network @@ -1561,7 +2023,7 @@ Wed Jan 25 10:37:06 UTC 2012 - fcrozat@suse.com ------------------------------------------------------------------- Thu Jan 19 13:47:39 UTC 2012 - tittiatcoke@gmail.com -- Make the systemd journal persistent by creating the +- Make the systemd journal persistent by creating the /var/log/journal directory ------------------------------------------------------------------- @@ -1571,8 +2033,8 @@ Wed Jan 18 09:03:51 UTC 2012 - tittiatcoke@gmail.com - Bugfixes - Implementation of a Journal Utility Library - Implementation of a 128 Bit ID Utility Library -- 11 Patches integrated upstream -- Add systemd-syslog_away_early_on_shutdown.patch: make sure +- 11 Patches integrated upstream +- Add systemd-syslog_away_early_on_shutdown.patch: make sure syslog socket goes away early during shutdown. - Add listen.conf for rsyslog. This will ensure that it will still work fine with rsyslog and the new journal. @@ -1850,7 +2312,7 @@ Wed Aug 3 07:11:33 UTC 2011 - aj@suse.de * New PrivateNetwork= service setting which allows you to shut off networking for a specific service (i.e. all routable network interfaces will disappear for that service). - * Merged insserv-parsing.patch and bash-completion-restart.patch + * Merged insserv-parsing.patch and bash-completion-restart.patch patches. ------------------------------------------------------------------- diff --git a/systemd.spec b/systemd.spec index 59482e6..4dfc122 100644 --- a/systemd.spec +++ b/systemd.spec @@ -1,7 +1,7 @@ # # spec file for package systemd # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -21,9 +21,14 @@ %define udevpkgname udev %define udev_major 1 +%if 0%{?sles_version} == 0 +%global with_bash_completion 1 +%endif +%bcond_with bash_completion + Name: systemd Url: http://www.freedesktop.org/wiki/Software/systemd -Version: 207 +Version: 208 Release: 0 Summary: A System and Session Manager License: LGPL-2.1+ @@ -68,6 +73,7 @@ BuildRequires: pkgconfig(liblzma) BuildRequires: pkgconfig(libmicrohttpd) %endif BuildRequires: pkgconfig(libpci) >= 3 +BuildRequires: pkgconfig(libpcre) %if ! 0%{?bootstrap} BuildRequires: pkgconfig(libqrencode) %endif @@ -83,6 +89,9 @@ Conflicts: kiwi # the buildignore is important for bootstrapping #!BuildIgnore: udev Requires: %{udevpkgname} >= 172 +%if %{with bash_completion} +Recommends: bash-completion +%endif Requires: dbus-1 >= 1.4.0 Requires: kbd Requires: kmod >= 14 @@ -93,6 +102,9 @@ Requires: util-linux >= 2.21 Requires(post): coreutils Requires(post): findutils %endif +%if ! 0%{?bootstrap} +Requires(post): pam-config +%endif Conflicts: filesystem < 11.5 Conflicts: mkinitrd < 2.7.0 Obsoletes: systemd-analyze < 201 @@ -107,6 +119,8 @@ Source7: libgcrypt.m4 Source8: systemd-journald.init Source9: nss-myhostname-config Source10: macros.systemd.upstream +Source11: after-local.service +Source12: systemd-powerfail Source1060: boot.udev Source1061: write_dev_root_rule @@ -151,6 +165,7 @@ Patch40: sysctl-handle-boot-sysctl.conf-kernel_release.patch # PATCH-FIX-OPENSUSE ensure-shortname-is-set-as-hostname-bnc-820213.patch bnc#820213 fcrozat@suse.com -- Do not set anything beyond first dot as hostname Patch41: ensure-shortname-is-set-as-hostname-bnc-820213.patch Patch42: systemd-pam_config.patch + # Upstream First - Policy: # Never add any patches to this package without the upstream commit id # in the patch. Any patches added here without a very good reason to make @@ -165,23 +180,96 @@ Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch # PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin Patch46: use-usr-sbin-sulogin-for-emergency-service.patch -# PATCH-FIX-OPENSUSE systemd-dbus-system-bus-address.patch always use /run/dbus not /var/run +# PATCH-FIX-OPENSUSE systemd-dbus-system-bus-address.patch always use /run/dbus not /var/run Patch47: systemd-dbus-system-bus-address.patch - -# PATCH-FIX-UPSTREAM 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch -- r must be set to the return value of previous call. -Patch48: 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch -# PATCH-FIX-UPSTREAM 0002-cgroup-correct-the-log-information.patch -- fix misleading log information. -Patch49: 0002-cgroup-correct-the-log-information.patch -# PATCH-FIX-UPSTREAM 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch -- memory cgroup setting is wrong. -Patch50: 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch -# PATCH-FIX-UPSTREAM 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch -- systemd-random-seed-load should fail if write fails. -Patch51: 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch -# PATCH-FIX-UPSTREAM 0005-core-cgroup-first-print-then-free.patch -- fix use after free -Patch52: 0005-core-cgroup-first-print-then-free.patch -# PATCH-FIX-UPSTREAM 0006-swap-fix-reverse-dependencies.patch -- SWAP does not mount properly -Patch53: 0006-swap-fix-reverse-dependencies.patch -# PATCH-FIX-UPSTREAM 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch really fix swap units -Patch54: 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch +# PATCH-FIX-UPSTREAM 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch fcrozat@suse.com -- fix acpi memleak +Patch48: 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch +# PATCH-FIX-UPSTREAM 0002-fix-lingering-references-to-var-lib-backlight-random.patch fcrozat@suse.com -- fix invalid path in documentation +Patch49: 0002-fix-lingering-references-to-var-lib-backlight-random.patch +# PATCH-FIX-UPSTREAM 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch fcrozat@suse.com -- fix invalid memory free +Patch50: 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch +# PATCH-FIX-UPSTREAM 0004-systemctl-fix-name-mangling-for-sysv-units.patch fcrozat@suse.com -- fix name mangling for sysv units +Patch51: 0004-systemctl-fix-name-mangling-for-sysv-units.patch +# PATCH-FIX-UPSTREAM 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch fcrozat@suse.com -- fix OOM handling +Patch52: 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch +# PATCH-FIX-UPSTREAM 0006-journald-add-missing-error-check.patch fcrozat@suse.com -- add missing error check +Patch53: 0006-journald-add-missing-error-check.patch +# PATCH-FIX-UPSTREAM 0007-bus-fix-potentially-uninitialized-memory-access.patch fcrozat@suse.com -- fix uninitialized memory access +Patch54: 0007-bus-fix-potentially-uninitialized-memory-access.patch +# PATCH-FIX-UPSTREAM 0008-dbus-fix-return-value-of-dispatch_rqueue.patch fcrozat@suse.com -- fix return value +Patch55: 0008-dbus-fix-return-value-of-dispatch_rqueue.patch +# PATCH-FIX-UPSTREAM 0009-modules-load-fix-error-handling.patch fcrozat@suse.com -- fix error handling +Patch56: 0009-modules-load-fix-error-handling.patch +# PATCH-FIX-UPSTREAM 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch fcrozat@suse.com -- fix incorrect memory access +Patch57: 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch +# PATCH-FIX-UPSTREAM 0011-strv-don-t-access-potentially-NULL-string-arrays.patch fcrozat@suse.com -- fix incorrect memory access +Patch58: 0011-strv-don-t-access-potentially-NULL-string-arrays.patch +# PATCH-FIX-UPSTREAM 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch fcrozat@suse.com -- fix invalid pointer +Patch59: 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch +# PATCH-FIX-UPSTREAM 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch fcrozat@suse.com -- fix permission on /run/log/journal +Patch60: 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch +# PATCH-FIX-UPSTREAM 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch fcrozat@suse.com -- order remote mount points properly before remote-fs.target +Patch61: 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch +# PATCH-FIX-UPSTREAM 0001-gpt-auto-generator-exit-immediately-if-in-container.patch fcrozat@suse.com -- don't start gpt auto-generator in container +Patch62: 0001-gpt-auto-generator-exit-immediately-if-in-container.patch +# PATCH-FIX-UPSTREAM 0001-manager-when-verifying-whether-clients-may-change-en.patch fcrozat@suse.com -- fix reload check in selinux case +Patch63: 0001-manager-when-verifying-whether-clients-may-change-en.patch +# PATCH-FIX-UPSTREAM 0001-logind-fix-bus-introspection-data-for-TakeControl.patch fcrozat@suse.com -- fix introspection for TakeControl +Patch64: 0001-logind-fix-bus-introspection-data-for-TakeControl.patch +# PATCH-FIX-UPSTREAM 0001-mount-check-for-NULL-before-reading-pm-what.patch fcrozat@suse.com -- fix crash when parsing some incorrect unit +Patch65: 0001-mount-check-for-NULL-before-reading-pm-what.patch +# PATCH-FIX-UPSTREAM 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch fcrozat@suse.com -- Fix udev rules parsing +Patch66: 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch +# PATCH-FIX-UPSTREAM 0001-systemd-serialize-deserialize-forbid_restart-value.patch fcrozat@suse.com -- Fix incorrect deserialization for forbid_restart +Patch67: 0001-systemd-serialize-deserialize-forbid_restart-value.patch +# PATCH-FIX-UPSTREAM 0001-core-unify-the-way-we-denote-serialization-attribute.patch fcrozat@suse.com -- Ensure forbid_restart is named like other attributes +Patch68: 0001-core-unify-the-way-we-denote-serialization-attribute.patch +# PATCH-FIX-UPSTREAM 0001-journald-fix-minor-memory-leak.patch fcrozat@suse.com -- fix memleak in journald +Patch69: 0001-journald-fix-minor-memory-leak.patch +# PATCH-FIX-UPSTREAM 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch fcrozat@suse.com -- Improve ACPI firmware performance parsing +Patch70: 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch +# PATCH-FIX-UPSTREAM 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch fcrozat@suse.com -- Fix journal rotation +Patch71: 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch +# PATCH-FIX-UPSTREAM 0001-login-fix-invalid-free-in-sd_session_get_vt.patchfcrozat@suse.com -- Fix memory corruption in sd_session_get_vt +Patch72: 0001-login-fix-invalid-free-in-sd_session_get_vt.patch +# PATCH-FIX-UPSTREAM 0001-login-make-sd_session_get_vt-actually-work.patch fcrozat@suse.com -- Ensure sd_session_get_vt returns correct value +Patch73: 0001-login-make-sd_session_get_vt-actually-work.patch +# PATCH-FIX-UPSTREAM 0001-Never-call-qsort-on-potentially-NULL-arrays.patch fcrozat@suse.com -- Don't call qsort on NULL arrays +Patch74: 0001-Never-call-qsort-on-potentially-NULL-arrays.patch +# PATCH-FIX-UPSTREAM 0001-dbus-common-avoid-leak-in-error-path.patch fcrozat@suse.com -- Fix memleak in dbus-common code +Patch75: 0001-dbus-common-avoid-leak-in-error-path.patch +# PATCH-FIX-UPSTREAM 0001-drop-ins-check-return-value.patch fcrozat@suse.com -- Fix return value for drop-ins checks +Patch76: 0001-drop-ins-check-return-value.patch +# PATCH-FIX-UPSTREAM 0001-shared-util-Fix-glob_extend-argument.patch fcrozat@suse.com -- Fix glob_extend argument +Patch77: 0001-shared-util-Fix-glob_extend-argument.patch +# PATCH-FIX-UPSTREAM 0001-Fix-bad-assert-in-show_pid_array.patch fcrozat@suse.com -- Fix bad assert in show_pid_array +Patch78: 0001-Fix-bad-assert-in-show_pid_array.patch +# PATCH-FIX-UPSTREAM 0001-analyze-set-white-background.patch werner@suse.com -- Make background of systemd-analyze SVG white +Patch79: 0001-analyze-set-white-background.patch +# PATCH-FIX-UPSTREAM 0001-analyze-set-text-on-side-with-most-space.patch werner@suse.com -- Place the text on the side with most space +Patch80: 0001-analyze-set-text-on-side-with-most-space.patch +# PATCH-FIX-UPSTREAM 0001-logind-garbage-collect-stale-users.patch -- Don't stop a running user manager from garbage-collecting the user. +Patch81: 0001-logind-garbage-collect-stale-users.patch +# PATCH-FIX-UPSTREAM analyze-fix-crash-in-command-line-parsing.patch fcrozat@suse.com bnc#859365 -- Fix crash in systemd-analyze +Patch82: analyze-fix-crash-in-command-line-parsing.patch +# PATCH-FIX-UPSTREAM 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch -- Prevent accidental kill of emergency shell (bnc#852021) +Patch83: 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch +# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232) +Patch84: make-emergency.service-conflict-with-syslog.socket.patch +# PATCH-FIX-UPSTREAM 0001-upstream-systemctl-halt-reboot-error-handling.patch +Patch85: 0001-upstream-systemctl-halt-reboot-error-handling.patch +# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch +Patch86: 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch +# PATCH-FIX-UPSTREAM 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch -- Allow sending SIGTERM to main PID only (bnc#841544) +Patch87: 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch +# PATCH-FIX-UPSTREAM 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch -- Allow using it with PAM enabled services (bnc#841544) +Patch88: 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch +# PATCH-FIX-UPSTREAM 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch -- Make sure final SIGKILL actually kills everything (bnc#841544) +Patch89: 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch +# PATCH-FIX-SUSE 0001-On_s390_con3270_disable_ANSI_colour_esc.patch +Patch90: 0001-On_s390_con3270_disable_ANSI_colour_esc.patch +# PATCH-FIX-SUSE plymouth-quit-and-wait-for-emergency-service.patch -- Make sure that no plymouthd is locking the tty +Patch91: plymouth-quit-and-wait-for-emergency-service.patch # udev patches # PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch @@ -198,8 +286,28 @@ Patch1006: 1006-udev-always-rename-network.patch Patch1007: 1007-physical-hotplug-cpu-and-memory.patch # PATCH-FIX-OPENSUSE 1008-add-msft-compability-rules.patch Patch1008: 1008-add-msft-compability-rules.patch -# PATCH-FIX-UPSTREAM libudev: fix move_later comparison -Patch1009: 0007-libudev-fix-move_later-comparison.patch +# PATCH-FIX-OPENSUSE 1009-make-xsltproc-use-correct-ROFF-links.patch -- Make ROFF links working again in manual pages (bnc#842844) +Patch1009: 1009-make-xsltproc-use-correct-ROFF-links.patch +# PATCH-FIX-OPENSUSE 1010-do-not-install-sulogin-unit-with-poweroff.patch -- Avoid installing console-shell.service (bnc#849071) +Patch1010: 1010-do-not-install-sulogin-unit-with-poweroff.patch +# PATCH-FIX-OPENSUSE 1011-check-4-valid-kmsg-device.patch -- Avoid busy systemd-journald (bnc#851393) +Patch1011: 1011-check-4-valid-kmsg-device.patch +# PATCH-FIX-UPSTREAM 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch +Patch1012: 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch +# PATCH-FIX-UPSTREAM U_logind_revert_lazy_session_activation_on_non_vt_seats.patch +Patch1013: U_logind_revert_lazy_session_activation_on_non_vt_seats.patch +# PATCH-FIX-OPENSUSE 1014-journald-with-journaling-FS.patch +Patch1014: 1014-journald-with-journaling-FS.patch +# PATCH-FIX-UPSTREAM build-sys-make-multi-seat-x-optional.patch +Patch1015: build-sys-make-multi-seat-x-optional.patch +# PATCH-FIX-SUSE 1016-support-powerfail-with-powerstatus.patch +Patch1016: 1016-support-powerfail-with-powerstatus.patch +# PATCH-FIX-UPSTREAM 1017-skip-native-unit-handling-if-sysv-already-handled.patch +Patch1017: 1017-skip-native-unit-handling-if-sysv-already-handled.patch +# PATCH-FIX-SUSE 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch +Patch1018: 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch +# PATCH-FIX-SUSE 1019-make-completion-smart-to-be-able-to-redirect.patch +Patch1019: 1019-make-completion-smart-to-be-able-to-redirect.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -243,7 +351,7 @@ Summary: A rule-based device node and kernel event manager License: GPL-2.0 Group: System/Kernel Url: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html -PreReq: /bin/pidof /bin/rm /usr/bin/stat %insserv_prereq %fillup_prereq /usr/sbin/groupadd /usr/bin/getent /sbin/mkinitrd /usr/bin/sg_inq +PreReq: /bin/rm /usr/bin/stat %insserv_prereq %fillup_prereq /usr/sbin/groupadd /usr/bin/getent /sbin/mkinitrd /usr/bin/sg_inq Requires(post): lib%{udevpkgname}%{udev_major} Conflicts: systemd < 39 Conflicts: aaa_base < 11.5 @@ -436,6 +544,43 @@ cp %{SOURCE7} m4/ %patch52 -p1 %patch53 -p1 %patch54 -p1 +%patch55 -p1 +%patch56 -p1 +%patch57 -p1 +%patch58 -p1 +%patch59 -p1 +%patch60 -p1 +%patch61 -p1 +%patch62 -p1 +%patch63 -p1 +%patch64 -p1 +%patch65 -p1 +%patch66 -p1 +%patch67 -p1 +%patch68 -p1 +%patch69 -p1 +%patch70 -p1 +%patch71 -p1 +%patch72 -p1 +%patch73 -p1 +%patch74 -p1 +%patch75 -p1 +%patch76 -p1 +%patch77 -p1 +%patch78 -p1 +%patch79 -p1 +%patch80 -p1 +%patch81 -p1 +%patch82 -p1 +%patch83 -p1 +%patch84 -p1 +%patch85 -p1 +%patch86 -p1 +%patch87 -p1 +%patch88 -p1 +%patch89 -p1 +%patch90 -p1 +%patch91 -p1 # udev patches %patch1001 -p1 @@ -449,6 +594,19 @@ cp %{SOURCE7} m4/ %patch1008 -p1 %endif %patch1009 -p1 +%patch1010 -p1 +%patch1011 -p1 +%patch1012 -p1 +%patch1013 -p1 +%patch1014 -p1 +%patch1015 -p1 +%patch1016 -p1 +%patch1017 -p1 +%patch1018 -p1 +%patch1019 -p1 + +# ensure generate files are removed +rm -f units/emergency.service %build autoreconf -fiv @@ -474,6 +632,11 @@ export V=1 --with-rc-local-script-path-start=/etc/init.d/boot.local \ --with-rc-local-script-path-stop=/etc/init.d/halt.local \ --with-debug-shell=/bin/bash \ + --disable-smack \ + --disable-ima \ +%if 0%{?suse_version} > 1310 + --disable-multi-seat-x \ +%endif CFLAGS="%{optflags}" make %{?_smp_mflags} @@ -550,6 +713,9 @@ ln -s systemd-random-seed.service %{buildroot}/%{_prefix}/lib/systemd/system/ran # don't mount /tmp as tmpfs for now rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount +# don't enable wall ask password service, it spams every console (bnc#747783) +rm %{buildroot}%{_prefix}/lib/systemd/system/multi-user.target.wants/systemd-ask-password-wall.path + # create %{_libexecdir}/modules-load.d mkdir -p %{buildroot}%{_libexecdir}/modules-load.d cat << EOF > %{buildroot}%{_libexecdir}/modules-load.d/sg.conf @@ -574,7 +740,7 @@ rm -f %{buildroot}/var/log/README %endif # legacy links -for f in loginctl journalctl ; do +for f in loginctl journalctl ; do ln -s $f %{buildroot}%{_bindir}/systemd-$f %if ! 0%{?bootstrap} ln -s $f.1 %{buildroot}%{_mandir}/man1/systemd-$f.1 @@ -611,6 +777,27 @@ cat << EOF > %{buildroot}%{_prefix}/lib/systemd/system/getty@tty1.service.d/nocl TTYVTDisallocate=no EOF +# ensure after.local wrapper is called +install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/ +ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/ + +# support for SIGPWR handling with /var/run/powerstatus of e.g. powerd +install -m 755 %{S:12} %{buildroot}/%{_prefix}/lib/systemd/ +install -m 644 units/powerfail.service %{buildroot}/%{_prefix}/lib/systemd/system/ +%if ! 0%{?bootstrap} +install -m 644 man/systemd-powerfail.service.8 %{buildroot}/%{_mandir}/man8/ +%endif + +# clean out some completions which requires bash-completion package +%if %{without bash_completion} +for c in %{buildroot}/%{_datadir}/bash-completion/completions/* +do + test -e "$c" || continue + grep -q _init_completion "$c" || continue + rm -vf "$c" +done +%endif + %fdupes -s %{buildroot}%{_mandir} # packaged in systemd-rpm-macros @@ -621,12 +808,18 @@ getent group systemd-journal >/dev/null || groupadd -r systemd-journal || : exit 0 %post -/usr/sbin/pam-config -a --systemd >/dev/null 2>&1 || : +%if ! 0%{?bootstrap} +/usr/sbin/pam-config -a --systemd || : +%endif /sbin/ldconfig +[ -e /var/lib/random-seed ] && mv /var/lib/random-seed /var/lib/systemd/ > /dev/null || : /usr/bin/systemd-machine-id-setup >/dev/null 2>&1 || : /usr/lib/systemd/systemd-random-seed save >/dev/null 2>&1 || : /usr/bin/systemctl daemon-reexec >/dev/null 2>&1 || : /usr/bin/journalctl --update-catalog >/dev/null 2>&1 || : +# Make sure new journal files +chgrp systemd-journal /var/log/journal/ /var/log/journal/`cat /etc/machine-id 2> /dev/null` >/dev/null 2>&1 || : +chmod g+s /var/log/journal/ /var/log/journal/`cat /etc/machine-id 2> /dev/null` >/dev/null 2>&1 || : # Try to read default runlevel from the old inittab if it exists if [ ! -e /etc/systemd/system/default.target -a -e /etc/inittab ]; then @@ -646,28 +839,29 @@ if [ "$1" -eq 1 ]; then remote-fs.target >/dev/null 2>&1 || : fi -%triggerpostun -- systemd < 194 -# migrate any symlink which may refer to the old path -for f in $(find /etc/systemd/system -type l -xtype l); do - new_target="/usr$(readlink $f)" - [ -f "$new_target" ] && ln -s -f $new_target $f || : -done - # since v207 /etc/sysctl.conf is no longer parsed, however # backward compatibility is provided by /etc/sysctl.d/99-sysctl.conf if [ ! -L /etc/sysctl.d/99-sysctl.conf -a -e /etc/sysctl.conf ]; then /bin/ln -sf /etc/sysctl.conf /etc/sysctl.d/99-sysctl.conf || : fi +# migrate any symlink which may refer to the old path +for f in $(find /etc/systemd/system -type l -xtype l); do + new_target="/usr$(readlink $f)" + [ -f "$new_target" ] && ln -s -f $new_target $f || : +done + %postun /sbin/ldconfig if [ $1 -ge 1 ]; then /usr/bin/systemctl daemon-reload >/dev/null 2>&1 || : /usr/bin/systemctl try-restart systemd-logind.service >/dev/null 2>&1 || : fi +%if ! 0%{?bootstrap} if [ $1 -eq 0 ]; then - /usr/sbin/pam-config -d --systemd >/dev/null 2>&1 || : + /usr/sbin/pam-config -d --systemd || : fi +%endif %preun if [ $1 -eq 0 ]; then @@ -973,10 +1167,13 @@ exit 0 %dir /var/lib/systemd/sysv-convert %dir /var/lib/systemd/migrated %dir /var/lib/systemd/catalog +%ghost /var/lib/systemd/catalog/database %dir /var/lib/systemd/coredump %dir /usr/share/zsh %dir /usr/share/zsh/site-functions /usr/share/zsh/site-functions/* +%ghost /var/lib/systemd/backlight +%ghost /var/lib/systemd/random-seed %files devel %defattr(-,root,root,-) diff --git a/use-usr-sbin-sulogin-for-emergency-service.patch b/use-usr-sbin-sulogin-for-emergency-service.patch index 9dfa497..e29f4b2 100644 --- a/use-usr-sbin-sulogin-for-emergency-service.patch +++ b/use-usr-sbin-sulogin-for-emergency-service.patch @@ -3,8 +3,10 @@ Subject: use /usr/sbin/sulogin in emergency service In current Factory sulogin is in /usr/sbin which makes it impossible to enter emergency service. ---- systemd-206.orig/units/emergency.service.in -+++ systemd-206/units/emergency.service.in +Index: systemd-207/units/emergency.service.in +=================================================================== +--- systemd-207.orig/units/emergency.service.in ++++ systemd-207/units/emergency.service.in @@ -17,7 +17,7 @@ Environment=HOME=/root WorkingDirectory=/root ExecStartPre=-/bin/plymouth quit @@ -14,3 +16,29 @@ to enter emergency service. ExecStopPost=@SYSTEMCTL@ --fail --no-block default Type=idle StandardInput=tty-force +Index: systemd-207/units/console-shell.service.m4.in +=================================================================== +--- systemd-207.orig/units/console-shell.service.m4.in ++++ systemd-207/units/console-shell.service.m4.in +@@ -17,7 +17,7 @@ Before=getty.target + [Service] + Environment=HOME=/root + WorkingDirectory=/root +-ExecStart=-/sbin/sulogin ++ExecStart=-/usr/sbin/sulogin + ExecStopPost=-@SYSTEMCTL@ poweroff + Type=idle + StandardInput=tty-force +Index: systemd-207/units/rescue.service.m4.in +=================================================================== +--- systemd-207.orig/units/rescue.service.m4.in ++++ systemd-207/units/rescue.service.m4.in +@@ -18,7 +18,7 @@ Environment=HOME=/root + WorkingDirectory=/root + ExecStartPre=-/bin/plymouth quit + ExecStartPre=-/bin/echo -e 'Welcome to rescue mode! Type "systemctl default" or ^D to enter default mode.\\nType "journalctl -xb" to view system logs. Type "systemctl reboot" to reboot.' +-ExecStart=-/sbin/sulogin ++ExecStart=-/usr/sbin/sulogin + ExecStopPost=-@SYSTEMCTL@ --fail --no-block default + Type=idle + StandardInput=tty-force