(Benefit to Fedora section) |
No edit summary |
||
(11 intermediate revisions by the same user not shown) | |||
Line 19: | Line 19: | ||
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name. This keeps all change proposals in the same namespace --> | <!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name. This keeps all change proposals in the same namespace --> | ||
= | |||
{{admon/important|Draft|This page is a Draft and it's content was added to [[FinalizingFedoraSwitchtoPython3]] }} | |||
= Use explicit version of Python 2/3 throughout Fedora= | |||
== Summary == | == Summary == | ||
Currently, in Fedora package names, executables etc., <code>python</code> without a version number generally means Python 2. Given that the upstream support for Python 2 will end soon, we want to prepare Fedora for a transition to Python 3. Before switching <code>python</code> to refer to Python 3, we need to free it of the current meaning of Python 2. This means explicitly using either "python2" or "python3" throughout Fedora. | |||
This Fedora change is "Phase 1" of a long-term effort described in [[FinalizingFedoraSwitchtoPython3|Finalizing Fedora's Switch to Python 3]] transition plan. | |||
== Owner == | == Owner == | ||
* Name: [[User:Ishcherb| Iryna Shcherbina]] | * Name: [[User:Ishcherb| Iryna Shcherbina]] | ||
* Name: [[User:Churchyard| Miro Hrončok]] | |||
* Email: | * Name: [[User:Pviktori| Petr Viktorin]] | ||
* Email: python-maint at redhat.com | |||
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> --> | * Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> --> | ||
== Current status == | == Current status == | ||
Line 57: | Line 53: | ||
== Detailed Description == | == Detailed Description == | ||
This Change covers: | |||
* Renaming Python 2 binary RPMs from <code>python-foo</code> to <code>python2-foo</code> | * Renaming Python 2 binary RPMs from <code>python-foo</code> to <code>python2-foo</code> | ||
Line 63: | Line 59: | ||
* Fixing ambiguous Python 2 dependency declarations, i.e using <code>python2-foo</code> instead of <code>python-foo</code> in requirements | * Fixing ambiguous Python 2 dependency declarations, i.e using <code>python2-foo</code> instead of <code>python-foo</code> in requirements | ||
We have started opening automatic Pull Requests with patches as announced in [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/EJ5XP2R54V62K7FD5DIPQS3ZYKPUIULH/ Mass Pull Request filing for ambiguous Python 2 requirements]. The packages which will be targeted are tracked in [http://fedora.portingdb.xyz/namingpolicy/#require-misnamed PortingDB]. | We have started opening automatic Pull Requests with patches as announced in [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/EJ5XP2R54V62K7FD5DIPQS3ZYKPUIULH/ Mass Pull Request filing for ambiguous Python 2 requirements]. The packages which will be targeted are tracked in [http://fedora.portingdb.xyz/namingpolicy/#require-misnamed PortingDB] (at this point, most of these fail to build due to unrelated problems). | ||
* | * Start ensuring that <code>/usr/bin/python</code> or <code>/usr/bin/env python</code> shebangs are replaced with either <code>/usr/bin/python2</code> or <code>/usr/bin/python3</code> | ||
This is currently covered by a Taskotron check. We will provide a macro to do this automatically, and help packagers do the change. | |||
Each of the above conforms to the [[Packaging:Python|Python packaging guidelines]] as approved by FPC. The work on the change is already in progress and will be tracked by this Fedora change. | |||
== Benefit to Fedora == | |||
This transition plan will simplify the final transition to Python 3 when the upstream support for Python 2 ends. | |||
Fedora has long been a one of the leaders of the ''Make Python 3 the Default Python'' initiative, having Python 3 as the "default Python" since Fedora 23 including a Fedora Workstation without Python 2, [http://fedora.portingdb.xyz/ tracking the status of Python 3 compatibility] and actively getting involved in porting upstream projects, such as (but not limited to) Samba. However, there are other distros (such as Arch) where <code>python</code> means Python 3 for quite some time. | |||
== Scope == | == Scope == | ||
* Proposal owners: | * Proposal owners: | ||
Proposal owners are to communicate the idea to the packagers and rename the affected packages as well as fix the requirements via [[Mass_package_changes]] procedure. | |||
* Other developers: | * Other developers: | ||
Package maintainers are expected to fix package requirements generated from shebangs by making sure that no scripts in their packages use <code>/usr/bin/python</code> or <code>/usr/bin/env python</code> shebangs. | |||
Package maintainers will also be asked to review Pagure PRs with automated patches fixing the ambiguous Python 2 dependency declarations. | |||
* Release engineering: [https://pagure.io/releng/issues #Releng issue number] (a check of an impact with Release Engineering is needed) <!-- REQUIRED FOR SYSTEM WIDE AS WELL AS FOR SELF CONTAINED CHANGES --> | * Release engineering: [https://pagure.io/releng/issues #Releng issue number] (a check of an impact with Release Engineering is needed) <!-- REQUIRED FOR SYSTEM WIDE AS WELL AS FOR SELF CONTAINED CHANGES --> | ||
Line 86: | Line 86: | ||
<!-- Please check the list of Fedora release deliverables and list all the differences the feature brings --> | <!-- Please check the list of Fedora release deliverables and list all the differences the feature brings --> | ||
* Policies and guidelines: | * Policies and guidelines: | ||
** Using python2/python3 instead of python in binary RPM package name [https://fedoraproject.org/wiki/Packaging:Naming?rd=Packaging:NamingGuidelines#Python2_binary_package_naming guidelines], [https://pagure.io/packaging-committee/issue/685 fpc] (already in effect) | |||
** Using python2/python3 instead of python in (Build)Requires, [https://fedoraproject.org/wiki/Packaging:Python#Dependencies guidelines], [https://pagure.io/packaging-committee/issue/686 fpc] (already in effect) | |||
** Using <code>/usr/bin/python2</code> instead of <code>/usr/bin/python</code> in shebangs and Requires, [https://fedoraproject.org/wiki/User:Churchyard/Packaging:Python#Multiple_Python_Runtimes guidelines], [https://pagure.io/packaging-committee/issue/698 fpc] (already in effect) | |||
< | |||
< | |||
== How To Test == | == How To Test == | ||
We have implemented taskotron checks for these changes. The checks are being run each time a Python package is build in Koji, and you may view the results in [https://taskotron.fedoraproject.org/resultsdb/results?testcases=dist.python-versions taskotron resultsdb] or when you submit the update in Bodhi. | |||
= | |||
== Dependencies == | == Dependencies == | ||
Line 125: | Line 99: | ||
<!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | <!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | ||
None | |||
== Contingency Plan == | == Contingency Plan == | ||
* Contingency mechanism: All changes are incremental. If a part of the Change is not completed in time, it will be moved to the next Fedora release. | |||
* Contingency deadline: beta freeze | |||
* Blocks release? No | |||
* Contingency deadline: | * Blocks product? No | ||
* Blocks release? | |||
* Blocks product? | |||
== Documentation == | == Documentation == | ||
* [[FinalizingFedoraSwitchtoPython3]] | |||
* [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/6AIJ6CYUYXACKR4TJH2ATY2JYWSHPRSG/ Discussion on Fedora devel mailing list] | |||
* [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/DQ4VMCKFO7I5ZVRDTGEMISG6LG7P7BM7/#Q225ZPP7R5OAI6MWDW7D5HUNMPIFV3EI Mass package change (python2- binary package renaming), part 1] | |||
* [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/JBLBDFGQJZ5ZDNXPKW5CHNTWGEQ2YTYJ/ MASS CHANGE announcement: python2- prefix renaming, part 2] | |||
* [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/EJ5XP2R54V62K7FD5DIPQS3ZYKPUIULH/ Mass Pull Request filing for ambiguous Python 2 requirements]. | |||
== Release Notes == | == Release Notes == | ||
Line 149: | Line 121: | ||
Release Notes are not required for initial draft of the Change Proposal but has to be completed by the Change Freeze. | Release Notes are not required for initial draft of the Change Proposal but has to be completed by the Change Freeze. | ||
--> | --> | ||
TBD | |||
[[Category:ChangePageIncomplete]] | <!-- [[Category:ChangePageIncomplete]] --> | ||
<!-- When your change proposal page is completed and ready for review and announcement --> | <!-- When your change proposal page is completed and ready for review and announcement --> | ||
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler --> | <!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler --> |
Latest revision as of 11:21, 5 January 2018
Use explicit version of Python 2/3 throughout Fedora
Summary
Currently, in Fedora package names, executables etc., python
without a version number generally means Python 2. Given that the upstream support for Python 2 will end soon, we want to prepare Fedora for a transition to Python 3. Before switching python
to refer to Python 3, we need to free it of the current meaning of Python 2. This means explicitly using either "python2" or "python3" throughout Fedora.
This Fedora change is "Phase 1" of a long-term effort described in Finalizing Fedora's Switch to Python 3 transition plan.
Owner
- Name: Iryna Shcherbina
- Name: Miro Hrončok
- Name: Petr Viktorin
- Email: python-maint at redhat.com
- Release notes owner:
Current status
- Targeted release: Fedora 28
- Last updated: 2018-01-05
- Tracker bug: <will be assigned by the Wrangler>
Detailed Description
This Change covers:
- Renaming Python 2 binary RPMs from
python-foo
topython2-foo
This is already partially done by applying automated patches as announced in Mass package change (python2- binary package renaming). The packages which still need to be fixed are tracked in PortingDB.
- Fixing ambiguous Python 2 dependency declarations, i.e using
python2-foo
instead ofpython-foo
in requirements
We have started opening automatic Pull Requests with patches as announced in Mass Pull Request filing for ambiguous Python 2 requirements. The packages which will be targeted are tracked in PortingDB (at this point, most of these fail to build due to unrelated problems).
- Start ensuring that
/usr/bin/python
or/usr/bin/env python
shebangs are replaced with either/usr/bin/python2
or/usr/bin/python3
This is currently covered by a Taskotron check. We will provide a macro to do this automatically, and help packagers do the change.
Each of the above conforms to the Python packaging guidelines as approved by FPC. The work on the change is already in progress and will be tracked by this Fedora change.
Benefit to Fedora
This transition plan will simplify the final transition to Python 3 when the upstream support for Python 2 ends.
Fedora has long been a one of the leaders of the Make Python 3 the Default Python initiative, having Python 3 as the "default Python" since Fedora 23 including a Fedora Workstation without Python 2, tracking the status of Python 3 compatibility and actively getting involved in porting upstream projects, such as (but not limited to) Samba. However, there are other distros (such as Arch) where python
means Python 3 for quite some time.
Scope
- Proposal owners:
Proposal owners are to communicate the idea to the packagers and rename the affected packages as well as fix the requirements via Mass_package_changes procedure.
- Other developers:
Package maintainers are expected to fix package requirements generated from shebangs by making sure that no scripts in their packages use /usr/bin/python
or /usr/bin/env python
shebangs.
Package maintainers will also be asked to review Pagure PRs with automated patches fixing the ambiguous Python 2 dependency declarations.
- Release engineering: #Releng issue number (a check of an impact with Release Engineering is needed)
- List of deliverables: N/A (not a System Wide Change)
- Policies and guidelines:
- Using python2/python3 instead of python in binary RPM package name guidelines, fpc (already in effect)
- Using python2/python3 instead of python in (Build)Requires, guidelines, fpc (already in effect)
- Using
/usr/bin/python2
instead of/usr/bin/python
in shebangs and Requires, guidelines, fpc (already in effect)
How To Test
We have implemented taskotron checks for these changes. The checks are being run each time a Python package is build in Koji, and you may view the results in taskotron resultsdb or when you submit the update in Bodhi.
Dependencies
None
Contingency Plan
- Contingency mechanism: All changes are incremental. If a part of the Change is not completed in time, it will be moved to the next Fedora release.
- Contingency deadline: beta freeze
- Blocks release? No
- Blocks product? No
Documentation
- FinalizingFedoraSwitchtoPython3
- Discussion on Fedora devel mailing list
- Mass package change (python2- binary package renaming), part 1
- MASS CHANGE announcement: python2- prefix renaming, part 2
- Mass Pull Request filing for ambiguous Python 2 requirements.
Release Notes
TBD