From 23ef1e0f7032db16bd7075a86da31f66cbf3b85e Mon Sep 17 00:00:00 2001 From: "Andrii Doroshenko (Xrayez)" Date: Fri, 20 Mar 2020 22:49:38 +0200 Subject: [PATCH] SCons: Dump construction environment to a file A new `methods.dump(env)` is added to dump the construction environment used by SCons to build Godot to a `.scons_env.json`. The file can be used for debugging purposes and any external tool. (cherry picked from commit 42bee75e86e81fcd9b51b2e960d13b89b18ad4bf) --- .gitignore | 3 +++ SConstruct | 5 ++++- methods.py | 11 +++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 55d14e51bdc..2c8288e0921 100644 --- a/.gitignore +++ b/.gitignore @@ -339,6 +339,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 d129fd32a66..b3d033dc90d 100644 --- a/SConstruct +++ b/SConstruct @@ -641,6 +641,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 3f5800a229d..c96bfa94444 100644 --- a/methods.py +++ b/methods.py @@ -837,3 +837,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 "<>" % (type(obj).__qualname__) + + with open(".scons_env.json", "w") as f: + dump(env.Dictionary(), f, indent=4, default=non_serializable)