summaryrefslogtreecommitdiff
path: root/.devcontainer/reinstall-cmake.sh
diff options
context:
space:
mode:
Diffstat (limited to '.devcontainer/reinstall-cmake.sh')
-rw-r--r--.devcontainer/reinstall-cmake.sh59
1 files changed, 59 insertions, 0 deletions
diff --git a/.devcontainer/reinstall-cmake.sh b/.devcontainer/reinstall-cmake.sh
new file mode 100644
index 0000000..408b81d
--- /dev/null
+++ b/.devcontainer/reinstall-cmake.sh
@@ -0,0 +1,59 @@
+#!/usr/bin/env bash
+#-------------------------------------------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.
+#-------------------------------------------------------------------------------------------------------------
+#
+set -e
+
+CMAKE_VERSION=${1:-"none"}
+
+if [ "${CMAKE_VERSION}" = "none" ]; then
+ echo "No CMake version specified, skipping CMake reinstallation"
+ exit 0
+fi
+
+# Cleanup temporary directory and associated files when exiting the script.
+cleanup() {
+ EXIT_CODE=$?
+ set +e
+ if [[ -n "${TMP_DIR}" ]]; then
+ echo "Executing cleanup of tmp files"
+ rm -Rf "${TMP_DIR}"
+ fi
+ exit $EXIT_CODE
+}
+trap cleanup EXIT
+
+
+echo "Installing CMake..."
+apt-get -y purge --auto-remove cmake
+mkdir -p /opt/cmake
+
+architecture=$(dpkg --print-architecture)
+case "${architecture}" in
+ arm64)
+ ARCH=aarch64 ;;
+ amd64)
+ ARCH=x86_64 ;;
+ *)
+ echo "Unsupported architecture ${architecture}."
+ exit 1
+ ;;
+esac
+
+CMAKE_BINARY_NAME="cmake-${CMAKE_VERSION}-linux-${ARCH}.sh"
+CMAKE_CHECKSUM_NAME="cmake-${CMAKE_VERSION}-SHA-256.txt"
+TMP_DIR=$(mktemp -d -t cmake-XXXXXXXXXX)
+
+echo "${TMP_DIR}"
+cd "${TMP_DIR}"
+
+curl -sSL "https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_BINARY_NAME}" -O
+curl -sSL "https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_CHECKSUM_NAME}" -O
+
+sha256sum -c --ignore-missing "${CMAKE_CHECKSUM_NAME}"
+sh "${TMP_DIR}/${CMAKE_BINARY_NAME}" --prefix=/opt/cmake --skip-license
+
+ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
+ln -s /opt/cmake/bin/ctest /usr/local/bin/ctest