import python-virtualenv-15.1.0-21.module+el8.5.0+12207+5c5719bc

This commit is contained in:
CentOS Sources 2021-11-09 04:47:07 -05:00 committed by Stepan Oksanichenko
parent 31f0c053f1
commit 2e10697752
2 changed files with 133 additions and 11 deletions

View File

@ -1,5 +1,14 @@
From b7b8a713d9f1ebac6430fd0fc10175ed37b834ee Mon Sep 17 00:00:00 2001
From: Lumir Balhar <lbalhar@redhat.com>
Date: Thu, 18 Mar 2021 13:08:52 +0100
Subject: [PATCH] rpm
---
virtualenv.py | 66 ++++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 55 insertions(+), 11 deletions(-)
diff --git a/virtualenv.py b/virtualenv.py
index 5699998..55c7321 100755
index 5699998..9854324 100755
--- a/virtualenv.py
+++ b/virtualenv.py
@@ -39,9 +39,9 @@ except ImportError:
@ -14,11 +23,103 @@ index 5699998..55c7321 100755
sys.exit(101)
try:
@@ -399,6 +399,7 @@ def _find_file(filename, dirs):
@@ -399,6 +399,8 @@ def _find_file(filename, dirs):
def file_search_dirs():
here = os.path.dirname(os.path.abspath(__file__))
dirs = [here, join(here, 'virtualenv_support')]
+ dirs.insert(1, '/usr/share/python{}-wheels'.format(sys.version_info[0]))
+ dirs.insert(1, '/usr/share/python{}{}-wheels'.format(*sys.version_info[:2]))
if os.path.splitext(os.path.dirname(__file__))[0] != 'virtualenv':
# Probably some boot script; just in case virtualenv is installed...
try:
@@ -859,7 +861,12 @@ def install_wheel(project_names, py_executable, search_dirs=None,
import tempfile
import os
- import pip
+ try:
+ from pip._internal import main as _main
+ if type(_main) is type(sys): # <type 'module'>
+ _main = _main.main # nested starting in Pip 19.3
+ except ImportError:
+ from pip import main as _main
try:
cert_data = pkgutil.get_data("pip._vendor.requests", "cacert.pem")
@@ -878,7 +885,7 @@ def install_wheel(project_names, py_executable, search_dirs=None,
args += ["--cert", cert_file.name]
args += sys.argv[1:]
- sys.exit(pip.main(args))
+ sys.exit(_main(args))
finally:
if cert_file is not None:
os.remove(cert_file.name)
@@ -1038,20 +1045,57 @@ def change_prefix(filename, dst_prefix):
assert False, "Filename %s does not start with any of these prefixes: %s" % \
(filename, prefixes)
-def copy_required_modules(dst_prefix, symlink):
- import imp
+def find_module_filename(modname):
+ if sys.version_info < (3, 4):
+ # noinspection PyDeprecation
+ import imp
+
+ try:
+ file_handler, filepath, _ = imp.find_module(modname)
+ except ImportError:
+ return None
+ else:
+ if file_handler is not None:
+ file_handler.close()
+ return filepath
+ else:
+ import importlib.util
+ if sys.version_info < (3, 5):
+
+ def find_spec(modname):
+ # noinspection PyDeprecation
+ loader = importlib.find_loader(modname)
+ if loader is None:
+ return None
+ else:
+ return importlib.util.spec_from_loader(modname, loader)
+
+ else:
+ find_spec = importlib.util.find_spec
+
+ spec = find_spec(modname)
+ if spec is None:
+ return None
+ if not os.path.exists(spec.origin):
+ # https://bitbucket.org/pypy/pypy/issues/2944/origin-for-several-builtin-modules
+ # on pypy3, some builtin modules have a bogus build-time file path, ignore them
+ return None
+ filepath = spec.origin
+ # https://www.python.org/dev/peps/pep-3147/#file guarantee to be non-cached
+ if os.path.basename(filepath) == "__init__.py":
+ filepath = os.path.dirname(filepath)
+ return filepath
+
+def copy_required_modules(dst_prefix, symlink):
for modname in REQUIRED_MODULES:
if modname in sys.builtin_module_names:
logger.info("Ignoring built-in bootstrap module: %s" % modname)
continue
- try:
- f, filename, _ = imp.find_module(modname)
- except ImportError:
+ filename = find_module_filename(modname)
+ if filename is None:
logger.info("Cannot import bootstrap module: %s" % modname)
else:
- if f is not None:
- f.close()
# special-case custom readline.so on OS X, but not for pypy:
if modname == 'readline' and sys.platform == 'darwin' and not (
is_pypy or filename.endswith(join('lib-dynload', 'readline.so'))):
--
2.30.2

View File

@ -7,7 +7,7 @@
Name: python-virtualenv
Version: 15.1.0
Release: 19%{?dist}
Release: 21%{?dist}
Summary: Tool to create isolated Python environments
Group: Development/Languages
@ -20,13 +20,17 @@ Source0: http://pypi.python.org/packages/source/v/virtualenv/virtualenv-%
# listing it's content.
Patch0: check-exec_dir.patch
# Add /usr/share/python{2,3}-wheels to file_search_dirs
# and fail with a warning on versions of Python < 2.7
Patch2: rpm-wheels.patch
# Don't fail on missing certifi's cert
# https://github.com/pypa/virtualenv/pull/1252
Patch3: dont-fail-on-missing-certifi-cert.patch
Patch1: dont-fail-on-missing-certifi-cert.patch
# Changes related to RPM wheels:
# 1. Drop support for Python 2.6 because we don't have it in RHEL 8 and we don't want to
# bundle prehistoric wheels
# 2. Use wheels from /usr/share/python{2,3,38,39,...}-wheels
# 3. Add support for pip 19.3-ish by importing pip.main() from different locations
# 4. Use the importlib module rather than deprecated imp on Python 3
Patch2: rpm-wheels.patch
BuildArch: noarch
@ -75,6 +79,9 @@ Requires: python2-devel
Requires: python2-pip-wheel
Requires: python2-setuptools-wheel
Requires: python2-wheel-wheel
Requires: (python3-wheel-wheel if python36)
Requires: (python38-wheel-wheel if python38)
Requires: (python39-wheel-wheel if python39)
%{?python_provide:%python_provide python2-virtualenv}
@ -102,11 +109,17 @@ Requires: python3-setuptools
Requires: python3-pip-wheel
Requires: python3-setuptools-wheel
Requires: python3-wheel-wheel
Requires: (python2-wheel-wheel if python2)
Requires: (python38-wheel-wheel if python38)
Requires: (python39-wheel-wheel if python39)
# Require alternatives version that implements the --keep-foreign flag
Requires(postun): alternatives >= 1.19.1-1
# For alternatives
Requires: python36
Requires(post): python36
Requires(postun): python36
%if %{with python36_module}
Requires: python36-devel
%else
@ -128,8 +141,8 @@ licensed under an MIT-style permissive license
%{__sed} -i -e "1s|#!/usr/bin/env python||" virtualenv.py
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
# Remove the wheels provided by RPM packages and argparse as it's only required for python 2.6
rm virtualenv_support/pip-*
@ -187,9 +200,9 @@ alternatives --add-slave python3 %{_bindir}/python%{python3_version} \
%postun -n python3-virtualenv
# Do this only during uninstall process (not during update)
if [ $1 -eq 0 ]; then
alternatives --remove-slave python3 %{_bindir}/python%{python3_version} \
alternatives --keep-foreign --remove-slave python3 %{_bindir}/python%{python3_version} \
virtualenv-3
alternatives --remove-slave python3 %{_bindir}/python%{python3_version} \
alternatives --keep-foreign --remove-slave python3 %{_bindir}/python%{python3_version} \
virtualenv
fi
%endif
@ -226,6 +239,14 @@ fi
%changelog
* Wed Jul 28 2021 Tomas Orsava <torsava@redhat.com> - 15.1.0-21
- Adjusted the postun scriptlets to enable upgrading to RHEL 9
- Resolves: rhbz#1933055
* Thu Mar 18 2021 Lumír Balhar <lbalhar@redhat.com> - 15.1.0-20
- Use python-version-specific wheels from Python modules
Resolves: rhbz#1917971
* Fri Jun 21 2019 Miro Hrončok <mhroncok@redhat.com> - 15.1.0-19
- Use wheels from RPM packages (rhbz#1659550) (rhbz#1659551)
- Fail with a warning on Python versions < 2.7