ci: Make ccache optional
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21781>
This commit is contained in:
15
.gitlab-ci/build/g++-link-werror.sh
Executable file
15
.gitlab-ci/build/g++-link-werror.sh
Executable 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
|
15
.gitlab-ci/build/gcc-link-werror.sh
Executable file
15
.gitlab-ci/build/gcc-link-werror.sh
Executable 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
|
@@ -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
|
||||
|
3
.gitlab-ci/build/meson-native-lto-wrappers-ccache.txt
Normal file
3
.gitlab-ci/build/meson-native-lto-wrappers-ccache.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
[binaries]
|
||||
c = 'ccache-gcc-link-werror.sh'
|
||||
cpp = 'ccache-g++-link-werror.sh'
|
@@ -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'
|
||||
|
@@ -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
|
||||
|
@@ -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'
|
||||
|
Reference in New Issue
Block a user