fix support for easy_install's find-links option in setup.cfg
This commit is contained in:
parent
e84f616a65
commit
6f46a4b703
|
@ -0,0 +1 @@
|
|||
Fix support for easy_install's ``find-links`` option in ``setup.cfg``.
|
|
@ -7,11 +7,20 @@ from distutils.errors import DistutilsError
|
|||
|
||||
import pkg_resources
|
||||
from setuptools.command.easy_install import easy_install
|
||||
from setuptools.extern import six
|
||||
from setuptools.wheel import Wheel
|
||||
|
||||
from .py31compat import TemporaryDirectory
|
||||
|
||||
|
||||
def _fixup_find_links(find_links):
|
||||
"""Ensure find-links option end-up being a list of strings."""
|
||||
if isinstance(find_links, six.string_types):
|
||||
return find_links.split()
|
||||
assert isinstance(find_links, (tuple, list))
|
||||
return find_links
|
||||
|
||||
|
||||
def _legacy_fetch_build_egg(dist, req):
|
||||
"""Fetch an egg needed for building.
|
||||
|
||||
|
@ -31,7 +40,7 @@ def _legacy_fetch_build_egg(dist, req):
|
|||
if dist.dependency_links:
|
||||
links = dist.dependency_links[:]
|
||||
if 'find_links' in opts:
|
||||
links = opts['find_links'][1] + links
|
||||
links = _fixup_find_links(opts['find_links'][1]) + links
|
||||
opts['find_links'] = ('setup', links)
|
||||
install_dir = dist.get_egg_cache_dir()
|
||||
cmd = easy_install(
|
||||
|
@ -84,7 +93,7 @@ def fetch_build_egg(dist, req):
|
|||
else:
|
||||
index_url = None
|
||||
if 'find_links' in opts:
|
||||
find_links = opts['find_links'][1][:]
|
||||
find_links = _fixup_find_links(opts['find_links'][1])[:]
|
||||
else:
|
||||
find_links = []
|
||||
if dist.dependency_links:
|
||||
|
|
|
@ -744,6 +744,44 @@ class TestSetupRequires:
|
|||
eggs = list(map(str, pkg_resources.find_distributions(os.path.join(test_pkg, '.eggs'))))
|
||||
assert eggs == ['dep 1.0']
|
||||
|
||||
@pytest.mark.parametrize('use_legacy_installer,with_dependency_links_in_setup_py',
|
||||
itertools.product((False, True), (False, True)))
|
||||
def test_setup_requires_with_find_links_in_setup_cfg(self, monkeypatch,
|
||||
use_legacy_installer,
|
||||
with_dependency_links_in_setup_py):
|
||||
monkeypatch.setenv(str('PIP_RETRIES'), str('0'))
|
||||
monkeypatch.setenv(str('PIP_TIMEOUT'), str('0'))
|
||||
with contexts.save_pkg_resources_state():
|
||||
with contexts.tempdir() as temp_dir:
|
||||
make_trivial_sdist(os.path.join(temp_dir, 'python-xlib-42.tar.gz'), 'python-xlib', '42')
|
||||
test_pkg = os.path.join(temp_dir, 'test_pkg')
|
||||
test_setup_py = os.path.join(test_pkg, 'setup.py')
|
||||
test_setup_cfg = os.path.join(test_pkg, 'setup.cfg')
|
||||
os.mkdir(test_pkg)
|
||||
with open(test_setup_py, 'w') as fp:
|
||||
if with_dependency_links_in_setup_py:
|
||||
dependency_links = [os.path.join(temp_dir, 'links')]
|
||||
else:
|
||||
dependency_links = []
|
||||
fp.write(DALS(
|
||||
'''
|
||||
from setuptools import installer, setup
|
||||
if {use_legacy_installer}:
|
||||
installer.fetch_build_egg = installer._legacy_fetch_build_egg
|
||||
setup(setup_requires='python-xlib==42',
|
||||
dependency_links={dependency_links!r})
|
||||
''').format(use_legacy_installer=use_legacy_installer,
|
||||
dependency_links=dependency_links))
|
||||
with open(test_setup_cfg, 'w') as fp:
|
||||
fp.write(DALS(
|
||||
'''
|
||||
[easy_install]
|
||||
index_url = {index_url}
|
||||
find_links = {find_links}
|
||||
''').format(index_url=os.path.join(temp_dir, 'index'),
|
||||
find_links=temp_dir))
|
||||
run_setup(test_setup_py, [str('--version')])
|
||||
|
||||
|
||||
def make_trivial_sdist(dist_path, distname, version):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue