On Wed, Dec 30, 2009 at 5:23 PM, James Antill <james@xxxxxxxxxxxxxxxxx> wrote: > On Wed, 2009-12-30 at 15:05 +0200, Erez Zilber wrote: >> Hi, >> >> What is the convention for problems like the following? >> >> I have 2 projects ('A' & 'B'). 'B' is compiled against symbols from >> 'A'. I have a rpm for 'A' and another rpm for 'B'. >> >> Now, 'A' & 'B' are installed. I change some symbols in 'A', recreate >> A.rpm and install the new version of 'A'. When I run 'B' (which was >> compiled against the old version of 'A'), it fails because 'A' has >> changed. >> >> The question is: how can I enforce that with rpm? What is the >> convention for such cases? > > In rough order of "goodness", IMO: > > 1. Use symbol versions, and let rpmbuild's find_provides/find_requires > do all the work. > > 2. Use SO name versions (and always change the major version when you > change/remove symbols), and let rpmbuild do most of the work. > > 3. Use an explicit provide/require for the ABI. Eg. > > # Package A > Provides: pkgA-ABI = 1.1 > # Package B > Requires: pkgA-ABI >= 1.1 > Requires: pkgA-ABI < 2.0 > > 4. Use conflicts in pkgA on versions of pkgB that don't work with this > ABI. Eg. > > # Package A > Conflicts: pkgB < 1.6.8 > > 5. Require explicit versions of pkgA from pkgB. This is often bad > because you'll be forced to update pkgB just to update the requires, > when you change pkgA (you can alleviate this somewhat by not requiring a > specific release, just the version). > > -- Thanks for both answers. You've been very helpful. Erez _______________________________________________ Rpm-list mailing list Rpm-list@xxxxxxxxxxxxx http://lists.rpm.org/mailman/listinfo/rpm-list