On Wed, 2020-09-02 at 17:05 +0200, David Marchand wrote: > On Wed, Sep 2, 2020 at 2:39 PM Christian Ehrhardt > <christian.ehrha...@canonical.com> wrote: > > The checks for libfdt try dependency() first which would only work if > > a pkg-config would be present but libfdt has none. > > Then it probes for the lib path itself via cc.find_library. > > > > But later it adds the result of either probe to ext_deps which ends up > > in build and also the resulting pkg-config to contain toolchain versioned > > paths in Libs.private like: > > /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libfdt.so > > which obviously breaks on toolchain updates. > > > > In general libs used multiple times - ipn3ke + ifpga in this case - are > > checked centrally in config/meson.build so move it there and fix the > > adding of dependencies to not use the full file path. > > > > The result is libfdt in pkg-config now showing up as: > > Libs.private: -pthread -lm -ldl -lnuma -lfdt -lpcap > > > > Signed-off-by: Christian Ehrhardt <christian.ehrha...@canonical.com> > > Reviewed-by: Luca Boccassi <bl...@debian.org> > > Reviewed-by: Bruce Richardson <bruce.richard...@intel.com> > > --- > > config/meson.build | 9 +++++++++ > > drivers/net/ipn3ke/meson.build | 6 +----- > > drivers/raw/ifpga/meson.build | 7 +------ > > 3 files changed, 11 insertions(+), 11 deletions(-) > > > > diff --git a/config/meson.build b/config/meson.build > > index cff8b33dd2..1c8317e750 100644 > > --- a/config/meson.build > > +++ b/config/meson.build > > @@ -150,6 +150,15 @@ if numa_dep.found() and cc.has_header('numaif.h') > > dpdk_extra_ldflags += '-lnuma' > > endif > > > > +has_libfdt = 0 > > +fdt_dep = cc.find_library('libfdt', required: false) > > +if fdt_dep.found() and cc.has_header('fdt.h') > > + dpdk_conf.set10('RTE_HAS_LIBFDT', true) > > + has_libfdt = 1 > > + add_project_link_arguments('-lfdt', language: 'c') > > + dpdk_extra_ldflags += '-lfdt' > > +endif > > + > > # check for libbsd > > libbsd = dependency('libbsd', required: false) > > if libbsd.found() > > diff --git a/drivers/net/ipn3ke/meson.build b/drivers/net/ipn3ke/meson.build > > index ec9cb7daf0..83611cfead 100644 > > --- a/drivers/net/ipn3ke/meson.build > > +++ b/drivers/net/ipn3ke/meson.build > > @@ -9,11 +9,7 @@ > > # rte_eth_switch_domain_free() > > # > > > > -dep = dependency('libfdt', required: false) > > -if not dep.found() > > - dep = cc.find_library('libfdt', required: false) > > -endif > > -if not dep.found() > > +if not has_libfdt > > "not" expects a boolean, this can be seen in Travis and OBS builds for > Debian (at least 10 and Next). > > OVS robot travis: > https://travis-ci.com/github/ovsrobot/dpdk/jobs/380310104#L721 > > My OBS: > [ 143s] Compiler for C supports arguments -mavx2: YES (cached) > [ 143s] Message: drivers/net/ice: Defining dependency "pmd_ice" > [ 143s] Message: drivers/net/igc: Defining dependency "pmd_igc" > [ 143s] > [ 143s] ../drivers/net/ipn3ke/meson.build:12:7: ERROR: Argument to > "not" is not a boolean. > [ 143s] dh_auto_configure: error: cd obj-x86_64-linux-gnu && > LC_ALL=C.UTF-8 meson .. --wrap-mode=nodownload --buildtype=plain > --prefix=/usr --sysconfdir=/etc --localstatedir=/var > --libdir=lib/x86_64-linux-gnu --libexecdir=lib/x86_64-linux-gnu > --includedir=include/dpdk -Dper_library_versions=false > -Dinclude_subdir_arch=../x86_64-linux-gnu/dpdk -Dmachine=default > -Dkernel_dir=/lib/modules/5.7.0-3-amd64 -Denable_kmods=true returned > exit code 1 > [ 143s] make[2]: *** [debian/rules:114: override_dh_auto_configure] Error 25 > [ 143s] make[2]: Leaving directory '/usr/src/packages/BUILD' > [ 143s] make[1]: *** [debian/rules:92: build] Error 2 > [ 143s] make[1]: Leaving directory '/usr/src/packages/BUILD' > [ 143s] make: *** [debian/rules:96: binary] Error 2
Yep found the same issue - we should take v1 then -- Kind regards, Luca Boccassi