Current boottool assumes a hardcoded path for grub,
/sbin/grub. Distros such as OpenSUSE install it on
/usr/sbin/grub, so this will cause a grub setup to
flat out fail on those distros.

So let's leverage find_executable, that is already
present, to take care of actually finding the
appropriate grub path.

Signed-off-by: Lucas Meneghel Rodrigues <l...@redhat.com>
---
 client/tools/boottool |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/client/tools/boottool b/client/tools/boottool
index 794377b..53f7d94 100755
--- a/client/tools/boottool
+++ b/client/tools/boottool
@@ -1401,13 +1401,16 @@ class Grubby(object):
         grub_instructions = ['savedefault --default=%s --once' % entry_index,
                              'quit']
         grub_instructions_text = '\n'.join(grub_instructions)
-        grub_binary = '/sbin/grub'
+        grub_binary = find_executable('grub')
+        if grub_binary is None:
+            self.log.error("Could not find the 'grub' binary, aborting")
+            return -1
 
         p = subprocess.Popen([grub_binary, '--batch'],
                              stdin=subprocess.PIPE,
                              stdout=subprocess.PIPE,
                              stderr=subprocess.PIPE)
-        out, err = p.communicate(grub_instructions_text)
+        _, err = p.communicate(grub_instructions_text)
 
         if err is not None:
             harmless = ['Probing devices to guess BIOS drives. '
@@ -1418,7 +1421,7 @@ class Grubby(object):
             if err_harmful:
                 self.log.error("Error while running grub to set boot once: %s",
                                "\n".join(err_harmful))
-                return False
+                return -1
 
         self.log.debug('No error detected while running grub to set boot once')
         return 0
-- 
1.7.10.2

_______________________________________________
Autotest mailing list
Autotest@test.kernel.org
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to