Re: Python 2 exodus is happening now [Was: Re: [sepia] Transition to Python 3]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Nov 17, 2019 at 9:17 PM Kaleb Keithley <kkeithle@xxxxxxxxxx> wrote:
>
> On Sun, Nov 17, 2019 at 8:09 PM Brad Hubbard <bhubbard@xxxxxxxxxx> wrote:
>>
>> On Wed, Apr 18, 2018 at 6:27 AM Nathan Cutler <ncutler@xxxxxxx> wrote:
>> > > That would be at odds to what Nathan is suggesting though, which is a
>> > > hard change to Python 3.
>>
>> >
>> > Hm, not sure what hard/soft means in this context. For any given script,
>> > either it runs with Python 3, or it doesn't. And this is determined by
>> > the shebang. (Unless the shebang is omitted, of course.)
>
>
> Apologies if this has already been mentioned, but FYI, Fedora (and RHEL and CentOS by extension) do not allow ambiguous python shebangs  – they _require_ explicit versioned shebangs.
>
> I presume that is what is meant by a hard change to Python3.
>
> things like:
>   #!/usr/bin/env python
>   #!/usr/bin/python
> are not permitted.
>
> (Also not #!/usr/bin/env $anything)
>
> Shebangs – if there is one – in .py files must be either
>   #!/usr/bin/python3
> or
>   #!/usr/bin/python2
>
> AFAIK Fedora is enforcing it, kinda. Package builds in fedora run rpmlint which checks for these kinds of things, although I'm not sure this is a test yet or if there is a test that it scores high enough to fail a build. (Ditto for package builds in the OpenSUSE OBS, i.e. they also run rpmlint, although I haven't noticed python shebang tests there either.)
>

I can speak somewhat authoritatively on the Fedora situation, as I've
helped with implementing it.

In Fedora 31, we have transitioned all "unversioned" binaries from the
Python stack from Python 2 to Python 3. All "unversioned" package
names have also transitioned. See
https://fedoraproject.org/wiki/Changes/Python_means_Python3

In Fedora 32, the aim is to retire nearly all of the Python 2 stack.
The interpreter will remain and small selection of module packages
will exist too (probably in the order of dozens). See
https://fedoraproject.org/wiki/Changes/RetirePython2

We have enforced packages to pick either Python 2 or Python 3 for
shebangs since Fedora 30 through a build-root policy script:
https://fedoraproject.org/wiki/Changes/Make_ambiguous_python_shebangs_error

Somewhat relatedly, we automatically generate Python distribution
dependencies by default since Fedora 30:
https://fedoraproject.org/wiki/Changes/EnablingPythonGeneratorsByDefault

Also related, this generator can be manually activated for EL7 and EL8
by adding the following to the top of a spec:
# Enable Python dependency generation
%{?python_enable_dependency_generator}

You can see an example of that here:
https://src.fedoraproject.org/rpms/python-hvac/blob/51406e2c7383bf15303ecf5cfa2eba3bf5116dbd/f/python-hvac.spec

openSUSE is orders of magnitude behind Fedora on this. All packages
are still being built dual-stack, and the preference has not been
switched from Python 2 to Python 3. There is no dependency generator
for Python module dependencies, so getting a clear picture of the
dependency web is much more complex. My understanding is that openSUSE
will break the world on this only after Python 2 is retired from
Factory in January 2020. It's going to be hard and painful, and it's
because openSUSE is taking a *really* slow path to get there.


--
真実はいつも一つ!/ Always, there's only one truth!
_______________________________________________
Dev mailing list -- dev@xxxxxxx
To unsubscribe send an email to dev-leave@xxxxxxx




[Index of Archives]     [CEPH Users]     [Ceph Devel]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux