from AutoGen.PlatformAutoGen import PlatformAutoGen\r
from AutoGen.ModuleAutoGen import ModuleAutoGen\r
from AutoGen.WorkspaceAutoGen import WorkspaceAutoGen\r
-from AutoGen.AutoGenWorker import AutoGenWorkerInProcess,AutoGenManager\r
+from AutoGen.AutoGenWorker import AutoGenWorkerInProcess,AutoGenManager,\\r
+ LogAgent\r
from AutoGen import GenMake\r
from Common import Misc as Utils\r
\r
# @param WorkspaceDir The directory of workspace\r
# @param BuildOptions Build options passed from command line\r
#\r
- def __init__(self, Target, WorkspaceDir, BuildOptions):\r
+ def __init__(self, Target, WorkspaceDir, BuildOptions,log_q):\r
self.WorkspaceDir = WorkspaceDir\r
self.Target = Target\r
self.PlatformFile = BuildOptions.PlatformFile\r
EdkLogger.info("")\r
os.chdir(self.WorkspaceDir)\r
self.share_data = Manager().dict()\r
+ self.log_q = log_q\r
def StartAutoGen(self,mqueue, DataPipe,SkipAutoGen,PcdMaList,share_data):\r
try:\r
if SkipAutoGen:\r
feedback_q = mp.Queue()\r
file_lock = mp.Lock()\r
error_event = mp.Event()\r
- auto_workers = [AutoGenWorkerInProcess(mqueue,DataPipe.dump_file,feedback_q,file_lock,share_data,error_event) for _ in range(self.ThreadNumber)]\r
+ auto_workers = [AutoGenWorkerInProcess(mqueue,DataPipe.dump_file,feedback_q,file_lock,share_data,self.log_q,error_event) for _ in range(self.ThreadNumber)]\r
self.AutoGenMgr = AutoGenManager(auto_workers,feedback_q,error_event)\r
self.AutoGenMgr.start()\r
for w in auto_workers:\r
def Main():\r
StartTime = time.time()\r
\r
+ #\r
+ # Create a log Queue\r
+ #\r
+ LogQ = mp.Queue()\r
# Initialize log system\r
- EdkLogger.Initialize()\r
+ EdkLogger.LogClientInitialize(LogQ)\r
GlobalData.gCommand = sys.argv[1:]\r
#\r
# Parse the options and args\r
GlobalData.gCaseInsensitive = Option.CaseInsensitive\r
\r
# Set log level\r
+ LogLevel = EdkLogger.INFO\r
if Option.verbose is not None:\r
EdkLogger.SetLevel(EdkLogger.VERBOSE)\r
+ LogLevel = EdkLogger.VERBOSE\r
elif Option.quiet is not None:\r
EdkLogger.SetLevel(EdkLogger.QUIET)\r
+ LogLevel = EdkLogger.QUIET\r
elif Option.debug is not None:\r
EdkLogger.SetLevel(Option.debug + 1)\r
+ LogLevel = Option.debug + 1\r
else:\r
EdkLogger.SetLevel(EdkLogger.INFO)\r
\r
- if Option.LogFile is not None:\r
- EdkLogger.SetLogFile(Option.LogFile)\r
-\r
if Option.WarningAsError == True:\r
EdkLogger.SetWarningAsError()\r
+ Log_Agent = LogAgent(LogQ,LogLevel,Option.LogFile)\r
+ Log_Agent.start()\r
\r
if platform.platform().find("Windows") >= 0:\r
GlobalData.gIsWindows = True\r
if Option.Flag is not None and Option.Flag not in ['-c', '-s']:\r
EdkLogger.error("build", OPTION_VALUE_INVALID, "UNI flag must be one of -c or -s")\r
\r
- MyBuild = Build(Target, Workspace, Option)\r
+ MyBuild = Build(Target, Workspace, Option,LogQ)\r
GlobalData.gCommandLineDefines['ARCH'] = ' '.join(MyBuild.ArchList)\r
if not (MyBuild.LaunchPrebuildFlag and os.path.exists(MyBuild.PlatformBuildPath)):\r
MyBuild.Launch()\r
EdkLogger.quiet("\n- %s -" % Conclusion)\r
EdkLogger.quiet(time.strftime("Build end time: %H:%M:%S, %b.%d %Y", time.localtime()))\r
EdkLogger.quiet("Build total time: %s\n" % BuildDurationStr)\r
+ Log_Agent.kill()\r
+ Log_Agent.join()\r
return ReturnCode\r
\r
if __name__ == '__main__':\r