Bug#603391: [Pkg-xen-devel] Bug#603391: Workaround PyGrub issue
got it, added underscore, my mistake. Patch works. -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#603391: [Pkg-xen-devel] Bug#603391: Workaround PyGrub issue
I double-checked, I edited the file correctly. I don't know python much, but it seems the lower stack traces are deeper than the upper ones, which means somehow your calling "self.disk =" inside a set_disk method seems to have re-entered itself as if set_disk is a handler for self.disk =... -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#603391: [Pkg-xen-devel] Bug#603391: Workaround PyGrub issue
Sorry didn't work. Aso it will only handle this special case, not the general case of /dev/something. # python GrubConf.py grub2 /home/tehadmin/snail-grub.cfg WARNING:root:Unknown directive load_video WARNING:root:Unknown directive terminal_output WARNING:root:Unknown image directive load_video Traceback (most recent call last): File "GrubConf.py", line 467, in g = Grub2ConfigFile(sys.argv[2]) File "GrubConf.py", line 359, in __init__ _GrubConfigFile.__init__(self, fn) File "GrubConf.py", line 179, in __init__ self.parse() File "GrubConf.py", line 418, in parse self.add_image(Grub2Image(title, img)) File "GrubConf.py", line 325, in __init__ _GrubImage.__init__(self, title, lines) File "GrubConf.py", line 94, in __init__ self.reset(lines) File "GrubConf.py", line 110, in reset self._parse(lines) File "GrubConf.py", line 105, in _parse map(self.set_from_line, lines) File "GrubConf.py", line 335, in set_from_line setattr(self, self.commands[com], arg.strip()) File "GrubConf.py", line 113, in set_root self._root = GrubDiskPart(val) File "GrubConf.py", line 55, in __init__ (self.disk, self.part) = str.split(",", 2) File "GrubConf.py", line 73, in set_disk self.disk = ord(disk)-ord('a') File "GrubConf.py", line 69, in set_disk val = val.replace("(", "").replace(")", "") AttributeError: 'int' object has no attribute 'replace' > diff --git a/tools/pygrub/src/GrubConf.py b/tools/pygrub/src/GrubConf.py > index 6324c62..cb853c9 100644 > --- a/tools/pygrub/src/GrubConf.py > +++ b/tools/pygrub/src/GrubConf.py > @@ -67,7 +67,11 @@ class GrubDiskPart(object): > return self._disk > def set_disk(self, val): > val = val.replace("(", "").replace(")", "") > -self._disk = int(val[2:]) > +if val.startswith("/dev/xvd"): > +disk = val[len("/dev/xvd")] > +self._disk = ord(disk)-ord('a') > +else: > +self._disk = int(val[2:]) > disk = property(get_disk, set_disk) > > def get_part(self): > > -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#603391: Workaround PyGrub issue
Confirmed this issue. To reproduce: Install a fresh Wheezy AMD64 guest under Xen 4.1 (hypervirtualized, boot from the debian-7.1.0-amd64-CD-1.iso). Use "entire disk" automatic layout for partitioning, this creates /dev/xvda1 for / and /dev/xvda5 for swap. It will create /boot/grub/grub.cfg with many references to (/dev/xvda,msdos1) which works fine when the machine is booted hypervirtualized. PyGrub can not handle the /dev/ syntax for devices, even though Grub can. My details: Package: xen-utils-4.1 Version: 4.1.4-3+deb7u1 Architecture: amd64 Confirmed workaround: inside the guest, create /boot/grub/device.map (NOT devices.map) containing: (hd0) /dev/xvda run update-grub shutdown the guest and reboot it using PyGrub. It will now work. Backtrace from manual run of the buggy GrubConf.py: # python /usr/lib/xen-4.1/lib/python/grub/GrubConf.py grub2 grub.cfg WARNING:root:Unknown directive load_video WARNING:root:Unknown directive terminal_output WARNING:root:Unknown image directive load_video Traceback (most recent call last): File "/usr/lib/xen-4.1/lib/python/grub/GrubConf.py", line 462, in g = Grub2ConfigFile(sys.argv[2]) File "/usr/lib/xen-4.1/lib/python/grub/GrubConf.py", line 354, in __init__ _GrubConfigFile.__init__(self, fn) File "/usr/lib/xen-4.1/lib/python/grub/GrubConf.py", line 174, in __init__ self.parse() File "/usr/lib/xen-4.1/lib/python/grub/GrubConf.py", line 413, in parse self.add_image(Grub2Image(title, img)) File "/usr/lib/xen-4.1/lib/python/grub/GrubConf.py", line 320, in __init__ _GrubImage.__init__(self, title, lines) File "/usr/lib/xen-4.1/lib/python/grub/GrubConf.py", line 89, in __init__ self.reset(lines) File "/usr/lib/xen-4.1/lib/python/grub/GrubConf.py", line 105, in reset self._parse(lines) File "/usr/lib/xen-4.1/lib/python/grub/GrubConf.py", line 100, in _parse map(self.set_from_line, lines) File "/usr/lib/xen-4.1/lib/python/grub/GrubConf.py", line 330, in set_from_line setattr(self, self.commands[com], arg.strip()) File "/usr/lib/xen-4.1/lib/python/grub/GrubConf.py", line 108, in set_root self._root = GrubDiskPart(val) File "/usr/lib/xen-4.1/lib/python/grub/GrubConf.py", line 55, in __init__ (self.disk, self.part) = str.split(",", 2) File "/usr/lib/xen-4.1/lib/python/grub/GrubConf.py", line 70, in set_disk self._disk = int(val[2:]) ValueError: invalid literal for int() with base 10: 'ev/xvda' Contents of grub.cfg triggering the error: # # DO NOT EDIT THIS FILE # # It is automatically generated by grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then load_env fi set default="0" if [ "${prev_saved_entry}" ]; then set saved_entry="${prev_saved_entry}" save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true fi function savedefault { if [ -z "${boot_once}" ]; then saved_entry="${chosen}" save_env saved_entry fi } function load_video { insmod vbe insmod vga insmod video_bochs insmod video_cirrus } insmod part_msdos insmod ext2 set root='(/dev/xvda,msdos1)' search --no-floppy --fs-uuid --set=root f395d5a0-4612-4872-806c-33cd37c152f0 if loadfont /usr/share/grub/unicode.pf2 ; then set gfxmode=640x480 load_video insmod gfxterm insmod part_msdos insmod ext2 set root='(/dev/xvda,msdos1)' search --no-floppy --fs-uuid --set=root f395d5a0-4612-4872-806c-33cd37c152f0 set locale_dir=($root)/boot/grub/locale set lang=en_US insmod gettext fi terminal_output gfxterm set timeout=5 ### END /etc/grub.d/00_header ### ### BEGIN /etc/grub.d/05_debian_theme ### set menu_color_normal=cyan/blue set menu_color_highlight=white/blue ### END /etc/grub.d/05_debian_theme ### ### BEGIN /etc/grub.d/10_linux ### menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64' --class debian --class gnu-linux --class gnu --class os { load_video insmod gzio insmod part_msdos insmod ext2 set root='(/dev/xvda,msdos1)' search --no-floppy --fs-uuid --set=root f395d5a0-4612-4872-806c-33cd37c152f0 echo'Loading Linux 3.2.0-4-amd64 ...' linux /boot/vmlinuz-3.2.0-4-amd64 root=UUID=f395d5a0-4612-4872-806c-33cd37c152f0 ro echo'Loading initial ramdisk ...' initrd /boot/initrd.img-3.2.0-4-amd64 } menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os { load_video insmod gzio insmod part_msdos insmod ext2 set root='(/dev/xvda,msdos1)' search --no-floppy --fs-uuid --set=root f395d5a0-4612-4872-806c-33cd37c152f0 echo'Loading Linux 3.2.0-4-amd64 ...' linux /boot/vmlinuz-3.2.0-4-amd64 root=UUID=f395d5a0-4612-4872-806c-33cd37c152f0 ro single echo'Loading initial ramdisk ...' initrd /boot/initrd.img-3.2.0-4-amd64 } ##
Bug#443143: postrm fails if update-inetd not installed
On Wed, Sep 26, 2007 at 03:13:10PM +0100, Dave Holland wrote: > Hi, > > On Tue, Sep 18, 2007 at 09:21:05PM -0700, Tril wrote: > > I was unable to remove biff because postrm returned 1 (because > > /usr/sbin/update-inetd did not exist). I fixed this by adding > > "|| true" at the end of the 4th line. > > I don't quite understand what failed; that line already tests for the > presence of /usr/sbin/update-inetd before trying to invoke it: > > > [ -e /usr/sbin/update-inetd ] && update-inetd --remove "biff" > > Please can you send me a sequence of commands which will reproduce your > problem? I'll amend that line to change "-e" to "-x" to match other > packages' usage. Okay. apt-get remove update-inetd apt-get remove biff The test command "[" returned 1, causing postinst to return 1. This caused the package removal to fail- the package was still installed, in some state like 'partly installed.' Clearly, the intention is that if update-inetd does not exist, that update-inetd is not run, but that postinst should still return 0 for success. Thanks -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Bug#443143: postrm fails if update-inetd not installed
Package: biff Version: 1:0.17pre2412-4 I was unable to remove biff because postrm returned 1 (because /usr/sbin/update-inetd did not exist). I fixed this by adding "|| true" at the end of the 4th line. cat /var/lib/dpkg/info/biff.postrm #!/bin/sh -e case "$1" in remove) [ -e /usr/sbin/update-inetd ] && update-inetd --remove "biff" ;; esac -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]