|
6 | 6 | set -e |
7 | 7 |
|
8 | 8 | CMAKE_VERSION=${CMAKE_VERSION:-3.31.6} |
9 | | -CMAKE_DIR="cmake-$CMAKE_VERSION-linux-x86_64" |
10 | | -CMAKE_TAR="$CMAKE_DIR.tar.gz" |
11 | | -CMAKE_URL="https://github.com/Kitware/CMake/releases/download/v$CMAKE_VERSION/$CMAKE_TAR" |
| 9 | +CMAKE_DIR="cmake-${CMAKE_VERSION}-linux-x86_64" |
| 10 | +CMAKE_TAR="${CMAKE_DIR}.tar.gz" |
| 11 | +CMAKE_URL="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_TAR}" |
12 | 12 |
|
13 | | -echo "Installing CMake version: $CMAKE_VERSION" |
| 13 | +INSTALL_DIR="/opt/cmake" |
| 14 | + |
| 15 | +echo "Installing CMake version: ${CMAKE_VERSION}..." |
14 | 16 |
|
15 | 17 | apt-get update && apt-get remove --purge -y cmake || true |
16 | 18 |
|
17 | 19 | apt-get install -y wget tar |
18 | 20 |
|
19 | | -wget "$CMAKE_URL" |
20 | | - |
21 | | -tar -xzf "$CMAKE_TAR" |
| 21 | +wget "${CMAKE_URL}" |
22 | 22 |
|
23 | | -mkdir -p /opt/cmake |
24 | | -mv "$CMAKE_DIR" /opt/cmake/cmake |
| 23 | +mkdir -p "${INSTALL_DIR}" |
| 24 | +tar --strip-components=1 -xzf "${CMAKE_TAR}" -C "${INSTALL_DIR}" |
25 | 25 |
|
26 | | -for file in /opt/cmake/cmake/bin/*; do |
27 | | - ln -sf "$file" "/usr/local/bin/$(basename "$file")" |
| 26 | +for executable in "${INSTALL_DIR}/bin/"*; do |
| 27 | + exe_name=$(basename "$executable") |
| 28 | + ln -sf "$executable" "/usr/local/bin/$exe_name" |
28 | 29 | done |
29 | 30 |
|
30 | | -rm -f "$CMAKE_TAR" |
| 31 | +rm -f "${CMAKE_TAR}" |
| 32 | + |
| 33 | +echo "Verifying installed versions..." |
| 34 | + |
| 35 | +for executable in cmake ctest cpack; do |
| 36 | + if command -v "$executable" >/dev/null 2>&1; then |
| 37 | + ACTUAL_VERSION=$("$executable" --version | grep -Eo '[0-9]+(\.[0-9]+)*' | head -n 1) |
| 38 | + echo "$executable version: $ACTUAL_VERSION detected" |
| 39 | + if [ "$ACTUAL_VERSION" != "$CMAKE_VERSION" ]; then |
| 40 | + echo "E: $executable version mismatch. Expected $CMAKE_VERSION, found '$ACTUAL_VERSION'" >&2 |
| 41 | + exit 1 |
| 42 | + fi |
| 43 | + else |
| 44 | + echo "E: $executable is not installed or not in PATH." >&2 |
| 45 | + exit 1 |
| 46 | + fi |
| 47 | +done |
31 | 48 |
|
32 | | -cmake --version |
|
0 commit comments