* [Patch 1/3 V2] BaseTools: Not cache the .efi file location into build option
2017-12-12 7:27 [Patch 0/3 V2] BaseTools: Fix some bugs about hash value enable Yonghong Zhu
@ 2017-12-12 7:27 ` Yonghong Zhu
2017-12-12 7:27 ` [Patch 2/3 V2] BaseTools: back up the binary files when hash value is same Yonghong Zhu
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Yonghong Zhu @ 2017-12-12 7:27 UTC (permalink / raw)
To: edk2-devel; +Cc: Liming Gao
We don't need cache the .efi file location into build option, otherwise
when we change the --binary-destination location, it would cause the
hash value is different.
Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
---
BaseTools/Source/Python/AutoGen/AutoGen.py | 3 ---
1 file changed, 3 deletions(-)
diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py
index 1c4c395..8ad385a 100644
--- a/BaseTools/Source/Python/AutoGen/AutoGen.py
+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
@@ -684,13 +684,10 @@ class WorkspaceAutoGen(AutoGen):
content += os.linesep
if self.FdfFile:
content += 'Flash Image Definition: '
content += str(self.FdfFile)
content += os.linesep
- if GlobalData.gBinCacheDest:
- content += 'Cache of .efi location: '
- content += str(GlobalData.gBinCacheDest)
SaveFileOnChange(os.path.join(self.BuildDir, 'BuildOptions'), content, False)
#
# Create PcdToken Number file for Dynamic/DynamicEx Pcd.
#
--
2.6.1.windows.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Patch 2/3 V2] BaseTools: back up the binary files when hash value is same
2017-12-12 7:27 [Patch 0/3 V2] BaseTools: Fix some bugs about hash value enable Yonghong Zhu
2017-12-12 7:27 ` [Patch 1/3 V2] BaseTools: Not cache the .efi file location into build option Yonghong Zhu
@ 2017-12-12 7:27 ` Yonghong Zhu
2017-12-12 7:27 ` [Patch 3/3 V2] BaseTools: enable hash value check for single module build Yonghong Zhu
2017-12-12 9:57 ` [Patch 0/3 V2] BaseTools: Fix some bugs about hash value enable Gao, Liming
3 siblings, 0 replies; 5+ messages in thread
From: Yonghong Zhu @ 2017-12-12 7:27 UTC (permalink / raw)
To: edk2-devel; +Cc: Liming Gao
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>
---
BaseTools/Source/Python/AutoGen/AutoGen.py | 13 +++++++++++--
BaseTools/Source/Python/build/build.py | 5 +++++
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py
index 8ad385a..b00390c 100644
--- a/BaseTools/Source/Python/AutoGen/AutoGen.py
+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
@@ -3836,11 +3836,17 @@ class ModuleAutoGen(AutoGen):
fInputfile.close ()
return OutputName
## 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:
return
# Skip the following code for EDK I inf
if self.AutoGenVersion < 0x00010005:
@@ -3969,11 +3975,10 @@ class ModuleAutoGen(AutoGen):
AsBuiltInfDict['module_uefi_specification_version'] += [self.Specification['UEFI_SPECIFICATION_VERSION']]
if 'PI_SPECIFICATION_VERSION' in self.Specification:
AsBuiltInfDict['module_pi_specification_version'] += [self.Specification['PI_SPECIFICATION_VERSION']]
OutputDir = self.OutputDir.replace('\\', '/').strip('/')
- self.OutputFile = []
for Item in self.CodaTargetList:
File = Item.Target.Path.replace('\\', '/').strip('/').replace(OutputDir, '').strip('/')
if File not in self.OutputFile:
self.OutputFile.append(File)
if Item.Target.Ext.lower() == '.aml':
@@ -4196,12 +4201,16 @@ class ModuleAutoGen(AutoGen):
ModuleFile = path.join(self.OutputDir, self.Name + '.inf')
if os.path.exists(HashFile):
shutil.copy2(HashFile, FileDir)
if os.path.exists(ModuleFile):
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:
for File in self.OutputFile:
+ File = str(File)
if not os.path.isabs(File):
File = os.path.join(self.OutputDir, File)
if os.path.exists(File):
shutil.copy2(File, FileDir)
diff --git a/BaseTools/Source/Python/build/build.py b/BaseTools/Source/Python/build/build.py
index f94285a..457f6c9 100644
--- a/BaseTools/Source/Python/build/build.py
+++ b/BaseTools/Source/Python/build/build.py
@@ -823,10 +823,11 @@ class Build():
self.Platform = None
self.ToolChainFamily = None
self.LoadFixAddress = 0
self.UniFlag = BuildOptions.Flag
self.BuildModules = []
+ self.HashSkipModules = []
self.Db_Flag = False
self.LaunchPrebuildFlag = False
self.PlatformBuildPath = os.path.join(GlobalData.gConfDirectory,'.cache', '.PlatformBuild')
if BuildOptions.CommandLength:
GlobalData.gCommandMaxLength = BuildOptions.CommandLength
@@ -2014,10 +2015,11 @@ class Build():
Ma = ModuleAutoGen(Wa, Module, BuildTarget, ToolChain, Arch, self.PlatformFile)
if Ma == None:
continue
if Ma.CanSkipbyHash():
+ self.HashSkipModules.append(Ma)
continue
# Not to auto-gen for targets 'clean', 'cleanlib', 'cleanall', 'run', 'fds'
if self.Target not in ['clean', 'cleanlib', 'cleanall', 'run', 'fds']:
# for target which must generate AutoGen code and makefile
@@ -2212,11 +2214,14 @@ class Build():
RemoveDirectory(os.path.dirname(GlobalData.gDatabasePath), True)
def CreateAsBuiltInf(self):
for Module in self.BuildModules:
Module.CreateAsBuiltInf()
+ for Module in self.HashSkipModules:
+ Module.CreateAsBuiltInf(True)
self.BuildModules = []
+ self.HashSkipModules = []
## Do some clean-up works when error occurred
def Relinquish(self):
OldLogLevel = EdkLogger.GetLevel()
EdkLogger.SetLevel(EdkLogger.ERROR)
#self.DumpBuildData()
--
2.6.1.windows.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Patch 3/3 V2] BaseTools: enable hash value check for single module build
2017-12-12 7:27 [Patch 0/3 V2] BaseTools: Fix some bugs about hash value enable Yonghong Zhu
2017-12-12 7:27 ` [Patch 1/3 V2] BaseTools: Not cache the .efi file location into build option Yonghong Zhu
2017-12-12 7:27 ` [Patch 2/3 V2] BaseTools: back up the binary files when hash value is same Yonghong Zhu
@ 2017-12-12 7:27 ` Yonghong Zhu
2017-12-12 9:57 ` [Patch 0/3 V2] BaseTools: Fix some bugs about hash value enable Gao, Liming
3 siblings, 0 replies; 5+ messages in thread
From: Yonghong Zhu @ 2017-12-12 7:27 UTC (permalink / raw)
To: edk2-devel; +Cc: Liming Gao
This patch enables hash value check for single module build to decide
whether we can skip to build this module.
Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
---
BaseTools/Source/Python/build/build.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/BaseTools/Source/Python/build/build.py b/BaseTools/Source/Python/build/build.py
index 457f6c9..8cf139c 100644
--- a/BaseTools/Source/Python/build/build.py
+++ b/BaseTools/Source/Python/build/build.py
@@ -1843,10 +1843,14 @@ class Build():
Pa = PlatformAutoGen(Wa, self.PlatformFile, BuildTarget, ToolChain, Arch)
for Module in Pa.Platform.Modules:
if self.ModuleFile.Dir == Module.Dir and self.ModuleFile.Name == Module.Name:
Ma = ModuleAutoGen(Wa, Module, BuildTarget, ToolChain, Arch, self.PlatformFile)
if Ma == None: continue
+ MaList.append(Ma)
+ if Ma.CanSkipbyHash():
+ self.HashSkipModules.append(Ma)
+ continue
# Not to auto-gen for targets 'clean', 'cleanlib', 'cleanall', 'run', 'fds'
if self.Target not in ['clean', 'cleanlib', 'cleanall', 'run', 'fds']:
# for target which must generate AutoGen code and makefile
if not self.SkipAutoGen or self.Target == 'genc':
Ma.CreateCodeFile(True)
@@ -1854,11 +1858,10 @@ class Build():
if CmdListDict and self.Fdf and (Module.File, Arch) in CmdListDict:
Ma.CreateMakeFile(True, CmdListDict[Module.File, Arch])
del CmdListDict[Module.File, Arch]
else:
Ma.CreateMakeFile(True)
- MaList.append(Ma)
self.BuildModules.append(Ma)
self.AutoGenTime += int(round((time.time() - AutoGenStart)))
MakeStart = time.time()
for Ma in self.BuildModules:
if not Ma.IsBinaryModule:
--
2.6.1.windows.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Patch 0/3 V2] BaseTools: Fix some bugs about hash value enable
2017-12-12 7:27 [Patch 0/3 V2] BaseTools: Fix some bugs about hash value enable Yonghong Zhu
` (2 preceding siblings ...)
2017-12-12 7:27 ` [Patch 3/3 V2] BaseTools: enable hash value check for single module build Yonghong Zhu
@ 2017-12-12 9:57 ` Gao, Liming
3 siblings, 0 replies; 5+ messages in thread
From: Gao, Liming @ 2017-12-12 9:57 UTC (permalink / raw)
To: Zhu, Yonghong, edk2-devel@lists.01.org
Reviewed-by: Liming Gao <liming.gao@intel.com>
>-----Original Message-----
>From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>Yonghong Zhu
>Sent: Tuesday, December 12, 2017 3:27 PM
>To: edk2-devel@lists.01.org
>Subject: [edk2] [Patch 0/3 V2] BaseTools: Fix some bugs about hash value
>enable
>
>This patches fix some bugs about hash value enable feature.
>
>Yonghong Zhu (3):
> BaseTools: Not cache the .efi file location into build option
> BaseTools: back up the binary files when hash value is same
> BaseTools: enable hash value check for single module build
>
> BaseTools/Source/Python/AutoGen/AutoGen.py | 16 +++++++++++-----
> BaseTools/Source/Python/build/build.py | 10 +++++++++-
> 2 files changed, 20 insertions(+), 6 deletions(-)
>
>--
>2.6.1.windows.1
>
>_______________________________________________
>edk2-devel mailing list
>edk2-devel@lists.01.org
>https://lists.01.org/mailman/listinfo/edk2-devel
^ permalink raw reply [flat|nested] 5+ messages in thread