[dpdk-dev] [PATCH v6 2/5] build: use dependency() instead of find_library()

Luca Boccassi bluca at debian.org
Wed Feb 13 12:48:26 CET 2019


On Wed, 2019-02-13 at 10:49 +0000, Luca Boccassi wrote:
> On Tue, 2019-02-12 at 17:21 +0100, Thomas Monjalon wrote:
> > 12/02/2019 16:03, Bruce Richardson:
> > > On Tue, Feb 12, 2019 at 03:47:56PM +0100, Thomas Monjalon wrote:
> > > > 12/02/2019 12:43, Bruce Richardson:
> > > > > On Tue, Feb 12, 2019 at 12:36:17PM +0100, Thomas Monjalon
> > > > > wrote:
> > > > > > 12/02/2019 12:31, Bruce Richardson:
> > > > > > > On Tue, Feb 12, 2019 at 12:15:43PM +0100, Thomas Monjalon
> > > > > > > wrote:
> > > > > > > > 06/02/2019 18:08, Luca Boccassi:
> > > > > > > > > Whenever possible (if the library ships a pkg-config
> > > > > > > > > file) use meson's
> > > > > > > > > dependency() function to look for it, as it will
> > > > > > > > > automatically add it
> > > > > > > > > to the Requires.private list if needed, to allow for
> > > > > > > > > static builds to
> > > > > > > > > succeed for reverse dependencies of DPDK. Otherwise
> > > > > > > > > the
> > > > > > > > > recursive
> > > > > > > > > dependencies are not parsed, and users doing static
> > > > > > > > > builds have to
> > > > > > > > > resolve them manually by themselves.
> > > > > > > > > When using this API avoid additional checks that are
> > > > > > > > > superfluous and
> > > > > > > > > take extra time, and avoid adding the linker flag
> > > > > > > > > manually which causes
> > > > > > > > > it to be duplicated.
> > > > > > > > > 
> > > > > > > > > Signed-off-by: Luca Boccassi <bluca at debian.org>
> > > > > > > > > Acked-by: Bruce Richardson <bruce.richardson at intel.co
> > > > > > > > > m>
> > > > > > > > 
> > > > > > > > This patch breaks compilation on my machine with a lot
> > > > > > > > of
> > > > > > > > strange errors:
> > > > > > > > 
> > > > > > > > from drivers/net/pcap/rte_eth_pcap.c
> > > > > > > > 
> > > > > > > > /usr/include/stdint.h:109: error: "__INT64_C" redefined
> > > > > > > > /usr/include/bits/stdlib-bsearch.h:32:13: error: cast
> > > > > > > > discards 'const' qualifier from pointer target type
> > > > > > > > /usr/include/pthread.h:682:6: error: 'regparm'
> > > > > > > > attribute
> > > > > > > > directive ignored
> > > > > > > > etc
> > > > > > > > 
> > > > > > > 
> > > > > > > Is this on Arch linux again? I just reverified these
> > > > > > > first
> > > > > > > two patches and
> > > > > > > they work fine for me on Fedora (I assume Luca probably
> > > > > > > tested them already on
> > > > > > > Debian) 
> > > > > > > 
> > > > > > > Anything unusual about your setup?
> > > > > > 
> > > > > > Nothing unusual. Just using the best environment ever ;)
> > > > > > I will try to debug it.
> > > > > > 
> > > > > 
> > > > > It may be something pcap-specific, since pcap has to have
> > > > > it's
> > > > > own special
> > > > > query mechanims outside the normal pkg-config one. If you
> > > > > remove the
> > > > > pcap-driver changes, does the rest of the patch work for you?
> > > > 
> > > > Yes, the issue happens only with pcap on Arm.
> > > > Reverting the pcap related changes, it builds fine.
> > > > 
> > > > More infos about my setup:
> > > > 	meson-0.49.1
> > > > 	aarch64-linux-gnu-gcc-8.2.0
> > > > 	libpcap-1.9.0 (32 and 64-bit) for x86
> > > > 
> > > > I think there is a mix between libcap for x86 and Arm
> > > > compilation.
> > > > Probably a meson bug?
> > > > 
> > > 
> > > Could well be a meson issue. It may be using the local pcap-
> > > config
> > > rather
> > > than the cross-compilation version [assuming cross-compilation
> > > here, though
> > > I don't see the issue with my setup].
> > > 
> > > Thomas, can you apply this set with the pcap driver change
> > > dropped,
> > > or is it better if Luca does a new version of this set?
> > 
> > I think we need a comment about the pcap miss.
> > Probably better to do a new version.
> > 
> > Luca, please could you test cross-compilation?
> 
> Hi,
> 
> I would, except downloading the toolchain from Linaro fails with 403
> forbidden...
> 
> https://releases.linaro.org/components/toolchain/binaries/latest/aarc
> h64-linux-gnu/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-
> gnu.tar.xz
> 
> I'll try with Debian's cross compiler

I think the issue is that I'm going in circles:

https://git.dpdk.org/dpdk/commit/?id=d1e4a5b7320905f025e7caea685708b5eea37456
https://git.dpdk.org/dpdk/commit/?id=6930c0403a1754eb5cab89577565eefa5a9995a1

As Bruce said, the root cause is libpcap's lack of a pkg-config file
and usage of a custom tool, which is a known bane for cross compilers.
The good news is that 1.9.0 finally added a pkg-config file in
addition:

https://github.com/the-tcpdump-group/libpcap/commit/a7deb6a241f8c71ca261adc45ac07c8427074792

Given cross-compilation doesn't work at all for me, I'll do a v7 without that snippet.

-- 
Kind regards,
Luca Boccassi


More information about the dev mailing list