def ui_entry_api(board_info, scenario_info): arg_list = [ 'board_cfg_gen.py', '--board', board_info, '--scenario', scenario_info ] err_dic = scenario_cfg_lib.prepare() if err_dic: return err_dic err_dic = main(arg_list) return err_dic
def ui_entry_api(board_info, scenario_info, enable_commit=False): arg_list = ['board_cfg_gen.py', '--board', board_info, '--scenario', scenario_info] if enable_commit: arg_list.append('--enable_commit') err_dic = scenario_cfg_lib.prepare() if err_dic: return err_dic err_dic = main(arg_list) return err_dic
return err_dic def ui_entry_api(board_info, scenario_info): arg_list = [ 'board_cfg_gen.py', '--board', board_info, '--scenario', scenario_info ] err_dic = scenario_cfg_lib.prepare() if err_dic: return err_dic err_dic = main(arg_list) return err_dic if __name__ == '__main__': err_dic = scenario_cfg_lib.prepare() if err_dic: for err_k, err_v in err_dic.items(): scenario_cfg_lib.print_red("{}: {}".format(err_k, err_v), err=True) sys.exit(1) ARGS = sys.argv err_dic = main(ARGS) if err_dic: for err_k, err_v in err_dic.items(): scenario_cfg_lib.print_red("{}: {}".format(err_k, err_v), err=True)
def main(args): """ This is main function to start generate source code related with board :param args: it is a command line args for the script """ err_dic = {} config_srcs = [] (err_dic, board_info_file, scenario_info_file, enable_commit) = scenario_cfg_lib.get_param(args) if err_dic: return err_dic # check env err_dic = scenario_cfg_lib.prepare(enable_commit) if err_dic: return err_dic scenario_cfg_lib.BOARD_INFO_FILE = board_info_file scenario_cfg_lib.SCENARIO_INFO_FILE = scenario_info_file # get scenario name (err_dic, scenario) = scenario_cfg_lib.get_scenario_name() if err_dic: return err_dic # check if this is the scenario config which matched board info (err_dic, status) = scenario_cfg_lib.is_config_file_match() if not status: err_dic['scenario config: Not match'] = "The board xml and scenario xml should be matched!" return err_dic vm_config_h = SCENARIO_PATH + '/' + scenario + '/' + GEN_FILE[0] vm_config_c = SCENARIO_PATH + '/' + scenario + '/' + GEN_FILE[1] pci_config_c = SCENARIO_PATH + '/' + scenario + '/' + GEN_FILE[2] config_srcs.append(vm_config_h) config_srcs.append(vm_config_c) if scenario == "logical_partition": config_srcs.append(pci_config_c) # parse the scenario.xml get_scenario_item_values(board_info_file, scenario_info_file) (err_dic, vm_info) = validate_scenario_setting(board_info_file, scenario_info_file) if err_dic: scenario_cfg_lib.print_red("Validate the scenario item failue", err=True) return err_dic # get kata vm count if scenario != "logical_partition": scenario_cfg_lib.KATA_VM_COUNT = scenario_cfg_lib.VM_COUNT - scenario_cfg_lib.DEFAULT_VM_COUNT[scenario] if scenario_cfg_lib.KATA_VM_COUNT > 1: err_dic['scenario config: kata vm count err'] = "Only one kata vm is supported!" return err_dic # generate vm_configuration.h with open(vm_config_h, 'w') as config: vm_configurations_h.generate_file(scenario, vm_info, config) # generate vm_configuration.c with open(vm_config_c, 'w') as config: err_dic = vm_configurations_c.generate_file(scenario, vm_info, config) if err_dic: return err_dic # generate pci_dev.c if scenario is logical_partition if scenario == 'logical_partition': with open(pci_config_c, 'w') as config: pci_dev_c.generate_file(config) config_str = 'Config files' gen_str = 'generated' # move changes to patch, and apply to the source code if enable_commit: err_dic = scenario_cfg_lib.gen_patch(config_srcs, "scenario " + scenario) config_str = 'Config patch' gen_str = 'committed' if not err_dic: print("{} for {} is {} successfully!".format(config_str, scenario, gen_str)) else: print("{} for {} is failed".format(config_str, scenario)) return err_dic
def main(args): """ This is main function to start generate source code related with board :param args: it is a command line args for the script """ global ACRN_CONFIG_TARGET err_dic = {} (err_dic, board_info_file, scenario_info_file, output_folder) = scenario_cfg_lib.get_param(args) if err_dic: return err_dic if output_folder: ACRN_CONFIG_TARGET = os.path.abspath(output_folder) + '/' # check env err_dic = scenario_cfg_lib.prepare() if err_dic: return err_dic scenario_cfg_lib.BOARD_INFO_FILE = board_info_file scenario_cfg_lib.SCENARIO_INFO_FILE = scenario_info_file # get scenario name (err_dic, scenario) = scenario_cfg_lib.get_scenario_name() if err_dic: return err_dic # check if this is the scenario config which matched board info (err_dic, status) = scenario_cfg_lib.is_config_file_match() if not status: err_dic[ 'scenario config: Not match'] = "The board xml and scenario xml should be matched!" return err_dic scenario_dir = ACRN_CONFIG_TARGET + scenario + '/' scenario_cfg_lib.mkdir(scenario_dir) vm_config_h = scenario_dir + GEN_FILE[0] vm_config_c = scenario_dir + GEN_FILE[1] pci_config_c = scenario_dir + GEN_FILE[2] # parse the scenario.xml get_scenario_item_values(board_info_file, scenario_info_file) (err_dic, vm_info) = validate_scenario_setting(board_info_file, scenario_info_file) if err_dic: scenario_cfg_lib.print_red("Validate the scenario item failue", err=True) return err_dic # get kata vm count if scenario != "logical_partition": scenario_cfg_lib.KATA_VM_COUNT = scenario_cfg_lib.VM_COUNT - scenario_cfg_lib.DEFAULT_VM_COUNT[ scenario] if scenario_cfg_lib.KATA_VM_COUNT > 1: err_dic[ 'scenario config: kata vm count err'] = "Only one kata vm is supported!" return err_dic # generate vm_configuration.h with open(vm_config_h, 'w') as config: vm_configurations_h.generate_file(scenario, vm_info, config) # generate vm_configuration.c with open(vm_config_c, 'w') as config: err_dic = vm_configurations_c.generate_file(scenario, vm_info, config) if err_dic: return err_dic # generate pci_dev.c if scenario is logical_partition if scenario == 'logical_partition': with open(pci_config_c, 'w') as config: pci_dev_c.generate_file(config) if not err_dic: print( "Scenario configurations for {} is generated successfully.".format( scenario)) else: print("Scenario configurations for {} is generated failed.".format( scenario)) return err_dic