]> granicus.if.org Git - python/commitdiff
Issue #26661: setup.py now detects system libffi with multiarch wrapper.
authorChristian Heimes <christian@python.org>
Sun, 18 Sep 2016 12:33:30 +0000 (14:33 +0200)
committerChristian Heimes <christian@python.org>
Sun, 18 Sep 2016 12:33:30 +0000 (14:33 +0200)
Misc/NEWS
setup.py

index 49879f542ec9bfb215f588237fea95989f3faab3..c23ec97dc3fd5903b8ca2a70ae3bbc4ce7150572 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -364,6 +364,8 @@ Windows
 Build
 -----
 
+- Issue #26661: setup.py now detects system libffi with multiarch wrapper.
+
 - Issue #28066: Fix the logic that searches build directories for generated
   include files when building outside the source tree.
 
index 174ce720c8029b3d3ea1f1eab79978c0c146e783..29ff1a836d642a1f27b4b0be0098e9941c2d4d5b 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1997,14 +1997,16 @@ class PyBuildExt(build_ext):
             ffi_inc = find_file('ffi.h', [], inc_dirs)
         if ffi_inc is not None:
             ffi_h = ffi_inc[0] + '/ffi.h'
-            with open(ffi_h) as fp:
-                while 1:
-                    line = fp.readline()
-                    if not line:
-                        ffi_inc = None
-                        break
-                    if line.startswith('#define LIBFFI_H'):
+            with open(ffi_h) as f:
+                for line in f:
+                    line = line.strip()
+                    if line.startswith(('#define LIBFFI_H',
+                                        '#define ffi_wrapper_h')):
                         break
+                else:
+                    ffi_inc = None
+                    print('Header file {} does not define LIBFFI_H or '
+                          'ffi_wrapper_h'.format(ffi_h))
         ffi_lib = None
         if ffi_inc is not None:
             for lib_name in ('ffi_convenience', 'ffi_pic', 'ffi'):