> -----Original Message----- > From: Srikanth Yalavarthi <syalavar...@marvell.com> > Sent: 23 October 2023 19:32 > To: Bruce Richardson <bruce.richard...@intel.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; Srikanth Yalavarthi > <syalavar...@marvell.com>; Srikanth Yalavarthi <syalavar...@marvell.com> > Subject: RE: [EXT] Re: [PATCH 1/1] build: update link args and includes for > libarchive > > > -----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.
Will resubmit the patch with adding libarchive to ext_deps.