From: Carlos Santos Date: Sun, 7 May 2017 04:32:19 +0000 (-0300) Subject: core: allow check-host-cmake.sh to try several candidates X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cacc6d0b610f69a6af5f8a5b2af0032964e20973;p=buildroot.git core: allow check-host-cmake.sh to try several candidates 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 Acked-by: "Yann E. MORIN" Signed-off-by: Thomas Petazzoni --- diff --git a/support/dependencies/check-host-cmake.sh b/support/dependencies/check-host-cmake.sh index 73bd4edc99..fadeae9f6b 100755 --- a/support/dependencies/check-host-cmake.sh +++ b/support/dependencies/check-host-cmake.sh @@ -1,39 +1,45 @@ #!/bin/sh -version_min="${1}" -candidate="${2}" - -major_min="${version_min%.*}" -minor_min="${version_min#*.}" - -cmake=`which ${candidate}` -if [ ! -x "${cmake}" ]; then - # echo nothing: no suitable cmake found - exit 1 -fi - -# 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 -version="$(${cmake} --version \ - |sed -r -e '/.* ([[:digit:]]+\.[[:digit:]]+).*$/!d;' \ - -e 's//\1/' - )" -major="${version%.*}" -minor="${version#*.}" - -if [ ${major} -gt ${major_min} ]; then - echo "${cmake}" -else - if [ ${major} -eq ${major_min} -a ${minor} -ge ${minor_min} ]; then +# 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}" - else - # echo nothing: no suitable cmake found - exit 1 + exit + elif [ ${major} -eq ${major_min} -a ${minor} -ge ${minor_min} ]; then + echo "${cmake}" + exit fi -fi +done + +# echo nothing: no suitable cmake found +exit 1