1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #!/usr/bin/env python3
- #
- # Copyright (C) 2014 Alex Damian
- #
- # SPDX-License-Identifier: GPL-2.0-only
- #
- # This file re-uses code spread throughout other Bitbake source files.
- # As such, all other copyrights belong to their own right holders.
- #
- """
- This command takes a filename as a single parameter. The filename is read
- as a build eventlog, and the ToasterUI is used to process events in the file
- and log data in the database
- """
- import os
- import sys
- import json
- import pickle
- import codecs
- import warnings
- warnings.simplefilter("default")
- from collections import namedtuple
- # mangle syspath to allow easy import of modules
- from os.path import join, dirname, abspath
- sys.path.insert(0, join(dirname(dirname(abspath(__file__))), 'lib'))
- import bb.cooker
- from bb.ui import toasterui
- from bb.ui import eventreplay
- def main(argv):
- with open(argv[-1]) as eventfile:
- # load variables from the first line
- variables = None
- while line := eventfile.readline().strip():
- try:
- variables = json.loads(line)['allvariables']
- break
- except (KeyError, json.JSONDecodeError):
- continue
- if not variables:
- sys.exit("Cannot find allvariables entry in event log file %s" % argv[-1])
- eventfile.seek(0)
- params = namedtuple('ConfigParams', ['observe_only'])(True)
- player = eventreplay.EventPlayer(eventfile, variables)
- return toasterui.main(player, player, params)
- # run toaster ui on our mock bitbake class
- if __name__ == "__main__":
- if len(sys.argv) != 2:
- print("Usage: %s <event file>" % os.path.basename(sys.argv[0]))
- sys.exit(1)
- sys.exit(main(sys.argv))
|