Thread (88 messages) 88 messages, 4 authors, 2019-03-01

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

From: Thomas Monjalon <hidden>
Date: 2019-03-01 13:13:54

28/02/2019 18:40, Bruce Richardson:
On Wed, Feb 27, 2019 at 01:53:32PM +0000, Bruce Richardson wrote:
quoted
On Wed, Feb 27, 2019 at 12:03:48PM +0000, Luca Boccassi wrote:
quoted
On Wed, 2019-02-27 at 11:56 +0100, Thomas Monjalon wrote:
quoted
27/02/2019 11:50, Luca Boccassi:
quoted
On Wed, 2019-02-27 at 09:47 +0000, Bruce Richardson wrote:
quoted
On Wed, Feb 27, 2019 at 09:33:12AM +0100, Thomas Monjalon wrote:
quoted
26/02/2019 18:49, Luca Boccassi:
quoted
On Tue, 2019-02-26 at 17:46 +0000, luca.boccassi@gmail.com
wrote:
quoted
From: Luca Boccassi <redacted>

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 <redacted>
---
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!
quoted
quoted
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 :/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help