| 123456789101112131415161718192021222324252627282930313233343536 |
- import atexit
- import SCons.Errors
- from ansi.color import fg, fx
- from SCons.Script import GetBuildFailures
- def bf_to_str(bf):
- """Convert an element of GetBuildFailures() to a string
- in a useful way."""
- if bf is None: # unknown targets product None in list
- return "(unknown tgt)"
- elif isinstance(bf, SCons.Errors.StopError):
- return fg.yellow(str(bf))
- elif bf.node:
- return fg.yellow(str(bf.node)) + ": " + bf.errstr
- elif bf.filename:
- return fg.yellow(bf.filename) + ": " + bf.errstr
- return fg.yellow("unknown failure: ") + bf.errstr
- def display_build_status():
- """Display the build status. Called by atexit.
- Here you could do all kinds of complicated things."""
- bf = GetBuildFailures()
- if bf:
- # bf is normally a list of build failures; if an element is None,
- # it's because of a target that scons doesn't know anything about.
- failures_message = "\n".join([bf_to_str(x) for x in bf if x is not None])
- print()
- print(fg.brightred(fx.bold("*" * 10 + " FBT ERRORS " + "*" * 10)))
- print(failures_message)
- atexit.register(display_build_status)
|