update (old) pip-20.2.4

This commit is contained in:
Andreas Billmeier 2021-12-11 23:09:49 +01:00 committed by Andreas Billmeier
parent ee0c2295c3
commit 07550b133f
Signed by: onkelbeh
GPG Key ID: E6DB12C8C550F3C0
22 changed files with 660 additions and 246 deletions

View File

@ -0,0 +1,3 @@
DIST csv23-0.3.2.tar.gz 24132 BLAKE2B 2c5eb231814e087dce9689c7075bdbc3875b3e200dc1273022d55661ec60f18a5bcb03e062b205fde13e845e5e50d530b07596b51ad7b2a89e41b45629bf3ce8 SHA512 289386cce5de4ae5bc42fc56d1639bbd1483034e5422f63142c1d188de735b1f5f18f9f69e3cb96f4ac3e1d7d0b371b1c45e720982c4f4b539fcf0d2da893f6a
EBUILD csv23-0.3.2-r1.ebuild 753 BLAKE2B 4f908e5efcee009259aa3ce10e64446d973549b81ee926ae1b95917586994bb05202ce76923cbd3d9f95a954079c5b10c2e20c2bdb8d20531b955e29cfa329e1 SHA512 ceb03284cbe408d7fe77c32bf150e0041ebc9934bdb2b9cada0ed0c95b6e1f28d3fe3e202d843a55dbda687ec0e51a0b16ca4cf593293e2ea6f3522037fe7153
MISC metadata.xml 242 BLAKE2B 17fd7db1343fb7dba1842d5b62d83e56e2816962b0122ec6eee7f9e163f333d69ede2cbdf2a2ba8c77613367fca3d2cee779697fb25b5d8cf0439e1e845dbf1f SHA512 2ce768d5aae91f32da90c62900f556c647eb9806c810a817b6c45c5356e71f504b5a646bf75f553c3a9bfd3f94c4317df4948bae863ef7525b4a013b63618cd8

View File

@ -0,0 +1,30 @@
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{6,7,8,9} pypy3 )
inherit distutils-r1
DESCRIPTION="Python 2/3 unicode CSV compatibility layer"
HOMEPAGE="
https://pypi.org/project/csv23/
https://github.com/xflr6/csv23/"
SRC_URI="https://github.com/xflr6/csv23/archive/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ppc ppc64 ~riscv sparc x86 ~x64-macos"
BDEPEND="
test? (
dev-python/mock[${PYTHON_USEDEP}]
>=dev-python/pytest-4.6[${PYTHON_USEDEP}]
dev-python/pytest-mock[${PYTHON_USEDEP}] )"
distutils_enable_tests pytest
src_prepare() {
sed -i -e '/--cov/d' setup.cfg || die
distutils-r1_src_prepare
}

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>python@gentoo.org</email>
</maintainer>
<stabilize-allarches/>
</pkgmetadata>

View File

