1b8e80941Smrgvariables: 2b8e80941Smrg DOCKER_DRIVER: overlay2 3b8e80941Smrg 4b8e80941Smrgstages: 5b8e80941Smrg - build-container 6b8e80941Smrg - build 7b8e80941Smrg - test 8b8e80941Smrg 9b8e80941Smrg# Build Docker image with deqp, the rootfs and the build deps for Mesa 10b8e80941Smrgbuild-container: 11b8e80941Smrg stage: build-container 12b8e80941Smrg when: always 13b8e80941Smrg services: 14b8e80941Smrg - docker:dind 15b8e80941Smrg image: docker:latest 16b8e80941Smrg before_script: 17b8e80941Smrg - mkdir -p results 18b8e80941Smrg script: 19b8e80941Smrg - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY 20b8e80941Smrg - time docker pull $CI_REGISTRY_IMAGE:latest || true 21b8e80941Smrg - time docker build 22b8e80941Smrg -t $CI_REGISTRY_IMAGE 23b8e80941Smrg --cache-from $CI_REGISTRY_IMAGE:latest 24b8e80941Smrg src/gallium/drivers/panfrost/ci 25b8e80941Smrg 2>&1 | tee results/docker_build_log.txt 26b8e80941Smrg - time docker push $CI_REGISTRY_IMAGE:latest 2>&1 | tee results/docker_push_log.txt 27b8e80941Smrg 28b8e80941Smrg - docker history $CI_REGISTRY_IMAGE:latest 29b8e80941Smrg 30b8e80941Smrg - "grep -o 'digest: sha256:[0-9a-f]\\+' results/docker_push_log.txt | 31b8e80941Smrg cut -f 2 -d ' ' | 32b8e80941Smrg tee results/docker_image_digest.txt" 33b8e80941Smrg artifacts: 34b8e80941Smrg when: always 35b8e80941Smrg paths: 36b8e80941Smrg - results/ 37b8e80941Smrg 38b8e80941Smrgbuild: 39b8e80941Smrg stage: build 40b8e80941Smrg image: $CI_REGISTRY_IMAGE:latest 41b8e80941Smrg cache: 42b8e80941Smrg paths: 43b8e80941Smrg - ccache 44b8e80941Smrg before_script: 45b8e80941Smrg - mkdir -p results mesa-build 46b8e80941Smrg - mkdir -p ccache 47b8e80941Smrg script: 48b8e80941Smrg - export CCACHE_BASEDIR=$CI_PROJECT_DIR 49b8e80941Smrg - export CCACHE_DIR=$CI_PROJECT_DIR/ccache 50b8e80941Smrg - export PATH="/usr/lib/ccache:$PATH" 51b8e80941Smrg - ccache -s 52b8e80941Smrg 53b8e80941Smrg - /usr/share/meson/debcrossgen --arch arm64 -o /tmp/cross_file.txt 54b8e80941Smrg - meson . mesa-build 55b8e80941Smrg --cross-file /tmp/cross_file.txt 56b8e80941Smrg --libdir /artifacts/rootfs/mesa/lib/aarch64-linux-gnu 57b8e80941Smrg --buildtype release 58b8e80941Smrg -Dgallium-drivers=kmsro,panfrost 59b8e80941Smrg -Ddri-drivers= 60b8e80941Smrg -Dprefix=/artifacts/rootfs/mesa 61b8e80941Smrg - ninja -C mesa-build install 62b8e80941Smrg - du -sh /artifacts/rootfs/mesa/* 63b8e80941Smrg - rm -rf /artifacts/rootfs/mesa/include 64b8e80941Smrg - cp src/gallium/drivers/panfrost/ci/deqp-runner.sh /artifacts/rootfs/deqp/. 65b8e80941Smrg - du -sh /artifacts/rootfs/deqp/* 66b8e80941Smrg - find /artifacts/rootfs/ -type f -printf "%s\t%p\n" | sort -n 67b8e80941Smrg - cd /artifacts/rootfs/ ; find -H | cpio -H newc -v -o | gzip -c - > $CI_PROJECT_DIR/results/panfrost-rootfs.cpio.gz 68b8e80941Smrg - cp /artifacts/Image /artifacts/rk3399-gru-kevin.dtb $CI_PROJECT_DIR/results/. 69b8e80941Smrg 70b8e80941Smrg - cd $CI_PROJECT_DIR 71b8e80941Smrg - src/gallium/drivers/panfrost/ci/generate_lava.py 72b8e80941Smrg --template src/gallium/drivers/panfrost/ci/lava-deqp.yml.jinja2 73b8e80941Smrg --base-artifacts-url $CI_PROJECT_URL/-/jobs/$CI_JOB_ID/artifacts/raw/results 74b8e80941Smrg > results/lava-deqp.yml 75b8e80941Smrg artifacts: 76b8e80941Smrg when: always 77b8e80941Smrg paths: 78b8e80941Smrg - results/ 79b8e80941Smrg 80b8e80941Smrgtest: 81b8e80941Smrg stage: test 82b8e80941Smrg image: $CI_REGISTRY_IMAGE:latest 83b8e80941Smrg script: 84b8e80941Smrg - mkdir -p ~/.config/ 85b8e80941Smrg - | 86b8e80941Smrg echo "default: 87b8e80941Smrg uri: https://lava.collabora.co.uk/RPC2 88b8e80941Smrg timeout: 120 89b8e80941Smrg username: jenkins-fdo 90b8e80941Smrg token: $LAVA_TOKEN 91b8e80941Smrg " > ~/.config/lavacli.yaml 92b8e80941Smrg - lava_job_id=`lavacli jobs submit $CI_PROJECT_DIR/results/lava-deqp.yml` 93b8e80941Smrg - echo $lava_job_id 94b8e80941Smrg - lavacli jobs logs $lava_job_id | grep -a -v "{'case':" | tee results/lava-deqp-$lava_job_id.log 95b8e80941Smrg - lavacli jobs show $lava_job_id 96b8e80941Smrg - curl "https://lava.collabora.co.uk/results/$lava_job_id/csv?user=jenkins-fdo&token=$LAVA_TOKEN" > raw_results.csv 97b8e80941Smrg - cat raw_results.csv | csvcut -c 12,3 | grep dEQP-GLES2 | sort > results/results-$lava_job_id.csv 98b8e80941Smrg 99b8e80941Smrg # FIXME: Remove flip-flops from comparison files 100b8e80941Smrg - sed -i '/dEQP-GLES2.functional.shaders.invariance.highp.loop_4/d' src/gallium/drivers/panfrost/ci/expected-failures.txt results/results-$lava_job_id.csv 101b8e80941Smrg - sed -i '/dEQP-GLES2.functional.texture.units.2_units.mixed.1/d' src/gallium/drivers/panfrost/ci/expected-failures.txt results/results-$lava_job_id.csv 102b8e80941Smrg - sed -i '/dEQP-GLES2.functional.texture.units.4_units.mixed.5/d' src/gallium/drivers/panfrost/ci/expected-failures.txt results/results-$lava_job_id.csv 103b8e80941Smrg - sed -i '/dEQP-GLES2.functional.texture.units.all_units.only_cube.7/d' src/gallium/drivers/panfrost/ci/expected-failures.txt results/results-$lava_job_id.csv 104b8e80941Smrg 105b8e80941Smrg - PASSED=$(grep pass$ results/results-$lava_job_id.csv | wc -l) 106b8e80941Smrg - FAILED=$(grep fail$ results/results-$lava_job_id.csv | wc -l) 107b8e80941Smrg - TOTAL=$(wc -l < results/results-$lava_job_id.csv) 108b8e80941Smrg - 'echo "Passed: $PASSED ($(expr $PASSED \* 100 / $TOTAL)%)"' 109b8e80941Smrg - 'echo "Failed: $FAILED ($(expr $FAILED \* 100 / $TOTAL)%)"' 110b8e80941Smrg - 'echo "Total: $TOTAL"' 111b8e80941Smrg 112b8e80941Smrg - sed '/,pass/d' results/results-$lava_job_id.csv | sed 's/,fail//' > results/failures-$lava_job_id.txt 113b8e80941Smrg - diff -u src/gallium/drivers/panfrost/ci/expected-failures.txt results/failures-$lava_job_id.txt 114b8e80941Smrg artifacts: 115b8e80941Smrg when: always 116b8e80941Smrg paths: 117b8e80941Smrg - results/