![Carlos Santos](/assets/img/avatar_default.png)
This is useful on CentOS 7 whose "cmake" package provides cmake 2.8.12, which is too old, but the "cmake3" package (from EPEL) provides version 3.6.3, which is satisfactory. Examples: $ sh support/dependencies/check-host-cmake.sh 2.8 cmake cmake3 /usr/bin/cmake $ sh support/dependencies/check-host-cmake.sh 3.1 cmake cmake3 /usr/bin/cmake3 $ sh support/dependencies/check-host-cmake.sh 3.8 cmake cmake3 (nothing) Signed-off-by: Carlos Santos <casantos@datacom.ind.br> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
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
|