@ -1,10 +1,8 @@
AUX pip-10.0.1-disable-system-install.patch 769 BLAKE2B 9e722c95f01a184bbc48df6979cde15d748311e5ee5d83e5d18659cffd7520145bb24af891ba0f760dcec4c17b17d31adf211f1a4f938598d1fec44be56e6891 SHA512 6b0d49d398940f2614b2a892be2169a6c2c2d26d7d700271df3819c71c284646cceac9dce4e907662690e17bc0ca372b6251e02f520bf3e60994b26725403029
AUX pip-10.0.1-disable-version-check.patch 850 BLAKE2B 4ec0e8e0b172c51cdfa2df6ee934df8e25a03885ef7976c2f7cc844728e0359a1d5081296680576ea5780a15b639b3809063e663374ee11e252cd95bd9e876ae SHA512 b489eaf4fe17042807dd92ce77b016fcd032dd79bd5c766bdf9be38d2958e32400bdb5950ff2c400abac42d2a0a17803f5a2cfdc1161906c95c1d34a8bc83f8a
AUX pip-6.0.2-disable-version-check.patch 465 BLAKE2B e3ae94267a8d0caf425d22968f6e640063eaca0d2c475d130d1d2f7281d6ef541c0c36c3871c67fd4947f54a4ca18cc9a9c0fa347a3960727483b3a3bcd46ed9 SHA512 fd3413fea4649aa6a34ff7a23e7442267dc07307aeb25398e4620d108ab144703db7431e2a158612d9ee67e448d1d66db7e8103364aa6635844672bea16c7d28
AUX pip-7.1.2-unbundle.patch 1496 BLAKE2B f0bb71125270bbcfe1fe544b81130951c6ccdb97f676b3be5c7831efdedae5edbc47669836565b269af287910cd23cbc193037b39ac09dcaff5dceee542c32e7 SHA512 c0daf49d9a596a188fd54751b8ee7333f1c3187657b677a6f61ab9820483b388c3475b5fecb887115aaa34208070a15b56a8eb5e0a4639c3732840cf17a6f16a
AUX pip-8.0.0-unbundle.patch 1985 BLAKE2B dca355b40941ef5f805a4b247d75dc9d2ad560c7fd9752be2ca1d428522e83a4c318d3d361d2960fce79051df2ea9180a48c23e4af3048fe31ac535cd0cb8db9 SHA512 3b5f96160623eb2fad9c5978fc6512b21d48d5b91cb09c9d43deaee6de3c843af137a5df11c83b0d8395625482162d8cf40748b072692b305d6ab1220f3fb0c6
AUX pip-9.0.1-disable-version-check.patch 1031 BLAKE2B 148e528aab19de021f193ac56d758c803e0875b618ee32e948eb103eb6b05eb56e2ecf5ed4dbe39893f5c44ddee17122fdd686f433f5ce89044b2c02291e0ba1 SHA512 8b5764d3ecdbfc871bdf051b41d9610d5028bc3b95a4bf990db46325d10e5d559449ec97ab052686148d6ab6abfa630fb38101c726b6648d19fa94ac593b0a28
AUX pip-disable-system-install.patch 1070 BLAKE2B 85bfd82888a169cf771467f4f811b9859fddc1cfd134ac21be42b9fd93d84118354fa23a2f4b0ec9c67024f571ba7035665302671420221b52f3fc89f24b1af3 SHA512 bb0a9a32b2eac0a12276c3f0527534226c03868300f54945d20eec16902ad51cbfdace9d79b0caa304bc641323194031a5ca9e5e784366a44527441bd0f3c231
DIST pip-19.0.2.tar.gz 1324514 BLAKE2B dc9771706d3cfaea8a0ff562606b2a901836531e305ac5f0efdca983f715301ca3c9e19adb8d8a144006a3f703875a8ffb660a9a015b0749170f4b6564d0df8a SHA512 c6e13da3a57462371d32982c80575c5181592f5c6a8e70d60ec879e689442f4ad468e7aef97eb58c9da50a5a770385aa35e701eefd713a8e9fafeb12e11d956b
EBUILD pip-19.0.2.ebuild 1320 BLAKE2B 08e066081cefda78459fa657314c4906ea3dfb6a79c8aebfdbf314519de6c0a2cc213eb7eb252361addd1e3a2952390bcb6ea81f0f688f87aa606f66998df689 SHA512 4f3ce05fc72f6a120317e7f936b6d3acd7016efb587c564ad33d9dca24c61009623d052d570b5b8605f404e3355339bf1f250d3140020f4659641da81cbe703e
AUX pip-19.3-disable-version-check.patch 872 BLAKE2B b0398674f56b78a066c4308f0a8ee0272c5c4c3cb569e6c300ac62fc9fbe8ec2a1bfe257047c15ddcf9cc44c47b7f8b9ab99e17b722bd6ae4cf9dc2a168e01d6 SHA512 1ece773f66556e4380eabf76490430e8fbec23f7cfad27dac02c7e49f7136b632515ef04843e89dfae42c095dbf5280d64e61da1544801c998f802aa59be8e22
AUX pip-20.0.2-disable-system-install.patch 1298 BLAKE2B a384ee2114e59b8bc719fc14270cf6efbe8914854c404395beb1126db3278683b940e8fcfee83423d78e2aed6521e0bc57566ab0f5618f473262bbd9b7b0bffa SHA512 d2772105d4f4f880606e1e8ab3381af6768a96604a5fdcaa155dd42f8eea731c3a1b733b027d3e591d81f962ba14758b19da4a2c6c12946cd9a9d77c51ca4e78
AUX pip-20.2-no-coverage.patch 6154 BLAKE2B 743dcacd3107d9c6447197dd01bc85b1b16db5b1da3bf5f84e73801e645848a98854f350d958056eb17aa6b87f8bb2557a27e3bd78582958c3b37cb6ce61d7ce SHA512 67ea11c56b6a7b02faae28c9d941015ca2ba9c125dfcaf01eeaba7717cfb22f23fb84c28f993202f7b648ee64741baaf7545e9951be840d378e39d3af0a60fd0
DIST pip-20.2.4.tar.gz 8723163 BLAKE2B 4b892950b6752b61af2f6a9d2c0a6f5db124cb7605d6cb9d4787bdbd88911cc6013474dd299f6eb5b1af4a8fa0ab6d3c5253513af182045a50cb463ced8382ea SHA512 649fdc6baa1ebe741717bd1e5ed8f2450d79f8bc0d06f2804c27488be9018f6fa6cc2eccc3ec2801442073f59ac0b8c377612c25116126aa919aa95050f4214f
DIST setuptools-44.0.0-py2.py3-none-any.whl 583230 BLAKE2B 823e6792471660f247e30a938aa869d345a63db7294e5f9b4bd88f15a7694779011d29740fe317149620985f705fc6e18cbb07a18e5680cc11d7c229ffbc74f6 SHA512 7006fd303181afbeeec0e30cafb9fd1e4d3c6f55cfdd6343fedbc32b17dbb96b3d96ae37f4db27bfb168738727474cf425904ec280ff1d2b789fc48077a8fa84
DIST wheel-0.34.2-py2.py3-none-any.whl 26502 BLAKE2B 3a1bd4571c582245b60ff33c9bf74ff8a2ebafb26e56fc7b9bd215058d059b6bd13bbe21ce46002af257813a54126f27e19253f211e21c4548c7cf84cd15caf7 SHA512 4f1a44f4691ed8baad777d7874f7f4da96a5019eb485fd3a9eed9259aa2a9d5acccc6dc63a72128664347c64ee039a6076c6ca9c3b75a1f94457967864e522ed
EBUILD pip-20.2.4.ebuild 4163 BLAKE2B cc26eb182a2e0c9c65946a251f9b2933b6a4622482bb1e434a278e1d103c7be044c23de588f5f79f487160672188b76dc580d1b5881d09301aef80d12873ad3e SHA512 403c5f8cf7375eac81ee208b3d5ded807a0c925a5e9bf95f54d17d3444e830e40687bf652657e58700bd71fd571a64298f5f321b2d69000ec75335d6eeac4c76
MISC metadata.xml 366 BLAKE2B 6cfb3fe9bd6fa72a5bc5aafb74d7f79eaa1fdf273cf45be4fb7989fd917ea8b1ad60a855770cc51944611e7590abeec450ed02c7c9ae8d850084c2b4f7c0d009 SHA512 43ccb12f2797cb70b59ff495d149c32c813e5145c65521eda9a86f675eac7756eefadeb9f4ca977e8e8c7019bae144b445240e6d7128da771eaf6d19559336f6

View File

@ -1,18 +0,0 @@
install: Raise an error to avoid breaking python-exec
Running pip without --target, --root, or --user will result in packages
being installed systemwide. This has a tendency to break python-exec if
setuptools gets installed or upgraded.
--- pip-10.0.1/src/pip/_internal/commands/install.py
+++ pip-10.0.1/src/pip/_internal/commands/install.py
@@ -202,6 +202,9 @@
if options.upgrade:
upgrade_strategy = options.upgrade_strategy
+ if not options.use_user_site and not options.target_dir and not options.root_path:
+ raise CommandError("(Gentoo) Please run pip with the --user option to avoid breaking python-exec")
+
if options.build_dir:
options.build_dir = os.path.abspath(options.build_dir)

