diff options
author | Emmanuel Leblond <emmanuel.leblond@gmail.com> | 2022-01-13 21:50:56 +0100 |
---|---|---|
committer | Emmanuel Leblond <emmanuel.leblond@gmail.com> | 2022-01-13 21:54:04 +0100 |
commit | 9b781d24c02f1f94deb3ef29e81d5bd68a6b96c1 (patch) | |
tree | f0fe0dbf0b38d897b4cbc9fe4a5a95756beea427 | |
parent | 99b46a2615905fa4b6af0cb78da3c8b1950d8b90 (diff) |
Improve python helper modules declaration in SConstruct for compatibility with Python 3.6 and import against helper modules's parent path
-rw-r--r-- | SConstruct | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/SConstruct b/SConstruct index 03b409e09b..b8063589c6 100644 --- a/SConstruct +++ b/SConstruct @@ -10,6 +10,7 @@ import os import pickle import sys import time +from types import ModuleType from collections import OrderedDict from importlib.util import spec_from_file_location, module_from_spec @@ -24,6 +25,21 @@ def _helper_module(name, path): module = module_from_spec(spec) spec.loader.exec_module(module) sys.modules[name] = module + # Ensure the module's parents are in loaded to avoid loading the wrong parent + # when doing "import foo.bar" while only "foo.bar" as declared as helper module + child_module = module + parent_name = name + while True: + try: + parent_name, child_name = parent_name.rsplit(".", 1) + except ValueError: + break + try: + parent_module = sys.modules[parent_name] + except KeyError: + parent_module = ModuleType(parent_name) + sys.modules[parent_name] = parent_module + setattr(parent_module, child_name, child_module) _helper_module("gles3_builders", "gles3_builders.py") |