kumquat-buildroot/support/dependencies/check-host-cmake.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

46 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
# prevent shift error
[ $# -lt 2 ] && exit 1
major_min="${1%.*}"
minor_min="${1#*.}"
shift
for candidate; do
# Try to locate the candidate. Discard it if not located.
cmake=`which "${candidate}" 2>/dev/null`
[ -n "${cmake}" ] || continue
# Extract version X.Y from versions in the form X.Y or X.Y.Z
# with X, Y and Z numbers with one or more digits each, e.g.
# 3.2 -> 3.2
# 3.2.3 -> 3.2
# 3.2.42 -> 3.2
# 3.10 -> 3.10
# 3.10.4 -> 3.10
# 3.10.42 -> 3.10
# Discard the candidate if no version can be obtained
version="$(${cmake} --version \
|sed -r -e '/.* ([[:digit:]]+\.[[:digit:]]+).*$/!d;' \
-e 's//\1/'
)"
[ -n "${version}" ] || continue
major="${version%.*}"
minor="${version#*.}"
if [ ${major} -gt ${major_min} ]; then
echo "${cmake}"
exit
elif [ ${major} -eq ${major_min} -a ${minor} -ge ${minor_min} ]; then
echo "${cmake}"
exit
fi
done
# echo nothing: no suitable cmake found
exit 1