summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Pelz <pelzflorian@pelzflorian.de>2020-02-20 14:05:06 +0100
committerFlorian Pelz <pelzflorian@pelzflorian.de>2020-02-20 22:34:06 +0000
commit00500449b0d53bb9219608a3cbee8faf7a3edae1 (patch)
tree9c7a9fef5d7bca6a25bfd7a7c66d906802b3f714
parentbb90beb5bf241de5f4d50375bb34b93bef93a4a5 (diff)
services: udev: Do not rely on shepherd inheriting environment variables.
Fixes <https://bugs.gnu.org/39671>. * gnu/services/base.scm (udev-shepherd-service)[start] Move or copy environment variables to 'fork+exec-command' instead of 'setenv'.
-rw-r--r--gnu/services/base.scm19
1 files changed, 13 insertions, 6 deletions
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 0c154d1c4e..706b3ae7ec 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -11,6 +11,7 @@
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -2037,11 +2038,6 @@ item of @var{packages}."
(setenv "LINUX_MODULE_DIRECTORY"
"/run/booted-system/kernel/lib/modules")
- ;; The first one is for udev, the second one for eudev.
- (setenv "UDEV_CONFIG_FILE" #$udev.conf)
- (setenv "EUDEV_RULES_DIRECTORY"
- #$(file-append rules "/lib/udev/rules.d"))
-
(let* ((kernel-release
(utsname:release (uname)))
(linux-module-directory
@@ -2058,7 +2054,18 @@ item of @var{packages}."
(make-static-device-nodes directory))
(umask old-umask))
- (let ((pid (fork+exec-command (list udevd))))
+ (let ((pid (fork+exec-command (list udevd)
+ #:environment-variables
+ (cons*
+ ;; The first one is for udev, the second one for
+ ;; eudev.
+ (string-append "UDEV_CONFIG_FILE=" #$udev.conf)
+ (string-append "EUDEV_RULES_DIRECTORY="
+ #$(file-append
+ rules "/lib/udev/rules.d"))
+ (string-append "LINUX_MODULE_DIRECTORY="
+ (getenv "LINUX_MODULE_DIRECTORY"))
+ (default-environment-variables)))))
;; Wait until udevd is up and running. This appears to
;; be needed so that the events triggered below are
;; actually handled.