[dpdk-dev] [PATCH v2] build: fix soname info for 19.11 compatiblity

Bruce Richardson bruce.richardson at intel.com
Thu Dec 12 12:59:38 CET 2019


On Thu, Dec 12, 2019 at 11:44:51AM +0000, Bruce Richardson wrote:
> On Thu, Dec 12, 2019 at 08:57:50AM +0000, Ferruh Yigit wrote:
> > On 12/12/2019 8:27 AM, David Marchand wrote:
> > > Hello Bruce,
> > > 
> > > On Wed, Dec 11, 2019 at 4:16 PM Bruce Richardson
> > > <bruce.richardson at intel.com> wrote:
> > >>
> > >> The soname for each stable ABI version should be just the ABI version major
> > >> number without the minor number. Unfortunately both major and minor were
> > >> used causing version 20.1 to be incompatible with 20.0.
> > >>
> > >> This patch fixes the issue by switching from 2-part to 3-part ABI version
> > >> numbers so that we can keep 20.0 as soname and using the final digits to
> > >> identify the 20.x releases which are ABI compatible. This requires changes
> > >> to both make and meson builds to handle the three-digit version and shrink
> > >> it to 2-digit for soname.
> > >>
> > >> Fixes: cba806e07d6f ("build: change ABI versioning to global")
> > >>
> > >> Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
> > >> Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
> > > 
> > > There is an issue with the ethtool example.
> > > 
> > >   INSTALL-APP server
> > >   INSTALL-MAP server.map
> > > cat: /home/dmarchan/dpdk/examples/ethtool/lib/ABI_VERSION: No such
> > > file or directory
> > >   CC rte_ethtool.o
> > >   LD librte_ethtool.so.0.
> > >   INSTALL-LIB librte_ethtool.so.0.
> > > gmake[3]: stat:
> > > /home/dmarchan/builds/i686-native-linux-gcc+shared+debug+default/examples/ethtool/lib/i686-native-linux-gcc/lib/librte_ethtool.so.0.:
> > > Too many levels of symbolic links
> > > == ethtool-app
> > > 
> > > 
> > 
> > It is linking against itself, in 'examples/ethtool/lib/build/lib':
> > librte_ethtool.so -> librte_ethtool.so.0.
> > librte_ethtool.so.0. -> librte_ethtool.so.0.
> 
> Yes. The issue is that this patch doesn't correct account for external libs
> using their own version numbers. The trivial fix for this, which I'll add
> in v3 is to make two small changes:
> 
> 1. Use ?= rather than := when assigning to LIBABIVER in rte.lib.mk
> 2. Change the LIBABIVER in ethtool/lib to "1.0" rather than "1", since the
> code assumes that we have more than a single digit in our version numbers.
> 
> Question: Do we need to officially support external libs using our build
> system?
> 
> * If no (because we assume nobody uses it or otherwise), then we use the two
> one-line fixes above and job done.
> * If yes, then the makefile logic needs further work to support the case of
> having an arbitrary version number. Also, we need to look into the whole
> experimental detection logic, as that would probably not apply for external
> libs.
> 
> /Bruce
> 
Patch v3 now sent, on the assumption that the answer is "no", or the answer
is "yes, but we can fix that later" :-)


More information about the dev mailing list