[v6,3/7] devtools: fix the Exec format error

Message ID 20180614095127.16245-4-gavin.hu@arm.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series *** fix the cross compile errors *** |

Checks

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

Commit Message

Gavin Hu June 14, 2018, 9:51 a.m. UTC
  meson will natively compile and generate the sanitycheck.exe file.  It will
be spawned and run at the host side.  Export the cross compiler is not
necessary as it is already done by the cross-file, and even worse it
generate the files in the wrong target format.

The fix to the following compiling error is select the native compiler for
the sanity test source file.

Traceback (most recent call last): File
"/usr/share/meson/mesonbuild/mesonmain.py", line 361, in run app.generate()
File "/usr/share/meson/mesonbuild/mesonmain.py", line 150, in generate
self._generate(env) File "/usr/share/meson/mesonbuild/mesonmain.py", line
189, in _generate intr = interpreter.Interpreter(b, g) File
"/usr/share/meson/mesonbuild/interpreter.py", line 1444, in __init__
self.parse_project() File "/usr/share/meson/mesonbuild/interpreterbase.py",
line 159, in parse_project self.evaluate_codeblock(self.ast, end=1) File
"/usr/share/meson/mesonbuild/interpreterbase.py", line 195, in
evaluate_codeblock raise e File
"/usr/share/meson/mesonbuild/interpreterbase.py", line 189, in
evaluate_codeblock self.evaluate_statement(cur) File
"/usr/share/meson/mesonbuild/interpreterbase.py", line 200, in
evaluate_statement return self.function_call(cur) File
"/usr/share/meson/mesonbuild/interpreterbase.py", line 456, in
function_call return self.funcs[func_name](node, self.flatten(posargs),
kwargs) File "/usr/share/meson/mesonbuild/interpreterbase.py", line 55, in
wrapped return f(self, node, args, kwargs) File
"/usr/share/meson/mesonbuild/interpreterbase.py", line 79, in wrapped
return f(s, node_or_state, args, kwargs) File
"/usr/share/meson/mesonbuild/interpreter.py", line 1947, in func_project
self.add_languages(proj_langs, True) File
"/usr/share/meson/mesonbuild/interpreter.py", line 2078, in add_languages
(comp, cross_comp) = self.detect_compilers(lang, need_cross_compiler) File
"/usr/share/meson/mesonbuild/interpreter.py", line 2047, in
detect_compilers comp.sanity_check(self.environment.get_scratch_dir(),
self.environment) File "/usr/share/meson/mesonbuild/compilers/c.py", line
254, in sanity_check return self.sanity_check_impl(work_dir, environment,
'sanitycheckc.c', code) File "/usr/share/meson/mesonbuild/compilers/c.py",
line 247, in sanity_check_impl pe = subprocess.Popen(cmdlist) File
"/usr/lib/python3.5/subprocess.py", line 676, in __init__ restore_signals,
start_new_session) File "/usr/lib/python3.5/subprocess.py", line 1282, in
_execute_child raise child_exception_type(errno_num, err_msg) OSError:
[Errno 8] Exec format error

Build started at 2018-06-01T12:48:46.852286 Main binary: /usr/bin/python3
Python system: Linux The Meson build system Version: 0.45.1 Build type:
cross build Project name: DPDK Sanity testing C compiler:
aarch64-linux-gnu-gcc Is cross compiler: False.  Sanity check compiler
command line: aarch64-linux-gnu-gcc
dpdk/build-arm64-armv8/meson-private/sanitycheckc.c -o
dpdk/build-arm64-armv8/meson-private/sanitycheckc.exe

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
  

Comments

