7418d2bf |
from BuildContainer import BuildContainer |
d024e640 |
from PackageBuilder import PackageBuilder
import threading |
b37b4c63 |
import Scheduler
import ThreadPool |
7418d2bf |
|
d024e640 |
class WorkerThread(threading.Thread): |
7418d2bf |
def __init__(self,event,name,mapPackageToCycle,listAvailableCyclicPackages,logger,listBuildOptionPackages,pkgBuildOptionFile,pkgBuildType): |
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 |
7418d2bf |
self.pkgBuildType=pkgBuildType
|
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) |
7418d2bf |
if self.pkgBuildType == "chroot": |
7f9d2e12 |
pkgBuilder = PackageBuilder(self.mapPackageToCycle,self.listAvailableCyclicPackages,self.listBuildOptionPackages,self.pkgBuildOptionFile) |
7418d2bf |
elif self.pkgBuildType == "container":
pkgBuilder = BuildContainer(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() |
e4eff00f |
if not outputMap.has_key(pkg) or outputMap[pkg] == False: |
d024e640 |
buildThreadFailed = True |
b37b4c63 |
Scheduler.Scheduler.notifyPackageBuildFailed(pkg) |
e4eff00f |
self.logger.info("Thread "+self.name +" stopped building package:" + pkg) |
d024e640 |
break |
e4eff00f |
self.logger.info("Thread "+self.name+" finished building package:" + pkg) |
b37b4c63 |
Scheduler.Scheduler.notifyPackageBuildCompleted(pkg) |
7418d2bf |
|
d024e640 |
if buildThreadFailed:
self.statusEvent.set() |
7418d2bf |
|
b37b4c63 |
ThreadPool.ThreadPool.makeWorkerThreadInActive(self.name) |
d024e640 |
self.logger.info("Thread "+self.name +" is going to rest") |