From 8fb23c559944e698d68ab777f52c0b11bf2e6e41 Mon Sep 17 00:00:00 2001 From: rdb Date: Sat, 6 Dec 2025 21:05:40 +0100 Subject: [PATCH] dist: Fix inability to pick up nested hidden modules --- direct/src/dist/FreezeTool.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/direct/src/dist/FreezeTool.py b/direct/src/dist/FreezeTool.py index c6c38d8602..a883ec5fa2 100644 --- a/direct/src/dist/FreezeTool.py +++ b/direct/src/dist/FreezeTool.py @@ -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.