From 22fe311bd20f660186a032ffa8a655a840ab85dd Mon Sep 17 00:00:00 2001 From: Pierre Gondois Date: Wed, 7 Jul 2021 04:55:38 +0800 Subject: .pytool/EccCheck: Locate BaseTools dir with EDK_TOOLS_PATH The BaseTools directory is currently being located as a sub-directory of the WORKSPACE env var. This might not be true in other environments. Cf EDKII Build Specification, s4.1.3 "Build Process Restrictions": There is no restriction on the location of the EDK_TOOLS_PATH, it may be located within a directory identified as the WORKSPACE directory, or in any other location that is accessible on the development workstation. Locate the BaseTools directory using EDK_TOOLS_PATH instead. Cc: Sean Brogan Cc: Bret Barkelew Cc: Michael D Kinney Cc: Liming Gao Cc: Sami Mujawar Signed-off-by: Pierre Gondois Reviewed-by: Liming Gao --- .pytool/Plugin/EccCheck/EccCheck.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.pytool/Plugin/EccCheck/EccCheck.py b/.pytool/Plugin/EccCheck/EccCheck.py index eee1ff7a77..bb93446441 100644 --- a/.pytool/Plugin/EccCheck/EccCheck.py +++ b/.pytool/Plugin/EccCheck/EccCheck.py @@ -1,5 +1,6 @@ # @file EccCheck.py # +# Copyright (c) 2021, Arm Limited. All rights reserved.
# Copyright (c) 2020, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent ## @@ -61,16 +62,17 @@ class EccCheck(ICiBuildPlugin): # - output_stream the StringIO output stream from this plugin via logging def RunBuildPlugin(self, packagename, Edk2pathObj, pkgconfig, environment, PLM, PLMHelper, tc, output_stream=None): edk2_path = Edk2pathObj.WorkspacePath - python_path = os.path.join(edk2_path, "BaseTools", "Source", "Python") + basetools_path = environment.GetValue("EDK_TOOLS_PATH") + python_path = os.path.join(basetools_path, "Source", "Python") env = shell_environment.GetEnvironment() env.set_shell_var('PYTHONPATH', python_path) env.set_shell_var('WORKSPACE', edk2_path) self.ECC_PASS = True - self.ApplyConfig(pkgconfig, edk2_path, packagename) + self.ApplyConfig(pkgconfig, edk2_path, basetools_path, packagename) modify_dir_list = self.GetModifyDir(packagename) patch = self.GetDiff(packagename) ecc_diff_range = self.GetDiffRange(patch, packagename, edk2_path) - self.GenerateEccReport(modify_dir_list, ecc_diff_range, edk2_path) + self.GenerateEccReport(modify_dir_list, ecc_diff_range, edk2_path, basetools_path) ecc_log = os.path.join(edk2_path, "Ecc.log") self.RevertCode() if self.ECC_PASS: @@ -176,11 +178,11 @@ class EccCheck(ICiBuildPlugin): return comment_range def GenerateEccReport(self, modify_dir_list: List[str], ecc_diff_range: Dict[str, List[Tuple[int, int]]], - edk2_path: str) -> None: + edk2_path: str, basetools_path: str) -> None: ecc_need = False ecc_run = True - config = os.path.join(edk2_path, "BaseTools", "Source", "Python", "Ecc", "config.ini") - exception = os.path.join(edk2_path, "BaseTools", "Source", "Python", "Ecc", "exception.xml") + config = os.path.join(basetools_path, "Source", "Python", "Ecc", "config.ini") + exception = os.path.join(basetools_path, "Source", "Python", "Ecc", "exception.xml") report = os.path.join(edk2_path, "Ecc.csv") for modify_dir in modify_dir_list: target = os.path.join(edk2_path, modify_dir) @@ -234,7 +236,7 @@ class EccCheck(ICiBuildPlugin): log.writelines(all_line) return - def ApplyConfig(self, pkgconfig: Dict[str, List[str]], edk2_path: str, pkg: str) -> None: + def ApplyConfig(self, pkgconfig: Dict[str, List[str]], edk2_path: str, basetools_path: str, pkg: str) -> None: if "IgnoreFiles" in pkgconfig: for a in pkgconfig["IgnoreFiles"]: a = os.path.join(edk2_path, pkg, a) @@ -251,7 +253,7 @@ class EccCheck(ICiBuildPlugin): if "ExceptionList" in pkgconfig: exception_list = pkgconfig["ExceptionList"] - exception_xml = os.path.join(edk2_path, "BaseTools", "Source", "Python", "Ecc", "exception.xml") + exception_xml = os.path.join(basetools_path, "Source", "Python", "Ecc", "exception.xml") try: logging.info("Appending exceptions") self.AppendException(exception_list, exception_xml) -- cgit v1.2.3