Some checks failed
Update All Top Ranking Issues / update_top_ranking_issues (push) Has been cancelled
Triage Project Sync (#84) / Sync triage project (push) Has been cancelled
release_nightly / notify_on_failure (push) Has been cancelled
release_nightly / check_style (push) Has been cancelled
release_nightly / run_tests_windows (push) Has been cancelled
release_nightly / clippy_windows (push) Has been cancelled
release_nightly / bundle_linux_aarch64 (push) Has been cancelled
release_nightly / bundle_linux_x86_64 (push) Has been cancelled
release_nightly / bundle_mac_aarch64 (push) Has been cancelled
release_nightly / bundle_mac_x86_64 (push) Has been cancelled
release_nightly / bundle_windows_aarch64 (push) Has been cancelled
release_nightly / bundle_windows_x86_64 (push) Has been cancelled
release_nightly / build_nix_linux_x86_64 (push) Has been cancelled
release_nightly / build_nix_mac_aarch64 (push) Has been cancelled
release_nightly / update_nightly_tag (push) Has been cancelled
Hotfix Review Monitor / check-hotfix-reviews (push) Has been cancelled
Stale PR Review Reminder / check-stale-prs (push) Has been cancelled
Update Weekly Top Ranking Issues / update_top_ranking_issues (push) Has been cancelled
Bump collab-staging Tag / update-collab-staging-tag (push) Has been cancelled
compliance_check / scheduled_compliance_check (push) Has been cancelled
Single-commit orphan branch: full zed-industries/zed @ 8c74db0 source tree with a 3-file patch applied (no upstream history). Patch (crates/gpui_linux/src/linux/wayland/): - serial.rs: add SerialKind::KeyboardEnter - client.rs: store wl_keyboard.enter serial; add latest_serial_of() - window.rs: activate() uses keyboard-enter serial (Mutter focus gate) Mutter honors window activation only when the token carries the keyboard- focus serial from wl_keyboard.enter; GPUI used a stale mouse-press serial. See docs/tray-window-focus-wayland.md in logiguard. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
78 lines
3.0 KiB
Bash
Executable File
78 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# This script installs an up-to-date version of CMake.
|
|
#
|
|
# For MacOS use Homebrew to install the latest version.
|
|
#
|
|
# For Ubuntu use the official KitWare Apt repository with backports.
|
|
# See: https://apt.kitware.com/
|
|
#
|
|
# For other systems (RHEL 8.x, 9.x, AmazonLinux, SUSE, Fedora, Arch, etc)
|
|
# use the official CMake installer script from KitWare.
|
|
#
|
|
# Note this is similar to how GitHub Actions runners install cmake:
|
|
# https://github.com/actions/runner-images/blob/main/images/ubuntu/scripts/build/install-cmake.sh
|
|
#
|
|
# Upstream: 3.30.4 (2024-09-27)
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
if [[ "$(uname -s)" == "darwin" ]]; then
|
|
brew --version >/dev/null \
|
|
|| echo "Error: Homebrew is required to install cmake on MacOS." && exit 1
|
|
echo "Installing cmake via Homebrew (can't pin to old versions)."
|
|
brew install cmake
|
|
exit 0
|
|
elif [ "$(uname -s)" != "Linux" ]; then
|
|
echo "Error: This script is intended for MacOS/Linux systems only."
|
|
exit 1
|
|
elif [ -z "${1:-}" ]; then
|
|
echo "Usage: $0 [3.30.4]"
|
|
exit 1
|
|
fi
|
|
CMAKE_VERSION="${CMAKE_VERSION:-${1:-3.30.4}}"
|
|
|
|
if [ "$(whoami)" = root ]; then SUDO=; else SUDO="$(command -v sudo || command -v doas || true)"; fi
|
|
|
|
if cmake --version 2>/dev/null | grep -q "$CMAKE_VERSION"; then
|
|
echo "CMake $CMAKE_VERSION is already installed."
|
|
exit 0
|
|
elif [ -e /usr/local/bin/cmake ]; then
|
|
echo "Warning: existing cmake found at /usr/local/bin/cmake. Skipping installation."
|
|
exit 0
|
|
elif [ -e /etc/apt/sources.list.d/kitware.list ]; then
|
|
echo "Warning: existing KitWare repository found. Skipping installation."
|
|
exit 0
|
|
elif [ -e /etc/lsb-release ] && grep -qP 'DISTRIB_ID=Ubuntu' /etc/lsb-release; then
|
|
curl -fsSL https://apt.kitware.com/keys/kitware-archive-latest.asc \
|
|
| $SUDO gpg --dearmor - \
|
|
| $SUDO tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
|
|
echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" \
|
|
| $SUDO tee /etc/apt/sources.list.d/kitware.list >/dev/null
|
|
$SUDO apt-get update
|
|
$SUDO apt-get install -y kitware-archive-keyring cmake
|
|
else
|
|
arch="$(uname -m)"
|
|
if [ "$arch" != "x86_64" ] && [ "$arch" != "aarch64" ]; then
|
|
echo "Error. Only x86_64 and aarch64 are supported."
|
|
exit 1
|
|
fi
|
|
tempdir=$(mktemp -d)
|
|
pushd "$tempdir"
|
|
CMAKE_REPO="https://github.com/Kitware/CMake"
|
|
CMAKE_INSTALLER="cmake-$CMAKE_VERSION-linux-$arch.sh"
|
|
curl -fsSL --output cmake-$CMAKE_VERSION-SHA-256.txt \
|
|
"$CMAKE_REPO/releases/download/v$CMAKE_VERSION/cmake-$CMAKE_VERSION-SHA-256.txt"
|
|
curl -fsSL --output $CMAKE_INSTALLER \
|
|
"$CMAKE_REPO/releases/download/v$CMAKE_VERSION/cmake-$CMAKE_VERSION-linux-$arch.sh"
|
|
# workaround for old versions of sha256sum not having --ignore-missing
|
|
grep -F "cmake-$CMAKE_VERSION-linux-$arch.sh" "cmake-$CMAKE_VERSION-SHA-256.txt" \
|
|
| sha256sum -c \
|
|
| grep -qP "^${CMAKE_INSTALLER}: OK"
|
|
chmod +x cmake-$CMAKE_VERSION-linux-$arch.sh
|
|
$SUDO ./cmake-$CMAKE_VERSION-linux-$arch.sh --prefix=/usr/local --skip-license
|
|
popd
|
|
rm -rf "$tempdir"
|
|
fi
|