refs bug #429
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Mon, 8 Mar 2010 15:16:28 +0000 (16:16 +0100)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Mon, 8 Mar 2010 15:16:28 +0000 (16:16 +0100)
use PATH variable to determine, if an executable file exists instead of just parsing the command string for a leading /

lib/python/Components/Task.py

index df94f8a..86bd233 100644 (file)
@@ -370,12 +370,14 @@ class DiskspacePrecondition(Condition):
 class ToolExistsPrecondition(Condition):
        def check(self, task):
                import os
 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)
 
        def getErrorMessage(self, task):
                return _("A required tool (%s) was not found.") % (self.realpath)