for Tool in self.ToolChainList:\r
if TAB_TOD_DEFINES_FAMILY not in ToolDefinition or Tool not in ToolDefinition[TAB_TOD_DEFINES_FAMILY] \\r
or not ToolDefinition[TAB_TOD_DEFINES_FAMILY][Tool]:\r
- EdkLogger.warn("No tool chain family found in configuration for %s. Default to MSFT." % Tool)\r
+ EdkLogger.warn("build", "No tool chain family found in configuration for %s. Default to MSFT." % Tool)\r
ToolChainFamily.append("MSFT")\r
else:\r
ToolChainFamily.append(ToolDefinition[TAB_TOD_DEFINES_FAMILY][Tool])\r
if self.Prebuild:\r
EdkLogger.info("\n- Prebuild Start -\n")\r
self.LaunchPrebuildFlag = True\r
+ #\r
+ # The purpose of .PrebuildEnv file is capture environment variable settings set by the prebuild script\r
+ # and preserve them for the rest of the main build step, because the child process environment will\r
+ # evaporate as soon as it exits, we cannot get it in build step.\r
+ #\r
PrebuildEnvFile = os.path.join(GlobalData.gConfDirectory,'.cache','.PrebuildEnv')\r
if os.path.isfile(PrebuildEnvFile):\r
os.remove(PrebuildEnvFile)\r
os.remove(self.PlatformBuildPath)\r
if sys.platform == "win32":\r
args = ' && '.join((self.Prebuild, 'set > ' + PrebuildEnvFile))\r
- Process = Popen(args, stdout=PIPE, stderr=PIPE)\r
+ Process = Popen(args, stdout=PIPE, stderr=PIPE, shell=True)\r
else:\r
args = ' && '.join((self.Prebuild, 'env > ' + PrebuildEnvFile))\r
Process = Popen(args, stdout=PIPE, stderr=PIPE, shell=True)\r
if self.Postbuild:\r
EdkLogger.info("\n- Postbuild Start -\n")\r
if sys.platform == "win32":\r
- Process = Popen(self.Postbuild, stdout=PIPE, stderr=PIPE)\r
+ Process = Popen(self.Postbuild, stdout=PIPE, stderr=PIPE, shell=True)\r
else:\r
Process = Popen(self.Postbuild, stdout=PIPE, stderr=PIPE, shell=True)\r
# launch two threads to read the STDOUT and STDERR\r