Re: 8.02 rpm error

From: Lamar Owen <lowen(at)pari(dot)edu>
To: pg(at)fastcrypt(dot)com
Cc: Volkan YAZICI <volkan(dot)yazici(at)gmail(dot)com>, PostgreSQL Development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: 8.02 rpm error
Date: 2005-05-20 15:04:57
Message-ID: 200505201104.57908.lowen@pari.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Friday 20 May 2005 09:43, Dave Cramer wrote:
> Lamar Owen wrote:
> >On Friday 20 May 2005 07:55, Dave Cramer wrote:
> >>Well, there's not much discussion here. Other than the fact that a few
> >>things depend on libpq.so.3.
> >>Isn't the standard to keep libpq.so.(n-1) whenever you bump the number up
> >> ?

> >Only because libpq versioning has always been an afterthought in the
> > upstream release process.

> OK, so how do we fix this ?

Any time a change is made to libpq that changes its exported symbols or ABI a
version change needs to be made. The person committing the change that
impacts the ABI needs to be the person responsible for changing the version
number; otherwise someone needs to monitor libpq changes coming down
committers and remind people when they need to bump the libpq major or minor
so version. Further, any time a release is being built one of the top things
on the checklist should be 'is libpq's soname appropriate or not?'

Changing past releases is impossible and must be worked around, which is quite
honestly ugly to do. The cleanest thing, yet painful as it is, is to simply
not provide the .3 at all and people will just have to rebuild all their
clients. This gives a clean break; no, we can't fix 8.0.0, but we can fix
from this point forward. People will complain, loudly, when it's broken; but
which is better? Forcing a clean break with one-time pain, or having pain
every single 8.0.x release? This situation should really drive home the
importance of being careful!

Basically it boils down to being more careful when piping out a release.
PostgreSQL is no longer an island where we depend on OS services and few
people depend on us; rather, libpq in particular is becoming a core component
of distributions all around, and thus libpq must be very carefully maintained
as a result; we have to, pardon the pun, watch our p-q's. Too many other
projects are depending upon the soname in libpq to indicate the exported
interface. And, where exported interfaces vary according to compile-time
options, we need to change the soname based on the options (such as SSL
versus non-SSL builds). And we must be consistent in the versioning; people
tend to expect minor version upgrades to not break things, and 8.0.1 broke
things. The discussion on why the version was bumped this time is in the
archives; people are now fighting a battle with that decision. The decision
to bump the version of libpq was the correct one to make; it just should have
been made before 8.0 was released and not after. But all this discussion is
in the archives; I would suggest browsing those threads.

The fftw3 library provides a reasonable model with which to work; there are
multiple compile-time options there that dramatically change the ABI (things
like integer versus single-precision float versus double-precision float),
and the route the fftw3 developers have taken is to make separate names for
each. This way OS linking and dependency resolution isn't broken arbitrarily
because otherwise there is no way of communicating to the linkloader which
ABI we're exporting today.

And I've made enough release piping errors to recognize one.... :-)
--
Lamar Owen
Director of Information Technology
Pisgah Astronomical Research Institute
1 PARI Drive
Rosman, NC 28772
(828)862-5554
www.pari.edu

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Devrim GUNDUZ 2005-05-20 15:11:19 Re: 8.02 rpm error
Previous Message Michael Glaesemann 2005-05-20 14:59:00 Re: Learning curves and such (was Re: pgFoundry)