Commit ae2382ce authored by Tarek Ziadé's avatar Tarek Ziadé

Fixed 6365: wrong inplace location for build_ext if the extension had dots

parent b7c54cd2
......@@ -643,16 +643,16 @@ class build_ext (Command):
(inplace option).
"""
fullname = self.get_ext_fullname(ext_name)
filename = self.get_ext_filename(fullname)
modpath = fullname.split('.')
package = '.'.join(modpath[0:-1])
base = modpath[-1]
filename = self.get_ext_filename(base)
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)
......
......@@ -339,10 +339,9 @@ class BuildExtTestCase(support.TempdirManager,
# inplace = 0, cmd.package = 'bar'
cmd.package = 'bar'
path = cmd.get_ext_fullpath('foo')
# checking that the last directory is bar
# checking that the last directory is the build_dir
path = os.path.split(path)[0]
lastdir = os.path.split(path)[-1]
self.assertEquals(lastdir, cmd.package)
self.assertEquals(path, cmd.build_lib)
# inplace = 1, cmd.package = 'bar'
cmd.inplace = 1
......@@ -358,6 +357,19 @@ class BuildExtTestCase(support.TempdirManager,
lastdir = os.path.split(path)[-1]
self.assertEquals(lastdir, cmd.package)
def test_build_ext_inplace(self):
etree_c = os.path.join(self.tmp_dir, 'lxml.etree.c')
etree_ext = Extension('lxml.etree', [etree_c])
dist = Distribution({'name': 'lxml', 'ext_modules': [etree_ext]})
cmd = build_ext(dist)
cmd.inplace = 1
cmd.distribution.package_dir = {'': 'src'}
cmd.distribution.packages = ['lxml', 'lxml.html']
curdir = os.getcwd()
wanted = os.path.join(curdir, 'src', 'lxml', 'etree.so')
path = cmd.get_ext_fullpath('lxml.etree')
self.assertEquals(wanted, path)
def test_suite():
src = _get_source_filename()
if not os.path.exists(src):
......
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