From Fedora Project Wiki

< SIGs‎ | Python

mNo edit summary
 
(15 intermediate revisions by one other user not shown)
Line 1: Line 1:
Fedora downstream patches are tracked in the page: [[SIGs/Python/PythonPatches|Python Patches]]. This page gives the status of the downstream patches currently maintained in the latest Python package of Fedora.
Fedora downstream patches are tracked in the page: [[SIGs/Python/PythonPatches|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 ==
== 00001-rpath.patch ==
Line 6: Line 12:


=> '''Can be removed, but blocked by a Fedora change.'''
=> '''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
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


Added by: https://src.fedoraproject.org/rpms/python/c/f5df1f834310948b32407933e3b8713e1121105b (2010-03-16)
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.


== 00102-lib64.patch ==
See also: https://bugs.python.org/issue36659#msg340731


"Use /usr/lib64 instead of /usr/lib on 64-bit systems"
Added by: https://src.fedoraproject.org/rpms/python/c/f5df1f834310948b32407933e3b8713e1121105b (2010-03-16)


=> '''Should be made upstream.'''
== 00251-change-user-install-location.patch ==


* Upstream issue: https://bugs.python.org/issue1294959
"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."
* Upstream PR 1: https://github.com/python/cpython/pull/11755 by Charalampos Stratakis
* Upstream PR 2: https://github.com/python/cpython/pull/8068 by Matěj Cepl
* Added by: https://src.fedoraproject.org/rpms/python/c/d4a39597bc32ab2cf84b43a3b0c71a18d1a0e0ec (2004-09-09)


== 00111-no-static-lib.patch ==
=> Should be proposed upstream as a configure option.


"Don't try to build a libpythonMAJOR.MINOR.a"
https://github.com/python/cpython/pull/25718 proposes a long term solution to give Linux distributions a way to customize sysconfig "schemes".


'''Downstream only: not appropriate for upstream.'''
Added by: https://src.fedoraproject.org/rpms/python3/c/332b947dfc8d0f0d3a4525864b121d0f239beb4d (2017-06-26)


Added by: https://src.fedoraproject.org/rpms/python3/c/aa4aef22cccc56ab0e7957b45209502ec487cdb1 (2010-01-18)
See also https://bugzilla.redhat.com/show_bug.cgi?id=2026979


== 00189-use-rpm-wheels.patch ==
== 00328-pyc-timestamp-invalidation-mode.patch ==


"instead of bundled wheels, use our RPM packaged wheels. We keep them in /usr/share/python-wheels."
"Restore pyc to TIMESTAMP invalidation mode as default in rpmbuild"


=> Should be proposed upstream as an opt-in option.
=> '''downstream only patch'''


Added by: https://src.fedoraproject.org/rpms/python3/c/0b241abda6b7f8d4b092974cecd11d9660fa7b83 (2018-08-15)
Patch related to [https://www.python.org/dev/peps/pep-0552/ PEP 552: Deterministic pycs] implemented in Python 3.7.


== 00251-change-user-install-location.patch ==
* 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


"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."
== Merged upstream ==


=> Should be proposed upstream as a configure option.
Made upstream by Victor Stinner:


Added by: https://src.fedoraproject.org/rpms/python3/c/332b947dfc8d0f0d3a4525864b121d0f239beb4d (2017-06-26)
* 2021-02-17: 00111-no-static-lib.patch
** https://bugs.python.org/issue43103
** https://github.com/python/cpython/commit/801bb0b5035f8eeafe389dc082c02dfafaa07f6a
* 2021-01-20: 00189-use-rpm-wheels.patch
** https://bugs.python.org/issue42856
** https://github.com/python/cpython/commit/75e59a97f5d1fddb0c30ed9747b1b8cb84420a62
* 2020-03-10: 00102-lib64.patch
** https://github.com/python/cpython/commit/8510f430781118d9b603c3a2f06945d6ebc5fe42
** https://bugs.python.org/issue1294959
** Added by: https://src.fedoraproject.org/rpms/python/c/d4a39597bc32ab2cf84b43a3b0c71a18d1a0e0ec (2004-09-09)
* 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)
** https://github.com/python/cpython/commit/afd1e6d2f0f5aaf4030d13342809ec0915dedf81
** https://bugs.python.org/issue36239
* 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
** https://github.com/python/cpython/commit/876e82b4f32075e1bd21750bf852a103035fce23
** https://bugs.python.org/issue36234
* 2018-12-18: 00155-avoid-ctypes-thunks.patch: Remove ctypes callback workaround
** https://github.com/python/cpython/commit/e6b247c8e524dbe5fc03b3492f628d0d5348bc49
** https://bugs.python.org/issue35523
* 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):
** https://github.com/python/cpython/commit/fcd5e84a515e19409840c570730f0728e9fcfc83
** https://bugs.python.org/issue23420
* 2018-10-16: 00190-gdb-py-bt-dont-raise-exception-from-eval.patch
** https://bugs.python.org/issue34989
** https://github.com/python/cpython/commit/aadb44ee98bc73bc5132acea5848ac6aef1ff8c0
* 2018-10-15: 00190-gdb-py-bt-dont-raise-exception-from-eval.patch
** https://github.com/python/cpython/commit/2e438cc2554495b28480a3ffe5cdf41b6ab823a0
** https://bugs.python.org/issue34989
* 2017-02-10: 00153-fix-test_gdb-noise.patch
** https://github.com/python/cpython/commit/8420cd29053106f97b7d27dcc288882ffea3c1c5


== 00274-fix-arch-names.patch ==
Other:


"Upstream uses Debian-style architecture naming, change to match Fedora"
* 2018-01-29: 00294-define-TLS-cipher-suite-on-build-time.patch
** https://bugs.python.org/issue31429 made upstream by Christian Heimes


=> '''downstream only patch'''
== 00274-fix-arch-names ==


Merged from several patches by: https://src.fedoraproject.org/rpms/python3/c/9423d36fb4847cc6117daea82490a188cc78ebdf (2017-08-31)
00274-fix-arch-names.patch was removed: archicteture names are now renamed in python3.10.spec:


One of the originals added by: https://src.fedoraproject.org/rpms/python3/c/69d4e5d3533e4404ae7d42d537d29fd6861a8eae (2013-05-02)
  # We use the upstream arch triplets, we convert them from %%{_arch}-linux%%{_gnu}
  %global platform_triplet %{expand:%(echo %{_arch}-linux%{_gnu} | sed -E \\
      -e 's/^arm(eb)?-linux-gnueabi$/arm\\1-linux-gnueabihf/' \\
      -e 's/^mips64(el)?-linux-gnu$/mips64\\1-linux-gnuabi64/' \\
      -e 's/^ppc(64)?(le)?-linux-gnu$/powerpc\\1\\2-linux-gnu/')}


== 00328-pyc-timestamp-invalidation-mode.patch ==
== History ==


"Restore pyc to TIMESTAMP invalidation mode as default in rpmbuild"
* python3.10:
 
** 2021-02-16: 4 patches (Python 3.10.0a5)
=> '''downstream only patch'''
* 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


Patch related to [https://www.python.org/dev/peps/pep-0552/ PEP 552: Deterministic pycs] implemented in Python 3.7.
Count patches::


* Rationale: https://src.fedoraproject.org/rpms/redhat-rpm-config/pull-request/57#comment-27426
    $ ls *.patch|wc -l
* Added by: https://src.fedoraproject.org/rpms/python3/c/9213c03924aeb612d1b754dbe0b4397782c6b3fb (2019-07-15)
    55
    $ grep -c '^Patch[0-9]\+:' python*.spec
    55

Latest revision as of 21:05, 13 April 2022

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

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

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.

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.

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)

See also https://bugzilla.redhat.com/show_bug.cgi?id=2026979

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.

Merged upstream

Made upstream by Victor Stinner:

Other:

00274-fix-arch-names

00274-fix-arch-names.patch was removed: archicteture names are now renamed in python3.10.spec:

 # We use the upstream arch triplets, we convert them from %%{_arch}-linux%%{_gnu}
 %global platform_triplet %{expand:%(echo %{_arch}-linux%{_gnu} | sed -E \\
     -e 's/^arm(eb)?-linux-gnueabi$/arm\\1-linux-gnueabihf/' \\
     -e 's/^mips64(el)?-linux-gnu$/mips64\\1-linux-gnuabi64/' \\
     -e 's/^ppc(64)?(le)?-linux-gnu$/powerpc\\1\\2-linux-gnu/')}

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