@@ -580,22 +580,19 @@ def process_eb_args(eb_args, eb_go, cfg_settings, modtool, testing, init_session
580580 return overall_success
581581
582582
583- def main (args = None , logfile = None , do_build = None , testing = False , modtool = None , eb_go = None , cfg_settings = None ,
584- init_session_state = None , hooks = None ):
583+ def main (args = None , logfile = None , do_build = None , testing = False , modtool = None , prepared_cfg_data = None ):
585584 """
586585 Main function: parse command line options, and act accordingly.
587586 :param args: command line arguments to use
588587 :param logfile: log file to use
589588 :param do_build: whether or not to actually perform the build
590589 :param testing: enable testing mode
591- :param eb_go: easybuild general options object
592- :param cfg_settings: configuration settings of easybuild
593- :param init_session_state: session state
594- :param hooks: available hooks
590+ :param prepared_cfg_data: prepared configuration data for main function, as returned by prepare_main (or None)
595591 """
596-
597- if any (i is None for i in [eb_go , cfg_settings , init_session_state , hooks ]) or any ([args , logfile , testing ]):
598- eb_go , cfg_settings , init_session_state , hooks = prepare_main (args = args , logfile = logfile , testing = testing )
592+ if prepared_cfg_data is None or any ([args , logfile , testing ]):
593+ init_session_state , eb_go , cfg_settings = prepare_main (args = args , logfile = logfile , testing = testing )
594+ else :
595+ init_session_state , eb_go , cfg_settings = prepared_cfg_data
599596
600597 options , orig_paths = eb_go .options , eb_go .args
601598
@@ -731,7 +728,7 @@ def prepare_main(args=None, logfile=None, testing=None):
731728 :param args: command line arguments to take into account when parsing the EasyBuild configuration settings
732729 :param logfile: log file to use
733730 :param testing: enable testing mode
734- :return: easybuild options, configuration settings, session state and hooks
731+ :return: 3-tuple with initial session state data, EasyBuildOptions instance, and tuple with configuration settings
735732 """
736733 register_lock_cleanup_signal_handlers ()
737734
@@ -748,14 +745,15 @@ def prepare_main(args=None, logfile=None, testing=None):
748745 # purposely session state very early, to avoid modules loaded by EasyBuild meddling in
749746 init_session_state = session_state ()
750747 eb_go , cfg_settings = set_up_configuration (args = args , logfile = logfile , testing = testing )
751- hooks = load_hooks ( eb_go . options . hooks )
752- return eb_go , cfg_settings , init_session_state , hooks
748+
749+ return init_session_state , eb_go , cfg_settings
753750
754751
755752if __name__ == "__main__" :
756- eb_go , cfg_settings , init_session_state , hooks = prepare_main ()
753+ init_session_state , eb_go , cfg_settings = prepare_main ()
754+ hooks = load_hooks (eb_go .options .hooks )
757755 try :
758- main (eb_go = eb_go , cfg_settings = cfg_settings , init_session_state = init_session_state , hooks = hooks )
756+ main (prepared_cfg_data = ( init_session_state , eb_go , cfg_settings ) )
759757 except EasyBuildError as err :
760758 run_hook (FAIL , hooks , args = [err ])
761759 print_error (err .msg )
0 commit comments