View File

@ -1,19 +0,0 @@
Don't check for new versions of pip.
--- pip-10.0.1/src/pip/_internal/basecommand.py
+++ pip-10.0.1/src/pip/_internal/basecommand.py
@@ -255,14 +255,6 @@
return UNKNOWN_ERROR
finally:
- # Check if we're using the latest version of pip available
- if (not options.disable_pip_version_check and not
- getattr(options, "no_index", False)):
- with self._build_session(
- options,
- retries=0,
- timeout=min(5, options.timeout)) as session:
- pip_version_check(session, options)
# Avoid leaking loggers
for handler in set(logging.root.handlers) - original_root_handlers:
# this method benefit from the Logger class internal lock

View File

@ -0,0 +1,24 @@
diff --git a/src/pip/_internal/cli/req_command.py b/src/pip/_internal/cli/req_command.py
index 203e86a4..a2183f10 100644
--- a/src/pip/_internal/cli/req_command.py
+++ b/src/pip/_internal/cli/req_command.py
@@ -129,17 +129,8 @@ class IndexGroupCommand(Command, SessionCommandMixin):
# Make sure the index_group options are present.
assert hasattr(options, 'no_index')
- if options.disable_pip_version_check or options.no_index:
- return
-
- # Otherwise, check if we're using the latest version of pip available.
- session = self._build_session(
- options,
- retries=0,
- timeout=min(5, options.timeout)
- )
- with session:
- pip_self_version_check(session, options)
+ # Disabled on Gentoo
+ return
class RequirementCommand(IndexGroupCommand):

View File

@ -0,0 +1,29 @@
From 3aee04cbb93c0e479b040e682b2aef676629c9a2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Sat, 1 Feb 2020 09:14:46 +0100
Subject: [PATCH] install: Raise an error to avoid breaking python-exec
Running pip without --target, --prefix, --root, or --user will result
in packages being installed systemwide. This has a tendency to break
python-exec if setuptools gets installed or upgraded.
---
src/pip/_internal/commands/install.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/pip/_internal/commands/install.py b/src/pip/_internal/commands/install.py
index 8c2c32fd..41bac878 100644
--- a/src/pip/_internal/commands/install.py
+++ b/src/pip/_internal/commands/install.py
@@ -238,6 +238,9 @@ class InstallCommand(RequirementCommand):
if options.upgrade:
upgrade_strategy = options.upgrade_strategy
+ if not options.use_user_site and not options.target_dir and not options.root_path and not options.prefix_path and not os.getenv('GENTOO_PIP_TESTING'):
+ raise CommandError("(Gentoo) Please run pip with the --user option to avoid breaking python-exec")
+
cmdoptions.check_dist_restriction(options, check_target=True)
install_options = options.install_options or []
--
2.28.0

View File

