* [dpdk-stable] [PATCH v6 1/7] mk: fix cross build errors
[not found] ` <20180614095127.16245-1-gavin.hu@arm.com>
@ 2018-06-14 9:51 ` Gavin Hu
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 3/7] devtools: fix the Exec format error Gavin Hu
` (4 subsequent siblings)
5 siblings, 0 replies; 23+ messages in thread
From: Gavin Hu @ 2018-06-14 9:51 UTC (permalink / raw)
To: dev; +Cc: gavin hu, stable
From: gavin hu <gavin.hu@arm.com>
The "-Wimplicit-fallthrough=2" option was introduced into gcc 7.0, it was
enabled when the cross compiler gcc is greater than 7.0, but for the host
side buildtools/pmdinfogen, if the native gcc is older than 7.0, or the
host cc compiler is clang, it should not be enabled.
The fix is to differentiate the host gcc Werror options from the cross gcc.
gcc -Wp,-MD,./.pmdinfogen.o.d.tmp -W -Wall -Wstrict-prototypes
-Wmissing-prototypes -Wmissing-declarations -Wold-style-definition
-Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual
-Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -Wdeprecated
-Werror -Wimplicit-fallthrough=2 -Dbbb -Wno-format-truncation -g
-I/home/gavin/arm_repo/dpdk/build/include -o pmdinfogen.o -c
~/dpdk/buildtools/pmdinfogen/pmdinfogen.c gcc: error:
unrecognized command line option ‘-Wimplicit-fallthrough=2’
~/dpdk/mk/internal/rte.compile-pre.mk:114: recipe for target 'pmdinfogen.o'
failed make[3]: *** [pmdinfogen.o] Error 1
Fixes: ced3e6f8 ("mk: adjust gcc flags for new gcc 7 warnings")
Cc: stable@dpdk.org
Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
---
buildtools/pmdinfogen/Makefile | 2 +-
mk/toolchain/gcc/rte.toolchain-compat.mk | 5 +++++
mk/toolchain/gcc/rte.vars.mk | 9 +++++++++
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/buildtools/pmdinfogen/Makefile b/buildtools/pmdinfogen/Makefile
index bf07b6f2e..ff7a5fae6 100644
--- a/buildtools/pmdinfogen/Makefile
+++ b/buildtools/pmdinfogen/Makefile
@@ -41,7 +41,7 @@ HOSTAPP = dpdk-pmdinfogen
#
SRCS-y += pmdinfogen.c
-HOST_CFLAGS += $(WERROR_FLAGS) -g
+HOST_CFLAGS += $(HOST_WERROR_FLAGS) -g
HOST_CFLAGS += -I$(RTE_OUTPUT)/include
include $(RTE_SDK)/mk/rte.hostapp.mk
diff --git a/mk/toolchain/gcc/rte.toolchain-compat.mk b/mk/toolchain/gcc/rte.toolchain-compat.mk
index 255c89677..1e4434fa9 100644
--- a/mk/toolchain/gcc/rte.toolchain-compat.mk
+++ b/mk/toolchain/gcc/rte.toolchain-compat.mk
@@ -15,6 +15,11 @@ GCC_MINOR = $(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1)
GCC_PATCHLEVEL = $(shell echo __GNUC_PATCHLEVEL__ | $(CC) -E -x c - | tail -n 1)
GCC_VERSION = $(GCC_MAJOR)$(GCC_MINOR)
+HOST_GCC_MAJOR = $(shell echo __GNUC__ | $(HOSTCC) -E -x c - | tail -n 1)
+HOST_GCC_MINOR = $(shell echo __GNUC_MINOR__ | $(HOSTCC) -E -x c - | tail -n 1)
+HOST_GCC_PATCHLEVEL = $(shell echo __GNUC_PATCHLEVEL__ | $(HOSTCC) -E -x c - | tail -n 1)
+HOST_GCC_VERSION = $(HOST_GCC_MAJOR)$(HOST_GCC_MINOR)
+
# if GCC is older than 4.x
ifeq ($(shell test $(GCC_VERSION) -lt 40 && echo 1), 1)
MACHINE_CFLAGS =
diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
index 7e4531bab..d8b99faf6 100644
--- a/mk/toolchain/gcc/rte.vars.mk
+++ b/mk/toolchain/gcc/rte.vars.mk
@@ -71,6 +71,15 @@ ifeq ($(shell test $(GCC_VERSION) -lt 47 && echo 1), 1)
WERROR_FLAGS += -Wno-uninitialized
endif
+HOST_WERROR_FLAGS := $(WERROR_FLAGS)
+
+ifeq ($(shell test $(HOST_GCC_VERSION) -gt 70 && echo 1), 1)
+# Tell GCC only to error for switch fallthroughs without a suitable comment
+HOST_WERROR_FLAGS += -Wimplicit-fallthrough=2
+# Ignore errors for snprintf truncation
+HOST_WERROR_FLAGS += -Wno-format-truncation
+endif
+
ifeq ($(shell test $(GCC_VERSION) -gt 70 && echo 1), 1)
# Tell GCC only to error for switch fallthroughs without a suitable comment
WERROR_FLAGS += -Wimplicit-fallthrough=2
--
2.11.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* [dpdk-stable] [PATCH v6 3/7] devtools: fix the Exec format error
[not found] ` <20180614095127.16245-1-gavin.hu@arm.com>
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 1/7] " Gavin Hu
@ 2018-06-14 9:51 ` Gavin Hu
2018-06-14 10:34 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 4/7] build: fix the meson build warning Gavin Hu
` (3 subsequent siblings)
5 siblings, 1 reply; 23+ messages in thread
From: Gavin Hu @ 2018-06-14 9:51 UTC (permalink / raw)
To: dev; +Cc: stable
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(-)
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
--
2.11.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v6 3/7] devtools: fix the Exec format error
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 3/7] devtools: fix the Exec format error Gavin Hu
@ 2018-06-14 10:34 ` Bruce Richardson
2018-06-15 8:07 ` Gavin Hu
0 siblings, 1 reply; 23+ messages in thread
From: Bruce Richardson @ 2018-06-14 10:34 UTC (permalink / raw)
To: Gavin Hu; +Cc: dev, stable
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/
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v6 3/7] devtools: fix the Exec format error
2018-06-14 10:34 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
@ 2018-06-15 8:07 ` Gavin Hu
0 siblings, 0 replies; 23+ messages in thread
From: Gavin Hu @ 2018-06-15 8:07 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev, stable, nd
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/
^ permalink raw reply [flat|nested] 23+ messages in thread
* [dpdk-stable] [PATCH v6 4/7] build: fix the meson build warning
[not found] ` <20180614095127.16245-1-gavin.hu@arm.com>
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 1/7] " Gavin Hu
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 3/7] devtools: fix the Exec format error Gavin Hu
@ 2018-06-14 9:51 ` Gavin Hu
2018-06-14 10:34 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 5/7] devtools: fix the missing ninja command error on CentOS Gavin Hu
` (2 subsequent siblings)
5 siblings, 1 reply; 23+ messages in thread
From: Gavin Hu @ 2018-06-14 9:51 UTC (permalink / raw)
To: dev; +Cc: stable
This is to fix the unnecessary warning output, it is not consistent with
the configurations of other platforms.
WARNING: Cross file does not specify strip binary, result will not be
stripped.
Fixes: e53a5299d2 ("build: support vendor specific ARM cross 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>
---
config/arm/arm64_thunderx_linuxapp_gcc | 1 +
1 file changed, 1 insertion(+)
diff --git a/config/arm/arm64_thunderx_linuxapp_gcc b/config/arm/arm64_thunderx_linuxapp_gcc
index 7ff34af74..967d9d46d 100644
--- a/config/arm/arm64_thunderx_linuxapp_gcc
+++ b/config/arm/arm64_thunderx_linuxapp_gcc
@@ -2,6 +2,7 @@
c = 'aarch64-linux-gnu-gcc'
cpp = 'aarch64-linux-gnu-cpp'
ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
[host_machine]
system = 'linux'
--
2.11.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v6 4/7] build: fix the meson build warning
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 4/7] build: fix the meson build warning Gavin Hu
@ 2018-06-14 10:34 ` Bruce Richardson
0 siblings, 0 replies; 23+ messages in thread
From: Bruce Richardson @ 2018-06-14 10:34 UTC (permalink / raw)
To: Gavin Hu; +Cc: dev, stable
On Thu, Jun 14, 2018 at 05:51:24PM +0800, Gavin Hu wrote:
> This is to fix the unnecessary warning output, it is not consistent with
> the configurations of other platforms.
>
> WARNING: Cross file does not specify strip binary, result will not be
> stripped.
>
> Fixes: e53a5299d2 ("build: support vendor specific ARM cross 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>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [dpdk-stable] [PATCH v6 5/7] devtools: fix the missing ninja command error on CentOS
[not found] ` <20180614095127.16245-1-gavin.hu@arm.com>
` (2 preceding siblings ...)
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 4/7] build: fix the meson build warning Gavin Hu
@ 2018-06-14 9:51 ` Gavin Hu
2018-06-14 10:40 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 6/7] build: fix the meson cross compile error Gavin Hu
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 7/7] devtools: expand meson cross compiling coverage Gavin Hu
5 siblings, 1 reply; 23+ messages in thread
From: Gavin Hu @ 2018-06-14 9:51 UTC (permalink / raw)
To: dev; +Cc: stable
On CentOS, the ninja executable has a different name:
ninja-build, this patch is to fix the missing command error
on CentOS as follows:
./devtools/test-meson-builds.sh: line 24: ninja: command not found
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 | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 6bce3df7f..4afac76dd 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -21,7 +21,11 @@ build () # <directory> <meson options>
$MESON $options $srcdir $builddir
fi
echo "ninja -C $builddir"
- ninja -C $builddir
+ if [ "$(lsb_release -d | grep -c 'CentOS')" != "0" ] ; then
+ ninja-build -C $builddir
+ else
+ ninja -C $builddir
+ fi
}
# shared and static linked builds with gcc and clang
--
2.11.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v6 5/7] devtools: fix the missing ninja command error on CentOS
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 5/7] devtools: fix the missing ninja command error on CentOS Gavin Hu
@ 2018-06-14 10:40 ` Bruce Richardson
2018-06-15 8:08 ` Gavin Hu
0 siblings, 1 reply; 23+ messages in thread
From: Bruce Richardson @ 2018-06-14 10:40 UTC (permalink / raw)
To: Gavin Hu; +Cc: dev, stable
On Thu, Jun 14, 2018 at 05:51:25PM +0800, Gavin Hu wrote:
> On CentOS, the ninja executable has a different name:
> ninja-build, this patch is to fix the missing command error
> on CentOS as follows:
> ./devtools/test-meson-builds.sh: line 24: ninja: command not found
>
> 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 | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
> index 6bce3df7f..4afac76dd 100755
> --- a/devtools/test-meson-builds.sh
> +++ b/devtools/test-meson-builds.sh
> @@ -21,7 +21,11 @@ build () # <directory> <meson options>
> $MESON $options $srcdir $builddir
> fi
> echo "ninja -C $builddir"
> - ninja -C $builddir
> + if [ "$(lsb_release -d | grep -c 'CentOS')" != "0" ] ; then
> + ninja-build -C $builddir
> + else
> + ninja -C $builddir
> + fi
> }
Rather than tying this to CentOS explicitly, would it be better at the
start of the script to test e.g "which ninja" and "which ninja-build" and
use that to work out the command to use. It's possible to have ninja
installed directly from tarball on CentOS as "ninja" (as I have in my test
VM), and the binary might be called ninja-build on other systems too e.g.
RHEL, perhaps.
/Bruce
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v6 5/7] devtools: fix the missing ninja command error on CentOS
2018-06-14 10:40 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
@ 2018-06-15 8:08 ` Gavin Hu
0 siblings, 0 replies; 23+ messages in thread
From: Gavin Hu @ 2018-06-15 8:08 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev, stable
> -----Original Message-----
> From: Bruce Richardson <bruce.richardson@intel.com>
> Sent: Thursday, June 14, 2018 6:41 PM
> To: Gavin Hu <Gavin.Hu@arm.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v6 5/7] devtools: fix the missing ninja
> command error on CentOS
>
> On Thu, Jun 14, 2018 at 05:51:25PM +0800, Gavin Hu wrote:
> > On CentOS, the ninja executable has a different name:
> > ninja-build, this patch is to fix the missing command error on CentOS
> > as follows:
> > ./devtools/test-meson-builds.sh: line 24: ninja: command not found
> >
> > 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 | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/devtools/test-meson-builds.sh
> > b/devtools/test-meson-builds.sh index 6bce3df7f..4afac76dd 100755
> > --- a/devtools/test-meson-builds.sh
> > +++ b/devtools/test-meson-builds.sh
> > @@ -21,7 +21,11 @@ build () # <directory> <meson options>
> > $MESON $options $srcdir $builddir
> > fi
> > echo "ninja -C $builddir"
> > -ninja -C $builddir
> > +if [ "$(lsb_release -d | grep -c 'CentOS')" != "0" ] ; then
> > +ninja-build -C $builddir
> > +else
> > +ninja -C $builddir
> > +fi
> > }
>
> Rather than tying this to CentOS explicitly, would it be better at the start of
> the script to test e.g "which ninja" and "which ninja-build" and use that to
> work out the command to use. It's possible to have ninja installed directly
> from tarball on CentOS as "ninja" (as I have in my test VM), and the binary
> might be called ninja-build on other systems too e.g.
> RHEL, perhaps.
>
> /Bruce
[Gavin Hu] I submitted new v8 patch for this, please help review it.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
^ permalink raw reply [flat|nested] 23+ messages in thread
* [dpdk-stable] [PATCH v6 6/7] build: fix the meson cross compile error
[not found] ` <20180614095127.16245-1-gavin.hu@arm.com>
` (3 preceding siblings ...)
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 5/7] devtools: fix the missing ninja command error on CentOS Gavin Hu
@ 2018-06-14 9:51 ` Gavin Hu
2018-06-14 10:42 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 7/7] devtools: expand meson cross compiling coverage Gavin Hu
5 siblings, 1 reply; 23+ messages in thread
From: Gavin Hu @ 2018-06-14 9:51 UTC (permalink / raw)
To: dev; +Cc: stable
The following error hits if host cc compiler is clang(default one in most
linux distributions) and the cross compiler is gcc.
The root cause is: the hybride compilers add the warning options to the
meson project as project arguments, which apply for both host compiling and
cross compiling. But some options such as '-Wno-format-truncation' are not
supported nor recognized by clang, so they have to be removed from the
project arguments for the host compiler to run smoothily and added back as
cflags for the cross compiler to compile for cross source files.
The fix is remove unrecognized warning options from the meson project
arguments shared by gcc and clang, as add them specifically for gcc or
clang as cflags.
[265/893] Compiling C object
'buildtools/pmdinfogen/pmdinfogen@exe/pmdinfogen.c.o'. warning: unknown
warning option '-Wno-format-truncation' [-Wunknown-warning-option]
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>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
---
config/meson.build | 3 +--
drivers/meson.build | 3 +++
examples/meson.build | 4 ++++
lib/meson.build | 4 ++++
test/test/meson.build | 7 ++++++-
5 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/config/meson.build b/config/meson.build
index 50081b572..272d4a838 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -57,8 +57,7 @@ add_project_arguments('-include', 'rte_config.h', language: 'c')
warning_flags = [
'-Wsign-compare',
'-Wcast-qual',
- '-Wno-address-of-packed-member',
- '-Wno-format-truncation'
+ '-Wno-address-of-packed-member'
]
foreach arg: warning_flags
if cc.has_argument(arg)
diff --git a/drivers/meson.build b/drivers/meson.build
index ac6c97297..1737d86b8 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -32,6 +32,9 @@ foreach class:driver_classes
sources = []
objs = []
cflags = machine_args
+ if cc.has_argument('-Wno-format-truncation')
+ cflags += '-Wno-format-truncation'
+ endif
includes = [include_directories(drv_path)]
# set up internal deps. Drivers can append/override as necessary
deps = std_deps
diff --git a/examples/meson.build b/examples/meson.build
index 3d1568497..e6558875a 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -24,6 +24,10 @@ foreach example: examples
sources = []
allow_experimental_apis = false
cflags = machine_args
+ if cc.has_argument('-Wno-format-truncation')
+ cflags += '-Wno-format-truncation'
+ endif
+
ext_deps = [execinfo]
includes = [include_directories(example)]
deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
diff --git a/lib/meson.build b/lib/meson.build
index 9d11571f9..fefb3605d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -34,6 +34,10 @@ foreach l:libraries
headers = []
includes = []
cflags = machine_args
+ if cc.has_argument('-Wno-format-truncation')
+ cflags += '-Wno-format-truncation'
+ endif
+
objs = [] # other object files to link against, used e.g. for
# instruction-set optimized versions of code
diff --git a/test/test/meson.build b/test/test/meson.build
index a907fd256..dc4ba5514 100644
--- a/test/test/meson.build
+++ b/test/test/meson.build
@@ -235,6 +235,11 @@ if dpdk_conf.has('RTE_LIBRTE_KNI')
test_deps += 'kni'
endif
+cflags = machine_args
+if cc.has_argument('-Wno-format-truncation')
+ cflags += '-Wno-format-truncation'
+endif
+
test_dep_objs = []
compress_test_dep = dependency('zlib', required: false)
if compress_test_dep.found()
@@ -260,7 +265,7 @@ if get_option('tests')
test_sources,
link_whole: link_libs,
dependencies: test_dep_objs,
- c_args: [machine_args, '-DALLOW_EXPERIMENTAL_API'],
+ c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
install_rpath: driver_install_path,
install: false)
--
2.11.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v6 6/7] build: fix the meson cross compile error
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 6/7] build: fix the meson cross compile error Gavin Hu
@ 2018-06-14 10:42 ` Bruce Richardson
0 siblings, 0 replies; 23+ messages in thread
From: Bruce Richardson @ 2018-06-14 10:42 UTC (permalink / raw)
To: Gavin Hu; +Cc: dev, stable
On Thu, Jun 14, 2018 at 05:51:26PM +0800, Gavin Hu wrote:
> The following error hits if host cc compiler is clang(default one in most
> linux distributions) and the cross compiler is gcc.
>
> The root cause is: the hybride compilers add the warning options to the
> meson project as project arguments, which apply for both host compiling and
> cross compiling. But some options such as '-Wno-format-truncation' are not
> supported nor recognized by clang, so they have to be removed from the
> project arguments for the host compiler to run smoothily and added back as
> cflags for the cross compiler to compile for cross source files.
>
> The fix is remove unrecognized warning options from the meson project
> arguments shared by gcc and clang, as add them specifically for gcc or
> clang as cflags.
>
> [265/893] Compiling C object
> 'buildtools/pmdinfogen/pmdinfogen@exe/pmdinfogen.c.o'. warning: unknown
> warning option '-Wno-format-truncation' [-Wunknown-warning-option]
>
> 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>
> Reviewed-by: Steve Capper <Steve.Capper@arm.com>
> ---
Yes, I think this solution works. A cleaner fix might be to move away from
having these flags as meson project arguments, and instead manage them
directly in our files as arrays of native and cross cflags, but that can be
a job for later. As it is:
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [dpdk-stable] [PATCH v6 7/7] devtools: expand meson cross compiling coverage
[not found] ` <20180614095127.16245-1-gavin.hu@arm.com>
` (4 preceding siblings ...)
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 6/7] build: fix the meson cross compile error Gavin Hu
@ 2018-06-14 9:51 ` Gavin Hu
2018-06-14 10:45 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
5 siblings, 1 reply; 23+ messages in thread
From: Gavin Hu @ 2018-06-14 9:51 UTC (permalink / raw)
To: dev; +Cc: stable
The default test script covers only default host cc compiler, either gcc or
clang, the fix is to cover both, gcc and clang. And also the build dirs are
changed to *-host-$c, indicating the difference of cc used.
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 | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 4afac76dd..74fe5abc8 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -47,7 +47,10 @@ for f in config/arm/arm*gcc ; do
echo "## ERROR: aarch64-linux-gnu-gcc is missing..."
exit 1
fi
- export CC="ccache gcc"
- build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
- unset CC
+ for c in gcc clang ; do
+ export CC="ccache $c"
+ build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-$c \
+ --cross-file $f
+ unset CC
+ done
done
--
2.11.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v6 7/7] devtools: expand meson cross compiling coverage
2018-06-14 9:51 ` [dpdk-stable] [PATCH v6 7/7] devtools: expand meson cross compiling coverage Gavin Hu
@ 2018-06-14 10:45 ` Bruce Richardson
2018-06-15 8:09 ` Gavin Hu
2018-06-15 10:23 ` Gavin Hu
0 siblings, 2 replies; 23+ messages in thread
From: Bruce Richardson @ 2018-06-14 10:45 UTC (permalink / raw)
To: Gavin Hu; +Cc: dev, stable
On Thu, Jun 14, 2018 at 05:51:27PM +0800, Gavin Hu wrote:
> The default test script covers only default host cc compiler, either gcc or
> clang, the fix is to cover both, gcc and clang. And also the build dirs are
> changed to *-host-$c, indicating the difference of cc used.
>
> 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>
> ---
Given that the only native code we have in a cross-build is pmdinfogen,
doing two copies of each cross-build seems overkill, and makes the test
longer than it should be. I suggest that we just do one of the
cross-builds, e.g. the generic armv8 one, for both clang and gcc, and do
the others only once.
/Bruce
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v6 7/7] devtools: expand meson cross compiling coverage
2018-06-14 10:45 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
@ 2018-06-15 8:09 ` Gavin Hu
2018-06-15 10:23 ` Gavin Hu
1 sibling, 0 replies; 23+ messages in thread
From: Gavin Hu @ 2018-06-15 8:09 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev, stable
> -----Original Message-----
> From: Bruce Richardson <bruce.richardson@intel.com>
> Sent: Thursday, June 14, 2018 6:45 PM
> To: Gavin Hu <Gavin.Hu@arm.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v6 7/7] devtools: expand meson cross
> compiling coverage
>
> On Thu, Jun 14, 2018 at 05:51:27PM +0800, Gavin Hu wrote:
> > The default test script covers only default host cc compiler, either
> > gcc or clang, the fix is to cover both, gcc and clang. And also the
> > build dirs are changed to *-host-$c, indicating the difference of cc used.
> >
> > 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>
> > ---
> Given that the only native code we have in a cross-build is pmdinfogen, doing
> two copies of each cross-build seems overkill, and makes the test longer than
> it should be. I suggest that we just do one of the cross-builds, e.g. the generic
> armv8 one, for both clang and gcc, and do the others only once.
>
> /Bruce
[Gavin Hu] I submitted a new v8 patch for this, thanks, please help review again.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v6 7/7] devtools: expand meson cross compiling coverage
2018-06-14 10:45 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
2018-06-15 8:09 ` Gavin Hu
@ 2018-06-15 10:23 ` Gavin Hu
1 sibling, 0 replies; 23+ messages in thread
From: Gavin Hu @ 2018-06-15 10:23 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev, stable
Thanks Bruce, I submitted v10 patch set fixing the whitespace issues.
> -----Original Message-----
> From: Bruce Richardson <bruce.richardson@intel.com>
> Sent: Thursday, June 14, 2018 6:45 PM
> To: Gavin Hu <Gavin.Hu@arm.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v6 7/7] devtools: expand meson cross
> compiling coverage
>
> On Thu, Jun 14, 2018 at 05:51:27PM +0800, Gavin Hu wrote:
> > The default test script covers only default host cc compiler, either
> > gcc or clang, the fix is to cover both, gcc and clang. And also the
> > build dirs are changed to *-host-$c, indicating the difference of cc used.
> >
> > 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>
> > ---
> Given that the only native code we have in a cross-build is pmdinfogen, doing
> two copies of each cross-build seems overkill, and makes the test longer than
> it should be. I suggest that we just do one of the cross-builds, e.g. the generic
> armv8 one, for both clang and gcc, and do the others only once.
>
> /Bruce
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
^ permalink raw reply [flat|nested] 23+ messages in thread