aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Components/Task.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python/Components/Task.py')
-rw-r--r--lib/python/Components/Task.py22
1 files changed, 15 insertions, 7 deletions
diff --git a/lib/python/Components/Task.py b/lib/python/Components/Task.py
index df94f8a6..3a755405 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:
@@ -370,12 +370,20 @@ class DiskspacePrecondition(Condition):
class ToolExistsPrecondition(Condition):
def check(self, task):
import os
+
if task.cmd[0]=='/':
- realpath = task.cmd
+ 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:
- realpath = task.cwd + '/' + task.cmd
- self.realpath = realpath
- return os.access(realpath, os.X_OK)
+ 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):
return _("A required tool (%s) was not found.") % (self.realpath)