@ -0,0 +1,163 @@
From 43389903a55a5432ca8556f42fb2252c91c7ca45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Wed, 29 Jul 2020 07:42:25 +0200
Subject: [PATCH] Revert "Add basic test coverage configuration"
This is just PITA since coverage uses native C extensions.
---
.coveragerc | 4 +++
setup.cfg | 38 ----------------------
tests/conftest.py | 16 +--------
tools/requirements/tests-common_wheels.txt | 2 --
tox.ini | 16 ++-------
5 files changed, 7 insertions(+), 69 deletions(-)
create mode 100644 .coveragerc
diff --git a/.coveragerc b/.coveragerc
new file mode 100644
index 00000000..5f833c94
--- /dev/null
+++ b/.coveragerc
@@ -0,0 +1,4 @@
+[run]
+branch = True
+omit =
+ src/pip/_vendor/*
diff --git a/setup.cfg b/setup.cfg
index 45fd58a3..e40596e9 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -67,44 +67,6 @@ markers =
yaml: yaml based tests
fails_on_new_resolver: Does not yet work on the new resolver
-[coverage:run]
-branch = True
-# Do not gather coverage for vendored libraries.
-omit = */_vendor/*
-# Centralized absolute file prefix for coverage files.
-data_file = ${COVERAGE_OUTPUT_DIR}/.coverage
-# By default, each covered process will try to truncate and then write to
-# `data_file`, but with `parallel`, they will write to separate files suffixed
-# with hostname, pid, and a timestamp.
-parallel = True
-# If not set, then at the termination of each worker (when using pytest-xdist),
-# the following is traced: "Coverage.py warning: Module pip was previously
-# imported, but not measured (module-not-measured)"
-disable_warnings = module-not-measured
-
-[coverage:paths]
-# We intentionally use "source0" here because pytest-cov unconditionally sets
-# "source" after loading the config.
-source0 =
- # The primary source code path which other paths will be combined into.
- src/pip/
- # Unit test source directory e.g.
- # `.tox/coverage-py3/lib/pythonX.Y/site-packages/pip/...`
- */site-packages/pip/
- # Functional test virtual environment directories, which look like
- # `tmpdir/pip0/pip/src/pip/...`
- */pip/src/pip/
-
-[coverage:report]
-exclude_lines =
- # We must re-state the default because the `exclude_lines` option overrides
- # it.
- pragma: no cover
- # This excludes typing-specific code, which will be validated by mypy anyway.
- if MYPY_CHECK_RUNNING
- # Can be set to exclude e.g. `if PY2:` on Python 3
- ${PIP_CI_COVERAGE_EXCLUDES}
-
[bdist_wheel]
universal = 1
diff --git a/tests/conftest.py b/tests/conftest.py
index 2aab5020..0db6d967 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -294,13 +294,6 @@ def wheel_install(tmpdir_factory, common_wheels):
'wheel')
-@pytest.fixture(scope='session')
-def coverage_install(tmpdir_factory, common_wheels):
- return _common_wheel_editable_install(tmpdir_factory,
- common_wheels,
- 'coverage')
-
-
def install_egg_link(venv, project_name, egg_info_dir):
with open(venv.site / 'easy-install.pth', 'a') as fp:
fp.write(str(egg_info_dir.resolve()) + '\n')
@@ -310,7 +303,7 @@ def install_egg_link(venv, project_name, egg_info_dir):
@pytest.fixture(scope='session')
def virtualenv_template(request, tmpdir_factory, pip_src,
- setuptools_install, coverage_install):
+ setuptools_install, common_wheels):
if six.PY3 and request.config.getoption('--use-venv'):
venv_type = 'venv'
@@ -334,13 +327,6 @@ def virtualenv_template(request, tmpdir_factory, pip_src,
subprocess.check_call([venv.bin / 'python', 'setup.py', '-q', 'develop'],
cwd=pip_editable)
- # Install coverage and pth file for executing it in any spawned processes
- # in this virtual environment.
- install_egg_link(venv, 'coverage', coverage_install)
- # zz prefix ensures the file is after easy-install.pth.
- with open(venv.site / 'zz-coverage-helper.pth', 'a') as f:
- f.write('import coverage; coverage.process_startup()')
-
# Drop (non-relocatable) launchers.
for exe in os.listdir(venv.bin):
if not (
diff --git a/tools/requirements/tests-common_wheels.txt b/tools/requirements/tests-common_wheels.txt
index f0edf0b0..6703d606 100644
--- a/tools/requirements/tests-common_wheels.txt
+++ b/tools/requirements/tests-common_wheels.txt
@@ -7,5 +7,3 @@
setuptools >= 40.8.0
wheel
-# As required by pytest-cov.
-coverage >= 4.4
diff --git a/tox.ini b/tox.ini
index 82e9abc6..7a19ca61 100644
--- a/tox.ini
+++ b/tox.ini
@@ -8,7 +8,6 @@ envlist =
# Wrapper for calls to pip that make sure the version being used is the
# original virtualenv (stable) version, and not the code being tested.
pip = python {toxinidir}/tools/tox_pip.py
-mkdirp = python -c 'import os, sys; os.path.exists(sys.argv[1]) or os.mkdir(sys.argv[1])'
[testenv]
# Remove USERNAME once we drop PY2.
@@ -31,20 +30,9 @@ commands = pytest --timeout 300 []
install_command = {[helpers]pip} install {opts} {packages}
list_dependencies_command = {[helpers]pip} freeze --all
-[testenv:coverage]
+[testenv:coverage-py3]
basepython = python3
-commands =
- {[helpers]mkdirp} {toxinidir}/.coverage-output
- pytest --timeout 300 --cov=pip --cov-config={toxinidir}/setup.cfg []
-
-setenv =
- # Used in coverage configuration in setup.cfg.
- COVERAGE_OUTPUT_DIR = {toxinidir}/.coverage-output
- # Ensure coverage is enabled in child processes in virtual environments
- # since they won't already have been enabled by pytest-cov.
- COVERAGE_PROCESS_START = {toxinidir}/setup.cfg
- # Used in coverage configuration in setup.cfg.
- PIP_CI_COVERAGE_EXCLUDES = if PY2
+commands = pytest --timeout 300 --cov=pip --cov-report=term-missing --cov-report=xml --cov-report=html tests/unit {posargs}
[testenv:docs]
# Don't skip install here since pip_sphinxext uses pip's internals.
--
2.28.0

View File

@ -1,14 +0,0 @@
Don't check PyPI for new versions of pip by default, updates will occur when
new releases are added to the tree.
--- pip-6.0.2/pip/cmdoptions.py
+++ pip-6.0.2/pip/cmdoptions.py
@@ -404,7 +404,7 @@
"--disable-pip-version-check",
dest="disable_pip_version_check",
action="store_true",
- default=False,
+ default=True,
help="Don't periodically check PyPI to determine whether a new version "
"of pip is available for download.")

View File

@ -1,34 +0,0 @@
pip/_vendor/__init__.py | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/pip/_vendor/__init__.py b/pip/_vendor/__init__.py
index ef8851d..349d022 100644
--- a/pip/_vendor/__init__.py
+++ b/pip/_vendor/__init__.py
@@ -14,7 +14,7 @@ import sys
# Downstream redistributors which have debundled our dependencies should also
# patch this value to be true. This will trigger the additional patching
# to cause things like "six" to be available as pip.
-DEBUNDLED = False
+DEBUNDLED = True
# By default, look in this directory for a bunch of .whl files which we will
# add to the beginning of sys.path before attempting to import anything. This
@@ -29,13 +29,10 @@ WHEEL_DIR = os.path.abspath(os.path.dirname(__file__))
def vendored(modulename):
vendored_name = "{0}.{1}".format(__name__, modulename)
- try:
- __import__(vendored_name, globals(), locals(), level=0)
- except ImportError:
- __import__(modulename, globals(), locals(), level=0)
- sys.modules[vendored_name] = sys.modules[modulename]
- base, head = vendored_name.rsplit(".", 1)
- setattr(sys.modules[base], head, sys.modules[modulename])
+ __import__(modulename, globals(), locals(), level=0)
+ sys.modules[vendored_name] = sys.modules[modulename]
+ base, head = vendored_name.rsplit(".", 1)
+ setattr(sys.modules[base], head, sys.modules[modulename])
# If we're operating in a debundled setup, then we want to go ahead and trigger

View File

@ -1,43 +0,0 @@
pip/_vendor/__init__.py | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/pip/_vendor/__init__.py b/pip/_vendor/__init__.py
index b09a7c3..b9fe6ee 100644
--- a/pip/_vendor/__init__.py
+++ b/pip/_vendor/__init__.py
@@ -14,7 +14,7 @@ import sys
# Downstream redistributors which have debundled our dependencies should also
# patch this value to be true. This will trigger the additional patching
# to cause things like "six" to be available as pip.
-DEBUNDLED = False
+DEBUNDLED = True
# By default, look in this directory for a bunch of .whl files which we will
# add to the beginning of sys.path before attempting to import anything. This
@@ -29,13 +29,10 @@ WHEEL_DIR = os.path.abspath(os.path.dirname(__file__))
def vendored(modulename):
vendored_name = "{0}.{1}".format(__name__, modulename)
- try:
- __import__(vendored_name, globals(), locals(), level=0)
- except ImportError:
- __import__(modulename, globals(), locals(), level=0)
- sys.modules[vendored_name] = sys.modules[modulename]
- base, head = vendored_name.rsplit(".", 1)
- setattr(sys.modules[base], head, sys.modules[modulename])
+ __import__(modulename, globals(), locals(), level=0)
+ sys.modules[vendored_name] = sys.modules[modulename]
+ base, head = vendored_name.rsplit(".", 1)
+ setattr(sys.modules[base], head, sys.modules[modulename])
# If we're operating in a debundled setup, then we want to go ahead and trigger
@@ -85,8 +82,6 @@ if DEBUNDLED:
vendored("requests.packages.urllib3.packages.ordered_dict")
vendored("requests.packages.urllib3.packages.six")
vendored("requests.packages.urllib3.packages.ssl_match_hostname")
- vendored("requests.packages.urllib3.packages.ssl_match_hostname."
- "_implementation")
vendored("requests.packages.urllib3.poolmanager")
vendored("requests.packages.urllib3.request")
vendored("requests.packages.urllib3.response")

View File

@ -1,32 +0,0 @@
From 890a1c26018752f2c57c7800968e4b8d1e0987f9 Mon Sep 17 00:00:00 2001
From: Sebastian Pipping <sebastian@pipping.org>
Date: Sun, 20 Nov 2016 19:52:40 +0100
Subject: [PATCH] Stop checking for new versions
---
pip/basecommand.py | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/pip/basecommand.py b/pip/basecommand.py
index 54c6706..3cffe86 100644
--- a/pip/basecommand.py
+++ b/pip/basecommand.py
@@ -241,15 +241,6 @@ class Command(object):
logger.critical('Exception:', exc_info=True)
return UNKNOWN_ERROR
- finally:
- # Check if we're using the latest version of pip available
- if (not options.disable_pip_version_check and not
- getattr(options, "no_index", False)):
- with self._build_session(
- options,
- retries=0,
- timeout=min(5, options.timeout)) as session:
- pip_version_check(session)
return SUCCESS
--
2.10.2

View File

@ -1,29 +0,0 @@
From 847553da616edabede18c69ba640a32b719b45a8 Mon Sep 17 00:00:00 2001
From: Mike Gilbert <floppym@gentoo.org>
Date: Tue, 27 Oct 2015 12:20:44 -0400
Subject: [PATCH] install: Raise an error to avoid breaking python-exec
Running pip without --target, --root, or --user will result in packages
being installed systemwide. This has a tendency to break python-exec if
setuptools gets installed or upgraded.
---
pip/commands/install.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/pip/commands/install.py b/pip/commands/install.py
index 46cd9f2..36b72f2 100644
--- a/pip/commands/install.py
+++ b/pip/commands/install.py
@@ -204,6 +204,9 @@ class InstallCommand(RequirementCommand):
)
options.ignore_installed = True
+ if not options.use_user_site and not options.target_dir and not options.root_path:
+ raise CommandError("(Gentoo) Please run pip with the --user option to avoid breaking python-exec")
+
if options.build_dir:
options.build_dir = os.path.abspath(options.build_dir)
--
2.6.2

