BaseTools: Refactor hash tracking after checking for Sources section

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1804

After adding a check to see if [Sources] section lists all the header
type files of a module, track module and library hashes for --hash
feature. If above check is not in compilance for a library or module,
force hash invalidation on that library or module.

Signed-off-by: Christian Rodriguez <christian.rodriguez@intel.com>
Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Reviewed-by: Bob Feng <bob.c.feng@intel.com>
This commit is contained in:
Rodriguez, Christian
2019-05-30 00:26:49 +08:00
committed by Feng, Bob C
parent 1fa6699e6c
commit 48b0bf6476
4 changed files with 53 additions and 27 deletions

View File

@ -935,10 +935,16 @@ cleanlib:
continue
headerFileDependencySet.add(aFileName)
# Ensure that gModuleBuildTracking has been initialized per architecture
if self._AutoGenObject.Arch not in GlobalData.gModuleBuildTracking:
GlobalData.gModuleBuildTracking[self._AutoGenObject.Arch] = dict()
# Check if a module dependency header file is missing from the module's MetaFile
for aFile in headerFileDependencySet:
if aFile in headerFilesInMetaFileSet:
continue
if GlobalData.gUseHashCache:
GlobalData.gModuleBuildTracking[self._AutoGenObject.Arch][self._AutoGenObject] = 'FAIL_METAFILE'
EdkLogger.warn("build","Module MetaFile [Sources] is missing local header!",
ExtraData = "Local Header: " + aFile + " not found in " + self._AutoGenObject.MetaFile.Path
)