On Thu, 28.05.15 15:10, Martin Pitt (martin.p...@ubuntu.com) wrote: > Hello again, > > Lennart Poettering [2015-05-28 13:31 +0200]: > > Hmm? THis sounds the wrong way round. What currently happens should be > > this: if both are available systemd ignores the sysv script, and only > > considers the native unit. Is that what you are trying to say? > > Err yes, sorry. Adjusted the patch description. > > > And you now want everything to be applied to both the sysv script and > > the native unit? > > Right, so that you keep the sysv init script and unit in sync, instead > of enabling one and disabling the other. > > > What happens if we query the state of things with is-enabled, then? > > Good point, thanks for spotting; fixed. We didn't have that problem in > our original patch as is-enabled didn't work; curiously, with the new > systemd-sysv-install wrapper we can now implement is-enabled trivially > :-) ).
Looks good. Please push. > > Martin > > -- > Martin Pitt | http://www.piware.de > Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org) > From 528c97ef47c59ea65c897eacd04b39a12d2113ae Mon Sep 17 00:00:00 2001 > From: Martin Pitt <martin.p...@ubuntu.com> > Date: Wed, 27 May 2015 14:52:17 +0200 > Subject: [PATCH 2/2] systemctl: Don't skip SysV init.d scripts when > enabling/disabling units > > If there is both a SysV init.d script and a systemd unit for a given name, we > want to do the same enable/disable operation for both, instead of just on the > systemd unit. This keeps the enablement status in sync so that switching init > systems behaves as expected. > --- > src/systemctl/systemctl.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c > index f0ba83d..897248a 100644 > --- a/src/systemctl/systemctl.c > +++ b/src/systemctl/systemctl.c > @@ -5149,7 +5149,10 @@ static int enable_sysv_units(const char *verb, char > **args) { > break; > } > > - if (found_native) > + /* If we have both a native unit and a SysV script, > + * enable/disable them both (below); for is-enabled, prefer > the > + * native unit */ > + if (found_native && streq(verb, "is-enabled")) > continue; > > p = path_join(arg_root, SYSTEM_SYSVINIT_PATH, name); > @@ -5161,7 +5164,10 @@ static int enable_sysv_units(const char *verb, char > **args) { > if (!found_sysv) > continue; > > - log_info("%s is not a native service, redirecting to > systemd-sysv-install", name); > + if (found_native) > + log_info("Synchronizing state of %s with SysV init > with %s...", name, argv[0]); > + else > + log_info("%s is not a native service, redirecting to > systemd-sysv-install", name); > > if (!isempty(arg_root)) > argv[c++] = q = strappend("--root=", arg_root); > @@ -5209,6 +5215,9 @@ static int enable_sysv_units(const char *verb, char > **args) { > } else > return -EPROTO; > > + if (found_native) > + continue; > + > /* Remove this entry, so that we don't try enabling it as > native unit */ > assert(f > 0); > f--; > -- > 2.1.4 > > _______________________________________________ > systemd-devel mailing list > systemd-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/systemd-devel Lennart -- Lennart Poettering, Red Hat _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel