Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

SCons: Implement minor fixes #102924

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -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()
22 changes: 9 additions & 13 deletions methods.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"])
Expand Down Expand Up @@ -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 "<<non-serializable: %s>>" % (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
Expand Down