[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [osstest test] 56922: regressions - FAIL



On Fri, 2015-05-22 at 15:21 +0100, Ian Campbell wrote:
> On Fri, 2015-05-22 at 14:42 +0100, Ian Campbell wrote:
> > From my particular grub.cfg. For real usage setupboot_grub2 will
> > obviously need to become cleverer to count things correctly.
> 
> I've not tested extensively but the following incremental patch seems to
> do the right thing, at least by inspection of the resulting grub.cfg.
> 
> Needs more testing (e.g. I haven't tried non-XSM yet) and review from
> Ian I think, since there may be a more idiomatically Perl way to
> manipulate the @offsets array (in particular shrinking it).
> 
> Ian.
> 
> diff --git a/Osstest/Debian.pm b/Osstest/Debian.pm
> index 282175b..b5148fd 100644
> --- a/Osstest/Debian.pm
> +++ b/Osstest/Debian.pm
> @@ -393,8 +393,6 @@ sub setupboot_grub1 ($$$$) {
>  # Note on running OSSTest on Squeeze with old Xen kernel: check out
>  # Debian bug #633127 "/etc/grub/20_linux does not recognise some old
>  # Xen kernels"
> -# Currently setupboot_grub2 relies on Grub menu not having submenu.
> -# Check Debian bug #690538.
>  sub setupboot_grub2 ($$$$) {
>      my ($ho,$want_kernver,$want_xsm,$xenhopt,$xenkopt) = @_;
>      my $bl= { };
> @@ -405,7 +403,7 @@ sub setupboot_grub2 ($$$$) {
>      my $parsemenu= sub {
>          my $f= bl_getmenu_open($ho, $rmenu, 
> "$stash/$ho->{Name}--grub.cfg.1");
>      
> -        my $count= 0;
> +        my @offsets = (0);
>          my $entry;
>          my $submenu;
>          while (<$f>) {
> @@ -417,6 +415,8 @@ sub setupboot_grub2 ($$$$) {
>                          "$submenu->{StartLine}. ".
>                          "Our want kern is $want_kernver");
>                      $submenu=undef;
> +                    $#offsets = $#offsets-1;
> +                    $offsets[$#offsets]++;
>                      next;
>                  }
>                  my (@missing) =
> @@ -446,11 +446,12 @@ sub setupboot_grub2 ($$$$) {
>              }
>              if (m/^menuentry\s+[\'\"](.*)[\'\"].*\{\s*$/) {
>                  die $entry->{StartLine} if $entry;
> -                $entry= { Title => $1, StartLine => $., Number => $count };
> -                $count++;
> +                $entry= { Title => $1, StartLine => $., MenuEntryPath => 
> join ">", @offsets };
> +                $offsets[$#offsets]++;
>              }
>              if (m/^submenu\s+[\'\"](.*)[\'\"].*\{\s*$/) {
> -                $submenu={ StartLine =>$.};
> +                $submenu={ StartLine =>$., MenuEntryPath => join ">", 
> @offsets };
> +                $offsets[$#offsets+1] = 0;
I see your points now.
Seems you even considers nested submenu in the future.:)
Just 1 question (I'm not a Perl expert): after "$offsets[$#offsets+1] =
0;", $#offsets increases automatically/implicitly, right?
>              }
>              if (m/^\s*multiboot\s*(?:\/boot)?\/(xen\S+)/) {
>                  die unless $entry;
> @@ -511,7 +512,7 @@ sub setupboot_grub2 ($$$$) {
>              }
>              print ::EO <<END or die $!;
>  
> -GRUB_DEFAULT=$entry->{Number}
> +GRUB_DEFAULT="$entry->{MenuEntryPath}"
>  END
>  
>              print ::EO <<END or die $! if defined $xenhopt;
> 
> 



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.