47 lines
2.0 KiB
Bash
Executable File
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}"
|