> -----Original Message----- > From: Bruce Richardson <bruce.richard...@intel.com> > Sent: 23 October 2023 18:36 > To: Srikanth Yalavarthi <syalavar...@marvell.com> > Cc: dmitry.kozl...@gmail.com; Aaron Conole <acon...@redhat.com>; Igor > Russkikh <irussk...@marvell.com>; David Marchand > <david.march...@redhat.com>; dev@dpdk.org; Shivah Shankar Shankar > Narayan Rao <sshankarn...@marvell.com>; Jerin Jacob Kollanukkaran > <jer...@marvell.com>; sta...@dpdk.org > Subject: Re: [EXT] Re: [PATCH 1/1] build: update link args and includes for > libarchive > > On Mon, Oct 23, 2023 at 02:00:33PM +0100, Bruce Richardson wrote: > > On Mon, Oct 23, 2023 at 12:46:59PM +0000, Srikanth Yalavarthi wrote: > > > > -----Original Message----- > > > > From: Bruce Richardson <bruce.richard...@intel.com> > > > > Sent: 23 October 2023 17:24 > > > > To: Srikanth Yalavarthi <syalavar...@marvell.com> > > > > Cc: Aaron Conole <acon...@redhat.com>; Igor Russkikh > > > > <irussk...@marvell.com>; David Marchand > > > > <david.march...@redhat.com>; dev@dpdk.org; Shivah Shankar > Shankar > > > > Narayan Rao <sshankarn...@marvell.com>; Jerin Jacob Kollanukkaran > > > > <jer...@marvell.com>; sta...@dpdk.org > > > > Subject: Re: [EXT] Re: [PATCH 1/1] build: update link args and > > > > includes for libarchive > > > > > > > > On Mon, Oct 23, 2023 at 11:40:14AM +0000, Srikanth Yalavarthi wrote: > > > > > > -----Original Message----- > > > > > > From: Bruce Richardson <bruce.richard...@intel.com> > > > > > > Sent: 23 October 2023 14:56 > > > > > > To: Srikanth Yalavarthi <syalavar...@marvell.com> > > > > > > Cc: Aaron Conole <acon...@redhat.com>; Igor Russkikh > > > > > > <irussk...@marvell.com>; David Marchand > > > > <david.march...@redhat.com>; > > > > > > dev@dpdk.org; Shivah Shankar Shankar Narayan Rao > > > > > > <sshankarn...@marvell.com>; Jerin Jacob Kollanukkaran > > > > > > <jer...@marvell.com>; sta...@dpdk.org > > > > > > Subject: [EXT] Re: [PATCH 1/1] build: update link args and > > > > > > includes for libarchive > > > > > > > > > > > > External Email > > > > > > > > > > > > -------------------------------------------------------------- > > > > > > ------ > > > > > > -- On Fri, Oct 20, 2023 at 10:01:35AM -0700, Srikanth > > > > > > Yalavarthi > > > > > > wrote: > > > > > > > In order to avoid linking with all libraries listed as > > > > > > > Libs.private in libarchive.pc, libarchive is not added to > > > > > > > ext_deps during > > > > meson setup. > > > > > > > > > > > > > > Since libarchive is not added to ext_deps, cross-compilation > > > > > > > or native compilation with libarchive installed in > > > > > > > non-standard location fails with errors related to "cannot find - > larchive" > > > > > > > or "archive.h: No such file or directory". In order to fix > > > > > > > the build failures, user is required to define the 'c_args' and > 'c_link_args' > > > > > > > with '-I<includedir>' and '-L<libdir>'. > > > > > > > > > > > > > > This patch updates meson build files to add libarchive's > > > > > > > includedir and libdir to compiler flags and would not > > > > > > > require setting c_args and c_link_args externally. > > > > > > > > > > > > > > Fixes: 40edb9c0d36b ("eal: handle compressed firmware") > > > > > > > Cc: sta...@dpdk.org > > > > > > > > > > > > > > Signed-off-by: Srikanth Yalavarthi <syalavar...@marvell.com> > > > > > > > --- > > > > > > > > > > > > Checking back through the mail archives I'm still a little > > > > > > unclear as to what breaks when we try using libarchive as any > > > > > > other package with a pkg-config file? I would have thought the > > > > > > best solution was just to add libarchive as an external > > > > > > dependency, found using pkg-config, to EAL. When we add it as > > > > > > a dependency, rather than using c/ldflags, we should get all this > path fixup for free? > > > > > > Can you clarify what breaks when we add libarchive as a libeal > > > > > > dependency only? > > > > > > > > > > Below is my observation. > > > > > > > > > > In current implementation, we are looking for libarchive's > > > > > availability > > > > through pkg-config. > > > > > When found, we are setting RTE_HAS_LIBARCHIVE=1 and adding '- > larchive' > > > > to ldflags. > > > > > > > > > > Since, we are not adding libarchive to ext_deps (to avoid > > > > > linking with deps.private), the > > > > > > > > This is the bit I'm a bit stuck on. What is the issues with adding > > > > libarchive to ext_deps? For other libs, when doing static builds > > > > we have to link with deps.private and it's the correct behaviour > > > > AFAIK. Not doing so would surely lead to problematic builds, no? > > > > > > I agree on adding to ext_deps as it's the correct behaviour. > > > > > > However, there was a discussion in mail archives regarding this. > > > https://urldefense.proofpoint.com/v2/url?u=https- > 3A__inbox.dpdk.org_ > > > dev_20210605004024.660267a1- > 40sovereign_&d=DwIBAg&c=nKjWec2b6R0mOyPa > > > z7xtfQ&r=SNPqUkGl0n_Ms1iJa_6wD6LBwX8efL_NOyXvAX- > iCMI&m=HAX8pzasBDOgY > > > 4zxEIMFHaTzH02VdRpw5xfHxjYz1CorbIA3_Gw9SPMpIPssi23l&s=wKtxZ- > fddu7b0b > > > ADmwT_nOeJ_UjbuFNea3pcTuPKAGQ&e= > > > > > > Adding Dmitry Kozlyuk for comments. > > > > > Testing it out myself, the sample applications don't build statically > > due to missing dependencies. The libarchive-dev package on Ubuntu, > > doesn't seem to install all dependent packages for static builds. > > I had to manually install liblz4-dev and libacl1-dev packages, and > > then test-meson-builds ran successfully. > > > > Personally, it looks to me like a packaging issue, in that I would > > expect the -dev package to install all required dependent dev > > packages. I also think using the pkgconfig as a regular dependency is > > the way we should look to go, and if necessary, document the list of > > extra dependencies needed for libarchive in our docs. > > > For reference, here is the diff I tested with on Ubuntu 23.04: > > diff --git a/config/meson.build b/config/meson.build index > d56b0f9bce..4ff101767e 100644 > --- a/config/meson.build > +++ b/config/meson.build > @@ -236,11 +236,6 @@ dpdk_conf.set('RTE_BACKTRACE', > cc.has_header('execinfo.h') or is_windows) libarchive = > dependency('libarchive', required: false, method: 'pkg-config') if > libarchive.found() > dpdk_conf.set('RTE_HAS_LIBARCHIVE', 1) > - # Push libarchive link dependency at the project level to support > - # statically linking dpdk apps. Details at: > - # https://urldefense.proofpoint.com/v2/url?u=https- > 3A__inbox.dpdk.org_dev_20210605004024.660267a1- > 40sovereign_&d=DwIBAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=SNPqUkGl0n_M > s1iJa_6wD6LBwX8efL_NOyXvAX- > iCMI&m=HAX8pzasBDOgY4zxEIMFHaTzH02VdRpw5xfHxjYz1CorbIA3_Gw9SP > MpIPssi23l&s=wKtxZ-fddu7b0bADmwT_nOeJ_UjbuFNea3pcTuPKAGQ&e= > - add_project_link_arguments('-larchive', language: 'c') > - dpdk_extra_ldflags += '-larchive' > endif > > # check for libbsd > diff --git a/lib/eal/meson.build b/lib/eal/meson.build index > 9942104386..e1d6c4cf17 100644 > --- a/lib/eal/meson.build > +++ b/lib/eal/meson.build > @@ -21,6 +21,9 @@ endif > if dpdk_conf.has('RTE_USE_LIBBSD') > ext_deps += libbsd > endif > +if dpdk_conf.has('RTE_HAS_LIBARCHIVE') > + ext_deps += libarchive > +endif > if cc.has_function('getentropy', prefix : '#include <unistd.h>') > cflags += '-DRTE_LIBEAL_USE_GETENTROPY' > endif
I have tried this approach earlier and it work as expected. But, based on the discussion in mail archives, I have pushed an alternate one.