Commit 822eb844 authored by Tarek Ziadé's avatar Tarek Ziadé

Merged revisions 72781 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r72781 | tarek.ziade | 2009-05-19 18:17:21 +0200 (Tue, 19 May 2009) | 1 line

  fixed the 'package' option of build_ext
........
parent f84d7e9e
...@@ -629,18 +629,20 @@ class build_ext(Command): ...@@ -629,18 +629,20 @@ class build_ext(Command):
The file is located in `build_lib` or directly in the package The file is located in `build_lib` or directly in the package
(inplace option). (inplace option).
""" """
if self.inplace:
fullname = self.get_ext_fullname(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('.') modpath = fullname.split('.')
package = '.'.join(modpath[0:-1]) package = '.'.join(modpath[0:-1])
base = modpath[-1] base = modpath[-1]
build_py = self.get_finalized_command('build_py') build_py = self.get_finalized_command('build_py')
package_dir = os.path.abspath(build_py.get_package_dir(package)) 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) return os.path.join(package_dir, filename)
else:
filename = self.get_ext_filename(ext_name)
return os.path.join(self.build_lib, filename)
def get_ext_fullname(self, ext_name): def get_ext_fullname(self, ext_name):
"""Returns the fullname of a given extension name. """Returns the fullname of a given extension name.
......
...@@ -336,6 +336,28 @@ class BuildExtTestCase(TempdirManager, ...@@ -336,6 +336,28 @@ class BuildExtTestCase(TempdirManager,
so_dir = os.path.dirname(so_file) so_dir = os.path.dirname(so_file)
self.assertEquals(so_dir, cmd.build_lib) 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(): def test_suite():
src = _get_source_filename() src = _get_source_filename()
if not os.path.exists(src): if not os.path.exists(src):
......
...@@ -618,6 +618,9 @@ Core and Builtins ...@@ -618,6 +618,9 @@ Core and Builtins
Library 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 #6053: Fixed distutils tests on win32. patch by Hirokazu Yamamoto.
- Issue #6046: Fixed the library extension when distutils build_ext is used - Issue #6046: Fixed the library extension when distutils build_ext is used
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment