c8-stream-3.8
imports/c8-stream-3.8/python3x-pip-19.3.1-6.module+el8.7.0+15823+8950cfa7
commit
f1fef39079
@ -0,0 +1 @@
|
|||||||
|
SOURCES/pip-19.3.1.tar.gz
|
@ -0,0 +1 @@
|
|||||||
|
bb825314632e0528aa93a19ab18e87f4cc36e998 SOURCES/pip-19.3.1.tar.gz
|
@ -0,0 +1,42 @@
|
|||||||
|
From 6d2dcef3427b96c36ddfebf217f774a2c5ecad38 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lumir Balhar <lbalhar@redhat.com>
|
||||||
|
Date: Wed, 30 Jun 2021 09:27:07 +0200
|
||||||
|
Subject: [PATCH] CVE-2021-33503
|
||||||
|
|
||||||
|
---
|
||||||
|
src/pip/_vendor/urllib3/util/url.py | 8 +++++---
|
||||||
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/pip/_vendor/urllib3/util/url.py b/src/pip/_vendor/urllib3/util/url.py
|
||||||
|
index 5fe37a7..addaeb7 100644
|
||||||
|
--- a/src/pip/_vendor/urllib3/util/url.py
|
||||||
|
+++ b/src/pip/_vendor/urllib3/util/url.py
|
||||||
|
@@ -63,12 +63,12 @@ IPV6_ADDRZ_RE = re.compile("^" + IPV6_ADDRZ_PAT + "$")
|
||||||
|
BRACELESS_IPV6_ADDRZ_RE = re.compile("^" + IPV6_ADDRZ_PAT[2:-2] + "$")
|
||||||
|
ZONE_ID_RE = re.compile("(" + ZONE_ID_PAT + r")\]$")
|
||||||
|
|
||||||
|
-SUBAUTHORITY_PAT = (u"^(?:(.*)@)?(%s|%s|%s)(?::([0-9]{0,5}))?$") % (
|
||||||
|
+_HOST_PORT_PAT = ("^(%s|%s|%s)(?::([0-9]{0,5}))?$") % (
|
||||||
|
REG_NAME_PAT,
|
||||||
|
IPV4_PAT,
|
||||||
|
IPV6_ADDRZ_PAT,
|
||||||
|
)
|
||||||
|
-SUBAUTHORITY_RE = re.compile(SUBAUTHORITY_PAT, re.UNICODE | re.DOTALL)
|
||||||
|
+_HOST_PORT_RE = re.compile(_HOST_PORT_PAT, re.UNICODE | re.DOTALL)
|
||||||
|
|
||||||
|
UNRESERVED_CHARS = set(
|
||||||
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-~"
|
||||||
|
@@ -374,7 +374,9 @@ def parse_url(url):
|
||||||
|
scheme = scheme.lower()
|
||||||
|
|
||||||
|
if authority:
|
||||||
|
- auth, host, port = SUBAUTHORITY_RE.match(authority).groups()
|
||||||
|
+ auth, _, host_port = authority.rpartition("@")
|
||||||
|
+ auth = auth or None
|
||||||
|
+ host, port = _HOST_PORT_RE.match(host_port).groups()
|
||||||
|
if auth and normalize_uri:
|
||||||
|
auth = _encode_invalid_chars(auth, USERINFO_CHARS)
|
||||||
|
if port == "":
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
From 4f0099156245ed2873d6945d5e58db741e15836d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lumir Balhar <lbalhar@redhat.com>
|
||||||
|
Date: Tue, 8 Jun 2021 09:51:47 +0200
|
||||||
|
Subject: [PATCH] CVE-2021-3572
|
||||||
|
|
||||||
|
---
|
||||||
|
src/pip/_internal/vcs/git.py | 10 ++++++++--
|
||||||
|
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/pip/_internal/vcs/git.py b/src/pip/_internal/vcs/git.py
|
||||||
|
index 92b8457..7b3cc4a 100644
|
||||||
|
--- a/src/pip/_internal/vcs/git.py
|
||||||
|
+++ b/src/pip/_internal/vcs/git.py
|
||||||
|
@@ -120,9 +120,15 @@ class Git(VersionControl):
|
||||||
|
output = cls.run_command(['show-ref', rev], cwd=dest,
|
||||||
|
show_stdout=False, on_returncode='ignore')
|
||||||
|
refs = {}
|
||||||
|
- for line in output.strip().splitlines():
|
||||||
|
+ # NOTE: We do not use splitlines here since that would split on other
|
||||||
|
+ # unicode separators, which can be maliciously used to install a
|
||||||
|
+ # different revision.
|
||||||
|
+ for line in output.strip().split("\n"):
|
||||||
|
+ line = line.rstrip("\r")
|
||||||
|
+ if not line:
|
||||||
|
+ continue
|
||||||
|
try:
|
||||||
|
- sha, ref = line.split()
|
||||||
|
+ sha, ref = line.split(" ", maxsplit=2)
|
||||||
|
except ValueError:
|
||||||
|
# Include the offending line to simplify troubleshooting if
|
||||||
|
# this error ever occurs.
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,12 @@
|
|||||||
|
diff --git a/src/pip/_vendor/certifi/core.py b/src/pip/_vendor/certifi/core.py
|
||||||
|
index 7271acf..9f0dc20 100644
|
||||||
|
--- a/src/pip/_vendor/certifi/core.py
|
||||||
|
+++ b/src/pip/_vendor/certifi/core.py
|
||||||
|
@@ -10,6 +10,4 @@ import os
|
||||||
|
|
||||||
|
|
||||||
|
def where():
|
||||||
|
- f = os.path.dirname(__file__)
|
||||||
|
-
|
||||||
|
- return os.path.join(f, 'cacert.pem')
|
||||||
|
+ return '/etc/pki/tls/certs/ca-bundle.crt'
|
@ -0,0 +1,51 @@
|
|||||||
|
From aab24967a03bda3b0999d80562a6064c27d1e0e0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tomas Orsava <torsava@redhat.com>
|
||||||
|
Date: Tue, 12 Nov 2019 17:15:08 +0100
|
||||||
|
Subject: [PATCH] Downstream only patch
|
||||||
|
|
||||||
|
Emit a warning to the user if pip install is run with root privileges
|
||||||
|
Issue upstream: https://github.com/pypa/pip/issues/4288
|
||||||
|
---
|
||||||
|
src/pip/_internal/commands/install.py | 19 +++++++++++++++++++
|
||||||
|
1 file changed, 19 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/pip/_internal/commands/install.py b/src/pip/_internal/commands/install.py
|
||||||
|
index 5842d18..a6104b4 100644
|
||||||
|
--- a/src/pip/_internal/commands/install.py
|
||||||
|
+++ b/src/pip/_internal/commands/install.py
|
||||||
|
@@ -12,6 +12,8 @@ import logging
|
||||||
|
import operator
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
+import sys
|
||||||
|
+from os import path
|
||||||
|
from optparse import SUPPRESS_HELP
|
||||||
|
|
||||||
|
from pip._vendor import pkg_resources
|
||||||
|
@@ -281,6 +283,23 @@ class InstallCommand(RequirementCommand):
|
||||||
|
def run(self, options, args):
|
||||||
|
# type: (Values, List[Any]) -> int
|
||||||
|
cmdoptions.check_install_build_global(options)
|
||||||
|
+
|
||||||
|
+ def is_venv():
|
||||||
|
+ return (hasattr(sys, 'real_prefix') or
|
||||||
|
+ (hasattr(sys, 'base_prefix') and
|
||||||
|
+ sys.base_prefix != sys.prefix))
|
||||||
|
+
|
||||||
|
+ # Check whether we have root privileges and aren't in venv/virtualenv
|
||||||
|
+ if os.getuid() == 0 and not is_venv():
|
||||||
|
+ command = path.basename(sys.argv[0])
|
||||||
|
+ if command == "__main__.py":
|
||||||
|
+ command = path.basename(sys.executable) + " -m pip"
|
||||||
|
+ logger.warning(
|
||||||
|
+ "Running pip install with root privileges is "
|
||||||
|
+ "generally not a good idea. Try `%s install --user` instead."
|
||||||
|
+ % command
|
||||||
|
+ )
|
||||||
|
+
|
||||||
|
upgrade_strategy = "to-satisfy-only"
|
||||||
|
if options.upgrade:
|
||||||
|
upgrade_strategy = options.upgrade_strategy
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,84 @@
|
|||||||
|
diff -up pip-19.3.1/news/7872.bugfix.pip7873 pip-19.3.1/news/7872.bugfix
|
||||||
|
--- pip-19.3.1/news/7872.bugfix.pip7873 2022-05-24 08:34:03.285054864 -0600
|
||||||
|
+++ pip-19.3.1/news/7872.bugfix 2022-05-24 08:34:03.285054864 -0600
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+Prevent an infinite recursion with ``pip wheel`` when ``$TMPDIR`` is within the source directory.
|
||||||
|
diff -up pip-19.3.1/src/pip/_internal/download.py.pip7873 pip-19.3.1/src/pip/_internal/download.py
|
||||||
|
--- pip-19.3.1/src/pip/_internal/download.py.pip7873 2019-10-17 13:32:34.000000000 -0600
|
||||||
|
+++ pip-19.3.1/src/pip/_internal/download.py 2022-05-24 08:35:17.013833331 -0600
|
||||||
|
@@ -350,12 +350,24 @@ def _copy2_ignoring_special_files(src, d
|
||||||
|
|
||||||
|
def _copy_source_tree(source, target):
|
||||||
|
# type: (str, str) -> None
|
||||||
|
+ target_abspath = os.path.abspath(target)
|
||||||
|
+ target_basename = os.path.basename(target_abspath)
|
||||||
|
+ target_dirname = os.path.dirname(target_abspath)
|
||||||
|
+
|
||||||
|
def ignore(d, names):
|
||||||
|
- # Pulling in those directories can potentially be very slow,
|
||||||
|
- # exclude the following directories if they appear in the top
|
||||||
|
- # level dir (and only it).
|
||||||
|
- # See discussion at https://github.com/pypa/pip/pull/6770
|
||||||
|
- return ['.tox', '.nox'] if d == source else []
|
||||||
|
+ skipped = [] # type: List[str]
|
||||||
|
+ if d == source:
|
||||||
|
+ # Pulling in those directories can potentially be very slow,
|
||||||
|
+ # exclude the following directories if they appear in the top
|
||||||
|
+ # level dir (and only it).
|
||||||
|
+ # See discussion at https://github.com/pypa/pip/pull/6770
|
||||||
|
+ skipped += ['.tox', '.nox']
|
||||||
|
+ if os.path.abspath(d) == target_dirname:
|
||||||
|
+ # Prevent an infinite recursion if the target is in source.
|
||||||
|
+ # This can happen when TMPDIR is set to ${PWD}/...
|
||||||
|
+ # and we copy PWD to TMPDIR.
|
||||||
|
+ skipped += [target_basename]
|
||||||
|
+ return skipped
|
||||||
|
|
||||||
|
kwargs = dict(ignore=ignore, symlinks=True) # type: CopytreeKwargs
|
||||||
|
|
||||||
|
diff -up pip-19.3.1/src/pip/_internal/operations/prepare.py.pip7873 pip-19.3.1/src/pip/_internal/operations/prepare.py
|
||||||
|
diff -up pip-19.3.1/tests/data/src/extension/extension.c.pip7873 pip-19.3.1/tests/data/src/extension/extension.c
|
||||||
|
diff -up pip-19.3.1/tests/data/src/extension/setup.py.pip7873 pip-19.3.1/tests/data/src/extension/setup.py
|
||||||
|
--- pip-19.3.1/tests/data/src/extension/setup.py.pip7873 2022-05-24 08:34:03.285054864 -0600
|
||||||
|
+++ pip-19.3.1/tests/data/src/extension/setup.py 2022-05-24 08:34:03.285054864 -0600
|
||||||
|
@@ -0,0 +1,4 @@
|
||||||
|
+from setuptools import Extension, setup
|
||||||
|
+
|
||||||
|
+module = Extension('extension', sources=['extension.c'])
|
||||||
|
+setup(name='extension', version='0.0.1', ext_modules = [module])
|
||||||
|
diff -up pip-19.3.1/tests/functional/test_wheel.py.pip7873 pip-19.3.1/tests/functional/test_wheel.py
|
||||||
|
--- pip-19.3.1/tests/functional/test_wheel.py.pip7873 2019-10-17 13:32:34.000000000 -0600
|
||||||
|
+++ pip-19.3.1/tests/functional/test_wheel.py 2022-05-24 08:34:03.285054864 -0600
|
||||||
|
@@ -1,6 +1,7 @@
|
||||||
|
"""'pip wheel' tests"""
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
+import sys
|
||||||
|
from os.path import exists
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
@@ -228,6 +229,24 @@ def test_pip_wheel_with_user_set_in_conf
|
||||||
|
assert "Successfully built withpyproject" in result.stdout, result.stdout
|
||||||
|
|
||||||
|
|
||||||
|
+@pytest.mark.skipif(sys.platform.startswith('win'),
|
||||||
|
+ reason='The empty extension module does not work on Win')
|
||||||
|
+def test_pip_wheel_ext_module_with_tmpdir_inside(script, data, common_wheels):
|
||||||
|
+ tmpdir = data.src / 'extension/tmp'
|
||||||
|
+ tmpdir.mkdir()
|
||||||
|
+ script.environ['TMPDIR'] = str(tmpdir)
|
||||||
|
+
|
||||||
|
+ # To avoid a test dependency on a C compiler, we set the env vars to "noop"
|
||||||
|
+ # The .c source is empty anyway
|
||||||
|
+ script.environ['CC'] = script.environ['LDSHARED'] = str('true')
|
||||||
|
+
|
||||||
|
+ result = script.pip(
|
||||||
|
+ 'wheel', data.src / 'extension',
|
||||||
|
+ '--no-index', '-f', common_wheels
|
||||||
|
+ )
|
||||||
|
+ assert "Successfully built extension" in result.stdout, result.stdout
|
||||||
|
+
|
||||||
|
+
|
||||||
|
@pytest.mark.network
|
||||||
|
def test_pep517_wheels_are_not_confused_with_other_files(script, tmpdir, data):
|
||||||
|
"""Check correct wheels are copied. (#6196)
|
@ -0,0 +1,11 @@
|
|||||||
|
diff -ru pip-10.0.1/docs/conf.py pip-10.0.1_patched/docs/conf.py
|
||||||
|
--- pip-10.0.1/docs/html/conf.py 2018-04-14 13:17:31.000000000 +0200
|
||||||
|
+++ pip-10.0.1_patched/docs/html/conf.py 2018-07-23 15:23:31.053267611 +0200
|
||||||
|
@@ -134,6 +134,7 @@
|
||||||
|
# The theme to use for HTML and HTML Help pages. Major themes that come with
|
||||||
|
# Sphinx are currently 'default' and 'sphinxdoc'.
|
||||||
|
html_theme = "pypa_theme"
|
||||||
|
+html_theme_path = ["pypa", "python-docs-theme"]
|
||||||
|
|
||||||
|
# Theme options are theme-specific and customize the look and feel of a theme
|
||||||
|
# further. For a list of options available for each theme, see the
|
@ -0,0 +1,683 @@
|
|||||||
|
From 621800d5c65aea36c6a1d9b685ff88f35cfce476 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tomas Orsava <torsava@redhat.com>
|
||||||
|
Date: Fri, 15 Nov 2019 19:44:54 +0100
|
||||||
|
Subject: [PATCH] Mark 6 tests as network tests
|
||||||
|
|
||||||
|
=================================== FAILURES ===================================
|
||||||
|
_______________________________ test_freeze_path _______________________________
|
||||||
|
tmpdir = Path('/tmp/pytest-of-mockbuild/pytest-0/test_freeze_path0')
|
||||||
|
script = <tests.lib.PipTestEnvironment object at 0x7fe950a4caf0>
|
||||||
|
data = <tests.lib.TestData object at 0x7fe950a4cc10>
|
||||||
|
def test_freeze_path(tmpdir, script, data):
|
||||||
|
"""
|
||||||
|
Test freeze with --path.
|
||||||
|
"""
|
||||||
|
> script.pip('install', '--find-links', data.find_links,
|
||||||
|
'--target', tmpdir, 'simple==2.0')
|
||||||
|
tests/functional/test_freeze.py:712:
|
||||||
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|
tests/lib/__init__.py:593: in run
|
||||||
|
_check_stderr(
|
||||||
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|
stderr = "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'N...t at 0x7fe6435ef280>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/\n"
|
||||||
|
allow_stderr_warning = False, allow_stderr_error = False
|
||||||
|
def _check_stderr(
|
||||||
|
stderr, allow_stderr_warning, allow_stderr_error,
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Check the given stderr for logged warnings and errors.
|
||||||
|
|
||||||
|
:param stderr: stderr output as a string.
|
||||||
|
:param allow_stderr_warning: whether a logged warning (or deprecation
|
||||||
|
message) is allowed. Must be True if allow_stderr_error is True.
|
||||||
|
:param allow_stderr_error: whether a logged error is allowed.
|
||||||
|
"""
|
||||||
|
assert not (allow_stderr_error and not allow_stderr_warning)
|
||||||
|
|
||||||
|
lines = stderr.splitlines()
|
||||||
|
for line in lines:
|
||||||
|
# First check for logging errors, which we don't allow during
|
||||||
|
# tests even if allow_stderr_error=True (since a logging error
|
||||||
|
# would signal a bug in pip's code).
|
||||||
|
# Unlike errors logged with logger.error(), these errors are
|
||||||
|
# sent directly to stderr and so bypass any configured log formatter.
|
||||||
|
# The "--- Logging error ---" string is used in Python 3.4+, and
|
||||||
|
# "Logged from file " is used in Python 2.
|
||||||
|
if (line.startswith('--- Logging error ---') or
|
||||||
|
line.startswith('Logged from file ')):
|
||||||
|
reason = 'stderr has a logging error, which is never allowed'
|
||||||
|
msg = make_check_stderr_message(stderr, line=line, reason=reason)
|
||||||
|
raise RuntimeError(msg)
|
||||||
|
if allow_stderr_error:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line.startswith('ERROR: '):
|
||||||
|
reason = (
|
||||||
|
'stderr has an unexpected error '
|
||||||
|
'(pass allow_stderr_error=True to permit this)'
|
||||||
|
)
|
||||||
|
msg = make_check_stderr_message(stderr, line=line, reason=reason)
|
||||||
|
raise RuntimeError(msg)
|
||||||
|
if allow_stderr_warning:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if (line.startswith('WARNING: ') or
|
||||||
|
line.startswith(DEPRECATION_MSG_PREFIX)):
|
||||||
|
reason = (
|
||||||
|
'stderr has an unexpected warning '
|
||||||
|
'(pass allow_stderr_warning=True to permit this)'
|
||||||
|
)
|
||||||
|
msg = make_check_stderr_message(stderr, line=line, reason=reason)
|
||||||
|
> raise RuntimeError(msg)
|
||||||
|
E RuntimeError: stderr has an unexpected warning (pass allow_stderr_warning=True to permit this):
|
||||||
|
E Caused by line: "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe64364c850>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/"
|
||||||
|
E Complete stderr: WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe64364c850>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
E WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe64364cdc0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
E WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe64364cf70>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
E WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe6435ef130>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
E WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe6435ef280>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
tests/lib/__init__.py:404: RuntimeError
|
||||||
|
________________________ test_freeze_path_exclude_user _________________________
|
||||||
|
tmpdir = Path('/tmp/pytest-of-mockbuild/pytest-0/test_freeze_path_exclude_user0')
|
||||||
|
script = <tests.lib.PipTestEnvironment object at 0x7fe950ec8fa0>
|
||||||
|
data = <tests.lib.TestData object at 0x7fe950ec8a30>
|
||||||
|
def test_freeze_path_exclude_user(tmpdir, script, data):
|
||||||
|
"""
|
||||||
|
Test freeze with --path and make sure packages from --user are not picked
|
||||||
|
up.
|
||||||
|
"""
|
||||||
|
script.pip_install_local('--find-links', data.find_links,
|
||||||
|
'--user', 'simple2')
|
||||||
|
> script.pip('install', '--find-links', data.find_links,
|
||||||
|
'--target', tmpdir, 'simple==1.0')
|
||||||
|
tests/functional/test_freeze.py:728:
|
||||||
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|
tests/lib/__init__.py:593: in run
|
||||||
|
_check_stderr(
|
||||||
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|
stderr = "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'N...t at 0x7f87ae751310>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/\n"
|
||||||
|
allow_stderr_warning = False, allow_stderr_error = False
|
||||||
|
def _check_stderr(
|
||||||
|
stderr, allow_stderr_warning, allow_stderr_error,
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Check the given stderr for logged warnings and errors.
|
||||||
|
|
||||||
|
:param stderr: stderr output as a string.
|
||||||
|
:param allow_stderr_warning: whether a logged warning (or deprecation
|
||||||
|
message) is allowed. Must be True if allow_stderr_error is True.
|
||||||
|
:param allow_stderr_error: whether a logged error is allowed.
|
||||||
|
"""
|
||||||
|
assert not (allow_stderr_error and not allow_stderr_warning)
|
||||||
|
|
||||||
|
lines = stderr.splitlines()
|
||||||
|
for line in lines:
|
||||||
|
# First check for logging errors, which we don't allow during
|
||||||
|
# tests even if allow_stderr_error=True (since a logging error
|
||||||
|
# would signal a bug in pip's code).
|
||||||
|
# Unlike errors logged with logger.error(), these errors are
|
||||||
|
# sent directly to stderr and so bypass any configured log formatter.
|
||||||
|
# The "--- Logging error ---" string is used in Python 3.4+, and
|
||||||
|
# "Logged from file " is used in Python 2.
|
||||||
|
if (line.startswith('--- Logging error ---') or
|
||||||
|
line.startswith('Logged from file ')):
|
||||||
|
reason = 'stderr has a logging error, which is never allowed'
|
||||||
|
msg = make_check_stderr_message(stderr, line=line, reason=reason)
|
||||||
|
raise RuntimeError(msg)
|
||||||
|
if allow_stderr_error:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line.startswith('ERROR: '):
|
||||||
|
reason = (
|
||||||
|
'stderr has an unexpected error '
|
||||||
|
'(pass allow_stderr_error=True to permit this)'
|
||||||
|
)
|
||||||
|
msg = make_check_stderr_message(stderr, line=line, reason=reason)
|
||||||
|
raise RuntimeError(msg)
|
||||||
|
if allow_stderr_warning:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if (line.startswith('WARNING: ') or
|
||||||
|
line.startswith(DEPRECATION_MSG_PREFIX)):
|
||||||
|
reason = (
|
||||||
|
'stderr has an unexpected warning '
|
||||||
|
'(pass allow_stderr_warning=True to permit this)'
|
||||||
|
)
|
||||||
|
msg = make_check_stderr_message(stderr, line=line, reason=reason)
|
||||||
|
> raise RuntimeError(msg)
|
||||||
|
E RuntimeError: stderr has an unexpected warning (pass allow_stderr_warning=True to permit this):
|
||||||
|
E Caused by line: "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae7aa8e0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/"
|
||||||
|
E Complete stderr: WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae7aa8e0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
E WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae7aae50>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
E WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae751040>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
E WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae7511c0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
E WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f87ae751310>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
tests/lib/__init__.py:404: RuntimeError
|
||||||
|
__________________________ test_freeze_path_multiple ___________________________
|
||||||
|
tmpdir = Path('/tmp/pytest-of-mockbuild/pytest-0/test_freeze_path_multiple0')
|
||||||
|
script = <tests.lib.PipTestEnvironment object at 0x7fe950b43fd0>
|
||||||
|
data = <tests.lib.TestData object at 0x7fe950b43df0>
|
||||||
|
def test_freeze_path_multiple(tmpdir, script, data):
|
||||||
|
"""
|
||||||
|
Test freeze with multiple --path arguments.
|
||||||
|
"""
|
||||||
|
path1 = tmpdir / "path1"
|
||||||
|
os.mkdir(path1)
|
||||||
|
path2 = tmpdir / "path2"
|
||||||
|
os.mkdir(path2)
|
||||||
|
> script.pip('install', '--find-links', data.find_links,
|
||||||
|
'--target', path1, 'simple==2.0')
|
||||||
|
tests/functional/test_freeze.py:750:
|
||||||
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|
tests/lib/__init__.py:593: in run
|
||||||
|
_check_stderr(
|
||||||
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|
stderr = "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'N...t at 0x7f07e6253280>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/\n"
|
||||||
|
allow_stderr_warning = False, allow_stderr_error = False
|
||||||
|
def _check_stderr(
|
||||||
|
stderr, allow_stderr_warning, allow_stderr_error,
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Check the given stderr for logged warnings and errors.
|
||||||
|
|
||||||
|
:param stderr: stderr output as a string.
|
||||||
|
:param allow_stderr_warning: whether a logged warning (or deprecation
|
||||||
|
message) is allowed. Must be True if allow_stderr_error is True.
|
||||||
|
:param allow_stderr_error: whether a logged error is allowed.
|
||||||
|
"""
|
||||||
|
assert not (allow_stderr_error and not allow_stderr_warning)
|
||||||
|
|
||||||
|
lines = stderr.splitlines()
|
||||||
|
for line in lines:
|
||||||
|
# First check for logging errors, which we don't allow during
|
||||||
|
# tests even if allow_stderr_error=True (since a logging error
|
||||||
|
# would signal a bug in pip's code).
|
||||||
|
# Unlike errors logged with logger.error(), these errors are
|
||||||
|
# sent directly to stderr and so bypass any configured log formatter.
|
||||||
|
# The "--- Logging error ---" string is used in Python 3.4+, and
|
||||||
|
# "Logged from file " is used in Python 2.
|
||||||
|
if (line.startswith('--- Logging error ---') or
|
||||||
|
line.startswith('Logged from file ')):
|
||||||
|
reason = 'stderr has a logging error, which is never allowed'
|
||||||
|
msg = make_check_stderr_message(stderr, line=line, reason=reason)
|
||||||
|
raise RuntimeError(msg)
|
||||||
|
if allow_stderr_error:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line.startswith('ERROR: '):
|
||||||
|
reason = (
|
||||||
|
'stderr has an unexpected error '
|
||||||
|
'(pass allow_stderr_error=True to permit this)'
|
||||||
|
)
|
||||||
|
msg = make_check_stderr_message(stderr, line=line, reason=reason)
|
||||||
|
raise RuntimeError(msg)
|
||||||
|
if allow_stderr_warning:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if (line.startswith('WARNING: ') or
|
||||||
|
line.startswith(DEPRECATION_MSG_PREFIX)):
|
||||||
|
reason = (
|
||||||
|
'stderr has an unexpected warning '
|
||||||
|
'(pass allow_stderr_warning=True to permit this)'
|
||||||
|
)
|
||||||
|
msg = make_check_stderr_message(stderr, line=line, reason=reason)
|
||||||
|
> raise RuntimeError(msg)
|
||||||
|
E RuntimeError: stderr has an unexpected warning (pass allow_stderr_warning=True to permit this):
|
||||||
|
E Caused by line: "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e62ae850>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/"
|
||||||
|
E Complete stderr: WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e62ae850>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
E WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e62aedc0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
E WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e62aef70>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
E WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e6253130>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
E WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f07e6253280>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/simple/
|
||||||
|
tests/lib/__init__.py:404: RuntimeError
|
||||||
|
_________________ test_install_no_binary_builds_pep_517_wheel __________________
|
||||||
|
script = <tests.lib.PipTestEnvironment object at 0x7fe9509f4e20>
|
||||||
|
data = <tests.lib.TestData object at 0x7fe9509f4640>, with_wheel = None
|
||||||
|
def test_install_no_binary_builds_pep_517_wheel(script, data, with_wheel):
|
||||||
|
to_install = data.packages.joinpath('pep517_setup_and_pyproject')
|
||||||
|
> res = script.pip(
|
||||||
|
'install', '--no-binary=:all:', '-f', data.find_links, to_install
|
||||||
|
)
|
||||||
|
tests/functional/test_install.py:1279:
|
||||||
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|
self = <tests.lib.PipTestEnvironment object at 0x7fe9509f4e20>
|
||||||
|
args = ('python', '-m', 'pip', 'install', '--no-binary=:all:', '-f', ...)
|
||||||
|
kw = {'expect_stderr': True}
|
||||||
|
cwd = Path('/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/scratch')
|
||||||
|
run_from = None, allow_stderr_error = False, allow_stderr_warning = False
|
||||||
|
expect_error = None
|
||||||
|
def run(self, *args, **kw):
|
||||||
|
"""
|
||||||
|
:param allow_stderr_error: whether a logged error is allowed in
|
||||||
|
stderr. Passing True for this argument implies
|
||||||
|
`allow_stderr_warning` since warnings are weaker than errors.
|
||||||
|
:param allow_stderr_warning: whether a logged warning (or
|
||||||
|
deprecation message) is allowed in stderr.
|
||||||
|
:param expect_error: if False (the default), asserts that the command
|
||||||
|
exits with 0. Otherwise, asserts that the command exits with a
|
||||||
|
non-zero exit code. Passing True also implies allow_stderr_error
|
||||||
|
and allow_stderr_warning.
|
||||||
|
:param expect_stderr: whether to allow warnings in stderr (equivalent
|
||||||
|
to `allow_stderr_warning`). This argument is an abbreviated
|
||||||
|
version of `allow_stderr_warning` and is also kept for backwards
|
||||||
|
compatibility.
|
||||||
|
"""
|
||||||
|
if self.verbose:
|
||||||
|
print('>> running %s %s' % (args, kw))
|
||||||
|
|
||||||
|
cwd = kw.pop('cwd', None)
|
||||||
|
run_from = kw.pop('run_from', None)
|
||||||
|
assert not cwd or not run_from, "Don't use run_from; it's going away"
|
||||||
|
cwd = cwd or run_from or self.cwd
|
||||||
|
if sys.platform == 'win32':
|
||||||
|
# Partial fix for ScriptTest.run using `shell=True` on Windows.
|
||||||
|
args = [str(a).replace('^', '^^').replace('&', '^&') for a in args]
|
||||||
|
|
||||||
|
# Remove `allow_stderr_error` and `allow_stderr_warning` before
|
||||||
|
# calling run() because PipTestEnvironment doesn't support them.
|
||||||
|
allow_stderr_error = kw.pop('allow_stderr_error', None)
|
||||||
|
allow_stderr_warning = kw.pop('allow_stderr_warning', None)
|
||||||
|
|
||||||
|
# Propagate default values.
|
||||||
|
expect_error = kw.get('expect_error')
|
||||||
|
if expect_error:
|
||||||
|
# Then default to allowing logged errors.
|
||||||
|
if allow_stderr_error is not None and not allow_stderr_error:
|
||||||
|
raise RuntimeError(
|
||||||
|
'cannot pass allow_stderr_error=False with '
|
||||||
|
'expect_error=True'
|
||||||
|
)
|
||||||
|
allow_stderr_error = True
|
||||||
|
|
||||||
|
elif kw.get('expect_stderr'):
|
||||||
|
# Then default to allowing logged warnings.
|
||||||
|
if allow_stderr_warning is not None and not allow_stderr_warning:
|
||||||
|
raise RuntimeError(
|
||||||
|
'cannot pass allow_stderr_warning=False with '
|
||||||
|
'expect_stderr=True'
|
||||||
|
)
|
||||||
|
allow_stderr_warning = True
|
||||||
|
|
||||||
|
if allow_stderr_error:
|
||||||
|
if allow_stderr_warning is not None and not allow_stderr_warning:
|
||||||
|
raise RuntimeError(
|
||||||
|
'cannot pass allow_stderr_warning=False with '
|
||||||
|
'allow_stderr_error=True'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Default values if not set.
|
||||||
|
if allow_stderr_error is None:
|
||||||
|
allow_stderr_error = False
|
||||||
|
if allow_stderr_warning is None:
|
||||||
|
allow_stderr_warning = allow_stderr_error
|
||||||
|
|
||||||
|
# Pass expect_stderr=True to allow any stderr. We do this because
|
||||||
|
# we do our checking of stderr further on in check_stderr().
|
||||||
|
kw['expect_stderr'] = True
|
||||||
|
> result = super(PipTestEnvironment, self).run(cwd=cwd, *args, **kw)
|
||||||
|
E AssertionError: Script returned code: 1
|
||||||
|
tests/lib/__init__.py:586: AssertionError
|
||||||
|
----------------------------- Captured stdout call -----------------------------
|
||||||
|
Script result: python -m pip install --no-binary=:all: -f file:///tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages/pep517_setup_and_pyproject
|
||||||
|
return code: 1
|
||||||
|
-- stderr: --------------------
|
||||||
|
ERROR: Command errored out with exit status 1:
|
||||||
|
command: /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/venv/bin/python /builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-build-env-ntp1m4dh/overlay --no-warn-script-location --no-binary :all: --only-binary :none: -i https://pypi.org/simple --find-links file:///tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages -- setuptools
|
||||||
|
cwd: None
|
||||||
|
Complete output (28 lines):
|
||||||
|
Looking in links: file:///tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages
|
||||||
|
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f7234ef1e50>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/setuptools/
|
||||||
|
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f7234e92040>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/setuptools/
|
||||||
|
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f7234e921c0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/setuptools/
|
||||||
|
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f7234e92340>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/setuptools/
|
||||||
|
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f7234e924c0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/setuptools/
|
||||||
|
Processing /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages/setuptools-0.9.6.tar.gz
|
||||||
|
ERROR: Command errored out with exit status 1:
|
||||||
|
command: /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/venv/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setup.py'"'"'; __file__='"'"'/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/pip-egg-info
|
||||||
|
cwd: /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/
|
||||||
|
Complete output (15 lines):
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<string>", line 1, in <module>
|
||||||
|
File "/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setuptools/__init__.py", line 2, in <module>
|
||||||
|
from setuptools.extension import Extension, Library
|
||||||
|
File "/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setuptools/extension.py", line 5, in <module>
|
||||||
|
from setuptools.dist import _get_unpatched
|
||||||
|
File "/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setuptools/dist.py", line 7, in <module>
|
||||||
|
from setuptools.command.install import install
|
||||||
|
File "/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setuptools/command/__init__.py", line 8, in <module>
|
||||||
|
from setuptools.command import install_scripts
|
||||||
|
File "/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/setuptools/command/install_scripts.py", line 3, in <module>
|
||||||
|
from pkg_resources import Distribution, PathMetadata, ensure_directory
|
||||||
|
File "/tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-install-b_6lf4z6/setuptools/pkg_resources.py", line 1545, in <module>
|
||||||
|
register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider)
|
||||||
|
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'
|
||||||
|
----------------------------------------
|
||||||
|
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
|
||||||
|
----------------------------------------
|
||||||
|
ERROR: Command errored out with exit status 1: /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/venv/bin/python /builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/workspace/tmp/pip-build-env-ntp1m4dh/overlay --no-warn-script-location --no-binary :all: --only-binary :none: -i https://pypi.org/simple --find-links file:///tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages -- setuptools Check the logs for full command output.
|
||||||
|
-- stdout: --------------------
|
||||||
|
Looking in links: file:///tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages
|
||||||
|
Processing /tmp/pytest-of-mockbuild/pytest-0/test_install_no_binary_builds_0/data/packages/pep517_setup_and_pyproject
|
||||||
|
Installing build dependencies: started
|
||||||
|
Installing build dependencies: finished with status 'error'
|
||||||
|
_______________________ test_config_file_override_stack ________________________
|
||||||
|
script = <tests.lib.PipTestEnvironment object at 0x7fe950d9b7f0>
|
||||||
|
virtualenv = <VirtualEnvironment /tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/venv>
|
||||||
|
def test_config_file_override_stack(script, virtualenv):
|
||||||
|
"""
|
||||||
|
Test config files (global, overriding a global config with a
|
||||||
|
local, overriding all with a command line flag).
|
||||||
|
|
||||||
|
"""
|
||||||
|
fd, config_file = tempfile.mkstemp('-pip.cfg', 'test-')
|
||||||
|
try:
|
||||||
|
> _test_config_file_override_stack(script, virtualenv, config_file)
|
||||||
|
tests/functional/test_install_config.py:144:
|
||||||
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|
tests/functional/test_install_config.py:172: in _test_config_file_override_stack
|
||||||
|
result = script.pip(
|
||||||
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|
self = <tests.lib.PipTestEnvironment object at 0x7fe950d9b7f0>
|
||||||
|
args = ('python', '-m', 'pip', 'install', '-vvv', '--index-url', ...)
|
||||||
|
kw = {'expect_stderr': True}
|
||||||
|
cwd = Path('/tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/scratch')
|
||||||
|
run_from = None, allow_stderr_error = False, allow_stderr_warning = False
|
||||||
|
expect_error = None
|
||||||
|
def run(self, *args, **kw):
|
||||||
|
"""
|
||||||
|
:param allow_stderr_error: whether a logged error is allowed in
|
||||||
|
stderr. Passing True for this argument implies
|
||||||
|
`allow_stderr_warning` since warnings are weaker than errors.
|
||||||
|
:param allow_stderr_warning: whether a logged warning (or
|
||||||
|
deprecation message) is allowed in stderr.
|
||||||
|
:param expect_error: if False (the default), asserts that the command
|
||||||
|
exits with 0. Otherwise, asserts that the command exits with a
|
||||||
|
non-zero exit code. Passing True also implies allow_stderr_error
|
||||||
|
and allow_stderr_warning.
|
||||||
|
:param expect_stderr: whether to allow warnings in stderr (equivalent
|
||||||
|
to `allow_stderr_warning`). This argument is an abbreviated
|
||||||
|
version of `allow_stderr_warning` and is also kept for backwards
|
||||||
|
compatibility.
|
||||||
|
"""
|
||||||
|
if self.verbose:
|
||||||
|
print('>> running %s %s' % (args, kw))
|
||||||
|
|
||||||
|
cwd = kw.pop('cwd', None)
|
||||||
|
run_from = kw.pop('run_from', None)
|
||||||
|
assert not cwd or not run_from, "Don't use run_from; it's going away"
|
||||||
|
cwd = cwd or run_from or self.cwd
|
||||||
|
if sys.platform == 'win32':
|
||||||
|
# Partial fix for ScriptTest.run using `shell=True` on Windows.
|
||||||
|
args = [str(a).replace('^', '^^').replace('&', '^&') for a in args]
|
||||||
|
|
||||||
|
# Remove `allow_stderr_error` and `allow_stderr_warning` before
|
||||||
|
# calling run() because PipTestEnvironment doesn't support them.
|
||||||
|
allow_stderr_error = kw.pop('allow_stderr_error', None)
|
||||||
|
allow_stderr_warning = kw.pop('allow_stderr_warning', None)
|
||||||
|
|
||||||
|
# Propagate default values.
|
||||||
|
expect_error = kw.get('expect_error')
|
||||||
|
if expect_error:
|
||||||
|
# Then default to allowing logged errors.
|
||||||
|
if allow_stderr_error is not None and not allow_stderr_error:
|
||||||
|
raise RuntimeError(
|
||||||
|
'cannot pass allow_stderr_error=False with '
|
||||||
|
'expect_error=True'
|
||||||
|
)
|
||||||
|
allow_stderr_error = True
|
||||||
|
|
||||||
|
elif kw.get('expect_stderr'):
|
||||||
|
# Then default to allowing logged warnings.
|
||||||
|
if allow_stderr_warning is not None and not allow_stderr_warning:
|
||||||
|
raise RuntimeError(
|
||||||
|
'cannot pass allow_stderr_warning=False with '
|
||||||
|
'expect_stderr=True'
|
||||||
|
)
|
||||||
|
allow_stderr_warning = True
|
||||||
|
|
||||||
|
if allow_stderr_error:
|
||||||
|
if allow_stderr_warning is not None and not allow_stderr_warning:
|
||||||
|
raise RuntimeError(
|
||||||
|
'cannot pass allow_stderr_warning=False with '
|
||||||
|
'allow_stderr_error=True'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Default values if not set.
|
||||||
|
if allow_stderr_error is None:
|
||||||
|
allow_stderr_error = False
|
||||||
|
if allow_stderr_warning is None:
|
||||||
|
allow_stderr_warning = allow_stderr_error
|
||||||
|
|
||||||
|
# Pass expect_stderr=True to allow any stderr. We do this because
|
||||||
|
# we do our checking of stderr further on in check_stderr().
|
||||||
|
kw['expect_stderr'] = True
|
||||||
|
> result = super(PipTestEnvironment, self).run(cwd=cwd, *args, **kw)
|
||||||
|
E AssertionError: Script returned code: 1
|
||||||
|
tests/lib/__init__.py:586: AssertionError
|
||||||
|
----------------------------- Captured stdout call -----------------------------
|
||||||
|
Script result: python -m pip install -vvv --index-url https://pypi.org/simple/ INITools
|
||||||
|
return code: 1
|
||||||
|
-- stderr: --------------------
|
||||||
|
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9669c3d8b0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/
|
||||||
|
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9669c3da60>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/
|
||||||
|
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9669c3dbe0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/
|
||||||
|
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9669c3dd60>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/
|
||||||
|
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f966900f490>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/
|
||||||
|
ERROR: Could not find a version that satisfies the requirement INITools (from versions: none)
|
||||||
|
ERROR: No matching distribution found for INITools
|
||||||
|
-- stdout: --------------------
|
||||||
|
Created temporary directory: /tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/tmp/pip-ephem-wheel-cache-6gj33ens
|
||||||
|
Created temporary directory: /tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/tmp/pip-req-tracker-s7_2cwgc
|
||||||
|
Created requirements tracker '/tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/tmp/pip-req-tracker-s7_2cwgc'
|
||||||
|
Created temporary directory: /tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/tmp/pip-install-_91mh3df
|
||||||
|
Looking in indexes: https://pypi.org/simple/
|
||||||
|
1 location(s) to search for versions of INITools:
|
||||||
|
* https://pypi.org/simple/initools/
|
||||||
|
Getting page https://pypi.org/simple/initools/
|
||||||
|
Found index url https://pypi.org/simple/
|
||||||
|
Looking up "https://pypi.org/simple/initools/" in the cache
|
||||||
|
Request header has "max_age" as 0, cache bypassed
|
||||||
|
Starting new HTTPS connection (1): pypi.org:443
|
||||||
|
Incremented Retry for (url='/simple/initools/'): Retry(total=4, connect=None, read=None, redirect=None, status=None)
|
||||||
|
Starting new HTTPS connection (2): pypi.org:443
|
||||||
|
Incremented Retry for (url='/simple/initools/'): Retry(total=3, connect=None, read=None, redirect=None, status=None)
|
||||||
|
Starting new HTTPS connection (3): pypi.org:443
|
||||||
|
Incremented Retry for (url='/simple/initools/'): Retry(total=2, connect=None, read=None, redirect=None, status=None)
|
||||||
|
Starting new HTTPS connection (4): pypi.org:443
|
||||||
|
Incremented Retry for (url='/simple/initools/'): Retry(total=1, connect=None, read=None, redirect=None, status=None)
|
||||||
|
Starting new HTTPS connection (5): pypi.org:443
|
||||||
|
Incremented Retry for (url='/simple/initools/'): Retry(total=0, connect=None, read=None, redirect=None, status=None)
|
||||||
|
Starting new HTTPS connection (6): pypi.org:443
|
||||||
|
Could not fetch URL https://pypi.org/simple/initools/: connection error: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/initools/ (Caused by NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9669c15b50>: Failed to establish a new connection: [Errno -2] Name or service not known')) - skipping
|
||||||
|
Given no hashes to check 0 links for project 'INITools': discarding no candidates
|
||||||
|
Cleaning up...
|
||||||
|
Removed build tracker '/tmp/pytest-of-mockbuild/pytest-0/test_config_file_override_stac0/workspace/tmp/pip-req-tracker-s7_2cwgc'
|
||||||
|
Exception information:
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/cli/base_command.py", line 153, in _main
|
||||||
|
status = self.run(options, args)
|
||||||
|
File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 401, in run
|
||||||
|
resolver.resolve(requirement_set)
|
||||||
|
File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/legacy_resolve.py", line 202, in resolve
|
||||||
|
self._resolve_one(requirement_set, req)
|
||||||
|
File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/legacy_resolve.py", line 368, in _resolve_one
|
||||||
|
abstract_dist = self._get_abstract_dist_for(req_to_install)
|
||||||
|
File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/legacy_resolve.py", line 314, in _get_abstract_dist_for
|
||||||
|
req.populate_link(self.finder, upgrade_allowed, self.require_hashes)
|
||||||
|
File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/req/req_install.py", line 226, in populate_link
|
||||||
|
self.link = finder.find_requirement(self, upgrade)
|
||||||
|
File "/builddir/build/BUILDROOT/python-pip-19.3.1-1.fc32.noarch/usr/lib/python3.8/site-packages/pip/_internal/index.py", line 905, in find_requirement
|
||||||
|
raise DistributionNotFound(
|
||||||
|
pip._internal.exceptions.DistributionNotFound: No matching distribution found for INITools
|
||||||
|
_______________________ test_no_upgrade_unless_requested _______________________
|
||||||
|
script = <tests.lib.PipTestEnvironment object at 0x7fe950d86070>
|
||||||
|
def test_no_upgrade_unless_requested(script):
|
||||||
|
"""
|
||||||
|
No upgrade if not specifically requested.
|
||||||
|
|
||||||
|
"""
|
||||||
|
> script.pip('install', 'INITools==0.1')
|
||||||
|
tests/functional/test_install_upgrade.py:16:
|
||||||
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|
self = <tests.lib.PipTestEnvironment object at 0x7fe950d86070>
|
||||||
|
args = ('python', '-m', 'pip', 'install', 'INITools==0.1')
|
||||||
|
kw = {'expect_stderr': True}
|
||||||
|
cwd = Path('/tmp/pytest-of-mockbuild/pytest-0/test_no_upgrade_unless_request0/workspace/scratch')
|
||||||
|
run_from = None, allow_stderr_error = False, allow_stderr_warning = False
|
||||||
|
expect_error = None
|
||||||
|
def run(self, *args, **kw):
|
||||||
|
"""
|
||||||
|
:param allow_stderr_error: whether a logged error is allowed in
|
||||||
|
stderr. Passing True for this argument implies
|
||||||
|
`allow_stderr_warning` since warnings are weaker than errors.
|
||||||
|
:param allow_stderr_warning: whether a logged warning (or
|
||||||
|
deprecation message) is allowed in stderr.
|
||||||
|
:param expect_error: if False (the default), asserts that the command
|
||||||
|
exits with 0. Otherwise, asserts that the command exits with a
|
||||||
|
non-zero exit code. Passing True also implies allow_stderr_error
|
||||||
|
and allow_stderr_warning.
|
||||||
|
:param expect_stderr: whether to allow warnings in stderr (equivalent
|
||||||
|
to `allow_stderr_warning`). This argument is an abbreviated
|
||||||
|
version of `allow_stderr_warning` and is also kept for backwards
|
||||||
|
compatibility.
|
||||||
|
"""
|
||||||
|
if self.verbose:
|
||||||
|
print('>> running %s %s' % (args, kw))
|
||||||
|
|
||||||
|
cwd = kw.pop('cwd', None)
|
||||||
|
run_from = kw.pop('run_from', None)
|
||||||
|
assert not cwd or not run_from, "Don't use run_from; it's going away"
|
||||||
|
cwd = cwd or run_from or self.cwd
|
||||||
|
if sys.platform == 'win32':
|
||||||
|
# Partial fix for ScriptTest.run using `shell=True` on Windows.
|
||||||
|
args = [str(a).replace('^', '^^').replace('&', '^&') for a in args]
|
||||||
|
|
||||||
|
# Remove `allow_stderr_error` and `allow_stderr_warning` before
|
||||||
|
# calling run() because PipTestEnvironment doesn't support them.
|
||||||
|
allow_stderr_error = kw.pop('allow_stderr_error', None)
|
||||||
|
allow_stderr_warning = kw.pop('allow_stderr_warning', None)
|
||||||
|
|
||||||
|
# Propagate default values.
|
||||||
|
expect_error = kw.get('expect_error')
|
||||||
|
if expect_error:
|
||||||
|
# Then default to allowing logged errors.
|
||||||
|
if allow_stderr_error is not None and not allow_stderr_error:
|
||||||
|
raise RuntimeError(
|
||||||
|
'cannot pass allow_stderr_error=False with '
|
||||||
|
'expect_error=True'
|
||||||
|
)
|
||||||
|
allow_stderr_error = True
|
||||||
|
|
||||||
|
elif kw.get('expect_stderr'):
|
||||||
|
# Then default to allowing logged warnings.
|
||||||
|
if allow_stderr_warning is not None and not allow_stderr_warning:
|
||||||
|
raise RuntimeError(
|
||||||
|
'cannot pass allow_stderr_warning=False with '
|
||||||
|
'expect_stderr=True'
|
||||||
|
)
|
||||||
|
allow_stderr_warning = True
|
||||||
|
|
||||||
|
if allow_stderr_error:
|
||||||
|
if allow_stderr_warning is not None and not allow_stderr_warning:
|
||||||
|
raise RuntimeError(
|
||||||
|
'cannot pass allow_stderr_warning=False with '
|
||||||
|
'allow_stderr_error=True'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Default values if not set.
|
||||||
|
if allow_stderr_error is None:
|
||||||
|
allow_stderr_error = False
|
||||||
|
if allow_stderr_warning is None:
|
||||||
|
allow_stderr_warning = allow_stderr_error
|
||||||
|
|
||||||
|
# Pass expect_stderr=True to allow any stderr. We do this because
|
||||||
|
# we do our checking of stderr further on in check_stderr().
|
||||||
|
kw['expect_stderr'] = True
|
||||||
|
> result = super(PipTestEnvironment, self).run(cwd=cwd, *args, **kw)
|
||||||
|
E AssertionError: Script returned code: 1
|
||||||
|
tests/lib/__init__.py:586: AssertionError
|
||||||
|
----------------------------- Captured stdout call -----------------------------
|
||||||
|
Script result: python -m pip install INITools==0.1
|
||||||
|
return code: 1
|
||||||
|
-- stderr: --------------------
|
||||||
|
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd66cc36700>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/
|
||||||
|
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd66cc36c40>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/
|
||||||
|
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd66cc36dc0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/
|
||||||
|
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd66cc36f40>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/
|
||||||
|
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd66be48100>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/initools/
|
||||||
|
ERROR: Could not find a version that satisfies the requirement INITools==0.1 (from versions: none)
|
||||||
|
ERROR: No matching distribution found for INITools==0.1
|
||||||
|
---
|
||||||
|
tests/functional/test_freeze.py | 3 +++
|
||||||
|
tests/functional/test_install.py | 1 +
|
||||||
|
tests/functional/test_install_config.py | 1 +
|
||||||
|
tests/functional/test_install_upgrade.py | 1 +
|
||||||
|
4 files changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/tests/functional/test_freeze.py b/tests/functional/test_freeze.py
|
||||||
|
index 546a482..aabb0ca 100644
|
||||||
|
--- a/tests/functional/test_freeze.py
|
||||||
|
+++ b/tests/functional/test_freeze.py
|
||||||
|
@@ -705,6 +705,7 @@ def test_freeze_user(script, virtualenv, data):
|
||||||
|
assert 'simple2' not in result.stdout
|
||||||
|
|
||||||
|
|
||||||
|
+@pytest.mark.network
|
||||||
|
def test_freeze_path(tmpdir, script, data):
|
||||||
|
"""
|
||||||
|
Test freeze with --path.
|
||||||
|
@@ -718,6 +719,7 @@ def test_freeze_path(tmpdir, script, data):
|
||||||
|
_check_output(result.stdout, expected)
|
||||||
|
|
||||||
|
|
||||||
|
+@pytest.mark.network
|
||||||
|
def test_freeze_path_exclude_user(tmpdir, script, data):
|
||||||
|
"""
|
||||||
|
Test freeze with --path and make sure packages from --user are not picked
|
||||||
|
@@ -739,6 +741,7 @@ def test_freeze_path_exclude_user(tmpdir, script, data):
|
||||||
|
_check_output(result.stdout, expected)
|
||||||
|
|
||||||
|
|
||||||
|
+@pytest.mark.network
|
||||||
|
def test_freeze_path_multiple(tmpdir, script, data):
|
||||||
|
"""
|
||||||
|
Test freeze with multiple --path arguments.
|
||||||
|
diff --git a/tests/functional/test_install.py b/tests/functional/test_install.py
|
||||||
|
index 0bea054..b816df6 100644
|
||||||
|
--- a/tests/functional/test_install.py
|
||||||
|
+++ b/tests/functional/test_install.py
|
||||||
|
@@ -1274,6 +1274,7 @@ def test_install_no_binary_disables_building_wheels(script, data, with_wheel):
|
||||||
|
assert "Running setup.py install for upper" in str(res), str(res)
|
||||||
|
|
||||||
|
|
||||||
|
+@pytest.mark.network
|
||||||
|
def test_install_no_binary_builds_pep_517_wheel(script, data, with_wheel):
|
||||||
|
to_install = data.packages.joinpath('pep517_setup_and_pyproject')
|
||||||
|
res = script.pip(
|
||||||
|
diff --git a/tests/functional/test_install_config.py b/tests/functional/test_install_config.py
|
||||||
|
index bcf83f1..c9c60a2 100644
|
||||||
|
--- a/tests/functional/test_install_config.py
|
||||||
|
+++ b/tests/functional/test_install_config.py
|
||||||
|
@@ -133,6 +133,7 @@ def test_command_line_appends_correctly(script, data):
|
||||||
|
), 'stdout: {}'.format(result.stdout)
|
||||||
|
|
||||||
|
|
||||||
|
+@pytest.mark.network
|
||||||
|
def test_config_file_override_stack(script, virtualenv):
|
||||||
|
"""
|
||||||
|
Test config files (global, overriding a global config with a
|
||||||
|
diff --git a/tests/functional/test_install_upgrade.py b/tests/functional/test_install_upgrade.py
|
||||||
|
index 36b518b..c34a961 100644
|
||||||
|
--- a/tests/functional/test_install_upgrade.py
|
||||||
|
+++ b/tests/functional/test_install_upgrade.py
|
||||||
|
@@ -8,6 +8,7 @@ from tests.lib import assert_all_changes, pyversion
|
||||||
|
from tests.lib.local_repos import local_checkout
|
||||||
|
|
||||||
|
|
||||||
|
+@pytest.mark.network
|
||||||
|
def test_no_upgrade_unless_requested(script):
|
||||||
|
"""
|
||||||
|
No upgrade if not specifically requested.
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,23 @@
|
|||||||
|
--- /usr/bin/pip3 2019-11-12 17:37:34.793131862 +0100
|
||||||
|
+++ pip3 2019-11-12 17:40:42.014107134 +0100
|
||||||
|
@@ -2,7 +2,19 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
-from pip._internal.main import main
|
||||||
|
+try:
|
||||||
|
+ from pip._internal.main import main
|
||||||
|
+except ImportError:
|
||||||
|
+ try:
|
||||||
|
+ # If the user has downgraded pip, the above import will fail.
|
||||||
|
+ # Let's try older methods of invoking it:
|
||||||
|
+
|
||||||
|
+ # pip 19 uses this
|
||||||
|
+ from pip._internal import main
|
||||||
|
+ except ImportError:
|
||||||
|
+ # older pip versions use this
|
||||||
|
+ from pip import main
|
||||||
|
+
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(main())
|
@ -0,0 +1,94 @@
|
|||||||
|
From 8c58a99221415ca7c3d5ce50dcffefa14e421928 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tomas Orsava <torsava@redhat.com>
|
||||||
|
Date: Tue, 12 Nov 2019 17:24:20 +0100
|
||||||
|
Subject: [PATCH] Subject: Prevent removing of the system packages installed
|
||||||
|
under /usr/lib
|
||||||
|
|
||||||
|
when pip install -U is executed.
|
||||||
|
|
||||||
|
Resolves: rhbz#1550368
|
||||||
|
|
||||||
|
Co-Authored-By: Michal Cyprian <m.cyprian@gmail.com>
|
||||||
|
Co-Authored-By: Victor Stinner <vstinner@redhat.com>
|
||||||
|
---
|
||||||
|
src/pip/_internal/legacy_resolve.py | 5 ++++-
|
||||||
|
src/pip/_internal/req/req_install.py | 3 ++-
|
||||||
|
src/pip/_internal/utils/misc.py | 11 +++++++++++
|
||||||
|
3 files changed, 17 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/pip/_internal/legacy_resolve.py b/src/pip/_internal/legacy_resolve.py
|
||||||
|
index c24158f..bd92287 100644
|
||||||
|
--- a/src/pip/_internal/legacy_resolve.py
|
||||||
|
+++ b/src/pip/_internal/legacy_resolve.py
|
||||||
|
@@ -30,6 +30,7 @@ from pip._internal.exceptions import (
|
||||||
|
)
|
||||||
|
from pip._internal.utils.logging import indent_log
|
||||||
|
from pip._internal.utils.misc import (
|
||||||
|
+ dist_in_install_path,
|
||||||
|
dist_in_usersite,
|
||||||
|
ensure_dir,
|
||||||
|
normalize_version_info,
|
||||||
|
@@ -224,7 +225,9 @@ class Resolver(object):
|
||||||
|
"""
|
||||||
|
# Don't uninstall the conflict if doing a user install and the
|
||||||
|
# conflict is not a user install.
|
||||||
|
- if not self.use_user_site or dist_in_usersite(req.satisfied_by):
|
||||||
|
+ if ((not self.use_user_site
|
||||||
|
+ or dist_in_usersite(req.satisfied_by))
|
||||||
|
+ and dist_in_install_path(req.satisfied_by)):
|
||||||
|
req.conflicts_with = req.satisfied_by
|
||||||
|
req.satisfied_by = None
|
||||||
|
|
||||||
|
diff --git a/src/pip/_internal/req/req_install.py b/src/pip/_internal/req/req_install.py
|
||||||
|
index 5a8c0dc..f80ba87 100644
|
||||||
|
--- a/src/pip/_internal/req/req_install.py
|
||||||
|
+++ b/src/pip/_internal/req/req_install.py
|
||||||
|
@@ -39,6 +39,7 @@ from pip._internal.utils.misc import (
|
||||||
|
ask_path_exists,
|
||||||
|
backup_dir,
|
||||||
|
display_path,
|
||||||
|
+ dist_in_install_path,
|
||||||
|
dist_in_site_packages,
|
||||||
|
dist_in_usersite,
|
||||||
|
ensure_dir,
|
||||||
|
@@ -461,7 +462,7 @@ class InstallRequirement(object):
|
||||||
|
"lack sys.path precedence to %s in %s" %
|
||||||
|
(existing_dist.project_name, existing_dist.location)
|
||||||
|
)
|
||||||
|
- else:
|
||||||
|
+ elif dist_in_install_path(existing_dist):
|
||||||
|
self.conflicts_with = existing_dist
|
||||||
|
return True
|
||||||
|
|
||||||
|
diff --git a/src/pip/_internal/utils/misc.py b/src/pip/_internal/utils/misc.py
|
||||||
|
index b848263..5b75fed 100644
|
||||||
|
--- a/src/pip/_internal/utils/misc.py
|
||||||
|
+++ b/src/pip/_internal/utils/misc.py
|
||||||
|
@@ -28,6 +28,7 @@ from pip._vendor.six.moves.urllib.parse import unquote as urllib_unquote
|
||||||
|
from pip import __version__
|
||||||
|
from pip._internal.exceptions import CommandError
|
||||||
|
from pip._internal.locations import (
|
||||||
|
+ distutils_scheme,
|
||||||
|
get_major_minor_version,
|
||||||
|
site_packages,
|
||||||
|
user_site,
|
||||||
|
@@ -389,6 +390,16 @@ def dist_in_site_packages(dist):
|
||||||
|
return dist_location(dist).startswith(normalize_path(site_packages))
|
||||||
|
|
||||||
|
|
||||||
|
+def dist_in_install_path(dist):
|
||||||
|
+ """
|
||||||
|
+ Return True if given Distribution is installed in
|
||||||
|
+ path matching distutils_scheme layout.
|
||||||
|
+ """
|
||||||
|
+ norm_path = normalize_path(dist_location(dist))
|
||||||
|
+ return norm_path.startswith(normalize_path(
|
||||||
|
+ distutils_scheme("")['purelib'].split('python')[0]))
|
||||||
|
+
|
||||||
|
+
|
||||||
|
def dist_is_editable(dist):
|
||||||
|
# type: (Distribution) -> bool
|
||||||
|
"""
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,745 @@
|
|||||||
|
%bcond_with tests
|
||||||
|
|
||||||
|
%bcond_with doc
|
||||||
|
|
||||||
|
%global srcname pip
|
||||||
|
%global python_wheelname %{srcname}-%{version}-py2.py3-none-any.whl
|
||||||
|
%global python_wheeldir %{_datadir}/python38-wheels
|
||||||
|
|
||||||
|
%if %{with doc}
|
||||||
|
%global pypa_theme_commit_hash d2e63fbfc62af3b7050f619b2f5bb8658985b931
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%global bashcompdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null)
|
||||||
|
|
||||||
|
Name: python3x-%{srcname}
|
||||||
|
# When updating, update the bundled libraries versions bellow!
|
||||||
|
# You can use vendor_meta.sh in the dist git repo
|
||||||
|
Version: 19.3.1
|
||||||
|
Release: 6%{?dist}
|
||||||
|
Summary: A tool for installing and managing Python packages
|
||||||
|
|
||||||
|
# We bundle a lot of libraries with pip, which itself is under MIT license.
|
||||||
|
# Here is the list of the libraries with corresponding licenses:
|
||||||
|
|
||||||
|
# appdirs: MIT
|
||||||
|
# certifi: MPLv2.0
|
||||||
|
# chardet: LGPLv2
|
||||||
|
# colorama: BSD
|
||||||
|
# CacheControl: ASL 2.0
|
||||||
|
# contextlib2: Python
|
||||||
|
# distlib: Python
|
||||||
|
# distro: ASL 2.0
|
||||||
|
# html5lib: MIT
|
||||||
|
# idna: BSD
|
||||||
|
# ipaddress: Python
|
||||||
|
# msgpack: ASL 2.0
|
||||||
|
# packaging: ASL 2.0 or BSD
|
||||||
|
# pep517: MIT
|
||||||
|
# progress: ISC
|
||||||
|
# pyparsing: MIT
|
||||||
|
# pytoml: MIT
|
||||||
|
# requests: ASL 2.0
|
||||||
|
# retrying: ASL 2.0
|
||||||
|
# setuptools: MIT
|
||||||
|
# six: MIT
|
||||||
|
# urllib3: MIT
|
||||||
|
# webencodings: BSD
|
||||||
|
|
||||||
|
License: MIT and Python and ASL 2.0 and BSD and ISC and LGPLv2 and MPLv2.0 and (ASL 2.0 or BSD)
|
||||||
|
URL: https://pip.pypa.io/
|
||||||
|
Source0: https://github.com/pypa/pip/archive/%{version}/%{srcname}-%{version}.tar.gz
|
||||||
|
|
||||||
|
BuildArch: noarch
|
||||||
|
# Exclude i686 arch. Due to a modularity issue it's being added to the
|
||||||
|
# x86_64 compose of CRB, but we don't want to ship it at all.
|
||||||
|
# See: https://projects.engineering.redhat.com/browse/RCM-72605
|
||||||
|
ExcludeArch: i686
|
||||||
|
|
||||||
|
%if %{with tests}
|
||||||
|
BuildRequires: /usr/bin/git
|
||||||
|
BuildRequires: /usr/bin/bzr
|
||||||
|
BuildRequires: /usr/bin/svn
|
||||||
|
BuildRequires: python38-setuptools-wheel
|
||||||
|
BuildRequires: python38-wheel-wheel
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# Themes required to build the docs.
|
||||||
|
%if %{with doc}
|
||||||
|
Source1: https://github.com/pypa/pypa-docs-theme/archive/%{pypa_theme_commit_hash}.tar.gz
|
||||||
|
Source2: https://github.com/python/python-docs-theme/archive/2018.2.tar.gz
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# Downstream only patch
|
||||||
|
# Emit a warning to the user if pip install is run with root privileges
|
||||||
|
# Issue upstream: https://github.com/pypa/pip/issues/4288
|
||||||
|
Patch1: emit-a-warning-when-running-with-root-privileges.patch
|
||||||
|
|
||||||
|
# Add path to the doc themes to conf.py
|
||||||
|
Patch2: html_theme_path.patch
|
||||||
|
|
||||||
|
# Prevent removing of the system packages installed under /usr/lib
|
||||||
|
# when pip install -U is executed.
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1550368#c24
|
||||||
|
Patch3: remove-existing-dist-only-if-path-conflicts.patch
|
||||||
|
|
||||||
|
# Use the system level root certificate instead of the one bundled in certifi
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1655253
|
||||||
|
Patch4: dummy-certifi.patch
|
||||||
|
|
||||||
|
# Mark tests that need the Internet as network tests so we can skip them
|
||||||
|
# https://github.com/pypa/pip/pull/7359
|
||||||
|
Patch5: network-tests.patch
|
||||||
|
|
||||||
|
# Patch for CVE-2021-3572 - pip incorrectly handled unicode separators in git references
|
||||||
|
# Upstream PR: https://github.com/pypa/pip/pull/9827
|
||||||
|
# Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1962856
|
||||||
|
Patch6: CVE-2021-3572.patch
|
||||||
|
|
||||||
|
# CVE-2021-33503 Catastrophic backtracking in URL authority parser
|
||||||
|
# Tracking bug: https://bugzilla.redhat.com/show_bug.cgi?id=1968074
|
||||||
|
# Upstream fix: https://github.com/urllib3/urllib3/commit/2d4a3fee6de2fa45eb82169361918f759269b4ec
|
||||||
|
Patch7: CVE-2021-33503.patch
|
||||||
|
|
||||||
|
# Prevent infinite recursion with pip wheel with $TMPDIR in $PWD
|
||||||
|
# https://github.com/pypa/pip/pull/7873
|
||||||
|
Patch8: fix-tmpdir-infinite-recursion.patch
|
||||||
|
|
||||||
|
# Downstream only patch
|
||||||
|
# Users might have local installations of pip from using
|
||||||
|
# `pip install --user --upgrade pip` on older/newer versions.
|
||||||
|
# If they do that and they run `pip` or `pip3`, the one from /usr/bin is used.
|
||||||
|
# However that's the one from this RPM package and the import in there might
|
||||||
|
# fail (it tries to import from ~/.local, but older or newer pip is there with
|
||||||
|
# a bit different API).
|
||||||
|
# We add this patch as a dirty workaround to make /usr/bin/pip* work with
|
||||||
|
# both pip10+ (from this RPM) and older or newer (19.3+) pip (from whatever).
|
||||||
|
# A proper fix is to put ~/.local/bin in front of /usr/bin in the PATH,
|
||||||
|
# however others are against that and we cannot change it for existing
|
||||||
|
# installs/user homes anyway.
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1569488
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1571650
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1767212
|
||||||
|
# WARNING: /usr/bin/pip* are entrypoints, this cannot be applied in %%prep!
|
||||||
|
# %%patch10 doesn't work outside of %%prep, so we add it as a source
|
||||||
|
Source10: pip-allow-different-versions.patch
|
||||||
|
|
||||||
|
%description
|
||||||
|
pip is a package management system used to install and manage software packages
|
||||||
|
written in Python. Many packages can be found in the Python Package Index
|
||||||
|
(PyPI). pip is a recursive acronym that can stand for either "Pip Installs
|
||||||
|
Packages" or "Pip Installs Python".
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Virtual provides for the packages bundled by pip.
|
||||||
|
# You can find the versions in src/pip/_vendor/vendor.txt file.
|
||||||
|
%global bundled() %{expand:
|
||||||
|
Provides: bundled(python%{1}dist(appdirs)) = 1.4.3
|
||||||
|
Provides: bundled(python%{1}dist(CacheControl)) = 0.12.5
|
||||||
|
Provides: bundled(python%{1}dist(certifi)) = 2019.9.11
|
||||||
|
Provides: bundled(python%{1}dist(chardet)) = 3.0.4
|
||||||
|
Provides: bundled(python%{1}dist(colorama)) = 0.4.1
|
||||||
|
Provides: bundled(python%{1}dist(contextlib2)) = 0.6.0
|
||||||
|
Provides: bundled(python%{1}dist(distlib)) = 0.2.9.post0
|
||||||
|
Provides: bundled(python%{1}dist(distro)) = 1.4.0
|
||||||
|
Provides: bundled(python%{1}dist(html5lib)) = 1.0.1
|
||||||
|
Provides: bundled(python%{1}dist(idna)) = 2.8
|
||||||
|
Provides: bundled(python%{1}dist(ipaddress)) = 1.0.22
|
||||||
|
Provides: bundled(python%{1}dist(msgpack)) = 0.6.2
|
||||||
|
Provides: bundled(python%{1}dist(packaging)) = 19.2
|
||||||
|
Provides: bundled(python%{1}dist(pep517)) = 0.7.0
|
||||||
|
Provides: bundled(python%{1}dist(progress)) = 1.5
|
||||||
|
Provides: bundled(python%{1}dist(pyparsing)) = 2.4.2
|
||||||
|
Provides: bundled(python%{1}dist(pytoml)) = 0.1.21
|
||||||
|
Provides: bundled(python%{1}dist(requests)) = 2.22.0
|
||||||
|
Provides: bundled(python%{1}dist(retrying)) = 1.3.3
|
||||||
|
Provides: bundled(python%{1}dist(setuptools)) = 41.4.0
|
||||||
|
Provides: bundled(python%{1}dist(six)) = 1.12.0
|
||||||
|
Provides: bundled(python%{1}dist(urllib3)) = 1.25.6
|
||||||
|
Provides: bundled(python%{1}dist(webencodings)) = 0.5.1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Some manylinux1 wheels need libcrypt.so.1.
|
||||||
|
# Manylinux1, a common (as of 2019) platform tag for binary wheels, relies
|
||||||
|
# on a glibc version that included ancient crypto functions, which were
|
||||||
|
# moved to libxcrypt and then removed in:
|
||||||
|
# https://fedoraproject.org/wiki/Changes/FullyRemoveDeprecatedAndUnsafeFunctionsFromLibcrypt
|
||||||
|
# The manylinux1 standard assumed glibc would keep ABI compatibility,
|
||||||
|
# but that's only the case if libcrypt.so.1 (libxcrypt-compat) is around.
|
||||||
|
# This should be solved in the next manylinux standard (but it may be
|
||||||
|
# a long time until manylinux1 is phased out).
|
||||||
|
# See: https://github.com/pypa/manylinux/issues/305
|
||||||
|
# Note that manylinux is only applicable to x86 (both 32 and 64 bits)
|
||||||
|
%global crypt_compat_recommends() %{expand:
|
||||||
|
Recommends: (libcrypt.so.1()(64bit) if python%{1}(x86-64))
|
||||||
|
Recommends: (libcrypt.so.1 if python%{1}(x86-32))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%package -n python%{python3_pkgversion}-%{srcname}
|
||||||
|
Summary: A tool for installing and managing Python3 packages
|
||||||
|
|
||||||
|
BuildRequires: python%{python3_pkgversion}-devel
|
||||||
|
BuildRequires: python%{python3_pkgversion}-rpm-macros
|
||||||
|
BuildRequires: python%{python3_pkgversion}-setuptools
|
||||||
|
BuildRequires: bash-completion
|
||||||
|
%if %{with tests}
|
||||||
|
BuildRequires: python%{python3_pkgversion}-mock
|
||||||
|
BuildRequires: python%{python3_pkgversion}-pytest
|
||||||
|
BuildRequires: python%{python3_pkgversion}-pretend
|
||||||
|
BuildRequires: python%{python3_pkgversion}-freezegun
|
||||||
|
BuildRequires: python%{python3_pkgversion}-scripttest
|
||||||
|
BuildRequires: python%{python3_pkgversion}-virtualenv
|
||||||
|
BuildRequires: python%{python3_pkgversion}-pyyaml
|
||||||
|
%endif
|
||||||
|
BuildRequires: python%{python3_pkgversion}-wheel
|
||||||
|
BuildRequires: ca-certificates
|
||||||
|
Requires: ca-certificates
|
||||||
|
Requires: python%{python3_pkgversion}-setuptools
|
||||||
|
|
||||||
|
# Require alternatives version that implements the --keep-foreign flag
|
||||||
|
Requires(postun): alternatives >= 1.19.1-1
|
||||||
|
# python38 installs the alternatives master symlink to which we attach a slave
|
||||||
|
Requires: python38
|
||||||
|
Requires(post): python38
|
||||||
|
Requires(postun): python38
|
||||||
|
|
||||||
|
# Virtual provides for the packages bundled by pip:
|
||||||
|
%{bundled 3.8}
|
||||||
|
|
||||||
|
%{?python_provide:%python_provide python%{python3_pkgversion}-%{srcname}}
|
||||||
|
|
||||||
|
%{crypt_compat_recommends 38}
|
||||||
|
|
||||||
|
%description -n python%{python3_pkgversion}-%{srcname}
|
||||||
|
pip is a package management system used to install and manage software packages
|
||||||
|
written in Python. Many packages can be found in the Python Package Index
|
||||||
|
(PyPI). pip is a recursive acronym that can stand for either "Pip Installs
|
||||||
|
Packages" or "Pip Installs Python".
|
||||||
|
|
||||||
|
%if %{with doc}
|
||||||
|
%package doc
|
||||||
|
Summary: A documentation for a tool for installing and managing Python packages
|
||||||
|
|
||||||
|
BuildRequires: python%{python3_pkgversion}-sphinx
|
||||||
|
|
||||||
|
%description doc
|
||||||
|
A documentation for a tool for installing and managing Python packages
|
||||||
|
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%package -n python%{python3_pkgversion}-%{srcname}-wheel
|
||||||
|
Summary: The pip wheel
|
||||||
|
Requires: ca-certificates
|
||||||
|
|
||||||
|
# Virtual provides for the packages bundled by pip:
|
||||||
|
%{bundled 3.8}
|
||||||
|
|
||||||
|
%{crypt_compat_recommends 38}
|
||||||
|
|
||||||
|
%description -n python%{python3_pkgversion}-%{srcname}-wheel
|
||||||
|
A Python wheel of pip to use with venv.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q -n %{srcname}-%{version}
|
||||||
|
%if %{with doc}
|
||||||
|
pushd docs/html
|
||||||
|
tar -xf %{SOURCE1}
|
||||||
|
mv pypa-docs-theme-%{pypa_theme_commit_hash} pypa
|
||||||
|
tar -xf %{SOURCE2}
|
||||||
|
mv python-docs-theme-2018.2 python-docs-theme
|
||||||
|
popd
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%patch1 -p1
|
||||||
|
%patch2 -p1
|
||||||
|
%patch3 -p1
|
||||||
|
%patch4 -p1
|
||||||
|
%patch5 -p1
|
||||||
|
%patch6 -p1
|
||||||
|
%patch7 -p1
|
||||||
|
%patch8 -p1
|
||||||
|
|
||||||
|
# this goes together with patch4
|
||||||
|
rm src/pip/_vendor/certifi/*.pem
|
||||||
|
|
||||||
|
%if %{with tests}
|
||||||
|
# tests expect wheels in here
|
||||||
|
ln -s %{python_wheeldir} tests/data/common_wheels
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# Remove windows executable binaries
|
||||||
|
rm -v src/pip/_vendor/distlib/*.exe
|
||||||
|
sed -i '/\.exe/d' setup.py
|
||||||
|
|
||||||
|
%build
|
||||||
|
%py3_build_wheel
|
||||||
|
|
||||||
|
%if %{with doc}
|
||||||
|
export PYTHONPATH=./src/
|
||||||
|
# from tox.ini
|
||||||
|
sphinx-build-3 -b html docs/html docs/build/html
|
||||||
|
sphinx-build-3 -b man docs/man docs/build/man -c docs/html
|
||||||
|
rm docs/build/html/.buildinfo
|
||||||
|
%endif
|
||||||
|
|
||||||
|
|
||||||
|
%install
|
||||||
|
|
||||||
|
# The following is similar to %%py3_install_wheel, but we don't have
|
||||||
|
# /usr/bin/pip yet, so we install using the wheel directly.
|
||||||
|
# (This is not standard wheel usage, but the pip wheel supports it -- see
|
||||||
|
# pip/__main__.py)
|
||||||
|
%{__python3} dist/%{python_wheelname}/pip install \
|
||||||
|
-I 'dist/%{python_wheelname}' \
|
||||||
|
--root %{buildroot} \
|
||||||
|
--no-deps
|
||||||
|
|
||||||
|
%if %{with doc}
|
||||||
|
pushd docs/build/man
|
||||||
|
install -d %{buildroot}%{_mandir}/man1
|
||||||
|
for MAN in *1; do
|
||||||
|
install -pm0644 $MAN %{buildroot}%{_mandir}/man1/${MAN/pip/pip3.8}
|
||||||
|
done
|
||||||
|
popd
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# before we ln -s anything, we apply Source10 patch to all pips:
|
||||||
|
for PIP in %{buildroot}%{_bindir}/pip*; do
|
||||||
|
patch -p1 --no-backup-if-mismatch $PIP < %{SOURCE10}
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
mkdir -p %{buildroot}%{bashcompdir}
|
||||||
|
PYTHONPATH=%{buildroot}%{python3_sitelib} \
|
||||||
|
%{buildroot}%{_bindir}/pip completion --bash \
|
||||||
|
> %{buildroot}%{bashcompdir}/pip3.8
|
||||||
|
|
||||||
|
# Make bash completion apply to all the 5 symlinks we install
|
||||||
|
sed -i -e "s/^\\(complete.*\\) pip\$/\\1 pip{,-}%{python3_version}/" \
|
||||||
|
-e s/_pip_completion/_pip38_completion/ \
|
||||||
|
%{buildroot}%{bashcompdir}/pip3.8
|
||||||
|
|
||||||
|
|
||||||
|
# Provide symlinks to executables to comply with Fedora guidelines for Python
|
||||||
|
ln -s ./pip%{python3_version} %{buildroot}%{_bindir}/pip-%{python3_version}
|
||||||
|
ln -s ./pip-%{python3_version} %{buildroot}%{_bindir}/pip-3
|
||||||
|
|
||||||
|
|
||||||
|
# Make sure the INSTALLER is not pip, otherwise Patch2 won't work
|
||||||
|
# TODO Maybe we should make all our python packages have this?
|
||||||
|
echo rpm > %{buildroot}%{python3_sitelib}/pip-%{version}.dist-info/INSTALLER
|
||||||
|
|
||||||
|
mkdir -p %{buildroot}%{python_wheeldir}
|
||||||
|
install -p dist/%{python_wheelname} -t %{buildroot}%{python_wheeldir}
|
||||||
|
|
||||||
|
# RHEL8: Remove binaries conflicting with Python 3.6
|
||||||
|
rm %{buildroot}%{_bindir}/pip
|
||||||
|
rm %{buildroot}%{_bindir}/pip3
|
||||||
|
rm %{buildroot}%{_bindir}/pip-3
|
||||||
|
|
||||||
|
# All ghost files controlled by alternatives need to exist for the files
|
||||||
|
# section check to succeed
|
||||||
|
touch %{buildroot}%{_bindir}/pip3
|
||||||
|
touch %{buildroot}%{_bindir}/pip-3
|
||||||
|
|
||||||
|
|
||||||
|
%if %{with tests}
|
||||||
|
%check
|
||||||
|
# bash completion tests only work from installed package
|
||||||
|
# needs unaltered sys.path and we cannot do that in %%check
|
||||||
|
# test_pep517_and_build_options
|
||||||
|
# test_config_file_venv_option
|
||||||
|
# TODO investigate failures
|
||||||
|
# test_uninstall_non_local_distutils
|
||||||
|
pytest_k='not completion and
|
||||||
|
not test_pep517_and_build_options and
|
||||||
|
not test_config_file_venv_option and
|
||||||
|
not test_uninstall_non_local_distutils'
|
||||||
|
|
||||||
|
mkdir _bin
|
||||||
|
export PATH="$PWD/_bin:$PATH"
|
||||||
|
|
||||||
|
export PYTHONPATH=%{buildroot}%{python3_sitelib}
|
||||||
|
ln -sf %{buildroot}%{_bindir}/pip3 _bin/pip
|
||||||
|
%{__python3} -m pytest -m 'not network' -k "$(echo $pytest_k)" -v
|
||||||
|
%endif
|
||||||
|
|
||||||
|
|
||||||
|
%post -n python%{python3_pkgversion}-%{srcname}
|
||||||
|
alternatives --add-slave python3 %{_bindir}/python3.8 \
|
||||||
|
%{_bindir}/pip3 \
|
||||||
|
pip3 \
|
||||||
|
%{_bindir}/pip3.8
|
||||||
|
alternatives --add-slave python3 %{_bindir}/python3.8 \
|
||||||
|
%{_bindir}/pip-3 \
|
||||||
|
pip-3 \
|
||||||
|
%{_bindir}/pip-3.8
|
||||||
|
|
||||||
|
%postun -n python%{python3_pkgversion}-%{srcname}
|
||||||
|
# Do this only during uninstall process (not during update)
|
||||||
|
if [ $1 -eq 0 ]; then
|
||||||
|
# Only remove the slave links if the master link for python3 still exists.
|
||||||
|
# Due to a possible bug in yum, python38 gets removed before python38-pip
|
||||||
|
# even though we have declared Requires(postun): python38
|
||||||
|
EXISTS=`alternatives --display python3 | \
|
||||||
|
grep -c "^/usr/bin/python3.8 - priority [0-9]*"`
|
||||||
|
|
||||||
|
if [ $EXISTS -ne 0 ]; then
|
||||||
|
alternatives --keep-foreign --remove-slave python3 %{_bindir}/python3.8 \
|
||||||
|
pip3
|
||||||
|
alternatives --keep-foreign --remove-slave python3 %{_bindir}/python3.8 \
|
||||||
|
pip-3
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
%files -n python%{python3_pkgversion}-%{srcname}
|
||||||
|
%license LICENSE.txt
|
||||||
|
%doc README.rst
|
||||||
|
%if %{with doc}
|
||||||
|
%{_mandir}/man1/pip3.8.*
|
||||||
|
%{_mandir}/man1/pip3.8-*.*
|
||||||
|
%endif
|
||||||
|
%{_bindir}/pip%{python3_version}
|
||||||
|
%{_bindir}/pip-%{python3_version}
|
||||||
|
%{python3_sitelib}/pip*
|
||||||
|
%dir %{bashcompdir}
|
||||||
|
%{bashcompdir}/pip3.8
|
||||||
|
%ghost %{_bindir}/pip3
|
||||||
|
%ghost %{_bindir}/pip-3
|
||||||
|
|
||||||
|
%if %{with doc}
|
||||||
|
%files doc
|
||||||
|
%license LICENSE.txt
|
||||||
|
%doc README.rst
|
||||||
|
%doc docs/build/html
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%files -n python%{python3_pkgversion}-%{srcname}-wheel
|
||||||
|
%license LICENSE.txt
|
||||||
|
# we own the dir for simplicity
|
||||||
|
%dir %{python_wheeldir}/
|
||||||
|
%{python_wheeldir}/%{python_wheelname}
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Tue May 24 2022 Orion Poplawski <orion@nwra.com> - 19.3.1-6
|
||||||
|
- Backport patch to fix infinite recursion with pip wheel with $TMPDIR in $PWD
|
||||||
|
- Resolves: rhbz#2090006
|
||||||
|
|
||||||
|
* Thu Oct 14 2021 Charalampos Stratakis <cstratak@redhat.com> - 19.3.1-5
|
||||||
|
- Remove bundled windows executables
|
||||||
|
- Resolves: rhbz#2006789
|
||||||
|
|
||||||
|
* Mon Aug 02 2021 Tomas Orsava <torsava@redhat.com> - 19.3.1-4
|
||||||
|
- Adjusted the postun scriptlets to enable upgrading to RHEL 9
|
||||||
|
- Resolves: rhbz#1933055
|
||||||
|
|
||||||
|
* Wed Jun 30 2021 Lumír Balhar <lbalhar@redhat.com> - 19.3.1-3
|
||||||
|
- Fix for CVE-2021-33503 Catastrophic backtracking in URL authority parser
|
||||||
|
Resolves: rhbz#1968074
|
||||||
|
|
||||||
|
* Tue Jun 08 2021 Lumír Balhar <lbalhar@redhat.com> - 19.3.1-2
|
||||||
|
- Fix for CVE-2021-3572 - pip incorrectly handled unicode separators in git references
|
||||||
|
Resolves: rhbz#1962856
|
||||||
|
|
||||||
|
* Thu Apr 23 2020 Lumír Balhar <lbalhar@redhat.com> - 19.3.1
|
||||||
|
- Rebase to 19.3.1 to enable support for manylinux2014
|
||||||
|
Resolves: rhbz#1827623
|
||||||
|
- + some other fixes from Fedora 32 where we have the same version now
|
||||||
|
|
||||||
|
* Mon Mar 09 2020 Tomas Orsava <torsava@redhat.com> - 19.2.3-5
|
||||||
|
- Implement the alternatives system for the executables
|
||||||
|
- Resolves: rhbz#1807041
|
||||||
|
|
||||||
|
* Fri Dec 13 2019 Tomas Orsava <torsava@redhat.com> - 19.2.3-4
|
||||||
|
- Exclude unsupported i686 arch
|
||||||
|
|
||||||
|
* Wed Nov 20 2019 Tomas Orsava <torsava@redhat.com> - 19.2.3-3
|
||||||
|
- Modify for RHEL8
|
||||||
|
|
||||||
|
* Wed Oct 30 2019 Miro Hrončok <mhroncok@redhat.com> - 19.2.3-2
|
||||||
|
- Make /usr/bin/pip(3) work with user-installed pip 19.3+ (#1767212)
|
||||||
|
|
||||||
|
* Mon Sep 02 2019 Miro Hrončok <mhroncok@redhat.com> - 19.2.3-1
|
||||||
|
- Update to 19.2.3 (#1742230)
|
||||||
|
- Drop patch that should strip path prefixes from RECORD files, the paths are relative
|
||||||
|
|
||||||
|
* Wed Aug 21 2019 Petr Viktorin <pviktori@redhat.com> - 19.1.1-8
|
||||||
|
- Remove python2-pip
|
||||||
|
- Make pip bootstrap itself, rather than with an extra bootstrap RPM build
|
||||||
|
|
||||||
|
* Sat Aug 17 2019 Miro Hrončok <mhroncok@redhat.com> - 19.1.1-7
|
||||||
|
- Rebuilt for Python 3.8
|
||||||
|
|
||||||
|
* Wed Aug 14 2019 Miro Hrončok <mhroncok@redhat.com> - 19.1.1-6
|
||||||
|
- Bootstrap for Python 3.8
|
||||||
|
|
||||||
|
* Wed Aug 14 2019 Miro Hrončok <mhroncok@redhat.com> - 19.1.1-5
|
||||||
|
- Bootstrap for Python 3.8
|
||||||
|
|
||||||
|
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 19.1.1-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Jul 15 2019 Petr Viktorin <pviktori@redhat.com> - 19.1.1-3
|
||||||
|
- Recommend libcrypt.so.1 for manylinux1 compatibility
|
||||||
|
- Make /usr/bin/pip Python 3
|
||||||
|
|
||||||
|
* Mon Jun 10 2019 Miro Hrončok <mhroncok@redhat.com> - 19.1.1-2
|
||||||
|
- Fix root warning when pip is invoked via python -m pip
|
||||||
|
- Remove a redundant second WARNING prefix form the abovementioned warning
|
||||||
|
|
||||||
|
* Wed May 15 2019 Miro Hrončok <mhroncok@redhat.com> - 19.1.1-1
|
||||||
|
- Update to 19.1.1 (#1706995)
|
||||||
|
|
||||||
|
* Thu Apr 25 2019 Miro Hrončok <mhroncok@redhat.com> - 19.1-1
|
||||||
|
- Update to 19.1 (#1702525)
|
||||||
|
|
||||||
|
* Wed Mar 06 2019 Miro Hrončok <mhroncok@redhat.com> - 19.0.3-1
|
||||||
|
- Update to 19.0.3 (#1679277)
|
||||||
|
|
||||||
|
* Wed Feb 13 2019 Miro Hrončok <mhroncok@redhat.com> - 19.0.2-1
|
||||||
|
- Update to 19.0.2 (#1668492)
|
||||||
|
|
||||||
|
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 18.1-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Dec 03 2018 Miro Hrončok <mhroncok@redhat.com> - 18.1-2
|
||||||
|
- Use the system level root certificate instead of the one bundled in certifi
|
||||||
|
|
||||||
|
* Thu Nov 22 2018 Miro Hrončok <mhroncok@redhat.com> - 18.1-1
|
||||||
|
- Update to 18.1 (#1652089)
|
||||||
|
|
||||||
|
* Tue Sep 18 2018 Victor Stinner <vstinner@redhat.com> - 18.0-4
|
||||||
|
- Prevent removing of the system packages installed under /usr/lib
|
||||||
|
when pip install -U is executed. Original patch by Michal Cyprian.
|
||||||
|
Resolves: rhbz#1550368.
|
||||||
|
|
||||||
|
* Wed Aug 08 2018 Miro Hrončok <mhroncok@redhat.com> - 18.0-3
|
||||||
|
- Create python-pip-wheel package with the wheel
|
||||||
|
|
||||||
|
* Tue Jul 31 2018 Miro Hrončok <mhroncok@redhat.com> - 18.0-2
|
||||||
|
- Remove redundant "Unicode"" from License
|
||||||
|
|
||||||
|
* Mon Jul 23 2018 Marcel Plch <mplch@redhat.com> - 18.0-7
|
||||||
|
- Update to 18.0
|
||||||
|
|
||||||
|
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 9.0.3-6
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Jun 18 2018 Miro Hrončok <mhroncok@redhat.com> - 9.0.3-5
|
||||||
|
- Rebuilt for Python 3.7
|
||||||
|
|
||||||
|
* Wed Jun 13 2018 Miro Hrončok <mhroncok@redhat.com> - 9.0.3-4
|
||||||
|
- Bootstrap for Python 3.7
|
||||||
|
|
||||||
|
* Wed Jun 13 2018 Miro Hrončok <mhroncok@redhat.com> - 9.0.3-3
|
||||||
|
- Bootstrap for Python 3.7
|
||||||
|
|
||||||
|
* Fri May 04 2018 Miro Hrončok <mhroncok@redhat.com> - 9.0.3-2
|
||||||
|
- Allow to import pip10's main from pip9's /usr/bin/pip
|
||||||
|
- Do not show the "new version of pip" warning outside of venv
|
||||||
|
Resolves: rhbz#1569488
|
||||||
|
Resolves: rhbz#1571650
|
||||||
|
Resolves: rhbz#1573755
|
||||||
|
|
||||||
|
* Thu Mar 29 2018 Charalampos Stratakis <cstratak@redhat.com> - 9.0.3-1
|
||||||
|
- Update to 9.0.3
|
||||||
|
|
||||||
|
* Wed Feb 21 2018 Lumír Balhar <lbalhar@redhat.com> - 9.0.1-16
|
||||||
|
- Include built HTML documentation (in the new -doc subpackage) and man page
|
||||||
|
|
||||||
|
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 9.0.1-15
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Dec 04 2017 Charalampos Stratakis <cstratak@redhat.com> - 9.0.1-14
|
||||||
|
- Reintroduce the ipaddress module in the python3 subpackage.
|
||||||
|
|
||||||
|
* Mon Nov 20 2017 Charalampos Stratakis <cstratak@redhat.com> - 9.0.1-13
|
||||||
|
- Add virtual provides for the bundled libraries. (rhbz#1096912)
|
||||||
|
|
||||||
|
* Tue Aug 29 2017 Tomas Orsava <torsava@redhat.com> - 9.0.1-12
|
||||||
|
- Switch macros to bcond's and make Python 2 optional to facilitate building
|
||||||
|
the Python 2 and Python 3 modules
|
||||||
|
|
||||||
|
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 9.0.1-11
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue May 23 2017 Tomas Orsava <torsava@redhat.com> - 9.0.1-10
|
||||||
|
- Modernized package descriptions
|
||||||
|
Resolves: rhbz#1452568
|
||||||
|
|
||||||
|
* Tue Mar 21 2017 Tomas Orsava <torsava@redhat.com> - 9.0.1-9
|
||||||
|
- Fix typo in the sudo pip warning
|
||||||
|
|
||||||
|
* Fri Mar 03 2017 Tomas Orsava <torsava@redhat.com> - 9.0.1-8
|
||||||
|
- Patch 1 update: No sudo pip warning in venv or virtualenv
|
||||||
|
|
||||||
|
* Thu Feb 23 2017 Tomas Orsava <torsava@redhat.com> - 9.0.1-7
|
||||||
|
- Patch 1 update: Customize the warning with the proper version of the pip
|
||||||
|
command
|
||||||
|
|
||||||
|
* Tue Feb 14 2017 Tomas Orsava <torsava@redhat.com> - 9.0.1-6
|
||||||
|
- Added patch 1: Emit a warning when running with root privileges
|
||||||
|
|
||||||
|
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 9.0.1-5
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Jan 02 2017 Tomas Orsava <torsava@redhat.com> - 9.0.1-4
|
||||||
|
- Provide symlinks to executables to comply with Fedora guidelines for Python
|
||||||
|
Resolves: rhbz#1406922
|
||||||
|
|
||||||
|
* Fri Dec 09 2016 Charalampos Stratakis <cstratak@redhat.com> - 9.0.1-3
|
||||||
|
- Rebuild for Python 3.6 with wheel
|
||||||
|
|
||||||
|
* Fri Dec 09 2016 Charalampos Stratakis <cstratak@redhat.com> - 9.0.1-2
|
||||||
|
- Rebuild for Python 3.6 without wheel
|
||||||
|
|
||||||
|
* Fri Nov 18 2016 Orion Poplawski <orion@cora.nwra.com> - 9.0.1-1
|
||||||
|
- Update to 9.0.1
|
||||||
|
|
||||||
|
* Fri Nov 18 2016 Orion Poplawski <orion@cora.nwra.com> - 8.1.2-5
|
||||||
|
- Enable EPEL Python 3 builds
|
||||||
|
- Use new python macros
|
||||||
|
- Cleanup spec
|
||||||
|
|
||||||
|
* Fri Aug 05 2016 Tomas Orsava <torsava@redhat.com> - 8.1.2-4
|
||||||
|
- Updated the test sources
|
||||||
|
|
||||||
|
* Fri Aug 05 2016 Tomas Orsava <torsava@redhat.com> - 8.1.2-3
|
||||||
|
- Moved python-pip into the python2-pip subpackage
|
||||||
|
- Added the python_provide macro
|
||||||
|
|
||||||
|
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 8.1.2-2
|
||||||
|
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
|
||||||
|
|
||||||
|
* Tue May 17 2016 Tomas Orsava <torsava@redhat.com> - 8.1.2-1
|
||||||
|
- Update to 8.1.2
|
||||||
|
- Moved to a new PyPI URL format
|
||||||
|
- Updated the prefix-stripping patch because of upstream changes in pip/wheel.py
|
||||||
|
|
||||||
|
* Mon Feb 22 2016 Slavek Kabrda <bkabrda@redhat.com> - 8.0.2-1
|
||||||
|
- Update to 8.0.2
|
||||||
|
|
||||||
|
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 7.1.0-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Oct 14 2015 Robert Kuska <rkuska@redhat.com> - 7.1.0-3
|
||||||
|
- Rebuilt for Python3.5 rebuild
|
||||||
|
- With wheel set to 1
|
||||||
|
|
||||||
|
* Tue Oct 13 2015 Robert Kuska <rkuska@redhat.com> - 7.1.0-2
|
||||||
|
- Rebuilt for Python3.5 rebuild
|
||||||
|
|
||||||
|
* Wed Jul 01 2015 Slavek Kabrda <bkabrda@redhat.com> - 7.1.0-1
|
||||||
|
- Update to 7.1.0
|
||||||
|
|
||||||
|
* Tue Jun 30 2015 Ville Skyttä <ville.skytta@iki.fi> - 7.0.3-3
|
||||||
|
- Install bash completion
|
||||||
|
- Ship LICENSE.txt as %%license where available
|
||||||
|
|
||||||
|
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 7.0.3-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Jun 04 2015 Matej Stuchlik <mstuchli@redhat.com> - 7.0.3-1
|
||||||
|
- Update to 7.0.3
|
||||||
|
|
||||||
|
* Fri Mar 06 2015 Matej Stuchlik <mstuchli@redhat.com> - 6.0.8-1
|
||||||
|
- Update to 6.0.8
|
||||||
|
|
||||||
|
* Thu Dec 18 2014 Slavek Kabrda <bkabrda@redhat.com> - 1.5.6-5
|
||||||
|
- Only enable tests on Fedora.
|
||||||
|
|
||||||
|
* Mon Dec 01 2014 Matej Stuchlik <mstuchli@redhat.com> - 1.5.6-4
|
||||||
|
- Add tests
|
||||||
|
- Add patch skipping tests requiring Internet access
|
||||||
|
|
||||||
|
* Tue Nov 18 2014 Matej Stuchlik <mstuchli@redhat.com> - 1.5.6-3
|
||||||
|
- Added patch for local dos with predictable temp dictionary names
|
||||||
|
(http://seclists.org/oss-sec/2014/q4/655)
|
||||||
|
|
||||||
|
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5.6-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sun May 25 2014 Matej Stuchlik <mstuchli@redhat.com> - 1.5.6-1
|
||||||
|
- Update to 1.5.6
|
||||||
|
|
||||||
|
* Fri Apr 25 2014 Matej Stuchlik <mstuchli@redhat.com> - 1.5.4-4
|
||||||
|
- Rebuild as wheel for Python 3.4
|
||||||
|
|
||||||
|
* Thu Apr 24 2014 Matej Stuchlik <mstuchli@redhat.com> - 1.5.4-3
|
||||||
|
- Disable build_wheel
|
||||||
|
|
||||||
|
* Thu Apr 24 2014 Matej Stuchlik <mstuchli@redhat.com> - 1.5.4-2
|
||||||
|
- Rebuild as wheel for Python 3.4
|
||||||
|
|
||||||
|
* Mon Apr 07 2014 Matej Stuchlik <mstuchli@redhat.com> - 1.5.4-1
|
||||||
|
- Updated to 1.5.4
|
||||||
|
|
||||||
|
* Mon Oct 14 2013 Tim Flink <tflink@fedoraproject.org> - 1.4.1-1
|
||||||
|
- Removed patch for CVE 2013-2099 as it has been included in the upstream 1.4.1 release
|
||||||
|
- Updated version to 1.4.1
|
||||||
|
|
||||||
|
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.1-5
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jul 16 2013 Toshio Kuratomi <toshio@fedoraproject.org> - 1.3.1-4
|
||||||
|
- Fix for CVE 2013-2099
|
||||||
|
|
||||||
|
* Thu May 23 2013 Tim Flink <tflink@fedoraproject.org> - 1.3.1-3
|
||||||
|
- undo python2 executable rename to python-pip. fixes #958377
|
||||||
|
- fix summary to match upstream
|
||||||
|
|
||||||
|
* Mon May 06 2013 Kevin Kofler <Kevin@tigcc.ticalc.org> - 1.3.1-2
|
||||||
|
- Fix main package Summary, it's for Python 2, not 3 (#877401)
|
||||||
|
|
||||||
|
* Fri Apr 26 2013 Jon Ciesla <limburgher@gmail.com> - 1.3.1-1
|
||||||
|
- Update to 1.3.1, fix for CVE-2013-1888.
|
||||||
|
|
||||||
|
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2.1-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Oct 09 2012 Tim Flink <tflink@fedoraproject.org> - 1.2.1-2
|
||||||
|
- Fixing files for python3-pip
|
||||||
|
|
||||||
|
* Thu Oct 04 2012 Tim Flink <tflink@fedoraproject.org> - 1.2.1-1
|
||||||
|
- Update to upstream 1.2.1
|
||||||
|
- Change binary from pip-python to python-pip (RHBZ#855495)
|
||||||
|
- Add alias from python-pip to pip-python, to be removed at a later date
|
||||||
|
|
||||||
|
* Tue May 15 2012 Tim Flink <tflink@fedoraproject.org> - 1.1.0-1
|
||||||
|
- Update to upstream 1.1.0
|
||||||
|
|
||||||
|
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.2-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sat Oct 22 2011 Tim Flink <tflink@fedoraproject.org> - 1.0.2-1
|
||||||
|
- update to 1.0.2 and added python3 subpackage
|
||||||
|
|
||||||
|
* Wed Jun 22 2011 Tim Flink <tflink@fedoraproject.org> - 0.8.3-1
|
||||||
|
- update to 0.8.3 and project home page
|
||||||
|
|
||||||
|
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.8.2-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Dec 20 2010 Luke Macken <lmacken@redhat.com> - 0.8.2-1
|
||||||
|
- update to 0.8.2 of pip
|
||||||
|
* Mon Aug 30 2010 Peter Halliday <phalliday@excelsiorsystems.net> - 0.8-1
|
||||||
|
- update to 0.8 of pip
|
||||||
|
* Thu Jul 22 2010 David Malcolm <dmalcolm@redhat.com> - 0.7.2-5
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
|
||||||
|
|
||||||
|
* Wed Jul 7 2010 Peter Halliday <phalliday@excelsiorsystems.net> - 0.7.2-1
|
||||||
|
- update to 0.7.2 of pip
|
||||||
|
* Sun May 23 2010 Peter Halliday <phalliday@excelsiorsystems.net> - 0.7.1-1
|
||||||
|
- update to 0.7.1 of pip
|
||||||
|
* Fri Jan 1 2010 Peter Halliday <phalliday@excelsiorsystems.net> - 0.6.1.4
|
||||||
|
- fix dependency issue
|
||||||
|
* Fri Dec 18 2009 Peter Halliday <phalliday@excelsiorsystems.net> - 0.6.1-2
|
||||||
|
- fix spec file
|
||||||
|
* Thu Dec 17 2009 Peter Halliday <phalliday@excelsiorsystems.net> - 0.6.1-1
|
||||||
|
- upgrade to 0.6.1 of pip
|
||||||
|
* Mon Aug 31 2009 Peter Halliday <phalliday@excelsiorsystems.net> - 0.4-1
|
||||||
|
- Initial package
|
Loading…
Reference in new issue