]> granicus.if.org Git - python/commitdiff
setup.py: report modules which built but import failed (closes #21282)
authorBenjamin Peterson <benjamin@python.org>
Wed, 30 Apr 2014 15:06:16 +0000 (11:06 -0400)
committerBenjamin Peterson <benjamin@python.org>
Wed, 30 Apr 2014 15:06:16 +0000 (11:06 -0400)
Patch by Lukas Vacek.

Misc/ACKS
setup.py

index 82c6f71b3dd8a7fbacbab1c9dad0b548cfc38c5a..827c784e602690fd299d72cafc49802a49c503c8 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1356,6 +1356,7 @@ Roger Upole
 Daniel Urban
 Michael Urman
 Hector Urtubia
+Lukas Vacek
 Ville Vainio
 Andi Vajda
 Case Van Horsen
index c0bb513296ed4f1e2815b22ce35be57210764f27..e6b4d515ad94459a85ee70b8e744ec513605997b 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -167,6 +167,7 @@ class PyBuildExt(build_ext):
     def __init__(self, dist):
         build_ext.__init__(self, dist)
         self.failed = []
+        self.failed_on_import = []
 
     def build_extensions(self):
 
@@ -247,8 +248,9 @@ class PyBuildExt(build_ext):
         build_ext.build_extensions(self)
 
         longest = max([len(e.name) for e in self.extensions])
-        if self.failed:
-            longest = max(longest, max([len(name) for name in self.failed]))
+        if self.failed or self.failed_on_import:
+            all_failed = self.failed + self.failed_on_import
+            longest = max(longest, max([len(name) for name in all_failed]))
 
         def print_three_column(lst):
             lst.sort(key=str.lower)
@@ -276,6 +278,14 @@ class PyBuildExt(build_ext):
             print_three_column(failed)
             print()
 
+        if self.failed_on_import:
+            failed = self.failed_on_import[:]
+            print()
+            print("Following modules built successfully"
+                  " but were removed because they could not be imported:")
+            print_three_column(failed)
+            print()
+
     def build_extension(self, ext):
 
         if ext.name == '_ctypes':
@@ -334,7 +344,7 @@ class PyBuildExt(build_ext):
         try:
             importlib._bootstrap._SpecMethods(spec).load()
         except ImportError as why:
-            self.failed.append(ext.name)
+            self.failed_on_import.append(ext.name)
             self.announce('*** WARNING: renaming "%s" since importing it'
                           ' failed: %s' % (ext.name, why), level=3)
             assert not self.inplace