gnu: bash: Avoid hang when cross-built for the Hurd.

For example, without this patch bash hangs while configuring diffutils.
Reproducer:

cat >x.awk <<EOF
x... repeat 16384 (the actual pipe size) times
EOF

* gnu/packages/bash.scm (bash): When cross-building for the Hurd, add new
"create-pipesize.h" stage.

Change-Id: I02c1dcf2d63849626ba3448cd52766db822dc77c
This commit is contained in:
Janneke Nieuwenhuizen 2024-11-16 20:21:59 +01:00
parent a9005279d0
commit a56e8f0a87
No known key found for this signature in database
GPG key ID: F3C1A0D9C1D65273

View file

@ -175,6 +175,20 @@ (define-public bash
#:phases
(modify-phases %standard-phases
,@(if (and (target-hurd?) (not (system-hurd?)))
`((add-after 'configure 'create-pipesize.h
;; The Bash Makefile mentions how PIPESIZE calculation is
;; "technically wrong" when cross-compiling, and offers no
;; way to override it. On the 64bit Hurd, it can make
;; bash hang.
(lambda _
(with-directory-excursion "builtins"
(with-output-to-file "psize.aux"
(lambda _ (display "dummy to pacify make\n")))
(with-output-to-file "pipesize.h"
(lambda _ (display "#define PIPESIZE 16384\n")))))))
'())
(add-after 'install 'install-sh-symlink
(lambda* (#:key outputs #:allow-other-keys)
;; Add a `sh' -> `bash' link.