diff --git a/Lib/distutils/command/sdist.py b/Lib/distutils/command/sdist.py index 291e8123b8c..a1a0fb799d6 100644 --- a/Lib/distutils/command/sdist.py +++ b/Lib/distutils/command/sdist.py @@ -14,7 +14,7 @@ from distutils.text_file import TextFile from distutils.errors import * from distutils.filelist import FileList from distutils import log - +from distutils.util import convert_path def show_formats (): """Print all possible values for the 'formats' option (used by @@ -311,9 +311,17 @@ class sdist (Command): # getting distribution.data_files if self.distribution.has_data_files(): - for dirname, filenames in self.distribution.data_files: - for filename in filenames: - self.filelist.append(os.path.join(dirname, filename)) + for item in self.distribution.data_files: + if isinstance(item, str): # plain file + item = convert_path(item) + if os.path.isfile(item): + self.filelist.append(item) + else: # a (dirname, filenames) tuple + dirname, filenames = item + for f in filenames: + f = convert_path(os.path.join(dirname, f)) + if os.path.isfile(f): + self.filelist.append(f) if self.distribution.has_ext_modules(): build_ext = self.get_finalized_command('build_ext') diff --git a/Lib/distutils/tests/test_sdist.py b/Lib/distutils/tests/test_sdist.py index b4e922f90c7..82e5dc6db6a 100644 --- a/Lib/distutils/tests/test_sdist.py +++ b/Lib/distutils/tests/test_sdist.py @@ -26,6 +26,8 @@ README setup.py data%(sep)sdata.dt scripts%(sep)sscript.py +some%(sep)sfile.txt +some%(sep)sother_file.txt somecode%(sep)s__init__.py somecode%(sep)sdoc.dat somecode%(sep)sdoc.txt @@ -167,7 +169,14 @@ class sdistTestCase(support.LoggingSilencer, PyPIRCCommandTestCase): data_dir = join(self.tmp_dir, 'data') os.mkdir(data_dir) self.write_file((data_dir, 'data.dt'), '#') - dist.data_files = [('data', ['data.dt'])] + some_dir = join(self.tmp_dir, 'some') + os.mkdir(some_dir) + self.write_file((some_dir, 'file.txt'), '#') + self.write_file((some_dir, 'other_file.txt'), '#') + + dist.data_files = [('data', ['data.dt', 'notexisting']), + 'some/file.txt', + 'some/other_file.txt'] # adding a script script_dir = join(self.tmp_dir, 'scripts') @@ -175,7 +184,6 @@ class sdistTestCase(support.LoggingSilencer, PyPIRCCommandTestCase): self.write_file((script_dir, 'script.py'), '#') dist.scripts = [join('scripts', 'script.py')] - cmd.formats = ['zip'] cmd.use_defaults = True @@ -194,7 +202,7 @@ class sdistTestCase(support.LoggingSilencer, PyPIRCCommandTestCase): zip_file.close() # making sure everything was added - self.assertEquals(len(content), 8) + self.assertEquals(len(content), 10) # checking the MANIFEST manifest = open(join(self.tmp_dir, 'MANIFEST')).read()