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://inbox.dpdk.org/dev/20210605004024.660267a1@sovereign/ > > > > 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://inbox.dpdk.org/dev/20210605004024.660267a1@sovereign/ - 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