mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-08-14 14:25:14 +00:00
For python versions prior to 3.7, dict order is not guaranteed. Use ordered dict to ensure consistent ordering for the same input, otherwise, the generated config files may change every time the config tool runs Fix some error messages in code/comment Tracked-On: #5229 Signed-off-by: dongshen <dongsheng.x.zhang@intel.com>
148 lines
4.2 KiB
Python
Executable File
148 lines
4.2 KiB
Python
Executable File
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
#
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
#
|
|
|
|
|
|
import os
|
|
import sys
|
|
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'library'))
|
|
import board_cfg_lib
|
|
import board_c
|
|
import board_info_h
|
|
import pci_devices_h
|
|
import acpi_platform_h
|
|
import misc_cfg_h
|
|
import common
|
|
import vbar_base_h
|
|
|
|
ACRN_PATH = common.SOURCE_ROOT_DIR
|
|
ACRN_CONFIG_DEF = ACRN_PATH + "misc/vm_configs/"
|
|
|
|
ACRN_DEFAULT_ACPI = ACRN_PATH + "hypervisor/include/arch/x86/default_acpi_info.h"
|
|
GEN_FILE = ["pci_devices.h", "board.c", "platform_acpi_info.h", "misc_cfg.h",
|
|
"board_info.h", "vbar_base.h"]
|
|
|
|
|
|
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 = {}
|
|
|
|
(err_dic, params) = common.get_param(args)
|
|
if err_dic:
|
|
return err_dic
|
|
|
|
# check env
|
|
err_dic = common.prepare()
|
|
if err_dic:
|
|
return err_dic
|
|
|
|
common.BOARD_INFO_FILE = params['--board']
|
|
common.SCENARIO_INFO_FILE = params['--scenario']
|
|
common.get_vm_num(params['--scenario'])
|
|
common.get_vm_types()
|
|
|
|
if common.VM_COUNT > common.MAX_VM_NUM:
|
|
err_dic['vm count'] = "The vm count in config xml should be less or equal {}!".format(common.MAX_VM_NUM)
|
|
return err_dic
|
|
|
|
# check if this is the scenario config which matched board info
|
|
# get board name
|
|
(err_dic, board) = common.get_board_name()
|
|
if err_dic:
|
|
return err_dic
|
|
|
|
(err_dic, scenario) = common.get_scenario_name()
|
|
if err_dic:
|
|
return err_dic
|
|
board_cfg_lib.BOARD_NAME = board
|
|
|
|
# check if this is the scenario config which matched board info
|
|
(err_dic, status) = common.is_config_file_match()
|
|
if not status:
|
|
err_dic['board config'] = "The board xml file does not match scenario xml file!"
|
|
return err_dic
|
|
|
|
output = ''
|
|
if params['--out']:
|
|
if os.path.isabs(params['--out']):
|
|
output = params['--out']
|
|
else:
|
|
output = ACRN_PATH + params['--out']
|
|
else:
|
|
output = ACRN_CONFIG_DEF
|
|
|
|
board_fix_dir = os.path.join(output, "boards/" + board + '/')
|
|
scen_board_dir = os.path.join(output, "scenarios/" + scenario + "/" + board + '/')
|
|
common.mkdir(board_fix_dir)
|
|
common.mkdir(scen_board_dir)
|
|
|
|
config_pci = board_fix_dir + GEN_FILE[0]
|
|
config_board = board_fix_dir + GEN_FILE[1]
|
|
config_acpi = board_fix_dir + GEN_FILE[2]
|
|
config_board_h = board_fix_dir + GEN_FILE[4]
|
|
config_misc_cfg = scen_board_dir + GEN_FILE[3]
|
|
config_vbar_base = scen_board_dir + GEN_FILE[5]
|
|
|
|
# generate pci_devices.h
|
|
with open(config_pci, 'w+') as config:
|
|
pci_devices_h.generate_file(config)
|
|
|
|
# generate board_info.h
|
|
with open(config_board_h, 'w+') as config:
|
|
err_dic = board_info_h.generate_file(config)
|
|
if err_dic:
|
|
return err_dic
|
|
|
|
# generate board.c
|
|
with open(config_board, 'w+') as config:
|
|
err_dic = board_c.generate_file(config)
|
|
if err_dic:
|
|
return err_dic
|
|
|
|
# generate vbar_base.h
|
|
with open(config_vbar_base, 'w+') as config:
|
|
vbar_base_h.generate_file(config)
|
|
|
|
# generate platform_acpi_info.h
|
|
with open(config_acpi, 'w+') as config:
|
|
acpi_platform_h.generate_file(config, ACRN_DEFAULT_ACPI)
|
|
|
|
# generate misc_cfg.h
|
|
with open(config_misc_cfg, 'w+') as config:
|
|
err_dic = misc_cfg_h.generate_file(config)
|
|
if err_dic:
|
|
return err_dic
|
|
|
|
if not err_dic:
|
|
print("Board configurations for {} is generated successfully.".format(board))
|
|
else:
|
|
print("Board configurations for {} is generated failed.".format(board))
|
|
|
|
return err_dic
|
|
|
|
|
|
def ui_entry_api(board_info, scenario_info, out=''):
|
|
|
|
arg_list = ['board_cfg_gen.py', '--board', board_info, '--scenario', scenario_info, '--out', out]
|
|
|
|
err_dic = common.prepare()
|
|
if err_dic:
|
|
return err_dic
|
|
|
|
err_dic = main(arg_list)
|
|
|
|
return err_dic
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
ARGS = sys.argv
|
|
err_dic = main(ARGS)
|
|
if err_dic:
|
|
for err_k, err_v in err_dic.items():
|
|
common.print_red("{}: {}".format(err_k, err_v), err=True)
|