[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-4.0-testing] pyGrub: Use proper bootloader class when entering command manually
# 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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |