SCons: Fix import clash between Godot and system modules
See #24965 for details. `sys.path.insert` is hacky, but should work relatively well for both Python 2 and Python 3. When we eventually deprecate Python 2 support, we could look into using importlib. Fixes #24965.
This commit is contained in:
parent
f614f15506
commit
644b266bae
21
SConstruct
21
SConstruct
|
@ -2,11 +2,13 @@
|
||||||
|
|
||||||
EnsureSConsVersion(0, 98, 1)
|
EnsureSConsVersion(0, 98, 1)
|
||||||
|
|
||||||
import string
|
# System
|
||||||
import os
|
|
||||||
import os.path
|
|
||||||
import glob
|
import glob
|
||||||
|
import os
|
||||||
|
import string
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
# Local
|
||||||
import methods
|
import methods
|
||||||
import gles_builders
|
import gles_builders
|
||||||
from platform_methods import run_in_subprocess
|
from platform_methods import run_in_subprocess
|
||||||
|
@ -27,7 +29,7 @@ for x in sorted(glob.glob("platform/*")):
|
||||||
continue
|
continue
|
||||||
tmppath = "./" + x
|
tmppath = "./" + x
|
||||||
|
|
||||||
sys.path.append(tmppath)
|
sys.path.insert(0, tmppath)
|
||||||
import detect
|
import detect
|
||||||
|
|
||||||
if (os.path.exists(x + "/export/export.cpp")):
|
if (os.path.exists(x + "/export/export.cpp")):
|
||||||
|
@ -130,7 +132,6 @@ customs = ['custom.py']
|
||||||
|
|
||||||
profile = ARGUMENTS.get("profile", False)
|
profile = ARGUMENTS.get("profile", False)
|
||||||
if profile:
|
if profile:
|
||||||
import os.path
|
|
||||||
if os.path.isfile(profile):
|
if os.path.isfile(profile):
|
||||||
customs.append(profile)
|
customs.append(profile)
|
||||||
elif os.path.isfile(profile + ".py"):
|
elif os.path.isfile(profile + ".py"):
|
||||||
|
@ -210,7 +211,7 @@ for k in platform_opts.keys():
|
||||||
for x in module_list:
|
for x in module_list:
|
||||||
module_enabled = True
|
module_enabled = True
|
||||||
tmppath = "./modules/" + x
|
tmppath = "./modules/" + x
|
||||||
sys.path.append(tmppath)
|
sys.path.insert(0, tmppath)
|
||||||
import config
|
import config
|
||||||
enabled_attr = getattr(config, "is_enabled", None)
|
enabled_attr = getattr(config, "is_enabled", None)
|
||||||
if (callable(enabled_attr) and not config.is_enabled()):
|
if (callable(enabled_attr) and not config.is_enabled()):
|
||||||
|
@ -250,8 +251,8 @@ elif env_base['p'] != "":
|
||||||
env_base["platform"] = selected_platform
|
env_base["platform"] = selected_platform
|
||||||
|
|
||||||
if selected_platform in platform_list:
|
if selected_platform in platform_list:
|
||||||
|
tmppath = "./platform/" + selected_platform
|
||||||
sys.path.append("./platform/" + selected_platform)
|
sys.path.insert(0, tmppath)
|
||||||
import detect
|
import detect
|
||||||
if "create" in dir(detect):
|
if "create" in dir(detect):
|
||||||
env = detect.create(env_base)
|
env = detect.create(env_base)
|
||||||
|
@ -377,7 +378,7 @@ if selected_platform in platform_list:
|
||||||
|
|
||||||
suffix += env.extra_suffix
|
suffix += env.extra_suffix
|
||||||
|
|
||||||
sys.path.remove("./platform/" + selected_platform)
|
sys.path.remove(tmppath)
|
||||||
sys.modules.pop('detect')
|
sys.modules.pop('detect')
|
||||||
|
|
||||||
env.module_list = []
|
env.module_list = []
|
||||||
|
@ -387,7 +388,7 @@ if selected_platform in platform_list:
|
||||||
if not env['module_' + x + '_enabled']:
|
if not env['module_' + x + '_enabled']:
|
||||||
continue
|
continue
|
||||||
tmppath = "./modules/" + x
|
tmppath = "./modules/" + x
|
||||||
sys.path.append(tmppath)
|
sys.path.insert(0, tmppath)
|
||||||
env.current_module = x
|
env.current_module = x
|
||||||
import config
|
import config
|
||||||
# can_build changed number of arguments between 3.0 (1) and 3.1 (2),
|
# can_build changed number of arguments between 3.0 (1) and 3.1 (2),
|
||||||
|
|
Loading…
Reference in New Issue