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 |
|