summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--SConstruct5
-rw-r--r--methods.py11
3 files changed, 18 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index dfb1490aa9..ca27e42016 100644
--- a/.gitignore
+++ b/.gitignore
@@ -340,6 +340,9 @@ platform/windows/godot_res.res
# Visual Studio Code workspace file
*.code-workspace
+# Scons construction environment dump
+.scons_env.json
+
# Scons progress indicator
.scons_node_count
diff --git a/SConstruct b/SConstruct
index fe94715bba..fa13eec502 100644
--- a/SConstruct
+++ b/SConstruct
@@ -688,6 +688,9 @@ elif selected_platform != "":
else:
sys.exit(255)
-# The following only makes sense when the env is defined, and assumes it is
+# The following only makes sense when the 'env' is defined, and assumes it is.
if "env" in locals():
methods.show_progress(env)
+ # TODO: replace this with `env.Dump(format="json")`
+ # once we start requiring SCons 4.0 as min version.
+ methods.dump(env)
diff --git a/methods.py b/methods.py
index cb3b39ac68..e315030e4c 100644
--- a/methods.py
+++ b/methods.py
@@ -778,3 +778,14 @@ def show_progress(env):
progress_finish_command = Command("progress_finish", [], progress_finish)
AlwaysBuild(progress_finish_command)
+
+
+def dump(env):
+ # Dumps latest build information for debugging purposes and external tools.
+ from json import dump
+
+ def non_serializable(obj):
+ return "<<non-serializable: %s>>" % (type(obj).__qualname__)
+
+ with open(".scons_env.json", "w") as f:
+ dump(env.Dictionary(), f, indent=4, default=non_serializable)