board-inspector: reorganize the scripts
This patch reorganize the files of the board inspector as follows. 1. Rename the directory name from `target` to `board_inspector`, in order to align with the name used in ACRN documentation. 2. Move the scripts that generate the current board XML into the `legacy` sub-directory. The legacy nodes will be removed after transitioning to the new board XML schema completely, 3. Add the main script `cli.py` which is the command line interface of the board inspector. v1 -> v2: - Rename `run.py` to `cli.py`. Tracked-On: #5922 Signed-off-by: Junjie Mao <junjie.mao@intel.com>
This commit is contained in:
parent
9c79e2ebdc
commit
bd4ddbd31d
|
@ -1,9 +1,9 @@
|
|||
board_parser.py will collect all board related info and then generate a board info file for acrn-config host tool usage.
|
||||
|
||||
usage: python3 board_parser.py <board_name> [--out board_info_file]
|
||||
usage: python3 run.py <board_name> [--out board_info_file]
|
||||
|
||||
board_name : the name of board that run ACRN hypervisor, like apl-up2/nuc7i7dnb. It will be used as name of the board configurations folder which created by acrn-config host tool.
|
||||
board_info_file : (optional) the name of board info file. if it is not specified, a name of <board_name>.xml will be generated under ./out/ folder by default.
|
||||
board_info_file : (optional) the name of board info file. if it is not specified, a name of <board_name>.xml will be generated under the current working directory by default.
|
||||
|
||||
Please run this script under native Linux environment with root privilege.
|
||||
|
|
@ -8,6 +8,7 @@ import sys
|
|||
from acpiparser.apic import APIC
|
||||
from acpiparser.asf import ASF
|
||||
from acpiparser.dmar import DMAR
|
||||
from acpiparser.dsdt import DSDT
|
||||
from acpiparser.facp import FACP
|
||||
from acpiparser.rtct import RTCT
|
||||
|
||||
|
@ -25,6 +26,7 @@ def make_parser(signature):
|
|||
|
||||
parse_apic = make_parser('APIC')
|
||||
parse_asf = make_parser('ASF!')
|
||||
parse_dsdt = make_parser('DSDT')
|
||||
parse_dmar = make_parser('DMAR')
|
||||
parse_facp = make_parser('FACP')
|
||||
parse_rtct = make_parser('RTCT')
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
import ctypes
|
||||
|
||||
import acpiparser.cdata as cdata
|
||||
import acpiparser.unpack as unpack
|
||||
import lib.cdata as cdata
|
||||
import lib.unpack as unpack
|
||||
|
||||
class TableHeader(cdata.Struct):
|
||||
_pack_ = 1
|
|
@ -6,8 +6,8 @@
|
|||
import ctypes
|
||||
import copy
|
||||
|
||||
import acpiparser.cdata as cdata
|
||||
import acpiparser.unpack as unpack
|
||||
import lib.cdata as cdata
|
||||
import lib.unpack as unpack
|
||||
from acpiparser._utils import TableHeader
|
||||
|
||||
class APICSubtable(cdata.Struct):
|
|
@ -6,7 +6,7 @@
|
|||
import ctypes
|
||||
import copy
|
||||
|
||||
import acpiparser.cdata as cdata
|
||||
import lib.cdata as cdata
|
||||
from acpiparser._utils import TableHeader
|
||||
|
||||
class ASFSubtable(cdata.Struct):
|
|
@ -6,7 +6,7 @@
|
|||
import ctypes
|
||||
import copy
|
||||
|
||||
import acpiparser.cdata as cdata
|
||||
import lib.cdata as cdata
|
||||
from acpiparser._utils import TableHeader
|
||||
|
||||
class DMARSubtable(cdata.Struct):
|
|
@ -6,8 +6,8 @@
|
|||
import ctypes
|
||||
import copy
|
||||
|
||||
import acpiparser.cdata as cdata
|
||||
import acpiparser.unpack as unpack
|
||||
import lib.cdata as cdata
|
||||
import lib.unpack as unpack
|
||||
from acpiparser._utils import TableHeader, GAS
|
||||
|
||||
_preferred_pm_profile = {
|
|
@ -6,7 +6,7 @@
|
|||
import ctypes
|
||||
import copy
|
||||
|
||||
import acpiparser.cdata as cdata
|
||||
import lib.cdata as cdata
|
||||
from acpiparser._utils import TableHeader
|
||||
|
||||
class RTCTSubtable(cdata.Struct):
|
|
@ -0,0 +1,48 @@
|
|||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright (C) 2021 Intel Corporation. All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
|
||||
import sys, os
|
||||
import logging
|
||||
import subprocess
|
||||
import lxml.etree
|
||||
import argparse
|
||||
from importlib import import_module
|
||||
|
||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
sys.path.append(os.path.join(script_dir))
|
||||
|
||||
def main(board_name, board_xml):
|
||||
try:
|
||||
# First invoke the legacy board parser to create the board XML ...
|
||||
legacy_parser = os.path.join(script_dir, "legacy", "board_parser.py")
|
||||
env = { "PYTHONPATH": script_dir }
|
||||
subprocess.run([sys.executable, legacy_parser, args.board_name, "--out", board_xml], check=True, env=env)
|
||||
|
||||
# ... then load the created board XML and append it with additional data by invoking the extractors.
|
||||
board_etree = lxml.etree.parse(board_xml)
|
||||
|
||||
# Clear the whitespaces between adjacent children under the root node
|
||||
board_etree.getroot().text = None
|
||||
for elem in board_etree.getroot():
|
||||
elem.tail = None
|
||||
|
||||
# Finally overwrite the output with the updated XML
|
||||
board_etree.write(board_xml, pretty_print=True)
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(e)
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("board_name", help="the name of the board that runs the ACRN hypervisor")
|
||||
parser.add_argument("--out", help="the name of board info file")
|
||||
args = parser.parse_args()
|
||||
|
||||
board_xml = args.out if args.out else f"{args.board_name}.xml"
|
||||
main(args.board_name, board_xml)
|
Loading…
Reference in New Issue