1#!/usr/bin/env bash 2# The relative paths in this file only become valid at runtime. 3# shellcheck disable=SC1091 4# 5# When changing this file, you need to bump the following 6# .gitlab-ci/image-tags.yml tags: 7# DEBIAN_TEST_ANDROID_TAG 8 9set -e 10 11. .gitlab-ci/setup-test-env.sh 12 13set -o xtrace 14 15export DEBIAN_FRONTEND=noninteractive 16 17# Ephemeral packages (installed for this script and removed again at the end) 18EPHEMERAL=( 19 build-essential:native 20 ccache 21 cmake 22 config-package-dev 23 debhelper-compat 24 dpkg-dev 25 ninja-build 26 sudo 27 unzip 28) 29 30DEPS=( 31 iproute2 32) 33apt-get install -y --no-remove --no-install-recommends \ 34 "${DEPS[@]}" "${EPHEMERAL[@]}" 35 36############### Building ... 37 38. .gitlab-ci/container/container_pre_build.sh 39 40############### Downloading NDK for native builds for the guest ... 41 42# Fetch the NDK and extract just the toolchain we want. 43ndk=$ANDROID_NDK 44curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \ 45 -o "$ndk.zip" "https://dl.google.com/android/repository/$ndk-linux.zip" 46unzip -d / "$ndk.zip" 47rm "$ndk.zip" 48 49############### Build dEQP runner 50 51export ANDROID_NDK_HOME=/$ndk 52export RUST_TARGET=x86_64-linux-android 53. .gitlab-ci/container/build-rust.sh 54. .gitlab-ci/container/build-deqp-runner.sh 55 56rm -rf /root/.cargo 57rm -rf /root/.rustup 58 59############### Build dEQP GL 60 61DEQP_API=tools \ 62DEQP_TARGET="android" \ 63EXTRA_CMAKE_ARGS="-DDEQP_ANDROID_EXE=ON -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28" \ 64. .gitlab-ci/container/build-deqp.sh 65 66DEQP_API=GL \ 67DEQP_TARGET="android" \ 68EXTRA_CMAKE_ARGS="-DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28" \ 69. .gitlab-ci/container/build-deqp.sh 70 71DEQP_API=GLES \ 72DEQP_TARGET="android" \ 73EXTRA_CMAKE_ARGS="-DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28" \ 74. .gitlab-ci/container/build-deqp.sh 75 76DEQP_API=VK \ 77DEQP_TARGET="android" \ 78EXTRA_CMAKE_ARGS="-DDEQP_ANDROID_EXE=ON -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28" \ 79. .gitlab-ci/container/build-deqp.sh 80 81rm -rf /VK-GL-CTS 82 83############### Downloading Cuttlefish resources ... 84 85CUTTLEFISH_PROJECT_PATH=ao2/aosp-manifest 86CUTTLEFISH_BUILD_VERSION_TAGS=mesa-venus 87CUTTLEFISH_BUILD_NUMBER=20241108.001 88 89mkdir /cuttlefish 90pushd /cuttlefish 91 92curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \ 93 -o aosp_cf_x86_64_phone-img-$CUTTLEFISH_BUILD_NUMBER.zip "https://${S3_HOST}/${S3_ANDROID_BUCKET}/${CUTTLEFISH_PROJECT_PATH}/aosp-${CUTTLEFISH_BUILD_VERSION_TAGS}.${CUTTLEFISH_BUILD_NUMBER}/aosp_cf_x86_64_phone-img-$CUTTLEFISH_BUILD_NUMBER.zip" 94 95unzip aosp_cf_x86_64_phone-img-$CUTTLEFISH_BUILD_NUMBER.zip 96rm aosp_cf_x86_64_phone-img-$CUTTLEFISH_BUILD_NUMBER.zip 97ls -lhS ./* 98 99curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \ 100 -o cvd-host_package.tar.gz "https://${S3_HOST}/${S3_ANDROID_BUCKET}/${CUTTLEFISH_PROJECT_PATH}/aosp-${CUTTLEFISH_BUILD_VERSION_TAGS}.${CUTTLEFISH_BUILD_NUMBER}/cvd-host_package.tar.gz" 101tar -xzvf cvd-host_package.tar.gz 102rm cvd-host_package.tar.gz 103 104AOSP_KERNEL_PROJECT_PATH=ao2/aosp-kernel-manifest 105AOSP_KERNEL_BUILD_VERSION_TAGS=common-android14-6.1-venus 106AOSP_KERNEL_BUILD_NUMBER=20241107.001 107 108curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \ 109 -o bzImage "https://${S3_HOST}/${S3_ANDROID_BUCKET}/${AOSP_KERNEL_PROJECT_PATH}/aosp-kernel-common-${AOSP_KERNEL_BUILD_VERSION_TAGS}.${AOSP_KERNEL_BUILD_NUMBER}/bzImage" 110curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \ 111 -o initramfs.img "https://${S3_HOST}/${S3_ANDROID_BUCKET}/${AOSP_KERNEL_PROJECT_PATH}/aosp-kernel-common-${AOSP_KERNEL_BUILD_VERSION_TAGS}.${AOSP_KERNEL_BUILD_NUMBER}/initramfs.img" 112 113popd 114 115############### Building and installing Debian package ... 116 117ANDROID_CUTTLEFISH_VERSION=v1.0.1 118 119mkdir android-cuttlefish 120pushd android-cuttlefish 121git init 122git remote add origin https://github.com/google/android-cuttlefish.git 123git fetch --depth 1 origin "$ANDROID_CUTTLEFISH_VERSION" 124git checkout FETCH_HEAD 125 126./tools/buildutils/build_packages.sh 127 128apt-get install -y ./cuttlefish-base_*.deb ./cuttlefish-user_*.deb 129 130popd 131rm -rf android-cuttlefish 132 133addgroup --system kvm 134usermod -a -G kvm,cvdnetwork root 135 136############### Uninstall the build software 137 138rm -rf "/${ndk:?}" 139 140export SUDO_FORCE_REMOVE=yes 141apt-get purge -y "${EPHEMERAL[@]}" 142 143. .gitlab-ci/container/container_post_build.sh 144 145. .gitlab-ci/container/strip-rootfs.sh 146