556a0a1104
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>
46 lines
1.1 KiB
Bash
Executable File
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
|