[Poppler-bugs] [Bug 7054] Fix #4481 for broke ABI

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu May 31 07:09:45 PDT 2007


http://bugs.freedesktop.org/show_bug.cgi?id=7054





------- Comment #8 from ranger at befunk.com  2007-05-31 07:09 PST -------
(In reply to comment #7)

> What compatibility will be broken?  You don't expect copying binaries between
> OSX and Linux systems, do you?  OSX binaries will be built in the old fashion,
> and other systems with modern linkers will save themselves from the SONAME
> changes hell.

I'm talking about upgrade compatibility on the same system.

If I compile my project against /usr/local/lib/libpoppler.1.dylib (or whatever
the current soname is) and you change ABIs without upping the soname version,
then my app will no longer run when libpoppler gets updated.  Even if it's an
indirect dependency from poppler-glib, because my app will have
"/usr/local/lib/libpoppler.1.dylib" in it's dependencies which are hardcoded
into the application's binaries (Mach-O preserves the semi-equivalent of RPATH
always).

> Libtool is yet another issue, but because it's not flexible enough to avoid the
> superfluous link flags on arches which can spare them, Debian already stopped
> installing *.la files in many packages, strips dependency_libs out of the one

Right, but on OSX these superfluous links are not superfluous, the linker fails
without them.  That's why libtool encodes all that stuff, because libtool is
supposed to hide platform-specific things -- and on the Mac OS X platform, they
have to be there.

> At all rates, I think avoiding the link flag with libpoppler when people are
> using some high-level bindings is a good thing; especially if it permits having
> correct SONAME changes in libpoppler which truly breaks ABI frequently.

As long as you intend to only support ELF platforms (or whatever platforms
allow indirect linking), this will work.  If you want to support other
platforms, it will cause binary incompatibility.

As another person suggested, using -release works as well, although it's ugly. 
It means that every release of poppler would have to be packaged with it's own
runtime shared-library package that can never be removed until all things that
depend on it are removed, but at least it preserves compatibility across
upgrades.


-- 
Configure bugmail: http://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


More information about the Poppler-bugs mailing list