[Fedora-packaging] purpose of ruby(abi), python(abi), etc

Panu Matilainen pmatilai at laiskiainen.org
Thu Dec 20 18:10:19 UTC 2012


On 12/20/2012 05:40 PM, Vít Ondruch wrote:
> Dne 20.12.2012 15:46, Rex Dieter napsal(a):
>> On 12/20/2012 02:40 AM, Vít Ondruch wrote:
>>> Dne 20.12.2012 01:43, Garrett Holmstrom napsal(a):
>>>> On 2012-12-19 5:12, Bill Nottingham wrote:
>>>>> Vít Ondruch (vondruch at redhat.com) said:
>>>>>> 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?
>>>>>
>>>>> In the python case, it's because that python extension modules
>>>>> install in a version-specific directory ($libdir/python2.7, for
>>>>> example.)
>>>>> This makes them explicitly tied to that version of python.
>>>>
>>>> There's also the fact that the ABI for the bytecode that gets
>>>> generated at build time is specific to each x.y series of python
>>>> releases.
>>>
>>> For that, you could have "Require: python-libs = 2.7" instead.
>>
>> What's the practical difference?
>
> You follow general practices?

Well, general practise happens to be virtual dependencies, not package 
names.

> You don't have to think if
> {ruby,python}(abi) makes any sense for {JRuby,Jython} and what version
> it should provide in comparison to {ruby,python}. You don't force people
> to ask why Ruby 1.9.3 has ruby(abi) = 1.9.1. You don't have to answer
> such question as what is {ruby,python}(abi) good for?

The point of virtual provides is that they are not dependent of actual 
package names and so are not subject to issues like distro naming 
policies (and changes in them), package splits etc. This happens to be 
pretty much a must for automatically generated dependencies.

For example python-libs got split out of python not that many releases 
ago, but python(abi) dependencies avoided the need to modify and rebuild 
every bleeping python package because of it. On top of the other already 
explained rationale for python(abi) existence, that is.

As for ruby(abi), I dont know the exact rationale. I'd be mildly 
surprised if it existed "just because" though.

	- Panu -


More information about the packaging mailing list