On Fri, Jan 15, 2021 at 10:58 PM Neal Gompa <ngompa13@gmail.com> wrote:
On Fri, Jan 15, 2021 at 3:57 PM Ben Cotton <bcotton@redhat.com> wrote:
>
> 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: mhroncok@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.
>

I would really rather not have this happen until we're going to retire
Python 2 entirely. The Python 2 macros are already separate from the
Python 3 ones, so we could just leave them alone until we're ready to
just remove Python 2 entirely.

Moving the Python 2 macro files (and the python2-rpm-macros package)
from the python-rpm-macros package to the python27 package would also
simplify this eventual retirement.

Fully agree here, unless we are really going to drop python2 stuff completely from distribution.





--
真実はいつも一つ!/ Always, there's only one truth!
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-leave@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@lists.fedoraproject.org