diff -r 10ad9b50b4ca tools/pygrub/src/pygrub --- a/tools/pygrub/src/pygrub Tue May 25 11:28:58 2010 +0100 +++ b/tools/pygrub/src/pygrub Tue May 25 16:31:06 2010 +0200 @@ -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.imgcl(lines) self.cf.add_image(img) self.selected_image = len(self.cf.images) - 1 self.isdone = True @@ -392,15 +392,28 @@ 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): print >>sys.stderr, "Using %s to parse %s" % (parser,f) self.cf = parser() self.cf.filename = f + + # Get the bootloader image file constructor to imgcl + if type(self.cf) == type(grub.LiloConf.LiloConfigFile): + self.imgcl = grub.LiloConf.LiloImage + elif type(self.cf) == type(grub.GrubConf.Grub2ConfigFile): + self.imgcl = grub.GrubConf.Grub2Image + elif type(self.cf) == type(grub.ExtLinuxConf.ExtLinuxConfigFile): + self.imgcl = grub.ExtLinuxConf.ExtLinuxImage + else: + self.imgcl = grub.GrubConf.GrubImage + break if self.__dict__.get('cf', None) is None: raise RuntimeError, "couldn't find bootloader config file in the image provided."