View File

@ -1,48 +0,0 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=6
PYTHON_COMPAT=( python2_7 python3_{4..10} pypy{,3} )
PYTHON_REQ_USE="ssl(+),threads(+)"
inherit eutils bash-completion-r1 distutils-r1
DESCRIPTION="Installs python packages -- replacement for easy_install"
HOMEPAGE="https://pip.pypa.io/ https://pypi.org/project/pip/ https://github.com/pypa/pip/"
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="MIT"
KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
SLOT="0"
IUSE="-vanilla"
# required test data isn't bundled with the tarball
RESTRICT="test"
DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
RDEPEND="${DEPEND}"
#python_prepare_all() {
# local PATCHES=(
# "${FILESDIR}/${PN}-10.0.1-disable-version-check.patch"
# )
# if ! use vanilla; then
# PATCHES+=( "${FILESDIR}/pip-10.0.1-disable-system-install.patch" )
# fi
# distutils-r1_python_prepare_all
#}
python_install_all() {
local DOCS=( AUTHORS.txt docs/man/commands/*.rst )
distutils-r1_python_install_all
COMPLETION="${T}"/completion.tmp
"${PYTHON}" -m pip completion --bash > "${COMPLETION}" || die
newbashcomp "${COMPLETION}" ${PN}
"${PYTHON}" -m pip completion --zsh > "${COMPLETION}" || die
insinto /usr/share/zsh/site-functions
newins "${COMPLETION}" _pip
}

View File

@ -0,0 +1,144 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DISTUTILS_USE_SETUPTOOLS=rdepend
PYTHON_COMPAT=( python3_{6,7,8,9} pypy3 )
PYTHON_REQ_USE="ssl(+),threads(+)"
inherit bash-completion-r1 distutils-r1 multiprocessing
SETUPTOOLS_PV="44.0.0"
WHEEL_PV="0.34.2"
DESCRIPTION="Installs python packages -- replacement for easy_install"
HOMEPAGE="https://pip.pypa.io/ https://pypi.org/project/pip/ https://github.com/pypa/pip/"
SRC_URI="
https://github.com/pypa/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz
test? (
https://files.pythonhosted.org/packages/py2.py3/s/setuptools/setuptools-${SETUPTOOLS_PV}-py2.py3-none-any.whl
https://files.pythonhosted.org/packages/py2.py3/w/wheel/wheel-${WHEEL_PV}-py2.py3-none-any.whl
)
"
# PyPI archive does not have tests, so we need to download from GitHub.
# setuptools & wheel .whl files are required for testing, exact version is not very important.
LICENSE="MIT"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ppc ppc64 ~riscv sparc x86 ~x64-macos"
SLOT="0"
IUSE="test -vanilla"
# disable-system-install patch breaks tests
RESTRICT="!test? ( test )"
RDEPEND="
>=dev-python/setuptools-39.2.0[${PYTHON_USEDEP}]
"
DEPEND="
${RDEPEND}
test? (
dev-python/cryptography[${PYTHON_USEDEP}]
dev-python/csv23[${PYTHON_USEDEP}]
dev-python/freezegun[${PYTHON_USEDEP}]
dev-python/mock[${PYTHON_USEDEP}]
dev-python/pretend[${PYTHON_USEDEP}]
dev-python/pytest[${PYTHON_USEDEP}]
dev-python/pyyaml[${PYTHON_USEDEP}]
dev-python/scripttest[${PYTHON_USEDEP}]
<dev-python/virtualenv-20[${PYTHON_USEDEP}]
dev-python/werkzeug[${PYTHON_USEDEP}]
dev-python/wheel[${PYTHON_USEDEP}]
)
"
python_prepare_all() {
local PATCHES=(
"${FILESDIR}/${PN}-19.3-disable-version-check.patch"
"${FILESDIR}/${PN}-20.2-no-coverage.patch"
)
if ! use vanilla; then
PATCHES+=( "${FILESDIR}/pip-20.0.2-disable-system-install.patch" )
fi
# TODO
rm tests/functional/test_new_resolver_user.py || die
distutils-r1_python_prepare_all
if use test; then
mkdir tests/data/common_wheels/ || die
cp "${DISTDIR}"/setuptools-${SETUPTOOLS_PV}-py2.py3-none-any.whl \
tests/data/common_wheels/ || die
cp "${DISTDIR}"/wheel-${WHEEL_PV}-py2.py3-none-any.whl \
tests/data/common_wheels/ || die
fi
}
python_test() {
if [[ ${EPYTHON} == pypy* ]]; then
ewarn "Skipping tests on ${EPYTHON} since they are very broken"
return 0
fi
local -a exclude_tests
# these will be built in to an expression passed to pytest to exclude
exclude_tests=(
git
svn
bazaar
mercurial
version_check
uninstall_non_local_distutils
pep518_uses_build_env
install_package_with_root
install_editable_with_prefix
install_user_wheel
install_from_current_directory_into_usersite
uninstall_editable_from_usersite
uninstall_from_usersite_with_dist_in_global_site
build_env_isolation
user_config_accepted
)
distutils_install_for_testing
# generate the expression to exclude failing tests
local exclude_expr
printf -v exclude_expr "or %s " "${exclude_tests[@]}" || die
exclude_expr="not (${exclude_expr#or })" || die
local -x GENTOO_PIP_TESTING=1 \
PATH="${TEST_DIR}/scripts:${PATH}" \
PYTHONPATH="${TEST_DIR}/lib:${BUILD_DIR}/lib"
pytest -vv \
-k "${exclude_expr}" \
-m "not network" \
|| die "Tests fail with ${EPYTHON}"
}
python_install_all() {
# Prevent dbus auto-launch
# https://bugs.gentoo.org/692178
export DBUS_SESSION_BUS_ADDRESS="disabled:"
local DOCS=( AUTHORS.txt docs/html/**/*.rst )
distutils-r1_python_install_all
COMPLETION="${T}"/completion.tmp
# 'pip completion' command embeds full $0 into completion script, which confuses
# 'complete' and causes QA warning when running as "${PYTHON} -m pip".
# This trick sets correct $0 while still calling just installed pip.
local pipcmd='import sys; sys.argv[0] = "pip"; import pip.__main__; sys.exit(pip.__main__._main())'
${PYTHON} -c "${pipcmd}" completion --bash > "${COMPLETION}" || die
newbashcomp "${COMPLETION}" ${PN}
${PYTHON} -c "${pipcmd}" completion --zsh > "${COMPLETION}" || die
insinto /usr/share/zsh/site-functions
newins "${COMPLETION}" _pip
}

