diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-04-05 01:49:37 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-04-11 19:22:26 +0200 |
commit | 29505c7d1eb08afc14a881d84705cde54b12192f (patch) | |
tree | 107f0151890cef7f195a2444e769ccb65a68586c | |
parent | b7e23a92a57f50686a5334c4737ffe46b06bbf77 (diff) |
gnu: hurd: Ensure startup scripts refer to the right programs.
* gnu/packages/hurd.scm (hurd)[arguments]: In 'set-file-names' phase, patch
startup.c, init.c, login.c, and daemons/runsystem/*. Add
'patch-libexec-shebangs' phase. Subtitute /libexec and /sbin, so that we may
run RC.
[inputs]: Add BASH-MINIMAL, COREUTILS, SED, GREP, and UTIL-LINUX.
-rw-r--r-- | gnu/packages/hurd.scm | 70 |
1 files changed, 66 insertions, 4 deletions
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm index 9f398e0d6c..45e1b21a77 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -32,8 +32,10 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages flex) #:use-module (gnu packages bison) + #:use-module (gnu packages linux) #:use-module (gnu packages perl) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages texinfo) #:use-module (guix git-download) #:export (hurd-system? @@ -349,10 +351,63 @@ boot, since this cannot be done from GNU/Linux." #t)) (add-before 'build 'set-file-names (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* '("daemons/runttys.c" "daemons/getty.c") + (let* ((out (assoc-ref outputs "out")) + (bash (assoc-ref inputs "bash-minimal")) + (coreutils (assoc-ref inputs "coreutils")) + (sed (assoc-ref inputs "sed")) + (grep (assoc-ref inputs "grep")) + (util-linux (assoc-ref inputs "util-linux"))) + (substitute* '("daemons/runttys.c" "daemons/getty.c" "utils/login.c") (("/bin/login") - (string-append out "/bin/login"))) + (string-append out "/bin/login")) + (("/bin/bash") (string-append bash "/bin/bash"))) + (substitute* '("startup/startup.c" "init/init.c" "config/ttys") + (("/libexec/") + (string-append out "/libexec/"))) + (substitute* "daemons/console-run.c" + (("/hurd/") + (string-append out "/hurd/"))) + + (substitute* '("daemons/runsystem.sh" + "daemons/runsystem.hurd.sh" + "sutils/MAKEDEV.sh") + (("^PATH=.*") + (string-append "PATH=" out "/bin:" out "/sbin:" + coreutils "/bin:" + sed "/bin:" grep "/bin:" + util-linux "/bin\n")) + (("^SHELL=.*") + (string-append "SHELL=" bash "/bin/bash\n")) + (("/sbin/") (string-append out "/sbin/")) + (("/libexec/") (string-append out "/libexec/")) + (("/hurd/") (string-append out "/hurd/"))) + + (substitute* "daemons/runsystem.sh" + (("export PATH") + (string-append "export PATH\n" + "\ +fsysopts / --writable + +# MAKEDEV relies on pipes so this needs to be set up. +settrans -c /servers/socket/1 /hurd/pflocal + +(cd /dev; MAKEDEV -D /dev std vcs tty{1,2,3,4,5,6})\n"))) + + (substitute* "daemons/runsystem.hurd.sh" + (("export PATH") + "export PATH +fsysopts / --writable\n")) + #t))) + (add-after 'patch-shebangs 'patch-libexec-shebangs + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; XXX: Since the 'patch-shebangs' phase doesn't traverse + ;; /libexec, do it here. + (let* ((out (assoc-ref outputs "out")) + (bash (assoc-ref inputs "bash-minimal")) + (path (list (string-append bash "/bin")))) + (for-each (lambda (file) + (patch-shebang file path)) + (find-files (string-append out "/libexec"))) #t))) (add-after 'install 'install-rc-file (lambda* (#:key inputs outputs #:allow-other-keys) @@ -373,7 +428,14 @@ boot, since this cannot be done from GNU/Linux." (build-system gnu-build-system) (inputs `(("glibc-hurd-headers" ,glibc/hurd-headers) - ("hurd-rc" ,(hurd-rc-script)))) + ("hurd-rc" ,(hurd-rc-script)) + + ;; Tools for the /libexec/* scripts. + ("bash-minimal" ,bash-minimal) + ("coreutils" ,coreutils) + ("sed" ,sed) + ("grep" ,grep) + ("util-linux" ,util-linux))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) |