8 MINIO_PATH
="minio-packet.freedesktop.org/mesa-lava/$1/${DISTRIBUTION_TAG}/${DEBIAN_ARCH}"
9 if wget
-q --method=HEAD
"https://${MINIO_PATH}/done"; then
14 # If remote files are up-to-date, skip rebuilding them
15 check_minio
"mesa/mesa"
16 check_minio
"${CI_PROJECT_PATH}"
18 . .gitlab-ci
/container
/container_pre_build.sh
20 if [[ "$DEBIAN_ARCH" = "arm64" ]]; then
21 GCC_ARCH
="aarch64-linux-gnu"
23 DEFCONFIG
="arch/arm64/configs/defconfig"
24 DEVICE_TREES
="arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dtb arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dtb arch/arm64/boot/dts/qcom/apq8016-sbc.dtb"
25 KERNEL_IMAGE_NAME
="Image"
26 elif [[ "$DEBIAN_ARCH" = "armhf" ]]; then
27 GCC_ARCH
="arm-linux-gnueabihf"
29 DEFCONFIG
="arch/arm/configs/multi_v7_defconfig"
30 DEVICE_TREES
="arch/arm/boot/dts/rk3288-veyron-jaq.dtb arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb"
31 KERNEL_IMAGE_NAME
="zImage"
32 . .gitlab-ci
/create-cross-file.sh armhf
34 GCC_ARCH
="x86_64-linux-gnu"
36 DEFCONFIG
="arch/x86/configs/x86_64_defconfig"
38 KERNEL_IMAGE_NAME
="bzImage"
41 # Determine if we're in a cross build.
42 if [[ -e /cross_file-
$DEBIAN_ARCH.txt
]]; then
43 EXTRA_MESON_ARGS
="--cross-file /cross_file-$DEBIAN_ARCH.txt"
44 EXTRA_CMAKE_ARGS
="-DCMAKE_TOOLCHAIN_FILE=/toolchain-$DEBIAN_ARCH.cmake"
46 export ARCH
=${KERNEL_ARCH}
47 export CROSS_COMPILE
="${GCC_ARCH}-"
51 apt-get
install -y automake \
75 if [[ "$DEBIAN_ARCH" = "armhf" ]]; then
76 apt-get
install -y libboost-dev
:armhf \
77 libegl1-mesa-dev
:armhf \
80 libgles2-mesa-dev
:armhf \
83 libpython3-dev
:armhf \
85 libxcb-keysyms1-dev
:armhf \
89 ############### Build dEQP runner
90 . .gitlab-ci
/build-cts-runner.sh
91 mkdir
-p /lava-files
/rootfs-
${DEBIAN_ARCH}/usr
/bin
92 mv /usr
/local
/bin
/deqp-runner
/lava-files
/rootfs-
${DEBIAN_ARCH}/usr
/bin
/.
95 ############### Build dEQP
96 STRIP_CMD
="${GCC_ARCH}-strip"
97 if [ -n "$INCLUDE_VK_CTS" ]; then
98 DEQP_TARGET
=surfaceless . .gitlab-ci
/build-deqp-vk.sh
100 . .gitlab-ci
/build-deqp-gl.sh
103 mv /deqp
/lava-files
/rootfs-
${DEBIAN_ARCH}/.
106 ############### Build apitrace
107 . .gitlab-ci
/build-apitrace.sh
108 mkdir
-p /lava-files
/rootfs-
${DEBIAN_ARCH}/apitrace
109 mv /apitrace
/build
/lava-files
/rootfs-
${DEBIAN_ARCH}/apitrace
112 mkdir
-p /lava-files
/rootfs-
${DEBIAN_ARCH}/waffle
113 mv /waffle
/build
/lava-files
/rootfs-
${DEBIAN_ARCH}/waffle
117 ############### Build renderdoc
118 EXTRA_CMAKE_ARGS
+=" -DENABLE_XCB=false"
119 . .gitlab-ci
/build-renderdoc.sh
120 mkdir
-p /lava-files
/rootfs-
${DEBIAN_ARCH}/renderdoc
121 mv /renderdoc
/build
/lava-files
/rootfs-
${DEBIAN_ARCH}/renderdoc
125 ############### Build libdrm
126 EXTRA_MESON_ARGS
+=" -D prefix=/libdrm"
127 . .gitlab-ci
/build-libdrm.sh
128 mkdir
-p /lava-files
/rootfs-
${DEBIAN_ARCH}/usr
/lib
/$GCC_ARCH
129 find /libdrm
/ -name lib\
*\.so\
* |
xargs cp -t /lava-files
/rootfs-
${DEBIAN_ARCH}/usr
/lib
/$GCC_ARCH/.
133 ############### Cross-build kernel
135 wget
-qO- ${KERNEL_URL} |
tar -xz --strip-components=1 -C kernel
137 .
/scripts
/kconfig
/merge_config.sh
${DEFCONFIG} ..
/.gitlab-ci
/${KERNEL_ARCH}.config
138 make ${KERNEL_IMAGE_NAME}
139 for image
in ${KERNEL_IMAGE_NAME}; do
140 cp arch
/${KERNEL_ARCH}/boot
/${image} /lava-files
/.
142 if [[ -n ${DEVICE_TREES} ]]; then
144 cp ${DEVICE_TREES} /lava-files
/.
147 if [[ ${DEBIAN_ARCH} = "arm64" ]] && which mkimage
> /dev
/null
; then
153 -d arch
/arm64
/boot
/Image.lzma \
155 -b arch
/arm64
/boot
/dts
/qcom
/sdm845-cheza-r3.dtb \
156 /lava-files
/cheza-kernel
162 ############### Create rootfs
166 --arch=${DEBIAN_ARCH} \
167 --components main
,contrib
,non-free \
169 /lava-files
/rootfs-
${DEBIAN_ARCH}/ \
170 http
://deb.debian.org
/debian
172 cat /lava-files
/rootfs-
${DEBIAN_ARCH}/debootstrap
/debootstrap.log
175 cp .gitlab-ci
/create-rootfs.sh
/lava-files
/rootfs-
${DEBIAN_ARCH}/.
176 cp .gitlab-ci
/container
/llvm-snapshot.gpg.key
/lava-files
/rootfs-
${DEBIAN_ARCH}/.
177 chroot
/lava-files
/rootfs-
${DEBIAN_ARCH} sh
/create-rootfs.sh
178 rm /lava-files
/rootfs-
${DEBIAN_ARCH}/create-rootfs.sh
179 rm /lava-files
/rootfs-
${DEBIAN_ARCH}/llvm-snapshot.gpg.key
180 du
-ah /lava-files
/rootfs-
${DEBIAN_ARCH} |
sort -h |
tail -100
181 pushd /lava-files
/rootfs-
${DEBIAN_ARCH}
182 tar cvzf
/lava-files
/lava-rootfs.tgz .
185 if [ ${DEBIAN_ARCH} = arm64
]; then
186 # Pull down a specific build of qcomlt/release/qcomlt-5.4 8c79b3d12355
187 # ("Merge tag 'v5.4.23' into release/qcomlt-5.4"), where I used the
189 # http://snapshots.linaro.org/96boards/dragonboard820c/linaro/debian/457/config-5.4.0-qcomlt-arm64
190 # with the following merged in:
196 # Reason: 5.5 has a big stack of oopses and warns on db820c. 4.14-5.4
197 # linaro kernel binaries (see above .config link) have these as modules
198 # and distributed the modules only in the debian system, not the initrd,
199 # so they're very hard to extract (involving simg2img and loopback
200 # mounting). 4.11 is missing d72fea538fe6 ("drm/msm: Fix the check for
201 # the command size") so it can't actually run fredreno. qcomlt-4.14 is
202 # unstable at boot (~10% instaboot rate). The 5.4 qcomlt kernel with msm
203 # built in seems like the easiest way to go.
204 wget https
://people.freedesktop.org
/~anholt
/qcomlt-5.4
-msm-build/Image.gz
-O Image.gz \
205 -O /lava-files
/db820c-kernel
206 wget https
://people.freedesktop.org
/~anholt
/qcomlt-5.4
-msm-build/apq8096-db820c.dtb \
207 -O /lava-files
/db820c.dtb
209 # Make a gzipped copy of the Image for db410c.
210 gzip -k /lava-files
/Image
212 # Add missing a630 firmware, added to debian packge in apr 2020
213 wget https
://git.kernel.org
/pub
/scm
/linux
/kernel
/git
/firmware
/linux-firmware.git
/plain
/qcom
/a630_gmu.bin \
214 -O /lava-files
/rootfs-arm64
/lib
/firmware
/qcom
/a630_gmu.bin
215 wget https
://git.kernel.org
/pub
/scm
/linux
/kernel
/git
/firmware
/linux-firmware.git
/plain
/qcom
/a630_sqe.fw \
216 -O /lava-files
/rootfs-arm64
/lib
/firmware
/qcom
/a630_sqe.fw
219 . .gitlab-ci
/container
/container_post_build.sh
221 ############### Upload the files!
222 if [ -n "$UPLOAD_FOR_LAVA" ]; then
223 ci-fairy minio login
$CI_JOB_JWT
224 FILES_TO_UPLOAD
="lava-rootfs.tgz \
227 if [[ -n $DEVICE_TREES ]]; then
228 FILES_TO_UPLOAD
="$FILES_TO_UPLOAD $(basename -a $DEVICE_TREES)"
231 for f
in $FILES_TO_UPLOAD; do
232 ci-fairy minio
cp /lava-files
/$f \
233 minio
://${MINIO_PATH}/$f
236 touch /lava-files
/done
237 ci-fairy minio
cp /lava-files
/done minio
://${MINIO_PATH}/done