feat: Report evaluation errors and fail the damn build

I am being the fallback maintainer on this one and putting my foot down
and fixing it. We should have fixed this months ago, but such as it is.

Fixes: lix-project/lix#237
This commit is contained in:
jade 2024-10-18 16:02:24 -07:00
parent 48828cb33f
commit 510ee842bb

View file

@ -381,6 +381,7 @@ class NixEvalCommand(buildstep.ShellMixin, steps.BuildStep):
if result == util.SUCCESS: if result == util.SUCCESS:
# create a ShellCommand for each stage and add them to the build # create a ShellCommand for each stage and add them to the build
jobs = [] jobs = []
eval_errors: list[tuple[str, str]] = []
for line in self.observer.getStdout().split("\n"): for line in self.observer.getStdout().split("\n"):
if line != "": if line != "":
@ -392,11 +393,22 @@ class NixEvalCommand(buildstep.ShellMixin, steps.BuildStep):
jobs.append(job) jobs.append(job)
filtered_jobs = [] filtered_jobs = []
for job in jobs: for job in jobs:
if err := job.get("error"):
eval_errors.append((job.get('attr'), err))
system = job.get("system") system = job.get("system")
if not system or system in self.supported_systems: # report eval errors if not system or system in self.supported_systems:
filtered_jobs.append(job) filtered_jobs.append(job)
drv_show_log: Log = yield self.getLog("stdio") drv_show_log: Log = yield self.getLog("stdio")
if eval_errors:
msg = "Failing job due to evaluation errors!\n"
msg += "\n".join(
f"- {attr}: {failure}" for (attr, failure) in eval_errors)
drv_show_log.addStdout(msg)
raise BuildbotNixError("Evaluation error in attributes: " + ", ".join(attr for (attr, _) in eval_errors))
drv_show_log.addStdout(f"getting derivation infos\n") drv_show_log.addStdout(f"getting derivation infos\n")
cmd = yield self.makeRemoteShellCommand( cmd = yield self.makeRemoteShellCommand(
stdioLogName=None, stdioLogName=None,