mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 22:20:14 +01:00
ci/angle: Rework building ANGLE (again)
Make setting the ANGLE_ARCH variable optional by providing a default based on DEBIAN_ARCH, while keeping it possible to override it, which is expected to be necessary for the Android-arm64 build. Exclude unnecessary third party dependencies in the .gclient file, which allows us to delete our first local patch. Thanks to Yuly Novikov for the suggestion. Use -no-history for gclient sync, which is equivalent to git's --depth=1 argument. This greatly speeds up the process of fetching sources. Thanks to this speedup fetching third_party/catapult is no longer an issue, allowing us to remove our second local patch. Since we're no longer applying local patches, use ANGLE_REV and /angle/version as the base for our version check on Android. Signed-off-by: Valentine Burley <valentine.burley@collabora.com> Reviewed-by: Antonio Ospite <None> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33467>
This commit is contained in:
parent
f535d5d591
commit
05021a1786
7 changed files with 24 additions and 215 deletions
|
|
@ -7,11 +7,17 @@
|
||||||
|
|
||||||
set -uex
|
set -uex
|
||||||
|
|
||||||
uncollapsed_section_start angle "Building angle"
|
uncollapsed_section_start angle "Building ANGLE"
|
||||||
|
|
||||||
ANGLE_REV="76025caa1a059f464a2b0e8f879dbd4746f092b9"
|
ANGLE_REV="76025caa1a059f464a2b0e8f879dbd4746f092b9"
|
||||||
SCRIPTS_DIR="$(pwd)/.gitlab-ci"
|
|
||||||
ANGLE_PATCH_DIR="${SCRIPTS_DIR}/container/patches"
|
# Set ANGLE_ARCH based on DEBIAN_ARCH if it hasn't been explicitly defined
|
||||||
|
if [[ -z "${ANGLE_ARCH:-}" ]]; then
|
||||||
|
case "$DEBIAN_ARCH" in
|
||||||
|
amd64) ANGLE_ARCH=x64;;
|
||||||
|
arm64) ANGLE_ARCH=arm64;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
# DEPOT tools
|
# DEPOT tools
|
||||||
git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git /depot-tools
|
git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git /depot-tools
|
||||||
|
|
@ -26,33 +32,15 @@ git remote add origin https://chromium.googlesource.com/angle/angle.git
|
||||||
git fetch --depth 1 origin "$ANGLE_REV"
|
git fetch --depth 1 origin "$ANGLE_REV"
|
||||||
git checkout FETCH_HEAD
|
git checkout FETCH_HEAD
|
||||||
|
|
||||||
angle_patch_files=(
|
echo "$ANGLE_REV" > /angle/version
|
||||||
build-angle_deps_Make-more-sources-conditional.patch
|
|
||||||
)
|
|
||||||
for patch in "${angle_patch_files[@]}"; do
|
|
||||||
echo "Apply patch to ANGLE from ${patch}"
|
|
||||||
GIT_COMMITTER_DATE="$(LC_TIME=C date -d@0)" git am < "${ANGLE_PATCH_DIR}/${patch}"
|
|
||||||
done
|
|
||||||
|
|
||||||
{
|
|
||||||
echo "ANGLE base version $ANGLE_REV"
|
|
||||||
echo "The following local patches are applied on top:"
|
|
||||||
git log --reverse --oneline $ANGLE_REV.. --format='- %s'
|
|
||||||
} > /angle/version
|
|
||||||
|
|
||||||
# Save the current git hash to /angle/hash after applying local patches
|
|
||||||
git rev-parse HEAD > /angle/hash
|
|
||||||
|
|
||||||
GCLIENT_CUSTOM_VARS=()
|
GCLIENT_CUSTOM_VARS=()
|
||||||
GCLIENT_CUSTOM_VARS+=('--custom-var=angle_enable_cl=False')
|
GCLIENT_CUSTOM_VARS+=('--custom-var=angle_enable_cl=False')
|
||||||
GCLIENT_CUSTOM_VARS+=('--custom-var=angle_enable_cl_testing=False')
|
GCLIENT_CUSTOM_VARS+=('--custom-var=angle_enable_cl_testing=False')
|
||||||
GCLIENT_CUSTOM_VARS+=('--custom-var=angle_enable_vulkan_validation_layers=False')
|
GCLIENT_CUSTOM_VARS+=('--custom-var=angle_enable_vulkan_validation_layers=False')
|
||||||
GCLIENT_CUSTOM_VARS+=('--custom-var=angle_enable_wgpu=False')
|
GCLIENT_CUSTOM_VARS+=('--custom-var=angle_enable_wgpu=False')
|
||||||
GCLIENT_CUSTOM_VARS+=('--custom-var=build_allow_regenerate=False')
|
|
||||||
GCLIENT_CUSTOM_VARS+=('--custom-var=build_angle_deqp_tests=False')
|
GCLIENT_CUSTOM_VARS+=('--custom-var=build_angle_deqp_tests=False')
|
||||||
GCLIENT_CUSTOM_VARS+=('--custom-var=build_angle_perftests=False')
|
GCLIENT_CUSTOM_VARS+=('--custom-var=build_angle_perftests=False')
|
||||||
GCLIENT_CUSTOM_VARS+=('--custom-var=build_with_catapult=False')
|
|
||||||
GCLIENT_CUSTOM_VARS+=('--custom-var=build_with_swiftshader=False')
|
|
||||||
if [[ "$ANGLE_TARGET" == "android" ]]; then
|
if [[ "$ANGLE_TARGET" == "android" ]]; then
|
||||||
GCLIENT_CUSTOM_VARS+=('--custom-var=checkout_android=True')
|
GCLIENT_CUSTOM_VARS+=('--custom-var=checkout_android=True')
|
||||||
fi
|
fi
|
||||||
|
|
@ -62,20 +50,17 @@ gclient config --name REPLACE-WITH-A-DOT --unmanaged \
|
||||||
"${GCLIENT_CUSTOM_VARS[@]}" \
|
"${GCLIENT_CUSTOM_VARS[@]}" \
|
||||||
https://chromium.googlesource.com/angle/angle.git
|
https://chromium.googlesource.com/angle/angle.git
|
||||||
sed -e 's/REPLACE-WITH-A-DOT/./;' -i .gclient
|
sed -e 's/REPLACE-WITH-A-DOT/./;' -i .gclient
|
||||||
gclient sync -j"${FDO_CI_CONCURRENT:-4}"
|
sed -e 's|"custom_deps" : {|"custom_deps" : {\
|
||||||
|
"third_party/clspv/src": None,\
|
||||||
# TODO: The following patch seems necessary to avoid some errors when running
|
"third_party/dawn": None,\
|
||||||
# `gn gen out/Release` for Android, investigate and see if there is a better
|
"third_party/glmark2/src": None,\
|
||||||
# way to handle this.
|
"third_party/libjpeg_turbo": None,\
|
||||||
angle_build_patch_files=(
|
"third_party/llvm/src": None,\
|
||||||
build-angle-build_deps_fix-build-error.patch
|
"third_party/OpenCL-CTS/src": None,\
|
||||||
)
|
"third_party/SwiftShader": None,\
|
||||||
pushd build/
|
"third_party/VK-GL-CTS/src": None,\
|
||||||
for patch in "${angle_build_patch_files[@]}"; do
|
"third_party/vulkan-validation-layers/src": None,|' -i .gclient
|
||||||
echo "Apply patch to ANGLE build from ${patch}"
|
gclient sync --no-history -j"${FDO_CI_CONCURRENT:-4}"
|
||||||
GIT_COMMITTER_DATE="$(LC_TIME=C date -d@0)" git am < "${ANGLE_PATCH_DIR}/${patch}"
|
|
||||||
done
|
|
||||||
popd
|
|
||||||
|
|
||||||
mkdir -p out/Release
|
mkdir -p out/Release
|
||||||
cat > out/Release/args.gn <<EOF
|
cat > out/Release/args.gn <<EOF
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,6 @@ rm "$ndk.zip"
|
||||||
############### Build ANGLE
|
############### Build ANGLE
|
||||||
|
|
||||||
ANGLE_TARGET=android \
|
ANGLE_TARGET=android \
|
||||||
ANGLE_ARCH=x64 \
|
|
||||||
DEBIAN_ARCH=amd64 \
|
DEBIAN_ARCH=amd64 \
|
||||||
. .gitlab-ci/container/build-angle.sh
|
. .gitlab-ci/container/build-angle.sh
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -306,7 +306,6 @@ rm -rf /apitrace
|
||||||
############### Build ANGLE
|
############### Build ANGLE
|
||||||
if [[ "$DEBIAN_ARCH" = "amd64" ]]; then
|
if [[ "$DEBIAN_ARCH" = "amd64" ]]; then
|
||||||
ANGLE_TARGET=linux \
|
ANGLE_TARGET=linux \
|
||||||
ANGLE_ARCH=x64 \
|
|
||||||
. .gitlab-ci/container/build-angle.sh
|
. .gitlab-ci/container/build-angle.sh
|
||||||
mv /angle $ROOTFS/.
|
mv /angle $ROOTFS/.
|
||||||
rm -rf /angle
|
rm -rf /angle
|
||||||
|
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
From 3b19c8cd2da7060574304c98d79f23be3158f297 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Antonio Ospite <antonio.ospite@collabora.com>
|
|
||||||
Date: Mon, 20 Jan 2025 09:38:46 +0100
|
|
||||||
Subject: [PATCH] Fix building on Android with minimal dependencies
|
|
||||||
|
|
||||||
The fixes the following error:
|
|
||||||
|
|
||||||
+ gn gen out/Android
|
|
||||||
ERROR at //build/android/BUILD.gn:233:5: Unable to load "/angle-android-build/third_party/catapult/tracing/BUILD.gn".
|
|
||||||
"//third_party/catapult/tracing:convert_chart_json",
|
|
||||||
^--------------------------------------------------
|
|
||||||
---
|
|
||||||
android/BUILD.gn | 1 -
|
|
||||||
1 file changed, 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/android/BUILD.gn b/android/BUILD.gn
|
|
||||||
index 3c6fc6ab5..db25974a6 100644
|
|
||||||
--- a/android/BUILD.gn
|
|
||||||
+++ b/android/BUILD.gn
|
|
||||||
@@ -230,7 +230,6 @@ python_library("resource_sizes_py") {
|
|
||||||
pydeps_file = "resource_sizes.pydeps"
|
|
||||||
data_deps = [
|
|
||||||
":devil_chromium_py",
|
|
||||||
- "//third_party/catapult/tracing:convert_chart_json",
|
|
||||||
]
|
|
||||||
|
|
||||||
data = [
|
|
||||||
--
|
|
||||||
2.47.1
|
|
||||||
|
|
||||||
|
|
@ -1,144 +0,0 @@
|
||||||
From 2f4a38ecfde470abcd5d3c0ae7337bf780343469 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Daniel Stone <daniels@collabora.com>
|
|
||||||
Date: Tue, 15 Oct 2024 16:02:26 +0100
|
|
||||||
Subject: [PATCH] deps: Make more sources conditional
|
|
||||||
|
|
||||||
Fetching all the dependent sources - including at least one copy of LLVM
|
|
||||||
- can take a surprising amount of time. Mesa needs to build ANGLE as
|
|
||||||
part of CI, and the cost of downloading all the sources all of the time
|
|
||||||
is not OK for the number of dependencies we don't need during the build.
|
|
||||||
---
|
|
||||||
DEPS | 33 +++++++++++++++++++++++----------
|
|
||||||
1 file changed, 23 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
Submitted upstream at:
|
|
||||||
https://chromium-review.googlesource.com/c/angle/angle/+/5937820
|
|
||||||
|
|
||||||
diff --git a/DEPS b/DEPS
|
|
||||||
index 61263fb7af..0cff8c3126 100644
|
|
||||||
--- a/DEPS
|
|
||||||
+++ b/DEPS
|
|
||||||
@@ -17,6 +17,17 @@ gclient_gn_args = [
|
|
||||||
]
|
|
||||||
|
|
||||||
vars = {
|
|
||||||
+ 'angle_enable_cl': True,
|
|
||||||
+ 'angle_enable_cl_testing': False,
|
|
||||||
+ 'angle_enable_vulkan': True,
|
|
||||||
+ 'angle_enable_vulkan_validation_layers': True,
|
|
||||||
+ 'angle_enable_wgpu': True,
|
|
||||||
+ 'build_angle_deqp_tests': True,
|
|
||||||
+ 'build_angle_perftests': True,
|
|
||||||
+ 'build_with_swiftshader': True,
|
|
||||||
+ 'use_custom_libcxx': True,
|
|
||||||
+ 'export_libcxxapi_from_executables': True,
|
|
||||||
+
|
|
||||||
'android_git': 'https://android.googlesource.com',
|
|
||||||
'chromium_git': 'https://chromium.googlesource.com',
|
|
||||||
'chrome_internal_git': 'https://chrome-internal.googlesource.com',
|
|
||||||
@@ -673,7 +684,7 @@ deps = {
|
|
||||||
|
|
||||||
'third_party/catapult': {
|
|
||||||
'url': Var('chromium_git') + '/catapult.git' + '@' + Var('catapult_revision'),
|
|
||||||
- 'condition': 'not build_with_chromium',
|
|
||||||
+ 'condition': 'build_with_catapult and not build_with_chromium',
|
|
||||||
},
|
|
||||||
|
|
||||||
# Cherry is a dEQP/VK-GL-CTS management GUI written in Go. We use it for viewing test results.
|
|
||||||
@@ -689,7 +700,7 @@ deps = {
|
|
||||||
|
|
||||||
'third_party/clspv/src': {
|
|
||||||
'url': Var('chromium_git') + '/external/github.com/google/clspv@a173c052455434a422bcfe5c12ffe44d574fd6e1',
|
|
||||||
- 'condition': 'not build_with_chromium',
|
|
||||||
+ 'condition': 'angle_enable_cl and angle_enable_vulkan and not build_with_chromium',
|
|
||||||
},
|
|
||||||
|
|
||||||
'third_party/cpu_features/src': {
|
|
||||||
@@ -700,7 +711,7 @@ deps = {
|
|
||||||
|
|
||||||
'third_party/dawn': {
|
|
||||||
'url': Var('dawn_git') + '/dawn.git' + '@' + Var('dawn_revision'),
|
|
||||||
- 'condition': 'not build_with_chromium'
|
|
||||||
+ 'condition': 'angle_enable_wgpu and not build_with_chromium'
|
|
||||||
},
|
|
||||||
|
|
||||||
'third_party/depot_tools': {
|
|
||||||
@@ -745,6 +756,7 @@ deps = {
|
|
||||||
# glmark2 is a GPL3-licensed OpenGL ES 2.0 benchmark. We use it for testing.
|
|
||||||
'third_party/glmark2/src': {
|
|
||||||
'url': Var('chromium_git') + '/external/github.com/glmark2/glmark2@ca8de51fedb70bace5351c6b002eb952c747e889',
|
|
||||||
+ 'condition': 'build_angle_perftests',
|
|
||||||
},
|
|
||||||
|
|
||||||
'third_party/googletest': {
|
|
||||||
@@ -777,7 +789,7 @@ deps = {
|
|
||||||
# libjpeg_turbo is used by glmark2.
|
|
||||||
'third_party/libjpeg_turbo': {
|
|
||||||
'url': Var('chromium_git') + '/chromium/deps/libjpeg_turbo.git@927aabfcd26897abb9776ecf2a6c38ea5bb52ab6',
|
|
||||||
- 'condition': 'not build_with_chromium',
|
|
||||||
+ 'condition': 'build_angle_perftests and not build_with_chromium',
|
|
||||||
},
|
|
||||||
|
|
||||||
'third_party/libpng/src': {
|
|
||||||
@@ -787,7 +799,7 @@ deps = {
|
|
||||||
|
|
||||||
'third_party/llvm/src': {
|
|
||||||
'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project@d222fa4521531cc4ac14b8e157d231c108c003be',
|
|
||||||
- 'condition': 'not build_with_chromium',
|
|
||||||
+ 'condition': '(build_with_swiftshader or (angle_enable_cl and angle_enable_vulkan)) and not build_with_chromium',
|
|
||||||
},
|
|
||||||
|
|
||||||
'third_party/jdk': {
|
|
||||||
@@ -824,12 +836,12 @@ deps = {
|
|
||||||
|
|
||||||
'third_party/libc++/src': {
|
|
||||||
'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxx.git@6a68fd412b9aecd515a20a7cf84d11b598bfaf96',
|
|
||||||
- 'condition': 'not build_with_chromium',
|
|
||||||
+ 'condition': 'use_custom_libcxx and not build_with_chromium',
|
|
||||||
},
|
|
||||||
|
|
||||||
'third_party/libc++abi/src': {
|
|
||||||
'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxxabi.git@9a1d90c3b412d5ebeb97a6e33d98e1d0dd923221',
|
|
||||||
- 'condition': 'not build_with_chromium',
|
|
||||||
+ 'condition': 'export_libcxxapi_from_executables and not build_with_chromium',
|
|
||||||
},
|
|
||||||
|
|
||||||
'third_party/libunwind/src': {
|
|
||||||
@@ -872,7 +884,7 @@ deps = {
|
|
||||||
|
|
||||||
'third_party/OpenCL-CTS/src': {
|
|
||||||
'url': Var('chromium_git') + '/external/github.com/KhronosGroup/OpenCL-CTS@e0a31a03fc8f816d59fd8b3051ac6a61d3fa50c6',
|
|
||||||
- 'condition': 'not build_with_chromium',
|
|
||||||
+ 'condition': 'angle_enable_cl_testing and not build_with_chromium',
|
|
||||||
},
|
|
||||||
|
|
||||||
'third_party/OpenCL-Docs/src': {
|
|
||||||
@@ -968,7 +980,7 @@ deps = {
|
|
||||||
|
|
||||||
'third_party/SwiftShader': {
|
|
||||||
'url': Var('swiftshader_git') + '/SwiftShader@7a9a492a38b7c701f7c96a15a76046aed8f8c0c3',
|
|
||||||
- 'condition': 'not build_with_chromium',
|
|
||||||
+ 'condition': 'build_with_swiftshader and not build_with_chromium',
|
|
||||||
},
|
|
||||||
|
|
||||||
'third_party/turbine/cipd': {
|
|
||||||
@@ -984,6 +996,7 @@ deps = {
|
|
||||||
|
|
||||||
'third_party/VK-GL-CTS/src': {
|
|
||||||
'url': Var('chromium_git') + '/external/github.com/KhronosGroup/VK-GL-CTS' + '@' + Var('vk_gl_cts_revision'),
|
|
||||||
+ 'condition': 'build_angle_deqp_tests',
|
|
||||||
},
|
|
||||||
|
|
||||||
'third_party/vulkan-deps': {
|
|
||||||
@@ -1038,7 +1051,7 @@ deps = {
|
|
||||||
|
|
||||||
'third_party/vulkan-validation-layers/src': {
|
|
||||||
'url': '{chromium_git}/external/github.com/KhronosGroup/Vulkan-ValidationLayers@b63e9bd51fbd7bf8fea161a4f7c06994abc24b75',
|
|
||||||
- 'condition': 'not build_with_chromium',
|
|
||||||
+ 'condition': 'angle_enable_vulkan_validation_layers and not build_with_chromium',
|
|
||||||
},
|
|
||||||
|
|
||||||
'third_party/vulkan_memory_allocator': {
|
|
||||||
--
|
|
||||||
2.46.2
|
|
||||||
|
|
||||||
|
|
@ -172,7 +172,7 @@ while [ "$($ADB shell dumpsys SurfaceFlinger | grep GLES:)" = "" ] ; do sleep 1;
|
||||||
MESA_RUNTIME_VERSION="$($ADB shell dumpsys SurfaceFlinger | grep GLES:)"
|
MESA_RUNTIME_VERSION="$($ADB shell dumpsys SurfaceFlinger | grep GLES:)"
|
||||||
|
|
||||||
if [ "$USE_ANGLE" = 1 ]; then
|
if [ "$USE_ANGLE" = 1 ]; then
|
||||||
ANGLE_HASH=$(head -c 12 /angle/hash)
|
ANGLE_HASH=$(head -c 12 /angle/version)
|
||||||
if ! printf "%s" "$MESA_RUNTIME_VERSION" | grep --quiet "${ANGLE_HASH}"; then
|
if ! printf "%s" "$MESA_RUNTIME_VERSION" | grep --quiet "${ANGLE_HASH}"; then
|
||||||
echo "Fatal: Android is loading a wrong version of the ANGLE libs: ${ANGLE_HASH}" 1>&2
|
echo "Fatal: Android is loading a wrong version of the ANGLE libs: ${ANGLE_HASH}" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
||||||
|
|
@ -30,10 +30,10 @@ variables:
|
||||||
DEBIAN_ARM64_TEST_IMAGE_VK_PATH: "debian/arm64_test-vk"
|
DEBIAN_ARM64_TEST_IMAGE_VK_PATH: "debian/arm64_test-vk"
|
||||||
DEBIAN_X86_64_TEST_ANDROID_IMAGE_PATH: "debian/x86_64_test-android"
|
DEBIAN_X86_64_TEST_ANDROID_IMAGE_PATH: "debian/x86_64_test-android"
|
||||||
|
|
||||||
DEBIAN_TEST_ANDROID_TAG: "20250210-libdrm"
|
DEBIAN_TEST_ANDROID_TAG: "20250212-re-angle"
|
||||||
DEBIAN_TEST_GL_TAG: "20250204-fix-deqp"
|
DEBIAN_TEST_GL_TAG: "20250204-fix-deqp"
|
||||||
DEBIAN_TEST_VK_TAG: "20250204-fix-deqp"
|
DEBIAN_TEST_VK_TAG: "20250204-fix-deqp"
|
||||||
KERNEL_ROOTFS_TAG: "20250212-angular"
|
KERNEL_ROOTFS_TAG: "20250212-re-angle"
|
||||||
|
|
||||||
DEBIAN_PYUTILS_IMAGE: "debian/x86_64_pyutils"
|
DEBIAN_PYUTILS_IMAGE: "debian/x86_64_pyutils"
|
||||||
DEBIAN_PYUTILS_TAG: "20250129-lavacli"
|
DEBIAN_PYUTILS_TAG: "20250129-lavacli"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue