]> granicus.if.org Git - python/commitdiff
- Issue #11715: Fix multiarch detection without having Debian development
authordoko@ubuntu.com <doko@ubuntu.com>
Fri, 21 Sep 2012 11:52:29 +0000 (13:52 +0200)
committerdoko@ubuntu.com <doko@ubuntu.com>
Fri, 21 Sep 2012 11:52:29 +0000 (13:52 +0200)
  tools (dpkg-dev) installed.

Misc/NEWS
setup.py

index 5113ec08ce999f1f5a2bedd2c9b7190c8ed258c5..c7e18277fbd80d3334421da082f07190656e231d 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -541,6 +541,9 @@ Tests
 Build
 -----
 
+- Issue #11715: Fix multiarch detection without having Debian development
+  tools (dpkg-dev) installed.
+
 - Issue #15819: Make sure we can build Python out-of-tree from a readonly
   source directory.  (Somewhat related to Issue #9860.)
 
index 10ce79e29c23eecb919d2c42afc1533b221b83f4..0dea9248e6f4c6f19368e79540d811fcd633e1eb 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -376,6 +376,27 @@ class PyBuildExt(build_ext):
     def add_multiarch_paths(self):
         # Debian/Ubuntu multiarch support.
         # https://wiki.ubuntu.com/MultiarchSpec
+        cc = sysconfig.get_config_var('CC')
+        tmpfile = os.path.join(self.build_temp, 'multiarch')
+        if not os.path.exists(self.build_temp):
+            os.makedirs(self.build_temp)
+        ret = os.system(
+            '%s -print-multiarch > %s 2> /dev/null' % (cc, tmpfile))
+        multiarch_path_component = ''
+        try:
+            if ret >> 8 == 0:
+                with open(tmpfile) as fp:
+                    multiarch_path_component = fp.readline().strip()
+        finally:
+            os.unlink(tmpfile)
+
+        if multiarch_path_component != '':
+            add_dir_to_list(self.compiler.library_dirs,
+                            '/usr/lib/' + multiarch_path_component)
+            add_dir_to_list(self.compiler.include_dirs,
+                            '/usr/include/' + multiarch_path_component)
+            return
+
         if not find_executable('dpkg-architecture'):
             return
         tmpfile = os.path.join(self.build_temp, 'multiarch')