From 2992307e61963b2c8a1181a533b27fd9323678bae1b85321dbb96e1b7b964e65 Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Mon, 4 Apr 2016 19:43:57 +0000 Subject: [PATCH] Accepting request 384213 from openSUSE:Factory Revert to previous working version (see https://bugzilla.opensuse.org/show_bug.cgi?id=973907 ) OBS-URL: https://build.opensuse.org/request/show/384213 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/systemd?expand=0&rev=231 --- ...-.slice-units-from-systemctl-isolate.patch | 8 +- ...e-synchronization-after-daemon-reloa.patch | 193 ------------------ ...-name-list-after-deserializing-durin.patch | 74 ------- ...lock-value-in-etc-sysconfig-keyboard.patch | 19 +- ...et-properties-only-once-to-copy-them.patch | 4 +- ...nal-linking-non-fatal-in-try-and-auto.diff | 116 ----------- systemd-mini.changes | 57 ------ systemd-mini.spec | 87 ++++---- systemd.changes | 57 ------ systemd.spec | 87 ++++---- 10 files changed, 104 insertions(+), 598 deletions(-) delete mode 100644 0001-core-fix-bus-name-synchronization-after-daemon-reloa.patch delete mode 100644 0001-core-re-sync-bus-name-list-after-deserializing-durin.patch delete mode 100644 systemd-228-nspawn-make-journal-linking-non-fatal-in-try-and-auto.diff diff --git a/0001-core-exclude-.slice-units-from-systemctl-isolate.patch b/0001-core-exclude-.slice-units-from-systemctl-isolate.patch index c954427..6271704 100644 --- a/0001-core-exclude-.slice-units-from-systemctl-isolate.patch +++ b/0001-core-exclude-.slice-units-from-systemctl-isolate.patch @@ -11,8 +11,8 @@ Fixes: #1969 diff --git src/core/scope.c src/core/scope.c index c5d0ece..361695c 100644 ---- a/src/core/scope.c -+++ b/src/core/scope.c +--- src/core/scope.c ++++ src/core/scope.c @@ -50,8 +50,7 @@ static void scope_init(Unit *u) { assert(u->load_state == UNIT_STUB); @@ -25,8 +25,8 @@ index c5d0ece..361695c 100644 static void scope_done(Unit *u) { diff --git src/core/slice.c src/core/slice.c index d65364c..667f61b 100644 ---- a/src/core/slice.c -+++ b/src/core/slice.c +--- src/core/slice.c ++++ src/core/slice.c @@ -34,6 +34,13 @@ static const UnitActiveState state_translation_table[_SLICE_STATE_MAX] = { [SLICE_ACTIVE] = UNIT_ACTIVE }; diff --git a/0001-core-fix-bus-name-synchronization-after-daemon-reloa.patch b/0001-core-fix-bus-name-synchronization-after-daemon-reloa.patch deleted file mode 100644 index b1a18d3..0000000 --- a/0001-core-fix-bus-name-synchronization-after-daemon-reloa.patch +++ /dev/null @@ -1,193 +0,0 @@ -From d8ccf5fdc91c46ab5d0ae86e38c206bc508d4188 Mon Sep 17 00:00:00 2001 [> v228] -From: Daniel Mack -Date: Fri, 18 Dec 2015 17:28:15 +0100 -Subject: [PATCH] core: fix bus name synchronization after daemon-reload - -During daemon-reload, PID1 temporarly loses its DBus connection, so there's -a small window in which all signals sent by dbus-daemon are lost. - -This is a problem, since we rely on the NameOwnerChanged signals in order to -consider a service with Type=dbus fully started or terminated, respectively. - -In order to fix this, a rewrite of bus_list_names() is necessary. We used -to walk the current list of names on the bus, and blindly triggered the -bus_name_owner_change() callback on each service, providing the actual name -as current owner. This implementation has a number of problems: - -* We cannot detect if the the name was moved from one owner to the other - while we were reloading - -* We don't notify services which missed the name loss signal - -* Providing the actual name as current owner is a hack, as the comment also - admits. - -To fix this, this patch carries the following changes: - -* Track the name of the current bus name owner, and (de-)serialize it - during reload. This way, we can detect changes. - -* In bus_list_names(), walk the list of bus names we're interested in - first, and then see if the name is active on the bus. If it is, - check it it's still the same as it used to be, and synthesize - NameOwnerChanged signals for the name add and/or loss. - -This should fully synchronize the current name list with the internal -state of all services. ---- - src/core/dbus.c | 64 +++++++++++++++++++++++++++++++++++++++++++++--------- - src/core/service.c | 14 ++++++++++++ - src/core/service.h | 1 + - 3 files changed, 69 insertions(+), 10 deletions(-) - -diff --git a/src/core/dbus.c b/src/core/dbus.c -index e7ee216..58069f5 100644 ---- a/src/core/dbus.c -+++ b/src/core/dbus.c -@@ -736,7 +736,9 @@ static int bus_on_connection(sd_event_source *s, int fd, uint32_t revents, void - - static int bus_list_names(Manager *m, sd_bus *bus) { - _cleanup_strv_free_ char **names = NULL; -- char **i; -+ const char *name; -+ Iterator i; -+ Unit *u; - int r; - - assert(m); -@@ -746,15 +748,55 @@ static int bus_list_names(Manager *m, sd_bus *bus) { - if (r < 0) - return log_error_errno(r, "Failed to get initial list of names: %m"); - -- /* This is a bit hacky, we say the owner of the name is the -- * name itself, because we don't want the extra traffic to -- * figure out the real owner. */ -- STRV_FOREACH(i, names) { -- Unit *u; -+ /* We have to synchronize the current bus names with the -+ * list of active services. To do this, walk the list of -+ * all units with bus names. */ -+ HASHMAP_FOREACH_KEY(u, name, m->watch_bus, i) { -+ Service *s = SERVICE(u); -+ -+ assert(s); - -- u = hashmap_get(m->watch_bus, *i); -- if (u) -- UNIT_VTABLE(u)->bus_name_owner_change(u, *i, NULL, *i); -+ if (!streq_ptr(s->bus_name, name)) { -+ log_unit_warning(u, "Bus name has changed from %s → %s, ignoring.", s->bus_name, name); -+ continue; -+ } -+ -+ /* Check if a service's bus name is in the list of currently -+ * active names */ -+ if (strv_contains(names, name)) { -+ _cleanup_(sd_bus_creds_unrefp) sd_bus_creds *creds = NULL; -+ const char *unique; -+ -+ /* If it is, determine its current owner */ -+ r = sd_bus_get_name_creds(bus, name, SD_BUS_CREDS_UNIQUE_NAME, &creds); -+ if (r < 0) { -+ log_error_errno(r, "Failed to get bus name owner %s: %m", name); -+ continue; -+ } -+ -+ r = sd_bus_creds_get_unique_name(creds, &unique); -+ if (r < 0) { -+ log_error_errno(r, "Failed to get unique name for %s: %m", name); -+ continue; -+ } -+ -+ /* Now, let's compare that to the previous bus owner, and -+ * if it's still the same, all is fine, so just don't -+ * bother the service. Otherwise, the name has apparently -+ * changed, so synthesize a name owner changed signal. */ -+ -+ if (!streq_ptr(unique, s->bus_name_owner)) -+ UNIT_VTABLE(u)->bus_name_owner_change(u, name, s->bus_name_owner, unique); -+ } else { -+ /* So, the name we're watching is not on the bus. -+ * This either means it simply hasn't appeared yet, -+ * or it was lost during the daemon reload. -+ * Check if the service has a stored name owner, -+ * and synthesize a name loss signal in this case. */ -+ -+ if (s->bus_name_owner) -+ UNIT_VTABLE(u)->bus_name_owner_change(u, name, s->bus_name_owner, NULL); -+ } - } - - return 0; -@@ -808,7 +850,9 @@ static int bus_setup_api(Manager *m, sd_bus *bus) { - if (r < 0) - return log_error_errno(r, "Failed to register name: %m"); - -- bus_list_names(m, bus); -+ r = bus_list_names(m, bus); -+ if (r < 0) -+ return r; - - log_debug("Successfully connected to API bus."); - return 0; -diff --git a/src/core/service.c b/src/core/service.c -index 41a729c..c5b689a 100644 ---- a/src/core/service.c -+++ b/src/core/service.c -@@ -323,6 +323,8 @@ static void service_done(Unit *u) { - s->bus_name = mfree(s->bus_name); - } - -+ s->bus_name_owner = mfree(s->bus_name_owner); -+ - s->bus_endpoint_fd = safe_close(s->bus_endpoint_fd); - service_close_socket_fd(s); - service_connection_unref(s); -@@ -2122,6 +2124,7 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) { - - unit_serialize_item(u, f, "main-pid-known", yes_no(s->main_pid_known)); - unit_serialize_item(u, f, "bus-name-good", yes_no(s->bus_name_good)); -+ unit_serialize_item(u, f, "bus-name-owner", s->bus_name_owner); - - r = unit_serialize_item_escaped(u, f, "status-text", s->status_text); - if (r < 0) -@@ -2249,6 +2252,10 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, - log_unit_debug(u, "Failed to parse bus-name-good value: %s", value); - else - s->bus_name_good = b; -+ } else if (streq(key, "bus-name-owner")) { -+ r = free_and_strdup(&s->bus_name_owner, value); -+ if (r < 0) -+ log_unit_error_errno(u, r, "Unable to deserialize current bus owner %s: %m", value); - } else if (streq(key, "status-text")) { - char *t; - -@@ -3134,6 +3141,13 @@ static void service_bus_name_owner_change( - - s->bus_name_good = !!new_owner; - -+ /* Track the current owner, so we can reconstruct changes after a daemon reload */ -+ r = free_and_strdup(&s->bus_name_owner, new_owner); -+ if (r < 0) { -+ log_unit_error_errno(u, r, "Unable to set new bus name owner %s: %m", new_owner); -+ return; -+ } -+ - if (s->type == SERVICE_DBUS) { - - /* service_enter_running() will figure out what to -diff --git a/src/core/service.h b/src/core/service.h -index d0faad8..19efbcc 100644 ---- a/src/core/service.h -+++ b/src/core/service.h -@@ -172,6 +172,7 @@ struct Service { - bool reset_cpu_usage:1; - - char *bus_name; -+ char *bus_name_owner; /* unique name of the current owner */ - - char *status_text; - int status_errno; --- -2.6.2 - diff --git a/0001-core-re-sync-bus-name-list-after-deserializing-durin.patch b/0001-core-re-sync-bus-name-list-after-deserializing-durin.patch deleted file mode 100644 index 11b6a99..0000000 --- a/0001-core-re-sync-bus-name-list-after-deserializing-durin.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 8936a5e34dbfa9274348f3fef99f7c9f9327ddf9 Mon Sep 17 00:00:00 2001 [> v228] -From: Daniel Mack -Date: Tue, 22 Dec 2015 11:37:09 +0100 -Subject: [PATCH] core: re-sync bus name list after deserializing during - daemon-reload - -When the daemon reloads, it doesn not actually give up its DBus connection, -as wrongly stated in an earlier commit. However, even though the bus -connection stays open, the daemon flushes out all its internal state. - -Hence, if there is a NameOwnerChanged signal after the flush and before the -deserialization, it cannot be matched against any pending unit. - -To fix this, rename bus_list_names() to manager_sync_bus_names() and call -it explicitly at the end of the daemon reload operation. ---- - src/core/dbus.c | 4 ++-- - src/core/dbus.h | 2 ++ - src/core/manager.c | 4 ++++ - 3 files changed, 8 insertions(+), 2 deletions(-) - -diff --git a/src/core/dbus.c b/src/core/dbus.c -index 58069f5..1d89b9e 100644 ---- a/src/core/dbus.c -+++ b/src/core/dbus.c -@@ -734,7 +734,7 @@ static int bus_on_connection(sd_event_source *s, int fd, uint32_t revents, void - return 0; - } - --static int bus_list_names(Manager *m, sd_bus *bus) { -+int manager_sync_bus_names(Manager *m, sd_bus *bus) { - _cleanup_strv_free_ char **names = NULL; - const char *name; - Iterator i; -@@ -850,7 +850,7 @@ static int bus_setup_api(Manager *m, sd_bus *bus) { - if (r < 0) - return log_error_errno(r, "Failed to register name: %m"); - -- r = bus_list_names(m, bus); -+ r = manager_sync_bus_names(m, bus); - if (r < 0) - return r; - -diff --git a/src/core/dbus.h b/src/core/dbus.h -index 4f06ad1..ff76166 100644 ---- a/src/core/dbus.h -+++ b/src/core/dbus.h -@@ -34,6 +34,8 @@ void bus_track_serialize(sd_bus_track *t, FILE *f); - int bus_track_deserialize_item(char ***l, const char *line); - int bus_track_coldplug(Manager *m, sd_bus_track **t, char ***l); - -+int manager_sync_bus_names(Manager *m, sd_bus *bus); -+ - int bus_foreach_bus(Manager *m, sd_bus_track *subscribed2, int (*send_message)(sd_bus *bus, void *userdata), void *userdata); - - int bus_verify_manage_units_async(Manager *m, sd_bus_message *call, sd_bus_error *error); -diff --git a/src/core/manager.c b/src/core/manager.c -index e65616a..ffe27be 100644 ---- a/src/core/manager.c -+++ b/src/core/manager.c -@@ -2574,6 +2574,10 @@ int manager_reload(Manager *m) { - /* Third, fire things up! */ - manager_coldplug(m); - -+ /* Sync current state of bus names with our set of listening units */ -+ if (m->api_bus) -+ manager_sync_bus_names(m, m->api_bus); -+ - assert(m->n_reloading > 0); - m->n_reloading--; - --- -2.6.2 - diff --git a/handle-numlock-value-in-etc-sysconfig-keyboard.patch b/handle-numlock-value-in-etc-sysconfig-keyboard.patch index e3d7c31..18fd4f6 100644 --- a/handle-numlock-value-in-etc-sysconfig-keyboard.patch +++ b/handle-numlock-value-in-etc-sysconfig-keyboard.patch @@ -134,7 +134,7 @@ Index: systemd-228/src/vconsole/vconsole-setup.c "COMPOSETABLE", &vc_compose_table, NULL); if (r < 0 && r != -ENOENT) -@@ -421,6 +428,35 @@ int main(int argc, char **argv) { +@@ -421,6 +428,32 @@ int main(int argc, char **argv) { disable_capslock = vc_kbd_disable_caps_lock && strcasecmp(vc_kbd_disable_caps_lock, "YES") == 0; @@ -146,31 +146,28 @@ Index: systemd-228/src/vconsole/vconsole-setup.c + + fdmem = open ("/dev/mem", O_RDONLY); + if (fdmem < 0) { -+ log_warning_errno(errno, "Failed to open /dev/mem: %m"); -+ goto finish; ++ log_error("Failed to open /dev/mem: %m"); ++ return EXIT_FAILURE; + } + + if (lseek(fdmem, BIOS_DATA_AREA + BDA_KEYBOARD_STATUS_FLAGS_4, SEEK_SET) == (off_t) -1) { -+ log_warning_errno(errno, "Failed to seek /dev/mem: %m"); -+ goto finish; ++ log_error("Failed to seek /dev/mem: %m"); ++ return EXIT_FAILURE; + } + + if (read(fdmem, &c, sizeof(char)) == -1) { -+ log_warning_errno(errno, "Failed to read /dev/mem: %m"); -+ goto finish; ++ log_error("Failed to read /dev/mem: %m"); ++ return EXIT_FAILURE; + } + + if (c & BDA_KSF4_NUMLOCK_MASK) + numlock = true; -+ finish: -+ if (fdmem >= 0) -+ close(fdmem); + } +#endif /* x86 */ #endif /* HAVE_SYSV_COMPAT */ r = parse_env_file("/etc/vconsole.conf", NEWLINE, -@@ -456,6 +492,10 @@ int main(int argc, char **argv) { +@@ -456,6 +489,10 @@ int main(int argc, char **argv) { font_ok = font_load_and_wait(vc, vc_font, vc_font_map, vc_font_unimap) > 0; keyboard_ok = keyboard_load_and_wait(vc, vc_keymap, vc_keymap_toggle, utf8, disable_capslock) > 0; diff --git a/let-vconsole-setup-get-properties-only-once-to-copy-them.patch b/let-vconsole-setup-get-properties-only-once-to-copy-them.patch index 22c45e4..b106fc2 100644 --- a/let-vconsole-setup-get-properties-only-once-to-copy-them.patch +++ b/let-vconsole-setup-get-properties-only-once-to-copy-them.patch @@ -9,8 +9,8 @@ for the virtual consoles (boo#904214) src/vconsole/vconsole-setup.c | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) ---- a/src/vconsole/vconsole-setup.c -+++ b/src/vconsole/vconsole-setup.c 2015-09-23 12:34:33.854018750 +0000 +--- src/vconsole/vconsole-setup.c ++++ src/vconsole/vconsole-setup.c 2015-09-23 12:34:33.854018750 +0000 @@ -202,8 +202,13 @@ static void font_copy_to_all_vcs(int fd) unsigned short map16[E_TABSZ]; struct unimapdesc unimapd; diff --git a/systemd-228-nspawn-make-journal-linking-non-fatal-in-try-and-auto.diff b/systemd-228-nspawn-make-journal-linking-non-fatal-in-try-and-auto.diff deleted file mode 100644 index 17a09a8..0000000 --- a/systemd-228-nspawn-make-journal-linking-non-fatal-in-try-and-auto.diff +++ /dev/null @@ -1,116 +0,0 @@ -From 84d816c48b57b43e833e2917bbd278c116816fcf Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Thu, 28 Jan 2016 20:15:49 +0100 -Subject: [PATCH] nspawn: make journal linking non-fatal in try and auto modes - -Fixes #2091 ---- - src/nspawn/nspawn.c | 39 ++++++++++++++++++++------------------- - 1 file changed, 20 insertions(+), 19 deletions(-) - -diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index f6a2c03..97ea51a 100644 ---- a/src/nspawn/nspawn.c -+++ b/src/nspawn/nspawn.c -@@ -1338,6 +1338,7 @@ static int setup_journal(const char *directory) { - sd_id128_t machine_id, this_id; - _cleanup_free_ char *b = NULL, *d = NULL; - const char *etc_machine_id, *p, *q; -+ bool try; - char *id; - int r; - -@@ -1345,16 +1346,21 @@ static int setup_journal(const char *directory) { - if (arg_ephemeral) - return 0; - -+ if (arg_link_journal == LINK_NO) -+ return 0; -+ -+ try = arg_link_journal_try || arg_link_journal == LINK_AUTO; -+ - etc_machine_id = prefix_roota(directory, "/etc/machine-id"); - - r = read_one_line_file(etc_machine_id, &b); -- if (r == -ENOENT && arg_link_journal == LINK_AUTO) -+ if (r == -ENOENT && try) - return 0; - else if (r < 0) - return log_error_errno(r, "Failed to read machine ID from %s: %m", etc_machine_id); - - id = strstrip(b); -- if (isempty(id) && arg_link_journal == LINK_AUTO) -+ if (isempty(id) && try) - return 0; - - /* Verify validity */ -@@ -1367,16 +1373,13 @@ static int setup_journal(const char *directory) { - return log_error_errno(r, "Failed to retrieve machine ID: %m"); - - if (sd_id128_equal(machine_id, this_id)) { -- log_full(arg_link_journal == LINK_AUTO ? LOG_WARNING : LOG_ERR, -+ log_full(try ? LOG_WARNING : LOG_ERR, - "Host and machine ids are equal (%s): refusing to link journals", id); -- if (arg_link_journal == LINK_AUTO) -+ if (try) - return 0; - return -EEXIST; - } - -- if (arg_link_journal == LINK_NO) -- return 0; -- - r = userns_mkdir(directory, "/var", 0755, 0, 0); - if (r < 0) - return log_error_errno(r, "Failed to create /var: %m"); -@@ -1393,21 +1396,19 @@ static int setup_journal(const char *directory) { - q = prefix_roota(directory, p); - - if (path_is_mount_point(p, 0) > 0) { -- if (arg_link_journal != LINK_AUTO) { -- log_error("%s: already a mount point, refusing to use for journal", p); -- return -EEXIST; -- } -+ if (try) -+ return 0; - -- return 0; -+ log_error("%s: already a mount point, refusing to use for journal", p); -+ return -EEXIST; - } - - if (path_is_mount_point(q, 0) > 0) { -- if (arg_link_journal != LINK_AUTO) { -- log_error("%s: already a mount point, refusing to use for journal", q); -- return -EEXIST; -- } -+ if (try) -+ return 0; - -- return 0; -+ log_error("%s: already a mount point, refusing to use for journal", q); -+ return -EEXIST; - } - - r = readlink_and_make_absolute(p, &d); -@@ -1441,7 +1442,7 @@ static int setup_journal(const char *directory) { - if (arg_link_journal == LINK_GUEST) { - - if (symlink(q, p) < 0) { -- if (arg_link_journal_try) { -+ if (try) { - log_debug_errno(errno, "Failed to symlink %s to %s, skipping journal setup: %m", q, p); - return 0; - } else -@@ -1459,7 +1460,7 @@ static int setup_journal(const char *directory) { - * permanent journal set up, don't force it here */ - r = mkdir(p, 0755); - if (r < 0) { -- if (arg_link_journal_try) { -+ if (try) { - log_debug_errno(errno, "Failed to create %s, skipping journal setup: %m", p); - return 0; - } else --- -2.7.0 - diff --git a/systemd-mini.changes b/systemd-mini.changes index b1a3252..85ab0ea 100644 --- a/systemd-mini.changes +++ b/systemd-mini.changes @@ -1,46 +1,3 @@ -------------------------------------------------------------------- -Sat Mar 26 15:59:36 UTC 2016 - jengelh@inai.de - -- Add two patches which address logind/networkd disappearing from - dbus (and busctl) even while the units and processes continue - running. - 0001-core-fix-bus-name-synchronization-after-daemon-reloa.patch - 0001-core-re-sync-bus-name-list-after-deserializing-durin.patch - -------------------------------------------------------------------- -Mon Mar 14 18:04:10 UTC 2016 - fbui@suse.com - -- drop all compiler/linker option customizations: - - -pipe option is used by default since day 0 - - get rid of cflags() function which is not needed - - --hash-size has no impact specially in runtime - - IOW, use the default options for the compiler and the linker, - there's no point in making systemd different from other package in - this regards. - -------------------------------------------------------------------- -Mon Mar 14 17:26:00 UTC 2016 - fbui@suse.com - -- use %make_build instead of 'make %{?_smp_mflags}' - -------------------------------------------------------------------- -Mon Mar 14 16:36:32 UTC 2016 - fbui@suse.com - -- be more strict on own lib version requirements - -------------------------------------------------------------------- -Mon Mar 14 16:11:49 UTC 2016 - fbui@suse.com - -- systemd should require udev with the exact same version - -------------------------------------------------------------------- -Thu Mar 10 08:01:57 UTC 2016 - werner@suse.de - -- Modify patch handle-numlock-value-in-etc-sysconfig-keyboard.patch - to allow that open, seek, and read of /dev/mem may fail e.g. - on XEN based virtual guests (bsc#961120) - ------------------------------------------------------------------- Tue Mar 1 09:16:08 UTC 2016 - werner@suse.de @@ -49,20 +6,6 @@ Tue Mar 1 09:16:08 UTC 2016 - werner@suse.de this fixes forced logouts on isolate target aka changing runlevel (boo#966535) -------------------------------------------------------------------- -Thu Feb 4 11:05:37 UTC 2016 - lnussel@suse.de - -- require curl and bzip2 to build importd -- curl also causes building of journal-upload. That one has rather - unusal certificate usage, set it's ca root to /etc/pki/systemd - instead of the built-in default /etc/ssl as journal-remote and - journal-upload think they kan put stuff in /etc/ssl/certs then but - that directory is managed by p11-kit and doesn't serve the purpose - those programs think. -- /var/lib/systemd/random-seed is a file -- own /var/lib/machines -- add systemd-228-nspawn-make-journal-linking-non-fatal-in-try-and-auto.diff - ------------------------------------------------------------------- Sat Jan 9 22:46:21 UTC 2016 - afaerber@suse.de diff --git a/systemd-mini.spec b/systemd-mini.spec index f6b0069..0409163 100644 --- a/systemd-mini.spec +++ b/systemd-mini.spec @@ -92,9 +92,6 @@ Conflicts: kiwi BuildRequires: docbook-xsl-stylesheets BuildRequires: libgcrypt-devel BuildRequires: libxslt-tools -# curl and bzip2 are required for building importd -BuildRequires: pkgconfig(bzip2) -BuildRequires: pkgconfig(libcurl) %if %{with python} BuildRequires: python %endif @@ -105,7 +102,7 @@ BuildRequires: pkgconfig(libqrencode) BuildRequires: pkgconfig(usbutils) >= 0.82 # the buildignore is important for bootstrapping #!BuildIgnore: udev -Requires: udev = %{version}-%{release} +Requires: udev >= 172 Recommends: %{name}-bash-completion Requires: dbus-1 >= 1.4.0 Requires: kbd @@ -253,12 +250,6 @@ Patch523: let-vconsole-setup-get-properties-only-once-to-copy-them.patch Patch524: 0001-nss-mymachines-do-not-allow-overlong-machine-names.patch # PATCH-FIX-UPSTREAM (bsc#966535) Patch525: 0001-core-exclude-.slice-units-from-systemctl-isolate.patch -# PATCH-FIX-UPSTREAM -- fixed after 228 -Patch526: systemd-228-nspawn-make-journal-linking-non-fatal-in-try-and-auto.diff -# PATCH-FIX-UPSTREAM -- fixed after 228 -Patch527: 0001-core-fix-bus-name-synchronization-after-daemon-reloa.patch -# PATCH-FIX-UPSTREAM -- fixed after 228 -Patch528: 0001-core-re-sync-bus-name-list-after-deserializing-durin.patch # UDEV PATCHES # ============ @@ -333,7 +324,7 @@ Some systemd commands offer bash completion, but it's an optional dependency. Summary: Development headers for systemd License: LGPL-2.1+ Group: Development/Libraries/C and C++ -Requires: libsystemd0%{?mini} = %{version}-%{release} +Requires: libsystemd0%{?mini} = %version Requires: systemd-rpm-macros %if 0%{?bootstrap} Provides: systemd-devel = %version-%release @@ -347,7 +338,7 @@ Development headers and auxiliary files for developing applications for systemd. Summary: System V init tools License: LGPL-2.1+ Group: System/Base -Requires: %{name} = %{version}-%{release} +Requires: %{name} = %{version} Provides: sbin_init Conflicts: otherproviders(sbin_init) Provides: sysvinit:/sbin/init @@ -597,12 +588,9 @@ cp %{SOURCE7} m4/ %patch520 -p1 %patch521 -p1 %patch522 -p1 -%patch523 -p1 +%patch523 -p0 %patch524 -p1 -%patch525 -p1 -%patch526 -p1 -%patch527 -p1 -%patch528 -p1 +%patch525 -p0 # udev patches %patch1002 -p1 @@ -635,6 +623,38 @@ sed -ri 's:#TTYPath=/dev/console:#TTYPath=/dev/tty10:' src/journal/journald.conf %endif %build +cflags () +{ + local flag=$1; shift + local var=$1; shift + local gold + test -n "${flag}" -a -n "${var}" || return + case "${!var}" in + *${flag}*) return + esac + if type ld.gold > /dev/null 2>&1 ; then + gold=-Wl,-fuse-ld=gold + fi + set -o noclobber + case "$flag" in + -Wl,*) + if echo 'int main () { return 0; }' | \ + ${CC:-gcc} -Werror $gold $flag -o /dev/null -xc - > /dev/null 2>&1 ; then + eval $var=\${$var:+\$$var\ }$flag + fi + rm -f ldtest.c + ;; + *) + if ${CC:-gcc} -Werror $gold $flag -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then + eval $var=\${$var:+\$$var\ }$flag + fi + if ${CXX:-g++} -Werror $gold $flag -S -o /dev/null -xc++ /dev/null > /dev/null 2>&1 ; then + eval $var=\${$var:+\$$var\ }$flag + fi + esac + set +o noclobber +} + # # Be sure that fresh build libudev is linked as otherwise no errors are found # @@ -646,19 +666,17 @@ systemd_cryptsetup_LDFLAGS = \\\ }' Makefile.am sh autogen.sh +export V=e export CFLAGS="%{optflags}" +export LDFLAGS %if 0%{?suse_version} == 1315 CFLAGS="$CFLAGS -DNET_IFNAMES=1" %else CFLAGS="$CFLAGS -DNET_IFNAMES=0" %endif - -# certificate-root is set to /etc/pki/systemd instead of the -# built-in default /etc/ssl as journal-remote and journal-upload -# think they kan put stuff in /etc/ssl/certs then but that -# directory is managed by p11-kit and doesn't serve the purpose -# those programs think -# +cflags -pipe CFLAGS +cflags -Wl,-O2 LDFLAGS +cflags -Wl,--hash-size=8599 LDFLAGS # keep split-usr until all packages have moved their systemd rules to /usr %configure \ --with-ntp-servers="0.opensuse.pool.ntp.org 1.opensuse.pool.ntp.org 2.opensuse.pool.ntp.org 3.opensuse.pool.ntp.org" \ @@ -668,12 +686,10 @@ export CFLAGS="%{optflags}" --with-dbussessionservicedir=%{_datadir}/dbus-1/services \ --with-dbussystemservicedir=%{_datadir}/dbus-1/system-services \ --with-dbusinterfacedir=%{_datadir}/dbus-1/interfaces \ - --with-certificate-root=/etc/pki/systemd \ %if 0%{?bootstrap} --disable-myhostname \ --disable-manpages \ --disable-machined \ - --disable-importd \ %else --enable-manpages \ %if %{with python} @@ -700,10 +716,9 @@ export CFLAGS="%{optflags}" --disable-resolved \ %endif --disable-kdbus - -%make_build V=e +make %{?_smp_mflags} %if ! 0%{?bootstrap} -%make_build V=e update-man-list man +make %{?_smp_mflags} update-man-list man %endif %install @@ -832,10 +847,7 @@ install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/ ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/ mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/backlight -> %{buildroot}%{_localstatedir}/lib/systemd/random-seed - -# machined -mkdir -p %{buildroot}%{_localstatedir}/lib/machines +mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/random-seed %fdupes -s %{buildroot}%{_mandir} @@ -1297,7 +1309,6 @@ exit 0 %config(noreplace) %{_sysconfdir}/systemd/coredump.conf %if !0%{?bootstrap} %config(noreplace) %{_sysconfdir}/systemd/journal-remote.conf -%config(noreplace) %{_sysconfdir}/systemd/journal-upload.conf %endif %config(noreplace) %{_sysconfdir}/systemd/timesyncd.conf %config(noreplace) %{_sysconfdir}/systemd/system.conf @@ -1404,7 +1415,6 @@ exit 0 %{_datadir}/zsh/site-functions/* %ghost %{_localstatedir}/lib/systemd/backlight %ghost %{_localstatedir}/lib/systemd/random-seed -%dir %{_localstatedir}/lib/machines %if %{with resolved} %{_sysconfdir}/dbus-1/system.d/org.freedesktop.resolve1.conf %{_sysconfdir}/systemd/resolved.conf @@ -1412,13 +1422,6 @@ exit 0 %{_datadir}/dbus-1/system-services/org.freedesktop.resolve1.service %{_prefix}/lib/systemd/system/org.freedesktop.resolve1.busname %endif -%if ! 0%{?bootstrap} -%{_sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf -%{_prefix}/lib/systemd/import-pubring.gpg -%{_prefix}/lib/systemd/system/org.freedesktop.import1.busname -%{_datadir}/dbus-1/system-services/org.freedesktop.import1.service -%{_datadir}/polkit-1/actions/org.freedesktop.import1.policy -%endif %if ! 0%{?bootstrap} %files bash-completion -f files.completion diff --git a/systemd.changes b/systemd.changes index b1a3252..85ab0ea 100644 --- a/systemd.changes +++ b/systemd.changes @@ -1,46 +1,3 @@ -------------------------------------------------------------------- -Sat Mar 26 15:59:36 UTC 2016 - jengelh@inai.de - -- Add two patches which address logind/networkd disappearing from - dbus (and busctl) even while the units and processes continue - running. - 0001-core-fix-bus-name-synchronization-after-daemon-reloa.patch - 0001-core-re-sync-bus-name-list-after-deserializing-durin.patch - -------------------------------------------------------------------- -Mon Mar 14 18:04:10 UTC 2016 - fbui@suse.com - -- drop all compiler/linker option customizations: - - -pipe option is used by default since day 0 - - get rid of cflags() function which is not needed - - --hash-size has no impact specially in runtime - - IOW, use the default options for the compiler and the linker, - there's no point in making systemd different from other package in - this regards. - -------------------------------------------------------------------- -Mon Mar 14 17:26:00 UTC 2016 - fbui@suse.com - -- use %make_build instead of 'make %{?_smp_mflags}' - -------------------------------------------------------------------- -Mon Mar 14 16:36:32 UTC 2016 - fbui@suse.com - -- be more strict on own lib version requirements - -------------------------------------------------------------------- -Mon Mar 14 16:11:49 UTC 2016 - fbui@suse.com - -- systemd should require udev with the exact same version - -------------------------------------------------------------------- -Thu Mar 10 08:01:57 UTC 2016 - werner@suse.de - -- Modify patch handle-numlock-value-in-etc-sysconfig-keyboard.patch - to allow that open, seek, and read of /dev/mem may fail e.g. - on XEN based virtual guests (bsc#961120) - ------------------------------------------------------------------- Tue Mar 1 09:16:08 UTC 2016 - werner@suse.de @@ -49,20 +6,6 @@ Tue Mar 1 09:16:08 UTC 2016 - werner@suse.de this fixes forced logouts on isolate target aka changing runlevel (boo#966535) -------------------------------------------------------------------- -Thu Feb 4 11:05:37 UTC 2016 - lnussel@suse.de - -- require curl and bzip2 to build importd -- curl also causes building of journal-upload. That one has rather - unusal certificate usage, set it's ca root to /etc/pki/systemd - instead of the built-in default /etc/ssl as journal-remote and - journal-upload think they kan put stuff in /etc/ssl/certs then but - that directory is managed by p11-kit and doesn't serve the purpose - those programs think. -- /var/lib/systemd/random-seed is a file -- own /var/lib/machines -- add systemd-228-nspawn-make-journal-linking-non-fatal-in-try-and-auto.diff - ------------------------------------------------------------------- Sat Jan 9 22:46:21 UTC 2016 - afaerber@suse.de diff --git a/systemd.spec b/systemd.spec index c2162ef..37cb1be 100644 --- a/systemd.spec +++ b/systemd.spec @@ -87,9 +87,6 @@ Conflicts: kiwi BuildRequires: docbook-xsl-stylesheets BuildRequires: libgcrypt-devel BuildRequires: libxslt-tools -# curl and bzip2 are required for building importd -BuildRequires: pkgconfig(bzip2) -BuildRequires: pkgconfig(libcurl) %if %{with python} BuildRequires: python %endif @@ -100,7 +97,7 @@ BuildRequires: pkgconfig(libqrencode) BuildRequires: pkgconfig(usbutils) >= 0.82 # the buildignore is important for bootstrapping #!BuildIgnore: udev -Requires: udev = %{version}-%{release} +Requires: udev >= 172 Recommends: %{name}-bash-completion Requires: dbus-1 >= 1.4.0 Requires: kbd @@ -248,12 +245,6 @@ Patch523: let-vconsole-setup-get-properties-only-once-to-copy-them.patch Patch524: 0001-nss-mymachines-do-not-allow-overlong-machine-names.patch # PATCH-FIX-UPSTREAM (bsc#966535) Patch525: 0001-core-exclude-.slice-units-from-systemctl-isolate.patch -# PATCH-FIX-UPSTREAM -- fixed after 228 -Patch526: systemd-228-nspawn-make-journal-linking-non-fatal-in-try-and-auto.diff -# PATCH-FIX-UPSTREAM -- fixed after 228 -Patch527: 0001-core-fix-bus-name-synchronization-after-daemon-reloa.patch -# PATCH-FIX-UPSTREAM -- fixed after 228 -Patch528: 0001-core-re-sync-bus-name-list-after-deserializing-durin.patch # UDEV PATCHES # ============ @@ -328,7 +319,7 @@ Some systemd commands offer bash completion, but it's an optional dependency. Summary: Development headers for systemd License: LGPL-2.1+ Group: Development/Libraries/C and C++ -Requires: libsystemd0%{?mini} = %{version}-%{release} +Requires: libsystemd0%{?mini} = %version Requires: systemd-rpm-macros %if 0%{?bootstrap} Provides: systemd-devel = %version-%release @@ -342,7 +333,7 @@ Development headers and auxiliary files for developing applications for systemd. Summary: System V init tools License: LGPL-2.1+ Group: System/Base -Requires: %{name} = %{version}-%{release} +Requires: %{name} = %{version} Provides: sbin_init Conflicts: otherproviders(sbin_init) Provides: sysvinit:/sbin/init @@ -592,12 +583,9 @@ cp %{SOURCE7} m4/ %patch520 -p1 %patch521 -p1 %patch522 -p1 -%patch523 -p1 +%patch523 -p0 %patch524 -p1 -%patch525 -p1 -%patch526 -p1 -%patch527 -p1 -%patch528 -p1 +%patch525 -p0 # udev patches %patch1002 -p1 @@ -630,6 +618,38 @@ sed -ri 's:#TTYPath=/dev/console:#TTYPath=/dev/tty10:' src/journal/journald.conf %endif %build +cflags () +{ + local flag=$1; shift + local var=$1; shift + local gold + test -n "${flag}" -a -n "${var}" || return + case "${!var}" in + *${flag}*) return + esac + if type ld.gold > /dev/null 2>&1 ; then + gold=-Wl,-fuse-ld=gold + fi + set -o noclobber + case "$flag" in + -Wl,*) + if echo 'int main () { return 0; }' | \ + ${CC:-gcc} -Werror $gold $flag -o /dev/null -xc - > /dev/null 2>&1 ; then + eval $var=\${$var:+\$$var\ }$flag + fi + rm -f ldtest.c + ;; + *) + if ${CC:-gcc} -Werror $gold $flag -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then + eval $var=\${$var:+\$$var\ }$flag + fi + if ${CXX:-g++} -Werror $gold $flag -S -o /dev/null -xc++ /dev/null > /dev/null 2>&1 ; then + eval $var=\${$var:+\$$var\ }$flag + fi + esac + set +o noclobber +} + # # Be sure that fresh build libudev is linked as otherwise no errors are found # @@ -641,19 +661,17 @@ systemd_cryptsetup_LDFLAGS = \\\ }' Makefile.am sh autogen.sh +export V=e export CFLAGS="%{optflags}" +export LDFLAGS %if 0%{?suse_version} == 1315 CFLAGS="$CFLAGS -DNET_IFNAMES=1" %else CFLAGS="$CFLAGS -DNET_IFNAMES=0" %endif - -# certificate-root is set to /etc/pki/systemd instead of the -# built-in default /etc/ssl as journal-remote and journal-upload -# think they kan put stuff in /etc/ssl/certs then but that -# directory is managed by p11-kit and doesn't serve the purpose -# those programs think -# +cflags -pipe CFLAGS +cflags -Wl,-O2 LDFLAGS +cflags -Wl,--hash-size=8599 LDFLAGS # keep split-usr until all packages have moved their systemd rules to /usr %configure \ --with-ntp-servers="0.opensuse.pool.ntp.org 1.opensuse.pool.ntp.org 2.opensuse.pool.ntp.org 3.opensuse.pool.ntp.org" \ @@ -663,12 +681,10 @@ export CFLAGS="%{optflags}" --with-dbussessionservicedir=%{_datadir}/dbus-1/services \ --with-dbussystemservicedir=%{_datadir}/dbus-1/system-services \ --with-dbusinterfacedir=%{_datadir}/dbus-1/interfaces \ - --with-certificate-root=/etc/pki/systemd \ %if 0%{?bootstrap} --disable-myhostname \ --disable-manpages \ --disable-machined \ - --disable-importd \ %else --enable-manpages \ %if %{with python} @@ -695,10 +711,9 @@ export CFLAGS="%{optflags}" --disable-resolved \ %endif --disable-kdbus - -%make_build V=e +make %{?_smp_mflags} %if ! 0%{?bootstrap} -%make_build V=e update-man-list man +make %{?_smp_mflags} update-man-list man %endif %install @@ -827,10 +842,7 @@ install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/ ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/ mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/backlight -> %{buildroot}%{_localstatedir}/lib/systemd/random-seed - -# machined -mkdir -p %{buildroot}%{_localstatedir}/lib/machines +mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/random-seed %fdupes -s %{buildroot}%{_mandir} @@ -1292,7 +1304,6 @@ exit 0 %config(noreplace) %{_sysconfdir}/systemd/coredump.conf %if !0%{?bootstrap} %config(noreplace) %{_sysconfdir}/systemd/journal-remote.conf -%config(noreplace) %{_sysconfdir}/systemd/journal-upload.conf %endif %config(noreplace) %{_sysconfdir}/systemd/timesyncd.conf %config(noreplace) %{_sysconfdir}/systemd/system.conf @@ -1399,7 +1410,6 @@ exit 0 %{_datadir}/zsh/site-functions/* %ghost %{_localstatedir}/lib/systemd/backlight %ghost %{_localstatedir}/lib/systemd/random-seed -%dir %{_localstatedir}/lib/machines %if %{with resolved} %{_sysconfdir}/dbus-1/system.d/org.freedesktop.resolve1.conf %{_sysconfdir}/systemd/resolved.conf @@ -1407,13 +1417,6 @@ exit 0 %{_datadir}/dbus-1/system-services/org.freedesktop.resolve1.service %{_prefix}/lib/systemd/system/org.freedesktop.resolve1.busname %endif -%if ! 0%{?bootstrap} -%{_sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf -%{_prefix}/lib/systemd/import-pubring.gpg -%{_prefix}/lib/systemd/system/org.freedesktop.import1.busname -%{_datadir}/dbus-1/system-services/org.freedesktop.import1.service -%{_datadir}/polkit-1/actions/org.freedesktop.import1.policy -%endif %if ! 0%{?bootstrap} %files bash-completion -f files.completion