setup.py: report modules which built but import failed (closes #21282)
Patch by Lukas Vacek.
This commit is contained in:
parent
30a6df5b64
commit
5c2ac8c1c6
|
@ -1356,6 +1356,7 @@ Roger Upole
|
|||
Daniel Urban
|
||||
Michael Urman
|
||||
Hector Urtubia
|
||||
Lukas Vacek
|
||||
Ville Vainio
|
||||
Andi Vajda
|
||||
Case Van Horsen
|
||||
|
|
16
setup.py
16
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
|
||||
|
|
Loading…
Reference in New Issue