Bruce Richardson June 14, 2018, 10:34 a.m. UTC | #1
On Thu, Jun 14, 2018 at 05:51:23PM +0800, Gavin Hu wrote:
> meson will natively compile and generate the sanitycheck.exe file.  It will
> be spawned and run at the host side.  Export the cross compiler is not
> necessary as it is already done by the cross-file, and even worse it
> generate the files in the wrong target format.
> 
> The fix to the following compiling error is select the native compiler for
> the sanity test source file.
> 
> Traceback (most recent call last): File
> "/usr/share/meson/mesonbuild/mesonmain.py", line 361, in run app.generate()
> File "/usr/share/meson/mesonbuild/mesonmain.py", line 150, in generate
> self._generate(env) File "/usr/share/meson/mesonbuild/mesonmain.py", line
> 189, in _generate intr = interpreter.Interpreter(b, g) File
> "/usr/share/meson/mesonbuild/interpreter.py", line 1444, in __init__
> self.parse_project() File "/usr/share/meson/mesonbuild/interpreterbase.py",
> line 159, in parse_project self.evaluate_codeblock(self.ast, end=1) File
> "/usr/share/meson/mesonbuild/interpreterbase.py", line 195, in
> evaluate_codeblock raise e File
> "/usr/share/meson/mesonbuild/interpreterbase.py", line 189, in
> evaluate_codeblock self.evaluate_statement(cur) File
> "/usr/share/meson/mesonbuild/interpreterbase.py", line 200, in
> evaluate_statement return self.function_call(cur) File
> "/usr/share/meson/mesonbuild/interpreterbase.py", line 456, in
> function_call return self.funcs[func_name](node, self.flatten(posargs),
> kwargs) File "/usr/share/meson/mesonbuild/interpreterbase.py", line 55, in
> wrapped return f(self, node, args, kwargs) File
> "/usr/share/meson/mesonbuild/interpreterbase.py", line 79, in wrapped
> return f(s, node_or_state, args, kwargs) File
> "/usr/share/meson/mesonbuild/interpreter.py", line 1947, in func_project
> self.add_languages(proj_langs, True) File
> "/usr/share/meson/mesonbuild/interpreter.py", line 2078, in add_languages
> (comp, cross_comp) = self.detect_compilers(lang, need_cross_compiler) File
> "/usr/share/meson/mesonbuild/interpreter.py", line 2047, in
> detect_compilers comp.sanity_check(self.environment.get_scratch_dir(),
> self.environment) File "/usr/share/meson/mesonbuild/compilers/c.py", line
> 254, in sanity_check return self.sanity_check_impl(work_dir, environment,
> 'sanitycheckc.c', code) File "/usr/share/meson/mesonbuild/compilers/c.py",
> line 247, in sanity_check_impl pe = subprocess.Popen(cmdlist) File
> "/usr/lib/python3.5/subprocess.py", line 676, in __init__ restore_signals,
> start_new_session) File "/usr/lib/python3.5/subprocess.py", line 1282, in
> _execute_child raise child_exception_type(errno_num, err_msg) OSError:
> [Errno 8] Exec format error
> 
> Build started at 2018-06-01T12:48:46.852286 Main binary: /usr/bin/python3
> Python system: Linux The Meson build system Version: 0.45.1 Build type:
> cross build Project name: DPDK Sanity testing C compiler:
> aarch64-linux-gnu-gcc Is cross compiler: False.  Sanity check compiler
> command line: aarch64-linux-gnu-gcc
> dpdk/build-arm64-armv8/meson-private/sanitycheckc.c -o
> dpdk/build-arm64-armv8/meson-private/sanitycheckc.exe
> 
> Fixes: a55277a788 ("devtools: add test script for meson builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> ---
>  devtools/test-meson-builds.sh | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
>
I think this patch is fixing the same error as this one[1], just in a slightly
longer way. [Though the addition of the message about missing the
cross-compiler is nice].

http://dpdk.org/dev/patchwork/patch/40817/
  
Gavin Hu June 15, 2018, 8:07 a.m. UTC | #2
Hi Bruce,

This patch was dropped, thanks for your review.

Best Regards,
Gavin

> -----Original Message-----
> From: Bruce Richardson <bruce.richardson@intel.com>
> Sent: Thursday, June 14, 2018 6:34 PM
> To: Gavin Hu <Gavin.Hu@arm.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v6 3/7] devtools: fix the Exec format error
> 
> On Thu, Jun 14, 2018 at 05:51:23PM +0800, Gavin Hu wrote:
> > meson will natively compile and generate the sanitycheck.exe file.  It
> > will be spawned and run at the host side.  Export the cross compiler
> > is not necessary as it is already done by the cross-file, and even
> > worse it generate the files in the wrong target format.
> >
> > The fix to the following compiling error is select the native compiler
> > for the sanity test source file.
> >
> > Traceback (most recent call last): File
> > "/usr/share/meson/mesonbuild/mesonmain.py", line 361, in run
> > app.generate() File "/usr/share/meson/mesonbuild/mesonmain.py", line
> > 150, in generate
> > self._generate(env) File "/usr/share/meson/mesonbuild/mesonmain.py",
> > line 189, in _generate intr = interpreter.Interpreter(b, g) File
> > "/usr/share/meson/mesonbuild/interpreter.py", line 1444, in __init__
> > self.parse_project() File
> > "/usr/share/meson/mesonbuild/interpreterbase.py",
> > line 159, in parse_project self.evaluate_codeblock(self.ast, end=1)
> > File "/usr/share/meson/mesonbuild/interpreterbase.py", line 195, in
> > evaluate_codeblock raise e File
> > "/usr/share/meson/mesonbuild/interpreterbase.py", line 189, in
> > evaluate_codeblock self.evaluate_statement(cur) File
> > "/usr/share/meson/mesonbuild/interpreterbase.py", line 200, in
> > evaluate_statement return self.function_call(cur) File
> > "/usr/share/meson/mesonbuild/interpreterbase.py", line 456, in
> > function_call return self.funcs[func_name](node,
> > self.flatten(posargs),
> > kwargs) File "/usr/share/meson/mesonbuild/interpreterbase.py", line
> > 55, in wrapped return f(self, node, args, kwargs) File
> > "/usr/share/meson/mesonbuild/interpreterbase.py", line 79, in wrapped
> > return f(s, node_or_state, args, kwargs) File
> > "/usr/share/meson/mesonbuild/interpreter.py", line 1947, in
> > func_project self.add_languages(proj_langs, True) File
> > "/usr/share/meson/mesonbuild/interpreter.py", line 2078, in
> > add_languages (comp, cross_comp) = self.detect_compilers(lang,
> > need_cross_compiler) File
> > "/usr/share/meson/mesonbuild/interpreter.py", line 2047, in
> > detect_compilers comp.sanity_check(self.environment.get_scratch_dir(),
> > self.environment) File "/usr/share/meson/mesonbuild/compilers/c.py",
> > line 254, in sanity_check return self.sanity_check_impl(work_dir,
> > environment, 'sanitycheckc.c', code) File
> > "/usr/share/meson/mesonbuild/compilers/c.py",
> > line 247, in sanity_check_impl pe = subprocess.Popen(cmdlist) File
> > "/usr/lib/python3.5/subprocess.py", line 676, in __init__
> > restore_signals,
> > start_new_session) File "/usr/lib/python3.5/subprocess.py", line 1282,
> > in _execute_child raise child_exception_type(errno_num, err_msg) OSError:
> > [Errno 8] Exec format error
> >
> > Build started at 2018-06-01T12:48:46.852286 Main binary:
> > /usr/bin/python3 Python system: Linux The Meson build system Version:
> 0.45.1 Build type:
> > cross build Project name: DPDK Sanity testing C compiler:
> > aarch64-linux-gnu-gcc Is cross compiler: False.  Sanity check compiler
> > command line: aarch64-linux-gnu-gcc
> > dpdk/build-arm64-armv8/meson-private/sanitycheckc.c -o
> > dpdk/build-arm64-armv8/meson-private/sanitycheckc.exe
> >
> > Fixes: a55277a788 ("devtools: add test script for meson builds")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> > Reviewed-by: Phil Yang <phil.yang@arm.com>
> > Reviewed-by: Song Zhu <song.zhu@arm.com>
> > ---
> >  devtools/test-meson-builds.sh | 11 +++++++----
> >  1 file changed, 7 insertions(+), 4 deletions(-)
> >
> I think this patch is fixing the same error as this one[1], just in a slightly
> longer way. [Though the addition of the message about missing the cross-
> compiler is nice].
> 
> http://dpdk.org/dev/patchwork/patch/40817/
  

