summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/test/evergreen/find_cmake.sh
blob: 17d40b36a5c74141afcdd386180918bdded9df26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/sh
set -o errexit  # Exit the script with error if any of the commands fail

# CMake version we fallback to and download when cmake doesn't exist on the
# host system.
CMAKE_MAJOR_VER=3
CMAKE_MINOR_VER=11
CMAKE_PATCH_VER=0
CMAKE_VERSION=$CMAKE_MAJOR_VER.$CMAKE_MINOR_VER.$CMAKE_PATCH_VER

# Adapted 'find_cmake' from mongo-c-driver evergreen infrastructure:
#   https://github.com/mongodb/mongo-c-driver/blob/master/.evergreen/find-cmake.sh
find_cmake ()
{
    if [ ! -z "$CMAKE" ]; then
        return 0
    elif [ -f "/Applications/CMake.app/Contents/bin/cmake" ]; then
        CMAKE="/Applications/CMake.app/Contents/bin/cmake"
        CTEST="/Applications/CMake.app/Contents/bin/ctest"
    elif [ -f "/opt/cmake/bin/cmake" ]; then
        CMAKE="/opt/cmake/bin/cmake"
        CTEST="/opt/cmake/bin/ctest"
    elif command -v cmake 2>/dev/null; then
        CMAKE=cmake
        CTEST=ctest
    elif uname -a | grep -iq 'x86_64 GNU/Linux'; then
        if [ -f "$(pwd)/cmake-$CMAKE_VERSION/bin/cmake" ]; then
            CMAKE="$(pwd)/cmake-$CMAKE_VERSION/bin/cmake"
            CTEST="$(pwd)/cmake-$CMAKE_VERSION/bin/ctest"
            return 0
        fi
        curl --retry 5 https://cmake.org/files/v$CMAKE_MAJOR_VER.$CMAKE_MINOR_VER/cmake-$CMAKE_VERSION-Linux-x86_64.tar.gz -sS --max-time 120 --fail --output cmake.tar.gz
        mkdir cmake-$CMAKE_VERSION
        tar xzf cmake.tar.gz -C cmake-$CMAKE_VERSION --strip-components=1
        CMAKE=$(pwd)/cmake-$CMAKE_VERSION/bin/cmake
        CTEST=$(pwd)/cmake-$CMAKE_VERSION/bin/ctest
    elif [ -f "/cygdrive/c/cmake/bin/cmake" ]; then
        CMAKE="/cygdrive/c/cmake/bin/cmake"
        CTEST="/cygdrive/c/cmake/bin/ctest"
    elif [ -f "$(readlink -f cmake-install)"/bin/cmake ]; then
        # If we have a custom cmake install from an earlier build step.
        CMAKE="$(readlink -f cmake-install)/bin/cmake"
        CTEST="$(readlink -f cmake-install)/bin/ctest"
    fi

    if [ -z "$CMAKE" -o -z "$( $CMAKE --version 2>/dev/null )" ]; then
        # Some images have no cmake yet, or a broken cmake (see: BUILD-8570)
        echo "-- MAKE CMAKE --"
        CMAKE_INSTALL_DIR=$(readlink -f cmake-install)
        if [ -d  cmake-$CMAKE_VERSION ]; then rm -r cmake-$CMAKE_VERSION; fi
        curl --retry 5 https://cmake.org/files/v$CMAKE_MAJOR_VER.$CMAKE_MINOR_VER/cmake-$CMAKE_VERSION.tar.gz -sS --max-time 120 --fail --output cmake.tar.gz
        tar xzf cmake.tar.gz
        cd cmake-$CMAKE_VERSION
        ./bootstrap --prefix="${CMAKE_INSTALL_DIR}"
        make -j8
        make install
        cd ..
        CMAKE="${CMAKE_INSTALL_DIR}/bin/cmake"
        CTEST="${CMAKE_INSTALL_DIR}/bin/ctest"
        echo "-- DONE MAKING CMAKE --"
    fi

    echo "=========================================================="
    echo "CMake and CTest environment variables, paths and versions:"
    echo "CMAKE: ${CMAKE}"
    echo "CTEST: ${CTEST}"
    command -v ${CMAKE}
    command -v ${CTEST}
    ${CMAKE} --version
    ${CTEST} --version
    echo "=========================================================="
}

find_cmake