Is it possible to dynamize "requires" at RPM build time?

Hans de Goede j.w.r.degoede at hhs.nl
Thu Aug 24 06:44:06 UTC 2006



Jesse Keating wrote:
> On Wednesday 23 August 2006 16:18, Hans de Goede wrote:
>> Actually afaik gnome and gtk have the exact same problem (they are fully
>> backward compatible but introduce new symbols making apps using these
>> new symbols break on older version), but there we've been plastering
>> over the problem by manually adding Requires to packages.
> 
> I just talked to some of our Gnome maintainers and they don't think that's the 
> case at all.
> 

How is that not the case at all? gtk has been providing libgtk-2.0.so.0 
for many many releases and has been gaining features all the time, so 
any gtk app using those new features won't work with gtk-2.0.x, which 
has the same soname as gtk2.8.x . So rpm's autodeps wont help here and 
need some manual helping. It may be different then the nss case in the 
sense that just recompiling an app doesn't change it gtk requirements, 
for them to change the app needs to change itself.

> Isn't that why you have foo-so.1 and foo-so.1.1?  Your build that has 
> foo-so.1.1 could include foo-so.1 for compat no?  Am I totally off base here?  
> Versioned libraries are here for a reason, so that you can know what soname 
> you're compiling against and need later on down the road.  Having random 
> symbols in random unversioned .so files seems very very wrong to me, as a 
> shared library.
> 

As already explained if you have a library who is ABI wise 100% 
compatible with the old release but has new symbols, yo don't want to 
change the soname as then older programs won't work as they expect the 
old soname. Newer programs build with a newer version might however use 
new added symbols, which aren't available in older versions of the 
library (with the same soname). Thus rpm's autodep's aren't sufficient 
since the rpm autodep would be fullfilled by an older version too.

Take gnome-panel as an example,  rpm -q --requires gnome-panel contains:
libgtk-x11-2.0.so.0
But that will be provided by ancient gtk versions, which are too old for
gnome-panel too work (they miss symbols which the newer ones have, thus
the same rpm command output also contains:
gtk2 >= 2.7.1

All that is different in this thread with regards too gnome is the 
suggestion to automaticly generate these exrtra versioned deps buildtime.

Regards,

Hans




More information about the devel mailing list