DPDK patches and discussions
 help / color / mirror / Atom feed
From: Thomas Monjalon <thomas@monjalon.net>
To: David Christensen <drc@linux.vnet.ibm.com>
Cc: dev@dpdk.org, david.marchand@redhat.com, bruce.richardson@intel.com
Subject: Re: [dpdk-dev] [PATCH 3/4] devtools: add ppc64 in meson build test
Date: Tue, 16 Jun 2020 00:13:17 +0200
Message-ID: <5942466.NH09dW5kea@thomas> (raw)
In-Reply-To: <9b811c9b-5b56-57a7-c939-6e5dbf888447@linux.vnet.ibm.com>

15/06/2020 23:43, David Christensen:
> On 6/14/20 3:57 PM, Thomas Monjalon wrote:
> > diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
> > index 1d80a029aa..1cde17a2e5 100755
> > --- a/devtools/test-meson-builds.sh
> > +++ b/devtools/test-meson-builds.sh
> > @@ -212,6 +212,11 @@ for f in $srcdir/config/arm/arm64_[bdo]*gcc ; do
> >   	unset CC
> >   done
> > 
> > +# ppc configurations
> > +for f in $srcdir/config/ppc/ppc* ; do
> > +	build build-$(basename $f | cut -d'-' -f-2) $f $use_shared
> > +done
> > +
> 
> The entire script file is poorly structured for multi-architecture 
> builds.  The script fails on PPC64LE even before your changes:

This script supports only builds from x86 Linux so far.
This patch is adding cross-compilation of ppc from x86,
and it works fine.


> ------------------------------------
> # shared and static linked builds with gcc and clang
> for c in gcc clang ; do
>         command -v $c >/dev/null 2>&1 || continue
>         for s in static shared ; do
>                 export CC="$CCACHE $c"
>                 build build-$c-$s $c --default-library=$s
>                 unset CC
>         done
> done
> ------------------------------------
> 
> Compilation on clang is not currently supported due to build failures on 
> Altivec data types for vectorization:
> 
> In file included from ../lib/librte_eal/common/eal_common_options.c:33:
> In file included from ../lib/librte_eal/ppc/include/rte_memcpy.h:12:
> In file included from ../lib/librte_eal/ppc/include/rte_altivec.h:10:
> /usr/lib64/clang/9.0.1/include/altivec.h:55:19: error: unknown type name 
> 'vector'
> static __inline__ vector bool char __ATTRS_o_ai
>                    ^
> /usr/lib64/clang/9.0.1/include/altivec.h:56:10: error: unknown type name 
> 'vector'
> vec_perm(vector bool char __a, vector bool char __b, vector unsigned 
> char __c);
> 
> and C99 atomics:
> 
> ../lib/librte_eal/ppc/include/rte_atomic.h:85:9: error: implicit 
> declaration of function '__atomic_exchange_2' is invalid in C99 
> [-Werror,-Wimplicit-function-declaration]
>          return __atomic_exchange_2(dst, val, __ATOMIC_SEQ_CST);
>                 ^
> 
> The script then immediately launches into an x86 build no matter what 
> architecture the system is running on:
> 
> ------------------------------------
> default_machine='nehalem'
> ok=$(cc -march=$default_machine -E - < /dev/null > /dev/null 2>&1 || 
> echo false)
> if [ "$ok" = "false" ] ; then
>          default_machine='corei7'
> fi
> build build-x86-default cc -Dlibdir=lib -Dmachine=$default_machine 
> $use_shared
> ------------------------------------
> 
> Which also fails on a Power system:
> 
> ninja -v -C ./build-x86-default
> ninja: Entering directory `./build-x86-default'
> [1/2265] cc -Ilib/76b5a35@@rte_kvargs@sta -Ilib -I../lib -I. -I../ 
> -Iconfig -I../config -Ilib/librte_eal/include 
> -I../lib/librte_eal/include -Ilib/librte_eal/linux/include 
> -I../lib/librte_eal/linux/include -Ilib/librte_eal/ppc/include 
> -I../lib/librte_eal/ppc/include -Ilib/librte_kvargs 
> -I../lib/librte_kvargs -fdiagnostics-color=always -pipe 
> -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O2 -g -include 
> rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral 
> -Wformat-security -Wmissing-declarations -Wmissing-prototypes 
> -Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare 
> -Wstrict-prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned 
> -Wno-missing-field-initializers -D_GNU_SOURCE -fPIC -mcpu=corei7 
> -mtune=corei7 -DALLOW_EXPERIMENTAL_API -DALLOW_INTERNAL_API 
> -Wno-format-truncation  -MD -MQ 
> 'lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.o' -MF 
> 'lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.o.d' -o 
> 'lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.o' -c 
> ../lib/librte_kvargs/rte_kvargs.c
> FAILED: lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.o
> 
> 
> I think the logic of looping through supported configs for test builds 
> is the right one, but more changes are required for multi-architecture 
> support in this script.  For now I'd abandon the PPC/ARM support 
> entirely in this script.

I am adding PPC compilation check to avoid having PPC broken,
because after asking for many years to IBM execs,
there is still no PPC CI integrated in DPDK patchwork.
If you don't think this small step is going in the right direction,
then I will stop bothering about PPC support,
and we should probably completely drop PPC support I guess.



  reply	other threads:[~2020-06-15 22:13 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-14 22:57 [dpdk-dev] [PATCH 0/4] add PPC and Windows to meson test Thomas Monjalon
2020-06-14 22:57 ` [dpdk-dev] [PATCH 1/4] devtools: shrink cross-compilation test definition Thomas Monjalon
2020-06-14 22:57 ` [dpdk-dev] [PATCH 2/4] devtools: allow non-standard toolchain in meson test Thomas Monjalon
2020-06-14 22:57 ` [dpdk-dev] [PATCH 3/4] devtools: add ppc64 in meson build test Thomas Monjalon
2020-06-15 21:43   ` David Christensen
2020-06-15 22:13     ` Thomas Monjalon [this message]
2020-06-16 20:35       ` David Christensen
2020-06-16 21:26         ` Thomas Monjalon
2020-06-17 21:02           ` David Christensen
2020-06-14 22:57 ` [dpdk-dev] [PATCH 4/4] devtools: add Windows cross-build test with MinGW Thomas Monjalon
2020-06-14 23:09   ` Thomas Monjalon
2020-06-15  1:05     ` Dmitry Kozlyuk
2020-06-15  7:51       ` Thomas Monjalon
2020-06-15 22:22 ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon
2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 1/4] devtools: shrink cross-compilation test definition Thomas Monjalon
2020-06-17 21:05     ` David Christensen
2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 2/4] devtools: allow non-standard toolchain in meson test Thomas Monjalon
2020-06-17 21:06     ` David Christensen
2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 3/4] devtools: add ppc64 in meson build test Thomas Monjalon
2020-06-17 21:07     ` David Christensen
2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 4/4] devtools: add Windows cross-build test with MinGW Thomas Monjalon
2020-06-29 23:15   ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5942466.NH09dW5kea@thomas \
    --to=thomas@monjalon.net \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=drc@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git