config: set pkgconfig for ppc64le

Message ID 20220707114128.1635863-1-alialnu@nvidia.com (mailing list archive)
State New
Delegated to: Thomas Monjalon
Headers
Series config: set pkgconfig for ppc64le |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/github-robot: build success github build: passed
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/intel-Testing success Testing PASS

Commit Message

Ali Alnubani July 7, 2022, 11:41 a.m. UTC
  Meson fails to detect the dependencies that are included
in PKG_CONFIG_PATH and built for ppc64le if binaries.pkgconfig
is not set in the ppc64le cross-file for Ubuntu.

This fixes the issue by setting binaries.pkgconfig to the
binary provided by the package 'pkg-config-powerpc64le-linux-gnu'.

Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
---
 config/ppc/ppc64le-power8-linux-gcc-ubuntu | 1 +
 1 file changed, 1 insertion(+)
  

Comments

Thomas Monjalon July 11, 2022, 8:10 p.m. UTC | #1
+ PPC maintainer

07/07/2022 13:41, Ali Alnubani:
> Meson fails to detect the dependencies that are included
> in PKG_CONFIG_PATH and built for ppc64le if binaries.pkgconfig
> is not set in the ppc64le cross-file for Ubuntu.
> 
> This fixes the issue by setting binaries.pkgconfig to the
> binary provided by the package 'pkg-config-powerpc64le-linux-gnu'.
> 
> Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
> ---
>  config/ppc/ppc64le-power8-linux-gcc-ubuntu | 1 +

Why not adding the same for ppc64le-power8-linux-gcc?

> +pkgconfig = 'powerpc64le-linux-gnu-pkg-config'
  
Ali Alnubani July 13, 2022, 7:39 a.m. UTC | #2
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Monday, July 11, 2022 11:11 PM
> To: Ali Alnubani <alialnu@nvidia.com>
> Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
> Subject: Re: [PATCH] config: set pkgconfig for ppc64le
> 
> + PPC maintainer
> 
> 07/07/2022 13:41, Ali Alnubani:
> > Meson fails to detect the dependencies that are included
> > in PKG_CONFIG_PATH and built for ppc64le if binaries.pkgconfig
> > is not set in the ppc64le cross-file for Ubuntu.
> >
> > This fixes the issue by setting binaries.pkgconfig to the
> > binary provided by the package 'pkg-config-powerpc64le-linux-gnu'.
> >
> > Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
> > ---
> >  config/ppc/ppc64le-power8-linux-gcc-ubuntu | 1 +
> 
> Why not adding the same for ppc64le-power8-linux-gcc?
> 
> > +pkgconfig = 'powerpc64le-linux-gnu-pkg-config'

I didn't find any operating systems that distribute the powerpc64le cross-compiler with the binary names found in config/ppc/ppc64le-power8-linux-gcc.
Both Ubuntu and Fedora use the -gnu suffix. Fedora doesn't seem to have a pkg-config binary for powerpc64le though.
  
Thomas Monjalon July 13, 2022, 9:12 a.m. UTC | #3
13/07/2022 09:39, Ali Alnubani:
> > -----Original Message-----
> > From: Thomas Monjalon <thomas@monjalon.net>
> > Sent: Monday, July 11, 2022 11:11 PM
> > To: Ali Alnubani <alialnu@nvidia.com>
> > Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
> > Subject: Re: [PATCH] config: set pkgconfig for ppc64le
> > 
> > + PPC maintainer
> > 
> > 07/07/2022 13:41, Ali Alnubani:
> > > Meson fails to detect the dependencies that are included
> > > in PKG_CONFIG_PATH and built for ppc64le if binaries.pkgconfig
> > > is not set in the ppc64le cross-file for Ubuntu.
> > >
> > > This fixes the issue by setting binaries.pkgconfig to the
> > > binary provided by the package 'pkg-config-powerpc64le-linux-gnu'.
> > >
> > > Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
> > > ---
> > >  config/ppc/ppc64le-power8-linux-gcc-ubuntu | 1 +
> > 
> > Why not adding the same for ppc64le-power8-linux-gcc?
> > 
> > > +pkgconfig = 'powerpc64le-linux-gnu-pkg-config'
> 
> I didn't find any operating systems that distribute the powerpc64le cross-compiler with the binary names found in config/ppc/ppc64le-power8-linux-gcc.
> Both Ubuntu and Fedora use the -gnu suffix. Fedora doesn't seem to have a pkg-config binary for powerpc64le though.

So how does it work on Fedora?
  
Ali Alnubani July 13, 2022, 10:14 a.m. UTC | #4
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Wednesday, July 13, 2022 12:12 PM
> To: Ali Alnubani <alialnu@nvidia.com>
> Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
> Subject: Re: [PATCH] config: set pkgconfig for ppc64le
> 
> 13/07/2022 09:39, Ali Alnubani:
> > > -----Original Message-----
> > > From: Thomas Monjalon <thomas@monjalon.net>
> > > Sent: Monday, July 11, 2022 11:11 PM
> > > To: Ali Alnubani <alialnu@nvidia.com>
> > > Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
> > > Subject: Re: [PATCH] config: set pkgconfig for ppc64le
> > >
> > > + PPC maintainer
> > >
> > > 07/07/2022 13:41, Ali Alnubani:
> > > > Meson fails to detect the dependencies that are included
> > > > in PKG_CONFIG_PATH and built for ppc64le if binaries.pkgconfig
> > > > is not set in the ppc64le cross-file for Ubuntu.
> > > >
> > > > This fixes the issue by setting binaries.pkgconfig to the
> > > > binary provided by the package 'pkg-config-powerpc64le-linux-gnu'.
> > > >
> > > > Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
> > > > ---
> > > >  config/ppc/ppc64le-power8-linux-gcc-ubuntu | 1 +
> > >
> > > Why not adding the same for ppc64le-power8-linux-gcc?
> > >
> > > > +pkgconfig = 'powerpc64le-linux-gnu-pkg-config'
> >
> > I didn't find any operating systems that distribute the powerpc64le cross-
> compiler with the binary names found in config/ppc/ppc64le-power8-linux-
> gcc.
> > Both Ubuntu and Fedora use the -gnu suffix. Fedora doesn't seem to have
> a pkg-config binary for powerpc64le though.
> 
> So how does it work on Fedora?
> 

