ci/android: add android to the ci
Add android to the ci, so we can test mesa on it. Add debian/x86_test-android and test-android jobs. One build the container to run tests, and the other execute the tests. Android is executed on top of cuttlefish VM with virgl. Mesa libs are replaced on the cuttlefish image, and deqp and deqp-runner are used to execute tests. Co-developed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Signed-off-by: Helen Koike <helen.koike@collabora.com> Reviewed-by: Sergi Blanch Torné <sergi.blanch.torne@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20019>
This commit is contained in:
99
.gitlab-ci/container/debian/x86_test-android.sh
Normal file
99
.gitlab-ci/container/debian/x86_test-android.sh
Normal file
@@ -0,0 +1,99 @@
|
||||
#!/usr/bin/env bash
|
||||
# The relative paths in this file only become valid at runtime.
|
||||
# shellcheck disable=SC1091
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
|
||||
set -e
|
||||
set -o xtrace
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Ephemeral packages (installed for this script and removed again at the end)
|
||||
STABLE_EPHEMERAL=" \
|
||||
ccache \
|
||||
unzip \
|
||||
dpkg-dev \
|
||||
build-essential:native \
|
||||
config-package-dev \
|
||||
debhelper-compat \
|
||||
cmake \
|
||||
ninja-build \
|
||||
"
|
||||
|
||||
apt-get install -y --no-remove --no-install-recommends \
|
||||
$STABLE_EPHEMERAL \
|
||||
iproute2
|
||||
|
||||
############### Building ...
|
||||
|
||||
. .gitlab-ci/container/container_pre_build.sh
|
||||
|
||||
############### Downloading NDK for native builds for the guest ...
|
||||
|
||||
# Fetch the NDK and extract just the toolchain we want.
|
||||
ndk=$ANDROID_NDK
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
-o $ndk.zip https://dl.google.com/android/repository/$ndk-linux.zip
|
||||
unzip -d / $ndk.zip
|
||||
rm $ndk.zip
|
||||
|
||||
############### Build dEQP runner
|
||||
|
||||
export ANDROID_NDK_HOME=/$ndk
|
||||
. .gitlab-ci/container/build-rust.sh
|
||||
. .gitlab-ci/container/build-deqp-runner.sh
|
||||
|
||||
rm -rf /root/.cargo
|
||||
rm -rf /root/.rustup
|
||||
|
||||
############### Build dEQP GL
|
||||
|
||||
DEQP_TARGET="android" \
|
||||
EXTRA_CMAKE_ARGS="-DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28" \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
############### Downloading Cuttlefish resources ...
|
||||
|
||||
CUTTLEFISH_VERSION=9082637 # Chosen from https://ci.android.com/builds/branches/aosp-master/grid?
|
||||
|
||||
mkdir /cuttlefish
|
||||
pushd /cuttlefish
|
||||
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
-o aosp_cf_x86_64_phone-img-$CUTTLEFISH_VERSION.zip https://ci.android.com/builds/submitted/$CUTTLEFISH_VERSION/aosp_cf_x86_64_phone-userdebug/latest/raw/aosp_cf_x86_64_phone-img-$CUTTLEFISH_VERSION.zip
|
||||
unzip aosp_cf_x86_64_phone-img-$CUTTLEFISH_VERSION.zip
|
||||
rm aosp_cf_x86_64_phone-img-$CUTTLEFISH_VERSION.zip
|
||||
ls -lhS ./*
|
||||
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
https://ci.android.com/builds/submitted/$CUTTLEFISH_VERSION/aosp_cf_x86_64_phone-userdebug/latest/raw/cvd-host_package.tar.gz | tar -xzvf-
|
||||
|
||||
popd
|
||||
|
||||
############### Building and installing Debian package ...
|
||||
|
||||
git clone --depth 1 https://github.com/google/android-cuttlefish.git
|
||||
pushd android-cuttlefish
|
||||
|
||||
pushd base
|
||||
dpkg-buildpackage -uc -us
|
||||
popd
|
||||
|
||||
apt-get install -y ./cuttlefish-base_*.deb
|
||||
|
||||
popd
|
||||
rm -rf android-cuttlefish
|
||||
|
||||
addgroup --system kvm
|
||||
usermod -a -G kvm,cvdnetwork root
|
||||
|
||||
############### Uninstall the build software
|
||||
|
||||
rm -rf "/${ndk:?}"
|
||||
|
||||
ccache --show-stats
|
||||
|
||||
apt-get purge -y \
|
||||
$STABLE_EPHEMERAL
|
||||
|
||||
apt-get autoremove -y --purge
|
@@ -236,6 +236,23 @@ debian/x86_test-vk:
|
||||
needs:
|
||||
- debian/x86_test-vk
|
||||
|
||||
# Debian 11 based x86 test image for Android
|
||||
debian/x86_test-android:
|
||||
extends: .use-debian/x86_test-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-x86_test-android ${DEBIAN_X86_TEST_ANDROID_TAG}
|
||||
ANDROID_NDK: android-ndk-r25b
|
||||
|
||||
.use-debian/x86_test-android:
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_test-base
|
||||
MESA_IMAGE_PATH: ${DEBIAN_X86_TEST_ANDROID_IMAGE_PATH}
|
||||
MESA_IMAGE_TAG: *debian-x86_test-android
|
||||
needs:
|
||||
- debian/x86_test-android
|
||||
|
||||
# Debian 11 based ARM build image
|
||||
debian/arm_build:
|
||||
extends:
|
||||
|
Reference in New Issue
Block a user