• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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