From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: bob.c.feng@intel.com) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by groups.io with SMTP; Wed, 28 Aug 2019 02:17:23 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Aug 2019 02:17:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,440,1559545200"; d="scan'208";a="185564375" Received: from shwdepsi1121.ccr.corp.intel.com ([10.239.158.47]) by orsmga006.jf.intel.com with ESMTP; 28 Aug 2019 02:17:22 -0700 From: "Bob Feng" To: devel@edk2.groups.io Cc: Liming Gao , Bob Feng Subject: [Patch][edk2-stable201908] BaseTools: Fixed regression issue for building !x86 builds Date: Wed, 28 Aug 2019 17:17:10 +0800 Message-Id: <20190828091710.22372-1-bob.c.feng@intel.com> X-Mailer: git-send-email 2.20.1.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2134 This patch is to fix a build tool regression issue which was introduced by commit e8449e1d8e. In commit e8449e1d8e, build tool check the pcd before filter out the irrelevant library instance. The logic of evaluating the priority of the library class resolutions was not changed. Cc: Liming Gao Signed-off-by: Bob Feng --- .../Source/Python/Workspace/InfBuildData.py | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/BaseTools/Source/Python/Workspace/InfBuildData.py b/BaseTools/Source/Python/Workspace/InfBuildData.py index e63246b03b..7675b0ea00 100644 --- a/BaseTools/Source/Python/Workspace/InfBuildData.py +++ b/BaseTools/Source/Python/Workspace/InfBuildData.py @@ -154,12 +154,11 @@ class InfBuildData(ModuleBuildClassObject): self._PcdComments = None self._BuildOptions = None self._DependencyFileList = None self.LibInstances = [] self.ReferenceModules = set() - self.Guids - self.Pcds + def SetReferenceModule(self,Module): self.ReferenceModules.add(Module) return self ## XXX[key] = value @@ -654,10 +653,24 @@ class InfBuildData(ModuleBuildClassObject): "Value of Guid [%s] is not found under [Guids] section in" % CName, ExtraData=PackageList, File=self.MetaFile, Line=Record[-1]) RetVal[CName] = Value CommentRecords = self._RawData[MODEL_META_DATA_COMMENT, self._Arch, self._Platform, Record[5]] self._GuidComments[CName] = [a[0] for a in CommentRecords] + + for Type in [MODEL_PCD_FIXED_AT_BUILD,MODEL_PCD_PATCHABLE_IN_MODULE,MODEL_PCD_FEATURE_FLAG,MODEL_PCD_DYNAMIC,MODEL_PCD_DYNAMIC_EX]: + RecordList = self._RawData[Type, self._Arch, self._Platform] + for TokenSpaceGuid, _, _, _, _, _, LineNo in RecordList: + # get the guid value + if TokenSpaceGuid not in RetVal: + Value = GuidValue(TokenSpaceGuid, self.Packages, self.MetaFile.Path) + if Value is None: + PackageList = "\n\t".join(str(P) for P in self.Packages) + EdkLogger.error('build', RESOURCE_NOT_AVAILABLE, + "Value of Guid [%s] is not found under [Guids] section in" % TokenSpaceGuid, + ExtraData=PackageList, File=self.MetaFile, Line=LineNo) + RetVal[TokenSpaceGuid] = Value + self._GuidsUsedByPcd[TokenSpaceGuid] = Value return RetVal ## Retrieve include paths necessary for this module (for Edk.x style of modules) @cached_property def Includes(self): @@ -856,11 +869,11 @@ class InfBuildData(ModuleBuildClassObject): if file_name.upper().endswith("DEC"): pkg = os.path.join(TopDir,file_name) return pkg @cached_class_function def GetGuidsUsedByPcd(self): - self.Pcds + self.Guid return self._GuidsUsedByPcd ## Retrieve PCD for given type def _GetPcd(self, Type): Pcds = OrderedDict() @@ -868,20 +881,10 @@ class InfBuildData(ModuleBuildClassObject): PcdList = [] RecordList = self._RawData[Type, self._Arch, self._Platform] for TokenSpaceGuid, PcdCName, Setting, Arch, Platform, Id, LineNo in RecordList: PcdDict[Arch, Platform, PcdCName, TokenSpaceGuid] = (Setting, LineNo) PcdList.append((PcdCName, TokenSpaceGuid)) - # get the guid value - if TokenSpaceGuid not in self.Guids: - Value = GuidValue(TokenSpaceGuid, self.Packages, self.MetaFile.Path) - if Value is None: - PackageList = "\n\t".join(str(P) for P in self.Packages) - EdkLogger.error('build', RESOURCE_NOT_AVAILABLE, - "Value of Guid [%s] is not found under [Guids] section in" % TokenSpaceGuid, - ExtraData=PackageList, File=self.MetaFile, Line=LineNo) - self.Guids[TokenSpaceGuid] = Value - self._GuidsUsedByPcd[TokenSpaceGuid] = Value CommentRecords = self._RawData[MODEL_META_DATA_COMMENT, self._Arch, self._Platform, Id] Comments = [] for CmtRec in CommentRecords: Comments.append(CmtRec[0]) self._PcdComments[TokenSpaceGuid, PcdCName] = Comments -- 2.20.1.windows.1