17ec681f3Smrg#!/bin/bash 27ec681f3Smrg 37ec681f3Smrgset -e 47ec681f3Smrgset -o xtrace 57ec681f3Smrg 67ec681f3Smrgexport DEBIAN_FRONTEND=noninteractive 77ec681f3Smrg 87ec681f3Smrgcheck_minio() 97ec681f3Smrg{ 107ec681f3Smrg MINIO_PATH="${MINIO_HOST}/mesa-lava/$1/${DISTRIBUTION_TAG}/${DEBIAN_ARCH}" 117ec681f3Smrg if wget -q --method=HEAD "https://${MINIO_PATH}/done"; then 127ec681f3Smrg exit 137ec681f3Smrg fi 147ec681f3Smrg} 157ec681f3Smrg 167ec681f3Smrg# If remote files are up-to-date, skip rebuilding them 177ec681f3Smrgcheck_minio "${FDO_UPSTREAM_REPO}" 187ec681f3Smrgcheck_minio "${CI_PROJECT_PATH}" 197ec681f3Smrg 207ec681f3Smrg. .gitlab-ci/container/container_pre_build.sh 217ec681f3Smrg 227ec681f3Smrg# Install rust, which we'll be using for deqp-runner. It will be cleaned up at the end. 237ec681f3Smrg. .gitlab-ci/container/build-rust.sh 247ec681f3Smrg 257ec681f3Smrgif [[ "$DEBIAN_ARCH" = "arm64" ]]; then 267ec681f3Smrg GCC_ARCH="aarch64-linux-gnu" 277ec681f3Smrg KERNEL_ARCH="arm64" 287ec681f3Smrg DEFCONFIG="arch/arm64/configs/defconfig" 297ec681f3Smrg DEVICE_TREES="arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb" 307ec681f3Smrg DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-gxl-s805x-libretech-ac.dtb" 317ec681f3Smrg DEVICE_TREES+=" arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb" 327ec681f3Smrg DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dtb" 337ec681f3Smrg DEVICE_TREES+=" arch/arm64/boot/dts/qcom/apq8016-sbc.dtb" 347ec681f3Smrg DEVICE_TREES+=" arch/arm64/boot/dts/qcom/apq8096-db820c.dtb" 357ec681f3Smrg DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-g12b-a311d-khadas-vim3.dtb" 367ec681f3Smrg DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-juniper-sku16.dtb" 377ec681f3Smrg DEVICE_TREES+=" arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-nots.dtb" 387ec681f3Smrg KERNEL_IMAGE_NAME="Image" 397ec681f3Smrgelif [[ "$DEBIAN_ARCH" = "armhf" ]]; then 407ec681f3Smrg GCC_ARCH="arm-linux-gnueabihf" 417ec681f3Smrg KERNEL_ARCH="arm" 427ec681f3Smrg DEFCONFIG="arch/arm/configs/multi_v7_defconfig" 437ec681f3Smrg DEVICE_TREES="arch/arm/boot/dts/rk3288-veyron-jaq.dtb" 447ec681f3Smrg DEVICE_TREES+=" arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb" 457ec681f3Smrg DEVICE_TREES+=" arch/arm/boot/dts/imx6q-cubox-i.dtb" 467ec681f3Smrg KERNEL_IMAGE_NAME="zImage" 477ec681f3Smrg . .gitlab-ci/container/create-cross-file.sh armhf 487ec681f3Smrgelse 497ec681f3Smrg GCC_ARCH="x86_64-linux-gnu" 507ec681f3Smrg KERNEL_ARCH="x86_64" 517ec681f3Smrg DEFCONFIG="arch/x86/configs/x86_64_defconfig" 527ec681f3Smrg DEVICE_TREES="" 537ec681f3Smrg KERNEL_IMAGE_NAME="bzImage" 547ec681f3Smrg ARCH_PACKAGES="libva-dev" 557ec681f3Smrgfi 567ec681f3Smrg 577ec681f3Smrg# Determine if we're in a cross build. 587ec681f3Smrgif [[ -e /cross_file-$DEBIAN_ARCH.txt ]]; then 597ec681f3Smrg EXTRA_MESON_ARGS="--cross-file /cross_file-$DEBIAN_ARCH.txt" 607ec681f3Smrg EXTRA_CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=/toolchain-$DEBIAN_ARCH.cmake" 617ec681f3Smrg 627ec681f3Smrg if [ $DEBIAN_ARCH = arm64 ]; then 637ec681f3Smrg RUST_TARGET="aarch64-unknown-linux-gnu" 647ec681f3Smrg elif [ $DEBIAN_ARCH = armhf ]; then 657ec681f3Smrg RUST_TARGET="armv7-unknown-linux-gnueabihf" 667ec681f3Smrg fi 677ec681f3Smrg rustup target add $RUST_TARGET 687ec681f3Smrg export EXTRA_CARGO_ARGS="--target $RUST_TARGET" 697ec681f3Smrg 707ec681f3Smrg export ARCH=${KERNEL_ARCH} 717ec681f3Smrg export CROSS_COMPILE="${GCC_ARCH}-" 727ec681f3Smrgfi 737ec681f3Smrg 747ec681f3Smrgapt-get update 757ec681f3Smrgapt-get install -y --no-remove \ 767ec681f3Smrg ${ARCH_PACKAGES} \ 777ec681f3Smrg automake \ 787ec681f3Smrg bc \ 797ec681f3Smrg cmake \ 807ec681f3Smrg debootstrap \ 817ec681f3Smrg git \ 827ec681f3Smrg glslang-tools \ 837ec681f3Smrg libdrm-dev \ 847ec681f3Smrg libegl1-mesa-dev \ 857ec681f3Smrg libgbm-dev \ 867ec681f3Smrg libgles2-mesa-dev \ 877ec681f3Smrg libpng-dev \ 887ec681f3Smrg libssl-dev \ 897ec681f3Smrg libudev-dev \ 907ec681f3Smrg libvulkan-dev \ 917ec681f3Smrg libwaffle-dev \ 927ec681f3Smrg libwayland-dev \ 937ec681f3Smrg libx11-xcb-dev \ 947ec681f3Smrg libxcb-dri2-0-dev \ 957ec681f3Smrg libxkbcommon-dev \ 967ec681f3Smrg patch \ 977ec681f3Smrg python3-distutils \ 987ec681f3Smrg python3-mako \ 997ec681f3Smrg python3-numpy \ 1007ec681f3Smrg python3-serial \ 1017ec681f3Smrg wget 1027ec681f3Smrg 1037ec681f3Smrg 1047ec681f3Smrgif [[ "$DEBIAN_ARCH" = "armhf" ]]; then 1057ec681f3Smrg apt-get install -y --no-remove \ 1067ec681f3Smrg libegl1-mesa-dev:armhf \ 1077ec681f3Smrg libelf-dev:armhf \ 1087ec681f3Smrg libgbm-dev:armhf \ 1097ec681f3Smrg libgles2-mesa-dev:armhf \ 1107ec681f3Smrg libpng-dev:armhf \ 1117ec681f3Smrg libudev-dev:armhf \ 1127ec681f3Smrg libvulkan-dev:armhf \ 1137ec681f3Smrg libwaffle-dev:armhf \ 1147ec681f3Smrg libwayland-dev:armhf \ 1157ec681f3Smrg libx11-xcb-dev:armhf \ 1167ec681f3Smrg libxkbcommon-dev:armhf 1177ec681f3Smrgfi 1187ec681f3Smrg 1197ec681f3Smrg 1207ec681f3Smrg############### Building 1217ec681f3SmrgSTRIP_CMD="${GCC_ARCH}-strip" 1227ec681f3Smrgmkdir -p /lava-files/rootfs-${DEBIAN_ARCH} 1237ec681f3Smrg 1247ec681f3Smrg 1257ec681f3Smrg############### Build apitrace 1267ec681f3Smrg. .gitlab-ci/container/build-apitrace.sh 1277ec681f3Smrgmkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/apitrace 1287ec681f3Smrgmv /apitrace/build /lava-files/rootfs-${DEBIAN_ARCH}/apitrace 1297ec681f3Smrgrm -rf /apitrace 1307ec681f3Smrg 1317ec681f3Smrg 1327ec681f3Smrg############### Build dEQP runner 1337ec681f3Smrg. .gitlab-ci/container/build-deqp-runner.sh 1347ec681f3Smrgmkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin 1357ec681f3Smrgmv /usr/local/bin/*-runner /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin/. 1367ec681f3Smrg 1377ec681f3Smrg 1387ec681f3Smrg############### Build dEQP 1397ec681f3SmrgDEQP_TARGET=surfaceless . .gitlab-ci/container/build-deqp.sh 1407ec681f3Smrg 1417ec681f3Smrgmv /deqp /lava-files/rootfs-${DEBIAN_ARCH}/. 1427ec681f3Smrg 1437ec681f3Smrg 1447ec681f3Smrg############### Build piglit 1457ec681f3SmrgPIGLIT_OPTS="-DPIGLIT_BUILD_DMA_BUF_TESTS=ON" . .gitlab-ci/container/build-piglit.sh 1467ec681f3Smrgmv /piglit /lava-files/rootfs-${DEBIAN_ARCH}/. 1477ec681f3Smrg 1487ec681f3Smrg############### Build libva tests 1497ec681f3Smrgif [[ "$DEBIAN_ARCH" = "amd64" ]]; then 1507ec681f3Smrg . .gitlab-ci/container/build-va-tools.sh 1517ec681f3Smrg mv /va/bin/* /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin/ 1527ec681f3Smrgfi 1537ec681f3Smrg 1547ec681f3Smrg############### Build libdrm 1557ec681f3SmrgEXTRA_MESON_ARGS+=" -D prefix=/libdrm" 1567ec681f3Smrg. .gitlab-ci/container/build-libdrm.sh 1577ec681f3Smrg 1587ec681f3Smrg############### Build kernel 1597ec681f3Smrg. .gitlab-ci/container/build-kernel.sh 1607ec681f3Smrg 1617ec681f3Smrg############### Delete rust, since the tests won't be compiling anything. 1627ec681f3Smrgrm -rf /root/.cargo 1637ec681f3Smrg 1647ec681f3Smrg############### Create rootfs 1657ec681f3Smrgset +e 1667ec681f3Smrgif ! debootstrap \ 1677ec681f3Smrg --variant=minbase \ 1687ec681f3Smrg --arch=${DEBIAN_ARCH} \ 1697ec681f3Smrg --components main,contrib,non-free \ 1707ec681f3Smrg bullseye \ 1717ec681f3Smrg /lava-files/rootfs-${DEBIAN_ARCH}/ \ 1727ec681f3Smrg http://deb.debian.org/debian; then 1737ec681f3Smrg cat /lava-files/rootfs-${DEBIAN_ARCH}/debootstrap/debootstrap.log 1747ec681f3Smrg exit 1 1757ec681f3Smrgfi 1767ec681f3Smrgset -e 1777ec681f3Smrg 1787ec681f3Smrgcp .gitlab-ci/container/create-rootfs.sh /lava-files/rootfs-${DEBIAN_ARCH}/. 1797ec681f3Smrgchroot /lava-files/rootfs-${DEBIAN_ARCH} sh /create-rootfs.sh 1807ec681f3Smrgrm /lava-files/rootfs-${DEBIAN_ARCH}/create-rootfs.sh 1817ec681f3Smrg 1827ec681f3Smrg 1837ec681f3Smrg############### Install the built libdrm 1847ec681f3Smrg# Dependencies pulled during the creation of the rootfs may overwrite 1857ec681f3Smrg# the built libdrm. Hence, we add it after the rootfs has been already 1867ec681f3Smrg# created. 1877ec681f3Smrgmkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/lib/$GCC_ARCH 1887ec681f3Smrgfind /libdrm/ -name lib\*\.so\* | xargs cp -t /lava-files/rootfs-${DEBIAN_ARCH}/usr/lib/$GCC_ARCH/. 1897ec681f3Smrgmkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/libdrm/ 1907ec681f3Smrgcp -Rp /libdrm/share /lava-files/rootfs-${DEBIAN_ARCH}/libdrm/share 1917ec681f3Smrgrm -rf /libdrm 1927ec681f3Smrg 1937ec681f3Smrg 1947ec681f3Smrgif [ ${DEBIAN_ARCH} = arm64 ]; then 1957ec681f3Smrg # Make a gzipped copy of the Image for db410c. 1967ec681f3Smrg gzip -k /lava-files/Image 1977ec681f3Smrg KERNEL_IMAGE_NAME+=" Image.gz" 1987ec681f3Smrgfi 1997ec681f3Smrg 2007ec681f3Smrgdu -ah /lava-files/rootfs-${DEBIAN_ARCH} | sort -h | tail -100 2017ec681f3Smrgpushd /lava-files/rootfs-${DEBIAN_ARCH} 2027ec681f3Smrg tar czf /lava-files/lava-rootfs.tgz . 2037ec681f3Smrgpopd 2047ec681f3Smrg 2057ec681f3Smrg. .gitlab-ci/container/container_post_build.sh 2067ec681f3Smrg 2077ec681f3Smrg############### Upload the files! 2087ec681f3Smrgci-fairy minio login $CI_JOB_JWT 2097ec681f3SmrgFILES_TO_UPLOAD="lava-rootfs.tgz \ 2107ec681f3Smrg $KERNEL_IMAGE_NAME" 2117ec681f3Smrg 2127ec681f3Smrgif [[ -n $DEVICE_TREES ]]; then 2137ec681f3Smrg FILES_TO_UPLOAD="$FILES_TO_UPLOAD $(basename -a $DEVICE_TREES)" 2147ec681f3Smrgfi 2157ec681f3Smrg 2167ec681f3Smrgfor f in $FILES_TO_UPLOAD; do 2177ec681f3Smrg ci-fairy minio cp /lava-files/$f \ 2187ec681f3Smrg minio://${MINIO_PATH}/$f 2197ec681f3Smrgdone 2207ec681f3Smrg 2217ec681f3Smrgtouch /lava-files/done 2227ec681f3Smrgci-fairy minio cp /lava-files/done minio://${MINIO_PATH}/done 223