resulttool: Clean up repoducible build logs

We've improved the data stored for reproduicible builds. Teach resulttool how
to apply those cleanups when reprocessing data so we can reduce results file
sizes and make the data easier to process.

(From OE-Core rev: b799c57ae6d61c1b1c7035c8a2c4ba6ee08d1a81)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2024-11-22 16:15:46 +00:00
parent 33a2d01430
commit fae3c13eb6

View File

@ -131,6 +131,27 @@ def strip_logs(results):
del newresults[res]['result']['ptestresult.sections'][i]['log'] del newresults[res]['result']['ptestresult.sections'][i]['log']
return newresults return newresults
def handle_cleanups(results):
# Remove pointless path duplication from old format reproducibility results
for res2 in results:
try:
section = results[res2]['result']['reproducible']['files']
for pkgtype in section:
for filelist in section[pkgtype].copy():
if section[pkgtype][filelist] and type(section[pkgtype][filelist][0]) == dict:
newlist = []
for entry in section[pkgtype][filelist]:
newlist.append(entry["reference"].split("/./")[1])
section[pkgtype][filelist] = newlist
except KeyError:
pass
# Remove pointless duplicate rawlogs data
try:
del results[res2]['result']['reproducible.rawlogs']
except KeyError:
pass
def decode_log(logdata): def decode_log(logdata):
if isinstance(logdata, str): if isinstance(logdata, str):
return logdata return logdata
@ -173,6 +194,7 @@ def save_resultsdata(results, destdir, fn="testresults.json", ptestjson=False, p
resultsout = results[res] resultsout = results[res]
if not ptestjson: if not ptestjson:
resultsout = strip_logs(results[res]) resultsout = strip_logs(results[res])
handle_cleanups(resultsout)
with open(dst, 'w') as f: with open(dst, 'w') as f:
f.write(json.dumps(resultsout, sort_keys=True, indent=1)) f.write(json.dumps(resultsout, sort_keys=True, indent=1))
for res2 in results[res]: for res2 in results[res]: