1414from tabulate import tabulate
1515
1616from dvsim .job .time import JobTime
17- from dvsim .launcher .factory import get_launcher
17+ from dvsim .launcher .base import Launcher
1818from dvsim .logging import log
1919from dvsim .sim_utils import get_cov_summary_table , get_job_runtime , get_simulated_time
2020from dvsim .utils import (
2626
2727if TYPE_CHECKING :
2828 from dvsim .flow .sim import SimCfg
29- from dvsim .launcher .base import Launcher
29+
30+ __all__ = (
31+ "CompileSim" ,
32+ "Deploy" ,
33+ )
3034
3135
3236class Deploy :
@@ -65,6 +69,7 @@ def __init__(self, sim_cfg: "SimCfg") -> None:
6569
6670 # Cross ref the whole cfg object for ease.
6771 self .sim_cfg = sim_cfg
72+ self .flow = sim_cfg .name
6873
6974 # A list of jobs on which this job depends.
7075 self .dependencies = []
@@ -92,9 +97,6 @@ def __init__(self, sim_cfg: "SimCfg") -> None:
9297 # Construct the job's command.
9398 self .cmd = self ._construct_cmd ()
9499
95- # Launcher instance created later using create_launcher() method.
96- self .launcher : Launcher | None = None
97-
98100 # Job's wall clock time (a.k.a CPU time, or runtime).
99101 self .job_runtime = JobTime ()
100102
@@ -284,7 +286,7 @@ def is_equivalent_job(self, item: "Deploy") -> bool:
284286 log .verbose ('Deploy job "%s" is equivalent to "%s"' , item .name , self .name )
285287 return True
286288
287- def pre_launch (self ) -> None :
289+ def pre_launch (self , launcher : Launcher ) -> None :
288290 """Perform additional pre-launch activities (callback).
289291
290292 This is invoked by launcher::_pre_launch().
@@ -325,15 +327,6 @@ def extract_info_from_log(self, log_text: list) -> None:
325327 log .warning (f"{ self .full_name } : { e } Using dvsim-maintained job_runtime instead." )
326328 self .job_runtime .set (self .launcher .job_runtime_secs , "s" )
327329
328- def create_launcher (self ) -> None :
329- """Create the launcher instance.
330-
331- Note that the launcher instance for ALL jobs in the same job group must
332- be created before the Scheduler starts to dispatch one by one.
333- """
334- # Retain the handle to self for lookup & callbacks.
335- self .launcher = get_launcher (self )
336-
337330 def model_dump (self ) -> Mapping :
338331 """Dump the deployment object to mapping object.
339332
@@ -371,7 +364,11 @@ def __init__(self, build_mode, sim_cfg) -> None:
371364
372365 # Needs to be after the wildcard expansion to log anything meaningful
373366 if self .build_timeout_mins :
374- log .debug ('Timeout for job "%s" is %d minutes.' , self .name , self .build_timeout_mins )
367+ log .debug (
368+ 'Timeout for job "%s" is %d minutes.' ,
369+ self .name ,
370+ self .build_timeout_mins ,
371+ )
375372
376373 def _define_attrs (self ) -> None :
377374 """Define attributes."""
@@ -420,7 +417,7 @@ def _set_attrs(self) -> None:
420417 if self .sim_cfg .args .build_timeout_mins is not None :
421418 self .build_timeout_mins = self .sim_cfg .args .build_timeout_mins
422419
423- def pre_launch (self ) -> None :
420+ def pre_launch (self , launcher : Launcher ) -> None :
424421 """Perform pre-launch tasks."""
425422 # Delete old coverage database directories before building again. We
426423 # need to do this because the build directory is not 'renewed'.
@@ -446,7 +443,11 @@ def __init__(self, build_mode, sim_cfg) -> None:
446443
447444 # Needs to be after the wildcard expansion to log anything meaningful
448445 if self .build_timeout_mins :
449- log .debug ('Timeout for job "%s" is %d minutes.' , self .name , self .build_timeout_mins )
446+ log .debug (
447+ 'Timeout for job "%s" is %d minutes.' ,
448+ self .name ,
449+ self .build_timeout_mins ,
450+ )
450451
451452 def _define_attrs (self ) -> None :
452453 super ()._define_attrs ()
@@ -518,7 +519,11 @@ def __init__(self, index, test, build_job, sim_cfg: "SimCfg") -> None:
518519
519520 # Needs to be after the wildcard expansion to log anything meaningful
520521 if self .run_timeout_mins :
521- log .debug ('Timeout for job "%s" is %d minutes.' , self .full_name , self .run_timeout_mins )
522+ log .debug (
523+ 'Timeout for job "%s" is %d minutes.' ,
524+ self .full_name ,
525+ self .run_timeout_mins ,
526+ )
522527
523528 if build_job is not None :
524529 self .dependencies .append (build_job )
@@ -595,9 +600,9 @@ def _set_attrs(self) -> None:
595600 self .run_timeout_multiplier ,
596601 )
597602
598- def pre_launch (self ) -> None :
603+ def pre_launch (self , launcher : Launcher ) -> None :
599604 """Perform pre-launch tasks."""
600- self . launcher .renew_odir = True
605+ launcher .renew_odir = True
601606
602607 def post_finish (self , status ) -> None :
603608 """Perform tidy up tasks."""
@@ -664,7 +669,11 @@ def _define_attrs(self) -> None:
664669 )
665670
666671 self .mandatory_misc_attrs .update (
667- {"cov_unr_dir" : False , "cov_merge_db_dir" : False , "build_fail_patterns" : False },
672+ {
673+ "cov_unr_dir" : False ,
674+ "cov_merge_db_dir" : False ,
675+ "build_fail_patterns" : False ,
676+ },
668677 )
669678
670679 def _set_attrs (self ) -> None :
@@ -749,7 +758,11 @@ def _define_attrs(self) -> None:
749758 self .mandatory_cmd_attrs .update ({"cov_report_cmd" : False , "cov_report_opts" : False })
750759
751760 self .mandatory_misc_attrs .update (
752- {"cov_report_dir" : False , "cov_merge_db_dir" : False , "cov_report_txt" : False },
761+ {
762+ "cov_report_dir" : False ,
763+ "cov_merge_db_dir" : False ,
764+ "cov_report_txt" : False ,
765+ },
753766 )
754767
755768 def _set_attrs (self ) -> None :
0 commit comments