Some questions inline. > -----Original Message----- > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of > Christian Rodriguez > Sent: Thursday, May 09, 2019 2:27 PM > To: devel@edk2.groups.io > Cc: Feng, Bob C <bob.c.f...@intel.com>; Gao, Liming > <liming....@intel.com>; Zhu, Yonghong <yonghong....@intel.com> > Subject: [edk2-devel] [PATCH] BaseTools: Include headers not mentioned in > inf are not hashed > > 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:
Confused about localSourceFileList. Why is it a set and named list? Why not just use self.SourceFileList? > + 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() Can you use 'with open(...) as...:' syntax to make sure the file is always closed? > + 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 (#40382): https://edk2.groups.io/g/devel/message/40382 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] -=-=-=-=-=-=-=-=-=-=-=-