mirror of https://github.com/acidanthera/audk.git
BaseTools: back up the binary files when hash value is same
V2: change to use InfBuildData but not ModuleAutoGen We meet the case that first build with --hash option, then build it again with --hash and --binary-destination option, since the hash value is same, tool will not build the driver again, it cause the binary files are not backed up. Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
5381ff6342
commit
83397f95f9
|
@ -3838,7 +3838,13 @@ class ModuleAutoGen(AutoGen):
|
||||||
|
|
||||||
## Create AsBuilt INF file the module
|
## Create AsBuilt INF file the module
|
||||||
#
|
#
|
||||||
def CreateAsBuiltInf(self):
|
def CreateAsBuiltInf(self, IsOnlyCopy = False):
|
||||||
|
self.OutputFile = []
|
||||||
|
if IsOnlyCopy:
|
||||||
|
if GlobalData.gBinCacheDest:
|
||||||
|
self.CopyModuleToCache()
|
||||||
|
return
|
||||||
|
|
||||||
if self.IsAsBuiltInfCreated:
|
if self.IsAsBuiltInfCreated:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3971,7 +3977,6 @@ class ModuleAutoGen(AutoGen):
|
||||||
AsBuiltInfDict['module_pi_specification_version'] += [self.Specification['PI_SPECIFICATION_VERSION']]
|
AsBuiltInfDict['module_pi_specification_version'] += [self.Specification['PI_SPECIFICATION_VERSION']]
|
||||||
|
|
||||||
OutputDir = self.OutputDir.replace('\\', '/').strip('/')
|
OutputDir = self.OutputDir.replace('\\', '/').strip('/')
|
||||||
self.OutputFile = []
|
|
||||||
for Item in self.CodaTargetList:
|
for Item in self.CodaTargetList:
|
||||||
File = Item.Target.Path.replace('\\', '/').strip('/').replace(OutputDir, '').strip('/')
|
File = Item.Target.Path.replace('\\', '/').strip('/').replace(OutputDir, '').strip('/')
|
||||||
if File not in self.OutputFile:
|
if File not in self.OutputFile:
|
||||||
|
@ -4198,8 +4203,12 @@ class ModuleAutoGen(AutoGen):
|
||||||
shutil.copy2(HashFile, FileDir)
|
shutil.copy2(HashFile, FileDir)
|
||||||
if os.path.exists(ModuleFile):
|
if os.path.exists(ModuleFile):
|
||||||
shutil.copy2(ModuleFile, FileDir)
|
shutil.copy2(ModuleFile, FileDir)
|
||||||
|
if not self.OutputFile:
|
||||||
|
Ma = self.Workspace.BuildDatabase[PathClass(ModuleFile), self.Arch, self.BuildTarget, self.ToolChain]
|
||||||
|
self.OutputFile = Ma.Binaries
|
||||||
if self.OutputFile:
|
if self.OutputFile:
|
||||||
for File in self.OutputFile:
|
for File in self.OutputFile:
|
||||||
|
File = str(File)
|
||||||
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):
|
||||||
|
|
|
@ -825,6 +825,7 @@ class Build():
|
||||||
self.LoadFixAddress = 0
|
self.LoadFixAddress = 0
|
||||||
self.UniFlag = BuildOptions.Flag
|
self.UniFlag = BuildOptions.Flag
|
||||||
self.BuildModules = []
|
self.BuildModules = []
|
||||||
|
self.HashSkipModules = []
|
||||||
self.Db_Flag = False
|
self.Db_Flag = False
|
||||||
self.LaunchPrebuildFlag = False
|
self.LaunchPrebuildFlag = False
|
||||||
self.PlatformBuildPath = os.path.join(GlobalData.gConfDirectory,'.cache', '.PlatformBuild')
|
self.PlatformBuildPath = os.path.join(GlobalData.gConfDirectory,'.cache', '.PlatformBuild')
|
||||||
|
@ -2016,6 +2017,7 @@ class Build():
|
||||||
if Ma == None:
|
if Ma == None:
|
||||||
continue
|
continue
|
||||||
if Ma.CanSkipbyHash():
|
if Ma.CanSkipbyHash():
|
||||||
|
self.HashSkipModules.append(Ma)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Not to auto-gen for targets 'clean', 'cleanlib', 'cleanall', 'run', 'fds'
|
# Not to auto-gen for targets 'clean', 'cleanlib', 'cleanall', 'run', 'fds'
|
||||||
|
@ -2214,7 +2216,10 @@ class Build():
|
||||||
def CreateAsBuiltInf(self):
|
def CreateAsBuiltInf(self):
|
||||||
for Module in self.BuildModules:
|
for Module in self.BuildModules:
|
||||||
Module.CreateAsBuiltInf()
|
Module.CreateAsBuiltInf()
|
||||||
|
for Module in self.HashSkipModules:
|
||||||
|
Module.CreateAsBuiltInf(True)
|
||||||
self.BuildModules = []
|
self.BuildModules = []
|
||||||
|
self.HashSkipModules = []
|
||||||
## Do some clean-up works when error occurred
|
## Do some clean-up works when error occurred
|
||||||
def Relinquish(self):
|
def Relinquish(self):
|
||||||
OldLogLevel = EdkLogger.GetLevel()
|
OldLogLevel = EdkLogger.GetLevel()
|
||||||
|
|
Loading…
Reference in New Issue