On Fri, Jan 15, 2021 at 3:57 PM Ben Cotton <bcotton@xxxxxxxxxx> 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@xxxxxxxxxx > > > == 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. -- 真実はいつも一つ!/ Always, there's only one truth! _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx 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@xxxxxxxxxxxxxxxxxxxxxxx