|
Pablo Greco |
48fc63 |
From 81e311e36abca2f433fa6ac3d86100fcc9d50403 Mon Sep 17 00:00:00 2001
|
|
Pablo Greco |
48fc63 |
From: Kyle Walker <kwalker@redhat.com>
|
|
Pablo Greco |
48fc63 |
Date: Thu, 15 Nov 2018 11:50:39 -0500
|
|
Pablo Greco |
48fc63 |
Subject: [PATCH] shared/install: allow "enable" on linked unit files
|
|
Pablo Greco |
48fc63 |
|
|
Pablo Greco |
48fc63 |
User expectations are broken when "systemctl enable /some/path/service.service"
|
|
Pablo Greco |
48fc63 |
behaves differently to "systemctl link ..." followed by "systemctl enable".
|
|
Pablo Greco |
48fc63 |
From user's POV, "enable" with the full path just combines the two steps into
|
|
Pablo Greco |
48fc63 |
one.
|
|
Pablo Greco |
48fc63 |
|
|
Pablo Greco |
48fc63 |
(cherry picked from commit f777b4345e8c57e739bda746f78757d0fb136ac7)
|
|
Pablo Greco |
48fc63 |
|
|
Pablo Greco |
48fc63 |
Resolves: #1628575
|
|
Pablo Greco |
48fc63 |
---
|
|
Pablo Greco |
48fc63 |
src/shared/install.c | 2 +-
|
|
Pablo Greco |
48fc63 |
src/test/test-install-root.c | 7 ++++++-
|
|
Pablo Greco |
48fc63 |
2 files changed, 7 insertions(+), 2 deletions(-)
|
|
Pablo Greco |
48fc63 |
|
|
Pablo Greco |
48fc63 |
diff --git a/src/shared/install.c b/src/shared/install.c
|
|
Pablo Greco |
48fc63 |
index e73f0c95bd..ea01e4dcc2 100644
|
|
Pablo Greco |
48fc63 |
--- a/src/shared/install.c
|
|
Pablo Greco |
48fc63 |
+++ b/src/shared/install.c
|
|
Pablo Greco |
48fc63 |
@@ -1878,7 +1878,7 @@ int unit_file_enable(
|
|
Pablo Greco |
48fc63 |
return r;
|
|
Pablo Greco |
48fc63 |
|
|
Pablo Greco |
48fc63 |
STRV_FOREACH(f, files) {
|
|
Pablo Greco |
48fc63 |
- r = install_info_discover(scope, &c, root_dir, &paths, *f, SEARCH_LOAD, &i);
|
|
Pablo Greco |
48fc63 |
+ r = install_info_discover(scope, &c, root_dir, &paths, *f, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, &i);
|
|
Pablo Greco |
48fc63 |
if (r < 0)
|
|
Pablo Greco |
48fc63 |
return r;
|
|
Pablo Greco |
48fc63 |
if (i->type == UNIT_FILE_TYPE_MASKED)
|
|
Pablo Greco |
48fc63 |
diff --git a/src/test/test-install-root.c b/src/test/test-install-root.c
|
|
Pablo Greco |
48fc63 |
index cb417d4c19..9f6fa625ac 100644
|
|
Pablo Greco |
48fc63 |
--- a/src/test/test-install-root.c
|
|
Pablo Greco |
48fc63 |
+++ b/src/test/test-install-root.c
|
|
Pablo Greco |
48fc63 |
@@ -299,7 +299,12 @@ static void test_linked_units(const char *root) {
|
|
Pablo Greco |
48fc63 |
unit_file_changes_free(changes, n_changes);
|
|
Pablo Greco |
48fc63 |
changes = NULL; n_changes = 0;
|
|
Pablo Greco |
48fc63 |
|
|
Pablo Greco |
48fc63 |
- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("linked3.service"), &changes, &n_changes) == -ELOOP);
|
|
Pablo Greco |
48fc63 |
+ assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("linked3.service"), &changes, &n_changes) >= 0);
|
|
Pablo Greco |
48fc63 |
+ assert_se(n_changes == 1);
|
|
Pablo Greco |
48fc63 |
+ assert_se(changes[0].type == UNIT_FILE_SYMLINK);
|
|
Pablo Greco |
48fc63 |
+ assert_se(startswith(changes[0].path, root));
|
|
Pablo Greco |
48fc63 |
+ assert_se(endswith(changes[0].path, "linked3.service"));
|
|
Pablo Greco |
48fc63 |
+ assert_se(streq(changes[0].source, "/opt/linked3.service"));
|
|
Pablo Greco |
48fc63 |
unit_file_changes_free(changes, n_changes);
|
|
Pablo Greco |
48fc63 |
changes = NULL; n_changes = 0;
|
|
Pablo Greco |
48fc63 |
}
|