WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] pygrub: improve grub 2 support

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] pygrub: improve grub 2 support
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 26 Jan 2010 08:15:16 -0800
Delivery-date: Tue, 26 Jan 2010 08:15:46 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1264521280 0
# Node ID 2636e561970898517def148c19e04581b12dc860
# Parent  66587cc5f1e1217c54a5483ce68b9ae6dbeca44a
pygrub: improve grub 2 support

* The "default" value can be a quoted string (containing an integer)
  so strip the quotes before interpreting.
* The "set" command takes a variable with an arbitrary name so instead
  of whitelisting the ones to ignore simply silently accept any set
  command with an unknown variable.
* Ignore the echo command.
* Handle the function { ... } syntax. Previously pygrub would error
  out with a syntax error on the closing "}" because it thought it was
  the closing bracket of a menuentry.

This makes pygrub2 work with the configuration files generated by
Debian Squeeze today.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
---
 tools/pygrub/src/GrubConf.py |   22 +++++++++++++++++++---
 1 files changed, 19 insertions(+), 3 deletions(-)

diff -r 66587cc5f1e1 -r 2636e5619708 tools/pygrub/src/GrubConf.py
--- a/tools/pygrub/src/GrubConf.py      Tue Jan 26 15:54:09 2010 +0000
+++ b/tools/pygrub/src/GrubConf.py      Tue Jan 26 15:54:40 2010 +0000
@@ -219,6 +219,7 @@ class _GrubConfigFile(object):
     def _get_default(self):
         return self._default
     def _set_default(self, val):
+        val = val.strip("\"")
         if val == "saved":
             self._default = 0
         else:
@@ -315,6 +316,8 @@ class Grub2Image(_GrubImage):
                 setattr(self, self.commands[com], arg.strip())
             else:
                 logging.info("Ignored image directive %s" %(com,))
+        elif com.startswith('set:'):
+            pass
         else:
             logging.warning("Unknown image directive %s" %(com,))
 
@@ -328,6 +331,7 @@ class Grub2Image(_GrubImage):
     commands = {'set:root': 'root',
                 'linux': 'kernel',
                 'initrd': 'initrd',
+                'echo': None,
                 'insmod': None,
                 'search': None}
     
@@ -346,6 +350,7 @@ class Grub2ConfigFile(_GrubConfigFile):
         else:
             lines = buf.split("\n")
 
+        in_function = False
         img = None
         title = ""
         for l in lines:
@@ -356,6 +361,16 @@ class Grub2ConfigFile(_GrubConfigFile):
             # skip comments
             if l.startswith('#'):
                 continue
+
+            # skip function declarations
+            if l.startswith('function'):
+                in_function = True
+                continue
+            if in_function:
+                if l.startswith('}'):
+                    in_function = False
+                continue
+
             # new image
             title_match = re.match('^menuentry "(.*)" {', l)
             if title_match:
@@ -388,6 +403,8 @@ class Grub2ConfigFile(_GrubConfigFile):
                     setattr(self, self.commands[com], arg.strip())
                 else:
                     logging.info("Ignored directive %s" %(com,))
+            elif com.startswith('set:'):
+                pass
             else:
                 logging.warning("Unknown directive %s" %(com,))
             
@@ -400,11 +417,10 @@ class Grub2ConfigFile(_GrubConfigFile):
     commands = {'set:default': 'default',
                 'set:root': 'root',
                 'set:timeout': 'timeout',
-                'set:gfxmode': None,
-                'set:menu_color_normal': None,
-                'set:menu_color_highlight': None,
                 'terminal': None,
                 'insmod': None,
+                'load_env': None,
+                'save_env': None,
                 'search': None,
                 'if': None,
                 'fi': None,

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] pygrub: improve grub 2 support, Xen patchbot-unstable <=