38 lines
1.7 KiB
Diff
38 lines
1.7 KiB
Diff
From 471a21a8647c54a0a9c7334a7dde4e6dd1712248 Mon Sep 17 00:00:00 2001
|
|
From: Dave Reisner <dreisner@archlinux.org>
|
|
Date: Thu, 30 Oct 2014 20:12:05 -0400
|
|
Subject: [PATCH] shared/install: avoid prematurely rejecting "missing" units
|
|
|
|
f7101b7368df copied some logic to prevent enabling masked units, but
|
|
also added a check which causes attempts to enable templated units to
|
|
fail. Since we know the logic beyond this check will properly handle
|
|
units which truly do not exist, we can rely on the unit file state
|
|
comparison to suffice for expressing the intent of f7101b7368df.
|
|
|
|
ref: https://bugs.archlinux.org/task/42616
|
|
(cherry picked from commit 0ffce503cd6e5a5ff5ba5cd1cc23684cfb8bb9e3)
|
|
---
|
|
src/shared/install.c | 8 +++-----
|
|
1 file changed, 3 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/src/shared/install.c b/src/shared/install.c
|
|
index 035b44cc52..cab93e8dc6 100644
|
|
--- a/src/shared/install.c
|
|
+++ b/src/shared/install.c
|
|
@@ -1620,12 +1620,10 @@ int unit_file_enable(
|
|
STRV_FOREACH(i, files) {
|
|
UnitFileState state;
|
|
|
|
+ /* We only want to know if this unit is masked, so we ignore
|
|
+ * errors from unit_file_get_state, deferring other checks.
|
|
+ * This allows templated units to be enabled on the fly. */
|
|
state = unit_file_get_state(scope, root_dir, *i);
|
|
- if (state < 0) {
|
|
- log_error("Failed to get unit file state for %s: %s", *i, strerror(-state));
|
|
- return state;
|
|
- }
|
|
-
|
|
if (state == UNIT_FILE_MASKED || state == UNIT_FILE_MASKED_RUNTIME) {
|
|
log_error("Failed to enable unit: Unit %s is masked", *i);
|
|
return -ENOTSUP;
|