]>
git.ipfire.org Git - thirdparty/openembedded/openembedded-core.git/blob - scripts/buildhistory-collect-srcrevs
3 # Collects the recorded SRCREV values from buildhistory and reports on them
5 # Copyright 2013 Intel Corporation
6 # Authored-by: Paul Eggleton <paul.eggleton@intel.com>
8 # SPDX-License-Identifier: GPL-2.0-only
18 logger
= logging
.getLogger("buildhistory")
19 loggerhandler
= logging
.StreamHandler()
20 loggerhandler
.setFormatter(logging
.Formatter("%(levelname)s: %(message)s"))
21 logger
.addHandler(loggerhandler
)
22 logger
.setLevel(logging
.INFO
)
25 logger
= logger_create()
28 parser
= optparse
.OptionParser(
29 description
= "Collects the recorded SRCREV values from buildhistory and reports on them.",
33 parser
.add_option("-a", "--report-all",
34 help = "Report all SRCREV values, not just ones where AUTOREV has been used",
35 action
="store_true", dest
="reportall")
36 parser
.add_option("-f", "--forcevariable",
37 help = "Use forcevariable override for all output lines",
38 action
="store_true", dest
="forcevariable")
39 parser
.add_option("-p", "--buildhistory-dir",
40 help = "Specify path to buildhistory directory (defaults to buildhistory/ under cwd)",
41 action
="store", dest
="buildhistory_dir", default
='buildhistory/')
43 options
, args
= parser
.parse_args(sys
.argv
)
46 sys
.stderr
.write('Invalid argument(s) specified: %s\n\n' % ' '.join(args
[1:]))
50 if not os
.path
.exists(options
.buildhistory_dir
):
51 sys
.stderr
.write('Buildhistory directory "%s" does not exist\n\n' % options
.buildhistory_dir
)
55 if options
.forcevariable
:
56 forcevariable
= ':forcevariable'
60 all_srcrevs
= collections
.defaultdict(list)
61 for root
, dirs
, files
in os
.walk(options
.buildhistory_dir
):
66 if fn
== 'latest_srcrev':
67 curdir
= os
.path
.basename(os
.path
.dirname(root
))
68 fullpath
= os
.path
.join(root
, fn
)
69 pn
= os
.path
.basename(root
)
74 with
open(fullpath
) as f
:
77 splitval
= line
.split('=')
78 value
= splitval
[1].strip('" \t\n\r')
79 if line
.startswith('# SRCREV = '):
81 elif line
.startswith('# SRCREV_'):
82 splitval
= line
.split('=')
83 name
= splitval
[0].split('_')[1].strip()
84 orig_srcrevs
[name
] = value
85 elif line
.startswith('SRCREV ='):
87 elif line
.startswith('SRCREV_'):
88 name
= splitval
[0].split('_')[1].strip()
90 if srcrev
and (options
.reportall
or srcrev
!= orig_srcrev
):
91 all_srcrevs
[curdir
].append((pn
, None, srcrev
))
92 for name
, value
in srcrevs
.items():
93 orig
= orig_srcrevs
.get(name
, orig_srcrev
)
94 if options
.reportall
or value
!= orig
:
95 all_srcrevs
[curdir
].append((pn
, name
, value
))
97 for curdir
, srcrevs
in sorted(all_srcrevs
.items()):
99 print('# %s' % curdir
)
100 for pn
, name
, srcrev
in srcrevs
:
102 print('SRCREV_%s:pn-%s%s = "%s"' % (name
, pn
, forcevariable
, srcrev
))
104 print('SRCREV:pn-%s%s = "%s"' % (pn
, forcevariable
, srcrev
))
107 if __name__
== "__main__":