----- Original Message -----
On Thu, Dec 20, 2012 at 04:40:17PM +0100, 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(a)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? 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?
>
I don't think I follow your reasoning here:
1) If there is no python(abi) and no automatic dependency checking,
then the
packager assumes the burden of adding Requires: python-libs = VERSION
in all
of their packages. They also assume the responsibility of figuring
out what
VERSION needs to be. This is creating more work that should be done
centrally.
2) If there is no python(abi) but the automatic dep checking creates
the
Provides and Requires on python-libs = VERSION, then there doesn't
seem to be
any difference in terms of the work done. Someone who maintains the
central
dep checking still has to figure out what VERSION should be in either
case.
(And, assuming that your question about Ruby 1.9.3 having ruby(abi) =
1.9.1
was more than hypothetical, it sounds like there might just be a lack
of
someone performing this duty for Ruby).
-Toshio
I think that one of the questions here is "why 'abi' and not something
else?"
We currently enforce every Ruby package to have "Requires: ruby(abi)", but JRuby
doesn't in fact provide any ABI (I don't think the Java API can be called ABI).
Therefore it doesn't make sense for the pure-Ruby packages to require ruby(abi).
It'd be better to have something that would explain that all they need is _anything_
that can interpret Ruby, e.g. "ruby(interpreter)". Packages requiring ruby(abi)
should IMHO be only these that have C extension or are otherwise bound to cRuby.
Similarly, JRuby-only packages should depend on jruby (or its virtual provide, if we
choose to create one).
--
Regards,
Bohuslav "Slavek" Kabrda.