mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-12-03 23:24:17 +08:00
c1e7e83d52
Our shared runners are set up for concurrent jobs ~= CPUs / 4 (x86) or 8 (ARM). If you use more build processes than that, then jobs may be fighting each other for shared system resources, possibly to the point of failure (we've seen one of the runners OOM on some jobs before, though I'm not sure if this was the cause). To try to systematically prevent the problem, we make a ninja wrapper in the containers that passes the -j flags, and set MAKEFLAGS in the container builds. This doesn't cover make in non-container builds, but I believe we don't have any of those. Reviewed-by: Michel Dänzer <mdaenzer@redhat.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3782> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3782>
64 lines
1.8 KiB
Bash
Executable File
64 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
set -o xtrace
|
|
|
|
CROSS_FILE=/cross_file-"$CROSS".txt
|
|
|
|
# We need to control the version of llvm-config we're using, so we'll
|
|
# tweak the cross file or generate a native file to do so.
|
|
if test -n "$LLVM_VERSION"; then
|
|
LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
|
|
echo -e "[binaries]\nllvm-config = '`which $LLVM_CONFIG`'" > native.file
|
|
if [ -n "$CROSS" ]; then
|
|
sed -i -e '/\[binaries\]/a\' -e "llvm-config = '`which $LLVM_CONFIG`'" $CROSS_FILE
|
|
fi
|
|
$LLVM_CONFIG --version
|
|
else
|
|
rm -f native.file
|
|
touch native.file
|
|
fi
|
|
|
|
# cross-xfail-$CROSS, if it exists, contains a list of tests that are expected
|
|
# to fail for the $CROSS configuration, one per line. you can then mark those
|
|
# tests in their meson.build with:
|
|
#
|
|
# test(...,
|
|
# should_fail: meson.get_cross_property('xfail', '').contains(t),
|
|
# )
|
|
#
|
|
# where t is the name of the test, and the '' is the string to search when
|
|
# not cross-compiling (which is empty, because for amd64 everything is
|
|
# expected to pass).
|
|
if [ -n "$CROSS" ]; then
|
|
CROSS_XFAIL=.gitlab-ci/cross-xfail-"$CROSS"
|
|
if [ -s "$CROSS_XFAIL" ]; then
|
|
sed -i \
|
|
-e '/\[properties\]/a\' \
|
|
-e "xfail = '$(tr '\n' , < $CROSS_XFAIL)'" \
|
|
"$CROSS_FILE"
|
|
fi
|
|
fi
|
|
|
|
rm -rf _build
|
|
meson _build --native-file=native.file \
|
|
--wrap-mode=nofallback \
|
|
${CROSS+--cross "$CROSS_FILE"} \
|
|
-D prefix=`pwd`/install \
|
|
-D libdir=lib \
|
|
-D buildtype=${BUILDTYPE:-debug} \
|
|
-D build-tests=true \
|
|
-D libunwind=${UNWIND} \
|
|
${DRI_LOADERS} \
|
|
-D dri-drivers=${DRI_DRIVERS:-[]} \
|
|
${GALLIUM_ST} \
|
|
-D gallium-drivers=${GALLIUM_DRIVERS:-[]} \
|
|
-D vulkan-drivers=${VULKAN_DRIVERS:-[]} \
|
|
${EXTRA_OPTION}
|
|
cd _build
|
|
meson configure
|
|
ninja
|
|
LC_ALL=C.UTF-8 ninja test
|
|
ninja install
|
|
cd ..
|