diff options
author | Tarek Ziadé <ziade.tarek@gmail.com> | 2009-05-19 16:17:21 (GMT) |
---|---|---|
committer | Tarek Ziadé <ziade.tarek@gmail.com> | 2009-05-19 16:17:21 (GMT) |
commit | 7d7127dd84189bf9325ef3fc5f3c18359fa34f30 (patch) | |
tree | 0a2d4d21cee7370a1b7c76f04060171a7daf9154 | |
parent | f03c42f0ab4b4fc0705e2717a89af1254820fed3 (diff) | |
download | cpython-7d7127dd84189bf9325ef3fc5f3c18359fa34f30.zip cpython-7d7127dd84189bf9325ef3fc5f3c18359fa34f30.tar.gz cpython-7d7127dd84189bf9325ef3fc5f3c18359fa34f30.tar.bz2 |
fixed the 'package' option of build_ext
-rw-r--r-- | Lib/distutils/command/build_ext.py | 24 | ||||
-rw-r--r-- | Lib/distutils/tests/test_build_ext.py | 22 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 38 insertions, 11 deletions
diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py index 0c77aaa..293c214 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -642,19 +642,21 @@ class build_ext (Command): The file is located in `build_lib` or directly in the package (inplace option). """ - if self.inplace: - fullname = self.get_ext_fullname(ext_name) - modpath = fullname.split('.') - package = '.'.join(modpath[0:-1]) - base = modpath[-1] - build_py = self.get_finalized_command('build_py') - package_dir = os.path.abspath(build_py.get_package_dir(package)) - filename = self.get_ext_filename(ext_name) - return os.path.join(package_dir, filename) - else: - filename = self.get_ext_filename(ext_name) + fullname = self.get_ext_fullname(ext_name) + filename = self.get_ext_filename(fullname) + if not self.inplace: + # no further work needed return os.path.join(self.build_lib, filename) + # the inplace option requires to find the package directory + # using the build_py command + modpath = fullname.split('.') + package = '.'.join(modpath[0:-1]) + base = modpath[-1] + build_py = self.get_finalized_command('build_py') + package_dir = os.path.abspath(build_py.get_package_dir(package)) + return os.path.join(package_dir, filename) + def get_ext_fullname(self, ext_name): """Returns the fullname of a given extension name. diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py index f1f80be..12b8581 100644 --- a/Lib/distutils/tests/test_build_ext.py +++ b/Lib/distutils/tests/test_build_ext.py @@ -336,6 +336,28 @@ class BuildExtTestCase(support.TempdirManager, so_dir = os.path.dirname(so_file) self.assertEquals(so_dir, cmd.build_lib) + # inplace = 0, cmd.package = 'bar' + cmd.package = 'bar' + path = cmd.get_ext_fullpath('foo') + # checking that the last directory is bar + path = os.path.split(path)[0] + lastdir = os.path.split(path)[-1] + self.assertEquals(lastdir, cmd.package) + + # inplace = 1, cmd.package = 'bar' + cmd.inplace = 1 + other_tmp_dir = os.path.realpath(self.mkdtemp()) + old_wd = os.getcwd() + os.chdir(other_tmp_dir) + try: + path = cmd.get_ext_fullpath('foo') + finally: + os.chdir(old_wd) + # checking that the last directory is bar + path = os.path.split(path)[0] + lastdir = os.path.split(path)[-1] + self.assertEquals(lastdir, cmd.package) + def test_suite(): src = _get_source_filename() if not os.path.exists(src): @@ -298,6 +298,9 @@ Core and Builtins Library ------- +- Issue #6062: In distutils, fixed the package option of build_ext. Feedback + and tests on pywin32 by Tim Golden. + - Issue #6053: Fixed distutils tests on win32. patch by Hirokazu Yamamoto. - Issue #6046: Fixed the library extension when distutils build_ext is used |