From e3c8311f8a196772bea453b832f33d34225488de Mon Sep 17 00:00:00 2001 From: "Feng, Bob C" Date: Fri, 6 Sep 2019 21:22:59 +0800 Subject: [PATCH] BaseTools: Fixed the bug of multi-thread genffs for override inf BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1302 If there is a inf override, and multi-thread genffs is enabled, build will fail. This patch is going to fix this bug. Cc: Liming Gao Cc: Steven Shi Signed-off-by: Bob Feng Reviewed-by: Liming Gao --- BaseTools/Source/Python/AutoGen/AutoGenWorker.py | 2 +- BaseTools/Source/Python/AutoGen/ModuleAutoGen.py | 2 +- BaseTools/Source/Python/GenFds/FfsInfStatement.py | 5 ++++- BaseTools/Source/Python/build/build.py | 8 ++++---- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/BaseTools/Source/Python/AutoGen/AutoGenWorker.py b/BaseTools/Source/Python/AutoGen/AutoGenWorker.py index f488ae9d5f..77fbd8b369 100755 --- a/BaseTools/Source/Python/AutoGen/AutoGenWorker.py +++ b/BaseTools/Source/Python/AutoGen/AutoGenWorker.py @@ -241,7 +241,7 @@ class AutoGenWorkerInProcess(mp.Process): continue Ma.CreateCodeFile(False) - Ma.CreateMakeFile(False,GenFfsList=FfsCmd.get((Ma.MetaFile.File, Ma.Arch),[])) + Ma.CreateMakeFile(False,GenFfsList=FfsCmd.get((Ma.MetaFile.Path, Ma.Arch),[])) if GlobalData.gBinCacheSource and CommandTarget in [None, "", "all"]: Ma.GenMakeHeaderFilesHash(GlobalData.gCacheIR) diff --git a/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py b/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py index 5f28681e31..fad5bab0f2 100755 --- a/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py +++ b/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py @@ -2123,7 +2123,7 @@ class ModuleAutoGen(AutoGen): self.CreateCodeFile() if not (self.MetaFile.Path, self.Arch) in gDict or \ not gDict[(self.MetaFile.Path, self.Arch)].CreateMakeFileDone: - self.CreateMakeFile(GenFfsList=GlobalData.FfsCmd.get((self.MetaFile.File, self.Arch),[])) + self.CreateMakeFile(GenFfsList=GlobalData.FfsCmd.get((self.MetaFile.Path, self.Arch),[])) if not (self.MetaFile.Path, self.Arch) in gDict or \ not gDict[(self.MetaFile.Path, self.Arch)].CreateCodeFileDone or \ diff --git a/BaseTools/Source/Python/GenFds/FfsInfStatement.py b/BaseTools/Source/Python/GenFds/FfsInfStatement.py index ebb93b14c4..43dbd0102f 100644 --- a/BaseTools/Source/Python/GenFds/FfsInfStatement.py +++ b/BaseTools/Source/Python/GenFds/FfsInfStatement.py @@ -502,7 +502,10 @@ class FfsInfStatement(FfsInfStatementClassObject): if self.IsBinaryModule: IsMakefile = False if IsMakefile: - MakefilePath = self.InfFileName, Arch + PathClassObj = PathClass(self.InfFileName, GenFdsGlobalVariable.WorkSpaceDir) + if self.OverrideGuid: + PathClassObj = ProcessDuplicatedInf(PathClassObj, self.OverrideGuid, GenFdsGlobalVariable.WorkSpaceDir) + MakefilePath = PathClassObj.Path, Arch if isinstance (Rule, RuleSimpleFile.RuleSimpleFile): SectionOutputList = self.__GenSimpleFileSection__(Rule, IsMakefile=IsMakefile) FfsOutput = self.__GenSimpleFileFfs__(Rule, SectionOutputList, MakefilePath=MakefilePath) diff --git a/BaseTools/Source/Python/build/build.py b/BaseTools/Source/Python/build/build.py index 13be6c33ec..d314c015aa 100755 --- a/BaseTools/Source/Python/build/build.py +++ b/BaseTools/Source/Python/build/build.py @@ -843,7 +843,7 @@ class Build(): continue PcdMa.CreateCodeFile(False) - PcdMa.CreateMakeFile(False,GenFfsList = DataPipe.Get("FfsCommand").get((PcdMa.MetaFile.File, PcdMa.Arch),[])) + PcdMa.CreateMakeFile(False,GenFfsList = DataPipe.Get("FfsCommand").get((PcdMa.MetaFile.Path, PcdMa.Arch),[])) if GlobalData.gBinCacheSource and self.Target in [None, "", "all"]: PcdMa.GenMakeHeaderFilesHash(share_data) @@ -1881,9 +1881,9 @@ class Build(): return True if not self.SkipAutoGen or self.Target == 'genmake': self.Progress.Start("Generating makefile") - if CmdListDict and self.Fdf and (Module.File, Arch) in CmdListDict: - Ma.CreateMakeFile(True, CmdListDict[Module.File, Arch]) - del CmdListDict[Module.File, Arch] + if CmdListDict and self.Fdf and (Module.Path, Arch) in CmdListDict: + Ma.CreateMakeFile(True, CmdListDict[Module.Path, Arch]) + del CmdListDict[Module.Path, Arch] else: Ma.CreateMakeFile(True) self.Progress.Stop("done!") -- 2.39.2