support/package-builder/WorkerThread.py
d024e640
 from PackageBuilder import PackageBuilder
 import threading
b37b4c63
 import Scheduler
 import ThreadPool
d024e640
  
 class WorkerThread(threading.Thread):
     
90d8acae
     def __init__(self,event,name,mapPackageToCycle,listAvailableCyclicPackages,logger,listBuildOptionPackages,pkgBuildOptionFile):
d024e640
         threading.Thread.__init__(self)
         self.statusEvent=event
         self.name=name
         self.mapPackageToCycle=mapPackageToCycle
         self.listAvailableCyclicPackages=listAvailableCyclicPackages
         self.logger=logger
90d8acae
         self.listBuildOptionPackages=listBuildOptionPackages
         self.pkgBuildOptionFile=pkgBuildOptionFile
a5e4be9f
         
d024e640
     def run(self):
         buildThreadFailed=False
b37b4c63
         ThreadPool.ThreadPool.makeWorkerThreadActive(self.name)
d024e640
         self.logger.info("Thread "+self.name +" is starting now")
         while True:
             outputMap={}
b37b4c63
             pkg = Scheduler.Scheduler.getNextPackageToBuild()
d024e640
             if pkg is None:
                 break
             self.logger.info("Thread "+self.name+" is building package:"+ pkg)
90d8acae
             pkgBuilder = PackageBuilder(self.mapPackageToCycle,self.listAvailableCyclicPackages,self.listBuildOptionPackages,self.pkgBuildOptionFile,"build-"+pkg)
d024e640
             t = threading.Thread(target=pkgBuilder.buildPackageThreadAPI,args=(pkg,outputMap,pkg))
             t.start()
             t.join()
             if outputMap.has_key(pkg):
                 if outputMap[pkg] == False:
                     buildThreadFailed = True
b37b4c63
                     Scheduler.Scheduler.notifyPackageBuildFailed(pkg)
d024e640
                     self.logger.info("Thread "+self.name +" stopped building the "+pkg +" package")
                     break
             else:
                 buildThreadFailed = True
b37b4c63
                 Scheduler.Scheduler.notifyPackageBuildFailed(pkg)
d024e640
                 self.logger.info("Thread "+self.name +" stopped building the "+pkg +" package")
                 break
             
b37b4c63
             Scheduler.Scheduler.notifyPackageBuildCompleted(pkg)
d024e640
         
         if buildThreadFailed:
             self.statusEvent.set()
         
b37b4c63
         ThreadPool.ThreadPool.makeWorkerThreadInActive(self.name)
d024e640
         self.logger.info("Thread "+self.name +" is going to rest")
         
 
 
                     
                 
90d8acae