mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-11-28 12:45:56 +08:00
d58c76035b
When we remove the contents of the results directory, we `cd` into it.
The script expects that $PWD is /piglit, and $OLDPWD is the Mesa build
directory, however the cd into the results directory will make $OLDPWD
be $BUILDDIR/results.
This means that Piglit emits into results/results/ which looks weird,
but more importantly also fails OpenCL Piglit execution, because we
can't find our baseline result expectations.
Fix it by using an explicit variable rather than relying on history.
Fixes: 683ddf19dc
("ci: remove results directory content only with piglit runners")
Ref: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10856
Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Martin Peres <martin.peres@mupuf.org>
Reviewed-by: Andres Gomez <agomez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11126>
76 lines
2.1 KiB
Bash
Executable File
76 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
set -o xtrace
|
|
|
|
VERSION=`head -1 install/VERSION`
|
|
ROOTDIR=`pwd`
|
|
|
|
if [ -d results ]; then
|
|
cd results && rm -rf ..?* .[!.]* *
|
|
fi
|
|
cd /piglit
|
|
|
|
export OCL_ICD_VENDORS=$ROOTDIR/install/etc/OpenCL/vendors/
|
|
|
|
set +e
|
|
unset DISPLAY
|
|
export LD_LIBRARY_PATH=$ROOTDIR/install/lib
|
|
clinfo
|
|
|
|
# If the job is parallel at the gitlab job level, will take the corresponding
|
|
# fraction of the caselist.
|
|
if [ -n "$CI_NODE_INDEX" ]; then
|
|
|
|
if [ "$PIGLIT_PROFILES" != "${PIGLIT_PROFILES% *}" ]; then
|
|
echo "Can't parallelize piglit with multiple profiles"
|
|
exit 1
|
|
fi
|
|
USE_CASELIST=1
|
|
fi
|
|
|
|
if [ -n "$USE_CASELIST" ]; then
|
|
./piglit print-cmd $PIGLIT_TESTS $PIGLIT_PROFILES --format "{name}" > /tmp/case-list.txt
|
|
|
|
sed -ni $CI_NODE_INDEX~$CI_NODE_TOTAL"p" /tmp/case-list.txt
|
|
|
|
PIGLIT_TESTS="--test-list /tmp/case-list.txt"
|
|
fi
|
|
|
|
./piglit run -c -j${FDO_CI_CONCURRENT:-4} $PIGLIT_OPTIONS $PIGLIT_TESTS $PIGLIT_PROFILES $ROOTDIR/results
|
|
retVal=$?
|
|
if [ $retVal -ne 0 ]; then
|
|
echo "Found $(cat /tmp/version.txt), expected $VERSION"
|
|
fi
|
|
set -e
|
|
|
|
PIGLIT_RESULTS=${PIGLIT_RESULTS:-$PIGLIT_PROFILES}
|
|
mkdir -p .gitlab-ci/piglit
|
|
./piglit summary console $ROOTDIR/results \
|
|
| tee ".gitlab-ci/piglit/$PIGLIT_RESULTS.txt.orig" \
|
|
| head -n -1 \
|
|
| grep -v ": pass" \
|
|
| sed '/^summary:/Q' \
|
|
> .gitlab-ci/piglit/$PIGLIT_RESULTS.txt
|
|
|
|
if [ -n "$USE_CASELIST" ]; then
|
|
# Just filter the expected results based on the tests that were actually
|
|
# executed, and switch to the version with no summary
|
|
cat .gitlab-ci/piglit/$PIGLIT_RESULTS.txt.orig | sed '/^summary:/Q' | rev \
|
|
| cut -f2- -d: | rev | sed "s/$/:/g" > /tmp/executed.txt
|
|
grep -F -f /tmp/executed.txt $ROOTDIR/install/$PIGLIT_RESULTS.txt \
|
|
> .gitlab-ci/piglit/$PIGLIT_RESULTS.txt.baseline || true
|
|
else
|
|
cp $ROOTDIR/install/$PIGLIT_RESULTS.txt .gitlab-ci/piglit/$PIGLIT_RESULTS.txt.baseline
|
|
fi
|
|
|
|
if diff -q .gitlab-ci/piglit/$PIGLIT_RESULTS.txt{.baseline,}; then
|
|
exit 0
|
|
fi
|
|
|
|
./piglit summary html --exclude-details=pass $ROOTDIR/results/summary $ROOTDIR/results
|
|
|
|
echo Unexpected change in results:
|
|
diff -u .gitlab-ci/piglit/$PIGLIT_RESULTS.txt{.baseline,}
|
|
exit 1
|