devtools: fix check of ccache for meson build
Checks
Commit Message
The meson build test fails if ccache is not available.
The use of ccache must be optional.
And if used, the compiler to check is the last word of $CC.
Fixes: e0ae780e6569 ("devtools: test compiler availability only once")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
This script is failing now because a real check of ccache availability
is done in commit e0ae780e6569.
It was not failing before, which means $CC is not used by meson?
---
devtools/test-meson-builds.sh | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
Comments
On Fri, 2019-09-13 at 09:34 +0200, Thomas Monjalon wrote:
> The meson build test fails if ccache is not available.
> The use of ccache must be optional.
> And if used, the compiler to check is the last word of $CC.
>
> Fixes: e0ae780e6569 ("devtools: test compiler availability only
> once")
>
> Signed-off-by: Thomas Monjalon <
> thomas@monjalon.net
Acked-by: Luca Boccassi <bluca@debian.org>
On Fri, Sep 13, 2019 at 09:34:25AM +0200, Thomas Monjalon wrote:
> The meson build test fails if ccache is not available.
> The use of ccache must be optional.
> And if used, the compiler to check is the last word of $CC.
>
> Fixes: e0ae780e6569 ("devtools: test compiler availability only once")
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
>
> ---
>
> This script is failing now because a real check of ccache availability
> is done in commit e0ae780e6569.
> It was not failing before, which means $CC is not used by meson?
$CC is used, otherwise we wouldn't be able to do any clang builds. :-)
I think what used to happen with earlier versions of the script was that
large chunks of the builds used to be skipped if ccache wasn't available,
i.e. I think it used to just do the "default" build and skip the regular
clang/gcc builds as those were where we checked for compiler presence.
[NOTE: it's been a while since I ran this on a system without ccache and I
never got to fixing it when I did encounter one - installing ccache was
always the easier step. :-)]
13/09/2019 11:46, Luca Boccassi:
> On Fri, 2019-09-13 at 09:34 +0200, Thomas Monjalon wrote:
> > The meson build test fails if ccache is not available.
> > The use of ccache must be optional.
> > And if used, the compiler to check is the last word of $CC.
> >
> > Fixes: e0ae780e6569 ("devtools: test compiler availability only
> > once")
> >
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
>
> Acked-by: Luca Boccassi <bluca@debian.org>
Not convinced all is solved, but applied to check if CI is fixed.
@@ -28,6 +28,11 @@ else
echo "ERROR: ninja is not found" >&2
exit 1
fi
+if command -v ccache >/dev/null 2>&1 ; then
+ CCACHE=ccache
+else
+ CCACHE=
+fi
default_path=$PATH
default_pkgpath=$PKG_CONFIG_PATH
@@ -46,7 +51,7 @@ build () # <directory> <target compiler> <meson options>
targetcc=$1
shift
# skip build if compiler not available
- command -v $CC >/dev/null 2>&1 || return 0
+ command -v ${CC##* } >/dev/null 2>&1 || return 0
command -v $targetcc >/dev/null 2>&1 || return 0
reset_env
DPDK_TARGET=$($targetcc -v 2>&1 | sed -n 's,^Target: ,,p')
@@ -90,7 +95,7 @@ fi
for c in gcc clang ; do
command -v $c >/dev/null 2>&1 || continue
for s in static shared ; do
- export CC="ccache $c"
+ export CC="$CCACHE $c"
build build-$c-$s $c --default-library=$s
done
done
@@ -112,7 +117,7 @@ build build-arm64-host-clang $c $use_shared \
--cross-file $srcdir/config/arm/arm64_armv8_linux_gcc
# all gcc/arm configurations
for f in $srcdir/config/arm/arm*gcc ; do
- export CC="ccache gcc"
+ export CC="$CCACHE gcc"
build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) $c \
$use_shared --cross-file $f
done