On Fedora, the pcc64 cross-compiler is provided by package 'gcc-powerpc64le-linux-gnu' with binary names /usr/bin/powerpc64le-linux-gnu-*, same as in Ubuntu.
The cross-file config/ppc/ppc64le-power8-linux-gcc doesn't work with Fedora since the binary names in the file don't have the -gnu suffix, so I'm not sure where this cross-file is being used.

Another issue I found is that when I set the correct binary names in config/ppc/ppc64le-power8-linux-gcc or use config/ppc/ppc64le-power8-linux-gcc-ubuntu, I get the following error on Fedora:
    config/ppc/meson.build:6:4: ERROR: Problem encountered: Only 64-bit compiles are supported for this platform type
It happens because cc.sizeof('void *') in https://git.dpdk.org/dpdk/tree/config/meson.build#n144 returns '-1'. I'm on Fedora 35.

Is anyone able to cross-build for ppc64le in Fedora?
  
Ali Alnubani July 13, 2022, 10:51 a.m. UTC | #5
> -----Original Message-----
> From: Ali Alnubani
> Sent: Wednesday, July 13, 2022 1:14 PM
> To: Thomas Monjalon <thomas@monjalon.net>
> Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
> Subject: RE: [PATCH] config: set pkgconfig for ppc64le
> 
> > -----Original Message-----
> > From: Thomas Monjalon <thomas@monjalon.net>
> > Sent: Wednesday, July 13, 2022 12:12 PM
> > To: Ali Alnubani <alialnu@nvidia.com>
> > Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
> > Subject: Re: [PATCH] config: set pkgconfig for ppc64le
> >
> > 13/07/2022 09:39, Ali Alnubani:
> > > > -----Original Message-----
> > > > From: Thomas Monjalon <thomas@monjalon.net>
> > > > Sent: Monday, July 11, 2022 11:11 PM
> > > > To: Ali Alnubani <alialnu@nvidia.com>
> > > > Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
> > > > Subject: Re: [PATCH] config: set pkgconfig for ppc64le
> > > >
> > > > + PPC maintainer
> > > >
> > > > 07/07/2022 13:41, Ali Alnubani:
> > > > > Meson fails to detect the dependencies that are included
> > > > > in PKG_CONFIG_PATH and built for ppc64le if binaries.pkgconfig
> > > > > is not set in the ppc64le cross-file for Ubuntu.
> > > > >
> > > > > This fixes the issue by setting binaries.pkgconfig to the
> > > > > binary provided by the package 'pkg-config-powerpc64le-linux-gnu'.
> > > > >
> > > > > Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
> > > > > ---
> > > > >  config/ppc/ppc64le-power8-linux-gcc-ubuntu | 1 +
> > > >
> > > > Why not adding the same for ppc64le-power8-linux-gcc?
> > > >
> > > > > +pkgconfig = 'powerpc64le-linux-gnu-pkg-config'
> > >
> > > I didn't find any operating systems that distribute the powerpc64le cross-
> > compiler with the binary names found in config/ppc/ppc64le-power8-linux-
> > gcc.
> > > Both Ubuntu and Fedora use the -gnu suffix. Fedora doesn't seem to
> have
> > a pkg-config binary for powerpc64le though.
> >
> > So how does it work on Fedora?
> >
> 
> On Fedora, the pcc64 cross-compiler is provided by package 'gcc-
> powerpc64le-linux-gnu' with binary names /usr/bin/powerpc64le-linux-gnu-
> *, same as in Ubuntu.
> The cross-file config/ppc/ppc64le-power8-linux-gcc doesn't work with
> Fedora since the binary names in the file don't have the -gnu suffix, so I'm
> not sure where this cross-file is being used.
> 
> Another issue I found is that when I set the correct binary names in
> config/ppc/ppc64le-power8-linux-gcc or use config/ppc/ppc64le-power8-
> linux-gcc-ubuntu, I get the following error on Fedora:
>     config/ppc/meson.build:6:4: ERROR: Problem encountered: Only 64-bit
> compiles are supported for this platform type
> It happens because cc.sizeof('void *') in
> https://git.dpdk.org/dpdk/tree/config/meson.build#n144 returns '-1'. I'm on
> Fedora 35.

I believe that's because the Fedora package doesn't provide stdio.h for ppc64le.

> 
> Is anyone able to cross-build for ppc64le in Fedora?
  
Thinh Tran July 13, 2022, 7:49 p.m. UTC | #6
Hi,

On 7/13/2022 2:39 AM, Ali Alnubani wrote:
>> -----Original Message-----
>> From: Thomas Monjalon <thomas@monjalon.net>
>> Sent: Monday, July 11, 2022 11:11 PM
>> To: Ali Alnubani <alialnu@nvidia.com>
>> Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
>> Subject: Re: [PATCH] config: set pkgconfig for ppc64le
>>
>> + PPC maintainer
>>
>> 07/07/2022 13:41, Ali Alnubani:
>>> Meson fails to detect the dependencies that are included
>>> in PKG_CONFIG_PATH and built for ppc64le if binaries.pkgconfig
>>> is not set in the ppc64le cross-file for Ubuntu.
>>>
>>> This fixes the issue by setting binaries.pkgconfig to the
>>> binary provided by the package 'pkg-config-powerpc64le-linux-gnu'.
>>>
>>> Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
>>> ---
>>>   config/ppc/ppc64le-power8-linux-gcc-ubuntu | 1 +
>>
>> Why not adding the same for ppc64le-power8-linux-gcc?
>>
>>> +pkgconfig = 'powerpc64le-linux-gnu-pkg-config'
> 
> I didn't find any operating systems that distribute the powerpc64le cross-compiler with the binary names found in config/ppc/ppc64le-power8-linux-gcc.
> Both Ubuntu and Fedora use the -gnu suffix. Fedora doesn't seem to have a pkg-config binary for powerpc64le though.

