SF 1668596/1720897: distutils now copies data files

even if package_dir is empty.

This needs to be backported.  I'm too tired tonight.  It would be great
if someone backports this if the buildbots are ok with it.  Otherwise,
I will try to get to it tomorrow.
This commit is contained in:
Neal Norwitz 2007-06-01 07:29:12 +00:00
parent 19a7daa507
commit 4a700bb469
4 changed files with 42 additions and 1 deletions

View File

@ -114,7 +114,9 @@ class build_py (Command):
build_dir = os.path.join(*([self.build_lib] + package.split('.'))) build_dir = os.path.join(*([self.build_lib] + package.split('.')))
# Length of path to strip from found files # Length of path to strip from found files
plen = len(src_dir)+1 plen = 0
if src_dir:
plen = len(src_dir)+1
# Strip directory from globbed filenames # Strip directory from globbed filenames
filenames = [ filenames = [

View File

@ -1,10 +1,13 @@
"""Tests for distutils.command.build_py.""" """Tests for distutils.command.build_py."""
import os import os
import sys
import StringIO
import unittest import unittest
from distutils.command.build_py import build_py from distutils.command.build_py import build_py
from distutils.core import Distribution from distutils.core import Distribution
from distutils.errors import DistutilsFileError
from distutils.tests import support from distutils.tests import support
@ -53,6 +56,38 @@ class BuildPyTestCase(support.TempdirManager,
self.assert_("__init__.pyc" in files) self.assert_("__init__.pyc" in files)
self.assert_("README.txt" in files) self.assert_("README.txt" in files)
def test_empty_package_dir (self):
# See SF 1668596/1720897.
cwd = os.getcwd()
# create the distribution files.
sources = self.mkdtemp()
open(os.path.join(sources, "__init__.py"), "w").close()
testdir = os.path.join(sources, "doc")
os.mkdir(testdir)
open(os.path.join(testdir, "testfile"), "w").close()
os.chdir(sources)
sys.stdout = StringIO.StringIO()
try:
dist = Distribution({"packages": ["pkg"],
"package_dir": {"pkg": ""},
"package_data": {"pkg": ["doc/*"]}})
# script_name need not exist, it just need to be initialized
dist.script_name = os.path.join(sources, "setup.py")
dist.script_args = ["build"]
dist.parse_command_line()
try:
dist.run_commands()
except DistutilsFileError:
self.fail("failed package_data test when package_dir is ''")
finally:
# Restore state.
os.chdir(cwd)
sys.stdout = sys.__stdout__
def test_suite(): def test_suite():
return unittest.makeSuite(BuildPyTestCase) return unittest.makeSuite(BuildPyTestCase)

View File

@ -159,6 +159,7 @@ John DeGood
Vincent Delft Vincent Delft
Erik Demaine Erik Demaine
Roger Dev Roger Dev
Raghuram Devarakonda
Toby Dickenson Toby Dickenson
Mark Dickinson Mark Dickinson
Yves Dionne Yves Dionne

View File

@ -220,6 +220,9 @@ Core and builtins
Library Library
------- -------
- SF 1668596/1720897: distutils now copies data files
even if package_dir is empty.
- sha now raises a DeprecationWarning upon import. - sha now raises a DeprecationWarning upon import.
- md5 now raises a DeprecationWarning upon import. - md5 now raises a DeprecationWarning upon import.