61 lines
2.7 KiB
Bash
Executable File
61 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
SCRIPT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
SOURCE_LOCK="${SOURCE_LOCK:-$SCRIPT_ROOT/build/linux-toolchain/sources.lock.json}"
|
|
SOURCE_LOCK="$(realpath "$SOURCE_LOCK")"
|
|
export WORK_DIR="${WORK_DIR:-$SCRIPT_ROOT/External/NativeStatic/.work/zig-sources}"
|
|
export LLVM_AR="${LLVM_AR:-llvm-ar}"
|
|
mkdir -p "$WORK_DIR"
|
|
read -r SKIASHARP_VERSION SKIASHARP_REVISION ANGLE_BRANCH ANGLE_REVISION < <(
|
|
python3 - "$SOURCE_LOCK" <<'PY'
|
|
import json, sys
|
|
lock = json.load(open(sys.argv[1]))
|
|
print(lock['skiasharp_version'], lock['skiasharp_revision'], lock['angle_branch'], lock['angle_revision'])
|
|
PY
|
|
)
|
|
export SKIASHARP_VERSION SKIASHARP_REVISION ANGLE_BRANCH ANGLE_REVISION
|
|
export WORK_DIR="$WORK_DIR/$SKIASHARP_VERSION-$(sha256sum "$SOURCE_LOCK" | cut -c1-16)"
|
|
mkdir -p "$WORK_DIR"
|
|
source "$SCRIPT_ROOT/scripts/build-linux-static-graphics.sh"
|
|
if [[ ! -d "$WORK_DIR/depot_tools/.git" ]]; then
|
|
cp -a /opt/depot_tools "$WORK_DIR/depot_tools"
|
|
fi
|
|
export DEPOT_TOOLS_DIR="$WORK_DIR/depot_tools"
|
|
ensure_tools
|
|
ensure_depot_tools
|
|
initialize_depot_tools_system_python "$DEPOT_TOOLS_DIR"
|
|
patch_depot_tools_python_deps "$DEPOT_TOOLS_DIR"
|
|
export VPYTHON_BYPASS="manually managed python not supported by chrome operations"
|
|
skia_sharp="$(sync_skiasharp)"
|
|
python3 "$SCRIPT_ROOT/build/linux-toolchain/sync-skia-deps.py" --source "$skia_sharp/externals/skia" --cache "$SCRIPT_ROOT/External/NativeStatic/.work/skia-deps"
|
|
angle="$(sync_angle)"
|
|
project_patch="$SCRIPT_ROOT/External/NativeStatic/patches/angle-chromium-$ANGLE_BRANCH.patch"
|
|
if git -C "$angle" apply --reverse --check "$project_patch" >/dev/null 2>&1; then
|
|
:
|
|
else
|
|
git -C "$angle" apply --check "$project_patch"
|
|
git -C "$angle" apply "$project_patch"
|
|
fi
|
|
python3 - "$angle/.gclient" <<'PY'
|
|
from pathlib import Path
|
|
import sys
|
|
Path(sys.argv[1]).write_text('''solutions = [{
|
|
"name": ".", "url": "https://chromium.googlesource.com/angle/angle.git",
|
|
"deps_file": "DEPS", "managed": False,
|
|
"custom_deps": {"third_party/llvm-build/Release+Asserts": None},
|
|
"custom_vars": {"checkout_angle_cl_deps": False, "checkout_angle_dawn_deps": False},
|
|
}]
|
|
target_os = ["linux", "win", "mac"]
|
|
''')
|
|
PY
|
|
# Zig and the image's SDKs supply the compiler/runtime; skip native Xcode/MSVC
|
|
# setup hooks while retaining the pinned source dependencies for every target.
|
|
(cd "$angle" && gclient sync --nohooks --force)
|
|
python3 - "$WORK_DIR/cross-sources.json" "$skia_sharp/externals/skia" "$angle" "$SOURCE_LOCK" <<'PY'
|
|
import json, sys
|
|
from pathlib import Path
|
|
Path(sys.argv[1]).write_text(json.dumps({'skia': sys.argv[2], 'angle': sys.argv[3],
|
|
'angle_gn': sys.argv[3] + '/buildtools/linux64/gn', 'source_lock': sys.argv[4]}, indent=2) + '\n')
|
|
PY
|
|
echo "Prepared $WORK_DIR/cross-sources.json"
|