Fedora downstream patches are tracked in the page: Python Patches. This page gives the status of the downstream patches currently maintained in the latest Python package of Fedora.
Fedora downstream patches
- https://src.fedoraproject.org/rpms/python3.10/blob/master/f/python3.10.spec
- https://src.fedoraproject.org/rpms/python3.10/tree/master
- Tracking issue: https://bugzilla.redhat.com/show_bug.cgi?id=1287556
00001-rpath.patch
"Fixup distutils/unixccompiler.py to remove standard library path from rpath"
=> Can be removed, but blocked by a Fedora change.
=> Covered by this Fedora 35 change: https://fedoraproject.org/wiki/Changes/Broken_RPATH_will_fail_rpmbuild
This patch is basically useless, but removing it would require to ensure that no Fedora package use rpath. See: https://pagure.io/packaging-committee/issue/886
See also: https://bugs.python.org/issue36659#msg340731
Added by: https://src.fedoraproject.org/rpms/python/c/f5df1f834310948b32407933e3b8713e1121105b (2010-03-16)
00251-change-user-install-location.patch
"Change user install location to /usr/local if executable is /usr/bin/python* and RPM build is not detected to make pip and distutils install into separate location."
=> Should be proposed upstream as a configure option.
Distutils is deprecated in Python 3.10 and will be removed in Python 3.12. Removing the patch breaks numpy, so the patch is kept for now, we will watch how numpy deals with distutils deprecation/removal.
https://github.com/python/cpython/pull/25718 proposes a long term solution to give Linux distributions a way to customize sysconfig "schemes".
Added by: https://src.fedoraproject.org/rpms/python3/c/332b947dfc8d0f0d3a4525864b121d0f239beb4d (2017-06-26)
00274-fix-arch-names.patch
"Upstream uses Debian-style architecture naming, change to match Fedora"
=> downstream only patch
Merged from several patches by: https://src.fedoraproject.org/rpms/python3/c/9423d36fb4847cc6117daea82490a188cc78ebdf (2017-08-31)
One of the originals added by: https://src.fedoraproject.org/rpms/python3/c/69d4e5d3533e4404ae7d42d537d29fd6861a8eae (2013-05-02)
00328-pyc-timestamp-invalidation-mode.patch
"Restore pyc to TIMESTAMP invalidation mode as default in rpmbuild"
=> downstream only patch
Patch related to PEP 552: Deterministic pycs implemented in Python 3.7.
- Rationale: https://src.fedoraproject.org/rpms/redhat-rpm-config/pull-request/57#comment-27426
- Added by: https://src.fedoraproject.org/rpms/python3/c/9213c03924aeb612d1b754dbe0b4397782c6b3fb (2019-07-15)
- Need to run benchmarks to justify the downstream patch?
- Need to add a configure option to make it upstream
Merged upstream
Made upstream by Victor Stinner:
- 2021-02-17: 00111-no-static-lib.patch
- 2021-01-20: 00189-use-rpm-wheels.patch
- 2020-03-10: 00102-lib64.patch
- 2019-05-17: 00178-dont-duplicate-flags-in-sysconfig.patch:
- https://src.fedoraproject.org/rpms/python3/c/7aab0ddc87c4c8476c8077800e765e52480fbc4d?branch=master Patch simply removed since it was invalid.
- https://bugs.python.org/issue17679 (rejected)
- 2019-05-09: 00200-gettext-plural-fix.patch (python-2.5.1-plural-fix.patch)
- 2019-03-15: 00168-distutils-cflags.patch
- https://github.com/python/cpython/commit/86082c22d23285995a32aabb491527c9f5629556 followed by other commits (see the issue)
- https://bugs.python.org/issue36235
- 2019-03-11: 00157-uid-gid-overflows.patch
- 2018-12-18: 00155-avoid-ctypes-thunks.patch: Remove ctypes callback workaround
- 2018-10-25: _PyObject_ASSERT(), Dave Malcolm's patch (2010):
- Multiple commits: see the issue
- https://bugs.python.org/issue9263
- 2018-10-17: "python -m cProfile -s" error message, Robert Kuska's patch (2015):
- 2018-10-16: 00190-gdb-py-bt-dont-raise-exception-from-eval.patch
- 2018-10-15: 00190-gdb-py-bt-dont-raise-exception-from-eval.patch
- 2017-02-10: 00153-fix-test_gdb-noise.patch
Other:
- 2018-01-29: 00294-define-TLS-cipher-suite-on-build-time.patch
- https://bugs.python.org/issue31429 made upstream by Christian Heimes
History
- python3.10:
- 2021-02-16: 4 patches (Python 3.10.0a5)
- python39:
- 2020-03-05: 7 patches (Python 3.9.0a4)
- 2020-02-17: 9 patches but 2 are backports (340 and 341), can be removed from next Python 3.9.0a4
- python38:
- 2019-06-19: 8 patches
- 2019-04-23: 9 patches
- 2019-02-07: 12 patches
- 2018-11-08: 20 patches
- python3 (currently Python 3.7):
- 2019-04-02: 11 patches
- 2019-03-07: 15 patches
- 2018-07-12: 18 patches
- 2018-05-10: 15 patches
- python2 (Python 2.7):
- 2019-05-17: 53 patches
- 2019-03-07: 55 patches
Count patches::
$ ls *.patch|wc -l 55 $ grep -c '^Patch[0-9]\+:' python*.spec 55