I confirmed that has fixed all the issues I had. Thanks for the fix, Olivier
> -----Original Message----- > From: Chen, Hesheng [mailto:hesheng.c...@intel.com] > Sent: 20 August 2014 08:31 > To: Jordan Justen; edk2-devel@lists.sourceforge.net; Liu, Yingke D > Subject: Re: [edk2] [PATCH] BaseTools: Revert r15816 and r15831 to fix > !if in .fdf > > Justen and Dennis, > I have merged these two patches together, many thanks to Dennis for the > issue catching. > This patch is going to: > 1. Fix a bug in GenFds for wrongly handling '"' of command line > parameter. > 2. Provide different input parameter mode for different OS. For Linux, > using a list. For Windows, using a string. > 3. Remove 3 un-existing function calling. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Hess Chen <hesheng.c...@intel.com> > > > Best Regards, > Chen, Hess > Intel China Software Center > Tel: +86-21-6116-6740 > Email: hesheng.c...@intel.com > > > -----Original Message----- > From: Jordan Justen [mailto:jljus...@gmail.com] > Sent: Wednesday, August 20, 2014 14:00 PM > To: edk2-devel@lists.sourceforge.net; Liu, Yingke D; Chen, Hesheng > Subject: Re: [edk2] [PATCH] BaseTools: Revert r15816 and r15831 to fix > !if in .fdf > > On Tue, Aug 19, 2014 at 9:50 PM, Liu, Yingke D <yingke.d....@intel.com> > wrote: > > Hi Jordan, > > > > The issue has been root caused. > > Ah. Good to hear. So, will you be posting this patch for review with a > commit message? > https://github.com/tianocore/tianocore.github.io/wiki/Commit-Message- > Format > > Thanks Dennis and Hess! > > -Jordan > > > Before retiring top level makefile, the GenFds command was executed > by make fds, but after the change, we call GenFds command directly. The > -D option passed to Genfds is encapsulated by quotes which is remove > automatically by shell, that's why building on windows is ok, but in > Linux we split the command into sequence, the quotes are not removed if > calling Genfds command directly instead of 'make fds'. > > > > The following change will fix the issue: > > > > Index: GenFds.py > > =================================================================== > > --- GenFds.py (revision 15842) > > +++ GenFds.py (working copy) > > @@ -157,7 +157,7 @@ > > > > if Options.Macros: > > for Pair in Options.Macros: > > - Pair.strip('"') > > + Pair = Pair.strip('"') > > List = Pair.split('=') > > if len(List) == 2: > > if List[0].strip() == "EFI_SOURCE":Pair = > > Pair.strip('"') > > > > Dennis > > > > -----Original Message----- > > From: Jordan Justen [mailto:jordan.l.jus...@intel.com] > > Sent: Wednesday, August 20, 2014 11:10 AM > > To: Chen, Hesheng; edk2-devel@lists.sourceforge.net > > Subject: Re: [edk2] [PATCH] BaseTools: Revert r15816 and r15831 to > fix > > !if in .fdf > > > > On 2014-08-19 19:07:26, Chen, Hesheng wrote: > >> Hello Jordan and all, > >> I think we should not revert the patch since only when problem > >> happens then we can fix them. > > > > I do agree with this up to a point. It is nice to keep something in > place and fix it quickly if possible. > > > > But, if we are keeping people from being able to work for a few days, > then we should also consider reverting the feature temporarily and > integrating it again after more testing. > > > >> I will try my best to provide responses quickly. > >> Actually I have root caused the issue: there is a difference mode > >> between Linux and Windows for handling popen() parameter. By my test > >> only a list (first item is the command line itself) works well on > >> Linux and only a string works well on Windows (using a list will > lose > >> some parameters). So here is the patch to provide different mode for > >> different OS. > > > > I tried the patch, and it does not help the '!if' issue. I think > build.py.patch will only change the behavior on Windows, but I am not > testing it on Windows. > > > > I did not verify that adding a '!else' helps, like Olivier mentioned, > > but I do note that my failure case involves an !if without a !else. > > (OvmfPkg/OvmfPkgX64.fdf, CSM_ENABLE) > > > >> This patch can also fix the issue of KeyError: 'WORKSPACE' > > > > I don't know if I reproduced this issue. Does it cause the build to > stop? > > > > -Jordan > > > >> -----Original Message----- > >> From: Justen, Jordan L > >> Sent: Wednesday, August 20, 2014 3:48 AM > >> To: edk2-devel@lists.sourceforge.net > >> Cc: Justen, Jordan L; Chen, Hesheng > >> Subject: [PATCH] BaseTools: Revert r15816 and r15831 to fix !if in > >> .fdf > >> > >> r15816: "This patch is going to retire the top level makefile on > BaseTools for supporting a pure binary build without any complier." > >> > >> r15831: "This patch is going to fix a build failure (running of > >> GenFds) in Linux system caused by patch at r15816." > >> > >> Something in these changes causes !if processing to not work > correctly. Reverting these changes appears to fix it. > >> > >> Contributed-under: TianoCore Contribution Agreement 1.0 > >> Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> > >> Cc: Hess Chen <hesheng.c...@intel.com> > >> --- > >> Hess, > >> > >> I think I should revert these changes. Can you investigate the !if > processing bug, and resubmit the patch? > >> > >> Olivier mentioned that !if may only work if !endif is present. > Perhaps that can help debug it. > >> > >> BaseTools/Source/Python/AutoGen/AutoGen.py | 30 ++--- > BaseTools/Source/Python/AutoGen/GenMake.py | 96 ++++++++++++++- > >> BaseTools/Source/Python/build/build.py | 181 ++---------------- > ----------- > >> 3 files changed, 116 insertions(+), 191 deletions(-) > >> > >> diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py > >> b/BaseTools/Source/Python/AutoGen/AutoGen.py > >> index 36e4347..c466257 100644 > >> --- a/BaseTools/Source/Python/AutoGen/AutoGen.py > >> +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py > >> @@ -655,8 +655,6 @@ class WorkspaceAutoGen(AutoGen): > >> ) > >> Count += 1 > >> > >> - def _GenFdsCommand(self): > >> - return > (GenMake.TopLevelMakefile(self)._TEMPLATE_.Replace(GenMake.TopLevelMake > file(self)._TemplateDict)).strip() > >> > >> ## Create makefile for the platform and modules in it > >> # > >> @@ -664,6 +662,15 @@ class WorkspaceAutoGen(AutoGen): > >> # modules will be created > as well > >> # > >> def CreateMakeFile(self, CreateDepsMakeFile=False): > >> + # create makefile for platform > >> + Makefile = GenMake.TopLevelMakefile(self) > >> + if Makefile.Generate(): > >> + EdkLogger.debug(EdkLogger.DEBUG_9, "Generated makefile > for platform [%s] %s\n" % > >> + (self.MetaFile, self.ArchList)) > >> + else: > >> + EdkLogger.debug(EdkLogger.DEBUG_9, "Skipped the > generation of makefile for platform [%s] %s\n" % > >> + (self.MetaFile, self.ArchList)) > >> + > >> if CreateDepsMakeFile: > >> for Pa in self.AutoGenObjectList: > >> Pa.CreateMakeFile(CreateDepsMakeFile) > >> @@ -698,7 +705,6 @@ class WorkspaceAutoGen(AutoGen): > >> FvDir = property(_GetFvDir) > >> MakeFileDir = property(_GetMakeFileDir) > >> BuildCommand = property(_GetBuildCommand) > >> - GenFdsCommand = property(_GenFdsCommand) > >> > >> ## AutoGen class for platform > >> # > >> @@ -795,9 +801,6 @@ class PlatformAutoGen(AutoGen): > >> self._LibraryAutoGenList = None > >> self._BuildCommand = None > >> > >> - # get library/modules for build > >> - self.LibraryBuildDirectoryList = [] > >> - self.ModuleBuildDirectoryList = [] > >> # get the original module/package/platform objects > >> self.BuildDatabase = Workspace.BuildDatabase > >> return True > >> @@ -824,10 +827,6 @@ class PlatformAutoGen(AutoGen): > >> # don't do this twice > >> self.IsCodeFileCreated = True > >> > >> - ## Generate Fds Command > >> - def _GenFdsCommand(self): > >> - return self.Workspace.GenFdsCommand > >> - > >> ## Create makefile for the platform and mdoules in it > >> # > >> # @param CreateModuleMakeFile Flag indicating if the > makefile for > >> @@ -845,11 +844,14 @@ class PlatformAutoGen(AutoGen): > >> if self.IsMakeFileCreated: > >> return > >> > >> - # create library/module build dirs for platform > >> + # create makefile for platform > >> Makefile = GenMake.PlatformMakefile(self) > >> - self.LibraryBuildDirectoryList = > Makefile.GetLibraryBuildDirectoryList() > >> - self.ModuleBuildDirectoryList = > Makefile.GetModuleBuildDirectoryList() > >> - > >> + if Makefile.Generate(): > >> + EdkLogger.debug(EdkLogger.DEBUG_9, "Generated makefile > for platform [%s] [%s]\n" % > >> + (self.MetaFile, self.Arch)) > >> + else: > >> + EdkLogger.debug(EdkLogger.DEBUG_9, "Skipped the > generation of makefile for platform [%s] [%s]\n" % > >> + (self.MetaFile, self.Arch)) > >> self.IsMakeFileCreated = True > >> > >> ## Deal with Shared FixedAtBuild Pcds diff --git > >> a/BaseTools/Source/Python/AutoGen/GenMake.py > >> b/BaseTools/Source/Python/AutoGen/GenMake.py > >> index 0ad368a..64eedfa 100644 > >> --- a/BaseTools/Source/Python/AutoGen/GenMake.py > >> +++ b/BaseTools/Source/Python/AutoGen/GenMake.py > >> @@ -1105,7 +1105,6 @@ cleanlib: > >> self.IntermediateDirectoryList = [] > >> self.ModuleBuildDirectoryList = [] > >> self.LibraryBuildDirectoryList = [] > >> - self.LibraryMakeCommandList = [] > >> > >> # Compose a dict object containing information used to do > replacement in template > >> def _CreateTemplateDict(self): > >> @@ -1129,7 +1128,6 @@ cleanlib: > >> Command = self._MAKE_TEMPLATE_[self._FileType] % > {"file":Makefile} > >> LibraryMakefileList.append(Makefile) > >> LibraryMakeCommandList.append(Command) > >> - self.LibraryMakeCommandList = LibraryMakeCommandList > >> > >> ModuleMakefileList = [] > >> ModuleMakeCommandList = [] > >> @@ -1200,7 +1198,99 @@ cleanlib: > >> # > >> class TopLevelMakefile(BuildFile): > >> ## template used to generate toplevel makefile > >> - _TEMPLATE_ = TemplateString('''${BEGIN} GenFds -f > ${fdf_file} -o ${platform_build_directory} -t ${toolchain_tag} -b > ${build_target} -p ${active_platform} -a ${build_architecture_list} > ${extra_options}${END}${BEGIN} -r ${fd} ${END}${BEGIN} -i ${fv} > ${END}${BEGIN} -C ${cap} ${END}${BEGIN} -D ${macro} ${END}''') > >> + _TEMPLATE_ = TemplateString('''\ ${makefile_header} > >> + > >> +# > >> +# Platform Macro Definition > >> +# > >> +PLATFORM_NAME = ${platform_name} > >> +PLATFORM_GUID = ${platform_guid} > >> +PLATFORM_VERSION = ${platform_version} > >> + > >> +# > >> +# Build Configuration Macro Definition # TOOLCHAIN = > >> +${toolchain_tag} TOOLCHAIN_TAG = ${toolchain_tag} TARGET = > >> +${build_target} > >> + > >> +# > >> +# Build Directory Macro Definition > >> +# > >> +BUILD_DIR = ${platform_build_directory} FV_DIR = > >> +${platform_build_directory}${separator}FV > >> + > >> +# > >> +# Shell Command Macro > >> +# > >> +${BEGIN}${shell_command_code} = ${shell_command} ${END} > >> + > >> +MAKE = ${make_path} > >> +MAKE_FILE = ${makefile_path} > >> + > >> +# > >> +# Default target > >> +# > >> +all: modules fds > >> + > >> +# > >> +# Initialization target: print build information and create > >> +necessary directories # > >> +init: > >> + -@ > >> + ${BEGIN}-@${create_directory_command} > >> + ${END} > >> +# > >> +# library build target > >> +# > >> +libraries: init > >> +${BEGIN} @cd $(BUILD_DIR)${separator}${arch} && "$(MAKE)" > >> +$(MAKE_FLAGS) libraries ${END} @cd $(BUILD_DIR) > >> + > >> +# > >> +# module build target > >> +# > >> +modules: init > >> +${BEGIN} @cd $(BUILD_DIR)${separator}${arch} && "$(MAKE)" > >> +$(MAKE_FLAGS) modules ${END} @cd $(BUILD_DIR) > >> + > >> +# > >> +# Flash Device Image Target > >> +# > >> +fds: init > >> + -@cd $(FV_DIR) > >> +${BEGIN} GenFds -f ${fdf_file} -o $(BUILD_DIR) -t $(TOOLCHAIN) - > b > >> +$(TARGET) -p ${active_platform} -a ${build_architecture_list} > >> +${extra_options}${END}${BEGIN} -r ${fd} ${END}${BEGIN} -i ${fv} > >> +${END}${BEGIN} -C ${cap} ${END}${BEGIN} -D ${macro} ${END} > >> + > >> +# > >> +# run command for emulator platform only # > >> +run: > >> + cd $(BUILD_DIR)${separator}IA32 && ".${separator}SecMain" > >> + cd $(BUILD_DIR) > >> + > >> +# > >> +# Clean intermediate files > >> +# > >> +clean: > >> +${BEGIN} -@${sub_build_command} clean > >> +${END} @cd $(BUILD_DIR) > >> + > >> +# > >> +# Clean all generated files except to makefile # > >> +cleanall: > >> +${BEGIN} ${cleanall_command} > >> +${END} > >> + > >> +# > >> +# Clean all library files > >> +# > >> +cleanlib: > >> +${BEGIN} -@${sub_build_command} cleanlib ${END} @cd > $(BUILD_DIR)\n > >> +''') > >> > >> ## Constructor of TopLevelMakefile > >> # > >> diff --git a/BaseTools/Source/Python/build/build.py > >> b/BaseTools/Source/Python/build/build.py > >> index 85ee998..bd43f2c 100644 > >> --- a/BaseTools/Source/Python/build/build.py > >> +++ b/BaseTools/Source/Python/build/build.py > >> @@ -245,14 +245,7 @@ def LaunchCommand(Command, WorkingDir): > >> # if working directory doesn't exist, Popen() will raise an > exception > >> if not os.path.isdir(WorkingDir): > >> EdkLogger.error("build", FILE_NOT_FOUND, > >> ExtraData=WorkingDir) > >> - > >> - # Command is used as the first Argument in following Popen(). > >> - # It could be a string or sequence. We find that if command is > a string in following Popen(), > >> - # ubuntu may fail with an error message that the command is not > found. > >> - # So here we may need convert command from string to list > instance. > >> - if not isinstance(Command, list): > >> - Command = Command.split() > >> - > >> + > >> Proc = None > >> EndOfProcedure = None > >> try: > >> @@ -873,136 +866,7 @@ class Build(): > >> # @param CreateDepModuleMakeFile Flag used to indicate > creating makefile > >> # for dependent > modules/Libraries > >> # > >> - def _BuildPa(self, Target, AutoGenObject, > CreateDepsCodeFile=True, CreateDepsMakeFile=True, BuildModule=False): > >> - if AutoGenObject == None: > >> - return False > >> - > >> - # skip file generation for cleanxxx targets, run and fds > target > >> - if Target not in ['clean', 'cleanlib', 'cleanall', 'run', > 'fds']: > >> - # for target which must generate AutoGen code and > makefile > >> - if not self.SkipAutoGen or Target == 'genc': > >> - self.Progress.Start("Generating code") > >> - AutoGenObject.CreateCodeFile(CreateDepsCodeFile) > >> - self.Progress.Stop("done!") > >> - if Target == "genc": > >> - return True > >> - > >> - if not self.SkipAutoGen or Target == 'genmake': > >> - self.Progress.Start("Generating makefile") > >> - AutoGenObject.CreateMakeFile(CreateDepsMakeFile) > >> - self.Progress.Stop("done!") > >> - if Target == "genmake": > >> - return True > >> - else: > >> - # always recreate top/platform makefile when clean, > just in case of inconsistency > >> - AutoGenObject.CreateCodeFile(False) > >> - AutoGenObject.CreateMakeFile(False) > >> - > >> - if EdkLogger.GetLevel() == EdkLogger.QUIET: > >> - EdkLogger.quiet("Building ... %s" % > repr(AutoGenObject)) > >> - > >> - BuildCommand = AutoGenObject.BuildCommand > >> - if BuildCommand == None or len(BuildCommand) == 0: > >> - EdkLogger.error("build", OPTION_MISSING, > >> - "No build command found for this > module. " > >> - "Please check your setting of > %s_%s_%s_MAKE_PATH in Conf/tools_def.txt file." % > >> - (AutoGenObject.BuildTarget, > AutoGenObject.ToolChain, AutoGenObject.Arch), > >> - ExtraData=str(AutoGenObject)) > >> - > >> - makefile = > GenMake.BuildFile(AutoGenObject)._FILE_NAME_[GenMake.gMakeType] > >> - > >> - # genfds > >> - if Target == 'fds': > >> - LaunchCommand(AutoGenObject.GenFdsCommand, > AutoGenObject.MakeFileDir) > >> - return True > >> - > >> - # run > >> - if Target == 'run': > >> - RunDir = > os.path.normpath(os.path.join(AutoGenObject.BuildDir, 'IA32')) > >> - Command = '.\SecMain' > >> - os.chdir(RunDir) > >> - LaunchCommand(Command, RunDir) > >> - return True > >> - > >> - # build modules > >> - if BuildModule: > >> - BuildCommand = BuildCommand + [Target] > >> - LaunchCommand(BuildCommand, AutoGenObject.MakeFileDir) > >> - self.CreateAsBuiltInf() > >> - return True > >> - > >> - # build library > >> - if Target == 'libraries': > >> - for Lib in AutoGenObject.LibraryBuildDirectoryList: > >> - NewBuildCommand = BuildCommand + ['-f', > os.path.normpath(os.path.join(Lib, makefile)), 'pbuild'] > >> - LaunchCommand(NewBuildCommand, > AutoGenObject.MakeFileDir) > >> - return True > >> - > >> - # build module > >> - if Target == 'modules': > >> - for Lib in AutoGenObject.LibraryBuildDirectoryList: > >> - NewBuildCommand = BuildCommand + ['-f', > os.path.normpath(os.path.join(Lib, makefile)), 'pbuild'] > >> - LaunchCommand(NewBuildCommand, > AutoGenObject.MakeFileDir) > >> - for Mod in AutoGenObject.ModuleBuildDirectoryList: > >> - NewBuildCommand = BuildCommand + ['-f', > os.path.normpath(os.path.join(Mod, makefile)), 'pbuild'] > >> - LaunchCommand(NewBuildCommand, > AutoGenObject.MakeFileDir) > >> - self.CreateAsBuiltInf() > >> - return True > >> - > >> - # cleanlib > >> - if Target == 'cleanlib': > >> - for Lib in AutoGenObject.LibraryBuildDirectoryList: > >> - LibMakefile = os.path.normpath(os.path.join(Lib, > makefile)) > >> - if os.path.exists(LibMakefile): > >> - NewBuildCommand = BuildCommand + ['-f', > LibMakefile, 'cleanall'] > >> - LaunchCommand(NewBuildCommand, > AutoGenObject.MakeFileDir) > >> - return True > >> - > >> - # clean > >> - if Target == 'clean': > >> - for Mod in AutoGenObject.ModuleBuildDirectoryList: > >> - ModMakefile = os.path.normpath(os.path.join(Mod, > makefile)) > >> - if os.path.exists(ModMakefile): > >> - NewBuildCommand = BuildCommand + ['-f', > ModMakefile, 'cleanall'] > >> - LaunchCommand(NewBuildCommand, > AutoGenObject.MakeFileDir) > >> - for Lib in AutoGenObject.LibraryBuildDirectoryList: > >> - LibMakefile = os.path.normpath(os.path.join(Lib, > makefile)) > >> - if os.path.exists(LibMakefile): > >> - NewBuildCommand = BuildCommand + ['-f', > LibMakefile, 'cleanall'] > >> - LaunchCommand(NewBuildCommand, > AutoGenObject.MakeFileDir) > >> - return True > >> - > >> - # cleanall > >> - if Target == 'cleanall': > >> - try: > >> - #os.rmdir(AutoGenObject.BuildDir) > >> - RemoveDirectory(AutoGenObject.BuildDir, True) > >> - # > >> - # First should close DB. > >> - # > >> - self.Db.Close() > >> - > RemoveDirectory(os.path.dirname(GlobalData.gDatabasePath), True) > >> - except WindowsError, X: > >> - EdkLogger.error("build", FILE_DELETE_FAILURE, > ExtraData=str(X)) > >> - return True > >> - > >> - ## Build a module or platform > >> - # > >> - # Create autogen code and makefile for a module or platform, > and the launch > >> - # "make" command to build it > >> - # > >> - # @param Target The target of build > command > >> - # @param Platform The platform file > >> - # @param Module The module file > >> - # @param BuildTarget The name of build > target, one of "DEBUG", "RELEASE" > >> - # @param ToolChain The name of toolchain > to build > >> - # @param Arch The arch of the > module/platform > >> - # @param CreateDepModuleCodeFile Flag used to indicate > creating code > >> - # for dependent > modules/Libraries > >> - # @param CreateDepModuleMakeFile Flag used to indicate > creating makefile > >> - # for dependent > modules/Libraries > >> - # > >> - def _Build(self, Target, AutoGenObject, > CreateDepsCodeFile=True, CreateDepsMakeFile=True, BuildModule=False): > >> + def _Build(self, Target, AutoGenObject, > CreateDepsCodeFile=True, CreateDepsMakeFile=True): > >> if AutoGenObject == None: > >> return False > >> > >> @@ -1019,7 +883,7 @@ class Build(): > >> if not self.SkipAutoGen or Target == 'genmake': > >> self.Progress.Start("Generating makefile") > >> AutoGenObject.CreateMakeFile(CreateDepsMakeFile) > >> - #AutoGenObject.CreateAsBuiltInf() > >> + AutoGenObject.CreateAsBuiltInf() > >> self.Progress.Stop("done!") > >> if Target == "genmake": > >> return True > >> @@ -1039,34 +903,8 @@ class Build(): > >> (AutoGenObject.BuildTarget, > AutoGenObject.ToolChain, AutoGenObject.Arch), > >> ExtraData=str(AutoGenObject)) > >> > >> - # genfds > >> - if Target == 'fds': > >> - LaunchCommand(AutoGenObject.GenFdsCommand, > AutoGenObject.MakeFileDir) > >> - return True > >> - > >> - # run > >> - if Target == 'run': > >> - RunDir = > os.path.normpath(os.path.join(AutoGenObject.BuildDir, 'IA32')) > >> - Command = '.\SecMain' > >> - os.chdir(RunDir) > >> - LaunchCommand(Command, RunDir) > >> - return True > >> - > >> - # build modules > >> BuildCommand = BuildCommand + [Target] > >> - if BuildModule: > >> - LaunchCommand(BuildCommand, AutoGenObject.MakeFileDir) > >> - self.CreateAsBuiltInf() > >> - return True > >> - > >> - # build library > >> - if Target == 'libraries': > >> - pass > >> - > >> - # not build modules > >> - > >> - > >> - # cleanall > >> + LaunchCommand(BuildCommand, AutoGenObject.MakeFileDir) > >> if Target == 'cleanall': > >> try: > >> #os.rmdir(AutoGenObject.BuildDir) @@ -1406,10 > +1244,7 @@ class Build(): > >> self.LoadFixAddress = Wa.Platform.LoadFixAddress > >> self.BuildReport.AddPlatformReport(Wa) > >> self.Progress.Stop("done!") > >> - for Arch in Wa.ArchList: > >> - GlobalData.gGlobalDefines['ARCH'] = Arch > >> - Pa = PlatformAutoGen(Wa, self.PlatformFile, > BuildTarget, ToolChain, Arch) > >> - self._BuildPa(self.Target, Pa) > >> + self._Build(self.Target, Wa) > >> > >> # Create MAP file when Load Fix Address is enabled. > >> if self.Target in ["", "all", "fds"]: > >> @@ -1492,8 +1327,7 @@ class Build(): > >> Ma = ModuleAutoGen(Wa, self.ModuleFile, > BuildTarget, ToolChain, Arch, self.PlatformFile) > >> if Ma == None: continue > >> MaList.append(Ma) > >> - if not Ma.IsBinaryModule: > >> - self._Build(self.Target, Ma, > BuildModule=True) > >> + self._Build(self.Target, Ma) > >> > >> self.BuildReport.AddPlatformReport(Wa, MaList) > >> if MaList == []: > >> @@ -1674,8 +1508,7 @@ class Build(): > >> # > >> # Generate FD image if there's a FDF file > found > >> # > >> - LaunchCommand(Wa.GenFdsCommand, > os.getcwd()) > >> - > >> + LaunchCommand(Wa.BuildCommand + ["fds"], > >> + Wa.MakeFileDir) > >> # > >> # Create MAP file for all platform FVs > after GenFds. > >> # > >> -- > >> 2.1.0 > > > > --------------------------------------------------------------------- > - > > -------- > > Slashdot TV. > > Video for Nerds. Stuff that matters. > > http://tv.slashdot.org/ > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/edk2-devel > > > > --------------------------------------------------------------------- > - > > -------- > > Slashdot TV. > > Video for Nerds. Stuff that matters. > > http://tv.slashdot.org/ > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ Slashdot TV. Video for Nerds. Stuff that matters. http://tv.slashdot.org/ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel