-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Add `script/build-docker` - Add `script/install-cmake` - Add `script/install-mold` - Improve `script/linux` - Add missing dependencies: `jq`, `git`, `tar`, `gzip` as required. - Add check for mold - Fix Redhat 8.x derivatives (RHEL, Centos, Almalinux, Rocky, Oracle, Amazon) - Fix perl libs to be Fedora only - Install the best `libstdc++` available on apt distros - ArchLinux: run `pacman -Syu` to update repos before installing. - Should work on Raspbian (untested) This make it possible to test builds on other distros using docker: ``` ./script/build-docker amazonlinux:2023 ```
- Loading branch information
Showing
7 changed files
with
220 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# syntax=docker/dockerfile:1 | ||
|
||
ARG BASE_IMAGE | ||
FROM ${BASE_IMAGE} | ||
WORKDIR /app | ||
ARG TZ=Etc/UTC \ | ||
LANG=C.UTF-8 \ | ||
LC_ALL=C.UTF-8 \ | ||
DEBIAN_FRONTEND=noninteractive | ||
ENV CARGO_TERM_COLOR=always | ||
|
||
COPY script/linux script/ | ||
RUN ./script/linux | ||
COPY script/install-mold script/install-cmake script/ | ||
RUN ./script/install-mold "2.34.0" | ||
RUN ./script/install-cmake "3.30.4" | ||
|
||
COPY . . | ||
|
||
# When debugging, make these into individual RUN statements. | ||
# Cleanup to avoid saving big layers we aren't going to use. | ||
RUN . "$HOME/.cargo/env" \ | ||
&& cargo fetch \ | ||
&& cargo build \ | ||
&& cargo run -- --help \ | ||
&& cargo clean --quiet |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
**/target | ||
**/node_modules |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
#!/usr/bin/env bash | ||
|
||
# Use a docker BASE_IMAGE to test building Zed. | ||
# e.g: ./script/bundle-docker ubuntu:20.04 | ||
# | ||
# Increasing resources available to podman may speed this up: | ||
# podman machine stop | ||
# podman machine set --memory 16384 --cpus 8 --disk-size 200 | ||
# podman machine start | ||
|
||
set -euo pipefail | ||
|
||
BASE_IMAGE=${BASE_IMAGE:-${1:-}} | ||
if [ -z "$BASE_IMAGE" ]; then | ||
echo "Usage: $0 BASE_IMAGE" >&2 | ||
exit 1 | ||
fi | ||
|
||
export DOCKER_BUILDKIT=1 | ||
cd "$(dirname "$0")/.." | ||
|
||
podman build . \ | ||
-f Dockerfile-distros \ | ||
-t many \ | ||
--build-arg BASE_IMAGE="$BASE_IMAGE" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
#!/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 | 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==$CMAKE_VERSION | ||
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters