"pelzflorian (Florian Pelz)" <[email protected]> wrote: > On Wed, Apr 15, 2020 at 06:06:25PM +0900, elaexuotee--- via Bug reports for > GNU Guix wrote: > > When building from git, ./bootstrap ends up generating (via automake) > > several > > Makefiles that set SHELL = /bin/sh. However, some targets contain rules that > > make use of bashisms. This leads to breakage when /bin/sh is something other > > than bash. > > > > In particular, I am building from a foreign distro which links /bin/sh to > > dash. > > Currently, this ends up breaking the build, the details of which I reported > > to guix-devel in [0]. > > <https://bugs.gnu.org/25258> is related. Your workaround may be more welcome. > > Regards, > Florian
Florian,
Thanks for the pointer. I ended up doing a little bit of sleuthing and think
I figured out a relatively clean fix---a simple one-liner in configure.ac.
Attached is a proof-of-concept patch against master (974bf81776).
Currently, autoconf sets make's shell to whatever it thinks is best. On a
foreign distribution, this often ends up something external to guix profile.
However, when this isn't bash, we run into problems.
The patch's idea is to let make use its hard-coded default shell. A guix-built
make will correctly fallback to whichever sh is in the profile, so for `guix
environment guix' this effectively becomes $GUIX_ENVIRONMENT/bin/sh. For
example,
$ echo '$(info $(SHELL))' | make -f -
/gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7/bin/sh
make: *** No targets. Stop.
I belive this should do the Right Thing. However, is there anything I am
missing? Perhaps this change would break build scenaries I am not thinking of?
Cheers,
B. Wilson
>From 6a5533fde0580a777a10f1155714f23a003003d9 Mon Sep 17 00:00:00 2001 From: "B. Wilson" <[email protected]> Date: Thu, 16 Apr 2020 17:02:06 +0900 Subject: [PATCH] build: Let make use its hard-coded default shell To: [email protected] * configure.ac: Set AM_SUBST_NOTMAKE([SHELL]) --- configure.ac | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/configure.ac b/configure.ac index 6a6a020585..dbb06f2258 100644 --- a/configure.ac +++ b/configure.ac @@ -11,6 +11,10 @@ AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([1.14 gnu silent-rules subdir-objects \ color-tests parallel-tests -Woverride -Wno-portability]) +# Use make's hard-coded default shell. The make in a guix profile +# defaults to the Right Thing, e.g. $GUIX_ENVIRONMENT/bin/sh +AM_SUBST_NOTMAKE([SHELL]) + # Enable silent rules by default. AM_SILENT_RULES([yes]) -- 2.26.1
signature.asc
Description: PGP signature
