bitbake-dumpsig: Make --task work again
PATCH 1/2 bitbake-dumpsig: Make --task work again
This corresponds to commit fdcea991 that fixed the --task option for bitbake-diffsigs.
Signed-off-by Peter Kjellerstedt <[email protected]>
--- bitbake/bin/bitbake-dumpsig | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-)
bitbake/bin/bitbake-dumpsig +28 -6
@@ -3,7 +3,8 @@ # bitbake-dumpsig # BitBake task signature dump utility # -# Copyright (C) 2013 Intel Corporation +# Copyright (C) 2013, 2017 Intel Corporation +# Copyright (C) 2017-2018 Axis Communications AB # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as
@@ -33,17 +34,38 @@ import bb.msg logger = bb.msg.logger_create('bitbake-dumpsig') +def find_siginfo(tinfoil, pn, taskname, sigs=None): + result = None + tinfoil.set_event_mask(['bb.event.FindSigInfoResult', + 'logging.LogRecord', + 'bb.command.CommandCompleted', + 'bb.command.CommandFailed']) + ret = tinfoil.run_command('findSigInfo', pn, taskname, sigs) + if ret: + while True: + event = tinfoil.wait_event(1) + if event: + if isinstance(event, bb.command.CommandCompleted): + break + elif isinstance(event, bb.command.CommandFailed): + logger.error(str(event)) + sys.exit(2) + elif isinstance(event, bb.event.FindSigInfoResult): + result = event.result + elif isinstance(event, logging.LogRecord): + logger.handle(event) + else: + logger.error('No result returned from findSigInfo command') + sys.exit(2) + return result + def find_siginfo_task(bbhandler, pn, taskname): """ Find the most recent signature file for the specified PN/task """ - if not hasattr(bb.siggen, 'find_siginfo'): - logger.error('Metadata does not support finding signature data files') - sys.exit(1) - if not taskname.startswith('do_'): taskname = 'do_%s' % taskname - filedates = bb.siggen.find_siginfo(pn, taskname, None, bbhandler.config_data) + filedates = find_siginfo(bbhandler, pn, taskname) latestfiles = sorted(filedates.keys(), key=lambda f: filedates[f])[-1:] if not latestfiles: logger.error('No sigdata files found matching %s %s' % (pn, taskname))
Signature · 1 line
2.12.0
PATCH 2/2 bitbake-dumpsig: Change to use argparse
This corresponds to commit 7f130e0b for bitbake-diffsigs.
Signed-off-by Peter Kjellerstedt <[email protected]>
--- bitbake/bin/bitbake-dumpsig | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-)
bitbake/bin/bitbake-dumpsig +18 -17
@@ -22,7 +22,7 @@ import os import sys import warnings -import optparse +import argparse import logging import pickle
@@ -73,21 +73,22 @@ def find_siginfo_task(bbhandler, pn, taskname): return latestfiles[0] -parser = optparse.OptionParser( - description = "Dumps siginfo/sigdata files written out by BitBake", - usage = """ - %prog -t recipename taskname - %prog sigdatafile""") +parser = argparse.ArgumentParser( + description="Dump siginfo/sigdata files written out by BitBake") -parser.add_option("-D", "--debug", - help = "enable debug", - action = "store_true", dest="debug", default = False) +parser.add_argument('-d', '--debug', + help='Enable debug output', + action='store_true') -parser.add_option("-t", "--task", - help = "find the signature data file for the specified task", - action="store", dest="taskargs", nargs=2, metavar='recipename taskname') +parser.add_argument("-t", "--task", + help="find the signature data file for the last run of the specified task", + action="store", dest="taskargs", nargs=2, metavar=('recipename', 'taskname')) -options, args = parser.parse_args(sys.argv) +parser.add_argument("sigdatafile", + help="Signature file to dump. Not used when using -t/--task.", + action="store", nargs='?') + +options = parser.parse_args() if options.debug: logger.setLevel(logging.DEBUG)
@@ -97,11 +98,11 @@ if options.taskargs: tinfoil.prepare(config_only = True) file = find_siginfo_task(tinfoil, options.taskargs[0], options.taskargs[1]) logger.debug("Signature file: %s" % file) -elif len(args) == 1: - parser.print_help() - sys.exit(0) +elif options.sigdatafile: + file = options.sigdatafile else: - file = args[1] + parser.print_help() + sys.exit(1) try: output = bb.siggen.dump_sigfile(file)
Signature · 1 line
2.12.0