From 21f5bd73a76bdf56c650e681fabc80a98b8d8a74 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 19 Feb 2020 20:18:18 +0100 Subject: [PATCH 1/2] build: fix logging failed builds to the status JSON (closes #741) --- fdroidserver/build.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/fdroidserver/build.py b/fdroidserver/build.py index 733af34a..d269e46d 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -324,6 +324,10 @@ def transform_first_char(string, method): return method(string[0]) + string[1:] +def add_failed_builds_entry(failed_builds, appid, build, entry): + failed_builds.append([appid, int(build.versionCode), str(entry)]) + + def get_metadata_from_apk(app, build, apkfile): """get the required metadata from the built APK @@ -1031,9 +1035,9 @@ def main(): site.login(config['wiki_user'], config['wiki_password']) # Build applications... - failed_apps = {} + failed_builds = [] build_succeeded = [] - status_output['failedBuilds'] = failed_apps + status_output['failedBuilds'] = failed_builds status_output['successfulBuilds'] = build_succeeded # Only build for 36 hours, then stop gracefully. endtime = time.time() + 36 * 60 * 60 @@ -1156,7 +1160,7 @@ def main(): if options.stop: logging.debug("Error encoutered, stopping by user request.") common.force_exit(1) - failed_apps[appid] = vcse + add_failed_builds_entry(failed_builds, appid, build, vcse) wikilog = str(vcse) except FDroidException as e: with open(os.path.join(log_dir, appid + '.log'), 'a+') as f: @@ -1171,7 +1175,7 @@ def main(): if options.stop: logging.debug("Error encoutered, stopping by user request.") common.force_exit(1) - failed_apps[appid] = e + add_failed_builds_entry(failed_builds, appid, build, e) wikilog = e.get_wikitext() except Exception as e: logging.error("Could not build app %s due to unknown error: %s" % ( @@ -1179,7 +1183,7 @@ def main(): if options.stop: logging.debug("Error encoutered, stopping by user request.") common.force_exit(1) - failed_apps[appid] = e + add_failed_builds_entry(failed_builds, appid, build, e) wikilog = str(e) if options.wiki and wikilog: @@ -1220,16 +1224,16 @@ def main(): logging.info("success: %s" % (app.id)) if not options.verbose: - for fa in failed_apps: - logging.info("Build for app %s failed:\n%s" % (fa, failed_apps[fa])) + for fb in failed_builds: + logging.info('Build for app {}:{} failed:\n{}'.format(*fb)) logging.info(_("Finished")) if len(build_succeeded) > 0: logging.info(ngettext("{} build succeeded", "{} builds succeeded", len(build_succeeded)).format(len(build_succeeded))) - if len(failed_apps) > 0: + if len(failed_builds) > 0: logging.info(ngettext("{} build failed", - "{} builds failed", len(failed_apps)).format(len(failed_apps))) + "{} builds failed", len(failed_builds)).format(len(failed_builds))) if options.wiki: wiki_page_path = 'build_' + time.strftime('%s', start_timestamp) @@ -1265,7 +1269,7 @@ def main(): if m: txt += "* guest RAM: %s MB\n" % m.group(1) txt += "* successful builds: %d\n" % len(build_succeeded) - txt += "* failed builds: %d\n" % len(failed_apps) + txt += "* failed builds: %d\n" % len(failed_builds) txt += "\n\n" newpage.save(txt, summary='Run log') newpage = site.Pages['build'] From b6e6ce87cb4cd80f7eb98f9f3d79644b41fb909b Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 19 Feb 2020 20:19:14 +0100 Subject: [PATCH 2/2] build: has no pretty option (closes #742) --- fdroidserver/build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fdroidserver/build.py b/fdroidserver/build.py index d269e46d..ebcdc861 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -1275,7 +1275,7 @@ def main(): newpage = site.Pages['build'] newpage.save('#REDIRECT [[' + wiki_page_path + ']]', summary='Update redirect') - common.write_status_json(status_output, options.pretty) + common.write_status_json(status_output) # hack to ensure this exits, even is some threads are still running common.force_exit()