Пример #1
0
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
Пример #2
0
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
Пример #3
0
    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
Пример #5
0
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