bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: replacement for 'join'?


From: Bruno Haible
Subject: Re: replacement for 'join'?
Date: Wed, 12 May 2021 12:39:19 +0200
User-agent: KMail/5.1.3 (Linux/4.4.0-206-generic; KDE/5.18.0; x86_64; ; )

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  <bruno@clisp.org>

        gnulib-tool: Fail properly if the 'join' program is not found.
        Reported by Simon Josefsson <simon@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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]