1#!/bin/sh 2 3set -ex 4 5MESA_CI_PROJECT_DIR="/builds/${MESA_PROJECT_PATH}" 6mkdir -p ${MESA_CI_PROJECT_DIR} 7cd ${MESA_CI_PROJECT_DIR} 8 9# Deploy Mesa CI artifacts 10MESA_CI_ARTIFACTS_URL="https://${STORAGE_HOST}/artifacts/${MESA_PROJECT_PATH}/${MESA_PIPELINE_ID}/mesa-amd64.tar.zst" 11if wget -q --method=HEAD ${MESA_CI_ARTIFACTS_URL}; then 12 wget -S --progress=dot:giga -O- ${MESA_CI_ARTIFACTS_URL} | tar -xv --zstd 13else 14 echo -e "\e[31mThe Mesa artifacts has expired, please update to newer Mesa pipeline!\e[0m" 15 apt-get update && apt-get -y install jq 16 MESA_PROJECT_PATH_ESCAPED=$(echo "$MESA_PROJECT_PATH" | sed 's|/|%2F|') 17 MESA_PROJECT_ID=$(wget -cq "${CI_API_V4_URL}/projects/${MESA_PROJECT_PATH_ESCAPED}" -O - | jq -c '.id') 18 FALLBACK_PAGE=1 19 while : 20 do 21 MESA_JOB_ID=$(wget -cq "${CI_API_V4_URL}/projects/${MESA_PROJECT_ID}/pipelines/${MESA_PIPELINE_ID}/jobs?per_page=100&page=${FALLBACK_PAGE}&scope=success" -O - \ 22 | jq -c '.[] | select(.name == "debian-testing") | .id') 23 if [ ! -z "${MESA_JOB_ID}" ]; then 24 break 25 fi 26 if [ $FALLBACK_PAGE -ge 10 ]; then 27 echo -e "\e[31mUnable to find the debian-testing job!\e[0m" 28 exit 1 29 fi 30 FALLBACK_PAGE=$((FALLBACK_PAGE+1)) 31 done 32 MESA_CI_ARTIFACTS_URL="${CI_API_V4_URL}/projects/${MESA_PROJECT_ID}/jobs/${MESA_JOB_ID}/artifacts/artifacts/install.tar" 33 unset MESA_JOB_ID 34 wget -S --progress=dot:giga -O- ${MESA_CI_ARTIFACTS_URL} | tar -xv 35fi 36 37# Overwrite Mesa CI's virglrenderer binaries with self built versions 38cp -a ${CI_PROJECT_DIR}/install/bin/virgl_test_server /usr/local/bin/ 39cp -a ${CI_PROJECT_DIR}/install/lib/libvirglrenderer.so* /usr/local/lib/ 40 41if [ "${VK_DRIVER}" = "virtio" ] || [ "${GALLIUM_DRIVER}" = "virgl" ]; then 42 # 43 # Run the tests on virtual platform (virgl/crosvm) 44 # 45 cp -a ${CI_PROJECT_DIR}/.gitlab-ci/expectations/virt/*.txt install/ 46 cp -a ${CI_PROJECT_DIR}/.gitlab-ci/expectations/virt/*.toml install/ 47 48 # 49 # crosvm-runner.sh depends on resources from ${CI_PROJECT_DIR}/install, 50 # but their actual location is ${MESA_CI_PROJECT_DIR}/install, hence 51 # let's fix this using a bind mount. 52 # 53 mv ${CI_PROJECT_DIR}/install ${CI_PROJECT_DIR}/install-orig 54 mkdir ${CI_PROJECT_DIR}/install 55 mount --bind install ${CI_PROJECT_DIR}/install 56 57 export LD_LIBRARY_PATH="${CI_PROJECT_DIR}/install/lib" 58 set +e 59 60 if [ -z "${DEQP_SUITE}" ]; then 61 if [ -z "${PIGLIT_REPLAY_DESCRIPTION_FILE}" ]; then 62 FDO_CI_CONCURRENT=${FORCE_FDO_CI_CONCURRENT:-FDO_CI_CONCURRENT} \ 63 install/crosvm-runner.sh install/piglit/piglit-runner.sh 64 else 65 FDO_CI_CONCURRENT=${FORCE_FDO_CI_CONCURRENT:-FDO_CI_CONCURRENT} \ 66 install/crosvm-runner.sh install/piglit/piglit-traces.sh 67 fi 68 else 69 install/deqp-runner.sh 70 fi 71 72 RET=$? 73 74 # Cleanup 75 umount ${CI_PROJECT_DIR}/install && \ 76 rmdir ${CI_PROJECT_DIR}/install && \ 77 mv ${CI_PROJECT_DIR}/install-orig ${CI_PROJECT_DIR}/install 78else 79 # 80 # Run the tests on host platform (virpipe/vtest) 81 # 82 cp -a ${CI_PROJECT_DIR}/.gitlab-ci/expectations/host/*.txt install/ 83 cp -a ${CI_PROJECT_DIR}/.gitlab-ci/expectations/host/*.toml install/ 84 85 export LIBGL_ALWAYS_SOFTWARE="true" 86 set +e 87 88 if [ -z "${DEQP_SUITE}" ]; then 89 PIGLIT_RUNNER_OPTIONS="--timeout 180" \ 90 install/piglit/piglit-runner.sh 91 else 92 DEQP_EXPECTED_RENDERER=virgl \ 93 WAFFLE_PLATFORM="surfaceless_egl" \ 94 SANITY_MESA_VERSION_CMD=wflinfo \ 95 HANG_DETECTION_CMD= \ 96 EGL_PLATFORM=surfaceless \ 97 install/deqp-runner.sh 98 fi 99 100 RET=$? 101fi 102 103mv -f results ${CI_PROJECT_DIR}/ 104exit ${RET} 105