purpose of ruby(abi), python(abi), etc

Vít Ondruch vondruch at redhat.com
Wed Dec 19 12:35:07 UTC 2012


Hi,

Can somebody enlighten me, what is the purpose of ruby(abi) (replace by 
python(abi) if you wish) virtual provide? Especially, why Ruby packaging 
guidelines mandate "Requires: ruby(abi) = 1.9.1", i.e. versioned 
require? And why in Python packages, python(abi) is automatically generated?

If the package is noarch, there is very high chance, that it would work 
with Ruby 1.8 as good as with Ruby 1.9 or even Ruby 2.0. If the package 
is arch dependent, it has automatically generated dependency on 
libruby.so.1.9. So there is no chance to install it or run it with other 
version of Ruby.

Now why I am asking? We would like to have in F19 Ruby 2.0 accompanied 
by JRuby 1.7 and in the future, we would love to see these interpreters 
interchangeable, i.e. it doesn't matter which interpreter is on your 
system, since it will be able to run the gem/application shipped in 
Fedora. However, while Ruby 2.0 should provide "ruby(abi) = 2.0", JRuby 
are not yet fully 2.0 ready, so they should not provide "ruby(abi) = 
2.0". Moreover, the term ABI with JRuby is a bit misleading.

So how we can make every noarch ruby package compatible with both 
interpreters in terms of requires? One possibility would be to drop the 
abi version unless it is explicitly needed. However, it renders 
ruby(abi) as not the best virtual provide name for this goal.

Any ideas?


Vít


More information about the ruby-sig mailing list