devtools: fix check of ccache for meson build

Message ID 20190913073425.13363-1-thomas@monjalon.net (mailing list archive)
State Accepted, archived
Headers
Series devtools: fix check of ccache for meson build |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Thomas Monjalon Sept. 13, 2019, 7:34 a.m. UTC
  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

Luca Boccassi Sept. 13, 2019, 9:46 a.m. UTC | #1
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>
  
Bruce Richardson Sept. 13, 2019, 9:54 a.m. UTC | #2
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. :-)]
  
Thomas Monjalon Sept. 13, 2019, 10:33 a.m. UTC | #3
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.
  

Patch

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index a9d9360a6..2eb9b23b0 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -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