From 5692fa883f4e2583bbef9aae4082b87515ae51e1 Mon Sep 17 00:00:00 2001 From: Hess Chen Date: Sat, 1 Apr 2017 13:33:03 +0800 Subject: [PATCH] BaseTools/UPT: Use a simple way to get package path Instead of parsing all content of DEC file, just get the package path only to save time. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hess Chen Reviewed-by: Yonghong Zhu --- .../Source/Python/UPT/Core/DependencyRules.py | 56 ++++++++++++------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/BaseTools/Source/Python/UPT/Core/DependencyRules.py b/BaseTools/Source/Python/UPT/Core/DependencyRules.py index 7039a7d626..57f7b40da5 100644 --- a/BaseTools/Source/Python/UPT/Core/DependencyRules.py +++ b/BaseTools/Source/Python/UPT/Core/DependencyRules.py @@ -1,7 +1,7 @@ ## @file # This file is for installed package information database operations # -# Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.
+# Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.
# # This program and the accompanying materials are licensed and made available # under the terms and conditions of the BSD License which accompanies this @@ -21,14 +21,15 @@ Dependency # Import Modules # from os.path import dirname +import os import Logger.Log as Logger from Logger import StringTable as ST from Library.Parsing import GetWorkspacePackage from Library.Parsing import GetWorkspaceModule +from Library.Parsing import GetPkgInfoFromDec from Library.Misc import GetRelativePath from Library import GlobalData -from PomAdapter.InfPomAlignment import InfPomAlignment from Logger.ToolError import FatalError from Logger.ToolError import EDK1_INF_ERROR from Logger.ToolError import UNKNOWN_ERROR @@ -373,14 +374,11 @@ class DependencyRules(object): # True: module doesn't depend on package in DpPackagePathList # def VerifyRemoveModuleDep(Path, DpPackagePathList): - WorkSP = GlobalData.gWORKSPACE - try: - PomAli = InfPomAlignment(Path, WorkSP, Skip=True) - - for Item in PomAli.GetPackageDependencyList(): - if Item.GetPackageFilePath() in DpPackagePathList: - Logger.Info(ST.MSG_MODULE_DEPEND_ON % (Path, Item.GetPackageFilePath())) + for Item in GetPackagePath(Path): + if Item in DpPackagePathList: + DecPath = os.path.normpath(os.path.join(GlobalData.gWORKSPACE, Item)) + Logger.Info(ST.MSG_MODULE_DEPEND_ON % (Path, DecPath)) return False else: return True @@ -392,6 +390,30 @@ def VerifyRemoveModuleDep(Path, DpPackagePathList): else: return True +# # GetPackagePath +# +# Get Dependency package path from an Inf file path +# +def GetPackagePath(InfPath): + PackagePath = [] + if os.path.exists(InfPath): + FindSection = False + for Line in open(InfPath).readlines(): + Line = Line.strip() + if not Line: + continue + if Line.startswith('#'): + continue + if Line.startswith('[Packages') and Line.endswith(']'): + FindSection = True + continue + if Line.startswith('[') and Line.endswith(']') and FindSection: + break + if FindSection: + PackagePath.append(os.path.normpath(Line)) + + return PackagePath + ## check whether module depends on packages in DpPackagePathList and can not be satisfied by OtherPkgList # # @param Path: a module path @@ -402,16 +424,13 @@ def VerifyRemoveModuleDep(Path, DpPackagePathList): # but can be satisfied by OtherPkgList # def VerifyReplaceModuleDep(Path, DpPackagePathList, OtherPkgList): - WorkSP = GlobalData.gWORKSPACE - try: - PomAli = InfPomAlignment(Path, WorkSP, Skip=True) - - for Item in PomAli.GetPackageDependencyList(): - if Item.GetPackageFilePath() in DpPackagePathList: - Guid, Version = Item.GetGuid(), Item.GetVersion() + for Item in GetPackagePath(Path): + if Item in DpPackagePathList: + DecPath = os.path.normpath(os.path.join(GlobalData.gWORKSPACE, Item)) + Name, Guid, Version = GetPkgInfoFromDec(DecPath) if (Guid, Version) not in OtherPkgList: - Logger.Info(ST.MSG_MODULE_DEPEND_ON % (Path, Item.GetPackageFilePath())) + Logger.Info(ST.MSG_MODULE_DEPEND_ON % (Path, DecPath)) return False else: return True @@ -422,6 +441,3 @@ def VerifyReplaceModuleDep(Path, DpPackagePathList, OtherPkgList): return True else: return True - - - -- 2.39.2