summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-12-08 21:22:22 +0100
committerLudovic Courtès <ludo@gnu.org>2013-12-08 22:43:56 +0100
commit9b0ac8025860ac426cb1bc7fd417a27fe2bed36a (patch)
treef2a703efdddbdf89b5cd79e83739bf7f743e3b26 /gnu/packages
parent677078b48f649588f588c6adef0bb0aba70f7c8c (diff)
downloadguix-9b0ac8025860ac426cb1bc7fd417a27fe2bed36a.tar.gz
gnu: Populate /etc upon startup.
* gnu/packages/patches/dmd-getpw.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/system.scm (dmd): Use it.
* gnu/system/vm.scm (system-qemu-image): Don't explicitly populate /etc;
  don't add ETC to the GC roots.
* gnu/system/dmd.scm (dmd-configuration-file): Add 'etc' parameter.
  [config]: Populate /etc from there.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/patches/dmd-getpw.patch19
-rw-r--r--gnu/packages/system.scm3
2 files changed, 21 insertions, 1 deletions
diff --git a/gnu/packages/patches/dmd-getpw.patch b/gnu/packages/patches/dmd-getpw.patch
new file mode 100644
index 0000000000..c4f9c35951
--- /dev/null
+++ b/gnu/packages/patches/dmd-getpw.patch
@@ -0,0 +1,19 @@
+When bootstrapping and running as PID 1, /etc/{passwd,shadow} may be unavailable.
+Gracefully handle that.
+
+diff --git a/modules/dmd/support.scm b/modules/dmd/support.scm
+index 9b592c5..602e409 100644
+--- a/modules/dmd/support.scm
++++ b/modules/dmd/support.scm
+@@ -151,7 +151,10 @@ There is NO WARRANTY, to the extent permitted by law.")))
+ 
+ 
+ ;; Home directory of the user.
+-(define user-homedir (passwd:dir (getpwuid (getuid))))
++(define user-homedir
++  (or (false-if-exception (passwd:dir (getpwuid (getuid))))
++      (getenv "HOME")
++      "/"))
+ 
+ ;; Logfile.
+ (define default-logfile
diff --git a/gnu/packages/system.scm b/gnu/packages/system.scm
index f92d874099..536234f4aa 100644
--- a/gnu/packages/system.scm
+++ b/gnu/packages/system.scm
@@ -45,7 +45,8 @@
                                  version ".tar.gz"))
              (sha256
               (base32
-               "07mddw0p62fcphwjzgb6rfa0pjz5sy6jzbha0sm2vc3rqf459jxg"))))
+               "07mddw0p62fcphwjzgb6rfa0pjz5sy6jzbha0sm2vc3rqf459jxg"))
+             (patches (list (search-patch "dmd-getpw.patch")))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--localstatedir=/var")))