From 2949ab0707e7d52b8acf9890b0ae3f8decd2afbd Mon Sep 17 00:00:00 2001 From: Thaddeus Crews Date: Fri, 14 Feb 2025 15:38:12 -0600 Subject: [PATCH] SCons: Implement minor fixes --- SConstruct | 16 ++++++++-------- methods.py | 22 +++++++++------------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/SConstruct b/SConstruct index f4500d752522..51950a1f0a05 100644 --- a/SConstruct +++ b/SConstruct @@ -1082,11 +1082,11 @@ if "check_c_headers" in env: for header in headers: if conf.CheckCHeader(header): env.AppendUnique(CPPDEFINES=[headers[header]]) - - -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) -methods.prepare_purge(env) -methods.prepare_timer() +conf.Finish() + +# Miscellaneous & post-build methods. +if not env.GetOption("clean") and not env.GetOption("help"): + methods.dump(env) + methods.show_progress(env) + methods.prepare_purge(env) + methods.prepare_timer() diff --git a/methods.py b/methods.py index 85fdf1978fb1..f9d95a554a3a 100644 --- a/methods.py +++ b/methods.py @@ -768,9 +768,10 @@ def __init__(self): # Progress reporting is not available in non-TTY environments since it # messes with the output (for example, when writing to a file). - self.display = cast(bool, self.max and env["progress"] and sys.stdout.isatty()) + self.display = cast(bool, env["progress"] and sys.stdout.isatty()) if self.display and not self.max: print_info("Performing initial build, progress percentage unavailable!") + self.display = False def __call__(self, node, *args, **kw): self.count += 1 @@ -853,9 +854,6 @@ def clean_cache(cache_path: str, cache_limit: int, verbose: bool) -> None: def prepare_cache(env) -> None: - if env.GetOption("clean"): - return - cache_path = "" if env["cache_path"]: cache_path = cast(str, env["cache_path"]) @@ -907,21 +905,19 @@ def prepare_timer(): def print_elapsed_time(time_at_start: float): time_elapsed = time.time() - time_at_start time_formatted = time.strftime("%H:%M:%S", time.gmtime(time_elapsed)) - time_centiseconds = round((time_elapsed % 1) * 100) - print_info(f"Time elapsed: {time_formatted}.{time_centiseconds}") + time_centiseconds = (time_elapsed % 1) * 100 + print_info(f"Time elapsed: {time_formatted}.{time_centiseconds:02.0f}") atexit.register(print_elapsed_time, time.time()) 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__) + """ + Dumps latest build information for debugging purposes and external tools. + """ - with open(".scons_env.json", "w", encoding="utf-8", newline="\n") as f: - dump(env.Dictionary(), f, indent=4, default=non_serializable) + with open(".scons_env.json", "w", encoding="utf-8", newline="\n") as file: + file.write(env.Dump(format="json")) # Custom Visual Studio project generation logic that supports any platform that has a msvs.py