]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
complementary fix for #7115
authorTarek Ziadé <ziade.tarek@gmail.com>
Tue, 13 Oct 2009 21:17:34 +0000 (21:17 +0000)
committerTarek Ziadé <ziade.tarek@gmail.com>
Tue, 13 Oct 2009 21:17:34 +0000 (21:17 +0000)
Lib/distutils/command/build_ext.py
Lib/distutils/tests/test_build_ext.py

index abc15841801ddf9dff6437061c207cb51a6de1e1..8248089fec061f52e5e8b04ee93ff39a1c694d6f 100644 (file)
@@ -628,8 +628,10 @@ class build_ext (Command):
         The file is located in `build_lib` or directly in the package
         (inplace option).
         """
-        if os.sep in ext_name:
-            ext_name = ext_name.replace(os.sep, '.')
+        # makes sure the extension name is only using dots
+        all_dots = string.maketrans('/'+os.sep, '..')
+        ext_name = ext_name.translate(all_dots)
+
         fullname = self.get_ext_fullname(ext_name)
         modpath = fullname.split('.')
         filename = self.get_ext_filename(ext_name)
index 5dffe2ca03f3b3ec7eda3c748c582425c3365b43..93d18814bcc28df036e78a4495e793c7c413a2dc 100644 (file)
@@ -373,6 +373,19 @@ class BuildExtTestCase(support.TempdirManager,
         wanted = os.path.join(cmd.build_lib, 'UpdateManager', 'fdsend' + ext)
         self.assertEquals(ext_path, wanted)
 
+    def test_build_ext_path_cross_platform(self):
+        if sys.platform != 'win32':
+            return
+        dist = Distribution({'name': 'UpdateManager'})
+        cmd = build_ext(dist)
+        cmd.ensure_finalized()
+        ext = sysconfig.get_config_var("SO")
+        # this needs to work even under win32
+        ext_name = 'UpdateManager/fdsend'
+        ext_path = cmd.get_ext_fullpath(ext_name)
+        wanted = os.path.join(cmd.build_lib, 'UpdateManager', 'fdsend' + ext)
+        self.assertEquals(ext_path, wanted)
+
 def test_suite():
     if not sysconfig.python_build:
         if test_support.verbose: