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

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



On Sat, 2015-05-23 at 16:31 +0800, Robert Hu wrote:
> 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).
Carefully read your code and I think they can handle submenu (even
submenu in a submenu) correctly. Thanks for correcting my previous
implementation.
Just my 2 cents below inline.
> > 
> > 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]++;
may consider 'pop/push' operations on @offsets array? I worry about if
'$#offsets-1' can always shrink array size correctly. pop/push anyway is
some official way to do this.
> >                      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 };
Here MenuEntryPath element for $submenu is actually debug purpose only,
I think, may be can remove it. correct me if I'm wrong.
> > +                $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®.