DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: Thomas Monjalon <thomas@monjalon.net>
Cc: Karl Bonde Torp <karlowich@gmail.com>, dev@dpdk.org
Subject: Re: [PATCH] build: fix build on FreeBSD with Meson 0.61.1
Date: Mon, 7 Mar 2022 16:52:09 +0000	[thread overview]
Message-ID: <YiY4Ofw97X7iEYuK@bricha3-MOBL.ger.corp.intel.com> (raw)
In-Reply-To: <3845302.yIU609i1g2@thomas>

On Mon, Mar 07, 2022 at 05:43:51PM +0100, Thomas Monjalon wrote:
> 15/02/2022 16:34, Bruce Richardson:
> > On Tue, Feb 15, 2022 at 02:50:48PM +0100, Karl Bonde Torp wrote:
> > > On Tue, 15 Feb 2022 at 12:27, Bruce Richardson
> > > <bruce.richardson@intel.com> wrote:
> > > >
> > > > On Tue, Feb 15, 2022 at 12:07:55PM +0100, Karl Bonde Torp wrote:
> > > > > On Mon, 14 Feb 2022 at 14:48, Bruce Richardson
> > > > > <bruce.richardson@intel.com> wrote:
> > > > > >
> > > > > > On Mon, Feb 14, 2022 at 12:43:13PM +0100, Karl Bonde Torp wrote:
> > > > > > > When building with Meson 0.61.1 on FreeBSD some archives become
> > > > > > > corrupted. This can be avoided by using 'llvm-ar' instead of 'ar'.
> > > > > > >
> > > > > > > Signed-off-by: Karl Bonde Torp <k.torp@samsung.com>
> > > > > > > ---
> > > > > >
> > > > > > Can you perhaps provide some instructions or more details as to
> > > > > > how/when you see this issue?
> > > > >
> > > > > Some background info:
> > > > > I'm working on xNVMe and that depends on SPDK which in turn depends
> > > > > on DPDK. These are includes as subprojects on github which is why the
> > > > > FreeBSD port of DPDK is not an option for me.
> > > > >
> > > > > The steps I took to reproduce the issue are listed below, this assumes
> > > > > a clean img of FreeBSD 13:
> > > > > (I know some of them may be obvious, but I tried to avoid ambiguity)
> > > > >
> > > > > * install git and the pkg manager:
> > > > > pkg install git
> > > > > * get kernel source:
> > > > > git clone https://git.freebsd.org/src.git /usr/src
> > > > > * get ports:
> > > > > git clone https://git.freebsd.org/ports.git /usr/ports
> > > > > * install dependencies (except meson) with pkg:
> > > > > pkg install py38-pyelftools ninja pkgconf binutils
> > > > > * build meson 0.61.1 from port:
> > > > > cd /usr/ports/devel/meson/ && make install clean
> > > > > * clone dpdk repo:
> > > > > git clone https://github.com/DPDK/dpdk.git
> > > > > * inside dpdk folder run:
> > > > > meson builddir && meson compile -C builddir
> > > > > * encounter error:
> > > > > [466/1915] Generating drivers/rte_common_cpt.pmd.c with a custom
> > > > > command
> > > > > FAILED: drivers/rte_common_cpt.pmd.c
> > > > > /usr/local/bin/python3.8 ../buildtools/gen-pmdinfo-cfile.py
> > > > > /root/dpdk/builddir/buildtools ar
> > > > > /root/dpdk/builddir/drivers/libtmp_rte_common_cpt.a
> > > > > drivers/rte_common_cpt.pmd.c /usr/local/bin/python3.8
> > > > > ../buildtools/pmdinfogen.py elf
> > > > > ar: fatal: Unrecognized archive format: Inappropriate file type or
> > > > > format
> > > > > Traceback (most recent call last):
> > > > >   File "../buildtools/gen-pmdinfo-cfile.py", line 13, in <module>
> > > > >     for name in subprocess.run([ar, "t", archive],
> > > > >     stdout=subprocess.PIPE,
> > > > >   File "/usr/local/lib/python3.8/subprocess.py", line 516, in run
> > > > >     raise CalledProcessError(retcode, process.args,
> > > > > subprocess.CalledProcessError: Command '['ar', 't',
> > > > > '/root/dpdk/builddir/drivers/libtmp_rte_common_cpt.a']' returned
> > > > > non-zero exit status 70.
> > > > >
> > > > > > A clean build of mine on FreeBSD with meson 0.61.1 didn't seem to
> > > > > > flag up any problems and I'd like to reproduce the issue to verify the fix.
> > > > > I'm guessing you're refering to the port of DPDK here.
> > > > > If not I am very interested to hear how you go about this.
> > > > >
> > > >
> > > > I tested with latest DPDK on a FreeBSD machine also, not using the BSD
> > > > ports version. Unfortunately it wasn't a clean install, but still a fairly
> > > > new one. I updated the BSD pkg config to use "latest" rather than
> > > > "quarterly" snapshot and then ran an "pkg upgrade". This gave me meson
> > > > 0.61.1, and updated other packages too. Build of DPDK then ran cleanly.
> > > >
> > > > I wonder if the version of binutils or some other package might be the
> > > > difference. The version I have is "GNU ar (GNU Binutils) 2.37". What
> > > > version of binutils is installed on your system?
> > > My version of binutils is 2.37_2,1, so that is the same.
> > > However, I think you're onto something here. When I run "ar --version" I
> > > get "BSD ar 1.1.0 - libarchive 3.5.1".
> > > The problem my patch aimed to solve was 'BSD ar' behaving differently
> > > than 'GNU ar'. So if you somehow got the 'ar' command to invoke 'GNU
> > > ar' on your system, maybe I just need to do the same.
> > 
> > Good point, I had missed that. BSD ar is in /usr/bin and GNU ar is
> > installed by binutils in /usr/local/bin/ar.
> 
> I'm confused.
> Should we apply this patch as is?
> 
A better version would select llvm-ar or binutils ar based off the
compiler on FreeBSD, but I think this patch is ok to apply as-is, as
llvm-ar should be able to work fine with the files created by binutils ar
even if gcc is the compiler.

Really, the main gap in all this is that meson does not provide a function
to return the static linker in use (though it has one for the dynamic
linker).

/Bruce

  reply	other threads:[~2022-03-07 16:54 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-14 11:43 Karl Bonde Torp
2022-02-14 13:48 ` Bruce Richardson
2022-02-15 11:07   ` Karl Bonde Torp
2022-02-15 11:27     ` Bruce Richardson
2022-02-15 13:50       ` Karl Bonde Torp
2022-02-15 15:34         ` Bruce Richardson
2022-03-07 16:43           ` Thomas Monjalon
2022-03-07 16:52             ` Bruce Richardson [this message]
2022-02-15 15:31 ` Bruce Richardson
2022-03-08 14:39   ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YiY4Ofw97X7iEYuK@bricha3-MOBL.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=karlowich@gmail.com \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).