[Fedora-packaging] Changes in Guidelines Connected to "Python 3 as Default" Change
Bohuslav Kabrda
bkabrda at redhat.com
Thu Dec 4 13:10:39 UTC 2014
----- Original Message -----
> On Thu, Dec 04, 2014 at 12:51:40AM +1000, Nick Coghlan wrote:
> >
> > On 4 Dec 2014 00:38, "Bohuslav Kabrda" <bkabrda at redhat.com> wrote:
> > > - (This is not really related to the switch, but more of a general
> > > remark) In
> > [4], it says that "python 3 version of the executable gains a python3-
> > prefix".
> > This is IMO bad, since upstream projects tend to name the versioned
> > binaries
> > "foo-3.4, foo-3" or "foo3.4, foo3". We should accept one of these - I'm not
> > really certain which one of them. I tried to discuss this several times on
> > distutils-sig mailing list, but without reaching a consensus. Either way,
> > prefixing with python3- doesn't make sense to me, because it's not similar
> > to
> > any upstream way and you don't find the binaries under their names using
> > tab
> > completion (e.g. foo<tab> doesn't tell you about python3-foo).
> >
> > Agreed.
> >
> > CPython & pip use the "foo3.4, foo3" convention, so that seems enough of a
> > reason to use that convention by default. We may want a "unless upstream
> > does
> > it differently" caveat though.
> >
> Second caveat here is that currently we use version suffixes to denote
> a command coming from a compat package. If we make this change we need to
> address that as well. So, you might have sphinx-build, sphinx-build-2,
> sphinx-build-2.7, sphinx-build-3, and sphinx-build-3.4 for the python
> interpreter. If you need a forwards or backwards compat package you might
> also have an 0.9 and 1.1 that you need to tack on. Possible solution here:
> use a "v" prefix for the compat package's version. So if the default
> package is 1.1, you would have the python-sphinx0.9 and python3-sphinx0.9
> packages provide:
>
> * sphinx-build-v0.9
> * sphinx-build-2-v0.9
> * sphinx-build-2.7-v0.9
> * sphinx-build-3-v0.9
> * sphinx-build-3.7-v0.9
I'd rather see sphinx-build-v0.9-3.4. IMO keeping the Python version at the very end in every case is better. In other words, the binary would normally be "sphinx-build-0.9" and we just append "-3.4" to it.
Also, this makes me realize more arguments to append Python version with dash, not without it:
1) sphinx-build-v0.93.4 would be very confusing (I do understand that this is a downstream problem, but see the following point)
2) Similarly, if there is an upstream whose entry_point/script ends with a number (pep8 for example), it'd be highly confusing to use the notation without dash, it would yield pep83.4 assuming the upstream community would accept this scheme. This feels just wrong.
> Also an addition: It would be great for us to always have a "major version
> number
> only" script name. Currently there's a few packages (python3-nose, I'm
> looking at you) that only provide the MAJOR.MINOR form ie: nosetests-3.4.
> That means scripts (user scripts as well as spec files) have to change
> whenever we update python3 to a new major release. Having the major only
> form for all of these binaries will alleviate that. Packagers can just
> create a symlink if upstrean doesn't provide the -MAJOR version.
I do agree that we should have that, although you can now use nosetests-%{python3_version}.
> > > - As for binaries/scripts in /usr/bin (assuming there are both python2
> > > and
> > python3 versions), the unversioned files should point to python2 version.
> > This
> > aligns with /usr/bin/python still pointing to python2.
> >
> > This also aligns with CPython & pip conventions. Between them, only
> > "pyvenv"
> > runs under Python 3 by default, and that's only because it doesn't exist in
> > Python 2.
> >
> One exception to this, I think, should be 2to3. Or perhaps python-tools
> should stop shipping 2to3 and the other /bin/ scripts which python3-tools
> ships and are not needed in two versions (Not sure if any of those scripts
> actually need to be carried in two versions.. pygettext.py might need to be
> tested to be sure the python3 version can handle all sorts of python2
> strings correctly).
Agreed, it's been on my todolist for quite some time to make 2to3 from python3-tools *the* 2to3.
> -Toshio
--
Regards,
Slavek Kabrda
More information about the python-devel
mailing list