BaseTools: Fix corner-cases of --hash feature
authorRodriguez, Christian <christian.rodriguez@intel.com>
Thu, 4 Apr 2019 16:04:20 +0000 (00:04 +0800)
committerFeng, Bob C <bob.c.feng@intel.com>
Wed, 10 Apr 2019 05:32:11 +0000 (13:32 +0800)
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1680

Consider modules with .inc source files as Binary Modules
and do not Skip by hash.

Contributed-under: TianoCore Contribution Agreement 1.1
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>
BaseTools/Source/Python/AutoGen/AutoGen.py

index 711081e..b7fbf8d 100644 (file)
@@ -3917,8 +3917,13 @@ class ModuleAutoGen(AutoGen):
                     shutil.copy2(File, FileDir)\r
 \r
     def AttemptModuleCacheCopy(self):\r
+        # If library or Module is binary do not skip by hash\r
         if self.IsBinaryModule:\r
             return False\r
+        # .inc is contains binary information so do not skip by hash as well\r
+        for f_ext in self.SourceFileList:\r
+            if '.inc' in str(f_ext):\r
+                return False\r
         FileDir = path.join(GlobalData.gBinCacheSource, self.Arch, self.SourceDir, self.MetaFile.BaseName)\r
         HashFile = path.join(FileDir, self.Name + '.hash')\r
         if os.path.exists(HashFile):\r
@@ -4120,7 +4125,16 @@ class ModuleAutoGen(AutoGen):
 \r
     ## Decide whether we can skip the ModuleAutoGen process\r
     def CanSkipbyHash(self):\r
+        # If library or Module is binary do not skip by hash\r
+        if self.IsBinaryModule:\r
+            return False\r
+        # .inc is contains binary information so do not skip by hash as well\r
+        for f_ext in self.SourceFileList:\r
+            if '.inc' in str(f_ext):\r
+                return False\r
         if GlobalData.gUseHashCache:\r
+            # If there is a valid hash or function generated a valid hash; function will return False\r
+            # and the statement below will return True\r
             return not self.GenModuleHash()\r
         return False\r
 \r