ba770e599c
After patching, this produces exactly the same source code as in our custom fork, but having the actual patches inlined inside nixpkgs makes it easier to get rid of them. In case more complicated rebasing is necessary, maintainers can - Clone the upstream systemd/systemd[-stable] repo - Checkout the current rev mentioned in src - Apply the patches from this folder via `git am 00*.patch` - Rebase the repo on top of a new version - Export the patch series via `git format-patch $newVersion` - Update the patches = [ … ] attribute (if necessary)
43 lines
2.0 KiB
Diff
43 lines
2.0 KiB
Diff
From 3eb1716dd80c245a2883da04156af79fb9097519 Mon Sep 17 00:00:00 2001
|
|
From: Andreas Rammhold <andreas@rammhold.de>
|
|
Date: Fri, 2 Nov 2018 21:15:42 +0100
|
|
Subject: [PATCH 19/27] inherit systemd environment when calling generators.
|
|
|
|
Systemd generators need access to the environment configured in
|
|
stage-2-init.sh since it schedules fsck and mkfs executions based on
|
|
being able to find an appropriate binary for the target filesystem.
|
|
|
|
With this commit I am altering the systemd behaviour since upstream
|
|
tries to gather environments with that they call
|
|
"environment-generators" and then seems to pass that on to all the other
|
|
executables that are being called from managers.
|
|
---
|
|
src/core/manager.c | 11 ++++++++---
|
|
1 file changed, 8 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/core/manager.c b/src/core/manager.c
|
|
index d9114bb0c5..22c3b6ff76 100644
|
|
--- a/src/core/manager.c
|
|
+++ b/src/core/manager.c
|
|
@@ -3868,9 +3868,14 @@ static int manager_run_generators(Manager *m) {
|
|
argv[4] = NULL;
|
|
|
|
RUN_WITH_UMASK(0022)
|
|
- (void) execute_directories((const char* const*) paths, DEFAULT_TIMEOUT_USEC, NULL, NULL,
|
|
- (char**) argv, m->transient_environment, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
|
|
-
|
|
+ (void) execute_directories((const char* const*) paths, DEFAULT_TIMEOUT_USEC,
|
|
+ // On NixOS we must propagate PATH to generators so they are
|
|
+ // able to find binaries such as `fsck.${fstype}` and
|
|
+ // `mkfs.${fstype}`. That is why the last argument of the
|
|
+ // function (envp) is set to NULL. This propagates systemd's
|
|
+ // environment (e.g. PATH) that was setup
|
|
+ // before calling systemd from stage-2-init.sh.
|
|
+ NULL, NULL, (char**) argv, /* NixOS: use inherited env */ NULL, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
|
|
r = 0;
|
|
|
|
finish:
|
|
--
|
|
2.24.1
|
|
|