I am able to cross-compile dpdk on Ubuntu with the default config file
My system info:
# uname -rvm
  5.4.0-113-generic #127-Ubuntu SMP Wed May 18 14:30:56 UTC 2022 x86_64

# apt list gcc-10-powerpc64le-linux-gnu | grep installed
gcc-10-powerpc64le-linux-gnu/focal-updates,focal-security,now 
10.3.0-1ubuntu1~20.04cross1 amd64 [installed]
# which powerpc64le-linux-gnu-gcc
/usr/bin/powerpc64le-linux-gnu-gcc
# ls -l /usr/bin/powerpc64le-linux-gnu-gcc
lrwxrwxrwx 1 root root 37 Jul 13 11:56 
/usr/bin/powerpc64le-linux-gnu-gcc -> /usr/bin/powerpc64le-linux-gnu-gcc-10

# apt list pkg-config | grep installed
pkg-config/focal,now 0.29.1-0ubuntu4 amd64 [installed]

# meson cross-build_p8 --cross-file 
config/ppc/ppc64le-power8-linux-gcc-ubuntu
The Meson build system
Version: 0.56.2
Source dir: /root/dpdk
Build dir: /root/dpdk/cross-build_p8
Build type: cross build
Program cat found: YES (/bin/cat)
Project name: DPDK
Project version: 22.07.0-rc4
C compiler for the host machine: powerpc64le-linux-gnu-gcc (gcc 10.3.0 
"powerpc64le-linux-gnu-gcc (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0")
C linker for the host machine: powerpc64le-linux-gnu-gcc ld.bfd 2.34
C compiler for the build machine: cc (gcc 9.4.0 "cc (Ubuntu 
9.4.0-1ubuntu1~20.04.1) 9.4.0")
C linker for the build machine: cc ld.bfd 2.34
Build machine cpu family: x86_64
Build machine cpu: x86_64
Host machine cpu family: x86_64
Host machine cpu: x86_64
Target machine cpu family: ppc64
Target machine cpu: power8
Program pkg-config found: YES (/usr/bin/pkg-config)
Program check-symbols.sh found: YES (/root/dpdk/buildtools/check-symbols.sh)
Program options-ibverbs-static.sh found: YES 
(/root/dpdk/buildtools/options-ibverbs-static.sh)
Program objdump found: YES (/usr/bin/objdump)
Program python3 found: YES (/usr/bin/python3)
Program cat found: YES (/bin/cat)
Program ../buildtools/symlink-drivers-solibs.sh found: YES (/bin/sh 
/root/dpdk/config/../buildtools/symlink-drivers-solibs.sh)
Checking for size of "void *" : 8
Checking for size of "void *" : 8
......
Build targets in project: 851

Found ninja-1.10.0 at /usr/bin/ninja
# ninja -C cross-build_p8
ninja: Entering directory `cross-build_p8'
[2933/2933] Linking target app/test/dpdk-test

similar to it, I'm able to build for power9

Regards,
Thinh Tran
  
Ali Alnubani July 14, 2022, 6:58 a.m. UTC | #7
> -----Original Message-----
> From: Thinh Tran <thinhtr@linux.vnet.ibm.com>
> Sent: Wednesday, July 13, 2022 10:50 PM
> To: Ali Alnubani <alialnu@nvidia.com>; NBU-Contact-Thomas Monjalon
> (EXTERNAL) <thomas@monjalon.net>
> Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
> Subject: Re: [PATCH] config: set pkgconfig for ppc64le
> 
> Hi,
> 
> On 7/13/2022 2:39 AM, Ali Alnubani wrote:
> >> -----Original Message-----
> >> From: Thomas Monjalon <thomas@monjalon.net>
> >> Sent: Monday, July 11, 2022 11:11 PM
> >> To: Ali Alnubani <alialnu@nvidia.com>
> >> Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
> >> Subject: Re: [PATCH] config: set pkgconfig for ppc64le
> >>
> >> + PPC maintainer
> >>
> >> 07/07/2022 13:41, Ali Alnubani:
> >>> Meson fails to detect the dependencies that are included
> >>> in PKG_CONFIG_PATH and built for ppc64le if binaries.pkgconfig
> >>> is not set in the ppc64le cross-file for Ubuntu.
> >>>
> >>> This fixes the issue by setting binaries.pkgconfig to the
> >>> binary provided by the package 'pkg-config-powerpc64le-linux-gnu'.
> >>>
> >>> Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
> >>> ---
> >>>   config/ppc/ppc64le-power8-linux-gcc-ubuntu | 1 +
> >>
> >> Why not adding the same for ppc64le-power8-linux-gcc?
> >>
> >>> +pkgconfig = 'powerpc64le-linux-gnu-pkg-config'
> >
> > I didn't find any operating systems that distribute the powerpc64le cross-
> compiler with the binary names found in config/ppc/ppc64le-power8-linux-
> gcc.
> > Both Ubuntu and Fedora use the -gnu suffix. Fedora doesn't seem to have
> a pkg-config binary for powerpc64le though.
> 
> I am able to cross-compile dpdk on Ubuntu with the default config file
> My system info:
> # uname -rvm
>   5.4.0-113-generic #127-Ubuntu SMP Wed May 18 14:30:56 UTC 2022 x86_64
> 
> # apt list gcc-10-powerpc64le-linux-gnu | grep installed
> gcc-10-powerpc64le-linux-gnu/focal-updates,focal-security,now
> 10.3.0-1ubuntu1~20.04cross1 amd64 [installed]
> # which powerpc64le-linux-gnu-gcc
> /usr/bin/powerpc64le-linux-gnu-gcc
> # ls -l /usr/bin/powerpc64le-linux-gnu-gcc
> lrwxrwxrwx 1 root root 37 Jul 13 11:56
> /usr/bin/powerpc64le-linux-gnu-gcc -> /usr/bin/powerpc64le-linux-gnu-gcc-
> 10
> 
> # apt list pkg-config | grep installed
> pkg-config/focal,now 0.29.1-0ubuntu4 amd64 [installed]
> 
> # meson cross-build_p8 --cross-file
> config/ppc/ppc64le-power8-linux-gcc-ubuntu
> The Meson build system
> Version: 0.56.2
> Source dir: /root/dpdk
> Build dir: /root/dpdk/cross-build_p8
> Build type: cross build
> Program cat found: YES (/bin/cat)
> Project name: DPDK
> Project version: 22.07.0-rc4
> C compiler for the host machine: powerpc64le-linux-gnu-gcc (gcc 10.3.0
> "powerpc64le-linux-gnu-gcc (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0")
> C linker for the host machine: powerpc64le-linux-gnu-gcc ld.bfd 2.34
> C compiler for the build machine: cc (gcc 9.4.0 "cc (Ubuntu
> 9.4.0-1ubuntu1~20.04.1) 9.4.0")
> C linker for the build machine: cc ld.bfd 2.34
> Build machine cpu family: x86_64
> Build machine cpu: x86_64
> Host machine cpu family: x86_64
> Host machine cpu: x86_64
> Target machine cpu family: ppc64
> Target machine cpu: power8
> Program pkg-config found: YES (/usr/bin/pkg-config)
> Program check-symbols.sh found: YES (/root/dpdk/buildtools/check-
> symbols.sh)
> Program options-ibverbs-static.sh found: YES
> (/root/dpdk/buildtools/options-ibverbs-static.sh)
> Program objdump found: YES (/usr/bin/objdump)
> Program python3 found: YES (/usr/bin/python3)
> Program cat found: YES (/bin/cat)
> Program ../buildtools/symlink-drivers-solibs.sh found: YES (/bin/sh
> /root/dpdk/config/../buildtools/symlink-drivers-solibs.sh)
> Checking for size of "void *" : 8
> Checking for size of "void *" : 8
> ......
> Build targets in project: 851
> 
> Found ninja-1.10.0 at /usr/bin/ninja
> # ninja -C cross-build_p8
> ninja: Entering directory `cross-build_p8'
> [2933/2933] Linking target app/test/dpdk-test
> 
> similar to it, I'm able to build for power9
> 

