[Python-checkins] r73792 - in python/branches/py3k: 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:33:29 CEST 2009


Author: tarek.ziade
Date: Fri Jul  3 10:33:28 2009
New Revision: 73792

Log:
Merged revisions 73790 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r73790 | tarek.ziade | 2009-07-03 10:22:56 +0200 (Fri, 03 Jul 2009) | 1 line
  
  Fixed #6403 : package path usage for build_ext
........


Modified:
   python/branches/py3k/   (props changed)
   python/branches/py3k/Lib/distutils/command/build_ext.py
   python/branches/py3k/Lib/distutils/tests/test_build_ext.py
   python/branches/py3k/Misc/NEWS

Modified: python/branches/py3k/Lib/distutils/command/build_ext.py
==============================================================================
--- python/branches/py3k/Lib/distutils/command/build_ext.py	(original)
+++ python/branches/py3k/Lib/distutils/command/build_ext.py	Fri Jul  3 10:33:28 2009
@@ -631,17 +631,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/branches/py3k/Lib/distutils/tests/test_build_ext.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_build_ext.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_build_ext.py	Fri Jul  3 10:33:28 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/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Fri Jul  3 10:33:28 2009
@@ -863,6 +863,8 @@
 Library
 -------
 
+- Issue #6403: Fixed package path usage in build_ext.
+
 - Issue #6365: Distutils build_ext inplace mode was copying the compiled 
   extension in a subdirectory if the extension name had dots.
 


More information about the Python-checkins mailing list