X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=.gitlab-ci%2Fcontainer%2Flava_arm.sh;h=3b5cad3e9f024d8cfc7cfa3a8fb096412afe3963;hb=c32bd325e7688c781b7e5de58a2d0534c82f00a0;hp=429dca0e1d6ddb561b0a013b888971e9029f207c;hpb=506e9d5fc712b828584fe6e7afe980efb225e727;p=mesa.git diff --git a/.gitlab-ci/container/lava_arm.sh b/.gitlab-ci/container/lava_arm.sh index 429dca0e1d6..3b5cad3e9f0 100644 --- a/.gitlab-ci/container/lava_arm.sh +++ b/.gitlab-ci/container/lava_arm.sh @@ -3,184 +3,61 @@ 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 "mesa@example.com" -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\* +if [[ "$DEBIAN_ARCH" = "arm64" ]]; then + GCC_ARCH="aarch64-linux-gnu" + KERNEL_ARCH="arm64" + DEFCONFIG="arch/arm64/configs/defconfig" + 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" + KERNEL_IMAGE_NAME="Image" +else + GCC_ARCH="arm-linux-gnueabihf" + KERNEL_ARCH="arm" + DEFCONFIG="arch/arm/configs/multi_v7_defconfig" + DEVICE_TREES="arch/arm/boot/dts/rk3288-veyron-jaq.dtb arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb" + KERNEL_IMAGE_NAME="zImage" +fi + +############### Build dEQP runner +if [[ "$DEBIAN_ARCH" = "armhf" ]]; then + EXTRA_MESON_ARGS="--cross-file /cross_file-armhf.txt" +fi +. .gitlab-ci/build-cts-runner.sh +mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin +mv /usr/local/bin/deqp-runner /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin/. + + +############### Build dEQP +EXTRA_CMAKE_ARGS="-DCMAKE_C_COMPILER=${GCC_ARCH}-gcc -DCMAKE_CXX_COMPILER=${GCC_ARCH}-g++" +STRIP_CMD="${GCC_ARCH}-strip" +. .gitlab-ci/build-deqp-gl.sh +mv /deqp /lava-files/rootfs-${DEBIAN_ARCH}/. ############### 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}-" +KERNEL_URL="https://gitlab.freedesktop.org/tomeu/linux/-/archive/v5.5-rc5-panfrost-fixes/linux-v5.5-rc5-panfrost-fixes.tar.gz" + +if [[ "$DEBIAN_ARCH" = "armhf" ]]; then + export ARCH=${KERNEL_ARCH} + export CROSS_COMPILE="${GCC_ARCH}-" +fi -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 +mkdir -p kernel +wget -qO- ${KERNEL_URL} | tar -xz --strip-components=1 -C kernel +pushd kernel +./scripts/kconfig/merge_config.sh ${DEFCONFIG} ../.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 +cp arch/${KERNEL_ARCH}/boot/${KERNEL_IMAGE_NAME} /lava-files/. +cp ${DEVICE_TREES} /lava-files/. +popd +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 +debootstrap --variant=minbase --arch=${DEBIAN_ARCH} testing /lava-files/rootfs-${DEBIAN_ARCH}/ http://deb.debian.org/debian +cat /lava-files/rootfs-${DEBIAN_ARCH}/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 +cp .gitlab-ci/create-rootfs.sh /lava-files/rootfs-${DEBIAN_ARCH}/. +chroot /lava-files/rootfs-${DEBIAN_ARCH} sh /create-rootfs.sh +rm /lava-files/rootfs-${DEBIAN_ARCH}/create-rootfs.sh