diff options
Diffstat (limited to '.gitlab-ci/container/lava_arm.sh')
-rw-r--r-- | .gitlab-ci/container/lava_arm.sh | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/.gitlab-ci/container/lava_arm.sh b/.gitlab-ci/container/lava_arm.sh new file mode 100644 index 00000000000..429dca0e1d6 --- /dev/null +++ b/.gitlab-ci/container/lava_arm.sh @@ -0,0 +1,186 @@ +#!/bin/bash + +set -e +set -o xtrace + +############### Install packages for building +dpkg --add-architecture ${DEBIAN_ARCH} +echo 'deb-src https://deb.debian.org/debian testing main' > /etc/apt/sources.list.d/deb-src.list +apt-get update +apt-get -y install ca-certificates +apt-get -y install --no-install-recommends \ + crossbuild-essential-${DEBIAN_ARCH} \ + meson \ + g++ \ + git \ + ccache \ + pkg-config \ + python3-mako \ + python-numpy \ + python-six \ + python-mako \ + python3-pip \ + python3-setuptools \ + python3-six \ + python3-wheel \ + python3-jinja2 \ + bison \ + flex \ + gettext \ + cmake \ + bc \ + libssl-dev \ + lqa \ + csvkit \ + curl \ + unzip \ + wget \ + debootstrap \ + procps \ + qemu-user-static \ + cpio \ + clang-8 \ + llvm-8 \ + libclang-8-dev \ + llvm-8-dev \ + gdc-9 \ + lld-8 \ + nasm \ + libegl1-mesa-dev \ + \ + libdrm-dev:${DEBIAN_ARCH} \ + libx11-dev:${DEBIAN_ARCH} \ + libxxf86vm-dev:${DEBIAN_ARCH} \ + libexpat1-dev:${DEBIAN_ARCH} \ + libsensors-dev:${DEBIAN_ARCH} \ + libxfixes-dev:${DEBIAN_ARCH} \ + libxdamage-dev:${DEBIAN_ARCH} \ + libxext-dev:${DEBIAN_ARCH} \ + x11proto-dev:${DEBIAN_ARCH} \ + libx11-xcb-dev:${DEBIAN_ARCH} \ + libxcb-dri2-0-dev:${DEBIAN_ARCH} \ + libxcb-glx0-dev:${DEBIAN_ARCH} \ + libxcb-xfixes0-dev:${DEBIAN_ARCH} \ + libxcb-dri3-dev:${DEBIAN_ARCH} \ + libxcb-present-dev:${DEBIAN_ARCH} \ + libxcb-randr0-dev:${DEBIAN_ARCH} \ + libxcb-sync-dev:${DEBIAN_ARCH} \ + libxrandr-dev:${DEBIAN_ARCH} \ + libxshmfence-dev:${DEBIAN_ARCH} \ + libelf-dev:${DEBIAN_ARCH} \ + zlib1g-dev:${DEBIAN_ARCH} \ + libglvnd-core-dev:${DEBIAN_ARCH} \ + libgles2-mesa-dev:${DEBIAN_ARCH} \ + libegl1-mesa-dev:${DEBIAN_ARCH} \ + libpng-dev:${DEBIAN_ARCH} + + +############### Install lavacli (remove after it's back into Debian testing) +mkdir -p lavacli +wget -qO- https://git.lavasoftware.org/lava/lavacli/-/archive/v0.9.8/lavacli-v0.9.8.tar.gz | tar -xz --strip-components=1 -C lavacli +pushd lavacli +python3 ./setup.py install +popd + + +############### Cross-build dEQP +mkdir -p /artifacts/rootfs/deqp + +git config --global user.email "[email protected]" +git config --global user.name "Mesa CI" +# XXX: Use --depth 1 once we can drop the cherry-picks. +git clone \ + https://github.com/KhronosGroup/VK-GL-CTS.git \ + -b opengl-es-cts-3.2.5.1 \ + /VK-GL-CTS +cd /VK-GL-CTS +# Fix surfaceless build +git cherry-pick -x 22f41e5e321c6dcd8569c4dad91bce89f06b3670 +git cherry-pick -x 1daa8dff73161ea60ead965bd6c9f2a0a2165648 + +# surfaceless links against libkms and such despite not using it. +sed -i '/gbm/d' targets/surfaceless/surfaceless.cmake +sed -i '/libkms/d' targets/surfaceless/surfaceless.cmake +sed -i '/libgbm/d' targets/surfaceless/surfaceless.cmake + +python3 external/fetch_sources.py + +cd /artifacts/rootfs/deqp +cmake -G Ninja \ + -DDEQP_TARGET=surfaceless \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_COMPILER=${GCC_ARCH}-gcc \ + -DCMAKE_CXX_COMPILER=${GCC_ARCH}-g++ \ + /VK-GL-CTS +ninja +rm -rf /artifacts/rootfs/deqp/external +rm -rf /artifacts/rootfs/deqp/modules/gles31 +rm -rf /artifacts/rootfs/deqp/modules/internal +rm -rf /artifacts/rootfs/deqp/executor +rm -rf /artifacts/rootfs/deqp/execserver +rm -rf /artifacts/rootfs/deqp/modules/egl +rm -rf /artifacts/rootfs/deqp/framework +find . -name CMakeFiles | xargs rm -rf +find . -name lib\*.a | xargs rm -rf +du -sh * +rm -rf /VK-GL-CTS-opengl-es-cts-3.2.5.0 + + +############### Cross-build Volt dEQP runner +mkdir -p /battery +cd /battery +wget https://github.com/VoltLang/Battery/releases/download/v0.1.23/battery-0.1.23-x86_64-linux.tar.gz +tar xzvf battery-0.1.23-x86_64-linux.tar.gz +rm battery-0.1.23-x86_64-linux.tar.gz +mv battery /usr/local/bin +rm -rf /battery + +mkdir -p /volt +cd /volt +mkdir -p Watt Volta dEQP +wget -qO- https://github.com/VoltLang/Watt/archive/v0.1.3.tar.gz | tar -xz --strip-components=1 -C ./Watt +wget -qO- https://github.com/VoltLang/Volta/archive/v0.1.3.tar.gz | tar -xz --strip-components=1 -C ./Volta +wget -qO- https://github.com/Wallbraker/dEQP/archive/v0.1.4.tar.gz | tar -xz --strip-components=1 -C ./dEQP +battery config --release --lto Volta Watt +battery build +battery config --arch ${VOLT_ARCH} --cmd-volta Volta/volta Volta/rt Watt dEQP +battery build +rm /usr/local/bin/battery +cp dEQP/deqp /artifacts/rootfs/deqp/deqp-volt +rm -rf /volt + + +############### Remove LLVM now, so the container image is smaller +apt-get -y remove \*llvm\* + + +############### Cross-build kernel +KERNEL_URL="https://gitlab.freedesktop.org/tomeu/linux/-/archive/panfrost-veyron-fix/linux-panfrost-veyron-fix.tar.gz" +export ARCH=${KERNEL_ARCH} +export CROSS_COMPILE="${GCC_ARCH}-" + +mkdir -p /kernel +wget -qO- ${KERNEL_URL} | tar -xz --strip-components=1 -C /kernel +cd /kernel +./scripts/kconfig/merge_config.sh ${DEFCONFIG} /tmp/clone/.gitlab-ci/${KERNEL_ARCH}.config +make -j12 ${KERNEL_IMAGE_NAME} dtbs +cp arch/${KERNEL_ARCH}/boot/${KERNEL_IMAGE_NAME} /artifacts/. +cp ${DEVICE_TREES} /artifacts/. +rm -rf /kernel + + +############### Create rootfs +cp /tmp/clone/.gitlab-ci/create-rootfs.sh /artifacts/rootfs/. +mkdir -p /artifacts/rootfs/bin +cp /usr/bin/qemu-aarch64-static /artifacts/rootfs/bin +cp /usr/bin/qemu-arm-static /artifacts/rootfs/bin + +set +e +debootstrap --variant=minbase --arch=${DEBIAN_ARCH} testing /artifacts/rootfs/ http://deb.debian.org/debian +cat /artifacts/rootfs/debootstrap/debootstrap.log +set -e +chroot /artifacts/rootfs sh /create-rootfs.sh + +rm /artifacts/rootfs/bin/qemu-arm-static +rm /artifacts/rootfs/bin/qemu-aarch64-static +rm /artifacts/rootfs/create-rootfs.sh |