BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1787
Get a list of local header files that are not present in the MetaFile for this module. Add those local header files into the hashing algorithm for a module. If a local header file is not present in the MetaFile, the module will still build correctly though the hashing system didn't know about it before. Signed-off-by: Christian Rodriguez <christian.rodrig...@intel.com> Cc: Bob Feng <bob.c.f...@intel.com> Cc: Liming Gao <liming....@intel.com> Cc: Yonghong Zhu <yonghong....@intel.com> --- BaseTools/Source/Python/AutoGen/AutoGen.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py index 31721a6f9f..bd282d3ec1 100644 --- a/BaseTools/Source/Python/AutoGen/AutoGen.py +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py @@ -4098,8 +4098,10 @@ class ModuleAutoGen(AutoGen): if self.Name in GlobalData.gModuleHash[self.Arch] and GlobalData.gBinCacheSource and self.AttemptModuleCacheCopy(): return False m = hashlib.md5() + # Add Platform level hash m.update(GlobalData.gPlatformHash.encode('utf-8')) + # Add Package level hash if self.DependentPackageList: for Pkg in sorted(self.DependentPackageList, key=lambda x: x.PackageName): @@ -4118,14 +4120,36 @@ class ModuleAutoGen(AutoGen): Content = f.read() f.close() m.update(Content) + # Add Module's source files + localSourceFileList = set() if self.SourceFileList: for File in sorted(self.SourceFileList, key=lambda x: str(x)): + localSourceFileList.add(str(File)) f = open(str(File), 'rb') Content = f.read() f.close() m.update(Content) + # Get a list of Module's local header files not included in metaFile + localHeaderList = set() + if self.SourceDir: + for root, dirs, files in os.walk(self.SourceDir): + for aFile in files: + filePath = os.path.join(self.WorkspaceDir, os.path.join(root, aFile)) + if not filePath.endswith(('.h', '.H')): + continue + if filePath not in localSourceFileList: + localHeaderList.add(filePath) + + # Add Module's local header files + localHeaderList = list(localHeaderList) + for File in sorted(localHeaderList): + f = open(str(File), 'rb') + Content = f.read() + f.close() + m.update(Content) + ModuleHashFile = path.join(self.BuildDir, self.Name + ".hash") if self.Name not in GlobalData.gModuleHash[self.Arch]: GlobalData.gModuleHash[self.Arch][self.Name] = m.hexdigest() -- 2.19.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#40377): https://edk2.groups.io/g/devel/message/40377 Mute This Topic: https://groups.io/mt/31570019/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-