mirror of
https://github.com/systemd/systemd.git
synced 2025-01-26 14:04:03 +03:00
shared/install: allow "enable" on linked unit files (#3790)
User expectations are broken when "systemctl enable /some/path/service.service" behaves differently to "systemctl link ..." followed by "systemctl enable". From user's POV, "enable" with the full path just combines the two steps into one. Fixes #3010.
This commit is contained in:
parent
5ed020d8d1
commit
f777b4345e
@ -2215,7 +2215,7 @@ int unit_file_enable(
|
||||
config_path = runtime ? paths.runtime_config : paths.persistent_config;
|
||||
|
||||
STRV_FOREACH(f, files) {
|
||||
r = install_info_discover(scope, &c, &paths, *f, SEARCH_LOAD, &i);
|
||||
r = install_info_discover(scope, &c, &paths, *f, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, &i);
|
||||
if (r < 0)
|
||||
return r;
|
||||
r = install_info_may_process(i, &paths, changes, n_changes);
|
||||
|
@ -301,7 +301,12 @@ static void test_linked_units(const char *root) {
|
||||
unit_file_changes_free(changes, n_changes);
|
||||
changes = NULL; n_changes = 0;
|
||||
|
||||
assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("linked3.service"), false, &changes, &n_changes) == -ELOOP);
|
||||
assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("linked3.service"), false, &changes, &n_changes) >= 0);
|
||||
assert_se(n_changes == 1);
|
||||
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
|
||||
assert_se(startswith(changes[0].path, root));
|
||||
assert_se(endswith(changes[0].path, "linked3.service"));
|
||||
assert_se(streq(changes[0].source, "/opt/linked3.service"));
|
||||
unit_file_changes_free(changes, n_changes);
|
||||
changes = NULL; n_changes = 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user