[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Packaging xmlrpc-c



On Fri, Jun 29, 2001 at 01:27:21PM +0200, Robert Bihlmeyer wrote:
> Would you think it a good strategy for an xmlrpc-c application to link
> statically with its own version of your library, because there are
> set-ups out there which have a too old, too new, too screwed
> installation of xmlrpc-c?

Ah!  But I've been extremely careful with my ABIs, so there *aren't* any
broken versions (yet). ;-)

If I remove my library's internal, private copy of expat, I will actually
be *creating* the first known "broken" version of xmlrpc-c on any known
Linux distribution (where "broken" is defined as having the same soname but
a different ABI).

> I'd rather have users yell at the distros that ship a broken expat than
> having Debian users pay the price for that.

Expat 1.x was never packaged as a shared library by its upstream
maintainer.  Therefore, any version I might find has a soname assigned by a
downstream maintainer on some distro.  Since there's no standard,
everybody's right.  And everybody's wrong. :-( There's nobody for the users
to appeal to in this matter.

Basically, expat 1.x was designed to be used exactly as I'm using it--as an
internal library.  I actually disagree with this decision, but my life is
much easier if I respect it.

> No argument here. I assume that this requirement will be dropped/modified
> somewhen in the future, once you consider 1.95 (or 2.0, or whatever)
> suitable.

Possibly.  I know, from personal experience, that James Clark typically
produces highly correct code, and expat 1.x has been used in uncountable
projects.  A future decision to upgrade to expat 2.0 would need to involve
a thorough audit of the new code base, since it's maintained by a new
author, and used less extensively throughout industry.

I will make this decision when--and if--I'm comfortable with it.

> On a releated note, the security process also becomes more sluggish
> and dependent on more people. Now two persons (James and you) must fix
> their copies of expat to remove a vulnerability.

Yes.  This is unfortunate.  But at least expat 1.x is extremely stable
software, and the expected number of security updates is very small.
 
> >   A) Make xmlrpc-c use the Debian version of expat.  This would violate
> >      constraints (1), (2) and (3).
> 
> Nope. IIRC the older expat is in Debian in the package libxmltok1.
> Relying on that would satisfy (3) and (1). Probably not (2) because
> one can always find a platform where a library is not installed.

No, it still breaks constraint (1)--preserving the ABI/soname relationship
across multiple distros.  Since the upstream version of expat 1.x has no
sonames, I simply cannot rely on every distribution chosing a consistent
soname for it.  Hence, if I want any degree of portability, I must create
my own sonames for expat 1.x and make them part of xmlrpc-c's ABI.

(Theoretically, it might be possible to create new sonames without
duplicating the actual library code, but I have no reason to believe that
ldconfig is willing to jump through such hoops on my behalf.)

> > All things considered, my preference (as the upstream maintainer) leans
> > strongly toward (C).
> 
> That's a good measure, although I'd obviously prefer (A).

If (A) were at all feasible, I'd prefer it, too.  But James Clark never
packaged expat 1.x as a shared library, so the downstream inconsistencies
in various distros are a bit overwhelming from my perspective.

Once the new version of expat stabilizes, this problem may go away--*if*
the new maintainer scrupulously follows the rules for updating sonames.[1]
And if there's actually a consistent ABI for expat 2.x, then I can rely
upon it to produce a consistent ABI for xmlrpc-c.

It's simply that--in my opinion as the upstream author of xmlrpc-c--this
day has not yet arrived.

Cheers,
Eric

[1] For those of you following this discussion, you can find a good summary
of these rules under the info topic (libtool)Versioning.  Libraries which
fail to obey these rules cause really ugly problems, like RedHat's libjpeg
fiasco a few years ago.



Reply to: