[systemd-devel] [PATCH] shared/install: don't report 'static' when unit contains only Also=
Jan Synacek
jsynacek at redhat.com
Thu Nov 6 01:49:40 PST 2014
If a unit contains only Also=, with no Alias= or WantedBy=, it shouldn't
be reported as static. If any target unit specified in Also= is enabled
or disabled, report this unit as enabled or disabled as well.
https://bugzilla.redhat.com/show_bug.cgi?id=864298
---
src/shared/install.c | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/src/shared/install.c b/src/shared/install.c
index cab93e8..781832f 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -1874,8 +1874,29 @@ UnitFileState unit_file_get_state(
return r;
else if (r > 0)
return UNIT_FILE_DISABLED;
- else if (r == 0)
+ else if (r == 0) {
+ _cleanup_(install_context_done) InstallContext c = {};
+ InstallInfo info = {}, *tmp;
+ Iterator it;
+ const char *key;
+
+ (void) unit_file_load(&c, &info, path, root_dir, true, true);
+
+ /* At this point, the unit contains only Also=, no Alias= or WantedBy= are specified.
+ It can be enabled/disabled through any of the Also= targets, we should check
+ if they're enabled/disabled. */
+ if (c.will_install) {
+ ORDERED_HASHMAP_FOREACH_KEY(tmp, key, c.will_install, it) {
+ r = find_symlinks_in_scope(scope, root_dir, key, &state);
+ if (r < 0)
+ return r;
+ else if (r > 0)
+ return state;
+ }
+ return UNIT_FILE_DISABLED;
+ }
return UNIT_FILE_STATIC;
+ }
}
return r < 0 ? r : state;
--
1.9.3
More information about the systemd-devel
mailing list