Re: [PATCH v8 6/6] build: use dependency for pcap and fallback to find_library
From: Bruce Richardson <hidden>
Date: 2019-02-27 13:53:37
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: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" redefinedCan patches 1-5 be merged anyway, leaving 6 for later? /BruceYes 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. /Bruce