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-4.0-testing] pyGrub: Use proper bootloader class wh

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-4.0-testing] pyGrub: Use proper bootloader class when entering command manually
From: "Xen patchbot-4.0-testing" <patchbot-4.0-testing@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 04 Jun 2010 03:45:47 -0700
Delivery-date: Fri, 04 Jun 2010 03:49:01 -0700
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 1275644069 -3600
# Node ID a8c171dec35344e6736cd57b0c0cd2b55620268d
# Parent  6e77bf0852ecbea205ec96b175461a42a34c47a0
pyGrub: Use proper bootloader class when entering command manually

Use the proper bootloader class when entering the boot commands
manually (i.e. using the 'c' option). Before this patch the bootloader
was always treated to be Grub but when user is using Grub2/ExtLinux or
Lilo it's rather confusing. After applying this patch the proper
bootloader image class is being used, e.g. Grub2Image for Grub2
etc. when you define the boot commands manually using the 'c' command
in pyGrub.

Also, fix for using isconfig has been applied since if there is not fs
set in the run_grub() method the read_config() would fail since it's
trying to access undefined self.cf which is now being set to parser()
from cfg_list.

Signed-off-by: Michal Novotny <minovotn@xxxxxxxxxx>
Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
xen-unstable changeset:   21461:fa41b06a52a3
xen-unstable date:        Wed May 26 10:52:15 2010 +0100
---
 tools/pygrub/src/ExtLinuxConf.py |    6 ++++++
 tools/pygrub/src/GrubConf.py     |    8 +++++++-
 tools/pygrub/src/LiloConf.py     |    6 ++++++
 tools/pygrub/src/pygrub          |   12 +++++++-----
 4 files changed, 26 insertions(+), 6 deletions(-)

diff -r 6e77bf0852ec -r a8c171dec353 tools/pygrub/src/ExtLinuxConf.py
--- a/tools/pygrub/src/ExtLinuxConf.py  Tue Jun 01 07:13:12 2010 +0100
+++ b/tools/pygrub/src/ExtLinuxConf.py  Fri Jun 04 10:34:29 2010 +0100
@@ -118,6 +118,12 @@ class ExtLinuxConfigFile(object):
 
         if fn is not None:
             self.parse()
+
+    def new_image(self, title, lines):
+        # ExtLinuxImage constructor doesn't have title but since path
+        # is being used by get_{kernel|initrd} functions we pass
+        # empty string rather than None (see lines above)
+        return ExtLinuxImage(lines, "")
 
     def parse(self, buf = None):
         if buf is None:
diff -r 6e77bf0852ec -r a8c171dec353 tools/pygrub/src/GrubConf.py
--- a/tools/pygrub/src/GrubConf.py      Tue Jun 01 07:13:12 2010 +0100
+++ b/tools/pygrub/src/GrubConf.py      Fri Jun 04 10:34:29 2010 +0100
@@ -252,6 +252,9 @@ class GrubConfigFile(_GrubConfigFile):
     def __init__(self, fn = None):
         _GrubConfigFile.__init__(self,fn)
         
+    def new_image(self, title, lines):
+        return GrubImage(title, lines)
+
     def parse(self, buf = None):
         if buf is None:
             if self.filename is None:
@@ -345,7 +348,10 @@ class Grub2ConfigFile(_GrubConfigFile):
 class Grub2ConfigFile(_GrubConfigFile):
     def __init__(self, fn = None):
         _GrubConfigFile.__init__(self, fn)
-        
+       
+    def new_image(self, title, lines):
+        return Grub2Image(title, lines)
+ 
     def parse(self, buf = None):
         if buf is None:
             if self.filename is None:
diff -r 6e77bf0852ec -r a8c171dec353 tools/pygrub/src/LiloConf.py
--- a/tools/pygrub/src/LiloConf.py      Tue Jun 01 07:13:12 2010 +0100
+++ b/tools/pygrub/src/LiloConf.py      Fri Jun 04 10:34:29 2010 +0100
@@ -147,6 +147,12 @@ class LiloConfigFile(object):
     def add_image(self, image):
         self.images.append(image)
 
+    def new_image(self, title, lines):
+        # LiloImage constructor doesn't have title but since path
+        # is being used by get_{kernel|initrd} functions we pass
+        # empty string rather than None (see lines above)
+        return LiloImage(lines, "")
+
     def _get_default(self):
         for i in range(len(self.images)):
             if self.images[i].title == self._default:
diff -r 6e77bf0852ec -r a8c171dec353 tools/pygrub/src/pygrub
--- a/tools/pygrub/src/pygrub   Tue Jun 01 07:13:12 2010 +0100
+++ b/tools/pygrub/src/pygrub   Fri Jun 04 10:34:29 2010 +0100
@@ -356,7 +356,7 @@ class Grub:
                     continue
 
                 # if we got boot, then we want to boot the entered image 
-                img = grub.GrubConf.GrubImage(lines)
+                img = self.cf.new_image("entered", lines)
                 self.cf.add_image(img)
                 self.selected_image = len(self.cf.images) - 1
                 self.isdone = True
@@ -392,9 +392,11 @@ class Grub:
 
         if not fs:
             # set the config file and parse it
-            self.cf.filename = fn
-            self.cf.parse()
-            return
+            for f,parser in cfg_list:
+                self.cf = parser()
+                self.cf.filename = fn
+                self.cf.parse()
+                return
 
         for f,parser in cfg_list:
             if fs.file_exists(f):
@@ -689,7 +691,7 @@ if __name__ == "__main__":
     if isconfig:
         chosencfg = run_grub(file, entry, fs, incfg["args"])
         print "  kernel: %s" % chosencfg["kernel"]
-        if img.initrd:
+        if chosencfg["ramdisk"]:
             print "  initrd: %s" % chosencfg["ramdisk"]
         print "  args: %s" % chosencfg["args"]
         sys.exit(0)

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-4.0-testing] pyGrub: Use proper bootloader class when entering command manually, Xen patchbot-4.0-testing <=