Hi Thinh,

I'm also able to cross-build for ppc64 on Ubuntu, but without setting binaries.pkgconfig, meson will skip some build targets, even if PKG_CONFIG_PATH points to their dependencies.
Have you tried on Fedora?
  
Thinh Tran July 18, 2022, 8:16 p.m. UTC | #8
On 7/14/2022 1:58 AM, Ali Alnubani wrote:
>> -----Original Message-----
>> From: Thinh Tran <thinhtr@linux.vnet.ibm.com>
>> Sent: Wednesday, July 13, 2022 10:50 PM
>> To: Ali Alnubani <alialnu@nvidia.com>; NBU-Contact-Thomas Monjalon
>> (EXTERNAL) <thomas@monjalon.net>
>> Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
>> Subject: Re: [PATCH] config: set pkgconfig for ppc64le
>>
>> Hi,
>>
>> On 7/13/2022 2:39 AM, Ali Alnubani wrote:
>>>> -----Original Message-----
>>>> From: Thomas Monjalon <thomas@monjalon.net>
>>>> Sent: Monday, July 11, 2022 11:11 PM
>>>> To: Ali Alnubani <alialnu@nvidia.com>
>>>> Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
>>>> Subject: Re: [PATCH] config: set pkgconfig for ppc64le
>>>>
>>>> + PPC maintainer
>>>>
>>>> 07/07/2022 13:41, Ali Alnubani:
>>>>> Meson fails to detect the dependencies that are included
>>>>> in PKG_CONFIG_PATH and built for ppc64le if binaries.pkgconfig
>>>>> is not set in the ppc64le cross-file for Ubuntu.
>>>>>
>>>>> This fixes the issue by setting binaries.pkgconfig to the
>>>>> binary provided by the package 'pkg-config-powerpc64le-linux-gnu'.
>>>>>
>>>>> Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
>>>>> ---
>>>>>    config/ppc/ppc64le-power8-linux-gcc-ubuntu | 1 +
>>>>
>>>> Why not adding the same for ppc64le-power8-linux-gcc?
>>>>
>>>>> +pkgconfig = 'powerpc64le-linux-gnu-pkg-config'
>>>
>>> I didn't find any operating systems that distribute the powerpc64le cross-
>> compiler with the binary names found in config/ppc/ppc64le-power8-linux-
>> gcc.
>>> Both Ubuntu and Fedora use the -gnu suffix. Fedora doesn't seem to have
>> a pkg-config binary for powerpc64le though.
>>
>> I am able to cross-compile dpdk on Ubuntu with the default config file
>> My system info:
>> # uname -rvm
>>    5.4.0-113-generic #127-Ubuntu SMP Wed May 18 14:30:56 UTC 2022 x86_64
>>
>> # apt list gcc-10-powerpc64le-linux-gnu | grep installed
>> gcc-10-powerpc64le-linux-gnu/focal-updates,focal-security,now
>> 10.3.0-1ubuntu1~20.04cross1 amd64 [installed]
>> # which powerpc64le-linux-gnu-gcc
>> /usr/bin/powerpc64le-linux-gnu-gcc
>> # ls -l /usr/bin/powerpc64le-linux-gnu-gcc
>> lrwxrwxrwx 1 root root 37 Jul 13 11:56
>> /usr/bin/powerpc64le-linux-gnu-gcc -> /usr/bin/powerpc64le-linux-gnu-gcc-
>> 10
>>
>> # apt list pkg-config | grep installed
>> pkg-config/focal,now 0.29.1-0ubuntu4 amd64 [installed]
>>
>> # meson cross-build_p8 --cross-file
>> config/ppc/ppc64le-power8-linux-gcc-ubuntu
>> The Meson build system
>> Version: 0.56.2
>> Source dir: /root/dpdk
>> Build dir: /root/dpdk/cross-build_p8
>> Build type: cross build
>> Program cat found: YES (/bin/cat)
>> Project name: DPDK
>> Project version: 22.07.0-rc4
>> C compiler for the host machine: powerpc64le-linux-gnu-gcc (gcc 10.3.0
>> "powerpc64le-linux-gnu-gcc (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0")
>> C linker for the host machine: powerpc64le-linux-gnu-gcc ld.bfd 2.34
>> C compiler for the build machine: cc (gcc 9.4.0 "cc (Ubuntu
>> 9.4.0-1ubuntu1~20.04.1) 9.4.0")
>> C linker for the build machine: cc ld.bfd 2.34
>> Build machine cpu family: x86_64
>> Build machine cpu: x86_64
>> Host machine cpu family: x86_64
>> Host machine cpu: x86_64
>> Target machine cpu family: ppc64
>> Target machine cpu: power8
>> Program pkg-config found: YES (/usr/bin/pkg-config)
>> Program check-symbols.sh found: YES (/root/dpdk/buildtools/check-
>> symbols.sh)
>> Program options-ibverbs-static.sh found: YES
>> (/root/dpdk/buildtools/options-ibverbs-static.sh)
>> Program objdump found: YES (/usr/bin/objdump)
>> Program python3 found: YES (/usr/bin/python3)
>> Program cat found: YES (/bin/cat)
>> Program ../buildtools/symlink-drivers-solibs.sh found: YES (/bin/sh
>> /root/dpdk/config/../buildtools/symlink-drivers-solibs.sh)
>> Checking for size of "void *" : 8
>> Checking for size of "void *" : 8
>> ......
>> Build targets in project: 851
>>
>> Found ninja-1.10.0 at /usr/bin/ninja
>> # ninja -C cross-build_p8
>> ninja: Entering directory `cross-build_p8'
>> [2933/2933] Linking target app/test/dpdk-test
>>
>> similar to it, I'm able to build for power9
>>
> 
> Hi Thinh,
> 
> I'm also able to cross-build for ppc64 on Ubuntu, but without setting binaries.pkgconfig, meson will skip some build targets, even if PKG_CONFIG_PATH points to their dependencies.
> Have you tried on Fedora?
Hi Ali,
Sorry for the delay.
Cross-build failed - missing the stdio.h same as yours on Fedora 30 and 35.
checking gcc-powerpc64-linux-gnu.x86_64 and 
gcc-powerpc64le-linux-gnu.x86_64 packages, both do not ship stdio.h and 
other header files: pthread.h, inttypes.h, etc...

We are investing this issue.
Regards,
Thinh Tran
  
David Christensen July 19, 2022, 11:02 p.m. UTC | #9
On 7/18/22 1:16 PM, Thinh Tran wrote:
> 
> 
> On 7/14/2022 1:58 AM, Ali Alnubani wrote:
>>> -----Original Message-----
>>> From: Thinh Tran <thinhtr@linux.vnet.ibm.com>
>>> Sent: Wednesday, July 13, 2022 10:50 PM
>>> To: Ali Alnubani <alialnu@nvidia.com>; NBU-Contact-Thomas Monjalon
>>> (EXTERNAL) <thomas@monjalon.net>
>>> Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
>>> Subject: Re: [PATCH] config: set pkgconfig for ppc64le
>>>
>>> Hi,
>>>
>>> On 7/13/2022 2:39 AM, Ali Alnubani wrote:
>>>>> -----Original Message-----
>>>>> From: Thomas Monjalon <thomas@monjalon.net>
>>>>> Sent: Monday, July 11, 2022 11:11 PM
>>>>> To: Ali Alnubani <alialnu@nvidia.com>
>>>>> Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
>>>>> Subject: Re: [PATCH] config: set pkgconfig for ppc64le
>>>>>
>>>>> + PPC maintainer
>>>>>
>>>>> 07/07/2022 13:41, Ali Alnubani:
>>>>>> Meson fails to detect the dependencies that are included
>>>>>> in PKG_CONFIG_PATH and built for ppc64le if binaries.pkgconfig
>>>>>> is not set in the ppc64le cross-file for Ubuntu.
>>>>>>
>>>>>> This fixes the issue by setting binaries.pkgconfig to the
>>>>>> binary provided by the package 'pkg-config-powerpc64le-linux-gnu'.
>>>>>>
>>>>>> Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
>>>>>> ---
>>>>>>    config/ppc/ppc64le-power8-linux-gcc-ubuntu | 1 +
>>>>>
>>>>> Why not adding the same for ppc64le-power8-linux-gcc?
>>>>>
>>>>>> +pkgconfig = 'powerpc64le-linux-gnu-pkg-config'
>>>>
>>>> I didn't find any operating systems that distribute the powerpc64le 
>>>> cross-
>>> compiler with the binary names found in config/ppc/ppc64le-power8-linux-
>>> gcc.
>>>> Both Ubuntu and Fedora use the -gnu suffix. Fedora doesn't seem to have
>>> a pkg-config binary for powerpc64le though.
>>>
>>> I am able to cross-compile dpdk on Ubuntu with the default config file
>>> My system info:
>>> # uname -rvm
>>>    5.4.0-113-generic #127-Ubuntu SMP Wed May 18 14:30:56 UTC 2022 x86_64
>>>
>>> # apt list gcc-10-powerpc64le-linux-gnu | grep installed
>>> gcc-10-powerpc64le-linux-gnu/focal-updates,focal-security,now
>>> 10.3.0-1ubuntu1~20.04cross1 amd64 [installed]
>>> # which powerpc64le-linux-gnu-gcc
>>> /usr/bin/powerpc64le-linux-gnu-gcc
>>> # ls -l /usr/bin/powerpc64le-linux-gnu-gcc
>>> lrwxrwxrwx 1 root root 37 Jul 13 11:56
>>> /usr/bin/powerpc64le-linux-gnu-gcc -> 
>>> /usr/bin/powerpc64le-linux-gnu-gcc-
>>> 10
>>>
>>> # apt list pkg-config | grep installed
>>> pkg-config/focal,now 0.29.1-0ubuntu4 amd64 [installed]
>>>
>>> # meson cross-build_p8 --cross-file
>>> config/ppc/ppc64le-power8-linux-gcc-ubuntu
>>> The Meson build system
>>> Version: 0.56.2
>>> Source dir: /root/dpdk
>>> Build dir: /root/dpdk/cross-build_p8
>>> Build type: cross build
>>> Program cat found: YES (/bin/cat)
>>> Project name: DPDK
>>> Project version: 22.07.0-rc4
>>> C compiler for the host machine: powerpc64le-linux-gnu-gcc (gcc 10.3.0
>>> "powerpc64le-linux-gnu-gcc (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0")
>>> C linker for the host machine: powerpc64le-linux-gnu-gcc ld.bfd 2.34
>>> C compiler for the build machine: cc (gcc 9.4.0 "cc (Ubuntu
>>> 9.4.0-1ubuntu1~20.04.1) 9.4.0")
>>> C linker for the build machine: cc ld.bfd 2.34
>>> Build machine cpu family: x86_64
>>> Build machine cpu: x86_64
>>> Host machine cpu family: x86_64
>>> Host machine cpu: x86_64
>>> Target machine cpu family: ppc64
>>> Target machine cpu: power8
>>> Program pkg-config found: YES (/usr/bin/pkg-config)
>>> Program check-symbols.sh found: YES (/root/dpdk/buildtools/check-
>>> symbols.sh)
>>> Program options-ibverbs-static.sh found: YES
>>> (/root/dpdk/buildtools/options-ibverbs-static.sh)
>>> Program objdump found: YES (/usr/bin/objdump)
>>> Program python3 found: YES (/usr/bin/python3)
>>> Program cat found: YES (/bin/cat)
>>> Program ../buildtools/symlink-drivers-solibs.sh found: YES (/bin/sh
>>> /root/dpdk/config/../buildtools/symlink-drivers-solibs.sh)
>>> Checking for size of "void *" : 8
>>> Checking for size of "void *" : 8
>>> ......
>>> Build targets in project: 851
>>>
>>> Found ninja-1.10.0 at /usr/bin/ninja
>>> # ninja -C cross-build_p8
>>> ninja: Entering directory `cross-build_p8'
>>> [2933/2933] Linking target app/test/dpdk-test
>>>
>>> similar to it, I'm able to build for power9
>>>
>>
>> Hi Thinh,
>>
>> I'm also able to cross-build for ppc64 on Ubuntu, but without setting 
>> binaries.pkgconfig, meson will skip some build targets, even if 
>> PKG_CONFIG_PATH points to their dependencies.
>> Have you tried on Fedora?

