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

Re: New control field proposal which could help on gcc3.2 transition



On Wed, Sep 11, 2002 at 11:21:56PM -0600, Jason Gunthorpe wrote:
> On Thu, 12 Sep 2002, Manuel Estrada Sainz wrote:
> > Debian packages have been repeatedly bitten by the fact that a package
> > breaks its ABI as it evolves, which means that dependencies like:
> > 'foo (>= X.X-X)' ends up not been quite enough; Something like 'foo (>= X.X-X),
> > foo (<< Y.Y-Y)' would be more efective, but Y.Y-Y is usualy unknown when
> > writing those dependencies.
> Technically, all of our transitions should have this property for a smooth
> upgrade path and maximum inter-distribution compatibility - but in
> practice it probably isn't too important for some packages..

Well, that doesn't really work for things like apt and apache, where you
break backwards compatability and can't just keep the old version around.
I don't think anyone came up with a way of doing it for the C++ stuff,
either.

> The problem with that is that our libraries will have the same soname but
> a different ABI than libraries from other distributions. 

That's a separate issue, I think. This seems more a way of letting you
get the effect of a versioned package name (or a versioned provides)
without actually having either. Which means you can setup your shlibdeps
in the usual way, and, if it turns out you can't maintain backwards
compatability and you can't reasonable rename the package either, you can
add an "Ooops-I-Broke-The-ABI-At: 1.2.3-1" field instead, and have apt and
dpkg ensure that at least the .debs on your system don't end up broken.

Heck, you might even be doing this because the old ABI was the one that
was incompatible with other distros and third party apps and such.

> Now, that said, your idea for a solution does have good properties for
> low-use packages. But the same effect can be acheived with versioned
> provides, and some upfront thought..

Not necessarily as pleasantly though. To duplicate:

	foo 1.2.3-1, shlibdeps >= 1.2.3-1
	foo 1.2.4-1, shlibdeps >= 1.2.4-1
	foo 1.2.5-1, shlibdeps >= 1.2.5-1, ABI-Broken-As-Of: 1.2.5-1

you need to do:

	foo 1.2.3-1, Provides: foo-1.2.3-1, shlibdeps foo-1.2.3-1
	foo 1.2.4-1, Provides: foo-1.2.3-1, foo-1.2.4-1, shlibdeps foo-1.2.4-1
	foo 1.2.5-1, Provides: foo-1.2.5-1, shlibdeps foo-1.2.5-1

which would become a nuisance reasonably quickly.  And there are good odds
that most people will expect they're not going to break ABI compatability
ever anyway, whether that ends up being the case or not.

Although the other option would just be to kick the people doing things
like that and make 'em stop. apache-common could just as easily be
"apache-common-1.3.26 1.3.26-1", with a Provides/Conflicts: apache-common.

(As far as libsdl and the C++ stuff is concerned though, I don't think
it's worth worrying about. After all, what's in a name? A package by
any other name would be just as buggy...)

Cheers,
a "deb is a deb is a deb is a deb" j

-- 
Anthony Towns <aj@humbug.org.au> <http://azure.humbug.org.au/~aj/>
I don't speak for anyone save myself. GPG signed mail preferred.

 ``If you don't do it now, you'll be one year older when you do.''

Attachment: pgpR74onywq3L.pgp
Description: PGP signature


Reply to: