https://fedoraproject.org/wiki/Changes/Remove_Python2_RPM_Macros


== Summary ==
The {{package|python2-rpm-macros}} package (containing
`/usr/lib/rpm/macros.d/macros.python2`) will be removed from Fedora 34
and newer. The python2 RPM macros will ceases to exist. Python 2
packages are already not allowed. Around a dozen of packages use the
macros in Fedora and will need to be adjusted either by expanding them
or by no longer using Python 2. The `python2.7dist()` and
`python2dist()` automatic provides/requires will no longer be
automatically generated.

== Owner ==
* Name: [[User:Churchyard|Miro HronĨok]]
* Email: mhron...@redhat.com


== Detailed Description ==
Python 2 is upstream dead, usage in Fedora packages is forbidden,
except for several package with an explicit FESCo approved exception.
The Python Maintenance team no longer wishes to support the python2
RPM macros from the {{package|python2-rpm-macros}} package (located at
`/usr/lib/rpm/macros.d/macros.python2`) and hence decided to remove
the package. The following macros will be undefined:

 %{python2_sitelib}
 %{python2_sitearch}
 %{python2_version}
 %{python2_version_nodots}
 %{python2_platform}
 %{py2_shbang_opts}
 %{py2_shbang_opts_nodash}
 %{py2_shebang_flags}
 %py2_shebang_fix
 %py2_build
 %py2_build_egg
 %py2_build_wheel
 %py2_install
 %py2_install_egg
 %py2_install_wheel

The following macros will remain defined for the time being to not
break packages that are using Python 2 as build-time only dependency
(which is also not allowed, but happens more often):

 %{__python2}
 %{python2}

The 
[https://docs.fedoraproject.org/en-US/packaging-guidelines/Python_Appendix/#_python_2_packages
Python 2 section of Python packaging guidelines] will be removed.

{{package|python2.7}} will no longer require
{{package|python2-rpm-macros}} and {{package|python3-rpm-generators}}.

Provides/requires like this will no longer be automatically generated:

 python2dist(...)
 python2.7dist(...)

The changes will happen after the Fedora 34 mass rebuild and before branching.

Packages that used to use those macros in Fedora will need to be
adapted to expand the macros or switch to Python 3. In January 2021,
we have:

* several Python 2 trac plugins, but {{package|trac}} uses Python 3 now
** only those require `python2dist(...)`
* several Python 2 sugar packages, but they already don't build and/or
install as {{package|sugar}} uses Python 3 now
* 13 other affected packages in Fedora (some of them co-owned by Python Maint):
** avahi
** gimp-layer-via-copy-cut
** gimp-resynthesizer
** chromium
** NFStest
** offlineimap
** pygobject2
** pygtk2
** python-psutil
** python-six
** python2-cairo
** python2-dns
** python2-setuptools

Note: Many other packages use the macros in a disabled `%if` section.
Some of the listed ones might as well (and hence are not really
impacted), the list is an intersection of packages that (Build)Require
Python 2 and are greppable for the macros.

The removed macros and migration plan:

=== %{python2_sitelib} ===

Affected Fedora packages:

* avahi
* NFStest
* offlineimap
* python2-dns
* python2-setuptools
* python-six

Migration plan if not possible to switch to Python 3 / retire: Use
`%{_prefix}/lib/python2.7/site-packages`.

=== %{python2_sitearch} ===

Affected Fedora packages:

* chromium
* offlineimap
* pygobject2
* pygtk2
* python2-cairo
* python-psutil

Migration plan if not possible to switch to Python 3 / retire: Use
`%{_libdir}/python2.7/site-packages`.

=== %{python2_version} ===

Affected Fedora packages:

* offlineimap
* pygtk2
* python2-setuptools

Migration plan if not possible to switch to Python 3 / retire: Use `2.7`.

=== %{python2_version_nodots} ===

No affected Fedora packages.

Migration plan: Use `27`.

=== %{python2_platform} ===

No affected Fedora packages.

Migration plan: Use a glob like `linux-*`.

=== %{py2_shbang_opts}, %{py2_shbang_opts_nodash},
%{py2_shebang_flags}, %py2_shebang_fix ===

Affected Fedora packages:

* gimp-layer-via-copy-cut
* gimp-resynthesizer
* offlineimap

All use `pathfix.py -pni "%{__python2} %{py2_shbang_opts}" ...`

Migration plan: `pathfix.py -pni "%{_bindir}/python2" -kas ...`

=== %py2_build, %py2_install ===

Affected Fedora packages:

* NFStest
* offlineimap
* python2-cairo
* python2-dns
* python2-setuptools
* python-psutil
* python-six

Migration plan:

 %build
 %set_build_flags
 python2 setup.py build

 %install
 python2 setup.py install --skip-build --root %{buildroot}

Note: Add additional `sleep 1` after/before the build if you also
build for Python 3.

=== %py2_build_egg, %py2_build_wheel, %py2_install_egg, %py2_install_wheel ===

No affected Fedora packages. There are no build dependencies in Fedora
to build a Python 2 wheel or install it.

Migration plan for egg: Please don't use this!

 %build
 %set_build_flags
 python2 setup.py bdist_egg

 %install
 python2 -m easy_install -m --prefix %{buildroot}%{_prefix} -Z <path_to_egg>


== Benefit to Fedora ==
We tried to keep the macros as similar to their Python 3 counterparts
as possible, but we have decided that it is not worth it for 13
packages. We want to discourage building Python 2 packages. We want to
remove the package from RHEL 9 as well.

== Scope ==
* Proposal owners:
** Drop the macros. Disable the `python2dist()`/`python2.7dist()`
dependency generators.
** No longer require {{package|python2-rpm-macros}} and
{{package|python3-rpm-generators}} from {{package|python2.7}}.
** Fix packages with FESCo exceptions (except already broken trac
plugins), leave the other affected packages broken for the maintainers
to fix.

* Other developers:
** Fix their packages by migrating to Python 3 or expanding the macros.
* Release engineering: no impact on Release Engineering is anticipated
* Policies and guidelines: the Python 2 guidelines will be deleted
* Trademark approval: Not neccessary.
* Alignment with Objectives: Not really.


== Upgrade/compatibility impact ==
None.

== How To Test ==
Check the macros are not defined.

== Packager Experience ==
Mildly annoying (for the affected packagers), but expected to be
temporary as the number of Python 2 packages constantly decreases.

== Dependencies ==
None.

== Contingency Plan ==
* Contingency mechanism: If this fails, we'll introduce the macros as
a separate component and orphan it.
* Contingency deadline: Beta freeze
* Blocks release? No
* Blocks product? No

== Documentation ==
This page is the documentation for the affected packagers.


-- 
Ben Cotton
He / Him / His
Senior Program Manager, Fedora & CentOS Stream
Red Hat
TZ=America/Indiana/Indianapolis
_______________________________________________
devel-announce mailing list -- devel-announce@lists.fedoraproject.org
To unsubscribe send an email to devel-announce-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel-announce@lists.fedoraproject.org

Reply via email to