View File

@ -0,0 +1,6 @@
AUX virtualenv-16.7.7-tests-internet.patch 2103 BLAKE2B 56ac246fb6675c273e288b230c2502691f36f49502427c234c8b2da1a2d187791aced234fd70f7be98b98ff158f570747e670cc0ededdab1d5ed499d7b8588be SHA512 17f2a38d32f17c7f8bfe138939b6953dcbf13404371b8377a47759118ad37aaf73f45f670d46d5956fd5948754fb9c60248d9222920c6fd7e7c2e7c7661c9a18
AUX virtualenv-16.7.7-tests.patch 2092 BLAKE2B fe9eef6372958265ff4b0b919c424a16313934973f29f15f726541cf3a32a9e49d163a40ff0b2d08d17f6521cc7d651fa092d66eb196261706d8d11a9e590e31 SHA512 f4c8a46d5d064672bd154beb0c1fd4a368e9879046931a67fc053e314b5f8510e825cbb3ad3d7e149a19745149a47d4e694b0f6b9f771dcf55e35bcc0871eb59
AUX virtualenv-16.7.8-tests-pypy.patch 3133 BLAKE2B 37d544c96a1546aa0df4e820014ee6091d4b4ca5155da86280aaebfb1a8d26ce9c6a055e47b11129509d7d00abcee0e3a915bd6ff4665b289cfce399f2dfd3b6 SHA512 f99cd435fe9fa98465addc6b22310e5d708c87edef224cdf540556a2ab1a70bebf06e828c02148bb597d163c31b2816845c0c8126727d1d25b38ffcb91c2251e
DIST virtualenv-16.7.10.tar.gz 5116776 BLAKE2B 42f0a4b4330850b504f8febd991ef6ecdcbb0821efdd94ca324a8cc34a68a760a8a98de97f0cb2384d8e6cbb0ce8f261995c6433886444e29b75ba0ce09ca12c SHA512 f06d7c354ce1910f04dbcbe1a77e60392653bbe4f638bafbe9284454db2c0e5d63cf9159201d0916fc01aaba91d45fb733b63096c38517fcd83fd00ed8b26d28
EBUILD virtualenv-16.7.10-r1.ebuild 1959 BLAKE2B 90c31ff96e46d24169602a0f034bf02f0d5fcc4132b1ef12a06226580ed2737398c889a0f752cd14c99f310a72642664aacc27024a65840a8541e580ef601deb SHA512 ab7f3e64008dc6320e2d0a280087b7ae26f934eaa7d571e2f8e01c4e21db7356476fd002918b6217bb52827f22bcd6f8e527e53c1011824d8d32be99c452bec8
MISC metadata.xml 405 BLAKE2B 65152299182652973b0a6387a690d6e04066d9ac05167d6f0ef7d27036813a793503d16e65514093869ed596227123f493dfdba021a094b0021b6c5b98cc0cf7 SHA512 13db4a863e2a82bae1d177967fc45821a59fddc9afc5c9bbbc0abf64fd2c57cb1f7053443d4721c3c91b6562c1b3844560fccc5853f14bce387aabc620167eb6

