[Python-checkins] r73790 - in python/trunk: Lib/distutils/command/build_ext.py Lib/distutils/tests/test_build_ext.py Misc/NEWS
tarek.ziade
python-checkins at python.org
Fri Jul 3 10:22:57 CEST 2009
Author: tarek.ziade
Date: Fri Jul 3 10:22:56 2009
New Revision: 73790
Log:
Fixed #6403 : package path usage for build_ext
Modified:
python/trunk/Lib/distutils/command/build_ext.py
python/trunk/Lib/distutils/tests/test_build_ext.py
python/trunk/Misc/NEWS
Modified: python/trunk/Lib/distutils/command/build_ext.py
==============================================================================
--- python/trunk/Lib/distutils/command/build_ext.py (original)
+++ python/trunk/Lib/distutils/command/build_ext.py Fri Jul 3 10:22:56 2009
@@ -644,17 +644,23 @@
"""
fullname = self.get_ext_fullname(ext_name)
modpath = fullname.split('.')
- package = '.'.join(modpath[0:-1])
- base = modpath[-1]
- filename = self.get_ext_filename(base)
+ filename = self.get_ext_filename(modpath[-1])
+
if not self.inplace:
# no further work needed
+ # returning :
+ # build_dir/package/path/filename
+ filename = os.path.join(*modpath[:-1]+[filename])
return os.path.join(self.build_lib, filename)
# the inplace option requires to find the package directory
- # using the build_py command
+ # using the build_py command for that
+ package = '.'.join(modpath[0:-1])
build_py = self.get_finalized_command('build_py')
package_dir = os.path.abspath(build_py.get_package_dir(package))
+
+ # returning
+ # package_dir/filename
return os.path.join(package_dir, filename)
def get_ext_fullname(self, ext_name):
Modified: python/trunk/Lib/distutils/tests/test_build_ext.py
==============================================================================
--- python/trunk/Lib/distutils/tests/test_build_ext.py (original)
+++ python/trunk/Lib/distutils/tests/test_build_ext.py Fri Jul 3 10:22:56 2009
@@ -337,7 +337,8 @@
self.assertEquals(so_dir, cmd.build_lib)
# inplace = 0, cmd.package = 'bar'
- cmd.package = 'bar'
+ build_py = cmd.get_finalized_command('build_py')
+ build_py.package_dir = {'': 'bar'}
path = cmd.get_ext_fullpath('foo')
# checking that the last directory is the build_dir
path = os.path.split(path)[0]
@@ -355,12 +356,14 @@
# checking that the last directory is bar
path = os.path.split(path)[0]
lastdir = os.path.split(path)[-1]
- self.assertEquals(lastdir, cmd.package)
+ self.assertEquals(lastdir, 'bar')
- 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]})
+ def test_ext_fullpath(self):
+ # building lxml.etree inplace
+ #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]})
+ dist = Distribution()
cmd = build_ext(dist)
cmd.inplace = 1
cmd.distribution.package_dir = {'': 'src'}
@@ -370,6 +373,28 @@
path = cmd.get_ext_fullpath('lxml.etree')
self.assertEquals(wanted, path)
+ # building lxml.etree not inplace
+ cmd.inplace = 0
+ cmd.build_lib = os.path.join(curdir, 'tmpdir')
+ wanted = os.path.join(curdir, 'tmpdir', 'lxml', 'etree.so')
+ path = cmd.get_ext_fullpath('lxml.etree')
+ self.assertEquals(wanted, path)
+
+ # building twisted.runner.portmap not inplace
+ build_py = cmd.get_finalized_command('build_py')
+ build_py.package_dir = {}
+ cmd.distribution.packages = ['twisted', 'twisted.runner.portmap']
+ path = cmd.get_ext_fullpath('twisted.runner.portmap')
+ wanted = os.path.join(curdir, 'tmpdir', 'twisted', 'runner',
+ 'portmap.so')
+ self.assertEquals(wanted, path)
+
+ # building twisted.runner.portmap inplace
+ cmd.inplace = 1
+ path = cmd.get_ext_fullpath('twisted.runner.portmap')
+ wanted = os.path.join(curdir, 'twisted', 'runner', 'portmap.so')
+ self.assertEquals(wanted, path)
+
def test_suite():
src = _get_source_filename()
if not os.path.exists(src):
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Fri Jul 3 10:22:56 2009
@@ -347,6 +347,8 @@
Library
-------
+- Issue #6403: Fixed package path usage in build_ext.
+
- Issues #5155, 5313, 5331: multiprocessing.Process._bootstrap was
unconditionally calling "os.close(sys.stdin.fileno())" resulting in file
descriptor errors
More information about the Python-checkins
mailing list