Files
StaticLink.Avalonia/scripts/build-linux-container.sh
T

47 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
rid="${RID:-linux-x64}"
case "$rid" in
linux-x64) cpu=x64; platform=linux/amd64 ;;
linux-arm64) cpu=arm64; platform=linux/arm64 ;;
*) echo "Debian container currently supports linux-x64 and linux-arm64: $rid" >&2; exit 2 ;;
esac
source_lock="$(realpath "${SOURCE_LOCK:-$root/build/linux-toolchain/sources.lock.json}")"
case "$source_lock" in
"$root/"*) container_lock="/src/${source_lock#"$root/"}" ;;
*) echo "SOURCE_LOCK must be inside the mounted repository" >&2; exit 2 ;;
esac
lock_key="$(sha256sum "$source_lock" | cut -c1-16)"
eval "$(python3 - "$source_lock" <<'PY'
import json, shlex, sys
lock = json.load(open(sys.argv[1]))
for key, value in lock.items():
print(f'{key.upper()}={shlex.quote(value)}')
PY
)"
image="staticlink-debian12:$(sha256sum "$root/build/linux-toolchain/Dockerfile" | cut -c1-16)"
docker build --platform "$platform" -t "$image" "$root/build/linux-toolchain"
docker run --rm --platform "$platform" \
--user "$(id -u):$(id -g)" \
-v "$root:/src" -w /src \
-e HOME=/tmp/staticlink-home \
-e RID="$rid" -e TARGET_CPU="$cpu" \
-e BUILD_JOBS="${BUILD_JOBS:-4}" \
-e WORK_DIR="/src/External/NativeStatic/.work/native-$lock_key" \
-e SOURCE_LOCK="$container_lock" \
-e SKIASHARP_VERSION="$SKIASHARP_VERSION" -e SKIASHARP_REVISION="$SKIASHARP_REVISION" \
-e ANGLE_BRANCH="$ANGLE_BRANCH" -e ANGLE_REVISION="$ANGLE_REVISION" \
-e DEPOT_TOOLS_DIR=/src/External/NativeStatic/.work/depot_tools \
"$image" bash -c '
set -euo pipefail
mkdir -p "$HOME" "$(dirname "$DEPOT_TOOLS_DIR")"
# The image checkout is read-only for a non-root user; gclient needs a writable copy.
if [[ ! -d "$DEPOT_TOOLS_DIR/.git" ]]; then
cp -a /opt/depot_tools "$DEPOT_TOOLS_DIR"
fi
scripts/build-linux-static-graphics.sh "${1:-all}"
cp /opt/staticlink/packages.lock "External/NativeStatic/$RID/toolchain-packages.lock"
cp "$SOURCE_LOCK" "External/NativeStatic/$RID/sources.lock.json"
' bash "${1:-all}"