poky/scripts/buildhistory-collect-srcrevs
Richard Purdie bb6ddc3691 Convert to new override syntax
This is the result of automated script conversion:

scripts/contrib/convert-overrides.py <oe-core directory>

converting the metadata to use ":" as the override character instead of "_".

(From OE-Core rev: 42344347be29f0997cc2f7636d9603b1fe1875ae)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-08-02 15:44:10 +01:00

4.0 KiB
Executable File

#!/usr/bin/env python3

Collects the recorded SRCREV values from buildhistory and reports on them

Copyright 2013 Intel Corporation

Authored-by: Paul Eggleton paul.eggleton@intel.com

SPDX-License-Identifier: GPL-2.0-only

import collections import os import sys import optparse import logging

def logger_create(): logger = logging.getLogger("buildhistory") loggerhandler = logging.StreamHandler() loggerhandler.setFormatter(logging.Formatter("%(levelname)s: %(message)s")) logger.addHandler(loggerhandler) logger.setLevel(logging.INFO) return logger

logger = logger_create()

def main(): parser = optparse.OptionParser( description = "Collects the recorded SRCREV values from buildhistory and reports on them.", usage = """ %prog [options]""")

parser.add_option("-a", "--report-all",
        help = "Report all SRCREV values, not just ones where AUTOREV has been used",
        action="store_true", dest="reportall")
parser.add_option("-f", "--forcevariable",
        help = "Use forcevariable override for all output lines",
        action="store_true", dest="forcevariable")
parser.add_option("-p", "--buildhistory-dir",
        help = "Specify path to buildhistory directory (defaults to buildhistory/ under cwd)",
        action="store", dest="buildhistory_dir", default='buildhistory/')

options, args = parser.parse_args(sys.argv)

if len(args) > 1:
    sys.stderr.write('Invalid argument(s) specified: %s\n\n' % ' '.join(args[1:]))
    parser.print_help()
    sys.exit(1)

if not os.path.exists(options.buildhistory_dir):
    sys.stderr.write('Buildhistory directory "%s" does not exist\n\n' % options.buildhistory_dir)
    parser.print_help()
    sys.exit(1)

if options.forcevariable:
    forcevariable = '_forcevariable'
else:
    forcevariable = ''

all_srcrevs = collections.defaultdict(list)
for root, dirs, files in os.walk(options.buildhistory_dir):
    dirs.sort()
    if '.git' in dirs:
        dirs.remove('.git')
    for fn in files:
        if fn == 'latest_srcrev':
            curdir = os.path.basename(os.path.dirname(root))
            fullpath = os.path.join(root, fn)
            pn = os.path.basename(root)
            srcrev = None
            orig_srcrev = None
            orig_srcrevs = {}
            srcrevs = {}
            with open(fullpath) as f:
                for line in f:
                    if '=' in line:
                        splitval = line.split('=')
                        value = splitval[1].strip('" \t\n\r')
                    if line.startswith('# SRCREV = '):
                        orig_srcrev = value
                    elif line.startswith('# SRCREV_'):
                        splitval = line.split('=')
                        name = splitval[0].split('_')[1].strip()
                        orig_srcrevs[name] = value
                    elif line.startswith('SRCREV ='):
                        srcrev = value
                    elif line.startswith('SRCREV_'):
                        name = splitval[0].split('_')[1].strip()
                        srcrevs[name] = value
            if srcrev and (options.reportall or srcrev != orig_srcrev):
                all_srcrevs[curdir].append((pn, None, srcrev))
            for name, value in srcrevs.items():
                orig = orig_srcrevs.get(name, orig_srcrev)
                if options.reportall or value != orig:
                    all_srcrevs[curdir].append((pn, name, value))

for curdir, srcrevs in sorted(all_srcrevs.items()):
    if srcrevs:
        print('# %s' % curdir)
        for pn, name, srcrev in srcrevs:
            if name:
                print('SRCREV_%s_pn-%s%s = "%s"' % (name, pn, forcevariable, srcrev))
            else:
                print('SRCREV:pn-%s%s = "%s"' % (pn, forcevariable, srcrev))

if name == "main": main()