From: DongHun Kwak Date: Mon, 14 Jan 2019 01:43:26 +0000 (+0900) Subject: Imported Upstream version 40.4.0 X-Git-Tag: upstream/40.4.0^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cba2ff6e2a777177da8c4190d8737d798370f8fb;p=platform%2Fupstream%2Fpython-setuptools.git Imported Upstream version 40.4.0 --- diff --git a/CHANGES.rst b/CHANGES.rst index 5da4acf..189ea80 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,9 @@ +v40.4.0 +------- + +* #1481: Join the sdist ``--dist-dir`` and the ``build_meta`` sdist directory argument to point to the same target (meaning the build frontend no longer needs to clean manually the dist dir to avoid multiple sdist presence, and setuptools no longer needs to handle conflicts between the two). + + v40.3.0 ------- diff --git a/setup.cfg b/setup.cfg index f013124..7c87806 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 40.3.0 +current_version = 40.4.0 commit = True tag = True diff --git a/setup.py b/setup.py index 38057fd..3ecf1d2 100755 --- a/setup.py +++ b/setup.py @@ -89,7 +89,7 @@ def pypi_link(pkg_filename): setup_params = dict( name="setuptools", - version="40.3.0", + version="40.4.0", description=( "Easily download, build, install, upgrade, and uninstall " "Python packages" diff --git a/setuptools/build_meta.py b/setuptools/build_meta.py index f7f9bda..0067a7a 100644 --- a/setuptools/build_meta.py +++ b/setuptools/build_meta.py @@ -171,11 +171,9 @@ def build_sdist(sdist_directory, config_settings=None): config_settings = _fix_config(config_settings) sdist_directory = os.path.abspath(sdist_directory) sys.argv = sys.argv[:1] + ['sdist'] + \ - config_settings["--global-option"] + config_settings["--global-option"] + \ + ["--dist-dir", sdist_directory] _run_setup() - if sdist_directory != 'dist': - shutil.rmtree(sdist_directory) - shutil.copytree('dist', sdist_directory) sdists = [f for f in os.listdir(sdist_directory) if f.endswith('.tar.gz')] diff --git a/setuptools/tests/test_build_meta.py b/setuptools/tests/test_build_meta.py index f1d517b..7b195e2 100644 --- a/setuptools/tests/test_build_meta.py +++ b/setuptools/tests/test_build_meta.py @@ -1,6 +1,7 @@ from __future__ import unicode_literals import os +import shutil import pytest @@ -9,7 +10,6 @@ from .textwrap import DALS __metaclass__ = type - futures = pytest.importorskip('concurrent.futures') importlib = pytest.importorskip('importlib') @@ -23,12 +23,14 @@ class BuildBackendBase: class BuildBackend(BuildBackendBase): """PEP 517 Build Backend""" + def __init__(self, *args, **kwargs): super(BuildBackend, self).__init__(*args, **kwargs) self.pool = futures.ProcessPoolExecutor() def __getattr__(self, name): """Handles aribrary function invocations on the build backend.""" + def method(*args, **kw): root = os.path.abspath(self.cwd) caller = BuildBackendCaller(root, self.env, self.backend_name) @@ -51,6 +53,7 @@ defns = [ 'setup.py': DALS(""" __import__('setuptools').setup( name='foo', + version='0.0.0', py_modules=['hello'], setup_requires=['six'], ) @@ -65,6 +68,7 @@ defns = [ assert __name__ == '__main__' __import__('setuptools').setup( name='foo', + version='0.0.0', py_modules=['hello'], setup_requires=['six'], ) @@ -82,6 +86,7 @@ defns = [ assert variable __import__('setuptools').setup( name='foo', + version='0.0.0', py_modules=['hello'], setup_requires=['six'], ) @@ -146,3 +151,32 @@ def test_prepare_metadata_for_build_wheel_with_str(build_backend): dist_info = build_backend.prepare_metadata_for_build_wheel(dist_dir) assert os.path.isfile(os.path.join(dist_dir, dist_info, 'METADATA')) + + +def test_build_sdist_explicit_dist(build_backend): + # explicitly specifying the dist folder should work + # the folder sdist_directory and the ``--dist-dir`` can be the same + dist_dir = os.path.abspath('dist') + sdist_name = build_backend.build_sdist(dist_dir) + assert os.path.isfile(os.path.join(dist_dir, sdist_name)) + + +def test_build_sdist_version_change(build_backend): + sdist_into_directory = os.path.abspath("out_sdist") + os.makedirs(sdist_into_directory) + + sdist_name = build_backend.build_sdist(sdist_into_directory) + assert os.path.isfile(os.path.join(sdist_into_directory, sdist_name)) + + # if the setup.py changes subsequent call of the build meta should still succeed, given the + # sdist_directory the frontend specifies is empty + with open(os.path.abspath("setup.py"), 'rt') as file_handler: + content = file_handler.read() + with open(os.path.abspath("setup.py"), 'wt') as file_handler: + file_handler.write(content.replace("version='0.0.0'", "version='0.0.1'")) + + shutil.rmtree(sdist_into_directory) + os.makedirs(sdist_into_directory) + + sdist_name = build_backend.build_sdist("out_sdist") + assert os.path.isfile(os.path.join(os.path.abspath("out_sdist"), sdist_name))