View File

@ -0,0 +1,50 @@
diff --git a/tests/test_from_source.py b/tests/test_from_source.py
index 39d7c05..76834f7 100644
--- a/tests/test_from_source.py
+++ b/tests/test_from_source.py
@@ -40,6 +40,7 @@ def test_use_from_source_sdist(sdist, tmp_path, clean_python, monkeypatch, call_
)
+@pytest.mark.skip(reason="needs internet access")
def test_use_from_wheel(tmp_path, extracted_wheel, clean_python, monkeypatch, call_subprocess):
"""test that we can create a virtual environment by feeding to a clean python the wheels content"""
virtualenv_file = extracted_wheel / "virtualenv.py"
diff --git a/tests/test_source_content.py b/tests/test_source_content.py
index 8eae6bc..06763ee 100644
--- a/tests/test_source_content.py
+++ b/tests/test_source_content.py
@@ -41,6 +41,7 @@ def test_sdist_contains(sdist):
assert not extra, " | ".join(extra)
+@pytest.mark.skip(reason="needs internet access")
def test_wheel_contains(extracted_wheel):
content = set(extracted_wheel.iterdir())
diff --git a/tests/test_zipapp.py b/tests/test_zipapp.py
index d084af6..93d29e1 100644
--- a/tests/test_zipapp.py
+++ b/tests/test_zipapp.py
@@ -51,11 +51,13 @@ def call_wheel(tmp_path_factory, call_subprocess):
return wheel_make_env
+@pytest.mark.skip(reason="needs internet access")
@pytest.mark.skipif(six.PY2, reason="seems to be broken on python2")
def test_zipapp_basic_invocation(call_zipapp, tmp_path):
_test_basic_invocation(call_zipapp, tmp_path)
+@pytest.mark.skip(reason="needs internet access")
@pytest.mark.skipif(six.PY2, reason="seems to be broken on python2")
def test_wheel_basic_invocation(call_wheel, tmp_path):
_test_basic_invocation(call_wheel, tmp_path)
@@ -97,6 +99,7 @@ def test_zipapp_invocation_dash_p(call_zipapp, tmp_path):
_test_invocation_dash_p(call_zipapp, tmp_path)
+@pytest.mark.skip(reason="needs internet access")
@pytest.mark.skipif(six.PY2, reason="seems to be broken on python2")
@pytest.mark.skipif(sys.platform == "win32" and six.PY2, reason="no python 3 for windows on CI")
def test_wheel_invocation_dash_p(call_wheel, tmp_path):

View File

@ -0,0 +1,53 @@
diff --git a/tests/test_virtualenv.py b/tests/test_virtualenv.py
index 620c0cb..946233b 100644
--- a/tests/test_virtualenv.py
+++ b/tests/test_virtualenv.py
@@ -356,6 +356,7 @@ def test_install_python_bin():
shutil.rmtree(tmp_virtualenv)
+@pytest.mark.skip(reason="This test does not seem to be working, and I have no idea why")
@pytest.mark.skipif("platform.python_implementation() == 'PyPy'")
def test_always_copy_option():
"""Should be no symlinks in directory tree"""
diff --git a/tests/test_zipapp.py b/tests/test_zipapp.py
index 8ef8bd1..d084af6 100644
--- a/tests/test_zipapp.py
+++ b/tests/test_zipapp.py
@@ -51,10 +51,12 @@ def call_wheel(tmp_path_factory, call_subprocess):
return wheel_make_env
+@pytest.mark.skipif(six.PY2, reason="seems to be broken on python2")
def test_zipapp_basic_invocation(call_zipapp, tmp_path):
_test_basic_invocation(call_zipapp, tmp_path)
+@pytest.mark.skipif(six.PY2, reason="seems to be broken on python2")
def test_wheel_basic_invocation(call_wheel, tmp_path):
_test_basic_invocation(call_wheel, tmp_path)
@@ -95,6 +97,7 @@ def test_zipapp_invocation_dash_p(call_zipapp, tmp_path):
_test_invocation_dash_p(call_zipapp, tmp_path)
+@pytest.mark.skipif(six.PY2, reason="seems to be broken on python2")
@pytest.mark.skipif(sys.platform == "win32" and six.PY2, reason="no python 3 for windows on CI")
def test_wheel_invocation_dash_p(call_wheel, tmp_path):
_test_invocation_dash_p(call_wheel, tmp_path)
diff --git a/virtualenv.py b/virtualenv.py
index 0c47e4f..d4a1747 100755
--- a/virtualenv.py
+++ b/virtualenv.py
@@ -80,9 +80,9 @@ else:
DEFAULT_CONFIG_FILE = os.path.join(DEFAULT_STORAGE_DIR, "virtualenv.ini")
if IS_PYPY:
- EXPECTED_EXE = "pypy"
+ EXPECTED_EXE = "pypy{}".format('' if sys.hexversion < 0x3000000 else '3')
else:
- EXPECTED_EXE = "python"
+ EXPECTED_EXE = "python{}.{}".format(sys.version_info.major, sys.version_info.minor)
# Return a mapping of version -> Python executable
# Only provided for Windows, where the information in the registry is used

