[Portland] Project Portland, RuDI and the Generic desktop adapter

Billy Biggs vektor at dumbterm.net
Fri Dec 9 04:18:01 EET 2005


nf2 (nf2 at scheinwelt.at):

> As a Java developer i'm using Eclipse quite a lot and ldd reports that
> it dynamically links 32 libraries, including gtk+, glib etc. And it's
> a quite old Eclipse from March 2004. So where is the problem? This ABI
> debate is still a bit mystic to me...

  In reality, the ABI problem isn't as bad as you might think, and the
solutions are all pretty clear.  GTK+ and glib are fully binary
compatible back to 2.0.x and no distribution breaks this.  We also use
gnome-vfs which has been stable, and Mozilla has never broken us either.
We use dlopen() and dlsym() for any functions which are only available
in newer versions of GTK+ or GNOME-VFS, and use the GTK_VERSION macros
to tell if they are available or not.

  So, where are the "ABI" problems?  I'd love to hear from other ISVs,
but here are the ones I can think of off the top of my head:

  1. Libraries going missing.  We used to trust pkg-config, but
     unfortunately it adds -lfoo for all foo, even if you don't use
     anything from foo.  This caused us to have binaries linked to
     liblinc and libpango-xft which weren't always available, even
     though we never used those.

  2. Building against newer libc versions brings in new symbols.  During
     development we often get burned when someone compiles a library on
     their desktop and accidentally checks it into CVS.   There are no
     good "best practice" documents on what apps should be building
     compatible binaries against.  We have some RH9 machine we use for
     builds and hope that it's OK.

  3. Some libraries, such as libgnome-vfs, don't announce their version
     with version macros.  This makes it more difficult to work around
     bugs or know if features are available.

  4. We're currently dealing with mozilla compiled with libstdc++.so.5
     vs libstdc++.so.6.  It seems to work OK if our library is with gcc3
     and mozilla is with gcc4, but who knows??  Already distros are
     stopping to ship the old libstdc++.so.5 library, or move it into
     some compatibility package that nobody has installed.

  5. Sometimes distros backport fixes, and this breaks our ability to
     use the GTK_VERSION macros to work around issues in any sane way.

  Most of these aren't really ABI problems though.  I think most people
think of the advertised-as-unstable libraries for those.  See much of
the GNOME stack, I guess, and probably freetype.

  -Billy




More information about the Portland mailing list