From dfd7ff250000113861952d3b7d9730e98df4b73f Mon Sep 17 00:00:00 2001 From: Christian Kellner Date: Tue, 9 Mar 2021 16:27:57 +0000 Subject: [PATCH] fmt/v1: correctly infer result from assembler If a pipeline has an assembler and that assembler failed, the overall status of the build also needs to be marked as failed. This used to be the case, but a bug got introduced when the format abstraction code was added. --- osbuild/formats/v1.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/osbuild/formats/v1.py b/osbuild/formats/v1.py index 7412d661..ed2c2539 100644 --- a/osbuild/formats/v1.py +++ b/osbuild/formats/v1.py @@ -216,18 +216,23 @@ def output(manifest: Manifest, res: Dict) -> Dict: stages = current.get("stages") if stages: retval["stages"] = stages - assembler = current.get("assembler") - if assembler: - retval["assembler"] = assembler return retval result = result_for_pipeline(manifest["tree"]) assembler = manifest.get("assembler") - if assembler: - current = res.get(assembler.id) - if current: - result["assembler"] = current["stages"][0] + if not assembler: + return result + + current = res.get(assembler.id) + # if there was an error before getting to the assembler + # pipeline, there might not be a result present + if not current: + return result + + result["assembler"] = current["stages"][0] + if not result["assembler"]["success"]: + result["success"] = False return result