View File

@ -0,0 +1,64 @@
diff --git a/tests/test_virtualenv.py b/tests/test_virtualenv.py
index 620c0cb..3284cea 100644
--- a/tests/test_virtualenv.py
+++ b/tests/test_virtualenv.py
@@ -5,6 +5,7 @@ import optparse
import os
import shutil
import subprocess
+import platform
import sys
import tempfile
import textwrap
@@ -342,6 +343,11 @@ def test_install_python_bin():
if virtualenv.IS_WIN:
required_executables = ["python.exe", "pythonw.exe"]
+ elif platform.python_implementation() == 'PyPy':
+ if sys.version_info.major < 3:
+ required_executables = ["pypy"]
+ else:
+ required_executables = ["pypy3"]
else:
py_exe_no_version = "python"
py_exe_version_major = "python%s" % sys.version_info[0]
@@ -549,7 +555,7 @@ def check_pypy_pre_import():
assert module in sys.modules, "missing {!r} in sys.modules".format(module)
-@pytest.mark.skipif("platform.python_implementation() != 'PyPy'")
+@pytest.mark.skipif("platform.python_implementation() == 'PyPy'")
def test_pypy_pre_import(tmp_path):
"""For PyPy, some built-in modules should be pre-imported because
some programs expect them to be in sys.modules on startup.
@@ -622,7 +628,7 @@ def test_create_environment_from_venv(tmpdir):
builder.setup_python(ctx)
builder.setup_scripts(ctx)
subprocess.check_call([ctx.env_exe, virtualenv.__file__, "--no-setuptools", "--no-pip", "--no-wheel", ve_venv_dir])
- ve_exe = os.path.join(bin_dir, "python")
+ ve_exe = os.path.join(bin_dir, os.getenv('EPYTHON'))
out = subprocess.check_output([ve_exe, "-c", "import sys; print(sys.real_prefix)"], universal_newlines=True)
# Test against real_prefix if present - we might be running the test from a virtualenv (e.g. tox).
assert out.strip() == getattr(sys, "real_prefix", sys.prefix)
@@ -639,7 +645,7 @@ def test_create_environment_from_venv_no_pip(tmpdir):
builder.setup_python(ctx)
builder.setup_scripts(ctx)
subprocess.check_call([ctx.env_exe, virtualenv.__file__, "--no-pip", ve_venv_dir])
- ve_exe = os.path.join(bin_dir, "python")
+ ve_exe = os.path.join(bin_dir, os.getenv('EPYTHON'))
out = subprocess.check_output([ve_exe, "-c", "import sys; print(sys.real_prefix)"], universal_newlines=True)
# Test against real_prefix if present - we might be running the test from a virtualenv (e.g. tox).
assert out.strip() == getattr(sys, "real_prefix", sys.prefix)
@@ -657,10 +663,11 @@ def test_create_environment_with_old_pip(tmpdir):
virtualenv.create_environment(venvdir, search_dirs=[support_dir], no_wheel=True)
+@pytest.mark.skipif("platform.python_implementation() == 'PyPy'")
def test_license_builtin(clean_python):
_, bin_dir, _ = clean_python
proc = subprocess.Popen(
- (os.path.join(bin_dir, "python"), "-c", "license()"), stdin=subprocess.PIPE, stdout=subprocess.PIPE
+ (os.path.join(bin_dir, os.getenv('EPYTHON')), "-c", "license()"), stdin=subprocess.PIPE, stdout=subprocess.PIPE
)
out_b, _ = proc.communicate(b"q\n")
out = out_b.decode()

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>python@gentoo.org</email>
<name>Python</name>
</maintainer>
<stabilize-allarches/>
<upstream>
<remote-id type="pypi">virtualenv</remote-id>
<remote-id type="github">pypa/virtualenv</remote-id>
</upstream>
</pkgmetadata>

View File

@ -0,0 +1,66 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{6,7,8,9} pypy3 )
DISTUTILS_USE_SETUPTOOLS=manual
inherit distutils-r1
DESCRIPTION="Virtual Python Environment builder"
HOMEPAGE="
https://virtualenv.pypa.io/en/stable/
https://pypi.org/project/virtualenv/
https://github.com/pypa/virtualenv/
"
SRC_URI="https://github.com/pypa/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="MIT"
#KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
SLOT="0"
IUSE="test"
RESTRICT="!test? ( test )"
RDEPEND=">=dev-python/setuptools-19.6.2[${PYTHON_USEDEP}]"
BDEPEND="${RDEPEND}
test? (
>=dev-python/pip-19.3.1-r1[${PYTHON_USEDEP}]
dev-python/mock[${PYTHON_USEDEP}]
dev-python/pypiserver[${PYTHON_USEDEP}]
dev-python/pytest-localserver[${PYTHON_USEDEP}]
dev-python/pytest-timeout[${PYTHON_USEDEP}]
dev-python/pytest[${PYTHON_USEDEP}]
dev-python/six[${PYTHON_USEDEP}]
dev-python/wheel[${PYTHON_USEDEP}]
)"
DOCS=( docs/index.rst docs/changes.rst )
PATCHES=(
"${FILESDIR}/virtualenv-16.7.7-tests.patch"
# disable tests that need internet access
"${FILESDIR}/virtualenv-16.7.7-tests-internet.patch"
# test fixes for pypy
"${FILESDIR}/virtualenv-16.7.8-tests-pypy.patch"
)
distutils_enable_sphinx docs \
dev-python/sphinx_rtd_theme \
dev-python/towncrier
python_test() {
cp "${S}"/LICENSE.txt "${BUILD_DIR}"/lib || \
die "Could not copy LICENSE.txt with ${EPYTHON}"
pytest -vv tests || die "Tests fail with ${EPYTHON}"
}
pkg_postinst() {
elog "Please note that while virtualenv package no longer supports"
elog "Python 2.7, you can still create py2.7 virtualenvs via:"
elog " $ virtualenv -p /usr/bin/python2.7 ..."
}