X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/6df771b5f7e744c650b73f8548ab41152c0185eb..4c1d3d2f5cf39f72bf85041a6ba6665350ea742e:/lib/python/Components/Task.py diff --git a/lib/python/Components/Task.py b/lib/python/Components/Task.py index 04e5c938..86bd233e 100644 --- a/lib/python/Components/Task.py +++ b/lib/python/Components/Task.py @@ -131,6 +131,7 @@ class Task(object): self.task_progress_changed = None self.output_line = "" job.addTask(self) + self.container = None def setCommandline(self, cmd, args): self.cmd = cmd @@ -211,7 +212,8 @@ class Task(object): self.finish() def abort(self): - self.container.kill() + if self.container: + self.container.kill() self.finish(aborted = True) def finish(self, aborted = False): @@ -368,12 +370,14 @@ class DiskspacePrecondition(Condition): class ToolExistsPrecondition(Condition): def check(self, task): import os - if task.cmd[0]=='/': - realpath = task.cmd - 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) + 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)