[Python-checkins] cpython: setup.py: report modules which built but import failed (closes #21282)

benjamin.peterson python-checkins at python.org
Wed Apr 30 17:06:39 CEST 2014


http://hg.python.org/cpython/rev/981242c8fc86
changeset:   90526:981242c8fc86
user:        Benjamin Peterson <benjamin at python.org>
date:        Wed Apr 30 11:06:16 2014 -0400
summary:
  setup.py: report modules which built but import failed (closes #21282)

Patch by Lukas Vacek.

files:
  Misc/ACKS |   1 +
  setup.py  |  16 +++++++++++++---
  2 files changed, 14 insertions(+), 3 deletions(-)


diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1356,6 +1356,7 @@
 Daniel Urban
 Michael Urman
 Hector Urtubia
+Lukas Vacek
 Ville Vainio
 Andi Vajda
 Case Van Horsen
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -167,6 +167,7 @@
     def __init__(self, dist):
         build_ext.__init__(self, dist)
         self.failed = []
+        self.failed_on_import = []
 
     def build_extensions(self):
 
@@ -247,8 +248,9 @@
         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 @@
             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 @@
         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

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list