Revert "drop easy_install script and associated documentation"

This reverts commit 6e1838a9fb.
This commit is contained in:
Benoit Pierre 2019-11-16 23:30:10 +01:00
parent 68dbb70370
commit a1e956b20f
8 changed files with 1184 additions and 21 deletions

1085
docs/easy_install.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@ -21,4 +21,5 @@ Documentation content:
python3
development
roadmap
Deprecated: Easy Install <easy_install>
history

5
easy_install.py Normal file
View File

@ -0,0 +1,5 @@
"""Run the EasyInstall command"""
if __name__ == '__main__':
from setuptools.command.easy_install import main
main()

View File

@ -51,6 +51,7 @@ classifiers =
[options]
zip_safe = True
python_requires = >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*
py_modules = easy_install
packages = find:
[options.packages.find]

View File

@ -31,6 +31,22 @@ def read_commands():
return command_ns['__all__']
def _gen_console_scripts():
yield "easy_install = setuptools.command.easy_install:main"
# Gentoo distributions manage the python-version-specific scripts
# themselves, so those platforms define an environment variable to
# suppress the creation of the version-specific scripts.
var_names = (
'SETUPTOOLS_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT',
'DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT',
)
if any(os.environ.get(var) not in (None, "", "0") for var in var_names):
return
tmpl = "easy_install-{shortver} = setuptools.command.easy_install:main"
yield tmpl.format(shortver='{}.{}'.format(*sys.version_info))
package_data = dict(
setuptools=['script (dev).tmpl', 'script.tmpl', 'site-patch.py'],
)
@ -109,6 +125,9 @@ setup_params = dict(
"depends.txt = setuptools.command.egg_info:warn_depends_obsolete",
"dependency_links.txt = setuptools.command.egg_info:overwrite_arg",
],
"console_scripts": list(_gen_console_scripts()),
"setuptools.installation":
['eggsecutable = setuptools.command.easy_install:bootstrap'],
},
dependency_links=[
pypi_link(

View File

@ -73,7 +73,7 @@ warnings.filterwarnings("default", category=pkg_resources.PEP440Warning)
__all__ = [
'samefile', 'easy_install', 'PthDistributions', 'extract_wininst_cfg',
'get_exe_prefixes',
'main', 'get_exe_prefixes',
]
@ -2289,6 +2289,59 @@ def current_umask():
return tmp
def bootstrap():
# This function is called when setuptools*.egg is run using /bin/sh
import setuptools
argv0 = os.path.dirname(setuptools.__path__[0])
sys.argv[0] = argv0
sys.argv.append(argv0)
main()
def main(argv=None, **kw):
from setuptools import setup
from setuptools.dist import Distribution
class DistributionWithoutHelpCommands(Distribution):
common_usage = ""
def _show_help(self, *args, **kw):
with _patch_usage():
Distribution._show_help(self, *args, **kw)
if argv is None:
argv = sys.argv[1:]
with _patch_usage():
setup(
script_args=['-q', 'easy_install', '-v'] + argv,
script_name=sys.argv[0] or 'easy_install',
distclass=DistributionWithoutHelpCommands,
**kw
)
@contextlib.contextmanager
def _patch_usage():
import distutils.core
USAGE = textwrap.dedent("""
usage: %(script)s [options] requirement_or_url ...
or: %(script)s --help
""").lstrip()
def gen_usage(script_name):
return USAGE % dict(
script=os.path.basename(script_name),
)
saved = distutils.core.gen_usage
distutils.core.gen_usage = gen_usage
try:
yield
finally:
distutils.core.gen_usage = saved
class EasyInstallDeprecationWarning(SetuptoolsDeprecationWarning):
"""Class for warning about deprecations in EasyInstall in SetupTools. Not ignored by default, unlike DeprecationWarning."""

View File

@ -467,24 +467,22 @@ class TestSetupRequires:
"""
monkeypatch.setenv(str('PIP_RETRIES'), str('0'))
monkeypatch.setenv(str('PIP_TIMEOUT'), str('0'))
monkeypatch.setenv(str('PIP_VERBOSE'), str('1'))
# create an sdist that has a build-time dependency.
with TestSetupRequires.create_sdist() as dist_file:
with contexts.tempdir() as temp_dir:
setup_py = os.path.join(temp_dir, 'setup.py')
with open(setup_py, 'w') as fp:
fp.write('__import__("setuptools").setup()')
temp_install_dir = os.path.join(temp_dir, 'target')
os.mkdir(temp_install_dir)
with contexts.environment(PYTHONPATH=temp_install_dir):
# attempt to install the dist. It should
# fail because it doesn't exist.
with pytest.raises(SystemExit):
run_setup(setup_py, ['easy_install',
'--exclude-scripts',
'--index-url', mock_index.url,
'--install-dir', temp_install_dir,
dist_file])
with contexts.quiet():
# create an sdist that has a build-time dependency.
with TestSetupRequires.create_sdist() as dist_file:
with contexts.tempdir() as temp_install_dir:
with contexts.environment(PYTHONPATH=temp_install_dir):
ei_params = [
'--index-url', mock_index.url,
'--exclude-scripts',
'--install-dir', temp_install_dir,
dist_file,
]
with sandbox.save_argv(['easy_install']):
# attempt to install the dist. It should
# fail because it doesn't exist.
with pytest.raises(SystemExit):
easy_install_pkg.main(ei_params)
# there should have been one requests to the server
assert [r.path for r in mock_index.requests] == ['/does-not-exist/']

View File

@ -64,8 +64,9 @@ class TestNamespaces:
target.mkdir()
install_cmd = [
sys.executable,
'-m', 'pip.__main__', 'install',
'-t', str(target), str(pkg),
'-m', 'easy_install',
'-d', str(target),
str(pkg),
]
with test.test.paths_on_pythonpath([str(target)]):
subprocess.check_call(install_cmd)