| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- from SCons.Script import GetBuildFailures
- import sys
- import os
- import atexit
- from ansi.color import fg, fx
- sys.path.insert(0, os.path.join(os.getcwd(), "scripts"))
- sys.path.insert(0, os.path.join(os.getcwd(), "lib/cxxheaderparser"))
- def bf_to_str(bf):
- """Convert an element of GetBuildFailures() to a string
- in a useful way."""
- import SCons.Errors
- 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)
|