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" 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 strippedI'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 :/