|
|
@@ -1249,8 +1249,12 @@ class Freezer:
|
|
|
pass
|
|
|
|
|
|
# Check if any new modules we found have "hidden" imports
|
|
|
- for origName in list(self.mf.modules.keys()):
|
|
|
+ checkHiddenImports = set(self.mf.modules.keys())
|
|
|
+ while checkHiddenImports:
|
|
|
+ origName = next(iter(checkHiddenImports))
|
|
|
+ checkHiddenImports.discard(origName)
|
|
|
hidden = self.hiddenImports.get(origName, [])
|
|
|
+ preModules = frozenset(self.mf.modules.keys())
|
|
|
for modname in hidden:
|
|
|
if modname.endswith('.*'):
|
|
|
mdefs = self._gatherSubmodules(modname, implicit = True)
|
|
|
@@ -1264,6 +1268,9 @@ class Freezer:
|
|
|
self.__loadModule(self.ModuleDef(modname, implicit = True))
|
|
|
except ImportError:
|
|
|
pass
|
|
|
+ addedModules = set(self.mf.modules.keys())
|
|
|
+ addedModules -= preModules
|
|
|
+ checkHiddenImports |= addedModules
|
|
|
|
|
|
# Special case for sysconfig, which depends on a platform-specific
|
|
|
# sysconfigdata module on POSIX systems.
|