| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import SCons.Warnings as Warnings
- from SCons.Errors import UserError
- # from SCons.Script.Main import find_deepest_user_frame
- from ansi.color import fg, bg, fx
- import traceback
- import sys
- import os
- def find_deepest_user_frame(tb):
- tb.reverse()
- # find the deepest traceback frame that is not part
- # of SCons:
- for frame in tb:
- filename = frame[0]
- if filename.find("fbt_tweaks") != -1:
- continue
- if filename.find(os.sep + "SCons" + os.sep) == -1:
- return frame
- return tb[0]
- def fbt_warning(e):
- filename, lineno, routine, dummy = find_deepest_user_frame(
- traceback.extract_stack()
- )
- fbt_line = "\nfbt: warning: %s\n" % e.args[0]
- sys.stderr.write(fg.boldmagenta(fbt_line))
- fbt_line = (
- fg.yellow("%s, line %d, " % (routine, lineno)) + 'in file "%s"\n' % filename
- )
- sys.stderr.write(fg.yellow(fbt_line))
- def generate(env):
- if env.get("UFBT_WORK_DIR"):
- raise UserError(
- "You're trying to use a new format SDK on a legacy ufbt version. "
- "Please update ufbt to a version from PyPI: https://pypi.org/project/ufbt/"
- )
- Warnings._warningOut = fbt_warning
- def exists():
- return True
|