Re: [PATCH v8 6/6] build: use dependency for pcap and fallback to find_library
From: Bruce Richardson <hidden>
Date: 2019-02-28 17:40:31
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: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? /Bruce meson --werror -Dexamples=all --default-library=shared --cross-file config/arm/arm64_thunderx_linuxapp_gcc /home/bruce/dpdk/devtools/.. build-arm64-thunderx The Meson build system Version: 0.49.2 Source dir: /home/bruce/dpdk Build dir: /home/bruce/dpdk/build-arm64-thunderx Build type: cross build Project name: DPDK Project version: 19.05.0-rc0 Native C compiler: gcc (gcc 8.2.1 "gcc (GCC) 8.2.1 20181127") Cross C compiler: aarch64-linux-gnu-gcc (gcc 8.2.1) Host machine cpu family: aarch64 Host machine cpu: armv8-a Target machine cpu family: aarch64 Target machine cpu: armv8-a Build machine cpu family: x86_64 Build machine cpu: x86_64 Checking for size of "void *" : 8 Library numa found: NO Cross dependency libbsd found: NO (tried pkgconfig and cmake) Compiler for C supports arguments -Wsign-compare: YES Compiler for C supports arguments -Wcast-qual: YES Compiler for C supports arguments -Wno-address-of-packed-member -Waddress-of-packed-member: NO Message: Implementer : Cavium Message: ['-march=armv8-a+crc+crypto', '-mcpu=thunderx'] Fetching value of define "__ARM_NEON" : 1 Fetching value of define "__ARM_FEATURE_CRC32" : 1 Fetching value of define "__ARM_FEATURE_CRYPTO" : 1 Compiler for C supports arguments -Wno-format-truncation -Wformat-truncation: YES Has header "linux/userfaultfd.h" : YES Cross dependency libelf found: NO (tried pkgconfig and cmake) Cross dependency jansson found: NO (tried pkgconfig and cmake) Program gen-pmdinfo-cfile.sh found: YES (/home/bruce/dpdk/buildtools/gen-pmdinfo-cfile.sh) Compiler for C supports arguments -Wno-format-truncation -Wformat-truncation: YES Library libmusdk found: NO Compiler for C supports arguments -Wno-cast-qual -Wcast-qual: YES Compiler for C supports arguments -Wno-pointer-to-int-cast -Wpointer-to-int-cast: YES Cross dependency zlib found: NO (tried pkgconfig and cmake) Compiler for C supports arguments -Wno-uninitialized -Wuninitialized: YES Compiler for C supports arguments -Wno-unused-parameter -Wunused-parameter: YES Compiler for C supports arguments -Wno-unused-variable -Wunused-variable: YES Compiler for C supports arguments -Wno-misleading-indentation -Wmisleading-indentation: YES Compiler for C supports arguments -Wno-implicit-fallthrough -Wimplicit-fallthrough: YES Compiler for C supports arguments -mavx2: NO Compiler for C supports arguments -Wno-unused-parameter -Wunused-parameter: YES Compiler for C supports arguments -Wno-unused-value -Wunused-value: YES Compiler for C supports arguments -Wno-strict-aliasing -Wstrict-aliasing: YES Compiler for C supports arguments -Wno-format-extra-args -Wformat-extra-args: YES Compiler for C supports arguments -Wno-unused-variable -Wunused-variable: YES Compiler for C supports arguments -Wno-missing-field-initializers -Wmissing-field-initializers: YES Compiler for C supports arguments -Wno-sign-compare -Wsign-compare: YES Compiler for C supports arguments -Wno-unused-value -Wunused-value: YES Compiler for C supports arguments -Wno-format -Wformat: YES Compiler for C supports arguments -Wno-error=format-security -Werror=format-security: NO Compiler for C supports arguments -Wno-strict-aliasing -Wstrict-aliasing: YES Compiler for C supports arguments -Wno-unused-but-set-variable -Wunused-but-set-variable: YES Compiler for C supports arguments -Wno-unused-value -Wunused-value: YES Compiler for C supports arguments -Wno-unused-but-set-variable -Wunused-but-set-variable: YES Compiler for C supports arguments -Wno-unused-variable -Wunused-variable: YES Compiler for C supports arguments -Wno-unused-value -Wunused-value: YES Compiler for C supports arguments -Wno-unused-but-set-variable -Wunused-but-set-variable: YES Cross dependency libmnl found: NO (tried pkgconfig and cmake) Cross dependency libmlx4 found: NO (tried pkgconfig and cmake) Cross dependency libibverbs found: NO (tried pkgconfig and cmake) Cross dependency libmnl found: NO (tried pkgconfig and cmake) Cross dependency libmlx5 found: NO (tried pkgconfig and cmake) Cross dependency libibverbs found: NO (tried pkgconfig and cmake) Library libmusdk found: NO Library libmusdk found: NO Found pcap-config None NO Cross dependency pcap found: NO (tried pkgconfig and config-tool) Library pcap found: NO Compiler for C supports arguments -Wno-unused-parameter -Wunused-parameter: YES Compiler for C supports arguments -Wno-sign-compare -Wsign-compare: YES Compiler for C supports arguments -Wno-missing-prototypes -Wmissing-prototypes: YES Compiler for C supports arguments -Wno-cast-qual -Wcast-qual: YES Compiler for C supports arguments -Wno-unused-function -Wunused-function: YES Compiler for C supports arguments -Wno-unused-variable -Wunused-variable: YES Compiler for C supports arguments -Wno-strict-aliasing -Wstrict-aliasing: YES Compiler for C supports arguments -Wno-missing-prototypes -Wmissing-prototypes: YES Compiler for C supports arguments -Wno-unused-value -Wunused-value: YES Compiler for C supports arguments -Wno-format-nonliteral -Wformat-nonliteral: YES Compiler for C supports arguments -Wno-shift-negative-value -Wshift-negative-value: YES Compiler for C supports arguments -Wno-unused-but-set-variable -Wunused-but-set-variable: YES Compiler for C supports arguments -Wno-missing-declarations -Wmissing-declarations: YES Compiler for C supports arguments -Wno-maybe-uninitialized -Wmaybe-uninitialized: YES Compiler for C supports arguments -Wno-strict-prototypes -Wstrict-prototypes: YES Compiler for C supports arguments -Wno-shift-negative-value -Wshift-negative-value: YES Compiler for C supports arguments -Wno-implicit-fallthrough -Wimplicit-fallthrough: YES Compiler for C supports arguments -Wno-format-extra-args -Wformat-extra-args: YES Compiler for C supports arguments -Wno-visibility -Wvisibility: NO Compiler for C supports arguments -Wno-empty-body -Wempty-body: YES Compiler for C supports arguments -Wno-invalid-source-encoding -Winvalid-source-encoding: NO Compiler for C supports arguments -Wno-sometimes-uninitialized -Wsometimes-uninitialized: NO Compiler for C supports arguments -Wno-pointer-bool-conversion -Wpointer-bool-conversion: NO Compiler for C supports arguments -Wno-strict-aliasing -Wstrict-aliasing: YES Compiler for C supports arguments -Wextra: YES Compiler for C supports arguments -Wdisabled-optimization: YES Compiler for C supports arguments -Waggregate-return: YES Compiler for C supports arguments -Wnested-externs: YES Compiler for C supports arguments -Wbad-function-cast: YES Compiler for C supports arguments -Wno-sign-compare -Wsign-compare: YES Compiler for C supports arguments -Wno-unused-parameter -Wunused-parameter: YES Compiler for C supports arguments -Wno-unused-variable -Wunused-variable: YES Compiler for C supports arguments -Wno-empty-body -Wempty-body: YES Compiler for C supports arguments -Wno-unused-but-set-variable -Wunused-but-set-variable: YES Library sze2 found: NO Header <linux/pkt_cls.h> has symbol "TCA_FLOWER_UNSPEC" : YES Header <linux/pkt_cls.h> has symbol "TCA_FLOWER_KEY_VLAN_PRIO" : YES Header <linux/pkt_cls.h> has symbol "TCA_BPF_UNSPEC" : YES Header <linux/pkt_cls.h> has symbol "TCA_BPF_FD" : YES Header <linux/tc_act/tc_bpf.h> has symbol "TCA_ACT_BPF_UNSPEC" : YES Header <linux/tc_act/tc_bpf.h> has symbol "TCA_ACT_BPF_FD" : YES Configuring tap_autoconf.h using configuration Compiler for C supports arguments -fno-prefetch-loop-arrays: YES Compiler for C supports arguments -Wno-maybe-uninitialized -Wmaybe-uninitialized: YES Compiler for C supports arguments -Wall: YES Compiler for C supports arguments -Wextra: YES Compiler for C supports arguments -D_BSD_SOURCE: YES Compiler for C supports arguments -D_DEFAULT_SOURCE: YES Compiler for C supports arguments -D_XOPEN_SOURCE=600: YES Compiler for C supports arguments -Wno-unused-parameter -Wunused-parameter: YES Compiler for C supports arguments -Wno-unused-value -Wunused-value: YES Compiler for C supports arguments -Wno-strict-aliasing -Wstrict-aliasing: YES Compiler for C supports arguments -Wno-format-extra-args -Wformat-extra-args: YES Library IPSec_MB found: NO Library IPSec_MB found: NO Cross dependency libcrypto found: NO (tried pkgconfig and cmake) Library libsso_kasumi found: NO Library libmusdk found: NO Cross dependency libcrypto found: NO (tried pkgconfig and cmake) Cross dependency libcrypto found: NO (tried pkgconfig and cmake) Library libsso_zuc found: NO Cross dependency libisal found: NO (tried pkgconfig and cmake) Cross dependency zlib found: NO (tried pkgconfig and cmake) Compiler for C supports arguments -Wno-sign-compare -Wsign-compare: YES Compiler for C supports arguments -Wno-unused-value -Wunused-value: YES Compiler for C supports arguments -Wno-format -Wformat: YES Compiler for C supports arguments -Wno-error=format-security -Werror=format-security: NO Compiler for C supports arguments -Wno-strict-aliasing -Wstrict-aliasing: YES Compiler for C supports arguments -Wno-unused-but-set-variable -Wunused-but-set-variable: YES Library execinfo found: NO Compiler for C supports arguments -Wno-format-truncation -Wformat-truncation: YES Cross dependency zlib found: NO (tried pkgconfig and cmake) Library execinfo found: NO Program doxygen found: NO Program sphinx-build found: NO Library execinfo found: NO Compiler for C supports arguments -Wno-format-truncation -Wformat-truncation: YES Message: Skipping example "bpf" Message: Skipping example "ethtool" Has header "sys/epoll.h" : YES Library pqos found: NO Message: Skipping example "l2fwd-cat" Library rt found: YES Message: Skipping example "multi_process" Message: Skipping example "netmap_compat" Message: Skipping example "performance-thread" Message: Skipping example "quota_watermark" Message: Skipping example "server_node_efd" Has header "virtio_scsi.h" : NO Message: Skipping example "vhost_scsi" Library virt found: NO Cross dependency jansson found: NO (tried pkgconfig and cmake) Message: Skipping example "vm_power_manager" kernel/linux/meson.build:13: WARNING: Need "kernel_dir" option for kmod compilation when cross-compiling Configuring rte_build_config.h using configuration Program buildtools/symlink-drivers-solibs.sh found: YES (/bin/sh /home/bruce/dpdk/buildtools/symlink-drivers-solibs.sh) Message: ================= Libraries Enabled ================= libs: kvargs, eal, cmdline, ring, mempool, mbuf, net, meter, ethdev, pci, metrics, hash, timer, acl, bbdev, bitratestats, cfgfile, compressdev, cryptodev, distributor, efd, eventdev, gro, gso, ip_frag, jobstats, kni, latencystats, lpm, member, power, pdump, rawdev, reorder, sched, security, vhost, ipsec, port, table, pipeline, flow_classify, bpf, Message: =============== Drivers Enabled =============== common: cpt, dpaax, octeontx, bus: dpaa, fslmc, ifpga, pci, vdev, vmbus, mempool: bucket, dpaa, dpaa2, octeontx, ring, stack, net: af_packet, ark, atlantic, avf, avp, axgbe, bond, bnxt, cxgbe, dpaa, dpaa2, e1000, ena, enetc, enic, failsafe, fm10k, i40e, ice, ifc, ixgbe, kni, liquidio, netvsc, nfp, null, octeontx, qede, ring, softnic, tap, thunderx, vdev_netvsc, vhost, virtio, vmxnet3, crypto: caam_jr, dpaa_sec, dpaa2_sec, null_crypto, octeontx_crypto, crypto_scheduler, virtio_crypto, compress: octeontx_compress, qat, event: dpaa, dpaa2, octeontx, opdl, skeleton, sw, dsw, baseband: bbdev_null, raw: skeleton_rawdev, dpaa2_cmdif, dpaa2_qdma, ifpga_rawdev, Build targets in project: 437 Option default_library is: shared [default: static] Found ninja-1.9.0 at /usr/bin/ninja ninja -C build-arm64-thunderx ninja: Entering directory `build-arm64-thunderx' [1486/1486] Linking target examples/dpdk-load_balancer. [0] bruce@arch-vm:~/dpdk%