mirror of
https://git.yoctoproject.org/poky
synced 2026-05-01 06:32:11 +02:00
buildhistory: record tag names and show warning when the same tag corresponds to different revision
* persistent cache records tag-srcrev mappings, but is not shared between builders * when tag is moved in remote repo, all builders should rebuild the component to use the same source, show warning when revision is different than what was used in last build (From OE-Core rev: 0bc22ed6bd67031749e8f2cb5415dabf933eef56) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
fe336b1495
commit
d040acb904
@@ -538,24 +538,38 @@ def _get_srcrev_values(d):
|
||||
scms.append(u)
|
||||
|
||||
autoinc_templ = 'AUTOINC+'
|
||||
dict = {}
|
||||
dict_srcrevs = {}
|
||||
dict_tag_srcrevs = {}
|
||||
for scm in scms:
|
||||
ud = urldata[scm]
|
||||
for name in ud.names:
|
||||
rev = ud.method.sortable_revision(scm, ud, d, name)
|
||||
if rev.startswith(autoinc_templ):
|
||||
rev = rev[len(autoinc_templ):]
|
||||
dict[name] = rev
|
||||
return dict
|
||||
dict_srcrevs[name] = rev
|
||||
if 'tag' in ud.parm:
|
||||
tag = ud.parm['tag'];
|
||||
key = name+'_'+tag
|
||||
dict_tag_srcrevs[key] = rev
|
||||
return (dict_srcrevs, dict_tag_srcrevs)
|
||||
|
||||
python do_write_srcrev() {
|
||||
pkghistdir = d.getVar('BUILDHISTORY_DIR_PACKAGE', True)
|
||||
srcrevfile = os.path.join(pkghistdir, 'latest_srcrev')
|
||||
|
||||
srcrevs = _get_srcrev_values(d)
|
||||
srcrevs, tag_srcrevs = _get_srcrev_values(d)
|
||||
if srcrevs:
|
||||
if not os.path.exists(pkghistdir):
|
||||
os.makedirs(pkghistdir)
|
||||
old_tag_srcrevs = {}
|
||||
if os.path.exists(srcrevfile):
|
||||
with open(srcrevfile) as f:
|
||||
for line in f:
|
||||
if line.startswith('# tag_'):
|
||||
key, value = line.split("=", 1)
|
||||
key = key.replace('# tag_', '').strip()
|
||||
value = value.replace('"', '').strip()
|
||||
old_tag_srcrevs[key] = value
|
||||
with open(srcrevfile, 'w') as f:
|
||||
orig_srcrev = d.getVar('SRCREV', False) or 'INVALID'
|
||||
if orig_srcrev != 'INVALID':
|
||||
@@ -568,6 +582,13 @@ python do_write_srcrev() {
|
||||
f.write('SRCREV_%s = "%s"\n' % (name, srcrev))
|
||||
else:
|
||||
f.write('SRCREV = "%s"\n' % srcrevs.itervalues().next())
|
||||
if len(tag_srcrevs) > 0:
|
||||
for name, srcrev in tag_srcrevs.items():
|
||||
f.write('# tag_%s = "%s"\n' % (name, srcrev))
|
||||
if name in old_tag_srcrevs and old_tag_srcrevs[name] != srcrev:
|
||||
pkg = d.getVar('PN', True)
|
||||
bb.warn("Revision for tag %s in package %s was changed since last build (from %s to %s)" % (name, pkg, old_tag_srcrevs[name], srcrev))
|
||||
|
||||
else:
|
||||
if os.path.exists(srcrevfile):
|
||||
os.remove(srcrevfile)
|
||||
|
||||
Reference in New Issue
Block a user