Subject: bug#40641: Building from git breaks when /bin/sh isn't bash

From: [email-masked]
Date: Mon, 04 Jul 2022 20:22:43 +0900

"pelzflorian (Florian Pelz)" <[email-masked]> wrote:
> Thank you for getting back to the bug.  I am in the same situation in
> that I use Guix System now. :D
> 
> On Tue, Jun 21, 2022 at 09:20:28AM +0900, [email-masked] wrote:
> > so you could be able to sanity
> > check with something like
> > 
> >     $ guix shell -C dash guix make <etc>
> >     $ ln -s $(command -v dash) /bin/sh
> >     $ ./configure --localstatedir && make
> 
> I had done exactly this.
> 
> guix shell --container --network dash git pkg-config gnutls guile guile-avahi guile-gcrypt guile-json guile-lib guile-sqlite3 guile-zlib guile-lzlib guile-zstd guile-ssh guile-git autoconf automake gettext texinfo graphviz help2man po4a findutils sed coreutils tar xz m4 diffutils grep gcc-toolchain sqlite libgcrypt gawk make glibc-locales -- dash
> 
> Many tests fail because of the container though, so I’m not sure how
> big the effect is.  At least tests/guix-package.sh still use type -P
> which is not POSIX, but I don’t think it should be changed nor should
> there be a check if $SHELL can do what we need, because we don’t know
> which bash features we need.

Excellent. I agree it's probably not worth POSIXifying the scripts. Forcing
make to default to guix's bash seems like the right approach IMHO, so +1 for
that fix.

FWIW, I ended up working around the original issue by explicitly telling make
to use guix's bash, anyway:

    $ guix environment guix bash
    $ CONFIG_SHELL=$(command -v bash) ./configure --localstatedir=/var