import sys\r
from AutoGen.DataPipe import MemoryDataPipe\r
import logging\r
+import time\r
\r
def clearQ(q):\r
try:\r
break\r
if badnews == "Done":\r
fin_num += 1\r
+ elif badnews == "QueueEmpty":\r
+ EdkLogger.debug(EdkLogger.DEBUG_9, "Worker %s: %s" % (os.getpid(), badnews))\r
+ self.TerminateWorkers()\r
else:\r
+ EdkLogger.debug(EdkLogger.DEBUG_9, "Worker %s: %s" % (os.getpid(), badnews))\r
self.Status = False\r
self.TerminateWorkers()\r
if fin_num == len(self.autogen_workers):\r
PlatformMetaFile = self.GetPlatformMetaFile(self.data_pipe.Get("P_Info").get("ActivePlatform"),\r
self.data_pipe.Get("P_Info").get("WorkspaceDir"))\r
while True:\r
- if self.module_queue.empty():\r
- break\r
if self.error_event.is_set():\r
break\r
module_count += 1\r
- module_file,module_root,module_path,module_basename,module_originalpath,module_arch,IsLib = self.module_queue.get_nowait()\r
+ try:\r
+ module_file,module_root,module_path,module_basename,module_originalpath,module_arch,IsLib = self.module_queue.get_nowait()\r
+ except Empty:\r
+ EdkLogger.debug(EdkLogger.DEBUG_9, "Worker %s: %s" % (os.getpid(), "Fake Empty."))\r
+ time.sleep(0.01)\r
+ continue\r
+ if module_file is None:\r
+ EdkLogger.debug(EdkLogger.DEBUG_9, "Worker %s: %s" % (os.getpid(), "Worker get the last item in the queue."))\r
+ self.feedback_q.put("QueueEmpty")\r
+ time.sleep(0.01)\r
+ continue\r
+\r
modulefullpath = os.path.join(module_root,module_file)\r
taskname = " : ".join((modulefullpath,module_arch))\r
module_metafile = PathClass(module_file,module_root)\r
else:\r
self.cache_q.put((Ma.MetaFile.Path, Ma.Arch, "MakeCache", False))\r
\r
- except Empty:\r
- pass\r
- except:\r
+ except Exception as e:\r
+ EdkLogger.debug(EdkLogger.DEBUG_9, "Worker %s: %s" % (os.getpid(), str(e)))\r
self.feedback_q.put(taskname)\r
finally:\r
+ EdkLogger.debug(EdkLogger.DEBUG_9, "Worker %s: %s" % (os.getpid(), "Done"))\r
self.feedback_q.put("Done")\r
self.cache_q.put("CacheDone")\r
\r
mqueue = mp.Queue()\r
for m in AutoGenObject.GetAllModuleInfo:\r
mqueue.put(m)\r
-\r
+ mqueue.put((None,None,None,None,None,None,None))\r
AutoGenObject.DataPipe.DataContainer = {"CommandTarget": self.Target}\r
AutoGenObject.DataPipe.DataContainer = {"Workspace_timestamp": AutoGenObject.Workspace._SrcTimeStamp}\r
AutoGenObject.CreateLibModuelDirs()\r
data_pipe_file = os.path.join(Pa.BuildDir, "GlobalVar_%s_%s.bin" % (str(Pa.Guid),Pa.Arch))\r
Pa.DataPipe.dump(data_pipe_file)\r
\r
+ mqueue.put((None,None,None,None,None,None,None))\r
autogen_rt, errorcode = self.StartAutoGen(mqueue, Pa.DataPipe, self.SkipAutoGen, PcdMaList, cqueue)\r
\r
if not autogen_rt:\r