Update retrieval of private guids, protocols, or ppis from a package's declaration file to use the original path of the module's INF file rather than the current path. When building the same module multiple times in the same INF (by override the define's FILE_GUID), a temporary instance of the module is generated outside the package, causing the retrieval of private values to fail as the check to access private values is done by verifying the module to build, is inside the package.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=4730 Signed-off-by: Joey Vagedes <joey.vage...@gmail.com> Cc: Rebecca Cran <rebe...@bsdio.com> Cc: Liming Gao <gaolim...@byosoft.com.cn> Cc: Bob Feng <bob.c.f...@intel.com> Cc: Yuwei Chen <yuwei.c...@intel.com> --- BaseTools/Source/Python/Workspace/InfBuildData.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/BaseTools/Source/Python/Workspace/InfBuildData.py b/BaseTools/Source/Python/Workspace/InfBuildData.py index e4ff1c668666..6339e494ca87 100644 --- a/BaseTools/Source/Python/Workspace/InfBuildData.py +++ b/BaseTools/Source/Python/Workspace/InfBuildData.py @@ -592,7 +592,7 @@ class InfBuildData(ModuleBuildClassObject): RecordList = self._RawData[MODEL_EFI_PROTOCOL, self._Arch, self._Platform] for Record in RecordList: CName = Record[0] - Value = _ProtocolValue(CName, self.Packages, self.MetaFile.Path) + Value = _ProtocolValue(CName, self.Packages, self.MetaFile.OriginalPath.Path) if Value is None: PackageList = "\n\t".join(str(P) for P in self.Packages) EdkLogger.error('build', RESOURCE_NOT_AVAILABLE, @@ -616,7 +616,7 @@ class InfBuildData(ModuleBuildClassObject): RecordList = self._RawData[MODEL_EFI_PPI, self._Arch, self._Platform] for Record in RecordList: CName = Record[0] - Value = _PpiValue(CName, self.Packages, self.MetaFile.Path) + Value = _PpiValue(CName, self.Packages, self.MetaFile.OriginalPath.Path) if Value is None: PackageList = "\n\t".join(str(P) for P in self.Packages) EdkLogger.error('build', RESOURCE_NOT_AVAILABLE, @@ -640,7 +640,7 @@ class InfBuildData(ModuleBuildClassObject): RecordList = self._RawData[MODEL_EFI_GUID, self._Arch, self._Platform] for Record in RecordList: CName = Record[0] - Value = GuidValue(CName, self.Packages, self.MetaFile.Path) + Value = GuidValue(CName, self.Packages, self.MetaFile.OriginalPath.Path) if Value is None: PackageList = "\n\t".join(str(P) for P in self.Packages) EdkLogger.error('build', RESOURCE_NOT_AVAILABLE, @@ -655,7 +655,7 @@ class InfBuildData(ModuleBuildClassObject): for TokenSpaceGuid, _, _, _, _, _, LineNo in RecordList: # get the guid value if TokenSpaceGuid not in RetVal: - Value = GuidValue(TokenSpaceGuid, self.Packages, self.MetaFile.Path) + Value = GuidValue(TokenSpaceGuid, self.Packages, self.MetaFile.OriginalPath.Path) if Value is None: PackageList = "\n\t".join(str(P) for P in self.Packages) EdkLogger.error('build', RESOURCE_NOT_AVAILABLE, @@ -818,11 +818,11 @@ class InfBuildData(ModuleBuildClassObject): Value = Token else: # get the GUID value now - Value = _ProtocolValue(Token, self.Packages, self.MetaFile.Path) + Value = _ProtocolValue(Token, self.Packages, self.MetaFile.OriginalPath.Path) if Value is None: - Value = _PpiValue(Token, self.Packages, self.MetaFile.Path) + Value = _PpiValue(Token, self.Packages, self.MetaFile.OriginalPath.Path) if Value is None: - Value = GuidValue(Token, self.Packages, self.MetaFile.Path) + Value = GuidValue(Token, self.Packages, self.MetaFile.OriginalPath.Path) if Value is None: PackageList = "\n\t".join(str(P) for P in self.Packages) -- 2.40.1.vfs.0.0 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#116716): https://edk2.groups.io/g/devel/message/116716 Mute This Topic: https://groups.io/mt/104907485/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-