diff --git a/0001-Fix-bad-assert-in-show_pid_array.patch b/0001-Fix-bad-assert-in-show_pid_array.patch deleted file mode 100644 index e62ab8b..0000000 --- a/0001-Fix-bad-assert-in-show_pid_array.patch +++ /dev/null @@ -1,35 +0,0 @@ -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 deleted file mode 100644 index 515348f..0000000 --- a/0001-Never-call-qsort-on-potentially-NULL-arrays.patch +++ /dev/null @@ -1,385 +0,0 @@ -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 index 843894e..e772cba 100644 --- a/0001-On_s390_con3270_disable_ANSI_colour_esc.patch +++ b/0001-On_s390_con3270_disable_ANSI_colour_esc.patch @@ -10,7 +10,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*", TAG+="systemd" +SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty*", TAG+="systemd" KERNEL=="vport*", TAG+="systemd" @@ -108,16 +108,3 @@ 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 deleted file mode 100644 index 312a561..0000000 --- a/0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch +++ /dev/null @@ -1,25 +0,0 @@ -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 index 6016d3b..57ca912 100644 --- a/0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch +++ b/0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch @@ -5,65 +5,57 @@ 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 +++ + Makefile.am | 11 + + src/core/hdflush.c | 365 ++++++++++++++++++++++++++++++++++++++++++++++ + src/core/hdflush.h | 25 +++ + src/core/shutdown.c | 12 + src/systemctl/systemctl.c | 25 ++- - 6 files changed, 424 insertions(+), 8 deletions(-) + 5 files changed, 429 insertions(+), 9 deletions(-) ---- systemd-208/Makefile.am -+++ systemd-208/Makefile.am 2014-01-28 11:06:56.000000000 +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:34.000000000 +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.000000000 +0000 -@@ -0,0 +1,365 @@ +--- systemd-209/Makefile.am ++++ systemd-209/Makefile.am 2014-01-28 11:06:56.000000000 +0000 +@@ -1004,7 +1004,9 @@ libsystemd_core_la_SOURCES = \ + src/core/audit-fd.c \ + src/core/audit-fd.h \ + src/core/async.c \ +- src/core/async.h ++ src/core/async.h \ ++ src/core/hdflush.c \ ++ src/core/hdflush.h + + if HAVE_KMOD + libsystemd_core_la_SOURCES += \ +@@ -1522,6 +1524,8 @@ systemd_shutdown_SOURCES = \ + src/core/shutdown.c \ + src/core/mount-setup.c \ + src/core/mount-setup.h \ ++ src/core/hdflush.c \ ++ src/core/hdflush.h \ + src/core/killall.h \ + src/core/killall.c + +@@ -1818,7 +1822,9 @@ systemd_cgroups_agent_LDADD = \ + + # ------------------------------------------------------------------------------ + systemctl_SOURCES = \ +- src/systemctl/systemctl.c ++ src/systemctl/systemctl.c \ ++ src/core/hdflush.c \ ++ src/core/hdflush.h + + systemctl_LDADD = \ + libsystemd-units.la \ +@@ -1826,6 +1832,7 @@ systemctl_LDADD = \ + libsystemd-internal.la \ + libsystemd-logs.la \ + libsystemd-journal-internal.la \ ++ libudev-internal.la \ + libsystemd-shared.la + + # ------------------------------------------------------------------------------ +--- systemd-209/src/core/hdflush.c ++++ systemd-209/src/core/hdflush.c 2014-01-28 10:58:56.000000000 +0000 +@@ -0,0 +1,367 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** @@ -111,6 +103,8 @@ systemctl command as well as for the systemd-shutdown utility. +# include +#endif + ++#include "hdflush.h" ++ +/* 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 */ @@ -429,8 +423,8 @@ systemctl command as well as for the systemd-shutdown utility. + close_sysfs(sysfs); +} +#endif ---- systemd-208/src/shared/hdflush.h -+++ systemd-208/src/shared/hdflush.h 2014-01-28 11:00:08.000000000 +0000 +--- systemd-209/src/core/hdflush.h ++++ systemd-209/src/core/hdflush.h 2014-01-28 11:00:08.000000000 +0000 @@ -0,0 +1,25 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + @@ -457,8 +451,8 @@ systemctl command as well as for the systemd-shutdown utility. + +void hdflush(void); +void hddown(void); ---- systemd-208/src/core/shutdown.c -+++ systemd-208/src/core/shutdown.c 2014-01-28 11:14:16.000000000 +0000 +--- systemd-209/src/core/shutdown.c ++++ systemd-209/src/core/shutdown.c 2014-02-28 11:17:22.000000000 +0000 @@ -40,6 +40,7 @@ #include "missing.h" #include "log.h" @@ -467,7 +461,17 @@ systemctl command as well as for the systemd-shutdown utility. #include "umount.h" #include "util.h" #include "mkdir.h" -@@ -302,8 +303,13 @@ int main(int argc, char *argv[]) { +@@ -225,7 +226,8 @@ int main(int argc, char *argv[]) { + _cleanup_free_ char *cgroup = NULL; + char *arguments[3]; + unsigned retries; +- int cmd, r; ++ unsigned cmd; ++ int r; + + log_parse_environment(); + r = parse_argv(argc, argv); +@@ -388,8 +390,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. */ @@ -480,11 +484,30 @@ systemctl command as well as for the systemd-shutdown utility. + hdflush(); + } - if (cmd == LINUX_REBOOT_CMD_KEXEC) { + switch (cmd) { ---- systemd-208/src/systemctl/systemctl.c -+++ systemd-208/src/systemctl/systemctl.c 2014-02-20 11:53:11.350234762 +0000 -@@ -87,6 +87,7 @@ static bool arg_no_pager = false; +@@ -449,6 +456,10 @@ 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-209/src/systemctl/systemctl.c ++++ systemd-209/src/systemctl/systemctl.c 2014-02-28 11:19:35.000000000 +0000 +@@ -67,6 +67,7 @@ + #include "logs-show.h" + #include "socket-util.h" + #include "fileio.h" ++#include "hdflush.h" + #include "env-util.h" + #include "bus-util.h" + #include "bus-message.h" +@@ -93,6 +94,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; @@ -492,15 +515,15 @@ systemctl command as well as for the systemd-shutdown utility. 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 +@@ -5566,6 +5568,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 + {} +@@ -5617,10 +5620,13 @@ static int halt_parse_argv(int argc, cha case 'i': case 'h': @@ -515,7 +538,7 @@ systemctl command as well as for the systemd-shutdown utility. case '?': return -EINVAL; -@@ -5979,16 +5984,24 @@ static int halt_now(enum action a) { +@@ -6266,16 +6272,24 @@ static int halt_now(enum action a) { * point on... */ reboot(RB_ENABLE_CAD); @@ -544,4 +567,4 @@ systemctl command as well as for the systemd-shutdown utility. + reboot(RB_HALT_SYSTEM); return -errno; - case ACTION_REBOOT: + case ACTION_REBOOT: { diff --git a/0001-add-network-device-after-NFS-mount-units.patch b/0001-add-network-device-after-NFS-mount-units.patch index c24e5f4..8b67bd8 100644 --- a/0001-add-network-device-after-NFS-mount-units.patch +++ b/0001-add-network-device-after-NFS-mount-units.patch @@ -7,13 +7,13 @@ NFS share is added as "After=" dependency to the .mount. Makefile.am | 2 src/core/mount-iface.c | 173 +++++++++++++++++++++++++++++++++++++++++++++++++ src/core/mount-iface.h | 25 +++++++ - src/core/mount.c | 34 ++++++++- + src/core/mount.c | 34 +++++++++ src/shared/util.c | 1 - 5 files changed, 232 insertions(+), 3 deletions(-) + 5 files changed, 233 insertions(+), 2 deletions(-) ---- systemd-208/Makefile.am -+++ systemd-208/Makefile.am 2014-02-26 13:44:19.816148628 +0100 -@@ -959,6 +959,8 @@ libsystemd_core_la_SOURCES = \ +--- systemd-209/Makefile.am ++++ systemd-209/Makefile.am 2014-02-26 12:44:20.000000000 +0000 +@@ -987,6 +987,8 @@ libsystemd_core_la_SOURCES = \ src/core/machine-id-setup.h \ src/core/mount-setup.c \ src/core/mount-setup.h \ @@ -22,8 +22,8 @@ NFS share is added as "After=" dependency to the .mount. src/core/loopback-setup.h \ src/core/loopback-setup.c \ src/core/condition.c \ ---- systemd-208/src/core/mount-iface.c -+++ systemd-208/src/core/mount-iface.c 2014-02-26 11:18:36.350742718 +0100 +--- systemd-209/src/core/mount-iface.c ++++ systemd-209/src/core/mount-iface.c 2014-02-26 10:18:36.000000000 +0000 @@ -0,0 +1,173 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + @@ -198,8 +198,8 @@ NFS share is added as "After=" dependency to the .mount. + freeifaddrs(ifa_list); + ifa_list = NULL; +} ---- systemd-208/src/core/mount-iface.h -+++ systemd-208/src/core/mount-iface.h 2014-02-26 11:08:19.797906189 +0100 +--- systemd-209/src/core/mount-iface.h ++++ systemd-209/src/core/mount-iface.h 2014-02-26 10:08:20.000000000 +0000 @@ -0,0 +1,25 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + @@ -226,8 +226,8 @@ NFS share is added as "After=" dependency to the .mount. + +char *host2iface(const char *ip); +void freeroutes(void); ---- systemd-208/src/core/mount.c -+++ systemd-208/src/core/mount.c 2014-02-26 12:20:00.883799034 +0100 +--- systemd-209/src/core/mount.c ++++ systemd-209/src/core/mount.c 2014-02-28 13:01:00.000000000 +0000 @@ -36,6 +36,7 @@ #include "mkdir.h" #include "path-util.h" @@ -236,16 +236,18 @@ NFS share is added as "After=" dependency to the .mount. #include "unit-name.h" #include "dbus-mount.h" #include "special.h" -@@ -1420,7 +1421,7 @@ static int mount_add_one( - bool set_flags) { - int r; - Unit *u; +@@ -1388,8 +1389,9 @@ static int mount_add_one( + _cleanup_free_ char *e = NULL, *w = NULL, *o = NULL, *f = NULL; + bool load_extras = false; + MountParameters *p; - bool delete; + bool delete, isnetwork; - char *e, *w = NULL, *o = NULL, *f = NULL; - MountParameters *p; - bool load_extras = false; -@@ -1447,10 +1448,11 @@ static int mount_add_one( + Unit *u; ++ char *c; + int r; + + assert(m); +@@ -1414,6 +1416,8 @@ static int mount_add_one( if (!e) return -ENOMEM; @@ -253,19 +255,25 @@ NFS share is added as "After=" dependency to the .mount. + u = manager_get_unit(m, e); if (!u) { -- const char* const target = -- fstype_is_network(fstype) ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET; -+ const char* const target = isnetwork ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET; - delete = true; +@@ -1442,7 +1446,7 @@ static int mount_add_one( + if (m->running_as == SYSTEMD_SYSTEM) { + const char* target; -@@ -1544,6 +1546,31 @@ static int mount_add_one( +- target = fstype_is_network(fstype) ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET; ++ target = isnetwork ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET; + + r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true); + if (r < 0) +@@ -1511,6 +1515,32 @@ static int mount_add_one( goto fail; } -+ if (isnetwork && (e = strrchr(p->what, ':')) && *(e+1) == '/' && (e = strdup(p->options))) { -+ char *addr = strstr(e, ",addr="); -+ if (addr) { ++ if (isnetwork && (c = strrchr(p->what, ':')) && *(c+1) == '/') { ++ _cleanup_free_ char *opt = strdup(p->options); ++ char *addr; ++ ++ if (opt && (addr = strstr(opt, ",addr="))) { + char *colon, *iface; + + addr += 6; @@ -274,7 +282,7 @@ NFS share is added as "After=" dependency to the .mount. + + iface = host2iface(addr); + if (iface) { -+ char* target; ++ _cleanup_free_ char* target = NULL; + if (asprintf(&target, "sys-subsystem-net-devices-%s.device", iface) < 0) + log_oom(); + else { @@ -285,13 +293,12 @@ NFS share is added as "After=" dependency to the .mount. + } + } + } -+ free(e); + } + unit_add_to_dbus_queue(u); return 0; -@@ -1611,6 +1638,7 @@ static int mount_load_proc_self_mountinf +@@ -1574,6 +1604,7 @@ static int mount_load_proc_self_mountinf if (k < 0) r = k; } @@ -299,9 +306,9 @@ NFS share is added as "After=" dependency to the .mount. return r; } ---- systemd-208/src/shared/util.c -+++ systemd-208/src/shared/util.c 2014-02-24 16:17:41.682298917 +0100 -@@ -1593,6 +1593,7 @@ bool fstype_is_network(const char *fstyp +--- systemd-209/src/shared/util.c ++++ systemd-209/src/shared/util.c 2014-02-24 15:17:42.000000000 +0000 +@@ -1502,6 +1502,7 @@ bool fstype_is_network(const char *fstyp "ncp\0" "nfs\0" "nfs4\0" diff --git a/0001-analyze-set-text-on-side-with-most-space.patch b/0001-analyze-set-text-on-side-with-most-space.patch deleted file mode 100644 index 6268160..0000000 --- a/0001-analyze-set-text-on-side-with-most-space.patch +++ /dev/null @@ -1,90 +0,0 @@ -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 deleted file mode 100644 index 8906284..0000000 --- a/0001-analyze-set-white-background.patch +++ /dev/null @@ -1,32 +0,0 @@ -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-avoid-abort-due-timeout-at-user-service.patch b/0001-avoid-abort-due-timeout-at-user-service.patch new file mode 100644 index 0000000..e441beb --- /dev/null +++ b/0001-avoid-abort-due-timeout-at-user-service.patch @@ -0,0 +1,15 @@ +--- systemd-209/src/login/logind-session.c ++++ systemd-209/src/login/logind-session.c 2014-02-28 12:12:14.762736079 +0000 +@@ -525,6 +525,12 @@ int session_start(Session *s) { + if (r < 0) + return r; + ++ if (!s->user->slice) { ++ if (errno) ++ return -errno; ++ return -ESTALE; ++ } ++ + /* Create cgroup */ + r = session_start_scope(s); + if (r < 0) diff --git a/0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch b/0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch deleted file mode 100644 index 3729198..0000000 --- a/0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch +++ /dev/null @@ -1,225 +0,0 @@ -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 deleted file mode 100644 index 40479ea..0000000 --- a/0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch +++ /dev/null @@ -1,329 +0,0 @@ -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 deleted file mode 100644 index e33e45d..0000000 --- a/0001-core-unify-the-way-we-denote-serialization-attribute.patch +++ /dev/null @@ -1,40 +0,0 @@ -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 deleted file mode 100644 index e2ac93f..0000000 --- a/0001-dbus-common-avoid-leak-in-error-path.patch +++ /dev/null @@ -1,71 +0,0 @@ -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 deleted file mode 100644 index 53e8253..0000000 --- a/0001-do-not-accept-garbage-from-acpi-firmware-performance.patch +++ /dev/null @@ -1,33 +0,0 @@ -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 deleted file mode 100644 index 35a0f70..0000000 --- a/0001-drop-ins-check-return-value.patch +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 4d1fee2..0000000 --- a/0001-gpt-auto-generator-exit-immediately-if-in-container.patch +++ /dev/null @@ -1,40 +0,0 @@ -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 deleted file mode 100644 index 10df2c0..0000000 --- a/0001-journald-fix-minor-memory-leak.patch +++ /dev/null @@ -1,25 +0,0 @@ -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 deleted file mode 100644 index 0ed6caa..0000000 --- a/0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch +++ /dev/null @@ -1,39 +0,0 @@ -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 deleted file mode 100644 index 7a7551e..0000000 --- a/0001-login-fix-invalid-free-in-sd_session_get_vt.patch +++ /dev/null @@ -1,27 +0,0 @@ -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 deleted file mode 100644 index 49a0a13..0000000 --- a/0001-login-make-sd_session_get_vt-actually-work.patch +++ /dev/null @@ -1,27 +0,0 @@ -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 deleted file mode 100644 index 829333e..0000000 --- a/0001-logind-fix-bus-introspection-data-for-TakeControl.patch +++ /dev/null @@ -1,25 +0,0 @@ -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 deleted file mode 100644 index fd91e8b..0000000 --- a/0001-logind-garbage-collect-stale-users.patch +++ /dev/null @@ -1,28 +0,0 @@ -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-make-209-working-on-older-dist.patch b/0001-make-209-working-on-older-dist.patch new file mode 100644 index 0000000..4c66289 --- /dev/null +++ b/0001-make-209-working-on-older-dist.patch @@ -0,0 +1,8 @@ +--- systemd-209/units/kmod-static-nodes.service.in ++++ systemd-209/units/kmod-static-nodes.service.in 2014-02-27 15:04:30.378236539 +0000 +@@ -15,4 +15,5 @@ ConditionPathExists=/lib/modules/%v/modu + [Service] + Type=oneshot + RemainAfterExit=yes ++ExecStartPre=@MKDIR_P@ /run/tmpfiles.d + ExecStart=@KMOD@ static-nodes --format=tmpfiles --output=/run/tmpfiles.d/kmod.conf diff --git a/0001-make-fortify-happy-with-ppoll.patch b/0001-make-fortify-happy-with-ppoll.patch new file mode 100644 index 0000000..ed27a72 --- /dev/null +++ b/0001-make-fortify-happy-with-ppoll.patch @@ -0,0 +1,55 @@ +--- systemd-209/src/libsystemd/sd-bus/sd-bus.c ++++ systemd-209/src/libsystemd/sd-bus/sd-bus.c 2014-02-28 11:08:21.354235373 +0000 +@@ -2548,7 +2548,7 @@ static int bus_poll(sd_bus *bus, bool ne + n = 2; + } + +- r = ppoll(p, n, m == (uint64_t) -1 ? NULL : timespec_store(&ts, m), NULL); ++ r = __ppoll_alias(p, n, m == (uint64_t) -1 ? NULL : timespec_store(&ts, m), NULL); + if (r < 0) + return -errno; + +--- systemd-209/src/core/hostname-setup.c ++++ systemd-209/src/core/hostname-setup.c 2014-02-28 11:14:51.594832792 +0000 +@@ -50,8 +50,8 @@ static int read_and_strip_hostname(const + } + + /* strip any leftover of a domain name */ +- if (domain = strchr(s, '.')) { +- *domain = NULL; ++ if ((domain = strchr(s, '.'))) { ++ *domain = '\0'; + } + + *hn = s; +--- systemd-209/src/tty-ask-password-agent/tty-ask-password-agent.c ++++ systemd-209/src/tty-ask-password-agent/tty-ask-password-agent.c 2014-02-28 11:41:42.254735820 +0000 +@@ -142,7 +142,7 @@ static int ask_password_plymouth( + goto finish; + } + +- if ((j = poll(pollfd, notify > 0 ? 2 : 1, sleep_for)) < 0) { ++ if ((j = __poll_alias(pollfd, notify > 0 ? 2 : 1, sleep_for)) < 0) { + + if (errno == EINTR) + continue; +@@ -595,7 +595,7 @@ static int watch_passwords(void) { + if ((r = show_passwords()) < 0) + log_error("Failed to show password: %s", strerror(-r)); + +- if (poll(pollfd, _FD_MAX, -1) < 0) { ++ if (__poll_alias(pollfd, _FD_MAX, -1) < 0) { + + if (errno == EINTR) + continue; +--- systemd-209/src/shared/ask-password-api.c ++++ systemd-209/src/shared/ask-password-api.c 2014-02-28 11:47:21.754234675 +0000 +@@ -138,7 +138,7 @@ int ask_password_tty( + goto finish; + } + +- if ((k = poll(pollfd, notify > 0 ? 2 : 1, sleep_for)) < 0) { ++ if ((k = __poll_alias(pollfd, notify > 0 ? 2 : 1, sleep_for)) < 0) { + + if (errno == EINTR) + continue; diff --git a/0001-make-tests-with-libseccomp-work.patch b/0001-make-tests-with-libseccomp-work.patch new file mode 100644 index 0000000..b93fbb9 --- /dev/null +++ b/0001-make-tests-with-libseccomp-work.patch @@ -0,0 +1,180 @@ +--- systemd-209/Makefile.am ++++ systemd-209/Makefile.am 2014-02-28 10:24:53.634235909 +0000 +@@ -1091,6 +1091,12 @@ systemd_LDADD = \ + libsystemd-core.la \ + $(RT_LIBS) + ++if HAVE_SECCOMP ++systemd_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + dist_pkgsysconf_DATA += \ + src/core/system.conf \ + src/core/user.conf +@@ -1187,6 +1193,12 @@ test_engine_LDADD = \ + libsystemd-core.la \ + $(RT_LIBS) + ++if HAVE_SECCOMP ++test_engine_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + test_job_type_SOURCES = \ + src/test/test-job-type.c + +@@ -1194,18 +1206,36 @@ test_job_type_LDADD = \ + libsystemd-core.la \ + $(RT_LIBS) + ++if HAVE_SECCOMP ++test_job_type_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + test_ns_SOURCES = \ + src/test/test-ns.c + + test_ns_LDADD = \ + libsystemd-core.la + ++if HAVE_SECCOMP ++test_ns_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + test_loopback_SOURCES = \ + src/test/test-loopback.c + + test_loopback_LDADD = \ + libsystemd-core.la + ++if HAVE_SECCOMP ++test_loopback_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + test_hostname_SOURCES = \ + src/test/test-hostname.c + +@@ -1230,6 +1260,12 @@ test_unit_name_LDADD = \ + libsystemd-core.la \ + $(RT_LIBS) + ++if HAVE_SECCOMP ++test_unit_name_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + test_unit_file_SOURCES = \ + src/test/test-unit-file.c + +@@ -1237,12 +1273,24 @@ test_unit_file_LDADD = \ + libsystemd-core.la \ + $(RT_LIBS) + ++if HAVE_SECCOMP ++test_unit_file_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + test_utf8_SOURCES = \ + src/test/test-utf8.c + + test_utf8_LDADD = \ + libsystemd-shared.la + ++if HAVE_SECCOMP ++test_utf8_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + test_util_SOURCES = \ + src/test/test-util.c + +@@ -1255,6 +1303,12 @@ test_tmpfiles_SOURCES = \ + test_tmpfiles_LDADD = \ + libsystemd-shared.la + ++if HAVE_SECCOMP ++test_tmpfiles_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + test_namespace_SOURCES = \ + src/test/test-namespace.c + +@@ -1289,6 +1343,12 @@ test_tables_LDADD = \ + libsystemd-core.la \ + $(RT_LIBS) + ++if HAVE_SECCOMP ++test_tables_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + test_prioq_SOURCES = \ + src/test/test-prioq.c + +@@ -1374,6 +1434,12 @@ test_cgroup_mask_LDADD = \ + libsystemd-core.la \ + $(RT_LIBS) + ++if HAVE_SECCOMP ++test_cgroup_mask_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + test_cgroup_util_SOURCES = \ + src/test/test-cgroup-util.c + +@@ -1388,12 +1454,24 @@ test_env_replace_SOURCES = \ + test_env_replace_LDADD = \ + libsystemd-shared.la + ++if HAVE_SECCOMP ++test_env_replace_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + test_strbuf_SOURCES = \ + src/test/test-strbuf.c + + test_strbuf_LDADD = \ + libsystemd-shared.la + ++if HAVE_SECCOMP ++test_strbuf_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + test_strv_SOURCES = \ + src/test/test-strv.c + +@@ -1440,6 +1518,12 @@ test_sched_prio_LDADD = \ + libsystemd-core.la \ + $(RT_LIBS) + ++if HAVE_SECCOMP ++test_sched_prio_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(SECCOMP_CFLAGS) ++endif ++ + # ------------------------------------------------------------------------------ + ## .PHONY so it always rebuilds it + .PHONY: coverage lcov-run lcov-report coverage-sync diff --git a/0001-manager-when-verifying-whether-clients-may-change-en.patch b/0001-manager-when-verifying-whether-clients-may-change-en.patch deleted file mode 100644 index 57bb364..0000000 --- a/0001-manager-when-verifying-whether-clients-may-change-en.patch +++ /dev/null @@ -1,45 +0,0 @@ -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 deleted file mode 100644 index e8c830f..0000000 --- a/0001-mount-check-for-NULL-before-reading-pm-what.patch +++ /dev/null @@ -1,29 +0,0 @@ -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-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch b/0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch new file mode 100644 index 0000000..4dcfb70 --- /dev/null +++ b/0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch @@ -0,0 +1,41 @@ +From: Werner Fink +Date: Wed Feb 26 14:36:27 UTC 2014 +Subject: Do not clobber XDG_RUNTIME_DIR if su command preserve environment + +Make sure that even if a su command without option -l or with option -m +is used, the XDG_RUNTIME_DIR will not be clobbered by the new uid. + +This belongs to BNC#852015 and also to BNC#855160 + +--- + pam-module.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +--- systemd-209/src/login/pam-module.c ++++ systemd-209/src/login/pam-module.c 2014-02-26 14:31:30.158235525 +0000 +@@ -447,6 +447,25 @@ _public_ PAM_EXTERN int pam_sm_open_sess + r = export_legacy_dbus_address(handle, pw->pw_uid, runtime_path); + if (r != PAM_SUCCESS) + return r; ++ } else if (getenv("XDG_RUNTIME_DIR")) { ++ _cleanup_free_ char *p = NULL; ++ ++ /* Make sure that after running YaST2 or the xdg-su scripts ++ * the runtime directory is not clobbered. Even a normal su ++ * command without -l or with -m may clobber. */ ++ ++ if ((r = asprintf(&p, "/run/user/%lu", (unsigned long)pw->pw_uid)) < 0) ++ return PAM_BUF_ERR; ++ ++ r = pam_misc_setenv(handle, "XDG_RUNTIME_DIR", p, 0); ++ if (r != PAM_SUCCESS) { ++ pam_syslog(handle, LOG_ERR, "Failed to set runtime dir."); ++ return r; ++ } ++ ++ r = export_legacy_dbus_address(handle, pw->pw_uid, p); ++ if (r != PAM_SUCCESS) ++ return r; + } + + if (!isempty(seat)) { diff --git a/0001-shared-util-Fix-glob_extend-argument.patch b/0001-shared-util-Fix-glob_extend-argument.patch deleted file mode 100644 index 4695547..0000000 --- a/0001-shared-util-Fix-glob_extend-argument.patch +++ /dev/null @@ -1,28 +0,0 @@ -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 deleted file mode 100644 index eb6dedd..0000000 --- a/0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch +++ /dev/null @@ -1,50 +0,0 @@ -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-empty-sigmask-on-reexec.patch b/0001-systemd-empty-sigmask-on-reexec.patch new file mode 100644 index 0000000..f4f3ac9 --- /dev/null +++ b/0001-systemd-empty-sigmask-on-reexec.patch @@ -0,0 +1,42 @@ +Process 1 (aka init) needs to be started with an empty signal mask. That +includes the process 1 that's started after the initrd is finished. When the +initrd is using systemd (as it does with dracut based initrds) then it is +systemd that calls the real init. Normally this is systemd again, except +when the user uses for instance "init=/bin/bash" on the kernel command line. + +--- + main.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +--- src/core/main.c ++++ src/core/main.c 2014-02-27 13:54:21.922236495 +0000 +@@ -1780,6 +1780,7 @@ finish: + if (reexecute) { + const char **args; + unsigned i, args_size; ++ sigset_t ss, o_ss; + + /* Close and disarm the watchdog, so that the new + * instance can reinitialize it, but doesn't get +@@ -1863,6 +1864,11 @@ finish: + args[i++] = NULL; + assert(i <= args_size); + ++ /* reenable any blocked signals, especially important ++ * if we switch from initial ramdisk to init=... */ ++ sigemptyset(&ss); ++ sigprocmask(SIG_SETMASK,&ss,&o_ss); ++ + if (switch_root_init) { + args[0] = switch_root_init; + execv(args[0], (char* const*) args); +@@ -1881,6 +1887,9 @@ finish: + log_error("Failed to execute /bin/sh, giving up: %m"); + } else + log_warning("Failed to execute /sbin/init, giving up: %m"); ++ ++ /* back to saved state if reexec failed */ ++ sigprocmask(SIG_SETMASK,&o_ss,NULL); + } + + if (arg_serialization) { diff --git a/0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch b/0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch deleted file mode 100644 index 254212c..0000000 --- a/0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch +++ /dev/null @@ -1,41 +0,0 @@ -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 deleted file mode 100644 index 6184c9a..0000000 --- a/0001-systemd-serialize-deserialize-forbid_restart-value.patch +++ /dev/null @@ -1,51 +0,0 @@ -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-units-serial-getty-.service-add-Install-section.patch b/0001-units-serial-getty-.service-add-Install-section.patch new file mode 100644 index 0000000..83ffcbe --- /dev/null +++ b/0001-units-serial-getty-.service-add-Install-section.patch @@ -0,0 +1,27 @@ +From 7143555ce8f94b002d06b9b058d7d90c3a4901a9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 24 Feb 2014 08:02:28 -0500 +Subject: [PATCH] units/serial-getty@.service: add [Install] section + +This makes it easier to manually enable and disable +specific gettys, and also mirrors getty@.service. + +http://lists.freedesktop.org/archives/systemd-devel/2014-February/017329.html +--- + units/serial-getty@.service.m4 | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git units/serial-getty@.service.m4 units/serial-getty@.service.m4 +index 0e612bb..e94cdb4 100644 +--- systemd-209/units/serial-getty@.service.m4 ++++ systemd-209/units/serial-getty@.service.m4 +@@ -33,3 +33,6 @@ TTYVHangup=yes + KillMode=process + IgnoreSIGPIPE=no + SendSIGHUP=yes ++ ++[Install] ++WantedBy=getty.target +-- +1.7.9.2 + diff --git a/0001-upstream-systemctl-halt-reboot-error-handling.patch b/0001-upstream-systemctl-halt-reboot-error-handling.patch deleted file mode 100644 index 110b866..0000000 --- a/0001-upstream-systemctl-halt-reboot-error-handling.patch +++ /dev/null @@ -1,85 +0,0 @@ ---- 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-fix-lingering-references-to-var-lib-backlight-random.patch b/0002-fix-lingering-references-to-var-lib-backlight-random.patch deleted file mode 100644 index 6ce0c23..0000000 --- a/0002-fix-lingering-references-to-var-lib-backlight-random.patch +++ /dev/null @@ -1,55 +0,0 @@ -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 deleted file mode 100644 index 76624f9..0000000 --- a/0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch +++ /dev/null @@ -1,62 +0,0 @@ -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 deleted file mode 100644 index 86e1344..0000000 --- a/0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch +++ /dev/null @@ -1,25 +0,0 @@ -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-core-make-sure-to-always-go-through-both-SIGTERM-and.patch b/0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch deleted file mode 100644 index e6423f5..0000000 --- a/0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch +++ /dev/null @@ -1,128 +0,0 @@ -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-systemctl-fix-name-mangling-for-sysv-units.patch b/0004-systemctl-fix-name-mangling-for-sysv-units.patch deleted file mode 100644 index a2531e7..0000000 --- a/0004-systemctl-fix-name-mangling-for-sysv-units.patch +++ /dev/null @@ -1,134 +0,0 @@ -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-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch b/0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch deleted file mode 100644 index d46e94d..0000000 --- a/0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch +++ /dev/null @@ -1,48 +0,0 @@ -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 deleted file mode 100644 index 479c37c..0000000 --- a/0006-journald-add-missing-error-check.patch +++ /dev/null @@ -1,25 +0,0 @@ -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/0007-bus-fix-potentially-uninitialized-memory-access.patch b/0007-bus-fix-potentially-uninitialized-memory-access.patch deleted file mode 100644 index 2f2d2de..0000000 --- a/0007-bus-fix-potentially-uninitialized-memory-access.patch +++ /dev/null @@ -1,34 +0,0 @@ -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/0008-dbus-fix-return-value-of-dispatch_rqueue.patch b/0008-dbus-fix-return-value-of-dispatch_rqueue.patch deleted file mode 100644 index 3985ab2..0000000 --- a/0008-dbus-fix-return-value-of-dispatch_rqueue.patch +++ /dev/null @@ -1,30 +0,0 @@ -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/0009-modules-load-fix-error-handling.patch b/0009-modules-load-fix-error-handling.patch deleted file mode 100644 index df35021..0000000 --- a/0009-modules-load-fix-error-handling.patch +++ /dev/null @@ -1,27 +0,0 @@ -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 deleted file mode 100644 index 3994d1e..0000000 --- a/0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch +++ /dev/null @@ -1,26 +0,0 @@ -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 deleted file mode 100644 index 0ab9050..0000000 --- a/0011-strv-don-t-access-potentially-NULL-string-arrays.patch +++ /dev/null @@ -1,27 +0,0 @@ -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 deleted file mode 100644 index 1d91d80..0000000 --- a/0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch +++ /dev/null @@ -1,26 +0,0 @@ -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 deleted file mode 100644 index 1ed8f92..0000000 --- a/0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch +++ /dev/null @@ -1,26 +0,0 @@ -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/0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch b/0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch deleted file mode 100644 index e6981e6..0000000 --- a/0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch +++ /dev/null @@ -1,181 +0,0 @@ -From fc676b00a7545743429e0c9b12a0f0707b1059aa Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 5 Oct 2013 13:09:43 -0400 -Subject: [PATCH] core: do not add "what" to RequiresMountsFor for network - mounts - -For cifs mount like //server/share, we would get -RequiresMountsFor=/server/share, which probably isn't -harmful, but quite confusing. - -Unfortunately a bunch of static functions had to be moved -up, but patch is really one line. ---- - src/core/mount.c | 137 ++++++++++++++++++++++++++++-------------------------- - 1 file changed, 70 insertions(+), 67 deletions(-) - -diff --git src/core/mount.c src/core/mount.c -index db055f0..70cd372 100644 ---- src/core/mount.c -+++ src/core/mount.c -@@ -59,6 +59,72 @@ static const UnitActiveState state_translation_table[_MOUNT_STATE_MAX] = { - [MOUNT_FAILED] = UNIT_FAILED - }; - -+static char* mount_test_option(const char *haystack, const char *needle) { -+ struct mntent me = { .mnt_opts = (char*) haystack }; -+ -+ assert(needle); -+ -+ /* Like glibc's hasmntopt(), but works on a string, not a -+ * struct mntent */ -+ -+ if (!haystack) -+ return NULL; -+ -+ return hasmntopt(&me, needle); -+} -+ -+static bool mount_is_network(MountParameters *p) { -+ assert(p); -+ -+ if (mount_test_option(p->options, "_netdev")) -+ return true; -+ -+ if (p->fstype && fstype_is_network(p->fstype)) -+ return true; -+ -+ return false; -+} -+ -+static bool mount_is_bind(MountParameters *p) { -+ assert(p); -+ -+ if (mount_test_option(p->options, "bind")) -+ return true; -+ -+ if (p->fstype && streq(p->fstype, "bind")) -+ return true; -+ -+ if (mount_test_option(p->options, "rbind")) -+ return true; -+ -+ if (p->fstype && streq(p->fstype, "rbind")) -+ return true; -+ -+ return false; -+} -+ -+static bool mount_is_auto(MountParameters *p) { -+ assert(p); -+ -+ return !mount_test_option(p->options, "noauto"); -+} -+ -+static bool needs_quota(MountParameters *p) { -+ assert(p); -+ -+ if (mount_is_network(p)) -+ return false; -+ -+ if (mount_is_bind(p)) -+ return false; -+ -+ return mount_test_option(p->options, "usrquota") || -+ mount_test_option(p->options, "grpquota") || -+ mount_test_option(p->options, "quota") || -+ mount_test_option(p->options, "usrjquota") || -+ mount_test_option(p->options, "grpjquota"); -+} -+ - static void mount_init(Unit *u) { - Mount *m = MOUNT(u); - -@@ -182,7 +248,10 @@ 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 && pm->what && path_is_absolute(pm->what)) { -+ if (pm && pm->what && -+ path_is_absolute(pm->what) && -+ !mount_is_network(pm)) { -+ - r = unit_require_mounts_for(UNIT(m), pm->what); - if (r < 0) - return r; -@@ -214,72 +283,6 @@ static int mount_add_mount_links(Mount *m) { - return 0; - } - --static char* mount_test_option(const char *haystack, const char *needle) { -- struct mntent me = { .mnt_opts = (char*) haystack }; -- -- assert(needle); -- -- /* Like glibc's hasmntopt(), but works on a string, not a -- * struct mntent */ -- -- if (!haystack) -- return NULL; -- -- return hasmntopt(&me, needle); --} -- --static bool mount_is_network(MountParameters *p) { -- assert(p); -- -- if (mount_test_option(p->options, "_netdev")) -- return true; -- -- if (p->fstype && fstype_is_network(p->fstype)) -- return true; -- -- return false; --} -- --static bool mount_is_bind(MountParameters *p) { -- assert(p); -- -- if (mount_test_option(p->options, "bind")) -- return true; -- -- if (p->fstype && streq(p->fstype, "bind")) -- return true; -- -- if (mount_test_option(p->options, "rbind")) -- return true; -- -- if (p->fstype && streq(p->fstype, "rbind")) -- return true; -- -- return false; --} -- --static bool mount_is_auto(MountParameters *p) { -- assert(p); -- -- return !mount_test_option(p->options, "noauto"); --} -- --static bool needs_quota(MountParameters *p) { -- assert(p); -- -- if (mount_is_network(p)) -- return false; -- -- if (mount_is_bind(p)) -- return false; -- -- return mount_test_option(p->options, "usrquota") || -- mount_test_option(p->options, "grpquota") || -- mount_test_option(p->options, "quota") || -- mount_test_option(p->options, "usrjquota") || -- mount_test_option(p->options, "grpjquota"); --} -- - static int mount_add_device_links(Mount *m) { - MountParameters *p; - bool device_wants_mount = false; --- -1.7.9.2 - diff --git a/0026-udevadm.xml-document-resolve-names-option-for-test.patch b/0026-udevadm.xml-document-resolve-names-option-for-test.patch deleted file mode 100644 index 04d3032..0000000 --- a/0026-udevadm.xml-document-resolve-names-option-for-test.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 14a9283eb38a93ec384c322ccbe06352c86a25f8 Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Sun, 13 Oct 2013 17:42:51 -0400 -Subject: [PATCH] udevadm.xml: document --resolve-names option for test - -And remove documentation of the --subsystem flag which doesn't actually -exist. ---- - man/udevadm.xml | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git man/udevadm.xml man/udevadm.xml -index d0b257d..b959216 100644 ---- man/udevadm.xml -+++ man/udevadm.xml -@@ -462,9 +462,13 @@ - - - -- -+ - -- The subsystem string. -+ Specify when udevadm should resolve names of users and groups. -+ When set to early (the default) names will be resolved when the -+ rules are parsed. When set to late names will be resolved for -+ every event. When set to never names will never be resolved and -+ all devices will be owned by root. - - - --- -1.7.9.2 - diff --git a/0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch b/0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch deleted file mode 100644 index bd8c2b3..0000000 --- a/0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 306e6650221d88b29831bcdcef94447afb65df5c Mon Sep 17 00:00:00 2001 -From: Igor Zhbanov -Date: Tue, 15 Oct 2013 14:35:13 +0400 -Subject: [PATCH] Fix for SIGSEGV in systemd-bootchart on short-living - processes - -The function svg_ps_bars() dereferencess NULL pointer in the line - endtime = ps->last->sampledata->sampletime; -because of partially initialized ps_struct (ps->last == NULL). - -If some process terminates between scaning /proc directory in the log_sample() -function and reading additional information from /proc/PID/... files, -the files couldn't be read, the loop will be continued and partially -initialized structure returned. ---- - src/bootchart/store.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git src/bootchart/store.c src/bootchart/store.c -index f8c97c2..7f86cfe 100644 ---- src/bootchart/store.c -+++ src/bootchart/store.c -@@ -275,7 +275,7 @@ schedstat_next: - pscount++; - - /* mark our first sample */ -- ps->first = ps->sample; -+ ps->first = ps->last = ps->sample; - ps->sample->runtime = atoll(rt); - ps->sample->waittime = atoll(wt); - --- -1.7.9.2 - diff --git a/0031-man-document-the-b-special-boot-option.patch b/0031-man-document-the-b-special-boot-option.patch deleted file mode 100644 index 9d45f61..0000000 --- a/0031-man-document-the-b-special-boot-option.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 775657712d0f6d14b70a0fe947a95a9ecc212440 Mon Sep 17 00:00:00 2001 -From: Jan Engelhardt -Date: Tue, 15 Oct 2013 08:58:50 +0200 -Subject: [PATCH] man: document the -b special boot option - ---- - man/kernel-command-line.xml | 1 + - man/systemd.xml | 1 + - 2 files changed, 2 insertions(+) - -diff --git man/kernel-command-line.xml man/kernel-command-line.xml -index cc267a3..abe68e5 100644 ---- man/kernel-command-line.xml -+++ man/kernel-command-line.xml -@@ -123,6 +123,7 @@ - - - -+ -b - emergency - single - s -diff --git man/systemd.xml man/systemd.xml -index fe6e331..85c06d3 100644 ---- man/systemd.xml -+++ man/systemd.xml -@@ -1149,6 +1149,7 @@ - - - -+ -b - emergency - - Boot into emergency --- -1.7.9.2 - diff --git a/0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch b/0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch deleted file mode 100644 index ff651c1..0000000 --- a/0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch +++ /dev/null @@ -1,81 +0,0 @@ -Patch based on - - From e0d856dd48d640f3d95efe7b769edec02373cc74 Mon Sep 17 00:00:00 2001 - From: Lennart Poettering - Date: Wed, 16 Oct 2013 02:51:24 +0200 - Subject: [PATCH] rules: don't limit some of the rules to the "add" action - - Devices should show up in systemd regardless whether the user invoked - "udevadm trigger" or not. Before this change some devices might have - suddenly disappeared due issuing that command. - -and also on - - From 1a0464230c08506c3fd715ff7cc56660df3a85ca Mon Sep 17 00:00:00 2001 - From: Bastien Nocera - Date: Fri, 11 Oct 2013 07:45:32 +0000 - Subject: Add support for saving/restoring keyboard backlights - - Piggy-backing on the display backlight code, this saves and restores - keyboard backlights on supported devices. - - The detection code matches that of UPower: - http://cgit.freedesktop.org/upower/tree/src/up-kbd-backlight.c#n173 - - https://bugs.freedesktop.org/show_bug.cgi?id=70367 - - [tomegun: also work for devices named "{smc,samsung,asus}::kbd_backlight"] - ---- - rules/99-systemd.rules.in | 10 ++++++---- - src/backlight/backlight.c | 7 +++++-- - 2 files changed, 11 insertions(+), 6 deletions(-) - ---- rules/99-systemd.rules.in -+++ rules/99-systemd.rules.in 2014-02-14 14:46:48.358235397 +0000 -@@ -51,14 +51,16 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_dev - - ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sysctl --prefix=/proc/sys/net/ipv4/conf/$name --prefix=/proc/sys/net/ipv4/neigh/$name --prefix=/proc/sys/net/ipv6/conf/$name --prefix=/proc/sys/net/ipv6/neigh/$name" - --# Pull in backlight save/restore for all firmware backlight devices -+# Pull in backlight save/restore for all backlight devices and -+# keyboard backlights - --ACTION=="add", SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service" -+SUBSYSTEM=="backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@backlight:$name.service" -+SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@leds:$name.service" - - # Asynchronously mount file systems implemented by these modules as - # soon as they are loaded. - --SUBSYSTEM=="module", KERNEL=="fuse", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount" --SUBSYSTEM=="module", KERNEL=="configfs", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount" -+SUBSYSTEM=="module", KERNEL=="fuse", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount" -+SUBSYSTEM=="module", KERNEL=="configfs", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount" - - LABEL="systemd_end" ---- src/backlight/backlight.c -+++ src/backlight/backlight.c 2014-02-14 15:20:47.534298128 +0000 -@@ -56,9 +56,11 @@ int main(int argc, char *argv[]) { - - errno = 0; - device = udev_device_new_from_subsystem_sysname(udev, "backlight", argv[2]); -+ if (!device) -+ device = udev_device_new_from_subsystem_sysname(udev, "leds", argv[2]); - if (!device) { - if (errno != 0) { -- log_error("Failed to get backlight device: %m"); -+ log_error("Failed to get backlight device '%s': %m", argv[2]); - r = -errno; - } else - r = log_oom(); -@@ -66,7 +68,8 @@ int main(int argc, char *argv[]) { - goto finish; - } - -- if (!streq_ptr(udev_device_get_subsystem(device), "backlight")) { -+ if (!streq_ptr(udev_device_get_subsystem(device), "backlight") && -+ !streq_ptr(udev_device_get_subsystem(device), "leds")) { - log_error("Not a backlight device: %s", argv[2]); - r = -ENODEV; - goto finish; diff --git a/0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch b/0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch deleted file mode 100644 index c14d8d7..0000000 --- a/0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch +++ /dev/null @@ -1,37 +0,0 @@ -From ca2f4176fee7dd5f5664429988e7059163fddb2d Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Thu, 17 Oct 2013 03:20:46 +0200 -Subject: [PATCH] tmpfiles: log unaccessible FUSE mount points only as debug - message - ---- - src/tmpfiles/tmpfiles.c | 11 +++++++---- - 1 file changed, 7 insertions(+), 4 deletions(-) - -diff --git src/tmpfiles/tmpfiles.c src/tmpfiles/tmpfiles.c -index 3cc831a..e23847b 100644 ---- src/tmpfiles/tmpfiles.c -+++ src/tmpfiles/tmpfiles.c -@@ -275,12 +275,15 @@ static int dir_cleanup( - continue; - - if (fstatat(dirfd(d), dent->d_name, &s, AT_SYMLINK_NOFOLLOW) < 0) { -+ if (errno == ENOENT) -+ continue; - -- if (errno != ENOENT) { -+ /* FUSE, NFS mounts, SELinux might return EACCES */ -+ if (errno == EACCES) -+ log_debug("stat(%s/%s) failed: %m", p, dent->d_name); -+ else - log_error("stat(%s/%s) failed: %m", p, dent->d_name); -- r = -errno; -- } -- -+ r = -errno; - continue; - } - --- -1.7.9.2 - diff --git a/0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch b/0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch deleted file mode 100644 index 07bfe49..0000000 --- a/0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch +++ /dev/null @@ -1,26 +0,0 @@ -From a23873387a6e722b711092c89a08ab3f3d19361c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 11 Nov 2013 19:53:59 -0500 -Subject: [PATCH] systemd-python: fix booted() and add two functions to docs - -For some reason sphinx doesn't want to show inherited C functions. ---- - src/python-systemd/_daemon.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git src/python-systemd/_daemon.c src/python-systemd/_daemon.c -index 6b84fb8..f0ab16f 100644 ---- src/python-systemd/_daemon.c -+++ src/python-systemd/_daemon.c -@@ -51,7 +51,7 @@ static PyObject* booted(PyObject *self, PyObject *args) { - assert(args == NULL); - - r = sd_booted(); -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - return PyBool_FromLong(r); --- -1.7.9.2 - diff --git a/0035-activate-mention-E-in-the-help-text.patch b/0035-activate-mention-E-in-the-help-text.patch deleted file mode 100644 index 92ae2de..0000000 --- a/0035-activate-mention-E-in-the-help-text.patch +++ /dev/null @@ -1,25 +0,0 @@ -From df49ccafc0d57c731a3da3014ad55d5bb9ed3e1b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= -Date: Wed, 13 Nov 2013 13:36:17 +0200 -Subject: [PATCH] activate: mention -E in the help text - ---- - src/activate/activate.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git src/activate/activate.c src/activate/activate.c -index 07e46b9..537626d 100644 ---- src/activate/activate.c -+++ src/activate/activate.c -@@ -289,6 +289,8 @@ static int help(void) { - " -l --listen=ADDR Listen for raw connections at ADDR\n" - " -a --accept Spawn separate child for each connection\n" - " -h --help Show this help and exit\n" -+ " -E --environment=NAME[=VALUE]\n" -+ " Pass an environment variable to children\n" - " --version Print version string and exit\n" - "\n" - "Note: file descriptors from sd_listen_fds() will be passed through.\n" --- -1.7.9.2 - diff --git a/0036-activate-fix-crash-when-s-is-passed.patch b/0036-activate-fix-crash-when-s-is-passed.patch deleted file mode 100644 index e1a0b2b..0000000 --- a/0036-activate-fix-crash-when-s-is-passed.patch +++ /dev/null @@ -1,26 +0,0 @@ -From ed6556920c1a6cdfe0bb04e806bc1f54ea191545 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= -Date: Wed, 13 Nov 2013 13:36:16 +0200 -Subject: [PATCH] activate: fix crash when -s is passed - -getopt_long() was told to accept -s which was never implemented. ---- - src/activate/activate.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git src/activate/activate.c src/activate/activate.c -index 537626d..2639d1c 100644 ---- src/activate/activate.c -+++ src/activate/activate.c -@@ -344,7 +344,7 @@ static int parse_argv(int argc, char *argv[]) { - assert(argc >= 0); - assert(argv); - -- while ((c = getopt_long(argc, argv, "+hl:saE:", options, NULL)) >= 0) -+ while ((c = getopt_long(argc, argv, "+hl:aE:", options, NULL)) >= 0) - switch(c) { - case 'h': - help(); --- -1.7.9.2 - diff --git a/0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch b/0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch deleted file mode 100644 index 2ced4b3..0000000 --- a/0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 87267de89ddce9b1b812b720e1fc9a6cb554236e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 16 Nov 2013 17:29:28 -0500 -Subject: [PATCH] tmpfiles: adjust excludes for the new per-service private - dirs - -In d8c9d3a (systemd: use unit name in PrivateTmp directories) -I forgot to update the tmpfiles config. ---- - tmpfiles.d/tmp.conf | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - -diff --git tmpfiles.d/tmp.conf tmpfiles.d/tmp.conf -index 3b534a1..f0312ef 100644 ---- tmpfiles.d/tmp.conf -+++ tmpfiles.d/tmp.conf -@@ -12,6 +12,23 @@ d /tmp 1777 root root 10d - d /var/tmp 1777 root root - - - # Exclude namespace mountpoints created with PrivateTmp=yes -+x /tmp/systemd-*.service-* -+x /var/tmp/systemd-*.service-* -+X /tmp/systemd-*.service-*/tmp -+X /var/tmp/systemd-*.service-*/tmp -+x /tmp/systemd-*.socket-* -+x /var/tmp/systemd-*.socket-* -+X /tmp/systemd-*.socket-*/tmp -+X /var/tmp/systemd-*.socket-*/tmp -+x /tmp/systemd-*.mount-* -+x /var/tmp/systemd-*.mount-* -+X /tmp/systemd-*.mount-*/tmp -+X /var/tmp/systemd-*.mount-*/tmp -+x /tmp/systemd-*.swap-* -+x /var/tmp/systemd-*.swap-* -+X /tmp/systemd-*.swap-*/tmp -+X /var/tmp/systemd-*.swap-*/tmp -+# keep those for compatibility during upgrades - x /tmp/systemd-private-* - x /var/tmp/systemd-private-* - X /tmp/systemd-private-*/tmp --- -1.7.9.2 - diff --git a/0038-core-socket-fix-SO_REUSEPORT.patch b/0038-core-socket-fix-SO_REUSEPORT.patch deleted file mode 100644 index c613c97..0000000 --- a/0038-core-socket-fix-SO_REUSEPORT.patch +++ /dev/null @@ -1,38 +0,0 @@ -From f0511bd7e3d591383485a36ddcb764abe74b1939 Mon Sep 17 00:00:00 2001 -From: Shawn Landden -Date: Sat, 16 Nov 2013 13:18:13 -0800 -Subject: [PATCH] core/socket: fix SO_REUSEPORT - ---- - src/core/load-fragment-gperf.gperf.m4 | 1 + - src/core/socket.c | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git src/core/load-fragment-gperf.gperf.m4 src/core/load-fragment-gperf.gperf.m4 -index e3025d2..b64fdc9 100644 ---- src/core/load-fragment-gperf.gperf.m4 -+++ src/core/load-fragment-gperf.gperf.m4 -@@ -210,6 +210,7 @@ Socket.Broadcast, config_parse_bool, 0, - Socket.PassCredentials, config_parse_bool, 0, offsetof(Socket, pass_cred) - Socket.PassSecurity, config_parse_bool, 0, offsetof(Socket, pass_sec) - Socket.TCPCongestion, config_parse_string, 0, offsetof(Socket, tcp_congestion) -+Socket.ReusePort, config_parse_bool, 0, offsetof(Socket, reuseport) - Socket.MessageQueueMaxMessages, config_parse_long, 0, offsetof(Socket, mq_maxmsg) - Socket.MessageQueueMessageSize, config_parse_long, 0, offsetof(Socket, mq_msgsize) - Socket.Service, config_parse_socket_service, 0, 0 -diff --git src/core/socket.c src/core/socket.c -index f505e4f..751f20b 100644 ---- src/core/socket.c -+++ src/core/socket.c -@@ -771,7 +771,7 @@ static void socket_apply_socket_options(Socket *s, int fd) { - - if (s->reuseport) { - int b = s->reuseport; -- if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &b, sizeof(b))) -+ if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &b, sizeof(b)) < 0) - log_warning_unit(UNIT(s)->id, "SO_REUSEPORT failed: %m"); - } - --- -1.7.9.2 - diff --git a/0039-journal-when-appending-to-journal-file-allocate-larg.patch b/0039-journal-when-appending-to-journal-file-allocate-larg.patch deleted file mode 100644 index 9e93024..0000000 --- a/0039-journal-when-appending-to-journal-file-allocate-larg.patch +++ /dev/null @@ -1,80 +0,0 @@ -From a676e66535e12458ea6d366a653f8dd60f982504 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 26 Nov 2013 18:39:42 +0100 -Subject: [PATCH] journal: when appending to journal file, allocate larger - blocks at once - ---- - src/journal/journal-file.c | 26 +++++++++++++++++--------- - 1 file changed, 17 insertions(+), 9 deletions(-) - -diff --git src/journal/journal-file.c src/journal/journal-file.c -index bc72fca..d606ada 100644 ---- src/journal/journal-file.c -+++ src/journal/journal-file.c -@@ -68,6 +68,9 @@ - /* How many entries to keep in the entry array chain cache at max */ - #define CHAIN_CACHE_MAX 20 - -+/* How much to increase the journal file size at once each time we allocate something new. */ -+#define FILE_SIZE_INCREASE (8ULL*1024ULL*1024ULL) /* 8MB */ -+ - int journal_file_set_online(JournalFile *f) { - assert(f); - -@@ -218,8 +221,7 @@ static int journal_file_refresh_header(JournalFile *f) { - journal_file_set_online(f); - - /* Sync the online state to disk */ -- msync(f->header, PAGE_ALIGN(sizeof(Header)), MS_SYNC); -- fdatasync(f->fd); -+ fsync(f->fd); - - return 0; - } -@@ -313,7 +315,7 @@ static int journal_file_verify_header(JournalFile *f) { - } - - static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) { -- uint64_t old_size, new_size; -+ uint64_t old_size, new_size, file_size; - int r; - - assert(f); -@@ -333,12 +335,10 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) - if (new_size <= old_size) - return 0; - -- if (f->metrics.max_size > 0 && -- new_size > f->metrics.max_size) -+ if (f->metrics.max_size > 0 && new_size > f->metrics.max_size) - return -E2BIG; - -- if (new_size > f->metrics.min_size && -- f->metrics.keep_free > 0) { -+ if (new_size > f->metrics.min_size && f->metrics.keep_free > 0) { - struct statvfs svfs; - - if (fstatvfs(f->fd, &svfs) >= 0) { -@@ -363,8 +363,16 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) - if (r != 0) - return -r; - -- if (fstat(f->fd, &f->last_stat) < 0) -- return -errno; -+ /* Increase the file size a bit further than this, so that we -+ * we can create larger memory maps to cache */ -+ file_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE; -+ if (file_size > (uint64_t) f->last_stat.st_size) { -+ if (file_size > new_size) -+ ftruncate(f->fd, file_size); -+ -+ if (fstat(f->fd, &f->last_stat) < 0) -+ return -errno; -+ } - - f->header->arena_size = htole64(new_size - le64toh(f->header->header_size)); - --- -1.7.9.2 - diff --git a/0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch b/0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch deleted file mode 100644 index 7436895..0000000 --- a/0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch +++ /dev/null @@ -1,247 +0,0 @@ -From f268980d2cee694fa4118a71402a47c316af0425 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 26 Nov 2013 20:37:53 +0100 -Subject: [PATCH] journal: optimize bisection logic a bit by caching the last - position - -This way we can do a quick restart limiting a bit how wildly we need to -jump around during the bisection process. ---- - src/journal/journal-file.c | 134 ++++++++++++++++++++++++++++++++------------ - 1 file changed, 99 insertions(+), 35 deletions(-) - -diff --git src/journal/journal-file.c src/journal/journal-file.c -index 481c242..27cd16f 100644 ---- src/journal/journal-file.c -+++ src/journal/journal-file.c -@@ -1366,6 +1366,7 @@ typedef struct ChainCacheItem { - uint64_t array; /* the cached array */ - uint64_t begin; /* the first item in the cached array */ - uint64_t total; /* the total number of items in all arrays before this one in the chain */ -+ uint64_t last_index; /* the last index we looked at, to optimize locality when bisecting */ - } ChainCacheItem; - - static void chain_cache_put( -@@ -1374,7 +1375,8 @@ static void chain_cache_put( - uint64_t first, - uint64_t array, - uint64_t begin, -- uint64_t total) { -+ uint64_t total, -+ uint64_t last_index) { - - if (!ci) { - /* If the chain item to cache for this chain is the -@@ -1402,12 +1404,14 @@ static void chain_cache_put( - ci->array = array; - ci->begin = begin; - ci->total = total; -+ ci->last_index = last_index; - } - --static int generic_array_get(JournalFile *f, -- uint64_t first, -- uint64_t i, -- Object **ret, uint64_t *offset) { -+static int generic_array_get( -+ JournalFile *f, -+ uint64_t first, -+ uint64_t i, -+ Object **ret, uint64_t *offset) { - - Object *o; - uint64_t p = 0, a, t = 0; -@@ -1448,7 +1452,7 @@ static int generic_array_get(JournalFile *f, - - found: - /* Let's cache this item for the next invocation */ -- chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t); -+ chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t, i); - - r = journal_file_move_to_object(f, OBJECT_ENTRY, p, &o); - if (r < 0) -@@ -1463,11 +1467,12 @@ found: - return 1; - } - --static int generic_array_get_plus_one(JournalFile *f, -- uint64_t extra, -- uint64_t first, -- uint64_t i, -- Object **ret, uint64_t *offset) { -+static int generic_array_get_plus_one( -+ JournalFile *f, -+ uint64_t extra, -+ uint64_t first, -+ uint64_t i, -+ Object **ret, uint64_t *offset) { - - Object *o; - -@@ -1498,17 +1503,18 @@ enum { - TEST_RIGHT - }; - --static int generic_array_bisect(JournalFile *f, -- uint64_t first, -- uint64_t n, -- uint64_t needle, -- int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle), -- direction_t direction, -- Object **ret, -- uint64_t *offset, -- uint64_t *idx) { -- -- uint64_t a, p, t = 0, i = 0, last_p = 0; -+static int generic_array_bisect( -+ JournalFile *f, -+ uint64_t first, -+ uint64_t n, -+ uint64_t needle, -+ int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle), -+ direction_t direction, -+ Object **ret, -+ uint64_t *offset, -+ uint64_t *idx) { -+ -+ uint64_t a, p, t = 0, i = 0, last_p = 0, last_index = (uint64_t) -1; - bool subtract_one = false; - Object *o, *array = NULL; - int r; -@@ -1533,7 +1539,7 @@ static int generic_array_bisect(JournalFile *f, - return r; - - if (r == TEST_LEFT) { -- /* OK, what we are looking for is right of th -+ /* OK, what we are looking for is right of the - * begin of this EntryArray, so let's jump - * straight to previously cached array in the - * chain */ -@@ -1541,6 +1547,7 @@ static int generic_array_bisect(JournalFile *f, - a = ci->array; - n -= ci->total; - t = ci->total; -+ last_index = ci->last_index; - } - } - -@@ -1571,6 +1578,60 @@ static int generic_array_bisect(JournalFile *f, - if (r == TEST_RIGHT) { - left = 0; - right -= 1; -+ -+ if (last_index != (uint64_t) -1) { -+ assert(last_index <= right); -+ -+ /* If we cached the last index we -+ * looked at, let's try to not to jump -+ * too wildly around and see if we can -+ * limit the range to look at early to -+ * the immediate neighbors of the last -+ * index we looked at. */ -+ -+ if (last_index > 0) { -+ uint64_t x = last_index - 1; -+ -+ p = le64toh(array->entry_array.items[x]); -+ if (p <= 0) -+ return -EBADMSG; -+ -+ r = test_object(f, p, needle); -+ if (r < 0) -+ return r; -+ -+ if (r == TEST_FOUND) -+ r = direction == DIRECTION_DOWN ? TEST_RIGHT : TEST_LEFT; -+ -+ if (r == TEST_RIGHT) -+ right = x; -+ else -+ left = x + 1; -+ } -+ -+ if (last_index < right) { -+ uint64_t y = last_index + 1; -+ -+ p = le64toh(array->entry_array.items[y]); -+ if (p <= 0) -+ return -EBADMSG; -+ -+ r = test_object(f, p, needle); -+ if (r < 0) -+ return r; -+ -+ if (r == TEST_FOUND) -+ r = direction == DIRECTION_DOWN ? TEST_RIGHT : TEST_LEFT; -+ -+ if (r == TEST_RIGHT) -+ right = y; -+ else -+ left = y + 1; -+ } -+ -+ last_index = (uint64_t) -1; -+ } -+ - for (;;) { - if (left == right) { - if (direction == DIRECTION_UP) -@@ -1581,8 +1642,8 @@ static int generic_array_bisect(JournalFile *f, - } - - assert(left < right); -- - i = (left + right) / 2; -+ - p = le64toh(array->entry_array.items[i]); - if (p <= 0) - return -EBADMSG; -@@ -1615,6 +1676,7 @@ static int generic_array_bisect(JournalFile *f, - - n -= k; - t += k; -+ last_index = (uint64_t) -1; - a = le64toh(array->entry_array.next_entry_array_offset); - } - -@@ -1625,7 +1687,7 @@ found: - return 0; - - /* Let's cache this item for the next invocation */ -- chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t); -+ chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, i + (subtract_one ? -1 : 0)); - - if (subtract_one && i == 0) - p = last_p; -@@ -1650,16 +1712,18 @@ found: - return 1; - } - --static int generic_array_bisect_plus_one(JournalFile *f, -- uint64_t extra, -- uint64_t first, -- uint64_t n, -- uint64_t needle, -- int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle), -- direction_t direction, -- Object **ret, -- uint64_t *offset, -- uint64_t *idx) { -+ -+static int generic_array_bisect_plus_one( -+ JournalFile *f, -+ uint64_t extra, -+ uint64_t first, -+ uint64_t n, -+ uint64_t needle, -+ int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle), -+ direction_t direction, -+ Object **ret, -+ uint64_t *offset, -+ uint64_t *idx) { - - int r; - bool step_back = false; --- -1.7.9.2 - diff --git a/0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch b/0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch deleted file mode 100644 index 24c0226..0000000 --- a/0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch +++ /dev/null @@ -1,26 +0,0 @@ -From e5462cd80e5328a769137c261c93931ea0c27bab Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 27 Nov 2013 00:58:39 +0100 -Subject: [PATCH] journal: fix iteration when we go backwards from the - beginning of an array chain element - ---- - src/journal/journal-file.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git src/journal/journal-file.c src/journal/journal-file.c -index 27cd16f..409be76 100644 ---- src/journal/journal-file.c -+++ src/journal/journal-file.c -@@ -1687,7 +1687,7 @@ found: - return 0; - - /* Let's cache this item for the next invocation */ -- chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, i + (subtract_one ? -1 : 0)); -+ chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, subtract_one ? (i > 0 ? i-1 : (uint64_t) -1) : i); - - if (subtract_one && i == 0) - p = last_p; --- -1.7.9.2 - diff --git a/0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch b/0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch deleted file mode 100644 index 78946e7..0000000 --- a/0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 248c78c79c5cca9b981800d816a77591e504066a Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 27 Nov 2013 00:59:07 +0100 -Subject: [PATCH] journal: allow journal_file_copy_entry() to work on - non-local files - ---- - src/journal/journal-file.c | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git src/journal/journal-file.c src/journal/journal-file.c -index 409be76..14eae8f 100644 ---- src/journal/journal-file.c -+++ src/journal/journal-file.c -@@ -2732,10 +2732,6 @@ int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint6 - ts.monotonic = le64toh(o->entry.monotonic); - ts.realtime = le64toh(o->entry.realtime); - -- if (to->tail_entry_monotonic_valid && -- ts.monotonic < le64toh(to->header->tail_entry_monotonic)) -- return -EINVAL; -- - n = journal_file_entry_n_items(o); - items = alloca(sizeof(EntryItem) * n); - --- -1.7.9.2 - diff --git a/0043-journal-simplify-pre-allocation-logic.patch b/0043-journal-simplify-pre-allocation-logic.patch deleted file mode 100644 index 16511ec..0000000 --- a/0043-journal-simplify-pre-allocation-logic.patch +++ /dev/null @@ -1,61 +0,0 @@ -From eda4b58b50509dc8ad0428a46e20f6c5cf516d58 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 27 Nov 2013 01:44:52 +0100 -Subject: [PATCH] journal: simplify pre-allocation logic - -let's just do a single fallocate() as far as possible, and don't -distuingish between allocated space and file size. - -This way we can save a syscall for each append, which makes quite some -benefits. ---- - src/journal/journal-file.c | 19 ++++++++----------- - 1 file changed, 8 insertions(+), 11 deletions(-) - -diff --git src/journal/journal-file.c src/journal/journal-file.c -index 14eae8f..4009b29 100644 ---- src/journal/journal-file.c -+++ src/journal/journal-file.c -@@ -315,7 +315,7 @@ static int journal_file_verify_header(JournalFile *f) { - } - - static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) { -- uint64_t old_size, new_size, file_size; -+ uint64_t old_size, new_size; - int r; - - assert(f); -@@ -356,6 +356,11 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) - } - } - -+ /* Increase by larger blocks at once */ -+ new_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE; -+ if (f->metrics.max_size > 0 && new_size > f->metrics.max_size) -+ new_size = f->metrics.max_size; -+ - /* Note that the glibc fallocate() fallback is very - inefficient, hence we try to minimize the allocation area - as we can. */ -@@ -363,16 +368,8 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) - if (r != 0) - return -r; - -- /* Increase the file size a bit further than this, so that we -- * we can create larger memory maps to cache */ -- file_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE; -- if (file_size > (uint64_t) f->last_stat.st_size) { -- if (file_size > new_size) -- ftruncate(f->fd, file_size); -- -- if (fstat(f->fd, &f->last_stat) < 0) -- return -errno; -- } -+ if (fstat(f->fd, &f->last_stat) < 0) -+ return -errno; - - f->header->arena_size = htole64(new_size - le64toh(f->header->header_size)); - --- -1.7.9.2 - diff --git a/0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch b/0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch deleted file mode 100644 index 90e71fb..0000000 --- a/0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch +++ /dev/null @@ -1,58 +0,0 @@ -From fbb634117d0b0ebd5b105e65b141e75ae9af7f8f Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 27 Nov 2013 01:54:25 +0100 -Subject: [PATCH] journald: mention how long we needed to flush to /var in the - logs - ---- - src/journal/journald-server.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git src/journal/journald-server.c src/journal/journald-server.c -index ce419d4..01e75b6 100644 ---- src/journal/journald-server.c -+++ src/journal/journald-server.c -@@ -970,9 +970,12 @@ static int system_journal_open(Server *s) { - } - - int server_flush_to_var(Server *s) { -- int r; - sd_id128_t machine; - sd_journal *j = NULL; -+ char ts[FORMAT_TIMESPAN_MAX]; -+ usec_t start; -+ unsigned n = 0; -+ int r; - - assert(s); - -@@ -990,6 +993,8 @@ int server_flush_to_var(Server *s) { - - log_debug("Flushing to /var..."); - -+ start = now(CLOCK_MONOTONIC); -+ - r = sd_id128_get_machine(&machine); - if (r < 0) - return r; -@@ -1009,6 +1014,8 @@ int server_flush_to_var(Server *s) { - f = j->current_file; - assert(f && f->current_offset > 0); - -+ n++; -+ - r = journal_file_move_to_object(f, OBJECT_ENTRY, f->current_offset, &o); - if (r < 0) { - log_error("Can't read entry: %s", strerror(-r)); -@@ -1052,6 +1059,8 @@ finish: - - sd_journal_close(j); - -+ server_driver_message(s, SD_ID128_NULL, "Time spent on flushing to /var is %s for %u entries.", format_timespan(ts, sizeof(ts), now(CLOCK_MONOTONIC) - start, 0), n); -+ - return r; - } - --- -1.7.9.2 - diff --git a/0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch b/0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch deleted file mode 100644 index 1a42320..0000000 --- a/0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 27373e442747010dfc195296c0705f67e905a611 Mon Sep 17 00:00:00 2001 -From: Thomas Hindoe Paaboel Andersen -Date: Sat, 30 Nov 2013 23:45:31 +0100 -Subject: [PATCH] util.c: check if return value from ttyname_r is > 0 instead - of != 0 - -We must return a negative error code from getttyname_malloc but -that would not be the case if ttyname_r returned a negative value. - -ttyname_r should only return EBADF, ENOTTY, or ERANGE so it should -be safe to change. ---- - src/shared/util.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git src/shared/util.c src/shared/util.c -index 38134ae..206fc80 100644 ---- src/shared/util.c -+++ src/shared/util.c -@@ -2501,7 +2501,7 @@ int getttyname_malloc(int fd, char **r) { - assert(r); - - k = ttyname_r(fd, path, sizeof(path)); -- if (k != 0) -+ if (k > 0) - return -k; - - char_array_0(path); --- -1.7.9.2 - diff --git a/0047-docs-remove-unneeded-the-s-in-gudev-docs.patch b/0047-docs-remove-unneeded-the-s-in-gudev-docs.patch deleted file mode 100644 index e94380d..0000000 --- a/0047-docs-remove-unneeded-the-s-in-gudev-docs.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 572ce4f7832ffa7a91a582c4098f18cec5662666 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 30 Nov 2013 20:27:54 -0500 -Subject: [PATCH] docs: remove unneeded the's in gudev docs - -https://bugs.freedesktop.org/show_bug.cgi?id=72164 ---- - src/libudev/libudev-device.c | 10 ++++------ - 1 file changed, 4 insertions(+), 6 deletions(-) - -diff --git src/libudev/libudev-device.c src/libudev/libudev-device.c -index 059a590..9558ac3 100644 ---- src/libudev/libudev-device.c -+++ src/libudev/libudev-device.c -@@ -982,9 +982,8 @@ static struct udev_device *device_new_from_parent(struct udev_device *udev_devic - * Find the next parent device, and fill in information from the sys - * device and the udev database entry. - * -- * The returned the device is not referenced. It is attached to the -- * child device, and will be cleaned up when the child device -- * is cleaned up. -+ * Returned device is not referenced. It is attached to the child -+ * device, and will be cleaned up when the child device is cleaned up. - * - * It is not necessarily just the upper level directory, empty or not - * recognized sys directories are ignored. -@@ -1018,9 +1017,8 @@ _public_ struct udev_device *udev_device_get_parent(struct udev_device *udev_dev - * If devtype is #NULL, only subsystem is checked, and any devtype will - * match. - * -- * The returned the device is not referenced. It is attached to the -- * child device, and will be cleaned up when the child device -- * is cleaned up. -+ * Returned device is not referenced. It is attached to the child -+ * device, and will be cleaned up when the child device is cleaned up. - * - * It can be called as many times as needed, without caring about - * references. --- -1.7.9.2 - diff --git a/0048-man-explicitly-say-when-multiple-units-can-be-specif.patch b/0048-man-explicitly-say-when-multiple-units-can-be-specif.patch deleted file mode 100644 index ec388b8..0000000 --- a/0048-man-explicitly-say-when-multiple-units-can-be-specif.patch +++ /dev/null @@ -1,238 +0,0 @@ -From 6a44e50f4c0938b0ba355fff21add6c067cd9837 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 30 Nov 2013 21:23:01 -0500 -Subject: [PATCH] man: explicitly say when multiple units can be specified - -itistoday> how do you specify multiple dependencies in a unit file? i've been - googling and can't find this basic thing :-\ -itistoday> do you use a comma, or use multiple After= statements? ---- - man/systemd.unit.xml | 128 +++++++++++++++++++++++++++----------------------- - 1 file changed, 70 insertions(+), 58 deletions(-) - -diff --git man/systemd.unit.xml man/systemd.unit.xml -index 4dc427c..35dd4c7 100644 ---- man/systemd.unit.xml -+++ man/systemd.unit.xml -@@ -410,10 +410,12 @@ - of the other units gets deactivated or - its activation fails, this unit will - be deactivated. This option may be -- specified more than once, in which -- case requirement dependencies for all -- listed names are created. Note that -- requirement dependencies do not -+ specified more than once or multiple -+ space-separated units may be specified -+ in one option in which case -+ requirement dependencies for all -+ listed names will be created. Note -+ that requirement dependencies do not - influence the order in which services - are started or stopped. This has to be - configured independently with the -@@ -476,22 +478,23 @@ - RequisiteOverridable= - - Similar to -- Requires= -- and RequiresOverridable=, respectively. However, -- if a unit listed here is not started -- already it will not be started and the -- transaction fails -- immediately. -+ Requires= and -+ RequiresOverridable=, -+ respectively. However, if the units -+ listed here are not started already -+ they will not be started and the -+ transaction will fail immediately. -+ - - - - Wants= - - A weaker version of -- Requires=. A unit -+ Requires=. Units - listed in this option will be started - if the configuring unit is. However, -- if the listed unit fails to start up -+ if the listed units fail to start - or cannot be added to the transaction - this has no impact on the validity of - the transaction as a whole. This is -@@ -501,8 +504,8 @@ - - Note that dependencies of this - type may also be configured outside of -- the unit configuration file by -- adding a symlink to a -+ the unit configuration file by adding -+ symlinks to a - .wants/ directory - accompanying the unit file. For - details see above. -@@ -534,7 +537,7 @@ - of units. When systemd stops or restarts - the units listed here, the action is - propagated to this unit. -- Note that this is a one way dependency - -+ Note that this is a one way dependency — - changes to this unit do not affect the - listed units. - -@@ -543,12 +546,12 @@ - - Conflicts= - -- Configures negative -+ A space-separated list -+ of unit names. Configures negative - requirement dependencies. If a unit -- has a -- Conflicts= setting -- on another unit, starting the former -- will stop the latter and vice -+ has a Conflicts= -+ setting on another unit, starting the -+ former will stop the latter and vice - versa. Note that this setting is - independent of and orthogonal to the - After= and -@@ -575,7 +578,8 @@ - Before= - After= - -- Configures ordering -+ A space-separated list -+ of unit names. Configures ordering - dependencies between units. If a unit - foo.service - contains a setting -@@ -624,18 +628,18 @@ - type After= or - Before=. If two - units have no ordering dependencies -- between them, they are shut down -- or started up simultaneously, and -- no ordering takes -+ between them, they are shut down or -+ started up simultaneously, and no -+ ordering takes - place. - - - - OnFailure= - -- Lists one or more -- units that are activated when this -- unit enters the -+ A space-separated list -+ of one or more units that are -+ activated when this unit enters the - failed - state. - -@@ -644,16 +648,17 @@ - PropagatesReloadTo= - ReloadPropagatedFrom= - -- Lists one or more -- units where reload requests on the -- unit will be propagated to/on the -- other unit will be propagated -- from. Issuing a reload request on a -- unit will automatically also enqueue a -- reload request on all units that the -- reload request shall be propagated to -- via these two -- settings. -+ A space-separated list -+ of one or more units where reload -+ requests on this unit will be -+ propagated to, or reload requests on -+ the other unit will be propagated to -+ this unit, respectively. Issuing a -+ reload request on a unit will -+ automatically also enqueue a reload -+ request on all units that the reload -+ request shall be propagated to via -+ these two settings. - - - -@@ -1130,32 +1135,34 @@ - - Alias= - -- Additional names this -- unit shall be installed under. The -- names listed here must have the same -- suffix (i.e. type) as the unit file -- name. This option may be specified -- more than once, in which case all -- listed names are used. At installation -- time, -- systemctl enable -- will create symlinks from these names -- to the unit filename. -+ A space-seperated list -+ of additional names this unit shall be -+ installed under. The names listed here -+ must have the same suffix (i.e. type) -+ as the unit file name. This option may -+ be specified more than once, in which -+ case all listed names are used. At -+ installation time, systemctl -+ enable will create symlinks -+ from these names to the unit -+ filename. - - - - WantedBy= - RequiredBy= - -- A symbolic link is -- created in the -- .wants/ or -- .requires/ directory -- of the listed unit when this unit is -- activated by systemctl -- enable. This has the effect -- that a dependency of type -- Wants= or -+ This option may be -+ used more than once, or a -+ space-separated list of unit names may -+ be given. A symbolic link is created -+ in the .wants/ or -+ .requires/ -+ directory of each of the listed units -+ when this unit is installed by -+ systemctl enable. -+ This has the effect that a dependency -+ of type Wants= or - Requires= is added - from the listed unit to the current - unit. The primary result is that the -@@ -1201,7 +1208,12 @@ - and systemctl - disable will automatically - install/uninstall units listed in this option as -- well. -+ well. -+ -+ This option may be used more -+ than once, or a space-separated list -+ of unit names may be -+ given. - - - --- -1.7.9.2 - diff --git a/0049-systemd-treat-reload-failure-as-failure.patch b/0049-systemd-treat-reload-failure-as-failure.patch deleted file mode 100644 index 9dde25b..0000000 --- a/0049-systemd-treat-reload-failure-as-failure.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 6a371e23ee0e47827fb4e3aa469ed84da2599304 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 2 Dec 2013 21:52:51 -0500 -Subject: [PATCH] systemd: treat reload failure as failure - -systemctl reload "suceeded" on stopped units, but it is documented -to fail in this case. - -https://bugzilla.redhat.com/show_bug.cgi?id=1036845 ---- - src/core/job.c | 11 +++++++---- - src/core/job.h | 3 ++- - src/core/unit.c | 5 ++++- - 3 files changed, 13 insertions(+), 6 deletions(-) - -diff --git src/core/job.c src/core/job.c -index 557917a..ce97263 100644 ---- src/core/job.c -+++ src/core/job.c -@@ -508,7 +508,7 @@ int job_run_and_invalidate(Job *j) { - else if (t == UNIT_ACTIVATING) - r = -EAGAIN; - else -- r = -ENOEXEC; -+ r = -EBADR; - break; - } - -@@ -537,8 +537,10 @@ int job_run_and_invalidate(Job *j) { - if (j) { - if (r == -EALREADY) - r = job_finish_and_invalidate(j, JOB_DONE, true); -- else if (r == -ENOEXEC) -+ else if (r == -EBADR) - r = job_finish_and_invalidate(j, JOB_SKIPPED, true); -+ else if (r == -ENOEXEC) -+ r = job_finish_and_invalidate(j, JOB_INVALID, true); - else if (r == -EAGAIN) { - j->state = JOB_WAITING; - m->n_running_jobs--; -@@ -764,7 +766,7 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive) { - goto finish; - } - -- if (result == JOB_FAILED) -+ if (result == JOB_FAILED || result == JOB_INVALID) - j->manager->n_failed_jobs ++; - - job_uninstall(j); -@@ -1119,7 +1121,8 @@ static const char* const job_result_table[_JOB_RESULT_MAX] = { - [JOB_TIMEOUT] = "timeout", - [JOB_FAILED] = "failed", - [JOB_DEPENDENCY] = "dependency", -- [JOB_SKIPPED] = "skipped" -+ [JOB_SKIPPED] = "skipped", -+ [JOB_INVALID] = "invalid", - }; - - DEFINE_STRING_TABLE_LOOKUP(job_result, JobResult); -diff --git src/core/job.h src/core/job.h -index c23a380..0500e12 100644 ---- src/core/job.h -+++ src/core/job.h -@@ -97,7 +97,8 @@ enum JobResult { - JOB_TIMEOUT, /* JobTimeout elapsed */ - JOB_FAILED, /* Job failed */ - JOB_DEPENDENCY, /* A required dependency job did not result in JOB_DONE */ -- JOB_SKIPPED, /* JOB_RELOAD of inactive unit; negative result of JOB_VERIFY_ACTIVE */ -+ JOB_SKIPPED, /* Negative result of JOB_VERIFY_ACTIVE */ -+ JOB_INVALID, /* JOB_RELOAD of inactive unit */ - _JOB_RESULT_MAX, - _JOB_RESULT_INVALID = -1 - }; -diff --git src/core/unit.c src/core/unit.c -index 50db86c..81d2162 100644 ---- src/core/unit.c -+++ src/core/unit.c -@@ -1239,8 +1239,11 @@ int unit_reload(Unit *u) { - if (state == UNIT_RELOADING) - return -EALREADY; - -- if (state != UNIT_ACTIVE) -+ if (state != UNIT_ACTIVE) { -+ log_warning_unit(u->id, "Unit %s cannot be reloaded because it is inactive.", -+ u->id); - return -ENOEXEC; -+ } - - if ((following = unit_following(u))) { - log_debug_unit(u->id, "Redirecting reload request from %s to %s.", --- -1.7.9.2 - diff --git a/0145-logind-use-correct-who-enum-values-with-KillUnit.patch b/0145-logind-use-correct-who-enum-values-with-KillUnit.patch deleted file mode 100644 index f8fff2d..0000000 --- a/0145-logind-use-correct-who-enum-values-with-KillUnit.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 524147c1ef991edf4432aac51c880b363b4402df Mon Sep 17 00:00:00 2001 -From: Marius Vollmer -Date: Thu, 31 Oct 2013 15:55:07 +0200 -Subject: [PATCH] logind: use correct "who" enum values with KillUnit. - ---- - src/login/logind-dbus.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c -index bb85c7d..583d62e 100644 ---- a/src/login/logind-dbus.c -+++ b/src/login/logind-dbus.c -@@ -2799,7 +2799,7 @@ int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo - assert(manager); - assert(unit); - -- w = who == KILL_LEADER ? "process" : "cgroup"; -+ w = who == KILL_LEADER ? "control" : "all"; - assert_cc(sizeof(signo) == sizeof(int32_t)); - - r = bus_method_call_with_reply( -@@ -2815,7 +2815,7 @@ int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo - DBUS_TYPE_INT32, &signo, - DBUS_TYPE_INVALID); - if (r < 0) { -- log_error("Failed to stop unit %s: %s", unit, bus_error(error, r)); -+ log_error("Failed to kill unit %s: %s", unit, bus_error(error, r)); - return r; - } - diff --git a/1006-udev-always-rename-network.patch b/1006-udev-always-rename-network.patch deleted file mode 100644 index 4f91c92..0000000 --- a/1006-udev-always-rename-network.patch +++ /dev/null @@ -1,75 +0,0 @@ -From: Robert Milasan -Date: Thu, 28 Mar 2013 09:24:43 +0000 -Subject: udev always rename network - -udev: ensure that the network interfaces are renamed even if they exist -(bnc#809843). ---- - src/udev/udev-event.c | 46 +++++++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 43 insertions(+), 3 deletions(-) - ---- systemd-206.orig/src/udev/udev-event.c -+++ systemd-206/src/udev/udev-event.c -@@ -750,6 +750,7 @@ static int rename_netif(struct udev_even - struct udev_device *dev = event->dev; - int sk; - struct ifreq ifr; -+ int loop; - int err; - - log_debug("changing net interface name from '%s' to '%s'\n", -@@ -766,12 +767,51 @@ static int rename_netif(struct udev_even - strscpy(ifr.ifr_name, IFNAMSIZ, udev_device_get_sysname(dev)); - strscpy(ifr.ifr_newname, IFNAMSIZ, event->name); - err = ioctl(sk, SIOCSIFNAME, &ifr); -- if (err >= 0) { -+ if (err == 0) { - print_kmsg("renamed network interface %s to %s\n", ifr.ifr_name, ifr.ifr_newname); -- } else { -+ goto out; -+ } -+ -+ /* keep trying if the destination interface name already exists */ -+ err = -errno; -+ if (err != -EEXIST) { -+ goto out; -+ } -+ -+ /* free our own name, another process may wait for us */ -+ snprintf(ifr.ifr_newname, IFNAMSIZ, "rename%u", udev_device_get_ifindex(dev)); -+ err = ioctl(sk, SIOCSIFNAME, &ifr); -+ if (err < 0) { - err = -errno; -- log_error("error changing net interface name %s to %s: %m\n", ifr.ifr_name, ifr.ifr_newname); -+ goto out; - } -+ -+ /* log temporary name */ -+ print_kmsg("renamed network interface %s to %s\n", ifr.ifr_name, ifr.ifr_newname); -+ -+ /* wait a maximum of 90 seconds for our target to become available */ -+ strscpy(ifr.ifr_name, IFNAMSIZ, ifr.ifr_newname); -+ strscpy(ifr.ifr_newname, IFNAMSIZ, event->name); -+ loop = 90 * 20; -+ while (loop--) { -+ const struct timespec duration = { 0, 1000 * 1000 * 1000 / 20 }; -+ -+ log_debug("wait for netif '%s' to become free, loop=%i\n", event->name, (90 * 20) - loop); -+ nanosleep(&duration, NULL); -+ -+ err = ioctl(sk, SIOCSIFNAME, &ifr); -+ if (err == 0) { -+ print_kmsg("renamed network interface %s to %s\n", ifr.ifr_name, ifr.ifr_newname); -+ break; -+ } -+ err = -errno; -+ if (err != -EEXIST) -+ break; -+ } -+ -+out: -+ if (err < 0) -+ log_error("error changing net interface name %s to %s: %m\n", ifr.ifr_name, ifr.ifr_newname); - close(sk); - return err; - } diff --git a/1011-check-4-valid-kmsg-device.patch b/1011-check-4-valid-kmsg-device.patch deleted file mode 100644 index 6d57c35..0000000 --- a/1011-check-4-valid-kmsg-device.patch +++ /dev/null @@ -1,62 +0,0 @@ -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 deleted file mode 100644 index bdf9383..0000000 --- a/1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch +++ /dev/null @@ -1,168 +0,0 @@ -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/1017-skip-native-unit-handling-if-sysv-already-handled.patch b/1017-skip-native-unit-handling-if-sysv-already-handled.patch deleted file mode 100644 index 9390c42..0000000 --- a/1017-skip-native-unit-handling-if-sysv-already-handled.patch +++ /dev/null @@ -1,20 +0,0 @@ -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/1019-make-completion-smart-to-be-able-to-redirect.patch b/1019-make-completion-smart-to-be-able-to-redirect.patch index d1425d8..90ca8ed 100644 --- a/1019-make-completion-smart-to-be-able-to-redirect.patch +++ b/1019-make-completion-smart-to-be-able-to-redirect.patch @@ -136,7 +136,7 @@ + _init_completion || return - for ((i=0; $i <= $COMP_CWORD; i++)); do + for ((i=0; i < COMP_CWORD; i++)); do @@ -83,4 +87,4 @@ _systemd_analyze() { return 0 } @@ -225,7 +225,7 @@ + return 0 + fi + - for ((i=0; i <= COMP_CWORD; i++)); do + 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() { diff --git a/Forward-suspend-hibernate-calls-to-pm-utils.patch b/Forward-suspend-hibernate-calls-to-pm-utils.patch index 3b50d50..0c06b4d 100644 --- a/Forward-suspend-hibernate-calls-to-pm-utils.patch +++ b/Forward-suspend-hibernate-calls-to-pm-utils.patch @@ -37,13 +37,13 @@ forward suspend/hibernation calls to pm-utils, if installed (bnc#790157) return r; } @@ -90,6 +90,8 @@ static int execute(char **modes, char ** - FILE *f; + _cleanup_fclose_ FILE *f = NULL; const char* note = strappenda("SLEEP=", arg_verb); + if (!delegate_to_pmutils) { + /* This file is opened first, so that if we hit an error, - * we can abort before modyfing any state. */ + * we can abort before modifying any state. */ f = fopen("/sys/power/state", "we"); @@ -102,6 +104,7 @@ static int execute(char **modes, char ** r = write_mode(modes); @@ -59,7 +59,7 @@ forward suspend/hibernation calls to pm-utils, if installed (bnc#790157) NULL); - + if (!delegate_to_pmutils) - r = write_state(f, states); + r = write_state(&f, states); + else + r = -system(pmtools); if (r < 0) 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 deleted file mode 100644 index fca524f..0000000 --- a/U_logind_revert_lazy_session_activation_on_non_vt_seats.patch +++ /dev/null @@ -1,26 +0,0 @@ -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/analyze-fix-crash-in-command-line-parsing.patch b/analyze-fix-crash-in-command-line-parsing.patch deleted file mode 100644 index f76266e..0000000 --- a/analyze-fix-crash-in-command-line-parsing.patch +++ /dev/null @@ -1,35 +0,0 @@ -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/build-sys-make-multi-seat-x-optional.patch b/build-sys-make-multi-seat-x-optional.patch deleted file mode 100644 index c86042c..0000000 --- a/build-sys-make-multi-seat-x-optional.patch +++ /dev/null @@ -1,60 +0,0 @@ -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 b9ec512..1bde222 100644 --- a/delay-fsck-cryptsetup-after-md-dmraid-lvm-are-started.patch +++ b/delay-fsck-cryptsetup-after-md-dmraid-lvm-are-started.patch @@ -21,14 +21,25 @@ Index: systemd-208/src/cryptsetup/cryptsetup-generator.c 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 +--- systemd-280.orig/units/systemd-fsck@.service.in ++++ systemd-280/units/systemd-fsck@.service.in +@@ -10,7 +10,7 @@ Documentation=man:systemd-fsck@.service(8) DefaultDependencies=no BindsTo=%i.device --After=systemd-readahead-collect.service systemd-readahead-replay.service %i.device -+After=systemd-readahead-collect.service systemd-readahead-replay.service %i.device md.service dmraid.service +-After=systemd-readahead-collect.service systemd-readahead-replay.service %i.device systemd-fsck-root.service ++After=systemd-readahead-collect.service systemd-readahead-replay.service %i.device systemd-fsck-root.service md.service dmraid.service Before=shutdown.target [Service] +--- systemd-280.orig/units/systemd-fsck-root.service.in ++++ systemd-280/units/systemd-fsck-root.service.in +@@ -9,7 +9,7 @@ + Description=File System Check on Root Device + Documentation=man:systemd-fsck-root.service(8) + DefaultDependencies=no +-After=systemd-readahead-collect.service systemd-readahead-replay.service ++After=systemd-readahead-collect.service systemd-readahead-replay.service md.service dmraid.service + Before=local-fs.target shutdown.target + + ConditionPathIsReadWrite=!/ diff --git a/fix-owner-of-var-log-btmp.patch b/fix-owner-of-var-log-btmp.patch index fb6145c..954c60c 100644 --- a/fix-owner-of-var-log-btmp.patch +++ b/fix-owner-of-var-log-btmp.patch @@ -10,7 +10,7 @@ ensure btmp is owned only by root (bnc#777405). --- systemd-206_git201308300826.orig/tmpfiles.d/systemd.conf +++ systemd-206_git201308300826/tmpfiles.d/systemd.conf @@ -11,7 +11,7 @@ d /run/user 0755 root root ~10d - F /run/utmp 0664 root utmp - + F! /run/utmp 0664 root utmp - f /var/log/wtmp 0664 root utmp - -f /var/log/btmp 0600 root utmp - diff --git a/handle-SYSTEMCTL_OPTIONS-environment-variable.patch b/handle-SYSTEMCTL_OPTIONS-environment-variable.patch index 577f268..c7fa072 100644 --- a/handle-SYSTEMCTL_OPTIONS-environment-variable.patch +++ b/handle-SYSTEMCTL_OPTIONS-environment-variable.patch @@ -38,5 +38,5 @@ Index: systemd-208/src/systemctl/systemctl.c + } + r = parse_argv(argc, argv); - if (r < 0) + if (r <= 0) goto finish; diff --git a/handle-etc-HOSTNAME.patch b/handle-etc-HOSTNAME.patch index cdcb932..57a74f0 100644 --- a/handle-etc-HOSTNAME.patch +++ b/handle-etc-HOSTNAME.patch @@ -4,11 +4,11 @@ Subject: handle /etc/HOSTNAME (bnc#803653) --- - src/core/hostname-setup.c | 22 +++++++++++++++++----- - src/hostname/hostnamed.c | 12 +++++++++++- + src/core/hostname-setup.c | 22 +++++++++++++++++----- + src/hostname/hostnamed.c | 12 +++++++++++- 2 files changed, 28 insertions(+), 6 deletions(-) ---- systemd-206.orig/src/core/hostname-setup.c +--- systemd-206/src/core/hostname-setup.c +++ systemd-206/src/core/hostname-setup.c @@ -61,12 +61,24 @@ int hostname_setup(void) { @@ -40,38 +40,38 @@ Subject: handle /etc/HOSTNAME } else hn = b; ---- systemd-206.orig/src/hostname/hostnamed.c -+++ systemd-206/src/hostname/hostnamed.c -@@ -129,6 +129,10 @@ static int read_data(void) { +--- systemd-209/src/hostname/hostnamed.c ++++ systemd-209/src/hostname/hostnamed.c 2014-02-28 11:36:30.594735241 +0000 +@@ -89,6 +89,10 @@ static int context_read_data(Context *c) if (r < 0 && r != -ENOENT) return r; -+ r = read_one_line_file("/etc/HOSTNAME", &data[PROP_STATIC_HOSTNAME]); ++ r = read_one_line_file("/etc/HOSTNAME", &c->data[PROP_STATIC_HOSTNAME]); + if (r < 0 && r != -ENOENT) + return r; + return 0; } -@@ -283,6 +287,7 @@ static int write_data_hostname(void) { - - static int write_data_static_hostname(void) { +@@ -246,6 +250,7 @@ static int context_write_data_hostname(C + } + static int context_write_data_static_hostname(Context *c) { + int r; - if (isempty(data[PROP_STATIC_HOSTNAME])) { - if (unlink("/etc/hostname") < 0) -@@ -290,7 +295,12 @@ static int write_data_static_hostname(vo + assert(c); + +@@ -256,7 +261,12 @@ static int context_write_data_static_hos return 0; } -- return write_string_file_atomic_label("/etc/hostname", data[PROP_STATIC_HOSTNAME]); +- return write_string_file_atomic_label("/etc/hostname", c->data[PROP_STATIC_HOSTNAME]); + -+ r = write_string_file_atomic_label("/etc/hostname", data[PROP_STATIC_HOSTNAME]); ++ r = write_string_file_atomic_label("/etc/hostname", c->data[PROP_STATIC_HOSTNAME]); + if (!r) { + r = symlink_atomic("/etc/hostname", "/etc/HOSTNAME"); + } + return r; } - static int write_data_other(void) { + static int context_write_data_other(Context *c) { diff --git a/insserv-generator.patch b/insserv-generator.patch index 3e0deb7..f1a2452 100644 --- a/insserv-generator.patch +++ b/insserv-generator.patch @@ -18,14 +18,14 @@ Index: systemd-208/Makefile.am --- systemd-208.orig/Makefile.am +++ systemd-208/Makefile.am @@ -322,6 +322,7 @@ rootlibexec_PROGRAMS = \ - systemd-sleep + systemd-socket-proxyd systemgenerator_PROGRAMS = \ + systemd-insserv-generator \ systemd-getty-generator \ systemd-fstab-generator \ systemd-system-update-generator -@@ -1682,6 +1683,14 @@ systemd_delta_LDADD = \ +@@ -1658,6 +1659,14 @@ systemd_delta_LDADD = \ libsystemd-shared.la # ------------------------------------------------------------------------------ @@ -241,7 +241,7 @@ Index: systemd-208/src/insserv-generator/insserv-generator.c + if (streq(facility, SPECIAL_REMOTE_FS_TARGET)) { + _cleanup_free_ char *unit = NULL; + /* insert also a Wants dependency from remote-fs-pre on remote-fs */ -+ unit = strjoin(arg_dest, "/remote-fs.target.d/50-",path_get_file_name(filename),".conf", NULL); ++ unit = strjoin(arg_dest, "/remote-fs.target.d/50-",basename(filename),".conf", NULL); + if (!unit) + return log_oom(); + @@ -274,7 +274,7 @@ Index: systemd-208/src/insserv-generator/insserv-generator.c + if ((sysv_translate_facility(name, NULL, &dep) < 0) || !dep) + continue; + -+ unit = strjoin(arg_dest, "/", dep, ".d/50-",path_get_file_name(filename),"-",parsed[0],".conf", NULL); ++ unit = strjoin(arg_dest, "/", dep, ".d/50-",basename(filename),"-",parsed[0],".conf", NULL); + if (!unit) + return log_oom(); + @@ -305,7 +305,7 @@ Index: systemd-208/src/insserv-generator/insserv-generator.c + + if (*j[0] != '+') { + free (unit); -+ unit = strjoin(arg_dest, "/", facility, ".d/50-hard-dependency-",path_get_file_name(filename),"-",parsed[0],".conf", NULL); ++ unit = strjoin(arg_dest, "/", facility, ".d/50-hard-dependency-",basename(filename),"-",parsed[0],".conf", NULL); + if (!unit) + return log_oom(); + diff --git a/systemd-208.tar.xz b/systemd-208.tar.xz deleted file mode 100644 index 12a73a8..0000000 --- a/systemd-208.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aa64fa864466fd5727005c55d61c092828b94b4f857272c0b503695022146390 -size 2382904 diff --git a/systemd-209.tar.xz b/systemd-209.tar.xz new file mode 100644 index 0000000..7caa0b4 --- /dev/null +++ b/systemd-209.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cadef26adcd846e3f2b90502e64f590430baf59aea87491d25aac2e50b23d18 +size 2607304 diff --git a/systemd-dbus-system-bus-address.patch b/systemd-dbus-system-bus-address.patch index 3d252dc..1ae913f 100644 --- a/systemd-dbus-system-bus-address.patch +++ b/systemd-dbus-system-bus-address.patch @@ -1,11 +1,13 @@ ---- systemd-207.orig/src/core/dbus.c -+++ systemd-207/src/core/dbus.c -@@ -50,7 +50,7 @@ - #define CONNECTIONS_MAX 512 +--- systemd-208.orig/src/libsystemd/sd-bus/sd-bus.c ++++ systemd-208/src/libsystemd/sd-bus/sd-bus.c +@@ -793,8 +793,8 @@ + machine = NULL; - /* Well-known address (http://dbus.freedesktop.org/doc/dbus-specification.html#message-bus-types) */ --#define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "unix:path=/var/run/dbus/system_bus_socket" -+#define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "unix:path=/run/dbus/system_bus_socket" - /* Only used as a fallback */ - #define DBUS_SESSION_BUS_DEFAULT_ADDRESS "autolaunch:" + b->sockaddr.un.sun_family = AF_UNIX; +- strncpy(b->sockaddr.un.sun_path, "/var/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path)); +- b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + sizeof("/var/run/dbus/system_bus_socket") - 1; ++ strncpy(b->sockaddr.un.sun_path, "/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path)); ++ b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + sizeof("/run/dbus/system_bus_socket") - 1; + return 0; + } diff --git a/systemd-mini.changes b/systemd-mini.changes index c9d3106..5d33818 100644 --- a/systemd-mini.changes +++ b/systemd-mini.changes @@ -1,3 +1,298 @@ +------------------------------------------------------------------- +Fri Feb 28 16:59:25 UTC 2014 - werner@suse.de + +- Update to Release v209 on the base of the work of Stefan BrĂ¼ns + from declined submit request 223602: + + A new tool "systemd-socket-proxyd" has been added + + Add a new tool to save/restore rfkill state on + shutdown/boot. + + Save/restore state of keyboard backlights in addition to + display backlights on shutdown/boot. + + udev learned a new SECLABEL{} construct to label device + nodes with a specific security label when they appear. For + now, only SECLABEL{selinux} is supported, but the syntax is + prepared for additional security frameworks. + + When the User= switch is used in a unit file, also + initialize $SHELL= based on the user database entry. + + systemd no longer depends on libdbus. All communication is + now done with sd-bus, systemd's low-level bus library + implementation. + + sd-bus: add a light-weight vtable implementation that allows + defining objects on the bus with a simple static const + vtable array of its methods, signals and properties. + + systemd will not generate or install static dbus + introspection data anymore to /usr/share/dbus-1/interfaces, + as the precise format of these files is unclear, and + nothing makes use of it. + + A proxy daemon is now provided to proxy clients connecting + via classic D-Bus AF_UNIX sockets to kdbus, to provide full + compatibility with classic D-Bus. + + A bus driver implementation has been added that supports the + classic D-Bus bus driver calls on kdbus, also for + compatibility purposes. + + A new API "sd-event.h" has been added that implements a + minimal event loop API built around epoll. + + A new API "sd-rntl.h" has been added that provides an API + around the route netlink interface of the kernel, similar in + style to "sd-bus.h". + + A new API "sd-dhcp-client.h" has been added that provides a + small DHCPv4 client-side implementation. This is used by + "systemd-networkd". + + There is a new kernel command line option + "systemd.restore_state=0|1". When set to "0", none of the + systemd tools will restore saved runtime state to hardware + devices. More specifically, the rfkill and backlight states + are not restored. + + The FsckPassNo= compatibility option in mount/service units + has been removed. The fstab generator will now add the + necessary dependencies automatically, and does not require + PID1's support for that anymore. + + journalctl gained a new switch, --list-boots, that lists + recent boots with their times and boot IDs. + + The various tools like systemctl, loginctl, timedatectl, + busctl, systemd-run, ... have gained a new switch "-M" to + connect to a specific, local OS container (as direct + connection, without requiring SSH). + + systemd-run and systemd-analyze also gained support for "-H" + to connect to remote hosts via SSH. This is particularly + useful for systemd-run because it enables queuing of jobs + onto remote systems. + + machinectl gained a new command "login" to open a getty + login in any local container. This works with any container + that is registered with machined (such as those created by + libvirt-lxc or nspawn), and which runs systemd inside. + + machinectl gained a new "reboot" command that may be used to + trigger a reboot on a specific container that is registered + with machined. This works on any container that runs an init + system of some kind. + + systemctl gained a new "list-timers" command to print a nice + listing of installed timer units with the times they elapse + next. + + Alternative reboot() parameters may now be specified on the + "systemctl reboot" command line and are passed to the + reboot() system call. + + systemctl gained a new --job-mode= switch to configure the + mode to queue a job with. This is a more generic version of + --fail, --irreversible, and --ignore-dependencies, which are + still available but not advertised anymore. + + /etc/systemd/system.conf gained new settings to configure + various default timeouts of units, as well as the default + start limit interval and burst. These may still be overridden + within each Unit. + + PID1 will now export on the bus profile data of the security + policy upload process (such as the SELinux policy upload to + the kernel). + + journald: when forwarding logs to the console, include + timestamps (following the setting in + /sys/module/printk/parameters/time). + + OnCalendar= in timer units now understands the special + strings "yearly" and "annually". (Both are equivalent) + + The accuracy of timer units is now configurable with the new + AccuracySec= setting. It defaults to 1min. + + A new dependency type JoinsNamespaceOf= has been added that + allows running two services within the same /tmp and network + namespace, if PrivateNetwork= or PrivateTmp= are used. + + A new command "cat" has been added to systemctl. It outputs + the original unit file of a unit, and concatenates the + contents of additional "drop-in" unit file snippets, so that + the full configuration is shown. + + systemctl now supports globbing on the various "list-xyz" + commands, like "list-units" or "list-sockets", as well as on + those commands which take multiple unit names. + + journalctl's --unit= switch gained support for globbing. + + All systemd daemons now make use of the watchdog logic so + that systemd automatically notices when they hang. + + If the $container_ttys environment variable is set, + getty-generator will automatically spawn a getty for each + listed tty. This is useful for container managers to request + login gettys to be spawned on as many ttys as needed. + + %h, %s, %U specifier support is not available anymore when + used in unit files for PID 1. This is because NSS calls are + not safe from PID 1. They stay available for --user + instances of systemd, and as special case for the root user. + + loginctl gained a new "--no-legend" switch to turn off output + of the legend text. + + The "sd-login.h" API gained three new calls: + sd_session_is_remote(), sd_session_get_remote_user(), + sd_session_get_remote_host() to query information about + remote sessions. + + The udev hardware database now also carries vendor/product + information of SDIO devices. + + The "sd-daemon.h" API gained a new sd_watchdog_enabled() to + determine whether watchdog notifications are requested by + the system manager. + + Socket-activated per-connection services now include a + short description of the connection parameters in the + description. + + tmpfiles gained a new "--boot" option. When this is not used, + only lines where the command character is not suffixed with + "!" are executed. When this option is specified, those + options are executed too. + + systemctl gained a new "import-environment" command which + uploads the caller's environment (or parts thereof) into the + service manager so that it is inherited by services started + by the manager. This is useful to upload variables like + $DISPLAY into the user service manager. + + A new PrivateDevices= switch has been added to service units + which allows running a service with a namespaced /dev + directory that does not contain any device nodes for + physical devices. More specifically, it only includes devices + such as /dev/null, /dev/urandom, and /dev/zero which are API + entry points. + + logind has been extended to support behaviour like VT + switching on seats that do not support a VT. This makes + multi-session available on seats that are not the first seat + (seat0), and on systems where kernel support for VTs has + been disabled at compile-time. + + If a process holds a delay lock for system sleep or shutdown + and fails to release it in time, we will now log its + identity. This makes it easier to identify processes that + cause slow suspends or power-offs. + + When parsing /etc/crypttab, support for a new key-slot= + option as supported by Debian is added. It allows indicating + which LUKS slot to use on disk, speeding up key loading. + + The sd_journald_sendv() API call has been checked and + officially declared to be async-signal-safe so that it may + be invoked from signal handlers for logging purposes. + + Boot-time status output is now enabled automatically after a + short timeout if boot does not progress, in order to give + the user an indication what she or he is waiting for. + + The boot-time output has been improved to show how much time + remains until jobs expire. + + The KillMode= switch in service units gained a new possible + value "mixed". If set, and the unit is shut down, then the + initial SIGTERM signal is sent only to the main daemon + process, while the following SIGKILL signal is sent to + all remaining processes of the service. + + logind will now also track a "Desktop" identifier for each + session which encodes the desktop environment of it. This is + useful for desktop environments that want to identify + multiple running sessions of itself easily. + + A new SELinuxContext= setting for service units has been + added that allows setting a specific SELinux execution + context for a service. + + Most systemd client tools will now honour $SYSTEMD_LESS for + settings of the "less" pager. + + systemd's "seccomp" hook-up has been changed to make use of + the libseccomp library instead of using its own + implementation. This has benefits for portability among + other things. +- Dropped systemd patches as those are fixed upstream: + * 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch + * 0002-fix-lingering-references-to-var-lib-backlight-random.patch + * 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch + * 0004-systemctl-fix-name-mangling-for-sysv-units.patch + * 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch + * 0006-journald-add-missing-error-check.patch + * 0007-bus-fix-potentially-uninitialized-memory-access.patch + * 0008-dbus-fix-return-value-of-dispatch_rqueue.patch + * 0009-modules-load-fix-error-handling.patch + * 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch + * 0011-strv-don-t-access-potentially-NULL-string-arrays.patch + * 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch + * 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch + * 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch + * 0001-gpt-auto-generator-exit-immediately-if-in-container.patch + * 0001-manager-when-verifying-whether-clients-may-change-en.patch + * 0001-logind-fix-bus-introspection-data-for-TakeControl.patch + * 0001-mount-check-for-NULL-before-reading-pm-what.patch + * 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch + * 0001-systemd-serialize-deserialize-forbid_restart-value.patch + * 0001-core-unify-the-way-we-denote-serialization-attribute.patch + * 0001-journald-fix-minor-memory-leak.patch + * 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch + * 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch + * 0001-login-fix-invalid-free-in-sd_session_get_vt.patch + * 0001-login-make-sd_session_get_vt-actually-work.patch + * 0001-Never-call-qsort-on-potentially-NULL-arrays.patch + * 0001-dbus-common-avoid-leak-in-error-path.patch + * 0001-drop-ins-check-return-value.patch + * 0001-shared-util-Fix-glob_extend-argument.patch + * 0001-Fix-bad-assert-in-show_pid_array.patch + * 0001-analyze-set-white-background.patch + * 0001-analyze-set-text-on-side-with-most-space.patch + * analyze-fix-crash-in-command-line-parsing.patch + * 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch + * 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 + * U_logind_revert_lazy_session_activation_on_non_vt_seats.patch + * build-sys-make-multi-seat-x-optional.patch + * 1017-skip-native-unit-handling-if-sysv-already-handled.patch + * 0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch + * 0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch + * 0031-man-document-the-b-special-boot-option.patch + * 0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch + * 0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch + * 0035-activate-mention-E-in-the-help-text.patch + * 0036-activate-fix-crash-when-s-is-passed.patch + * 0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch + * 0038-core-socket-fix-SO_REUSEPORT.patch + * 0039-journal-when-appending-to-journal-file-allocate-larg.patch + * 0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch + * 0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch + * 0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch + * 0043-journal-simplify-pre-allocation-logic.patch + * 0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch + * 0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch + * 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch + * 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch + * 0049-systemd-treat-reload-failure-as-failure.patch +- Dropped backported systemd patches as those are fixed upstream + * 0145-logind-use-correct-who-enum-values-with-KillUnit.patch + * 1011-check-4-valid-kmsg-device.patch + * 0001-logind-garbage-collect-stale-users.patch +- Dropped udev patches as those are fixed fixed upstream: + * 0026-udevadm.xml-document-resolve-names-option-for-test.patch + * 0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch +- Modified patches + * 1006-udev-always-rename-network.patch +- Replaced patches + * the patch + 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch + is upstream now but has to be replaced by patch + 0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch + to fix an further issue similar to the upstream patch (bnc#852015) + * the patch + 0001-upstream-systemctl-halt-reboot-error-handling.patch + is upstream now, only the part with the halt after a failed poweroff + has been added to the patch + 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch + +------------------------------------------------------------------- +Thu Feb 27 15:13:09 UTC 2014 - werner@suse.de + +- Add patch 0001-make-209-working-on-older-dist.patch to make + it usable on older distributions like 13.1 + +------------------------------------------------------------------- +Wed Feb 26 12:43:17 UTC 2014 - werner@suse.de + +- Add patch 0001-add-network-device-after-NFS-mount-units.patch to + add "After" dependency to all NFS shares to the network interface + device as this ensures at shutdown that the NFS share becomes + unmounted before the interface is down (bnc#861489) + ++------------------------------------------------------------------- +Sun Feb 23 23:47:06 UTC 2014 - stefan.bruens@rwth-aachen.de + +- enable compat-libs, BuildRequires binutils-gold + ("old" ld fails on ifunc magic) + +------------------------------------------------------------------- +Sun Feb 23 16:11:22 UTC 2014 - stefan.bruens@rwth-aachen.de + +- add network link configuration for udev + +------------------------------------------------------------------- +Sun Feb 23 15:44:01 UTC 2014 - stefan.bruens@rwth-aachen.de + +- Modify patch 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch, + move to core and link in directly to avoid libudev dep all over +- Disable networkd +- Disable compat-libs, adapt files section +- add and remove some entries in the files section + ------------------------------------------------------------------- Fri Feb 21 16:04:54 UTC 2014 - werner@suse.de diff --git a/systemd-mini.spec b/systemd-mini.spec index 2feaaae..5a034c8 100644 --- a/systemd-mini.spec +++ b/systemd-mini.spec @@ -23,10 +23,13 @@ %define udevpkgname udev-mini %define udev_major 1 %bcond_without bash_completion +%bcond_without compat_libs +%bcond_with networkd +%bcond_with python Name: systemd-mini Url: http://www.freedesktop.org/wiki/Software/systemd -Version: 208 +Version: 209 Release: 0 Summary: A System and Session Manager License: LGPL-2.1+ @@ -36,6 +39,9 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build Provides: %{real} = %{version}-%{release} BuildRequires: audit-devel +%if %{with compat_libs} +BuildRequires: binutils-gold +%endif %if ! 0%{?bootstrap} BuildRequires: dbus-1 BuildRequires: docbook-xsl-stylesheets @@ -52,6 +58,7 @@ BuildRequires: intltool BuildRequires: libacl-devel BuildRequires: libattr-devel BuildRequires: libcap-devel +BuildRequires: libkmod-devel BuildRequires: libsepol-devel BuildRequires: libtool %if ! 0%{?bootstrap} @@ -68,10 +75,17 @@ BuildRequires: pkgconfig(blkid) >= 2.20 BuildRequires: pkgconfig(dbus-1) >= 1.3.2 %if ! 0%{?bootstrap} BuildRequires: libgcrypt-devel +%if %{with python} +BuildRequires: python +%endif BuildRequires: pkgconfig(glib-2.0) >= 2.22.0 BuildRequires: pkgconfig(libcryptsetup) >= 1.6.0 %endif +%if 0%{?suse_version} <= 1310 BuildRequires: pkgconfig(libkmod) >= 14 +%else +BuildRequires: pkgconfig(libkmod) >= 15 +%endif BuildRequires: pkgconfig(liblzma) %if ! 0%{?bootstrap} BuildRequires: pkgconfig(libmicrohttpd) @@ -82,6 +96,9 @@ BuildRequires: pkgconfig(libpcre) BuildRequires: pkgconfig(libqrencode) BuildRequires: pkgconfig(usbutils) >= 0.82 %endif +%if 0%{?suse_version} > 1310 +BuildRequires: pkgconfig(libseccomp) +%endif BuildRequires: pkgconfig(libselinux) >= 2.1.9 BuildRequires: pkgconfig(libsepol) %if 0%{?bootstrap} @@ -183,160 +200,42 @@ Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch 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 Patch47: systemd-dbus-system-bus-address.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 -# PATCH-FIX-SUSE 0145-logind-use-correct-who-enum-values-with-KillUnit.patch -- Be able to kill sessions (bnc#860574) -Patch92: 0145-logind-use-correct-who-enum-values-with-KillUnit.patch # PATCH-FIX-SUSE 0001-Don-t-snprintf-a-potentially-NULL-pointer.patch -- Avoid systemd crash on resume (bnc#861488) Patch93: 0001-Don-t-snprintf-a-potentially-NULL-pointer.patch +# PATCH-FIX-SUSE 0001-add-network-device-after-NFS-mount-units.patch werner@suse.com +Patch115: 0001-add-network-device-after-NFS-mount-units.patch +# PATCH-FIX-USTREAM 0001-units-serial-getty-.service-add-Install-section.patch werner@suse.com +Patch116: 0001-units-serial-getty-.service-add-Install-section.patch +# PATCH-FIX-SUSE 0001-make-209-working-on-older-dist.patch werner@suse.com +Patch117: 0001-make-209-working-on-older-dist.patch +# PATCH-FIX-SUSE 0001-make-tests-with-libseccomp-work.patch werner@suse.com +Patch118: 0001-make-tests-with-libseccomp-work.patch +# PATCH-FIX-SUSE 0001-make-fortify-happy-with-ppoll.patch werner@suse.com +Patch119: 0001-make-fortify-happy-with-ppoll.patch +# PATCH-FIX-SUSE 0001-avoid-abort-due-timeout-at-user-service.patch werner@suse.com +Patch120: 0001-avoid-abort-due-timeout-at-user-service.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-SUSE 0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch +Patch1012: 0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.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 -# PATCH-FIX-UPSTREAM 0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch werner@suse.com -Patch94: 0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch -# PATCH-FIX-UPSTREAM 0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch werner@suse.com -Patch96: 0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch -# PATCH-FIX-UPSTREAM 0031-man-document-the-b-special-boot-option.patch werner@suse.com -Patch97: 0031-man-document-the-b-special-boot-option.patch -# PATCH-FIX-UPSTREAM 0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch werner@suse.com -Patch99: 0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch -# PATCH-FIX-UPSTREAM 0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch werner@suse.com -Patch100: 0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch -# PATCH-FIX-UPSTREAM 0035-activate-mention-E-in-the-help-text.patch werner@suse.com -Patch101: 0035-activate-mention-E-in-the-help-text.patch -# PATCH-FIX-UPSTREAM 0036-activate-fix-crash-when-s-is-passed.patch werner@suse.com -Patch102: 0036-activate-fix-crash-when-s-is-passed.patch -# PATCH-FIX-UPSTREAM 0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch werner@suse.com -Patch103: 0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch -# PATCH-FIX-UPSTREAM 0038-core-socket-fix-SO_REUSEPORT.patch werner@suse.com -Patch104: 0038-core-socket-fix-SO_REUSEPORT.patch -# PATCH-FIX-UPSTREAM 0039-journal-when-appending-to-journal-file-allocate-larg.patch werner@suse.com -Patch105: 0039-journal-when-appending-to-journal-file-allocate-larg.patch -# PATCH-FIX-UPSTREAM 0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch werner@suse.com -Patch106: 0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch -# PATCH-FIX-UPSTREAM 0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch werner@suse.com -Patch107: 0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch -# PATCH-FIX-UPSTREAM 0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch werner@suse.com -Patch108: 0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch -# PATCH-FIX-UPSTREAM 0043-journal-simplify-pre-allocation-logic.patch werner@suse.com -Patch109: 0043-journal-simplify-pre-allocation-logic.patch -# PATCH-FIX-UPSTREAM 0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch werner@suse.com -Patch110: 0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch -# PATCH-FIX-UPSTREAM 0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch werner@suse.com -Patch111: 0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch -# PATCH-FIX-UPSTREAM 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch werner@suse.com -Patch112: 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch -# PATCH-FIX-UPSTREAM 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch werner@suse.com -Patch113: 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch -# PATCH-FIX-UPSTREAM 0049-systemd-treat-reload-failure-as-failure.patch werner@suse.com -Patch114: 0049-systemd-treat-reload-failure-as-failure.patch -# PATCH-FIX-SUSE 0001-add-network-device-after-NFS-mount-units.patch werner@suse.com -Patch115: 0001-add-network-device-after-NFS-mount-units.patch # udev patches # PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch @@ -347,16 +246,10 @@ Patch1002: 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch Patch1003: 1003-udev-netlink-null-rules.patch # PATCH-FIX-OPENSUSE 1005-create-default-links-for-primary-cd_dvd-drive.patch Patch1005: 1005-create-default-links-for-primary-cd_dvd-drive.patch -# PATCH-FIX-OPENSUSE 1006-udev-always-rename-network.patch -Patch1006: 1006-udev-always-rename-network.patch # PATCH-FIX-OPENSUSE 1007-physical-hotplug-cpu-and-memory.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 0026-udevadm.xml-document-resolve-names-option-for-test.patch werner@suse.com -Patch95: 0026-udevadm.xml-document-resolve-names-option-for-test.patch -# PATCH-FIX-UPSTREAM 0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch werner@suse.com -Patch98: 0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -590,7 +483,9 @@ cp %{SOURCE7} m4/ %patch23 -p1 %patch24 -p1 %patch25 -p1 -%patch27 -p1 +# check if this is still needed, or can be derived from fbdev uaccess rule +# http://lists.freedesktop.org/archives/systemd-devel/2012-November/007561.html +# %patch27 -p1 %patch37 -p1 %ifarch %arm %patch38 -p1 @@ -601,97 +496,38 @@ cp %{SOURCE7} m4/ %patch42 -p1 %patch46 -p1 %patch47 -p1 -%patch48 -p1 -%patch49 -p1 -%patch50 -p1 -%patch51 -p1 -%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 -%patch92 -p1 %patch93 -p1 +%patch115 -p1 +%patch116 -p1 +%if 0%{?suse_version} <= 1310 +%patch117 -p1 +%endif +%patch118 -p1 +%patch119 -p1 +%patch120 -p1 %patch1009 -p1 %patch1010 -p1 -%patch1011 -p1 %patch1012 -p1 -%patch1013 -p1 %patch1014 -p1 -%patch1015 -p1 %patch1016 -p1 -%patch1017 -p1 %patch1018 -p1 %patch1019 -p1 -%patch94 -p0 -%patch96 -p0 -%patch97 -p0 -%patch99 -p0 -%patch100 -p0 -%patch101 -p0 -%patch102 -p0 -%patch103 -p0 -%patch104 -p0 -%patch105 -p0 -%patch106 -p0 -%patch107 -p0 -%patch108 -p0 -%patch109 -p0 -%patch110 -p0 -%patch111 -p0 -%patch112 -p0 -%patch113 -p0 -%patch114 -p0 -%patch115 -p1 # udev patches %patch1001 -p1 %patch1002 -p1 %patch1003 -p1 %patch1005 -p1 -%patch1006 -p1 +#%patch1006 -p1 -b .xy # don't apply when bootstrapping to not modify Makefile.am %if ! 0%{?bootstrap} %patch1007 -p1 %patch1008 -p1 %endif -%patch95 -p0 -%patch98 -p0 # ensure generate files are removed rm -f units/emergency.service @@ -710,8 +546,14 @@ export V=1 --disable-myhostname \ %else --enable-manpages \ +%if %{with python} + --with-python \ +%endif --enable-gtk-doc \ --with-nss-my-hostname-warning \ +%if %{with compat_libs} + --enable-compat-libs \ +%endif %endif --enable-selinux \ --enable-split-usr \ @@ -724,43 +566,52 @@ export V=1 --disable-ima \ %if 0%{?suse_version} > 1310 --disable-multi-seat-x \ +%endif +%if %{without networkd} + --disable-networkd \ %endif CFLAGS="%{optflags}" make %{?_smp_mflags} %install make install DESTDIR="%buildroot" +%if %{without python} +for man in systemd.directives.7 systemd.index.7 +do + install -m 0644 man/$man %{buildroot}%{_mandir}/man7/ +done +%endif # move to %{_lib} %if ! 0%{?bootstrap} -mv $RPM_BUILD_ROOT%{_libdir}/libnss_myhostname.so.2 $RPM_BUILD_ROOT/%{_lib} +mv %{buildroot}%{_libdir}/libnss_myhostname.so.2 %{buildroot}/%{_lib} %endif -mkdir -p $RPM_BUILD_ROOT/{sbin,lib,bin} -ln -sf %{_bindir}/udevadm $RPM_BUILD_ROOT/sbin/udevadm -ln -sf %{_bindir}/systemd-ask-password $RPM_BUILD_ROOT/bin/systemd-ask-password -ln -sf %{_bindir}/systemctl $RPM_BUILD_ROOT/bin/systemctl -ln -sf %{_prefix}/lib/systemd/systemd-udevd $RPM_BUILD_ROOT/sbin/udevd +mkdir -p %{buildroot}/{sbin,lib,bin} +ln -sf %{_bindir}/udevadm %{buildroot}/sbin/udevadm +ln -sf %{_bindir}/systemd-ask-password %{buildroot}/bin/systemd-ask-password +ln -sf %{_bindir}/systemctl %{buildroot}/bin/systemctl +ln -sf %{_prefix}/lib/systemd/systemd-udevd %{buildroot}/sbin/udevd %if ! 0%{?bootstrap} -ln -sf systemd-udevd.8 $RPM_BUILD_ROOT/%{_mandir}/man8/udevd.8 +ln -sf systemd-udevd.8 %{buildroot}/%{_mandir}/man8/udevd.8 %endif -ln -sf /lib/firmware $RPM_BUILD_ROOT/usr/lib/firmware +ln -sf /lib/firmware %{buildroot}/usr/lib/firmware %if ! 0%{?bootstrap} -install -m755 -D %{S:8} $RPM_BUILD_ROOT/etc/init.d/systemd-journald +install -m755 -D %{S:8} %{buildroot}/etc/init.d/systemd-journald install -D -m 755 %{S:9} %{buildroot}%{_sbindir}/nss-myhostname-config %endif sed -ie "s|@@PREFIX@@|%{_prefix}/lib/udev|g" %{S:1060} sed -ie "s|@@SYSTEMD@@|%{_prefix}/lib/systemd|g" %{S:1060} sed -ie "s|@@BINDIR@@|%{_bindir}|g" %{S:1060} -install -m755 -D %{S:1060} $RPM_BUILD_ROOT/etc/init.d/boot.udev -ln -s systemd-udevd.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/udev.service +install -m755 -D %{S:1060} %{buildroot}/etc/init.d/boot.udev +ln -s systemd-udevd.service %{buildroot}/%{_prefix}/lib/systemd/system/udev.service sed -ie "s|@@PREFIX@@|%{_bindir}|g" %{S:1061} -install -m755 -D %{S:1061} $RPM_BUILD_ROOT/%{_prefix}/lib/udev/write_dev_root_rule +install -m755 -D %{S:1061} %{buildroot}/%{_prefix}/lib/udev/write_dev_root_rule sed -ie "s|@@PREFIX@@|%{_prefix}/lib/udev|g" %{S:1062} -install -m644 -D %{S:1062} $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/systemd-udev-root-symlink.service -mkdir -p $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/basic.target.wants -ln -sf ../systemd-udev-root-symlink.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/basic.target.wants +install -m644 -D %{S:1062} %{buildroot}/%{_prefix}/lib/systemd/system/systemd-udev-root-symlink.service +mkdir -p %{buildroot}/%{_prefix}/lib/systemd/system/basic.target.wants +ln -sf ../systemd-udev-root-symlink.service %{buildroot}/%{_prefix}/lib/systemd/system/basic.target.wants rm -rf %{buildroot}%{_sysconfdir}/rpm find %{buildroot} -type f -name '*.la' -delete mkdir -p %{buildroot}/{sbin,var/lib/systemd/sysv-convert,var/lib/systemd/migrated} %{buildroot}/usr/lib/systemd/{system-generators,user-generators,system-preset,user-preset,system/halt.target.wants,system/kexec.target.wants,system/poweroff.target.wants,system/reboot.target.wants,system/shutdown.target.wants} @@ -1070,6 +921,7 @@ exit 0 /bin/systemd-ask-password /bin/systemctl %{_bindir}/bootctl +%{_bindir}/busctl %{_bindir}/kernel-install %{_bindir}/hostnamectl %{_bindir}/localectl @@ -1094,10 +946,13 @@ exit 0 %{_bindir}/systemd-detect-virt %{_bindir}/timedatectl %{_sbindir}/systemd-sysv-convert +%{_libdir}/libsystemd.so.* +%if %{with compat_libs} %{_libdir}/libsystemd-daemon.so.* %{_libdir}/libsystemd-login.so.* %{_libdir}/libsystemd-id128.so.* %{_libdir}/libsystemd-journal.so.* +%endif %{_bindir}/systemd-cgls %{_bindir}/systemd-cgtop %{_bindir}/systemd-cat @@ -1115,6 +970,7 @@ exit 0 %exclude %{_prefix}/lib/systemd/system/basic.target.wants/systemd-udev-root-symlink.service %exclude %{_prefix}/lib/systemd/system/systemd-journal-gatewayd.* %{_prefix}/lib/systemd/system/*.automount +%{_prefix}/lib/systemd/system/*.busname %{_prefix}/lib/systemd/system/*.service %{_prefix}/lib/systemd/system/*.slice %{_prefix}/lib/systemd/system/*.target @@ -1131,7 +987,7 @@ exit 0 %{_prefix}/lib/systemd/systemd %dir %{_prefix}/lib/systemd/catalog %{_prefix}/lib/systemd/catalog/systemd.catalog -%dir %{_prefix}/lib/systemd/system-shutdown +%{_prefix}/lib/systemd/catalog/systemd.*.catalog %dir %{_prefix}/lib/systemd/system-shutdown %dir %{_prefix}/lib/systemd/system-preset %dir %{_prefix}/lib/systemd/user-preset @@ -1188,10 +1044,6 @@ exit 0 %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf -%{_datadir}/dbus-1/interfaces/org.freedesktop.hostname1.xml -%{_datadir}/dbus-1/interfaces/org.freedesktop.locale1.xml -%{_datadir}/dbus-1/interfaces/org.freedesktop.systemd1.*.xml -%{_datadir}/dbus-1/interfaces/org.freedesktop.timedate1.xml %{_datadir}/dbus-1/services/org.freedesktop.systemd1.service %{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service %{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service @@ -1208,6 +1060,7 @@ exit 0 %{_datadir}/polkit-1/actions/org.freedesktop.login1.policy %exclude %{_datadir}/systemd/gatewayd %{_datadir}/systemd +%{_datadir}/locale/*/LC_MESSAGES %if ! 0%{?bootstrap} # Packaged in sysvinit subpackage @@ -1237,7 +1090,6 @@ exit 0 %if ! 0%{?bootstrap} %{_prefix}/lib/udev/numlock-on %endif -%ghost /var/lib/systemd/catalog/database %if 0%{suse_version} < 1310 %{_sysconfdir}/rpm/macros.systemd %endif @@ -1266,22 +1118,28 @@ exit 0 %files devel %defattr(-,root,root,-) +%{_libdir}/libsystemd.so +%if %{with compat_libs} %{_libdir}/libsystemd-daemon.so %{_libdir}/libsystemd-login.so %{_libdir}/libsystemd-id128.so %{_libdir}/libsystemd-journal.so +%endif %dir %{_includedir}/systemd %{_includedir}/systemd/sd-login.h %{_includedir}/systemd/sd-daemon.h %{_includedir}/systemd/sd-id128.h %{_includedir}/systemd/sd-journal.h %{_includedir}/systemd/sd-messages.h -%{_includedir}/systemd/sd-shutdown.h +%{_includedir}/systemd/_sd-common.h %{_datadir}/pkgconfig/systemd.pc +%{_libdir}/pkgconfig/libsystemd.pc +%if %{with compat_libs} %{_libdir}/pkgconfig/libsystemd-daemon.pc %{_libdir}/pkgconfig/libsystemd-login.pc %{_libdir}/pkgconfig/libsystemd-id128.pc %{_libdir}/pkgconfig/libsystemd-journal.pc +%endif %files sysvinit %defattr(-,root,root,-) @@ -1346,6 +1204,8 @@ exit 0 %{_prefix}/lib/systemd/system/sysinit.target.wants/systemd-udev*.service %dir %{_prefix}/lib/systemd/system/sockets.target.wants %{_prefix}/lib/systemd/system/sockets.target.wants/systemd-udev*.socket +%dir %{_prefix}/lib/systemd/network +%{_prefix}/lib/systemd/network/*.link %files -n lib%{udevpkgname}%{udev_major} %defattr(-,root,root) diff --git a/systemd-tmp-safe-defaults.patch b/systemd-tmp-safe-defaults.patch index 492ab22..61d0534 100644 --- a/systemd-tmp-safe-defaults.patch +++ b/systemd-tmp-safe-defaults.patch @@ -21,4 +21,4 @@ SUSE policy is to not clean /tmp by default. +d /var/tmp 1777 root root - # Exclude namespace mountpoints created with PrivateTmp=yes - x /tmp/systemd-private-* + x /tmp/systemd-private-%b-* diff --git a/systemd.changes b/systemd.changes index cd2fc1a..5d33818 100644 --- a/systemd.changes +++ b/systemd.changes @@ -1,3 +1,270 @@ +------------------------------------------------------------------- +Fri Feb 28 16:59:25 UTC 2014 - werner@suse.de + +- Update to Release v209 on the base of the work of Stefan BrĂ¼ns + from declined submit request 223602: + + A new tool "systemd-socket-proxyd" has been added + + Add a new tool to save/restore rfkill state on + shutdown/boot. + + Save/restore state of keyboard backlights in addition to + display backlights on shutdown/boot. + + udev learned a new SECLABEL{} construct to label device + nodes with a specific security label when they appear. For + now, only SECLABEL{selinux} is supported, but the syntax is + prepared for additional security frameworks. + + When the User= switch is used in a unit file, also + initialize $SHELL= based on the user database entry. + + systemd no longer depends on libdbus. All communication is + now done with sd-bus, systemd's low-level bus library + implementation. + + sd-bus: add a light-weight vtable implementation that allows + defining objects on the bus with a simple static const + vtable array of its methods, signals and properties. + + systemd will not generate or install static dbus + introspection data anymore to /usr/share/dbus-1/interfaces, + as the precise format of these files is unclear, and + nothing makes use of it. + + A proxy daemon is now provided to proxy clients connecting + via classic D-Bus AF_UNIX sockets to kdbus, to provide full + compatibility with classic D-Bus. + + A bus driver implementation has been added that supports the + classic D-Bus bus driver calls on kdbus, also for + compatibility purposes. + + A new API "sd-event.h" has been added that implements a + minimal event loop API built around epoll. + + A new API "sd-rntl.h" has been added that provides an API + around the route netlink interface of the kernel, similar in + style to "sd-bus.h". + + A new API "sd-dhcp-client.h" has been added that provides a + small DHCPv4 client-side implementation. This is used by + "systemd-networkd". + + There is a new kernel command line option + "systemd.restore_state=0|1". When set to "0", none of the + systemd tools will restore saved runtime state to hardware + devices. More specifically, the rfkill and backlight states + are not restored. + + The FsckPassNo= compatibility option in mount/service units + has been removed. The fstab generator will now add the + necessary dependencies automatically, and does not require + PID1's support for that anymore. + + journalctl gained a new switch, --list-boots, that lists + recent boots with their times and boot IDs. + + The various tools like systemctl, loginctl, timedatectl, + busctl, systemd-run, ... have gained a new switch "-M" to + connect to a specific, local OS container (as direct + connection, without requiring SSH). + + systemd-run and systemd-analyze also gained support for "-H" + to connect to remote hosts via SSH. This is particularly + useful for systemd-run because it enables queuing of jobs + onto remote systems. + + machinectl gained a new command "login" to open a getty + login in any local container. This works with any container + that is registered with machined (such as those created by + libvirt-lxc or nspawn), and which runs systemd inside. + + machinectl gained a new "reboot" command that may be used to + trigger a reboot on a specific container that is registered + with machined. This works on any container that runs an init + system of some kind. + + systemctl gained a new "list-timers" command to print a nice + listing of installed timer units with the times they elapse + next. + + Alternative reboot() parameters may now be specified on the + "systemctl reboot" command line and are passed to the + reboot() system call. + + systemctl gained a new --job-mode= switch to configure the + mode to queue a job with. This is a more generic version of + --fail, --irreversible, and --ignore-dependencies, which are + still available but not advertised anymore. + + /etc/systemd/system.conf gained new settings to configure + various default timeouts of units, as well as the default + start limit interval and burst. These may still be overridden + within each Unit. + + PID1 will now export on the bus profile data of the security + policy upload process (such as the SELinux policy upload to + the kernel). + + journald: when forwarding logs to the console, include + timestamps (following the setting in + /sys/module/printk/parameters/time). + + OnCalendar= in timer units now understands the special + strings "yearly" and "annually". (Both are equivalent) + + The accuracy of timer units is now configurable with the new + AccuracySec= setting. It defaults to 1min. + + A new dependency type JoinsNamespaceOf= has been added that + allows running two services within the same /tmp and network + namespace, if PrivateNetwork= or PrivateTmp= are used. + + A new command "cat" has been added to systemctl. It outputs + the original unit file of a unit, and concatenates the + contents of additional "drop-in" unit file snippets, so that + the full configuration is shown. + + systemctl now supports globbing on the various "list-xyz" + commands, like "list-units" or "list-sockets", as well as on + those commands which take multiple unit names. + + journalctl's --unit= switch gained support for globbing. + + All systemd daemons now make use of the watchdog logic so + that systemd automatically notices when they hang. + + If the $container_ttys environment variable is set, + getty-generator will automatically spawn a getty for each + listed tty. This is useful for container managers to request + login gettys to be spawned on as many ttys as needed. + + %h, %s, %U specifier support is not available anymore when + used in unit files for PID 1. This is because NSS calls are + not safe from PID 1. They stay available for --user + instances of systemd, and as special case for the root user. + + loginctl gained a new "--no-legend" switch to turn off output + of the legend text. + + The "sd-login.h" API gained three new calls: + sd_session_is_remote(), sd_session_get_remote_user(), + sd_session_get_remote_host() to query information about + remote sessions. + + The udev hardware database now also carries vendor/product + information of SDIO devices. + + The "sd-daemon.h" API gained a new sd_watchdog_enabled() to + determine whether watchdog notifications are requested by + the system manager. + + Socket-activated per-connection services now include a + short description of the connection parameters in the + description. + + tmpfiles gained a new "--boot" option. When this is not used, + only lines where the command character is not suffixed with + "!" are executed. When this option is specified, those + options are executed too. + + systemctl gained a new "import-environment" command which + uploads the caller's environment (or parts thereof) into the + service manager so that it is inherited by services started + by the manager. This is useful to upload variables like + $DISPLAY into the user service manager. + + A new PrivateDevices= switch has been added to service units + which allows running a service with a namespaced /dev + directory that does not contain any device nodes for + physical devices. More specifically, it only includes devices + such as /dev/null, /dev/urandom, and /dev/zero which are API + entry points. + + logind has been extended to support behaviour like VT + switching on seats that do not support a VT. This makes + multi-session available on seats that are not the first seat + (seat0), and on systems where kernel support for VTs has + been disabled at compile-time. + + If a process holds a delay lock for system sleep or shutdown + and fails to release it in time, we will now log its + identity. This makes it easier to identify processes that + cause slow suspends or power-offs. + + When parsing /etc/crypttab, support for a new key-slot= + option as supported by Debian is added. It allows indicating + which LUKS slot to use on disk, speeding up key loading. + + The sd_journald_sendv() API call has been checked and + officially declared to be async-signal-safe so that it may + be invoked from signal handlers for logging purposes. + + Boot-time status output is now enabled automatically after a + short timeout if boot does not progress, in order to give + the user an indication what she or he is waiting for. + + The boot-time output has been improved to show how much time + remains until jobs expire. + + The KillMode= switch in service units gained a new possible + value "mixed". If set, and the unit is shut down, then the + initial SIGTERM signal is sent only to the main daemon + process, while the following SIGKILL signal is sent to + all remaining processes of the service. + + logind will now also track a "Desktop" identifier for each + session which encodes the desktop environment of it. This is + useful for desktop environments that want to identify + multiple running sessions of itself easily. + + A new SELinuxContext= setting for service units has been + added that allows setting a specific SELinux execution + context for a service. + + Most systemd client tools will now honour $SYSTEMD_LESS for + settings of the "less" pager. + + systemd's "seccomp" hook-up has been changed to make use of + the libseccomp library instead of using its own + implementation. This has benefits for portability among + other things. +- Dropped systemd patches as those are fixed upstream: + * 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch + * 0002-fix-lingering-references-to-var-lib-backlight-random.patch + * 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch + * 0004-systemctl-fix-name-mangling-for-sysv-units.patch + * 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch + * 0006-journald-add-missing-error-check.patch + * 0007-bus-fix-potentially-uninitialized-memory-access.patch + * 0008-dbus-fix-return-value-of-dispatch_rqueue.patch + * 0009-modules-load-fix-error-handling.patch + * 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch + * 0011-strv-don-t-access-potentially-NULL-string-arrays.patch + * 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch + * 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch + * 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch + * 0001-gpt-auto-generator-exit-immediately-if-in-container.patch + * 0001-manager-when-verifying-whether-clients-may-change-en.patch + * 0001-logind-fix-bus-introspection-data-for-TakeControl.patch + * 0001-mount-check-for-NULL-before-reading-pm-what.patch + * 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch + * 0001-systemd-serialize-deserialize-forbid_restart-value.patch + * 0001-core-unify-the-way-we-denote-serialization-attribute.patch + * 0001-journald-fix-minor-memory-leak.patch + * 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch + * 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch + * 0001-login-fix-invalid-free-in-sd_session_get_vt.patch + * 0001-login-make-sd_session_get_vt-actually-work.patch + * 0001-Never-call-qsort-on-potentially-NULL-arrays.patch + * 0001-dbus-common-avoid-leak-in-error-path.patch + * 0001-drop-ins-check-return-value.patch + * 0001-shared-util-Fix-glob_extend-argument.patch + * 0001-Fix-bad-assert-in-show_pid_array.patch + * 0001-analyze-set-white-background.patch + * 0001-analyze-set-text-on-side-with-most-space.patch + * analyze-fix-crash-in-command-line-parsing.patch + * 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch + * 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 + * U_logind_revert_lazy_session_activation_on_non_vt_seats.patch + * build-sys-make-multi-seat-x-optional.patch + * 1017-skip-native-unit-handling-if-sysv-already-handled.patch + * 0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch + * 0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch + * 0031-man-document-the-b-special-boot-option.patch + * 0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch + * 0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch + * 0035-activate-mention-E-in-the-help-text.patch + * 0036-activate-fix-crash-when-s-is-passed.patch + * 0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch + * 0038-core-socket-fix-SO_REUSEPORT.patch + * 0039-journal-when-appending-to-journal-file-allocate-larg.patch + * 0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch + * 0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch + * 0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch + * 0043-journal-simplify-pre-allocation-logic.patch + * 0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch + * 0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch + * 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch + * 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch + * 0049-systemd-treat-reload-failure-as-failure.patch +- Dropped backported systemd patches as those are fixed upstream + * 0145-logind-use-correct-who-enum-values-with-KillUnit.patch + * 1011-check-4-valid-kmsg-device.patch + * 0001-logind-garbage-collect-stale-users.patch +- Dropped udev patches as those are fixed fixed upstream: + * 0026-udevadm.xml-document-resolve-names-option-for-test.patch + * 0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch +- Modified patches + * 1006-udev-always-rename-network.patch +- Replaced patches + * the patch + 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch + is upstream now but has to be replaced by patch + 0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch + to fix an further issue similar to the upstream patch (bnc#852015) + * the patch + 0001-upstream-systemctl-halt-reboot-error-handling.patch + is upstream now, only the part with the halt after a failed poweroff + has been added to the patch + 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch + +------------------------------------------------------------------- +Thu Feb 27 15:13:09 UTC 2014 - werner@suse.de + +- Add patch 0001-make-209-working-on-older-dist.patch to make + it usable on older distributions like 13.1 + ------------------------------------------------------------------- Wed Feb 26 12:43:17 UTC 2014 - werner@suse.de @@ -6,6 +273,26 @@ Wed Feb 26 12:43:17 UTC 2014 - werner@suse.de device as this ensures at shutdown that the NFS share becomes unmounted before the interface is down (bnc#861489) ++------------------------------------------------------------------- +Sun Feb 23 23:47:06 UTC 2014 - stefan.bruens@rwth-aachen.de + +- enable compat-libs, BuildRequires binutils-gold + ("old" ld fails on ifunc magic) + +------------------------------------------------------------------- +Sun Feb 23 16:11:22 UTC 2014 - stefan.bruens@rwth-aachen.de + +- add network link configuration for udev + +------------------------------------------------------------------- +Sun Feb 23 15:44:01 UTC 2014 - stefan.bruens@rwth-aachen.de + +- Modify patch 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch, + move to core and link in directly to avoid libudev dep all over +- Disable networkd +- Disable compat-libs, adapt files section +- add and remove some entries in the files section + ------------------------------------------------------------------- Fri Feb 21 16:04:54 UTC 2014 - werner@suse.de diff --git a/systemd.spec b/systemd.spec index 4a5b039..edd5d4c 100644 --- a/systemd.spec +++ b/systemd.spec @@ -21,16 +21,22 @@ %define udevpkgname udev %define udev_major 1 %bcond_without bash_completion +%bcond_without compat_libs +%bcond_with networkd +%bcond_with python Name: systemd Url: http://www.freedesktop.org/wiki/Software/systemd -Version: 208 +Version: 209 Release: 0 Summary: A System and Session Manager License: LGPL-2.1+ Group: System/Base BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: audit-devel +%if %{with compat_libs} +BuildRequires: binutils-gold +%endif %if ! 0%{?bootstrap} BuildRequires: dbus-1 BuildRequires: docbook-xsl-stylesheets @@ -47,6 +53,7 @@ BuildRequires: intltool BuildRequires: libacl-devel BuildRequires: libattr-devel BuildRequires: libcap-devel +BuildRequires: libkmod-devel BuildRequires: libsepol-devel BuildRequires: libtool %if ! 0%{?bootstrap} @@ -63,10 +70,17 @@ BuildRequires: pkgconfig(blkid) >= 2.20 BuildRequires: pkgconfig(dbus-1) >= 1.3.2 %if ! 0%{?bootstrap} BuildRequires: libgcrypt-devel +%if %{with python} +BuildRequires: python +%endif BuildRequires: pkgconfig(glib-2.0) >= 2.22.0 BuildRequires: pkgconfig(libcryptsetup) >= 1.6.0 %endif +%if 0%{?suse_version} <= 1310 BuildRequires: pkgconfig(libkmod) >= 14 +%else +BuildRequires: pkgconfig(libkmod) >= 15 +%endif BuildRequires: pkgconfig(liblzma) %if ! 0%{?bootstrap} BuildRequires: pkgconfig(libmicrohttpd) @@ -77,6 +91,9 @@ BuildRequires: pkgconfig(libpcre) BuildRequires: pkgconfig(libqrencode) BuildRequires: pkgconfig(usbutils) >= 0.82 %endif +%if 0%{?suse_version} > 1310 +BuildRequires: pkgconfig(libseccomp) +%endif BuildRequires: pkgconfig(libselinux) >= 2.1.9 BuildRequires: pkgconfig(libsepol) %if 0%{?bootstrap} @@ -178,160 +195,42 @@ Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch 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 Patch47: systemd-dbus-system-bus-address.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 -# PATCH-FIX-SUSE 0145-logind-use-correct-who-enum-values-with-KillUnit.patch -- Be able to kill sessions (bnc#860574) -Patch92: 0145-logind-use-correct-who-enum-values-with-KillUnit.patch # PATCH-FIX-SUSE 0001-Don-t-snprintf-a-potentially-NULL-pointer.patch -- Avoid systemd crash on resume (bnc#861488) Patch93: 0001-Don-t-snprintf-a-potentially-NULL-pointer.patch +# PATCH-FIX-SUSE 0001-add-network-device-after-NFS-mount-units.patch werner@suse.com +Patch115: 0001-add-network-device-after-NFS-mount-units.patch +# PATCH-FIX-USTREAM 0001-units-serial-getty-.service-add-Install-section.patch werner@suse.com +Patch116: 0001-units-serial-getty-.service-add-Install-section.patch +# PATCH-FIX-SUSE 0001-make-209-working-on-older-dist.patch werner@suse.com +Patch117: 0001-make-209-working-on-older-dist.patch +# PATCH-FIX-SUSE 0001-make-tests-with-libseccomp-work.patch werner@suse.com +Patch118: 0001-make-tests-with-libseccomp-work.patch +# PATCH-FIX-SUSE 0001-make-fortify-happy-with-ppoll.patch werner@suse.com +Patch119: 0001-make-fortify-happy-with-ppoll.patch +# PATCH-FIX-SUSE 0001-avoid-abort-due-timeout-at-user-service.patch werner@suse.com +Patch120: 0001-avoid-abort-due-timeout-at-user-service.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-SUSE 0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch +Patch1012: 0001-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.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 -# PATCH-FIX-UPSTREAM 0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch werner@suse.com -Patch94: 0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch -# PATCH-FIX-UPSTREAM 0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch werner@suse.com -Patch96: 0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch -# PATCH-FIX-UPSTREAM 0031-man-document-the-b-special-boot-option.patch werner@suse.com -Patch97: 0031-man-document-the-b-special-boot-option.patch -# PATCH-FIX-UPSTREAM 0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch werner@suse.com -Patch99: 0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch -# PATCH-FIX-UPSTREAM 0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch werner@suse.com -Patch100: 0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch -# PATCH-FIX-UPSTREAM 0035-activate-mention-E-in-the-help-text.patch werner@suse.com -Patch101: 0035-activate-mention-E-in-the-help-text.patch -# PATCH-FIX-UPSTREAM 0036-activate-fix-crash-when-s-is-passed.patch werner@suse.com -Patch102: 0036-activate-fix-crash-when-s-is-passed.patch -# PATCH-FIX-UPSTREAM 0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch werner@suse.com -Patch103: 0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch -# PATCH-FIX-UPSTREAM 0038-core-socket-fix-SO_REUSEPORT.patch werner@suse.com -Patch104: 0038-core-socket-fix-SO_REUSEPORT.patch -# PATCH-FIX-UPSTREAM 0039-journal-when-appending-to-journal-file-allocate-larg.patch werner@suse.com -Patch105: 0039-journal-when-appending-to-journal-file-allocate-larg.patch -# PATCH-FIX-UPSTREAM 0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch werner@suse.com -Patch106: 0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch -# PATCH-FIX-UPSTREAM 0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch werner@suse.com -Patch107: 0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch -# PATCH-FIX-UPSTREAM 0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch werner@suse.com -Patch108: 0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch -# PATCH-FIX-UPSTREAM 0043-journal-simplify-pre-allocation-logic.patch werner@suse.com -Patch109: 0043-journal-simplify-pre-allocation-logic.patch -# PATCH-FIX-UPSTREAM 0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch werner@suse.com -Patch110: 0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch -# PATCH-FIX-UPSTREAM 0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch werner@suse.com -Patch111: 0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch -# PATCH-FIX-UPSTREAM 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch werner@suse.com -Patch112: 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch -# PATCH-FIX-UPSTREAM 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch werner@suse.com -Patch113: 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch -# PATCH-FIX-UPSTREAM 0049-systemd-treat-reload-failure-as-failure.patch werner@suse.com -Patch114: 0049-systemd-treat-reload-failure-as-failure.patch -# PATCH-FIX-SUSE 0001-add-network-device-after-NFS-mount-units.patch werner@suse.com -Patch115: 0001-add-network-device-after-NFS-mount-units.patch # udev patches # PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch @@ -342,16 +241,10 @@ Patch1002: 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch Patch1003: 1003-udev-netlink-null-rules.patch # PATCH-FIX-OPENSUSE 1005-create-default-links-for-primary-cd_dvd-drive.patch Patch1005: 1005-create-default-links-for-primary-cd_dvd-drive.patch -# PATCH-FIX-OPENSUSE 1006-udev-always-rename-network.patch -Patch1006: 1006-udev-always-rename-network.patch # PATCH-FIX-OPENSUSE 1007-physical-hotplug-cpu-and-memory.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 0026-udevadm.xml-document-resolve-names-option-for-test.patch werner@suse.com -Patch95: 0026-udevadm.xml-document-resolve-names-option-for-test.patch -# PATCH-FIX-UPSTREAM 0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch werner@suse.com -Patch98: 0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -585,7 +478,9 @@ cp %{SOURCE7} m4/ %patch23 -p1 %patch24 -p1 %patch25 -p1 -%patch27 -p1 +# check if this is still needed, or can be derived from fbdev uaccess rule +# http://lists.freedesktop.org/archives/systemd-devel/2012-November/007561.html +# %patch27 -p1 %patch37 -p1 %ifarch %arm %patch38 -p1 @@ -596,97 +491,38 @@ cp %{SOURCE7} m4/ %patch42 -p1 %patch46 -p1 %patch47 -p1 -%patch48 -p1 -%patch49 -p1 -%patch50 -p1 -%patch51 -p1 -%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 -%patch92 -p1 %patch93 -p1 +%patch115 -p1 +%patch116 -p1 +%if 0%{?suse_version} <= 1310 +%patch117 -p1 +%endif +%patch118 -p1 +%patch119 -p1 +%patch120 -p1 %patch1009 -p1 %patch1010 -p1 -%patch1011 -p1 %patch1012 -p1 -%patch1013 -p1 %patch1014 -p1 -%patch1015 -p1 %patch1016 -p1 -%patch1017 -p1 %patch1018 -p1 %patch1019 -p1 -%patch94 -p0 -%patch96 -p0 -%patch97 -p0 -%patch99 -p0 -%patch100 -p0 -%patch101 -p0 -%patch102 -p0 -%patch103 -p0 -%patch104 -p0 -%patch105 -p0 -%patch106 -p0 -%patch107 -p0 -%patch108 -p0 -%patch109 -p0 -%patch110 -p0 -%patch111 -p0 -%patch112 -p0 -%patch113 -p0 -%patch114 -p0 -%patch115 -p1 # udev patches %patch1001 -p1 %patch1002 -p1 %patch1003 -p1 %patch1005 -p1 -%patch1006 -p1 +#%patch1006 -p1 -b .xy # don't apply when bootstrapping to not modify Makefile.am %if ! 0%{?bootstrap} %patch1007 -p1 %patch1008 -p1 %endif -%patch95 -p0 -%patch98 -p0 # ensure generate files are removed rm -f units/emergency.service @@ -705,8 +541,14 @@ export V=1 --disable-myhostname \ %else --enable-manpages \ +%if %{with python} + --with-python \ +%endif --enable-gtk-doc \ --with-nss-my-hostname-warning \ +%if %{with compat_libs} + --enable-compat-libs \ +%endif %endif --enable-selinux \ --enable-split-usr \ @@ -719,43 +561,52 @@ export V=1 --disable-ima \ %if 0%{?suse_version} > 1310 --disable-multi-seat-x \ +%endif +%if %{without networkd} + --disable-networkd \ %endif CFLAGS="%{optflags}" make %{?_smp_mflags} %install make install DESTDIR="%buildroot" +%if %{without python} +for man in systemd.directives.7 systemd.index.7 +do + install -m 0644 man/$man %{buildroot}%{_mandir}/man7/ +done +%endif # move to %{_lib} %if ! 0%{?bootstrap} -mv $RPM_BUILD_ROOT%{_libdir}/libnss_myhostname.so.2 $RPM_BUILD_ROOT/%{_lib} +mv %{buildroot}%{_libdir}/libnss_myhostname.so.2 %{buildroot}/%{_lib} %endif -mkdir -p $RPM_BUILD_ROOT/{sbin,lib,bin} -ln -sf %{_bindir}/udevadm $RPM_BUILD_ROOT/sbin/udevadm -ln -sf %{_bindir}/systemd-ask-password $RPM_BUILD_ROOT/bin/systemd-ask-password -ln -sf %{_bindir}/systemctl $RPM_BUILD_ROOT/bin/systemctl -ln -sf %{_prefix}/lib/systemd/systemd-udevd $RPM_BUILD_ROOT/sbin/udevd +mkdir -p %{buildroot}/{sbin,lib,bin} +ln -sf %{_bindir}/udevadm %{buildroot}/sbin/udevadm +ln -sf %{_bindir}/systemd-ask-password %{buildroot}/bin/systemd-ask-password +ln -sf %{_bindir}/systemctl %{buildroot}/bin/systemctl +ln -sf %{_prefix}/lib/systemd/systemd-udevd %{buildroot}/sbin/udevd %if ! 0%{?bootstrap} -ln -sf systemd-udevd.8 $RPM_BUILD_ROOT/%{_mandir}/man8/udevd.8 +ln -sf systemd-udevd.8 %{buildroot}/%{_mandir}/man8/udevd.8 %endif -ln -sf /lib/firmware $RPM_BUILD_ROOT/usr/lib/firmware +ln -sf /lib/firmware %{buildroot}/usr/lib/firmware %if ! 0%{?bootstrap} -install -m755 -D %{S:8} $RPM_BUILD_ROOT/etc/init.d/systemd-journald +install -m755 -D %{S:8} %{buildroot}/etc/init.d/systemd-journald install -D -m 755 %{S:9} %{buildroot}%{_sbindir}/nss-myhostname-config %endif sed -ie "s|@@PREFIX@@|%{_prefix}/lib/udev|g" %{S:1060} sed -ie "s|@@SYSTEMD@@|%{_prefix}/lib/systemd|g" %{S:1060} sed -ie "s|@@BINDIR@@|%{_bindir}|g" %{S:1060} -install -m755 -D %{S:1060} $RPM_BUILD_ROOT/etc/init.d/boot.udev -ln -s systemd-udevd.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/udev.service +install -m755 -D %{S:1060} %{buildroot}/etc/init.d/boot.udev +ln -s systemd-udevd.service %{buildroot}/%{_prefix}/lib/systemd/system/udev.service sed -ie "s|@@PREFIX@@|%{_bindir}|g" %{S:1061} -install -m755 -D %{S:1061} $RPM_BUILD_ROOT/%{_prefix}/lib/udev/write_dev_root_rule +install -m755 -D %{S:1061} %{buildroot}/%{_prefix}/lib/udev/write_dev_root_rule sed -ie "s|@@PREFIX@@|%{_prefix}/lib/udev|g" %{S:1062} -install -m644 -D %{S:1062} $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/systemd-udev-root-symlink.service -mkdir -p $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/basic.target.wants -ln -sf ../systemd-udev-root-symlink.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system/basic.target.wants +install -m644 -D %{S:1062} %{buildroot}/%{_prefix}/lib/systemd/system/systemd-udev-root-symlink.service +mkdir -p %{buildroot}/%{_prefix}/lib/systemd/system/basic.target.wants +ln -sf ../systemd-udev-root-symlink.service %{buildroot}/%{_prefix}/lib/systemd/system/basic.target.wants rm -rf %{buildroot}%{_sysconfdir}/rpm find %{buildroot} -type f -name '*.la' -delete mkdir -p %{buildroot}/{sbin,var/lib/systemd/sysv-convert,var/lib/systemd/migrated} %{buildroot}/usr/lib/systemd/{system-generators,user-generators,system-preset,user-preset,system/halt.target.wants,system/kexec.target.wants,system/poweroff.target.wants,system/reboot.target.wants,system/shutdown.target.wants} @@ -1065,6 +916,7 @@ exit 0 /bin/systemd-ask-password /bin/systemctl %{_bindir}/bootctl +%{_bindir}/busctl %{_bindir}/kernel-install %{_bindir}/hostnamectl %{_bindir}/localectl @@ -1089,10 +941,13 @@ exit 0 %{_bindir}/systemd-detect-virt %{_bindir}/timedatectl %{_sbindir}/systemd-sysv-convert +%{_libdir}/libsystemd.so.* +%if %{with compat_libs} %{_libdir}/libsystemd-daemon.so.* %{_libdir}/libsystemd-login.so.* %{_libdir}/libsystemd-id128.so.* %{_libdir}/libsystemd-journal.so.* +%endif %{_bindir}/systemd-cgls %{_bindir}/systemd-cgtop %{_bindir}/systemd-cat @@ -1110,6 +965,7 @@ exit 0 %exclude %{_prefix}/lib/systemd/system/basic.target.wants/systemd-udev-root-symlink.service %exclude %{_prefix}/lib/systemd/system/systemd-journal-gatewayd.* %{_prefix}/lib/systemd/system/*.automount +%{_prefix}/lib/systemd/system/*.busname %{_prefix}/lib/systemd/system/*.service %{_prefix}/lib/systemd/system/*.slice %{_prefix}/lib/systemd/system/*.target @@ -1126,7 +982,7 @@ exit 0 %{_prefix}/lib/systemd/systemd %dir %{_prefix}/lib/systemd/catalog %{_prefix}/lib/systemd/catalog/systemd.catalog -%dir %{_prefix}/lib/systemd/system-shutdown +%{_prefix}/lib/systemd/catalog/systemd.*.catalog %dir %{_prefix}/lib/systemd/system-shutdown %dir %{_prefix}/lib/systemd/system-preset %dir %{_prefix}/lib/systemd/user-preset @@ -1183,10 +1039,6 @@ exit 0 %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf -%{_datadir}/dbus-1/interfaces/org.freedesktop.hostname1.xml -%{_datadir}/dbus-1/interfaces/org.freedesktop.locale1.xml -%{_datadir}/dbus-1/interfaces/org.freedesktop.systemd1.*.xml -%{_datadir}/dbus-1/interfaces/org.freedesktop.timedate1.xml %{_datadir}/dbus-1/services/org.freedesktop.systemd1.service %{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service %{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service @@ -1203,6 +1055,7 @@ exit 0 %{_datadir}/polkit-1/actions/org.freedesktop.login1.policy %exclude %{_datadir}/systemd/gatewayd %{_datadir}/systemd +%{_datadir}/locale/*/LC_MESSAGES %if ! 0%{?bootstrap} # Packaged in sysvinit subpackage @@ -1232,7 +1085,6 @@ exit 0 %if ! 0%{?bootstrap} %{_prefix}/lib/udev/numlock-on %endif -%ghost /var/lib/systemd/catalog/database %if 0%{suse_version} < 1310 %{_sysconfdir}/rpm/macros.systemd %endif @@ -1261,22 +1113,28 @@ exit 0 %files devel %defattr(-,root,root,-) +%{_libdir}/libsystemd.so +%if %{with compat_libs} %{_libdir}/libsystemd-daemon.so %{_libdir}/libsystemd-login.so %{_libdir}/libsystemd-id128.so %{_libdir}/libsystemd-journal.so +%endif %dir %{_includedir}/systemd %{_includedir}/systemd/sd-login.h %{_includedir}/systemd/sd-daemon.h %{_includedir}/systemd/sd-id128.h %{_includedir}/systemd/sd-journal.h %{_includedir}/systemd/sd-messages.h -%{_includedir}/systemd/sd-shutdown.h +%{_includedir}/systemd/_sd-common.h %{_datadir}/pkgconfig/systemd.pc +%{_libdir}/pkgconfig/libsystemd.pc +%if %{with compat_libs} %{_libdir}/pkgconfig/libsystemd-daemon.pc %{_libdir}/pkgconfig/libsystemd-login.pc %{_libdir}/pkgconfig/libsystemd-id128.pc %{_libdir}/pkgconfig/libsystemd-journal.pc +%endif %files sysvinit %defattr(-,root,root,-) @@ -1341,6 +1199,8 @@ exit 0 %{_prefix}/lib/systemd/system/sysinit.target.wants/systemd-udev*.service %dir %{_prefix}/lib/systemd/system/sockets.target.wants %{_prefix}/lib/systemd/system/sockets.target.wants/systemd-udev*.socket +%dir %{_prefix}/lib/systemd/network +%{_prefix}/lib/systemd/network/*.link %files -n lib%{udevpkgname}%{udev_major} %defattr(-,root,root) diff --git a/timedate-add-support-for-openSUSE-version-of-etc-sysconfig.patch b/timedate-add-support-for-openSUSE-version-of-etc-sysconfig.patch index f688f40..fb97a2f 100644 --- a/timedate-add-support-for-openSUSE-version-of-etc-sysconfig.patch +++ b/timedate-add-support-for-openSUSE-version-of-etc-sysconfig.patch @@ -14,11 +14,11 @@ Subject: timedate: add support for openSUSE version of /etc/sysconfig/clock } +#ifdef HAVE_SYSV_COMPAT + r = parse_env_file("/etc/sysconfig/clock", NEWLINE, -+ "TIMEZONE", &tz.zone, ++ "TIMEZONE", &c->zone, + NULL); + if (r < 0 && r != -ENOENT) + log_warning("Failed to read /etc/sysconfig/clock: %s", strerror(-r)); +#endif have_timezone: - if (isempty(tz.zone)) { + if (isempty(c->zone)) {