X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fpython%2FComponents%2FTask.py;h=867692330ca39f41a4f9660198df93b77e223cf2;hb=7bb93199aef8e8c35f8edce76c91352ecf628a60;hp=86bd233ed261a372d642e869d965cb9b7d02e191;hpb=bb4afcfbede3c7e04bc6c9213818cc5d9a60887c;p=vuplus_dvbapp diff --git a/lib/python/Components/Task.py b/lib/python/Components/Task.py index 86bd233..8676923 100644 --- a/lib/python/Components/Task.py +++ b/lib/python/Components/Task.py @@ -16,6 +16,7 @@ class Job(object): self.end = 100 self.__progress = 0 self.weightScale = 1 + self.afterEvent = None self.state_changed = CList() @@ -63,11 +64,10 @@ class Job(object): def runNext(self): if self.current_task == len(self.tasks): if len(self.resident_tasks) == 0: - cb = self.callback - self.callback = None self.status = self.FINISHED self.state_changed() - cb(self, None, []) + self.callback(self, None, []) + self.callback = None else: print "still waiting for %d resident task(s) %s to finish" % (len(self.resident_tasks), str(self.resident_tasks)) else: @@ -108,7 +108,6 @@ class Job(object): self.tasks[i].abort() def cancel(self): - # some Jobs might have a better idea of how to cancel a job self.abort() class Task(object): @@ -305,6 +304,7 @@ class JobManager: list.append(self.active_job) list += self.active_jobs return list + # some examples: #class PartitionExistsPostcondition: # def __init__(self, device): @@ -371,12 +371,18 @@ class ToolExistsPrecondition(Condition): def check(self, task): import os - self.realpath = task.cmd - path = os.environ.get('PATH', '').split(os.pathsep) - absolutes = filter(lambda file: os.access(file, os.X_OK), map(lambda directory, file = task.cmd: os.path.join(directory, file), path)) - if len(absolutes) > 0: - self.realpath = task.cmd[0] - return True + if task.cmd[0]=='/': + self.realpath = task.cmd + print "[Task.py][ToolExistsPrecondition] WARNING: usage of absolute paths for tasks should be avoided!" + return os.access(self.realpath, os.X_OK) + else: + self.realpath = task.cmd + path = os.environ.get('PATH', '').split(os.pathsep) + path.append(task.cwd + '/') + absolutes = filter(lambda file: os.access(file, os.X_OK), map(lambda directory, file = task.cmd: os.path.join(directory, file), path)) + if len(absolutes) > 0: + self.realpath = task.cmd[0] + return True return False def getErrorMessage(self, task):