diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2018-09-18 09:08:04 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-18 09:08:04 -0400 |
commit | 91e2d0e5b26bfd74a2b9b9d6863c0600275eef06 (patch) | |
tree | 0f6e93934317bbf8aefd67f9dbfecd814db9eeec | |
parent | b711d1b53b2556b47273c28dae3345a664c54972 (diff) | |
parent | da5f8619e1cd3e08c8a7d9df1d3753b8f176485b (diff) | |
download | external_python_setuptools-91e2d0e5b26bfd74a2b9b9d6863c0600275eef06.tar.gz external_python_setuptools-91e2d0e5b26bfd74a2b9b9d6863c0600275eef06.tar.bz2 external_python_setuptools-91e2d0e5b26bfd74a2b9b9d6863c0600275eef06.zip |
Merge pull request #1481 from gaborbernat/sdist-dir
build_meta sdist directory delegate to --dist-dir
-rw-r--r-- | changelog.d/1481.change.rst | 1 | ||||
-rw-r--r-- | setuptools/build_meta.py | 6 | ||||
-rw-r--r-- | setuptools/tests/test_build_meta.py | 36 |
3 files changed, 38 insertions, 5 deletions
diff --git a/changelog.d/1481.change.rst b/changelog.d/1481.change.rst new file mode 100644 index 00000000..463ba6d9 --- /dev/null +++ b/changelog.d/1481.change.rst @@ -0,0 +1 @@ +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). diff --git a/setuptools/build_meta.py b/setuptools/build_meta.py index f7f9bda2..0067a7ac 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 f1d517bb..7b195e2c 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)) |