[rrd-developers] librrd4 dependancies

Sebastian Harl sh at tokkee.org
Tue Jun 30 10:02:51 CEST 2009


Hi Tobi,

On Mon, Jun 29, 2009 at 01:58:08PM +0200, Tobias Oetiker wrote:
> Today Sebastian Harl wrote:
> > Imho, the best thing to do would be to separate graphing into it's own
> > library, say librrd-graph. Just doing so should require adapting the
> > build system only. However, this introduced backward-incompatible
> > changes to the API and ABI of librrd, so it would require a major soname
> > version bump, so Tobi has to decide about that. I do not expect that
> > lots of C programs use rrd_graph*(), so only few other projects should
> > be affected by that change and require code (and build system) changes
> > [1].
> 
> how about having the following structure
> 
> librrd - including the graph stuff and puling in the rest from
> librrd-base
> 
> this means that people who want only the base stuff can link
> against librrd-base ... and it would not break existing usage as
> linking against librrd would pul in librrd-base automatically.

I was thinking about that as well but I see a couple of problems and
(rather minor) disadvantages when using that approach:

 * People using the static library would still need to change their
   build system because static libs do not have a NEEDED entry [1], i.e.
   they cannot specify any dependencies. I'm unsure if that change thus
   should still be considered to be an ABI breakage.

 * I'm also unsure if that's going to work on all platforms even in the
   case of shared objects. If I recall correctly (and I'm quite
   uncertain if I do), some operating systems / dynamic loaders do not
   support recursive loading of shared objects [2] and instead require
   the application to link against all dependencies of some library as
   well. Anybody on this list who has a more in-depth insight into this?

 * By using my approach, applications not using rrd_graph*() (which, I
   suppose, is the more common case) would automatically drop their
   dependency on cairo and pango without requiring any manual changes
   (in Debian those packages would simply be rebuilt).

 * Imho, graphing has nothing to do with round robin databases by
   itself. Even though it's probably one of the main reasons for people
   using RRDtool, I'd call it an "add-on". So separating that into some
   librrd-graph would imho be the "semantical" better choice. This is
   mostly a matter of personal preference though.

Comments?

Cheers,
Sebastian

[1] In case of ELF binaries. I don't know how that field is called in
    other binary formats or whether it exists at all in all binary
    formats.

[2] Which, e.g., would be the case if there's nothing like NEEDED.

-- 
Sebastian "tokkee" Harl +++ GnuPG-ID: 0x8501C7FC +++ http://tokkee.org/

Those who would give up Essential Liberty to purchase a little Temporary
Safety, deserve neither Liberty nor Safety.         -- Benjamin Franklin

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
Url : http://lists.oetiker.ch/pipermail/rrd-developers/attachments/20090630/e5404bc3/attachment.bin 


More information about the rrd-developers mailing list