Hi Simon, > > Alpine Linux does not have the 'join' program. > > The GCS [1] don't list it among the essential utilities. > > I ran into that problem during ./bootstrap -- it seems gnulib-tool > relies on the 'join' tool as well: > > ./bootstrap: gnulib/gnulib-tool --no-changelog --aux-dir=build-aux > --doc-base=doc --lib=libgnu --m4-base=m4/ --source-base=gl/ > --tests-base=gl/tests --local-dir=gl --libtool --import ... > gnulib/gnulib-tool: line 1: join: not found > > The ./bootstrap script completes without error exit, but failed to setup > the build properly.
That is not proper behaviour. Fixing it through the patch below. > Do we want to support ./boostrap on systems without 'join'? No. gnulib-tool needs more advanced use of 'join' (on tables with 2 columns, not just on lists of symbols). Unless someone writes a full emulation of 'join' that supports the -t, -v, -a options, it's best to require 'join'. > If not, I suggest the patch below. > > /Simon > > diff --git a/build-aux/bootstrap.conf b/build-aux/bootstrap.conf > index 9e21d9f45..0e8cbbe4a 100644 > --- a/build-aux/bootstrap.conf > +++ b/build-aux/bootstrap.conf > @@ -64,4 +64,5 @@ autoconf 2.59 > automake 1.9.6 > git 1.5.5 > tar - > +join - > " That is good as well. 2021-05-12 Bruno Haible <br...@clisp.org> gnulib-tool: Fail properly if the 'join' program is not found. Reported by Simon Josefsson <si...@josefsson.org> in <https://lists.gnu.org/archive/html/bug-gnulib/2021-05/msg00029.html>. * gnulib-tool: Bail out early of the 'join' program is not found. diff --git a/gnulib-tool b/gnulib-tool index 182b9b4..9b5c815 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -888,6 +888,15 @@ func_hardlink () } } +# The 'join' program does not exist on all platforms. Where it exists, +# we can use it. Where not, bail out. +if (type join) >/dev/null 2>&1; then + : +else + echo "$progname: 'join' program not found. Consider installing GNU coreutils." >&2 + func_exit 1 +fi + # Ensure an 'echo' command that # 1. does not interpret backslashes and # 2. does not print an error message "broken pipe" when writing into a pipe