kumquat-buildroot/support/dependencies/check-host-tar.sh
Yann E. MORIN 556a0a1104 Revert "make: support: use command -v' instead of which'"
This reverts commit ca6a2907c2.

Switching to using 'command -v' instead of 'which', opened a can of
worms that is hard to fix in a timely manner:

  - recursive call to 'make' from a post-build, post-iamge script, fails
    because of a redefinition of HOSTCC_NOCCACHE (a bug on its own that
    needs a separate fix anyway) [0];

  - 'make' believeing it can call "simple" commands with execve() et al.
    instead of passing them through a shell via system(), and thus
    failing to find 'command' in the PATH [1].

[0] https://lore.kernel.org/buildroot/20211001175329.GA1973888@lbrmn-mmayer.ric.broadcom.net/T/#m95c17eb8374e4e3dd6eee700d397aa12cca0739e
[1] https://lore.kernel.org/buildroot/20211001180304.GV1504958@scaer/T/#m3a8f36bd76ec7d8e5038a6c8932bb6ffe23ea268

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2021-10-01 20:09:58 +02:00

48 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
candidate="$1"
tar=`which $candidate`
if [ ! -x "$tar" ]; then
tar=`which tar`
if [ ! -x "$tar" ]; then
# echo nothing: no suitable tar found
exit 1
fi
fi
# Output of 'tar --version' examples:
# tar (GNU tar) 1.15.1
# tar (GNU tar) 1.25
# bsdtar 2.8.3 - libarchive 2.8.3
version=`$tar --version | head -n 1 | sed 's/^.*\s\([0-9]\+\.\S\+\).*$/\1/'`
major=`echo "$version" | cut -d. -f1`
minor=`echo "$version" | cut -d. -f2`
bugfix=`echo "$version" | cut -d. -f3`
version_bsd=`$tar --version | grep 'bsdtar'`
# BSD tar does not have all the command-line options
if [ -n "${version_bsd}" ] ; then
# echo nothing: no suitable tar found
exit 1
fi
# Minimal version = 1.27 (previous versions do not correctly unpack archives
# containing hard-links if the --strip-components option is used or create
# different gnu long link headers for path elements > 100 characters).
major_min=1
minor_min=27
if [ $major -lt $major_min ]; then
# echo nothing: no suitable tar found
exit 1
fi
if [ $major -eq $major_min -a $minor -lt $minor_min ]; then
# echo nothing: no suitable tar found
exit 1
fi
# valid
echo $tar