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:
pgp600utry6nt.pgp
Description: PGP signature