[dpdk-dev] [PATCH v8 6/6] build: use dependency for pcap and fallback to find_library

Thomas Monjalon thomas at monjalon.net
Fri Mar 1 14:13:49 CET 2019


28/02/2019 18:40, Bruce Richardson:
> On Wed, Feb 27, 2019 at 01:53:32PM +0000, Bruce Richardson wrote:
> > On Wed, Feb 27, 2019 at 12:03:48PM +0000, Luca Boccassi wrote:
> > > On Wed, 2019-02-27 at 11:56 +0100, Thomas Monjalon wrote:
> > > > 27/02/2019 11:50, Luca Boccassi:
> > > > > On Wed, 2019-02-27 at 09:47 +0000, Bruce Richardson wrote:
> > > > > > On Wed, Feb 27, 2019 at 09:33:12AM +0100, Thomas Monjalon wrote:
> > > > > > > 26/02/2019 18:49, Luca Boccassi:
> > > > > > > > On Tue, 2019-02-26 at 17:46 +0000, luca.boccassi at gmail.com
> > > > > > > > wrote:
> > > > > > > > > From: Luca Boccassi <luca.boccassi at microsoft.com>
> > > > > > > > > 
> > > > > > > > > pcap has historically shipped a custom pcap-config binary
> > > > > > > > > tool
> > > > > > > > > which
> > > > > > > > > does the job of pkg-config. It was never compatible with
> > > > > > > > > cross
> > > > > > > > > compilation.
> > > > > > > > > Meson uses it when using dependency(), which then means
> > > > > > > > > cross
> > > > > > > > > compilation fails.
> > > > > > > > > Set pcap-config to empty in the meson cross compilation
> > > > > > > > > files
> > > > > > > > > so
> > > > > > > > > that Meson will not use it, and add a fallback in case
> > > > > > > > > dependency() fails.
> > > > > > > > > libpcap 1.9.0 finally ships a pkg-config file so everything
> > > > > > > > > will
> > > > > > > > > work out of the box in the future.
> > > > > > > > > 
> > > > > > > > > Signed-off-by: Luca Boccassi <luca.boccassi at microsoft.com>
> > > > > > > > > ---
> > > > > > > > > v8: added back pcap change separately. Tested with bootlin
> > > > > > > > >     cross-compilation toolchain, everything seems to work.
> > > > > > > > 
> > > > > > > > I had some time to invest so I added back this change, in a
> > > > > > > > way
> > > > > > > > that
> > > > > > > > works with cross compilation too. Given the series wasn't
> > > > > > > > merged
> > > > > > > > yet
> > > > > > > > and there was a conflict I've done a v8 rather than a single
> > > > > > > > separate
> > > > > > > > patch, but it's independent from the rest.
> > > > > > > > 
> > > > > > > > More testing is of course welcome!
> > > > > > > 
> > > > > > > I still see the same error when cross-compiling:
> > > > > > > 
> > > > > > > /usr/include/stdint.h:109: error: "__INT64_C" redefined
> > > > > > > 
> > > > > > Can patches 1-5 be merged anyway, leaving 6 for later?
> > > > > > 
> > > > > > /Bruce
> > > > > 
> > > > > Yes please...
> > > > 
> > > > Yes, sure. I am checking other patches to push them.
> > > 
> > > Thanks!
> > > 
> > > > > Thomas, could you please give me detailed instructions on how to
> > > > > repro?
> > > > > I used the bootlin toolchain you linked me last time, and passed --
> > > > > cross-file config/arm/arm64_armv8_linuxapp_gcc to Meson, and
> > > > > everything
> > > > > built fine both with and without an arm64 build of libpcap in the
> > > > > sysroot. With the previous version that I removed it would fail.
> > > > > Not
> > > > > sure what I'm missing!
> > > > 
> > > > I'm running devtools/test-meson-builds.sh on my ArchLinux which has
> > > > aarch64-linux-gnu-gcc 8.2.0 but no arm pcap I guess.
> > > 
> > > The script is working fine too - I have the toolchain in /tmp so I
> > > simply run it with PATH=/tmp/toolchain/bin:$PATH and everything built
> > > fine including the arm targets.
> > > 
> > > The key part in the patch was adding pcap-config = '' to the various
> > > arm configs, could you please double check that it was applied
> > > correctly? Without that, Meson finds and calls the native pcap-config
> > > which gives wrong (native) flags and causes the errors you are seeing.
> > > Otherwise I'm a bit lost, I can't understand why it's all working here
> > > and not there.
> > > 
> > > meson --werror -Dexamples=all --default-library=shared --cross-file config/arm/arm64_armv8_linuxapp_gcc /home/bluca/git/dpdk/devtools/.. build-arm64-armv8
> > > The Meson build system
> > > Version: 0.49.2
> > > Source dir: /home/bluca/git/dpdk
> > > Build dir: /home/bluca/git/dpdk/build-arm64-armv8
> > > Build type: cross build
> > > Project name: DPDK
> > > Project version: 19.05.0-rc0
> > > Native C compiler: ccache gcc (gcc 8.2.0 "gcc (Debian 8.2.0-21) 8.2.0")
> > > Cross C compiler: aarch64-linux-gnu-gcc (gcc 7.3.0)
> > > Host machine cpu family: aarch64
> > > Host machine cpu: armv8-a
> > > Target machine cpu family: aarch64
> > > Target machine cpu: armv8-a
> > > <...>
> > > $ file build-arm64-armv8/lib/librte_eal.so.9.1 
> > > build-arm64-armv8/lib/librte_eal.so.9.1: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, not stripped
> > > 
> > 
> > I'm testing on Fedora 29 and this patch works fine with the cross-builds
> > too. Maybe it's something special in Arch Linux again. I'll trying testing
> > it out in an Arch VM - though sadly Arch linux is failing to update for me,
> > so I won't have exactly Thomas' setup.
> 
> I've also run this on Arch with the cross compiler installed and see no
> issues. Thomas, can you look at the log below and see what differs from
> your setup?

I'm sorry for the noise.
It compiles fine after cleaning the build directory :/





More information about the dev mailing list