ci: Make ccache optional

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21781>
This commit is contained in:
Michel Dänzer
2023-03-14 09:38:18 +01:00
committed by Marge Bot
parent fe53fa5117
commit bca2bcfec9
7 changed files with 66 additions and 27 deletions

View File

@@ -0,0 +1,15 @@
#!/bin/sh -e
if [ "$(ps -p $(ps -p $PPID -o ppid --no-headers) -o comm --no-headers)" != ninja ]; then
# Not invoked by ninja (e.g. for a meson feature check)
exec g++ "$@"
fi
if [ "$(eval printf "'%s'" "\"\${$(($#-1))}\"")" = "-c" ]; then
# Not invoked for linking
exec g++ "$@"
fi
# Compiler invoked by ninja for linking. Add -Werror to turn compiler warnings into errors
# with LTO. (meson's werror should arguably do this, but meanwhile we need to)
exec g++ "$@" -Werror

View File

@@ -0,0 +1,15 @@
#!/bin/sh -e
if [ "$(ps -p $(ps -p $PPID -o ppid --no-headers) -o comm --no-headers)" != ninja ]; then
# Not invoked by ninja (e.g. for a meson feature check)
exec gcc "$@"
fi
if [ "$(eval printf "'%s'" "\"\${$(($#-1))}\"")" = "-c" ]; then
# Not invoked for linking
exec gcc "$@"
fi
# Compiler invoked by ninja for linking. Add -Werror to turn compiler warnings into errors
# with LTO. (meson's werror should arguably do this, but meanwhile we need to)
exec gcc "$@" -Werror

View File

@@ -25,11 +25,13 @@
- |
export PATH="/usr/lib/ccache:$PATH"
export CCACHE_BASEDIR="$PWD"
if test -x /usr/bin/ccache; then
section_start ccache_before "ccache stats before build"
ccache --show-stats
section_end ccache_before
fi
after_script:
- ccache --show-stats | grep "cache hit rate"
- if test -x /usr/bin/ccache; then ccache --show-stats | grep "cache hit rate"; fi
- !reference [default, after_script]
.build-windows:
@@ -182,7 +184,7 @@ debian-build-testing:
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,asahi,crocus"
VULKAN_DRIVERS: swrast
EXTRA_OPTION: >
--native-file .gitlab-ci/build/meson-native-lto-wrappers.txt
--native-file .gitlab-ci/build/meson-native-lto-wrappers-ccache.txt
-D spirv-to-dxil=true
-D osmesa=true
-D tools=drm-shim,etnaviv,freedreno,glsl,intel,intel-ui,nir,nouveau,lima,panfrost,asahi

View File

@@ -0,0 +1,3 @@
[binaries]
c = 'ccache-gcc-link-werror.sh'
cpp = 'ccache-g++-link-werror.sh'

View File

@@ -1,3 +1,3 @@
[binaries]
c = 'ccache-gcc-link-werror.sh'
cpp = 'ccache-g++-link-werror.sh'
c = 'gcc-link-werror.sh'
cpp = 'g++-link-werror.sh'

View File

@@ -7,4 +7,6 @@ fi
# Clean up any build cache for rust.
rm -rf /.cargo
if test -x /usr/bin/ccache; then
ccache --show-stats
fi

View File

@@ -1,5 +1,6 @@
#!/bin/sh
if test -x /usr/bin/ccache; then
if test -f /etc/debian_version; then
CCACHE_PATH=/usr/lib/ccache
elif test -f /etc/alpine-release; then
@@ -19,6 +20,9 @@ export PATH=$CCACHE_PATH:$PATH
export CC="${CCACHE_PATH}/gcc"
export CXX="${CCACHE_PATH}/g++"
ccache --show-stats
fi
# When not using the mold linker (e.g. unsupported architecture), force
# linkers to gold, since it's so much faster for building. We can't use
# lld because we're on old debian and it's buggy. ming fails meson builds
@@ -27,8 +31,6 @@ find /usr/bin -name \*-ld -o -name ld | \
grep -v mingw | \
xargs -n 1 -I '{}' ln -sf '{}.gold' '{}'
ccache --show-stats
# Make a wrapper script for ninja to always include the -j flags
{
echo '#!/bin/sh -x'