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.
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]