@@ -83,7 +83,9 @@ class BuildTrigger(steps.BuildStep):
8383 dependency_failed_scheduler : str
8484 result_list : list [int ]
8585 ended : bool
86+ running : bool
8687 wait_for_finish_deferred : defer .Deferred [tuple [list [int ], int ]] | None
88+ brids : list [int ]
8789
8890 @dataclass
8991 class ScheduledJob :
@@ -132,9 +134,11 @@ def __init__(
132134 self .dependency_failed_scheduler = dependency_failed_scheduler
133135 self ._result_list : list [int ] = []
134136 self .ended = False
137+ self .running = False
135138 self .wait_for_finish_deferred : defer .Deferred [tuple [list [int ], int ]] | None = (
136139 None
137140 )
141+ self .brids = []
138142 super ().__init__ (** kwargs )
139143
140144 def interrupt (self , reason : str | Failure ) -> None :
@@ -166,50 +170,51 @@ def get_scheduler_by_name(self, name: str) -> BaseScheduler:
166170
167171 @staticmethod
168172 def set_common_properties (
169- props : Properties , source : str , job : NixEvalJob
173+ props : Properties , source : str , job : NixEvalJob , report_status : bool ,
170174 ) -> Properties :
171175 props .setProperty ("virtual_builder_name" , f".#checks.{ job .attr } " , source )
172176 props .setProperty ("status_name" , f"nix-build .#checks.{ job .attr } " , source )
173177 props .setProperty ("virtual_builder_tags" , "" , source )
174178 props .setProperty ("attr" , job .attr , source )
179+ props .setProperty ("report_status" , report_status , source )
175180
176181 return props
177182
178- def schedule_eval_failure (self , job : NixEvalJobError ) -> tuple [str , Properties ]:
183+ def schedule_eval_failure (self , job : NixEvalJobError , report_status : bool ) -> tuple [str , Properties ]:
179184 source = "nix-eval-nix"
180185
181- props = BuildTrigger .set_common_properties (Properties (), source , job )
186+ props = BuildTrigger .set_common_properties (Properties (), source , job , report_status )
182187 props .setProperty ("error" , job .error , source )
183188
184189 return (self .failed_eval_scheduler , props )
185190
186- def schedule_cached_failure (self , job : NixEvalJobSuccess ) -> tuple [str , Properties ]:
191+ def schedule_cached_failure (self , job : NixEvalJobSuccess , report_status : bool ) -> tuple [str , Properties ]:
187192 source = "nix-eval-nix"
188193
189- props = BuildTrigger .set_common_properties (Properties (), source , job )
194+ props = BuildTrigger .set_common_properties (Properties (), source , job , report_status )
190195
191196 return (self .cached_failure_scheduler , props )
192197
193198 def schedule_dependency_failed (
194- self , job : NixEvalJobSuccess , dependency : NixEvalJobSuccess
199+ self , job : NixEvalJobSuccess , dependency : NixEvalJobSuccess , report_status : bool ,
195200 ) -> tuple [str , Properties ]:
196201 source = "nix-eval-nix"
197202
198- props = BuildTrigger .set_common_properties (Properties (), source , job )
203+ props = BuildTrigger .set_common_properties (Properties (), source , job , report_status )
199204 props .setProperty ("dependency.attr" , dependency .attr , source )
200205
201206 return (self .dependency_failed_scheduler , props )
202207
203208 def schedule_success (
204- self , build_props : Properties , job : NixEvalJobSuccess
209+ self , build_props : Properties , job : NixEvalJobSuccess , report_status : bool ,
205210 ) -> tuple [str , Properties ]:
206211 source = "nix-eval-nix"
207212
208213 drv_path = job .drvPath
209214 system = job .system
210215 out_path = job .outputs ["out" ] or None
211216
212- props = BuildTrigger .set_common_properties (Properties (), source , job )
217+ props = BuildTrigger .set_common_properties (Properties (), source , job , report_status )
213218 props .setProperty ("system" , system , source )
214219 props .setProperty ("drv_path" , drv_path , source )
215220 props .setProperty ("out_path" , out_path , source )
@@ -347,6 +352,7 @@ def get_failed_dependents(
347352
348353 @defer .inlineCallbacks
349354 def run (self ) -> Generator [Any , Any , None ]:
355+ self .running = True
350356 build_props = self .build .getProperties ()
351357 ss_for_trigger = self .prepare_sourcestamp_list_for_trigger ()
352358 scheduler_log : Log = yield self .addLog ("scheduler" )
@@ -357,7 +363,8 @@ def run(self) -> Generator[Any, Any, None]:
357363 scheduler_log .addStdout ("The following jobs failed to evaluate:\n " )
358364 for failed_job in self .failed_jobs :
359365 scheduler_log .addStdout (f"\t - { failed_job .attr } failed eval\n " )
360- yield self .schedule (ss_for_trigger , * self .schedule_eval_failure (failed_job ))
366+ brids , _ = yield self .schedule (ss_for_trigger , * self .schedule_eval_failure (failed_job , self .report_status ))
367+ self .brids .extend (brids )
361368
362369 # get all input derivations for every job as a dictionary
363370 derivations_inputs : dict [str , set [str ]] = {
@@ -400,11 +407,12 @@ def run(self) -> Generator[Any, Any, None]:
400407 build_schedule_order .remove (build )
401408
402409 brids , results_deferred = yield self .schedule (
403- ss_for_trigger , * self .schedule_cached_failure (build )
410+ ss_for_trigger , * self .schedule_cached_failure (build , self . report_status )
404411 )
405412 scheduled .append (
406413 BuildTrigger .ScheduledJob (build , brids , results_deferred )
407414 )
415+ self .brids .extend (brids .values ())
408416 elif (
409417 failed_builds .check_build (build .drvPath )
410418 and self .build .reason == "rebuild"
@@ -426,13 +434,15 @@ def run(self) -> Generator[Any, Any, None]:
426434 for job in schedule_now :
427435 scheduler_log .addStdout (f"\t - { job .attr } \n " )
428436 brids , results_deferred = yield self .schedule (
429- ss_for_trigger , * self .schedule_success (build_props , job )
437+ ss_for_trigger , * self .schedule_success (build_props , job , self . report_status )
430438 )
431439
432440 scheduled .append (
433441 BuildTrigger .ScheduledJob (job , brids , results_deferred )
434442 )
435443
444+ self .brids .extend (brids .values ())
445+
436446 scheduler_log .addStdout ("Waiting...\n " )
437447
438448 # wait for one to complete
@@ -462,14 +472,15 @@ def run(self) -> Generator[Any, Any, None]:
462472 job , build_schedule_order , job_closures
463473 )
464474 for removed_job in removed :
465- scheduler , props = self .schedule_dependency_failed (removed_job , job )
475+ scheduler , props = self .schedule_dependency_failed (removed_job , job , self . report_status )
466476 brids , results_deferred = yield self .schedule (
467477 ss_for_trigger , scheduler , props
468478 )
469479 build_schedule_order .remove (removed_job )
470480 scheduled .append (
471481 BuildTrigger .ScheduledJob (removed_job , brids , results_deferred )
472482 )
483+ self .brids .extend (brids .values ())
473484 scheduler_log .addStdout (
474485 "\t - removed jobs: "
475486 + ", " .join ([job .drvPath for job in removed ])
@@ -555,8 +566,6 @@ def run(self) -> Generator[Any, object, Any]:
555566 failed_jobs : list [NixEvalJobError ] = []
556567 successful_jobs : list [NixEvalJobSuccess ] = []
557568
558- log .info ("jobs: {jobs}" , jobs = jobs )
559-
560569 for job in jobs :
561570 # report unbuildable jobs
562571 if isinstance (job , NixEvalJobError ):
0 commit comments