BaseTools: Fix corner-cases of --hash feature

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

Respect artifact location within directory structure.

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>
This commit is contained in:
Rodriguez, Christian 2019-04-05 00:04:22 +08:00 committed by Feng, Bob C
parent 1b8caf0d87
commit f2b5e04aca
1 changed files with 13 additions and 3 deletions

View File

@ -3900,9 +3900,11 @@ class ModuleAutoGen(AutoGen):
FileDir = path.join(GlobalData.gBinCacheDest, self.Arch, self.SourceDir, self.MetaFile.BaseName) FileDir = path.join(GlobalData.gBinCacheDest, self.Arch, self.SourceDir, self.MetaFile.BaseName)
CreateDirectory (FileDir) CreateDirectory (FileDir)
HashFile = path.join(self.BuildDir, self.Name + '.hash') HashFile = path.join(self.BuildDir, self.Name + '.hash')
ModuleFile = path.join(self.OutputDir, self.Name + '.inf')
if os.path.exists(HashFile): if os.path.exists(HashFile):
shutil.copy2(HashFile, FileDir) shutil.copy2(HashFile, FileDir)
if self.IsLibrary:
return
ModuleFile = path.join(self.OutputDir, self.Name + '.inf')
if os.path.exists(ModuleFile): if os.path.exists(ModuleFile):
shutil.copy2(ModuleFile, FileDir) shutil.copy2(ModuleFile, FileDir)
if not self.OutputFile: if not self.OutputFile:
@ -3914,7 +3916,11 @@ class ModuleAutoGen(AutoGen):
if not os.path.isabs(File): if not os.path.isabs(File):
File = os.path.join(self.OutputDir, File) File = os.path.join(self.OutputDir, File)
if os.path.exists(File): if os.path.exists(File):
shutil.copy2(File, FileDir) sub_dir = os.path.relpath(File, self.OutputDir)
destination_file = os.path.join(FileDir, sub_dir)
destination_dir = os.path.dirname(destination_file)
CreateDirectory(destination_dir)
shutil.copy2(File, destination_dir)
def AttemptModuleCacheCopy(self): def AttemptModuleCacheCopy(self):
# If library or Module is binary do not skip by hash # If library or Module is binary do not skip by hash
@ -3938,7 +3944,11 @@ class ModuleAutoGen(AutoGen):
shutil.copy2(HashFile, self.BuildDir) shutil.copy2(HashFile, self.BuildDir)
else: else:
File = path.join(root, f) File = path.join(root, f)
shutil.copy2(File, self.OutputDir) sub_dir = os.path.relpath(File, FileDir)
destination_file = os.path.join(self.OutputDir, sub_dir)
destination_dir = os.path.dirname(destination_file)
CreateDirectory(destination_dir)
shutil.copy2(File, destination_dir)
if self.Name == "PcdPeim" or self.Name == "PcdDxe": if self.Name == "PcdPeim" or self.Name == "PcdDxe":
CreatePcdDatabaseCode(self, TemplateString(), TemplateString()) CreatePcdDatabaseCode(self, TemplateString(), TemplateString())
return True return True