* 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
Signed-off-by: Martin Jansa <martin.ja...@gmail.com> --- meta/classes/buildhistory.bbclass | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass index 82d0bf8..760075f 100644 --- a/meta/classes/buildhistory.bbclass +++ b/meta/classes/buildhistory.bbclass @@ -546,6 +546,10 @@ def _get_srcrev_values(d): if rev.startswith(autoinc_templ): rev = rev[len(autoinc_templ):] dict[name] = rev + if 'tag' in ud.parm: + tag = ud.parm['tag']; + key = 'tag_'+name+'_'+tag + dict[key] = rev return dict python do_write_srcrev() { @@ -556,8 +560,18 @@ python do_write_srcrev() { if srcrevs: if not os.path.exists(pkghistdir): os.makedirs(pkghistdir) + data = {} + 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('# ', '').strip() + value = value.replace('"', '').strip() + data[key] = value with open(srcrevfile, 'w') as f: orig_srcrev = d.getVar('SRCREV', False) or 'INVALID' + pkg = d.getVar('PN', True) if orig_srcrev != 'INVALID': f.write('# SRCREV = "%s"\n' % orig_srcrev) if len(srcrevs) > 1: @@ -565,6 +579,12 @@ python do_write_srcrev() { orig_srcrev = d.getVar('SRCREV_%s' % name, False) if orig_srcrev: f.write('# SRCREV_%s = "%s"\n' % (name, orig_srcrev)) + if name.startswith('tag_'): + f.write('# %s = "%s"\n' % (name, srcrev)) + if name in data and data[name] != srcrev: + bb.warn("Revision for tag %s in package %s was changed since last build (from %s to %s)" % (name, pkg, data[name], srcrev)) + continue + f.write('SRCREV_%s = "%s"\n' % (name, srcrev)) else: f.write('SRCREV = "%s"\n' % srcrevs.itervalues().next()) -- 1.8.1.5 _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core