| #!/bin/sh |
| |
| set -ex |
| |
| MESA_CI_PROJECT_DIR="/builds/${MESA_PROJECT_PATH}" |
| mkdir -p ${MESA_CI_PROJECT_DIR} |
| cd ${MESA_CI_PROJECT_DIR} |
| |
| # Deploy Mesa CI artifacts |
| MESA_CI_ARTIFACTS_URL="https://${STORAGE_HOST}/artifacts/${MESA_PROJECT_PATH}/${MESA_PIPELINE_ID}/mesa-amd64.tar.zst" |
| if wget -q --method=HEAD ${MESA_CI_ARTIFACTS_URL}; then |
| wget -S --progress=dot:giga -O- ${MESA_CI_ARTIFACTS_URL} | tar -xv --zstd |
| else |
| echo -e "\e[31mThe Mesa artifacts has expired, please update to newer Mesa pipeline!\e[0m" |
| apt-get update && apt-get -y install jq |
| MESA_PROJECT_PATH_ESCAPED=$(echo "$MESA_PROJECT_PATH" | sed 's|/|%2F|') |
| MESA_PROJECT_ID=$(wget -cq "${CI_API_V4_URL}/projects/${MESA_PROJECT_PATH_ESCAPED}" -O - | jq -c '.id') |
| FALLBACK_PAGE=1 |
| while : |
| do |
| 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 - \ |
| | jq -c '.[] | select(.name == "debian-testing") | .id') |
| if [ ! -z "${MESA_JOB_ID}" ]; then |
| break |
| fi |
| if [ $FALLBACK_PAGE -ge 10 ]; then |
| echo -e "\e[31mUnable to find the debian-testing job!\e[0m" |
| exit 1 |
| fi |
| FALLBACK_PAGE=$((FALLBACK_PAGE+1)) |
| done |
| MESA_CI_ARTIFACTS_URL="${CI_API_V4_URL}/projects/${MESA_PROJECT_ID}/jobs/${MESA_JOB_ID}/artifacts/artifacts/install.tar" |
| unset MESA_JOB_ID |
| wget -S --progress=dot:giga -O- ${MESA_CI_ARTIFACTS_URL} | tar -xv |
| fi |
| |
| # Overwrite Mesa CI's virglrenderer binaries with self built versions |
| cp -a ${CI_PROJECT_DIR}/install/bin/virgl_test_server /usr/local/bin/ |
| cp -a ${CI_PROJECT_DIR}/install/lib/libvirglrenderer.so* /usr/local/lib/ |
| |
| if [ "${VK_DRIVER}" = "virtio" ] || [ "${GALLIUM_DRIVER}" = "virgl" ]; then |
| # |
| # Run the tests on virtual platform (virgl/crosvm) |
| # |
| cp -a ${CI_PROJECT_DIR}/.gitlab-ci/expectations/virt/*.txt install/ |
| cp -a ${CI_PROJECT_DIR}/.gitlab-ci/expectations/virt/*.toml install/ |
| |
| # |
| # crosvm-runner.sh depends on resources from ${CI_PROJECT_DIR}/install, |
| # but their actual location is ${MESA_CI_PROJECT_DIR}/install, hence |
| # let's fix this using a bind mount. |
| # |
| mv ${CI_PROJECT_DIR}/install ${CI_PROJECT_DIR}/install-orig |
| mkdir ${CI_PROJECT_DIR}/install |
| mount --bind install ${CI_PROJECT_DIR}/install |
| |
| export LD_LIBRARY_PATH="${CI_PROJECT_DIR}/install/lib" |
| set +e |
| |
| if [ -z "${DEQP_SUITE}" ]; then |
| if [ -z "${PIGLIT_REPLAY_DESCRIPTION_FILE}" ]; then |
| FDO_CI_CONCURRENT=${FORCE_FDO_CI_CONCURRENT:-FDO_CI_CONCURRENT} \ |
| install/crosvm-runner.sh install/piglit/piglit-runner.sh |
| else |
| FDO_CI_CONCURRENT=${FORCE_FDO_CI_CONCURRENT:-FDO_CI_CONCURRENT} \ |
| install/crosvm-runner.sh install/piglit/piglit-traces.sh |
| fi |
| else |
| install/deqp-runner.sh |
| fi |
| |
| RET=$? |
| |
| # Cleanup |
| umount ${CI_PROJECT_DIR}/install && \ |
| rmdir ${CI_PROJECT_DIR}/install && \ |
| mv ${CI_PROJECT_DIR}/install-orig ${CI_PROJECT_DIR}/install |
| else |
| # |
| # Run the tests on host platform (virpipe/vtest) |
| # |
| cp -a ${CI_PROJECT_DIR}/.gitlab-ci/expectations/host/*.txt install/ |
| cp -a ${CI_PROJECT_DIR}/.gitlab-ci/expectations/host/*.toml install/ |
| |
| export LIBGL_ALWAYS_SOFTWARE="true" |
| set +e |
| |
| if [ -z "${DEQP_SUITE}" ]; then |
| PIGLIT_RUNNER_OPTIONS="--timeout 180" \ |
| install/piglit/piglit-runner.sh |
| else |
| DEQP_EXPECTED_RENDERER=virgl \ |
| WAFFLE_PLATFORM="surfaceless_egl" \ |
| SANITY_MESA_VERSION_CMD=wflinfo \ |
| HANG_DETECTION_CMD= \ |
| EGL_PLATFORM=surfaceless \ |
| install/deqp-runner.sh |
| fi |
| |
| RET=$? |
| fi |
| |
| mv -f results ${CI_PROJECT_DIR}/ |
| exit ${RET} |