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.richard...@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.richard...@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.t...@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?



Reply via email to