As Thinh points out, you can't cross-compile for ppc64le on Fedora with 
distro supplied packages.  Ran across this question about the issue 
relative to ARM on the Fedora Project website:

https://ask.fedoraproject.org/t/cross-compiling-to-arm/17864/12

And also confirmed internally with our toolchain developers that you'd 
need glibc support which isn't provided in the existing Fedora packages. 
  Consensus seems to be that Fedora cross-compile is for 
kernels/bootloaders only, though I'd love to hear from someone at Red 
Hat if I'm mistaken.

Ubuntu/Debian do support the functionality, so you could try those 
environments (as used by Github Actions for DPDK commits), use a third 
party toolchain such as those found on:

https://toolchains.bootlin.com/releases_powerpc64le-power8.html

Or you could use the IBM Advanced Toolchain for POWER:

https://www.ibm.com/support/pages/advtool-cross-compilers

Dave
  
Thomas Monjalon Aug. 29, 2022, 10:30 a.m. UTC | #10
What is the conclusion on this patch?
It is good to go? Acked?


20/07/2022 01:02, David Christensen:
> 
> On 7/18/22 1:16 PM, Thinh Tran wrote:
> > 
> > 
> > On 7/14/2022 1:58 AM, Ali Alnubani wrote:
> >>> -----Original Message-----
> >>> From: Thinh Tran <thinhtr@linux.vnet.ibm.com>
> >>> Sent: Wednesday, July 13, 2022 10:50 PM
> >>> To: Ali Alnubani <alialnu@nvidia.com>; NBU-Contact-Thomas Monjalon
> >>> (EXTERNAL) <thomas@monjalon.net>
> >>> Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
> >>> Subject: Re: [PATCH] config: set pkgconfig for ppc64le
> >>>
> >>> Hi,
> >>>
> >>> On 7/13/2022 2:39 AM, Ali Alnubani wrote:
> >>>>> -----Original Message-----
> >>>>> From: Thomas Monjalon <thomas@monjalon.net>
> >>>>> Sent: Monday, July 11, 2022 11:11 PM
> >>>>> To: Ali Alnubani <alialnu@nvidia.com>
> >>>>> Cc: dev@dpdk.org; David Christensen <drc@linux.vnet.ibm.com>
> >>>>> Subject: Re: [PATCH] config: set pkgconfig for ppc64le
> >>>>>
> >>>>> + PPC maintainer
> >>>>>
> >>>>> 07/07/2022 13:41, Ali Alnubani:
> >>>>>> Meson fails to detect the dependencies that are included
> >>>>>> in PKG_CONFIG_PATH and built for ppc64le if binaries.pkgconfig
> >>>>>> is not set in the ppc64le cross-file for Ubuntu.
> >>>>>>
> >>>>>> This fixes the issue by setting binaries.pkgconfig to the
> >>>>>> binary provided by the package 'pkg-config-powerpc64le-linux-gnu'.
> >>>>>>
> >>>>>> Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
> >>>>>> ---
> >>>>>>    config/ppc/ppc64le-power8-linux-gcc-ubuntu | 1 +
> >>>>>
> >>>>> Why not adding the same for ppc64le-power8-linux-gcc?
> >>>>>
> >>>>>> +pkgconfig = 'powerpc64le-linux-gnu-pkg-config'
> >>>>
> >>>> I didn't find any operating systems that distribute the powerpc64le 
> >>>> cross-
> >>> compiler with the binary names found in config/ppc/ppc64le-power8-linux-
> >>> gcc.
> >>>> Both Ubuntu and Fedora use the -gnu suffix. Fedora doesn't seem to have
> >>> a pkg-config binary for powerpc64le though.
> >>>
> >>> I am able to cross-compile dpdk on Ubuntu with the default config file
> >>> My system info:
> >>> # uname -rvm
> >>>    5.4.0-113-generic #127-Ubuntu SMP Wed May 18 14:30:56 UTC 2022 x86_64
> >>>
> >>> # apt list gcc-10-powerpc64le-linux-gnu | grep installed
> >>> gcc-10-powerpc64le-linux-gnu/focal-updates,focal-security,now
> >>> 10.3.0-1ubuntu1~20.04cross1 amd64 [installed]
> >>> # which powerpc64le-linux-gnu-gcc
> >>> /usr/bin/powerpc64le-linux-gnu-gcc
> >>> # ls -l /usr/bin/powerpc64le-linux-gnu-gcc
> >>> lrwxrwxrwx 1 root root 37 Jul 13 11:56
> >>> /usr/bin/powerpc64le-linux-gnu-gcc -> 
> >>> /usr/bin/powerpc64le-linux-gnu-gcc-
> >>> 10
> >>>
> >>> # apt list pkg-config | grep installed
> >>> pkg-config/focal,now 0.29.1-0ubuntu4 amd64 [installed]
> >>>
> >>> # meson cross-build_p8 --cross-file
> >>> config/ppc/ppc64le-power8-linux-gcc-ubuntu
> >>> The Meson build system
> >>> Version: 0.56.2
> >>> Source dir: /root/dpdk
> >>> Build dir: /root/dpdk/cross-build_p8
> >>> Build type: cross build
> >>> Program cat found: YES (/bin/cat)
> >>> Project name: DPDK
> >>> Project version: 22.07.0-rc4
> >>> C compiler for the host machine: powerpc64le-linux-gnu-gcc (gcc 10.3.0
> >>> "powerpc64le-linux-gnu-gcc (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0")
> >>> C linker for the host machine: powerpc64le-linux-gnu-gcc ld.bfd 2.34
> >>> C compiler for the build machine: cc (gcc 9.4.0 "cc (Ubuntu
> >>> 9.4.0-1ubuntu1~20.04.1) 9.4.0")
> >>> C linker for the build machine: cc ld.bfd 2.34
> >>> Build machine cpu family: x86_64
> >>> Build machine cpu: x86_64
> >>> Host machine cpu family: x86_64
> >>> Host machine cpu: x86_64
> >>> Target machine cpu family: ppc64
> >>> Target machine cpu: power8
> >>> Program pkg-config found: YES (/usr/bin/pkg-config)
> >>> Program check-symbols.sh found: YES (/root/dpdk/buildtools/check-
> >>> symbols.sh)
> >>> Program options-ibverbs-static.sh found: YES
> >>> (/root/dpdk/buildtools/options-ibverbs-static.sh)
> >>> Program objdump found: YES (/usr/bin/objdump)
> >>> Program python3 found: YES (/usr/bin/python3)
> >>> Program cat found: YES (/bin/cat)
> >>> Program ../buildtools/symlink-drivers-solibs.sh found: YES (/bin/sh
> >>> /root/dpdk/config/../buildtools/symlink-drivers-solibs.sh)
> >>> Checking for size of "void *" : 8
> >>> Checking for size of "void *" : 8
> >>> ......
> >>> Build targets in project: 851
> >>>
> >>> Found ninja-1.10.0 at /usr/bin/ninja
> >>> # ninja -C cross-build_p8
> >>> ninja: Entering directory `cross-build_p8'
> >>> [2933/2933] Linking target app/test/dpdk-test
> >>>
> >>> similar to it, I'm able to build for power9
> >>>
> >>
> >> Hi Thinh,
> >>
> >> I'm also able to cross-build for ppc64 on Ubuntu, but without setting 
> >> binaries.pkgconfig, meson will skip some build targets, even if 
> >> PKG_CONFIG_PATH points to their dependencies.
> >> Have you tried on Fedora?
> 
> As Thinh points out, you can't cross-compile for ppc64le on Fedora with 
> distro supplied packages.  Ran across this question about the issue 
> relative to ARM on the Fedora Project website:
> 
> https://ask.fedoraproject.org/t/cross-compiling-to-arm/17864/12
> 
> And also confirmed internally with our toolchain developers that you'd 
> need glibc support which isn't provided in the existing Fedora packages. 
>   Consensus seems to be that Fedora cross-compile is for 
> kernels/bootloaders only, though I'd love to hear from someone at Red 
> Hat if I'm mistaken.
> 
> Ubuntu/Debian do support the functionality, so you could try those 
> environments (as used by Github Actions for DPDK commits), use a third 
> party toolchain such as those found on:
> 
> https://toolchains.bootlin.com/releases_powerpc64le-power8.html
> 
> Or you could use the IBM Advanced Toolchain for POWER:
> 
> https://www.ibm.com/support/pages/advtool-cross-compilers
> 
> Dave
>
  
David Christensen Aug. 30, 2022, 5:36 p.m. UTC | #11
On 7/7/22 4:41 AM, Ali Alnubani wrote:
> Meson fails to detect the dependencies that are included
> in PKG_CONFIG_PATH and built for ppc64le if binaries.pkgconfig
> is not set in the ppc64le cross-file for Ubuntu.
> 
> This fixes the issue by setting binaries.pkgconfig to the
> binary provided by the package 'pkg-config-powerpc64le-linux-gnu'.
> 
> Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
> ---
>   config/ppc/ppc64le-power8-linux-gcc-ubuntu | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/config/ppc/ppc64le-power8-linux-gcc-ubuntu b/config/ppc/ppc64le-power8-linux-gcc-ubuntu
> index 3027d66f8d..c2d5b1dc6a 100644
> --- a/config/ppc/ppc64le-power8-linux-gcc-ubuntu
> +++ b/config/ppc/ppc64le-power8-linux-gcc-ubuntu
> @@ -3,6 +3,7 @@ c = ['ccache', 'powerpc64le-linux-gnu-gcc']
>   cpp = ['ccache', 'powerpc64le-linux-gnu-g++']
>   ar = 'powerpc64le-linux-gnu-ar'
>   strip = 'powerpc64le-linux-gnu-strip'
> +pkgconfig = 'powerpc64le-linux-gnu-pkg-config'
> 
>   [host_machine]
>   system = 'linux'

What's the test environment that prompted this patch?  I'd like to try 
replicating before approving.

Dave
  
David Christensen Aug. 30, 2022, 5:39 p.m. UTC | #12
On 8/29/22 3:30 AM, Thomas Monjalon wrote:
> What is the conclusion on this patch?
> It is good to go? Acked?

Not from me yet.

Just asked about the test environment so I can duplicate the issue.  My 
understanding is that Ubuntu cross-compiles for CI/CD are still working 
so I'd like to understand the test case the drives this need.

Dave
  
Ali Alnubani Aug. 30, 2022, 6:36 p.m. UTC | #13
> On 8/29/22 3:30 AM, Thomas Monjalon wrote:
> > What is the conclusion on this patch?
> > It is good to go? Acked?
> 
> Not from me yet.
> 
> Just asked about the test environment so I can duplicate the issue.  My
> understanding is that Ubuntu cross-compiles for CI/CD are still working
> so I'd like to understand the test case the drives this need.
> 
> Dave

Trying to enable the mlx drivers when cross-building for ppc64le, I added the directory containing
the .pc files from an rdma-core (https://github.com/linux-rdma/rdma-core) ppc64le cross build, but Meson
didn't detect the dependencies without installing pkg-config-powerpc64le-linux-gnu and setting
binaries.pkgconfig as powerpc64le-linux-gnu-pkg-config.

I just tried to reproduce the issue with a cross build of numactl, but Meson will not
detect it, even with my change. Seems that PKG_CONFIG_PATH=:/path/to/numactl/build/lib/pkgconfig
gets ignored.

- Ali
  
Ali Alnubani Oct. 26, 2022, 4:21 p.m. UTC | #14
> -----Original Message-----
> From: Ali Alnubani <alialnu@nvidia.com>
> Sent: Tuesday, August 30, 2022 9:36 PM
> To: David Christensen <drc@linux.vnet.ibm.com>
> Cc: dev@dpdk.org; Thinh Tran <thinhtr@linux.vnet.ibm.com>; NBU-Contact-
> Thomas Monjalon (EXTERNAL) <thomas@monjalon.net>
> Subject: RE: [PATCH] config: set pkgconfig for ppc64le
> 
> > On 8/29/22 3:30 AM, Thomas Monjalon wrote:
> > > What is the conclusion on this patch?
> > > It is good to go? Acked?
> >
> > Not from me yet.
> >
> > Just asked about the test environment so I can duplicate the issue.  My
> > understanding is that Ubuntu cross-compiles for CI/CD are still working
> > so I'd like to understand the test case the drives this need.
> >
> > Dave
> 
> Trying to enable the mlx drivers when cross-building for ppc64le, I added the
> directory containing
> the .pc files from an rdma-core (https://github.com/linux-rdma/rdma-core)
> ppc64le cross build, but Meson
> didn't detect the dependencies without installing pkg-config-powerpc64le-
> linux-gnu and setting
> binaries.pkgconfig as powerpc64le-linux-gnu-pkg-config.
> 
> I just tried to reproduce the issue with a cross build of numactl, but Meson
> will not
> detect it, even with my change. Seems that
> PKG_CONFIG_PATH=:/path/to/numactl/build/lib/pkgconfig
> gets ignored.
> 

Hello David,

Do you still have any concerns about this change?
Do you have any similar use-cases that you can test? (i.e., check if pkg-config can detect a cross-built dependency for ppc64le).

By the way, we do a similar change for arm cross builds:
https://git.dpdk.org/dpdk/commit/config/arm/arm64_armv8_linux_gcc?id=f31d17807236094268ccd1bead5d740a10fec513

Thanks,
Ali
  

Patch

diff --git a/config/ppc/ppc64le-power8-linux-gcc-ubuntu b/config/ppc/ppc64le-power8-linux-gcc-ubuntu
index 3027d66f8d..c2d5b1dc6a 100644
--- a/config/ppc/ppc64le-power8-linux-gcc-ubuntu
+++ b/config/ppc/ppc64le-power8-linux-gcc-ubuntu
@@ -3,6 +3,7 @@  c = ['ccache', 'powerpc64le-linux-gnu-gcc']
 cpp = ['ccache', 'powerpc64le-linux-gnu-g++']
 ar = 'powerpc64le-linux-gnu-ar'
 strip = 'powerpc64le-linux-gnu-strip'
+pkgconfig = 'powerpc64le-linux-gnu-pkg-config'
 
 [host_machine]
 system = 'linux'