Note: This bug is displayed in read-only format because
the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
DescriptionCharalampos Stratakis
2019-06-07 16:14:59 UTC
This bug was initially created as a copy of Bug #1701286
I am copying this bug because:
Upstream CPython bundles pre-built wheels of setuptools and pip. It installs them to the system when the ensurepip module is invoked, or to new virtual environments created via the venv module (the venv module transitively invokes the ensurepip module).
In Fedora, we remove those bundled wheels and we have a workaround.
In Fedora 28 (and earlier), we had a rather large custom patch in python3 (named "rewheel") that made the ensurepip module (and transitively venv) collect the files from the installed python2-setuptools and python2-pip packages, "rewheeled" them into an on demand wheel in /tmp and used that wheel instead of the originally bundled one.
Since Fedora 29, we do it differently. During the build of python-setuptools and python-pip RPMs a wheel is built from sources. The components gained a new subpackage python-setuptools-wheel / python-pip-wheel with the wheel:
$ rpm -ql python-pip-wheel
/usr/share/licenses/python-pip-wheel
/usr/share/licenses/python-pip-wheel/LICENSE.txt
/usr/share/python-wheels
/usr/share/python-wheels/pip-19.0.3-py2.py3-none-any.whl
Python is then patched simply to look for the wheels in different location and pick the highest available version instead of the hardcoded one.
The change can be seen in https://src.fedoraproject.org/rpms/python3/pull-request/49
It has several benefits (with footnotes):
- the patch is trivial and doesn't need much maintenance [1], whereas this was not true for the previous "rewheel" patch
- RPM built wheels can be used in multiple Python interpreters assuming they are compatible - in Fedora they are currently compatible with Python 2.7, 3.4-3.8, both PyPys and somehow also with Jython [2]
- when python-wheel also gains a wheel package (python-wheel-wheel), together those RPM built wheels can also be used in the python-virtualenv package - previously it just bundled the wheels from upstream
- the mechanism in ensurepip is as much upstream-similar as possible
- when pip or setuptools is updated after python2 is built, the version reported by the ensurepip module remains current, whereas previously it was baked in on build time
- python2 doesn't depend on python2-pip and python2-setuptools packages, which might be appreciated by some system administrators [3]
To lower the maintenance burden, I suppose we should update python in RHEL 8.1 to be aligned with Fedora 29+ in this manner.
Python 2 in RHEL 6/7 doesn't have pip.
Python 3 in RHEL 7 has rewheel. Whether it should stay that way or not is out of scope here.
------------------------
[1] The patch needs to be rebased when new setuptools/pip releases are bundled within a new python release, however the rebasing only consists of hardcoded version bumps in the original - that serves as a reminder to also update the versions hardcoded in the specfile (used when this entire patch is bconded out)
[2] They are not compatible with Python 2.6 but that doesn't have neithr ensurepip nor venv
[3] Technically it still depends on pip and setuptools wheels, however those are not "installed" (from Python perspective) but only "available"
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
https://access.redhat.com/errata/RHSA-2019:3335