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.
This commit is contained in:
Ludovic Courtès 2020-04-05 01:49:37 +02:00
parent b7e23a92a5
commit 29505c7d1e
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -32,8 +32,10 @@ (define-module (gnu packages hurd)
#: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 @@ (define-public hurd
#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 @@ (define-public hurd
(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)