Patch

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 9868c325b..6bce3df7f 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -1,6 +1,7 @@ 
 #! /bin/sh -e
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
+# Copyright(c) 2018 ARM Corporation
 
 # Run meson to auto-configure the various builds.
 # * all builds get put in a directory whose name starts with "build-"
@@ -18,7 +19,6 @@  build () # <directory> <meson options>
 		options="--werror -Dexamples=all $*"
 		echo "$MESON $options $srcdir $builddir"
 		$MESON $options $srcdir $builddir
-		unset CC
 	fi
 	echo "ninja -C $builddir"
 	ninja -C $builddir
@@ -26,10 +26,11 @@  build () # <directory> <meson options>
 
 # shared and static linked builds with gcc and clang
 for c in gcc clang ; do
+	export CC="ccache $c"
 	for s in static shared ; do
-		export CC="ccache $c"
 		build build-$c-$s --default-library=$s
 	done
+	unset CC
 done
 
 # test compilation with minimal x86 instruction set
@@ -39,8 +40,10 @@  build build-x86-default -Dmachine=nehalem
 for f in config/arm/arm*gcc ; do
 	c=aarch64-linux-gnu-gcc
 	if ! command -v $c >/dev/null 2>&1 ; then
-		continue
+		echo "## ERROR: aarch64-linux-gnu-gcc is missing..."
+		exit 1
 	fi
-	export CC="ccache $c"
+	export CC="ccache gcc"
 	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
+	unset CC
 done