DPDK patches and discussions
 help / color / mirror / Atom feed
From: Neil Horman <nhorman@tuxdriver.com>
To: Robie Basak <robie.basak@ubuntu.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH] mk: fix the combined library problems by replacing it with a linker script
Date: Tue, 1 Dec 2015 08:30:43 -0500	[thread overview]
Message-ID: <20151201133043.GB26189@hmsreliant.think-freely.org> (raw)
In-Reply-To: <20151201123615.GI28475@mal.justgohome.co.uk>

On Tue, Dec 01, 2015 at 12:36:15PM +0000, Robie Basak wrote:
> On Tue, Dec 01, 2015 at 02:21:02PM +0200, Panu Matilainen wrote:
> > Adding a soname and a semi-arbitrary version does not fix the fundamental
> > problems:
> > 
> > Since the library lumps together everything in DPDK, you'd have to bump its
> > version whenever any of the individual libraries bumps its version to have
> > the version mean anything. DPDK 2.0 and 2.1 are supposedly binary compatible
> > but 2.2 certainly is not, and beyond that who knows.
> > 
> > That in turn forces all apps to be rebuild whenever one of the libraries
> > changes version, whether those apps use that particular library or not.
> 
> If we bundle all the libraries together into one package, then in
> distributions we have to rebuild anyway when any of the libraries
> changes version since a dependent package can't just depend on any later
> version, because we don't know in advance what ABI breaks might occur.
> It's also trivial to do rebuilds in a distribution. I'd prefer to see
> ABI versioning done right to avoid the pain that might occur there.
> Rebuilding dependent packages is on the other hand straightforward.
> 
> > The combined library doesn't have symbol versioning, so besides the better
> > version compatibility tracking it loses other benefits like limited symbol
> > visibility.
> 
> The combined library *should* have symbol versioning, which I've brought
> up before. This isn't a reason to not have a combined library; it is a
> reason to fix the combined library.
> 
Agreed, but using a linker script as the combined library gets you the proper
symbol versioning.

> Why is limited symbol visibility a benefit in this case?
> 
Because it prevents an application from inadvertently using symbols that would
otherwise appear in another library (i.e. if not using the combined library, you
know you've used a symbol in another library because you are then forced to add
that library to the build.

> > Not to mention the extra complexity in makefiles to support it, the
> > increasing amount of duct-tape required to hold it together. And still eg
> > the MLX pmds declare the configuration not supported at all.
> 
> I'd argue that this is because the build system is unnecessarily complex
> currently. A library consumer should just be able to #include
> <dpdk/foo.h> and link with -ldpdk. It should not have a build system or
> custom flags imposed on it by one of the libraries it uses.
> 
I don't disagree here, but again, modeling libdpdk.so as  a linker script gets
you to that point (or 99% of the way there at least).

Neil

> Robie
> 

  reply	other threads:[~2015-12-01 13:31 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-24 14:31 Panu Matilainen
2015-11-24 14:55 ` Neil Horman
2015-11-24 21:28   ` Aaron Conole
2015-11-24 22:46 ` Stephen Hemminger
2015-11-25  8:38   ` Panu Matilainen
2015-11-25 13:00     ` Neil Horman
2015-11-25 16:08     ` Stephen Hemminger
2015-11-26  8:05       ` Panu Matilainen
2015-11-30 15:03       ` Neil Horman
2015-11-30 16:41         ` Stephen Hemminger
2015-12-01 12:21           ` Panu Matilainen
2015-12-01 12:36             ` Robie Basak
2015-12-01 13:30               ` Neil Horman [this message]
2015-12-08 17:03                 ` Robie Basak
2015-12-09 14:16                   ` Neil Horman
2015-12-01 13:20           ` Neil Horman
2015-12-01 12:37 ` Robie Basak
2015-12-02 11:44   ` Neil Horman
2015-12-03  1:31     ` Ferruh Yigit
2015-12-03  8:11       ` Christian Ehrhardt
2015-12-03 14:59       ` Neil Horman
2015-12-04 17:19 ` Thomas Monjalon
2015-12-07  8:27   ` Christian Ehrhardt
2015-12-07 10:33     ` Martinx - ジェームズ
2016-02-23 20:07 ` Thomas Monjalon
2016-02-24  9:37   ` Panu Matilainen
2016-02-23 22:20 ` [dpdk-dev] [PATCH v2] mk: replace the combined library " Thomas Monjalon
2016-03-01 13:40   ` Thomas Monjalon
2016-03-01 14:48     ` Panu Matilainen
2016-03-02 12:30       ` Panu Matilainen
2016-03-02 12:40         ` Thomas Monjalon
2016-03-02 12:44           ` Panu Matilainen

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=20151201133043.GB26189@hmsreliant.think-freely.org \
    --to=nhorman@tuxdriver.com \
    --cc=dev@dpdk.org \
    --cc=robie.basak@ubuntu.com \
    /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).