• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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