diff --git a/0001-service-Fix-dependencies-added-when-parsing-insserv..patch b/0001-service-Fix-dependencies-added-when-parsing-insserv..patch index 1a1ef4d..6719794 100644 --- a/0001-service-Fix-dependencies-added-when-parsing-insserv..patch +++ b/0001-service-Fix-dependencies-added-when-parsing-insserv..patch @@ -7,23 +7,21 @@ Subject: [PATCH] service: Fix dependencies added when parsing insserv.conf src/service.c | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-) -Index: systemd-40/src/service.c +Index: systemd-41/src/service.c =================================================================== ---- systemd-40.orig/src/service.c -+++ systemd-40/src/service.c -@@ -3162,23 +3162,32 @@ static void sysv_facility_in_insserv_con +--- systemd-41.orig/src/service.c ++++ systemd-41/src/service.c +@@ -3210,23 +3210,30 @@ static void sysv_facility_in_insserv_con Unit *u; if (sysv_translate_facility(parsed[0], NULL, &facility) < 0) continue; + if (streq(facility, SPECIAL_REMOTE_FS_TARGET)) { + /* insert also a Wants dependency from remote-fs-pre on remote-fs */ + u = manager_get_unit(mgr, SPECIAL_REMOTE_FS_TARGET); -+ unit_add_dependency_by_name(u, UNIT_WANTS, -+ SPECIAL_REMOTE_FS_PRE_TARGET, NULL, true); ++ unit_add_dependency_by_name(u, UNIT_WANTS, SPECIAL_REMOTE_FS_PRE_TARGET, NULL, true); + free (facility); + facility=strdup(SPECIAL_REMOTE_FS_PRE_TARGET); + } -+ if ((u = manager_get_unit(mgr, facility)) && (u->type == UNIT_TARGET)) { - UnitDependency e; char *dep = NULL, *name, **j; diff --git a/0001-service-flags-sysv-service-with-detected-pid-as-Rema.patch b/0001-service-flags-sysv-service-with-detected-pid-as-Rema.patch index a71df5c..3f1770f 100644 --- a/0001-service-flags-sysv-service-with-detected-pid-as-Rema.patch +++ b/0001-service-flags-sysv-service-with-detected-pid-as-Rema.patch @@ -12,15 +12,13 @@ Fixes https://bugzilla.novell.com/show_bug.cgi?id=721426 src/service.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) -diff --git a/src/service.c b/src/service.c -index 6b7064a..eb2699c 100644 ---- a/src/service.c -+++ b/src/service.c -@@ -2012,9 +2012,15 @@ static void service_enter_running(Service *s, bool success) { - main_pid_ok = main_pid_good(s); +Index: systemd-37/src/service.c +=================================================================== +--- systemd-37.orig/src/service.c ++++ systemd-37/src/service.c +@@ -2014,8 +2014,13 @@ static void service_enter_running(Servic cgroup_ok = cgroup_good(s); -+ if ((main_pid_ok > 0 || (main_pid_ok < 0 && cgroup_ok != 0)) && - (s->bus_name_good || s->type != SERVICE_DBUS)) + (s->bus_name_good || s->type != SERVICE_DBUS)) { @@ -33,6 +31,3 @@ index 6b7064a..eb2699c 100644 else if (s->remain_after_exit) service_set_state(s, SERVICE_EXITED); else --- -1.7.3.4 - diff --git a/dm-lvm-after-local-fs-pre-target.patch b/dm-lvm-after-local-fs-pre-target.patch new file mode 100644 index 0000000..2e4c046 --- /dev/null +++ b/dm-lvm-after-local-fs-pre-target.patch @@ -0,0 +1,9 @@ +Index: systemd-37/units/local-fs-pre.target +=================================================================== +--- systemd-37.orig/units/local-fs-pre.target ++++ systemd-37/units/local-fs-pre.target +@@ -9,3 +9,4 @@ + + [Unit] + Description=Local File Systems (Pre) ++After=md.service lvm.service dmraid.service diff --git a/modules_on_boot.patch b/modules_on_boot.patch index 9638b27..739c2f9 100644 --- a/modules_on_boot.patch +++ b/modules_on_boot.patch @@ -7,25 +7,26 @@ Subject: [PATCH] module-load: handle SUSE /etc/sysconfig/kernel module list src/modules-load.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 42 insertions(+), 0 deletions(-) -Index: systemd-37/src/modules-load.c +Index: systemd-41/src/modules-load.c =================================================================== ---- systemd-37.orig/src/modules-load.c -+++ systemd-37/src/modules-load.c -@@ -36,6 +36,9 @@ int main(int argc, char *argv[]) { - char **arguments = NULL; - unsigned n_arguments = 0, n_allocated = 0; +--- systemd-41.orig/src/modules-load.c ++++ systemd-41/src/modules-load.c +@@ -44,6 +44,9 @@ static void systemd_kmod_log(void *data, + int main(int argc, char *argv[]) { + int r = EXIT_FAILURE; char **files, **fn; +#if defined(TARGET_SUSE) + char *modules_on_boot = NULL; +#endif + struct kmod_ctx *ctx; + const int probe_flags = KMOD_PROBE_APPLY_BLACKLIST|KMOD_PROBE_IGNORE_LOADED; - if (argc > 1) { - log_error("This program takes no argument."); -@@ -126,6 +129,43 @@ int main(int argc, char *argv[]) { +@@ -141,9 +144,58 @@ int main(int argc, char *argv[]) { + + fclose(f); } - - strv_free(files); +#if defined(TARGET_SUSE) ++ log_debug("apply: /etc/sysconfig/kernel MODULES_LOADED_ON_BOOT"); + if ((r = parse_env_file("/etc/sysconfig/kernel", NEWLINE, + "MODULES_LOADED_ON_BOOT", &modules_on_boot, + NULL)) < 0) { @@ -36,49 +37,53 @@ Index: systemd-37/src/modules-load.c + if (modules_on_boot) { + char **modules = strv_split(modules_on_boot,WHITESPACE); + char **module; ++ struct kmod_list *itr, *modlist = NULL; ++ int err; ++ + if (modules) { + STRV_FOREACH(module, modules) { -+ if (n_arguments >= n_allocated) { -+ char **a; -+ unsigned m; ++ err = kmod_module_new_from_lookup(ctx, *module, &modlist); ++ if (err < 0) { ++ log_error("Failed to lookup alias '%s'", *module); ++ r = EXIT_FAILURE; ++ continue; ++ } ++ kmod_list_foreach(itr, modlist) { ++ struct kmod_module *mod = kmod_module_get_module(itr); ++ err = kmod_module_probe_insert_module(mod, probe_flags, ++ NULL, NULL, NULL, NULL); + -+ m = MAX(16U, n_arguments*2); -+ -+ if (!(a = realloc(arguments, sizeof(char*) * (m+1)))) { -+ log_error("Failed to increase module array size."); -+ free(*module); ++ if (err == 0) ++ log_info("Inserted module '%s'", kmod_module_get_name(mod)); ++ else if (err == KMOD_PROBE_APPLY_BLACKLIST) ++ log_info("Module '%s' is blacklisted", kmod_module_get_name(mod)); ++ else { ++ log_error("Failed to insert '%s': %s", kmod_module_get_name(mod), ++ strerror(-err)); + r = EXIT_FAILURE; -+ continue; + } + -+ arguments = a; -+ n_allocated = m; ++ kmod_module_unref(mod); + } -+ log_debug("adding module: %s\n", *module); -+ arguments[n_arguments++] = strdup(*module); + ++ kmod_module_unref_list(modlist); + } + } + strv_free(modules); + } +#endif -+ finish: - - if (n_arguments > 3) { -@@ -138,6 +178,9 @@ finish: - } - - strv_free(arguments); + strv_free(files); +#if defined(TARGET_SUSE) + free(modules_on_boot); +#endif + kmod_unref(ctx); return r; - } -Index: systemd-37/units/systemd-modules-load.service.in +Index: systemd-41/units/systemd-modules-load.service.in =================================================================== ---- systemd-37.orig/units/systemd-modules-load.service.in -+++ systemd-37/units/systemd-modules-load.service.in +--- systemd-41.orig/units/systemd-modules-load.service.in ++++ systemd-41/units/systemd-modules-load.service.in @@ -11,6 +11,7 @@ DefaultDependencies=no Conflicts=shutdown.target After=systemd-readahead-collect.service systemd-readahead-replay.service diff --git a/new-lsb-headers.patch b/new-lsb-headers.patch index 7565c00..fbf46ed 100644 --- a/new-lsb-headers.patch +++ b/new-lsb-headers.patch @@ -1,8 +1,8 @@ -Index: systemd-37/src/service.c +Index: systemd-41/src/service.c =================================================================== ---- systemd-37.orig/src/service.c -+++ systemd-37/src/service.c -@@ -116,6 +116,7 @@ static void service_init(Unit *u) { +--- systemd-41.orig/src/service.c ++++ systemd-41/src/service.c +@@ -119,6 +119,7 @@ static void service_init(Unit *u) { #ifdef HAVE_SYSV_COMPAT s->sysv_start_priority = -1; s->sysv_start_priority_from_rcnd = -1; @@ -10,7 +10,7 @@ Index: systemd-37/src/service.c #endif s->socket_fd = -1; s->guess_main_pid = true; -@@ -805,6 +806,31 @@ static int service_load_sysv_path(Servic +@@ -861,6 +862,34 @@ static int service_load_sysv_path(Servic } else state = LSB; @@ -33,16 +33,29 @@ Index: systemd-37/src/service.c + free(s->pid_file); + s->pid_file = fn; + s->sysv_remain_after_exit_heuristic = false; ++ s->remain_after_exit = false; + } else if (startswith_no_case(t, "X-Systemd-RemainAfterExit:")) { + char *j; + + state = LSB; -+ if ((j = strstrip(t+26)) && *j) -+ s->sysv_remain_after_exit_heuristic = !parse_boolean(j); ++ if ((j = strstrip(t+26)) && *j) { ++ s->remain_after_exit = parse_boolean(j); ++ s->sysv_remain_after_exit_heuristic = false; ++ } } } } -@@ -2017,7 +2043,7 @@ static void service_enter_running(Servic +@@ -891,7 +920,8 @@ static int service_load_sysv_path(Servic + + /* Special setting for all SysV services */ + s->type = SERVICE_FORKING; +- s->remain_after_exit = !s->pid_file; ++ if (s->sysv_remain_after_exit_heuristic) ++ s->remain_after_exit = !s->pid_file; + s->guess_main_pid = false; + s->restart = SERVICE_RESTART_NO; + s->exec_context.ignore_sigpipe = false; +@@ -2030,7 +2060,7 @@ static void service_enter_running(Servic if ((main_pid_ok > 0 || (main_pid_ok < 0 && cgroup_ok != 0)) && (s->bus_name_good || s->type != SERVICE_DBUS)) { #ifdef HAVE_SYSV_COMPAT @@ -51,11 +64,11 @@ Index: systemd-37/src/service.c s->remain_after_exit = false; #endif service_set_state(s, SERVICE_RUNNING); -Index: systemd-37/src/service.h +Index: systemd-41/src/service.h =================================================================== ---- systemd-37.orig/src/service.h -+++ systemd-37/src/service.h -@@ -139,6 +139,7 @@ struct Service { +--- systemd-41.orig/src/service.h ++++ systemd-41/src/service.h +@@ -157,6 +157,7 @@ struct Service { #ifdef HAVE_SYSV_COMPAT bool sysv_has_lsb:1; bool sysv_enabled:1; diff --git a/remote-fs-after-network.patch b/remote-fs-after-network.patch deleted file mode 100644 index e3cbb52..0000000 --- a/remote-fs-after-network.patch +++ /dev/null @@ -1,74 +0,0 @@ -From db1355b1c181a4b1ac277064918d7c794dfb6edd Mon Sep 17 00:00:00 2001 -From: Michal Schmidt -Date: Tue, 7 Feb 2012 11:05:18 +0100 -Subject: [PATCH] mount: adjust dependencies for remote filesystems - -Currently remote mounts automatically get: - After=remote-fs-pre.target network.target - -remote-fs-pre.target is already After=network.target. Just make sure -remote-fs-pre.target is pulled in by remote-fs.target if any remote -filesystems are configured. -For the mount units it is then sufficient to get: - After=remote-fs-pre.target - -Later NetworkManager will hook its NM-wait-online.service into -remote-fs-pre.target.wants in order to remove the need for the administrator -to enable the service manually when he has any remote filesystems. - -https://bugzilla.redhat.com/show_bug.cgi?id=787314 ---- - src/mount.c | 20 ++++++++++++-------- - 1 files changed, 12 insertions(+), 8 deletions(-) - -diff --git a/src/mount.c b/src/mount.c -index 3411b73..0ae964b 100644 ---- a/src/mount.c -+++ b/src/mount.c -@@ -320,7 +320,7 @@ static bool needs_quota(MountParameters *p) { - } - - static int mount_add_fstab_links(Mount *m) { -- const char *target, *after = NULL, *after2 = NULL; -+ const char *target, *after, *tu_wants = NULL; - MountParameters *p; - Unit *tu; - int r; -@@ -350,23 +350,27 @@ static int mount_add_fstab_links(Mount *m) { - - if (mount_is_network(p)) { - target = SPECIAL_REMOTE_FS_TARGET; -- after = SPECIAL_REMOTE_FS_PRE_TARGET; -- after2 = SPECIAL_NETWORK_TARGET; -+ after = tu_wants = SPECIAL_REMOTE_FS_PRE_TARGET; - } else { - target = SPECIAL_LOCAL_FS_TARGET; - after = SPECIAL_LOCAL_FS_PRE_TARGET; - } - -- if ((r = manager_load_unit(UNIT(m)->manager, target, NULL, NULL, &tu)) < 0) -+ r = manager_load_unit(UNIT(m)->manager, target, NULL, NULL, &tu); -+ if (r < 0) - return r; - -- if (after) -- if ((r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after, NULL, true)) < 0) -+ if (tu_wants) { -+ r = unit_add_dependency_by_name(tu, UNIT_WANTS, tu_wants, NULL, true); -+ if (r < 0) - return r; -+ } - -- if (after2) -- if ((r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after2, NULL, true)) < 0) -+ if (after) { -+ r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after, NULL, true); -+ if (r < 0) - return r; -+ } - - if (automount) { - Unit *am; --- -1.7.7 - diff --git a/systemd-40.tar.xz b/systemd-40.tar.xz deleted file mode 100644 index 670d6da..0000000 --- a/systemd-40.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5f0c04e45e593c0903698f3ab3eb3e565d68de26a91858c470675a090a05cab5 -size 896004 diff --git a/systemd-42.tar.xz b/systemd-42.tar.xz new file mode 100644 index 0000000..b54e5ff --- /dev/null +++ b/systemd-42.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dc107d488d823eb2203b6f1567096749ea37c1cf9022a6b0507ec07691e0ec2 +size 854808 diff --git a/systemd-gtk.changes b/systemd-gtk.changes index 07d5a06..e1d0ade 100644 --- a/systemd-gtk.changes +++ b/systemd-gtk.changes @@ -1,3 +1,42 @@ +------------------------------------------------------------------- +Mon Feb 13 12:11:17 UTC 2012 - fcrozat@suse.com + +- Update to version 42: + + Various bug fixes + + Watchdog support for supervising services is now usable + + Service start rate limiting is now configurable and can be + turned off per service. + + New CanReboot(), CanPowerOff() bus calls in systemd-logind +- Dropped fix-kmod-build.patch, fix-message-after-chkconfig.patch, + is-enabled-non-existing-service.patch (merged upstream) +- Add libxslt1 / docbook-xsl-stylesheets as BuildRequires for + manpage generation + +------------------------------------------------------------------- +Thu Feb 9 16:19:38 UTC 2012 - fcrozat@suse.com + +- Update to version 41: + + systemd binary is now installed in /lib/systemd (symlink for + /bin/systemd is available now) + + kernel modules are now loaded through libkmod + + Watchdog support is now useful (not complete) + + new kernel command line available to set system wide + environment variable: systemd.setenv + + journald capabilities set is now limited + + SIGPIPE is ignored by default. This can be disabled with + IgnoreSIGPIPE=no in unit files. +- Add fix-kmod-build.patch: fix build with libkmod +- Drop remote-fs-after-network.patch (merged upstream) +- Add dm-lvm-after-local-fs-pre-target.patch: ensure md / lvm + /dmraid is started before mounting partitions, if fsck was + disabled for them (bnc#733283). +- Update lsb-header patch to correctly disable heuristic if + X-Systemd-RemainAfterExit is specified (whatever its value) +- Add fix-message-after-chkconfig.patch: don't complain if only + sysv services are called in systemctl. +- Add is-enabled-non-existing-service.patch: fix error message when + running is-enabled on non-existing service. + ------------------------------------------------------------------- Tue Feb 7 14:43:58 UTC 2012 - fcrozat@suse.com diff --git a/systemd-gtk.spec b/systemd-gtk.spec index 6adbdc1..217ce04 100644 --- a/systemd-gtk.spec +++ b/systemd-gtk.spec @@ -16,10 +16,9 @@ # - Name: systemd-gtk Url: http://www.freedesktop.org/wiki/Software/systemd -Version: 40 +Version: 42 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: audit-devel diff --git a/systemd.changes b/systemd.changes index 07d5a06..e1d0ade 100644 --- a/systemd.changes +++ b/systemd.changes @@ -1,3 +1,42 @@ +------------------------------------------------------------------- +Mon Feb 13 12:11:17 UTC 2012 - fcrozat@suse.com + +- Update to version 42: + + Various bug fixes + + Watchdog support for supervising services is now usable + + Service start rate limiting is now configurable and can be + turned off per service. + + New CanReboot(), CanPowerOff() bus calls in systemd-logind +- Dropped fix-kmod-build.patch, fix-message-after-chkconfig.patch, + is-enabled-non-existing-service.patch (merged upstream) +- Add libxslt1 / docbook-xsl-stylesheets as BuildRequires for + manpage generation + +------------------------------------------------------------------- +Thu Feb 9 16:19:38 UTC 2012 - fcrozat@suse.com + +- Update to version 41: + + systemd binary is now installed in /lib/systemd (symlink for + /bin/systemd is available now) + + kernel modules are now loaded through libkmod + + Watchdog support is now useful (not complete) + + new kernel command line available to set system wide + environment variable: systemd.setenv + + journald capabilities set is now limited + + SIGPIPE is ignored by default. This can be disabled with + IgnoreSIGPIPE=no in unit files. +- Add fix-kmod-build.patch: fix build with libkmod +- Drop remote-fs-after-network.patch (merged upstream) +- Add dm-lvm-after-local-fs-pre-target.patch: ensure md / lvm + /dmraid is started before mounting partitions, if fsck was + disabled for them (bnc#733283). +- Update lsb-header patch to correctly disable heuristic if + X-Systemd-RemainAfterExit is specified (whatever its value) +- Add fix-message-after-chkconfig.patch: don't complain if only + sysv services are called in systemctl. +- Add is-enabled-non-existing-service.patch: fix error message when + running is-enabled on non-existing service. + ------------------------------------------------------------------- Tue Feb 7 14:43:58 UTC 2012 - fcrozat@suse.com diff --git a/systemd.spec b/systemd.spec index 39a8f56..2d84f46 100644 --- a/systemd.spec +++ b/systemd.spec @@ -22,7 +22,7 @@ Name: systemd Url: http://www.freedesktop.org/wiki/Software/systemd -Version: 40 +Version: 42 Release: 0 Summary: A System and Session Manager License: GPL-2.0+ @@ -30,16 +30,19 @@ Group: System/Base BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: audit-devel BuildRequires: dbus-1-devel +BuildRequires: docbook-xsl-stylesheets BuildRequires: fdupes BuildRequires: gperf BuildRequires: intltool BuildRequires: libacl-devel BuildRequires: libcap-devel BuildRequires: libcryptsetup-devel +BuildRequires: libkmod-devel BuildRequires: libselinux-devel BuildRequires: libsepol-devel BuildRequires: libtool BuildRequires: libudev-devel +BuildRequires: libxslt1 BuildRequires: pam-devel BuildRequires: pkg-config BuildRequires: tcpd-devel @@ -84,13 +87,13 @@ Patch24: delay-fsck-cryptsetup-after-md-lvm-dmraid.patch Patch31: lock-opensuse.patch Patch33: crypt-loop-file.patch Patch36: sysctl-modules.patch +Patch38: dm-lvm-after-local-fs-pre-target.patch # Upstream First - Policy: # Never add any patches to this package without the upstream commit id # in the patch. Any patches added here without a very good reason to make # an exception will be silently removed with the next version update. Patch21: no-tmpfs-fsck.patch -Patch37: remote-fs-after-network.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -151,7 +154,7 @@ Plymouth integration for systemd %patch31 -p1 %patch33 -p1 %patch36 -p1 -%patch37 -p1 +%patch38 -p1 %build autoreconf -fiv @@ -164,6 +167,7 @@ export V=1 --docdir=%{_docdir}/systemd \ --with-rootprefix= \ --with-pamlibdir=/%{_lib}/security \ + --enable-split-usr \ --disable-gtk \ CFLAGS="%{optflags}" make %{?_smp_mflags} @@ -189,7 +193,8 @@ ln -s ../bootsplash-startup.service %{buildroot}/lib/systemd/system/basic.target ln -s ../bootsplash-quit.service %{buildroot}/lib/systemd/system/multi-user.target.wants/ ln -s ../bootsplash-shutdown.service %{buildroot}/lib/systemd/system/shutdown.target.wants/ ln -s ../bootsplash-shutdown.service %{buildroot}/lib/systemd/system/reboot.target.wants/ -ln -s ../bin/systemd %{buildroot}/sbin/init +ln -s ../lib/systemd/systemd %{buildroot}/bin/systemd +ln -s ../lib/systemd/systemd %{buildroot}/sbin/init ln -s ../bin/systemctl %{buildroot}/sbin/reboot ln -s ../bin/systemctl %{buildroot}/sbin/halt ln -s ../bin/systemctl %{buildroot}/sbin/shutdown @@ -388,6 +393,7 @@ rm -rf %{buildroot} %dir /lib/systemd /lib/systemd/system /lib/systemd/system-generators +/lib/systemd/systemd %dir /usr/lib/systemd /usr/lib/systemd/user %dir %{_sysconfdir}/systemd