def build_and_install_software(module, options, origEnviron, exitOnFailure=True, silent=False): """ Build the software """ spec = module['spec'] print_msg("processing EasyBuild easyconfig %s" % spec, log=_log, silent=silent) # restore original environment _log.info("Resetting environment") filetools.errorsFoundInLog = 0 modify_env(os.environ, origEnviron) cwd = os.getcwd() # load easyblock easyblock = options.easyblock if not easyblock: # try to look in .eb file reg = re.compile(r"^\s*easyblock\s*=(.*)$") txt = read_file(spec) for line in txt.split('\n'): match = reg.search(line) if match: easyblock = eval(match.group(1)) break name = module['module'][0] try: app_class = get_class(easyblock, name=name) app = app_class(spec, debug=options.debug, robot_path=options.robot) _log.info("Obtained application instance of for %s (easyblock: %s)" % (name, easyblock)) except EasyBuildError, err: print_error("Failed to get application instance for %s (easyblock: %s): %s" % (name, easyblock, err.msg), silent=silent)
base_dir = os.getcwd() base_env = copy.deepcopy(os.environ) succes = [] for app in apps: # if initialisation step failed, app will be None if app: applog = os.path.join(output_dir, "%s-%s.log" % (app.name, app.get_installversion())) start_time = time.time() # start with a clean slate os.chdir(base_dir) modify_env(os.environ, base_env) steps = EasyBlock.get_steps(iteration_count=app.det_iter_cnt()) for (step_name, _, step_methods, skippable) in steps: if skippable and step_name in app.cfg["skipsteps"]: _log.info("Skipping step %s" % step_name) else: for step_method in step_methods: method_name = "_".join(step_method.func_code.co_names) perform_step("_".join([step_name, method_name]), app, step_method, applog) # close log and move it app.close_log() try: # retain old logs
base_dir = os.getcwd() base_env = copy.deepcopy(os.environ) succes = [] for app in apps: # if initialisation step failed, app will be None if app: applog = os.path.join(output_dir, "%s-%s.log" % (app.name, app.get_installversion())) start_time = time.time() # start with a clean slate os.chdir(base_dir) modify_env(os.environ, base_env) steps = EasyBlock.get_steps(iteration_count=app.det_iter_cnt()) for (step_name, _, step_methods, skippable) in steps: if skippable and step_name in app.cfg['skipsteps']: _log.info("Skipping step %s" % step_name) else: for step_method in step_methods: method_name = '_'.join(step_method.func_code.co_names) perform_step('_'.join([step_name, method_name]), app, step_method, applog) # close log and move it app.close_log() try: # retain old logs