xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [OSSTEST PATCH 00/13] Test rump kernels
@ 2014-05-16 18:01 Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 01/13] TestSupport: Provide target_editfile Ian Jackson
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Campbell

This series builds rumpuser-xen and checks that the upstream demo
program appears to function correctly.  This will hopefully, when
deployed, allow us to spot breakages in the upstream rumpkernel
project's support for Xen.

 01/13 TestSupport: Provide target_editfile
 02/13 git_massage_url: Make idempotent
 03/13 BuildSupport, ts-*-build: Remove some
 04/13 BuildSupport: Provide some support for git
 05/13 TestSupport: Break out target_jobdir
 06/13 TestSupport: Break out
 07/13 target_jobdir: Create the directory
 08/13 guest_umount_lv: Tolerate lack of volume group
 09/13 prepareguest: Tolerate $mb=undef
 10/13 mfi-common: Honour REVISION_LIBVIRT=disable
 11/13 rump kernels: Provide a build job
 12/13 rump kernels: Provide two test jobs
 13/13 rump kernels: Create a "branch" for rump

I'm about to set off a test of this with cr-daily-branch from my own
account on the osstest VM.

Thanks,
Ian.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 01/13] TestSupport: Provide target_editfile
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 02/13] git_massage_url: Make idempotent Ian Jackson
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

... as well as target_editfile_root.  No callers yet.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 Osstest/TestSupport.pm |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index 6558fc8..c95807a 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -54,7 +54,7 @@ BEGIN {
                       target_putfile target_putfile_root
                       target_putfilecontents_stash
 		      target_putfilecontents_root_stash
-                      target_put_guest_image
+                      target_put_guest_image target_editfile
                       target_editfile_root target_file_exists
                       target_run_apt
                       target_install_packages target_install_packages_norec
@@ -479,7 +479,8 @@ sub target_file_exists ($$) {
     die "$rfile $out ?";
 }
 
-sub target_editfile_root ($$$;$$) {
+sub teditfileex {
+    my $user= shift @_;
     my $code= pop @_;
     my ($ho,$rfile,$lleaf,$rdest) = @_;
 
@@ -512,9 +513,14 @@ sub target_editfile_root ($$$;$$) {
     '::EI'->error and die $!;
     close '::EI' or die $!;
     close '::EO' or die $!;
-    target_putfile_root($ho, 60, "$lfile.new", $rdest);
+    tputfileex($user, $ho, 60, "$lfile.new", $rdest);
 }
 
+sub target_editfile_root ($$$;$$) { teditfileex('root',@_); }
+sub target_editfile      ($$$;$$) { teditfileex('osstest',@_); }
+    # my $code= pop @_;
+    # my ($ho,$rfile,$lleaf,$rdest) = @_;
+
 sub target_cmd_build ($$$$) {
     my ($ho,$timeout,$builddir,$script) = @_;
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 02/13] git_massage_url: Make idempotent
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 01/13] TestSupport: Provide target_editfile Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 03/13] BuildSupport, ts-*-build: Remove some clone-and-hack Ian Jackson
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

If called more than once, it should not produce a url starting with
multiple copies of the git cache proxy prefix.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 Osstest/TestSupport.pm |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index c95807a..1492d9f 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -1028,7 +1028,8 @@ sub file_simple_write_contents ($$) {
 sub git_massage_url ($) {
     my ($url) = @_;
 
-    if ($url =~ m,^(git|https?)://, && $c{GitCacheProxy}) {
+    if ($url =~ m,^(git|https?)://, && $c{GitCacheProxy} &&
+	substr($url,0,length($c{GitCacheProxy})) ne $c{GitCacheProxy}) {
 	$url = $c{GitCacheProxy}.$url;
     }
     return $url;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 03/13] BuildSupport, ts-*-build: Remove some clone-and-hack
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 01/13] TestSupport: Provide target_editfile Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 02/13] git_massage_url: Make idempotent Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 04/13] BuildSupport: Provide some support for git submodules Ian Jackson
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

Introduce Osstest::BuildSupport containing selectbuildhost,
builddirsprops and prepbuilddirs.  The corresponding replicated code
from the various ts-*-build scripts is abolished.

Also break out xendist, which we are going to want to reuse.

No functional change.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 Osstest/BuildSupport.pm |   93 +++++++++++++++++++++++++++++++++++++++++++++++
 ts-kernel-build         |   15 ++------
 ts-libvirt-build        |   22 +++--------
 ts-xen-build            |   15 ++------
 4 files changed, 106 insertions(+), 39 deletions(-)
 create mode 100644 Osstest/BuildSupport.pm

diff --git a/Osstest/BuildSupport.pm b/Osstest/BuildSupport.pm
new file mode 100644
index 0000000..1b15557
--- /dev/null
+++ b/Osstest/BuildSupport.pm
@@ -0,0 +1,93 @@
+# This is part of "osstest", an automated testing framework for Xen.
+# Copyright (C) 2009-2013 Citrix Inc.
+# 
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+package Osstest::BuildSupport;
+
+use strict;
+use warnings;
+
+use POSIX;
+use IO::File;
+
+use Osstest::TestSupport;
+
+BEGIN {
+    use Exporter ();
+    our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+    $VERSION     = 1.00;
+    @ISA         = qw(Exporter);
+    @EXPORT      = qw(
+
+                      selectbuildhost
+                      $whhost $ho
+
+                      builddirsprops
+                      $builddir $makeflags
+
+                      prepbuilddirs
+
+                      xendist
+                      $xendist
+
+                      );
+    %EXPORT_TAGS = ( );
+
+    @EXPORT_OK   = qw();
+}
+
+our ($whhost,$ho);
+our ($builddir,$makeflags);
+our ($xendist);
+
+sub selectbuildhost {
+    # pass @ARGV
+    ($whhost) = @_;
+    $whhost ||= 'host';
+    $ho= selecthost($whhost);
+}
+
+sub builddirsprops {
+    my (%xbuildopts) = @_;
+
+    $xbuildopts{DefMakeFlags} ||= '-j4';
+
+    my $leaf= "build.$flight.$job";
+    my $homedir = get_host_property($ho, 'homedir', '/home/osstest');
+    $builddir= "$homedir/$leaf";
+
+    $makeflags= get_host_property($ho, 'build make flags',
+				  $xbuildopts{DefMakeFlags});
+}
+
+sub prepbuilddirs {
+    my (@xbuilddirs) = @_;
+    my $cmd = "rm -rf $builddir && mkdir $builddir";
+    $cmd .= " && mkdir $builddir/$_" foreach @xbuilddirs;
+    target_cmd($ho,$cmd,600);
+}
+
+sub xendist () {
+    $xendist= "$builddir/xendist";
+    target_cmd($ho,"rm -rf $xendist && mkdir $xendist",60);
+
+    my $path = get_stashed("path_dist", $r{"buildjob"});
+    my $distcopy= "$builddir/dist.tar.gz";
+    target_putfile($ho, 300, $path, $distcopy);
+    target_cmd($ho, "tar -C $xendist -hzxf $distcopy", 300);
+}
+
+1;
diff --git a/ts-kernel-build b/ts-kernel-build
index 9d890a7..984a935 100755
--- a/ts-kernel-build
+++ b/ts-kernel-build
@@ -19,18 +19,11 @@ use strict qw(vars);
 use DBI;
 use Osstest;
 use Osstest::TestSupport;
+use Osstest::BuildSupport;
 
 tsreadconfig();
-
-our ($whhost) = @ARGV;
-$whhost ||= 'host';
-our $ho= selecthost($whhost);
-
-my $leaf= "build.$flight.$job";
-my $homedir = get_host_property($ho, 'homedir', '/home/osstest');
-my $builddir= "$homedir/$leaf";
-
-my $makeflags= get_host_property($ho, 'build make flags', '-j4');
+selectbuildhost(@ARGV);
+builddirsprops();
 
 my $archparms = {
     'armhf' => { DefConfig => 'multi_v7_defconfig', KernelImage => 'arch/arm/boot/zImage' },
@@ -41,7 +34,7 @@ my $archparms = {
 sub enable_xen_config ();
 
 sub checkout () {
-    target_cmd($ho, "rm -rf $builddir && mkdir $builddir", 600);
+    prepbuilddirs();
 
     build_clone($ho, 'linux', $builddir, 'linux');
 
diff --git a/ts-libvirt-build b/ts-libvirt-build
index 9c731ce..ffef714 100755
--- a/ts-libvirt-build
+++ b/ts-libvirt-build
@@ -19,29 +19,17 @@ use strict qw(vars);
 use DBI;
 use Osstest;
 use Osstest::TestSupport;
+use Osstest::BuildSupport;
 
 tsreadconfig();
-
-our ($whhost) = @ARGV;
-$whhost ||= 'host';
-our $ho= selecthost($whhost);
-
-my $leaf= "build.$flight.$job";
-my $homedir = get_host_property($ho, 'homedir', '/home/osstest');
-my $builddir= "$homedir/$leaf";
-my $xendist= "$builddir/xendist";
+selectbuildhost(@ARGV);
+builddirsprops();
 
 sub libvirtd_init ();
 
-my $makeflags= get_host_property($ho, 'build make flags', '-j4');
-
 sub checkout () {
-    target_cmd($ho, "rm -rf $builddir && mkdir $builddir && mkdir $xendist", 600);
-
-    my $path = get_stashed("path_dist", $r{"buildjob"});
-    my $distcopy= "$builddir/dist.tar.gz";
-    target_putfile($ho, 300, $path, $distcopy);
-    target_cmd($ho, "tar -C $xendist -hzxf $distcopy", 300);
+    prepbuilddirs();
+    xendist();
 
     build_clone($ho, 'libvirt', $builddir, 'libvirt');
     build_clone($ho, 'gnulib_libvirt', $builddir, 'gnulib-libvirt');
diff --git a/ts-xen-build b/ts-xen-build
index 7ac46ea..d251e16 100755
--- a/ts-xen-build
+++ b/ts-xen-build
@@ -21,21 +21,14 @@ use Osstest;
 use File::Path;
 use POSIX;
 use Osstest::TestSupport;
+use Osstest::BuildSupport;
 
 tsreadconfig();
-
-our ($whhost) = @ARGV;
-$whhost ||= 'host';
-our $ho= selecthost($whhost);
-
-my $leaf= "build.$flight.$job";
-my $homedir = get_host_property($ho, 'homedir', '/home/osstest');
-my $builddir= "$homedir/$leaf";
-
-my $makeflags= get_host_property($ho, 'build make flags', '-j4');
+selectbuildhost(@ARGV);
+builddirsprops();
     
 sub checkout () {
-    target_cmd($ho, "rm -rf $builddir && mkdir $builddir", 60);
+    prepbuilddirs();
 
     build_clone($ho, 'xen', $builddir, 'xen-unstable');
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 04/13] BuildSupport: Provide some support for git submodules
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
                   ` (2 preceding siblings ...)
  2014-05-16 18:01 ` [OSSTEST PATCH 03/13] BuildSupport, ts-*-build: Remove some clone-and-hack Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 05/13] TestSupport: Break out target_jobdir Ian Jackson
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

* Provide a new "submodulefixup" function which, given a cloned
  tree which has submodules:
    - massages the .gitmodules file according to the tree_*
      runvars and massage_url
    - arranges for the submodules to be fetched and checked out
    - stores the revisions of the submodules, as necessary
    - honours any revision_ tags for the submodules
    - allows the caller to give the submodules names which are
      suitable for use in runvars etc. (and might differ from
      the names or paths used in the supermodule)

* In a submodule, .git is actually a file containing a reference
  to a subdirectory of the main git tree.  Cope with that.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 Osstest/BuildSupport.pm |   60 +++++++++++++++++++++++++++++++++++++++++++++++
 Osstest/TestSupport.pm  |    2 +-
 2 files changed, 61 insertions(+), 1 deletion(-)

diff --git a/Osstest/BuildSupport.pm b/Osstest/BuildSupport.pm
index 1b15557..9a43f00 100644
--- a/Osstest/BuildSupport.pm
+++ b/Osstest/BuildSupport.pm
@@ -43,6 +43,8 @@ BEGIN {
                       xendist
                       $xendist
 
+                      submodulefixup
+
                       );
     %EXPORT_TAGS = ( );
 
@@ -90,4 +92,62 @@ sub xendist () {
     target_cmd($ho, "tar -C $xendist -hzxf $distcopy", 300);
 }
 
+#----- submodules -----
+
+sub submodulefixup ($$$$) {
+    my ($ho, $subdir, $basewhich, $submodmap) = @_;
+
+    my @submodules;
+    target_editfile($ho, "$builddir/$subdir/.gitmodules",
+		    "$subdir-gitmodules", sub {
+        my $submod;
+	my $log1 = sub { logm("submodule $submod->{OurName} @_"); };
+        while (<::EI>) {
+	    if (m/^\[submodule \"(.*)\"\]$/) {
+		$submod = { TheirName => $1 },
+		push @submodules, $submod;
+		my $mapped = $submodmap->{$1};
+		die "unknown submodule $1" unless defined $mapped;
+		$submod->{OurName} = $mapped;
+		$log1->("($submod->{TheirName}):");
+	    } elsif (m/^\s*path\s*=\s*(\S+)/) {
+		die unless $submod;
+		$submod->{Path} = $1;
+		$log1->("  subpath=$submod->{Path}");
+	    } elsif (m/^(\s*url\s*\=\s*)(\S+)/) {
+		die unless $submod;
+		my $l = $1;
+		my $u = $submod->{OrgUrl} = $2;
+		my $urv = "tree_${basewhich}_$submod->{OurName}";
+		if (length $r{$urv}) {
+		    $log1->("  overriding url=$u with runvar $urv=$r{$urv}");
+		    $u = $r{$urv};
+		} else {
+		    $log1->("  recording url=$u");
+		    store_runvar($urv, $u);
+		}
+		my $nu = $submod->{Url} = git_massage_url($u);
+		$_ = "${l}${nu}\n";
+	    }
+	    print ::EO or die $!;
+	}
+    });
+
+    target_cmd_build($ho,  60,"$builddir/$subdir","git submodule init");
+    target_cmd_build($ho,3600,"$builddir/$subdir","git submodule update");
+
+    foreach my $submod (@submodules) {
+	my $wantrev = $r{"revision_${basewhich}_$submod->{OurName}"};
+	if (length $wantrev) {
+	    target_cmd_build($ho,200,"$builddir/$subdir/$submod->{Path}",
+			     "git reset --hard $wantrev");
+	} else {
+	    store_revision($ho, "${basewhich}_$submod->{OurName}",
+			   "$builddir/$subdir/$submod->{Path}");
+	}
+    }
+
+    return \@submodules;
+}
+
 1;
diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index 1492d9f..49bb175 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -1087,7 +1087,7 @@ sub dir_identify_vcs ($$) {
         set -e
         if ! test -e $dir; then echo none; exit 0; fi
         cd $dir
-        (test -d .git && echo git) ||
+        (test -e .git && echo git) ||
         (test -d .hg && echo hg) ||
         (echo >&2 'unable to determine vcs'; fail)
 END
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 05/13] TestSupport: Break out target_jobdir
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
                   ` (3 preceding siblings ...)
  2014-05-16 18:01 ` [OSSTEST PATCH 04/13] BuildSupport: Provide some support for git submodules Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 06/13] TestSupport: Break out target_extract_jobdistpath_subdir Ian Jackson
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

No functional change.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 Osstest/BuildSupport.pm |    6 +-----
 Osstest/TestSupport.pm  |    8 ++++++++
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/Osstest/BuildSupport.pm b/Osstest/BuildSupport.pm
index 9a43f00..d5fb677 100644
--- a/Osstest/BuildSupport.pm
+++ b/Osstest/BuildSupport.pm
@@ -66,11 +66,7 @@ sub builddirsprops {
     my (%xbuildopts) = @_;
 
     $xbuildopts{DefMakeFlags} ||= '-j4';
-
-    my $leaf= "build.$flight.$job";
-    my $homedir = get_host_property($ho, 'homedir', '/home/osstest');
-    $builddir= "$homedir/$leaf";
-
+    $builddir= target_jobdir($ho);
     $makeflags= get_host_property($ho, 'build make flags',
 				  $xbuildopts{DefMakeFlags});
 }
diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index 49bb175..96454d3 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -58,6 +58,7 @@ BEGIN {
                       target_editfile_root target_file_exists
                       target_run_apt
                       target_install_packages target_install_packages_norec
+                      target_jobdir
                       target_extract_jobdistpath target_guest_lv_name
 
                       poll_loop tcpconnect await_tcp
@@ -1706,6 +1707,13 @@ END
     return $console;
 }
 
+sub target_jobdir ($) {
+    my ($ho) = @_;
+    my $leaf= "build.$flight.$job";
+    my $homedir = get_host_property($ho, 'homedir', '/home/osstest');
+    return "$homedir/$leaf";
+}
+
 sub target_extract_jobdistpath ($$$$$) {
     my ($ho, $part, $path, $job, $distpath) = @_;
     $distpath->{$part}= get_stashed($path, $job);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 06/13] TestSupport: Break out target_extract_jobdistpath_subdir
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
                   ` (4 preceding siblings ...)
  2014-05-16 18:01 ` [OSSTEST PATCH 05/13] TestSupport: Break out target_jobdir Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 07/13] target_jobdir: Create the directory Ian Jackson
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

This is the meat of what was Osstest::BuildSupport::xendist, which now
becomes a simple convenience wrapper.

No functional change.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 Osstest/BuildSupport.pm |    9 ++-------
 Osstest/TestSupport.pm  |   20 +++++++++++++++++++-
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/Osstest/BuildSupport.pm b/Osstest/BuildSupport.pm
index d5fb677..bd79b4b 100644
--- a/Osstest/BuildSupport.pm
+++ b/Osstest/BuildSupport.pm
@@ -79,13 +79,8 @@ sub prepbuilddirs {
 }
 
 sub xendist () {
-    $xendist= "$builddir/xendist";
-    target_cmd($ho,"rm -rf $xendist && mkdir $xendist",60);
-
-    my $path = get_stashed("path_dist", $r{"buildjob"});
-    my $distcopy= "$builddir/dist.tar.gz";
-    target_putfile($ho, 300, $path, $distcopy);
-    target_cmd($ho, "tar -C $xendist -hzxf $distcopy", 300);
+    $xendist = target_extract_jobdistpath_subdir
+	($ho, 'xendist', '', $r{"buildjob"});
 }
 
 #----- submodules -----
diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index 96454d3..d72a02c 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -58,7 +58,7 @@ BEGIN {
                       target_editfile_root target_file_exists
                       target_run_apt
                       target_install_packages target_install_packages_norec
-                      target_jobdir
+                      target_jobdir target_extract_jobdistpath_subdir
                       target_extract_jobdistpath target_guest_lv_name
 
                       poll_loop tcpconnect await_tcp
@@ -1714,6 +1714,24 @@ sub target_jobdir ($) {
     return "$homedir/$leaf";
 }
 
+sub target_extract_jobdistpath_subdir ($$$$) {
+    my ($ho, $subdir, $distpart, $buildjob) = @_;
+    # Extracts dist part $distpart from job $buildjob into an
+    # job-specific directory with leafname $subdir on $ho, and returns
+    # the directory's pathname.  Does not need root.
+
+    my $jobdir = target_jobdir($ho);
+    my $distdir = "$jobdir/$subdir";
+    target_cmd($ho,"rm -rf $distdir && mkdir $distdir",60);
+
+    my $path = get_stashed("path_${distpart}dist", $buildjob);
+    my $distcopy= "$jobdir/${subdir}.tar.gz";
+    target_putfile($ho, 300, $path, $distcopy);
+    target_cmd($ho, "tar -C $distdir -hzxf $distcopy", 300);
+
+    return $distdir;
+}
+
 sub target_extract_jobdistpath ($$$$$) {
     my ($ho, $part, $path, $job, $distpath) = @_;
     $distpath->{$part}= get_stashed($path, $job);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 07/13] target_jobdir: Create the directory
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
                   ` (5 preceding siblings ...)
  2014-05-16 18:01 ` [OSSTEST PATCH 06/13] TestSupport: Break out target_extract_jobdistpath_subdir Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 08/13] guest_umount_lv: Tolerate lack of volume group Ian Jackson
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

Callers of target_jobdir can now rely on the directory existing after
it returns.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 Osstest/TestSupport.pm |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index d72a02c..6dd0247 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -1709,9 +1709,15 @@ END
 
 sub target_jobdir ($) {
     my ($ho) = @_;
-    my $leaf= "build.$flight.$job";
-    my $homedir = get_host_property($ho, 'homedir', '/home/osstest');
-    return "$homedir/$leaf";
+    my $jobdir = $ho->{JobDir};
+    if (!$jobdir) {
+	my $leaf= "build.$flight.$job";
+	my $homedir = get_host_property($ho, 'homedir', '/home/osstest');
+	$jobdir = "$homedir/$leaf";
+	target_cmd($ho, "mkdir -p $jobdir", 60);
+	$ho->{JobDir} = $jobdir;
+    }
+    return $jobdir;
 }
 
 sub target_extract_jobdistpath_subdir ($$$$) {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 08/13] guest_umount_lv: Tolerate lack of volume group
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
                   ` (6 preceding siblings ...)
  2014-05-16 18:01 ` [OSSTEST PATCH 07/13] target_jobdir: Create the directory Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 09/13] prepareguest: Tolerate $mb=undef Ian Jackson
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

Check if the guest has a volume group, and if not do nothing.

We are going to introduce a kind of guest with no significant storage.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 Osstest/TestSupport.pm |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index 6dd0247..386008f 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -1634,7 +1634,9 @@ sub target_umount_lv ($$$) {
 
 sub guest_umount_lv ($$) {
     my ($ho,$gho) = @_;
-    target_umount_lv($ho, $gho->{Vg}, $gho->{Lv});
+    if (defined $gho->{Vg}) {
+	target_umount_lv($ho, $gho->{Vg}, $gho->{Lv});
+    }
 }
 
 sub target_tcp_check ($$) {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 09/13] prepareguest: Tolerate $mb=undef
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
                   ` (7 preceding siblings ...)
  2014-05-16 18:01 ` [OSSTEST PATCH 08/13] guest_umount_lv: Tolerate lack of volume group Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 10/13] mfi-common: Honour REVISION_LIBVIRT=disable Ian Jackson
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

Allow callers to pass undef for $mb, to indicate that there is no need
for prepareguest to do anything about storage.

No functional change for any of the existing callers.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 Osstest/TestSupport.pm |   13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index 386008f..a576b87 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -1383,16 +1383,21 @@ sub prepareguest ($$$$$$) {
     }
 
     store_runvar("${gn}_hostname", $hostname);
-    store_runvar("${gn}_disk_lv", $r{"${gn}_hostname"}.'-disk');
     store_runvar("${gn}_tcpcheckport", $tcpcheckport);
     store_runvar("${gn}_boot_timeout", $boot_timeout);
 
+    if (defined $mb) {
+	store_runvar("${gn}_disk_lv", $r{"${gn}_hostname"}.'-disk');
+    }
+
     my $gho= selectguest($gn, $ho);
     store_runvar("${gn}_domname", $gho->{Name});
 
-    store_runvar("${gn}_vg", '');
-    if (!length $r{"${gn}_vg"}) {
-        store_runvar("${gn}_vg", target_choose_vg($ho, $mb));
+    if (defined $mb) {
+	store_runvar("${gn}_vg", '');
+	if (!length $r{"${gn}_vg"}) {
+	    store_runvar("${gn}_vg", target_choose_vg($ho, $mb));
+	}
     }
 
     guest_find_lv($gho);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 10/13] mfi-common: Honour REVISION_LIBVIRT=disable
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
                   ` (8 preceding siblings ...)
  2014-05-16 18:01 ` [OSSTEST PATCH 09/13] prepareguest: Tolerate $mb=undef Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 11/13] rump kernels: Provide a build job Ian Jackson
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

This makes it possible for (for example) cr-daily-branch to disable
the libvirt build, when it is not needed.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 mfi-common |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/mfi-common b/mfi-common
index 235575e..ae42637 100644
--- a/mfi-common
+++ b/mfi-common
@@ -162,6 +162,8 @@ create_build_jobs () {
                 tree_linuxfirmware=$TREE_LINUXFIRMWARE                       \
                 revision_linuxfirmware=$REVISION_LINUXFIRMWARE
 
+    if [ "x$REVISION_LIBVIRT" != xdisable ]; then
+
     ./cs-job-create $flight build-$arch-libvirt build-libvirt                \
                 arch=$arch                                                   \
         tree_xen=$TREE_XEN                                                   \
@@ -174,6 +176,8 @@ create_build_jobs () {
                 tree_gnulib_libvirt=$TREE_GNULIB_LIBVIRT revision_gnulib_libvirt=$REVISION_GNULIB_LIBVIRT\
                 ${TREEVCS_GNULIB_LIBVIRT:+treevcs_gnulib_libvirt=}${TREEVCS_GNULIB_LIBVIRT}
 
+    fi
+
     case "$arch" in
     armhf) continue;; # don't do any other kernel builds
     esac
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 11/13] rump kernels: Provide a build job
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
                   ` (9 preceding siblings ...)
  2014-05-16 18:01 ` [OSSTEST PATCH 10/13] mfi-common: Honour REVISION_LIBVIRT=disable Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 12/13] rump kernels: Provide two test jobs Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 13/13] rump kernels: Create a "branch" for rump kernel tests Ian Jackson
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

Provide:
  - test script ts-rumpuserxen-build
  - recipe build-rumpuserxen
  - in flights, job build-i386-rumpuserxen
  - in ap-common, TREE and TREEVCS for RUMPUSERXEN and RUMPUSERXEN_RUMPSRC

mfi-common also honours REVISION_RUMPUSERXEN, but provides no way to
specify the revisions of the subtrees (the two submodules and
rumpsrc).  The upstream rumpuser-xen git repository contains the
commit hashes of those.

We had to do some pretty unpleasant things to get the rumpuser-xen
build system to work with rumpsrc we cloned ourselves.

During bisection the bisector must choose a unification of the various
trees' revision graphs, into a single graph.  But we do not here teach
adhoc-revtuple-generator about these interrelationships.  As a result
the bisector may choose a unification inconsistent with the subtree
references in rumpuser-xen.git.  This might impair the performance of
the bisector in the presence of cross-tree version incompatibilities,
but the results should be tolerable for now.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 ap-common            |    6 +++
 mfi-common           |   17 +++++++++
 sg-run-job           |    5 +++
 ts-rumpuserxen-build |  104 ++++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 132 insertions(+)
 create mode 100755 ts-rumpuserxen-build

diff --git a/ap-common b/ap-common
index 4cae650..d7933f1 100644
--- a/ap-common
+++ b/ap-common
@@ -41,6 +41,12 @@
 : ${TREE_GNULIB_LIBVIRT:=git://git.sv.gnu.org/gnulib.git}
 : ${TREEVCS_GNULIB_LIBVIRT:=git}
 
+: ${TREE_RUMPUSERXEN:=https://github.com/rumpkernel/rumpuser-xen}
+: ${TREEVCS_RUMPUSERXEN:=git}
+
+: ${TREE_RUMPUSERXEN_RUMPSRC:=https://github.com/rumpkernel/rumpkernel-netbsd-src}
+: ${TREEVCS_RUMPUSERXEN_RUMPSRC:=git}
+
 : ${TREE_LINUXFIRMWARE:=git://xenbits.xen.org/osstest/linux-firmware.git}
 : ${PUSH_TREE_LINUXFIRMWARE:=$XENBITS:/home/osstest/ext/linux-firmware.git}
 : ${UPSTREAM_TREE_LINUXFIRMWARE:=$GIT_KERNEL_ORG/pub/scm/linux/kernel/git/firmware/linux-firmware.git}
diff --git a/mfi-common b/mfi-common
index ae42637..7c5f301 100644
--- a/mfi-common
+++ b/mfi-common
@@ -178,6 +178,23 @@ create_build_jobs () {
 
     fi
 
+    case $arch in
+    i386)
+    ./cs-job-create $flight build-$arch-rumpuserxen build-rumpuserxen        \
+                arch=$arch                                                   \
+        tree_xen=$TREE_XEN                                                   \
+                $RUNVARS $BUILD_RUNVARS $BUILD_RUMPUSERXEN_RUNVARS $arch_runvars \
+                $suite_runvars                                               \
+                host_hostflags=$build_hostflags                              \
+                buildjob=${bfi}build-$arch                                   \
+                tree_rumpuserxen=$TREE_RUMPUSERXEN			\
+          ${TREEVCS_RUMPUSERXEN:+treevcs_rumpuserxen=}${TREEVCS_RUMPUSERXEN} \
+                revision_rumpuserxen=$REVISION_RUMPUSERXEN		\
+                tree_rumpuserxen_rumpsrc=$TREE_RUMPUSERXEN_RUMPSRC	\
+                ${TREEVCS_RUMPUSERXEN_RUMPSRC:+treevcs_rumpuserxen_rumpsrc=}${TREEVCS_RUMPUSERXEN_RUMPSRC}
+		;;
+    esac
+
     case "$arch" in
     armhf) continue;; # don't do any other kernel builds
     esac
diff --git a/sg-run-job b/sg-run-job
index 3d44331..c71b84e 100755
--- a/sg-run-job
+++ b/sg-run-job
@@ -313,6 +313,7 @@ proc test-guest-nomigr {g} {
 proc need-hosts/build {} { return BUILD }
 proc need-hosts/build-kern {} { return BUILD }
 proc need-hosts/build-libvirt {} { return BUILD }
+proc need-hosts/build-rumpuserxen {} { return BUILD }
 
 proc run-job/build {} {
     run-ts . = ts-xen-build
@@ -326,6 +327,10 @@ proc run-job/build-libvirt {} {
     run-ts . = ts-libvirt-build
 }
 
+proc run-job/build-rumpuserxen {} {
+    run-ts . = ts-rumpuserxen-build
+}
+
 proc prepare-build-host {} {
     global jobinfo
     run-ts broken = ts-hosts-allocate + host
diff --git a/ts-rumpuserxen-build b/ts-rumpuserxen-build
new file mode 100755
index 0000000..e6adc75
--- /dev/null
+++ b/ts-rumpuserxen-build
@@ -0,0 +1,104 @@
+#!/usr/bin/perl
+# This is part of "osstest", an automated testing framework for Xen.
+# Copyright (C) 2009-2014 Citrix Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+use strict qw(vars);
+use DBI;
+use Osstest;
+use Osstest::TestSupport;
+use Osstest::BuildSupport;
+
+tsreadconfig();
+selectbuildhost(@ARGV);
+builddirsprops();
+
+our %submodmap = qw(nblibs nblibs
+                    buildrump.sh buildrumpsh);
+
+our ($rux);
+
+sub checkout () {
+    prepbuilddirs();
+    xendist();
+
+    build_clone($ho, 'rumpuserxen', $builddir, 'rumpuserxen');
+    submodulefixup($ho, 'rumpuserxen', 'rumpuserxen', \%submodmap);
+    $rux = "$builddir/rumpuserxen";
+
+    my $rumpsrcgitrevr = "$rux/buildrump.sh/.srcgitrev";
+    my $rumpsrcgitrevl = "buildrump-srcgitrev";
+    my $rev = $r{revision_rumpuserxen_rumpsrc};
+    if (length $rev) {
+	target_putfilecontents_stash($ho,30,
+				     "$r{revision_rumpuserxen_rumpsrc}\n",
+				     $rumpsrcgitrevr, $rumpsrcgitrevl);
+    } else {
+	target_getfile($ho,30,$rumpsrcgitrevr,"$stash/$rumpsrcgitrevl");
+	$rev = get_filecontents("$stash/$rumpsrcgitrevl");
+	chomp $rev or die;
+	$rev =~ m/^[0-9a-f]+$/ or die;
+	store_runvar('revision_rumpuserxen_rumpsrc', $rev);
+    }
+
+    build_clone($ho, "rumpuserxen_rumpsrc", $builddir, "rumpuserxen/rumpsrc");
+    store_vcs_revision('rumpuserxen_rumpsrc', $rev, 'git');
+}
+
+sub massage() {
+    # Very poor
+    target_editfile($ho, "$rux/buildxen.sh", undef,
+		    "$rux/grievous-bodge-nblibs", sub {
+        while (<EI>) {
+	    next unless m/^\Qif [ ! -d rumpsrc ]; then\E/..m/^fi/;
+	    next unless m/cp -Rp nblibs/;
+	    print EO or die $!;
+	}
+    });
+    target_cmd_build($ho, 200, $rux, "bash -x grievous-bodge-nblibs");
+
+    # Rather poor
+    target_editfile($ho, "$rux/Config.mk", sub {
+        while (<EI>) {
+	    s/^XEN_HEADERS=/XEN_HEADERS?=/;
+	    print EO or die $!;
+	}
+    });
+}
+
+sub build() {
+    target_cmd_build($ho, 3600, $rux, <<END);
+        export XEN_HEADERS=$xendist/usr/local/include/xen
+        (./buildxen.sh && touch ../build-ok-stamp) |tee ../log
+        test -f ../build-ok-stamp #/
+        echo ok.
+END
+}
+
+sub install() {
+    my $destdir="dist/usr/local/lib/xen/rump-kernel";
+    target_cmd_build($ho, 300, $builddir, <<END);
+        mkdir -p $destdir
+        cp rumpuserxen/rump-kernel* $destdir
+        cp -r rumpuserxen/img $destdir/
+        cp rumpuserxen/domain_config $destdir
+END
+}
+
+checkout();
+massage();
+build();
+install();
+built_stash($ho, $builddir, 'dist', 'rumpuserxendist');
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 12/13] rump kernels: Provide two test jobs
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
                   ` (10 preceding siblings ...)
  2014-05-16 18:01 ` [OSSTEST PATCH 11/13] rump kernels: Provide a build job Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  2014-05-16 18:01 ` [OSSTEST PATCH 13/13] rump kernels: Create a "branch" for rump kernel tests Ian Jackson
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

---
 make-flight               |    8 +++++
 sg-run-job                |    8 +++++
 ts-rumpuserxen-demo-setup |   79 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 95 insertions(+)
 create mode 100755 ts-rumpuserxen-demo-setup

diff --git a/make-flight b/make-flight
index aadf58b..5bac70e 100755
--- a/make-flight
+++ b/make-flight
@@ -261,6 +261,14 @@ test_matrix_do_one () {
   *)               test_xend=n ;;
   esac
 
+  for rumparch in i386; do
+      job_create_test test-$xenarch$kern-$dom0arch-rumpuserxen-$rumparch \
+                      test-rumpuserxen xl \
+            $xenarch $dom0arch                                       \
+            rump_rumpuserxenbuildjob=build-$rumparch-rumpuserxen     \
+            all_hostflags=$most_hostflags
+  done
+
   # xend PV guest test on x86 only
   if [ x$test_xend = xy -a \( $dom0arch = "i386" -o $dom0arch = "amd64" \) ]; then
     job_create_test test-$xenarch$kern-$dom0arch-pv test-debian xend \
diff --git a/sg-run-job b/sg-run-job
index c71b84e..8aa1422 100755
--- a/sg-run-job
+++ b/sg-run-job
@@ -308,6 +308,14 @@ proc test-guest-nomigr {g} {
     run-ts . =   ts-guest-destroy + host $g
 }
 
+proc need-hosts/test-rumpuserxen {} { return host }
+proc run-job/test-rumpuserxen {} {
+    set g rump
+    run-ts . =   ts-rumpuserxen-demo-setup + host $g
+    run-ts . =   ts-guest-start            + host $g
+    run-ts . =   ts-guest-destroy          + host $g
+}
+
 #---------- builds ----------
 
 proc need-hosts/build {} { return BUILD }
diff --git a/ts-rumpuserxen-demo-setup b/ts-rumpuserxen-demo-setup
new file mode 100755
index 0000000..4ad77f8
--- /dev/null
+++ b/ts-rumpuserxen-demo-setup
@@ -0,0 +1,79 @@
+#!/usr/bin/perl -w
+# This is part of "osstest", an automated testing framework for Xen.
+# Copyright (C) 2009-2013 Citrix Inc.
+# 
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+use strict qw(vars);
+use DBI;
+use Osstest;
+use Osstest::TestSupport;
+
+tsreadconfig();
+
+our ($whhost,$gn) = @ARGV;
+$whhost ||= 'host';
+$gn ||= 'rump';
+
+our $ho= selecthost($whhost);
+
+our $gho;
+
+our $rkdist;
+
+sub prep () {
+    $gho = prepareguest($ho, $gn, $gn, 4096, undef, 30);
+
+    my $buildjob = guest_var($gho, 'rumpuserxenbuildjob', undef);
+    $rkdist = target_extract_jobdistpath_subdir
+	($ho, 'rumpuserxen', 'rumpuserxen', $buildjob);
+    $rkdist .= '/usr/local/lib/xen/rump-kernel';
+
+    my @images;
+
+    my $jobdir = target_jobdir($ho);
+
+    my $cfgfile = "$gn.cfg";
+    my $cfgpath = "/etc/xen/$cfgfile";
+    target_editfile_root($ho, "$rkdist/domain_config", $cfgfile, $cfgpath,
+			 sub {
+	while (<EI>) {
+	    next if m/^\s*\#/;
+	    next unless m/\S/;
+
+	    my $in = $& if m/^\w\S*/;
+
+	    s# = .*              # " = '$gn'"          #xe  if $in eq 'name';
+	    s# =\s* ['"](.*)['"] # " = '$rkdist/$1'"   #xe  if $in eq 'kernel';
+	    s#\b mac=[0-9a-f:]+  # "mac=$gho->{Ether}" #xe  if $in eq 'vif';
+	    s#\b 4             \b# 3                   #xe  if $in eq 'extra';
+
+	    if ($in eq 'disk') {
+		s{\b img/(\w+.ffs) \b}{
+                    push @images, $1;
+                    "$jobdir/$1";
+                }xeg;
+	    }
+
+	    print EO or die $!;
+	}
+    });
+
+    store_runvar("$gho->{Guest}_cfgpath", $cfgpath);
+
+    target_cmd($ho, "cp $rkdist/img/$_ $jobdir/$_", 200)
+	foreach @images;
+}
+
+prep();
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [OSSTEST PATCH 13/13] rump kernels: Create a "branch" for rump kernel tests
  2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
                   ` (11 preceding siblings ...)
  2014-05-16 18:01 ` [OSSTEST PATCH 12/13] rump kernels: Provide two test jobs Ian Jackson
@ 2014-05-16 18:01 ` Ian Jackson
  12 siblings, 0 replies; 14+ messages in thread
From: Ian Jackson @ 2014-05-16 18:01 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Jackson, Ian Campbell

This is a traditional push gate.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 ap-common            |    3 +++
 ap-fetch-version     |    4 ++++
 ap-fetch-version-old |    5 +++++
 ap-print-url         |    3 +++
 ap-push              |    5 +++++
 cr-daily-branch      |   10 ++++++++++
 cri-common           |    1 +
 crontab              |    3 ++-
 make-flight          |    9 +++++++++
 mfi-common           |    1 +
 10 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/ap-common b/ap-common
index d7933f1..b7d03b5 100644
--- a/ap-common
+++ b/ap-common
@@ -43,6 +43,8 @@
 
 : ${TREE_RUMPUSERXEN:=https://github.com/rumpkernel/rumpuser-xen}
 : ${TREEVCS_RUMPUSERXEN:=git}
+: ${BASE_TREE_RUMPUSERXEN:=git://xenbits.xen.org/rumpuser-xen.git}
+: ${PUSH_TREE_RUMPUSERXEN:=$XENBITS:/home/xen/git/rumpuser-xen.git}
 
 : ${TREE_RUMPUSERXEN_RUMPSRC:=https://github.com/rumpkernel/rumpkernel-netbsd-src}
 : ${TREEVCS_RUMPUSERXEN_RUMPSRC:=git}
@@ -72,6 +74,7 @@ fi
 : ${LOCALREV_LINUX:=daily-cron.$branch}
 : ${LOCALREV_LIBVIRT:=daily-cron.$branch}
 : ${LOCALREV_GNULIB_LIBVIRT:=daily-cron.$branch}
+: ${LOCALREV_RUMPUSERXEN:=daily-cron.$branch}
 
 : ${TREEBASE_LINUX_XCP:=http://hg.uk.xensource.com/carbon/trunk/linux-2.6.27}
 
diff --git a/ap-fetch-version b/ap-fetch-version
index 7cc2d98..c67fb2f 100755
--- a/ap-fetch-version
+++ b/ap-fetch-version
@@ -77,6 +77,10 @@ gnulib-libvirt)
 	repo_tree_rev_fetch_git gnulib-libvirt \
 		$TREE_GNULIB_LIBVIRT master $LOCALREV_GNULIB_LIBVIRT
 	;;
+rumpuserxen)
+	repo_tree_rev_fetch_git rumpuserxen \
+		$TREE_RUMPUSERXEN master $LOCALREV_RUMPUSERXEN
+	;;
 osstest)
 	if [ "x$OSSTEST_USE_HEAD" != "xy" ] ; then
 	    git fetch $HOME/testing.git pretest:ap-fetch >&2
diff --git a/ap-fetch-version-old b/ap-fetch-version-old
index 3879e09..de88245 100755
--- a/ap-fetch-version-old
+++ b/ap-fetch-version-old
@@ -28,6 +28,7 @@ select_xenbranch
 : ${BASE_TAG_LINUX2639:=tested/2.6.39.x}
 : ${BASE_LOCALREV_LINUX:=daily-cron.$branch.old}
 : ${BASE_LOCALREV_LIBVIRT:=daily-cron.$branch.old}
+: ${BASE_LOCALREV_RUMPUSERXEN:=daily-cron.$branch.old}
 
 : ${BASE_TREE_QEMU_UPSTREAM:=${TREE_QEMU_UPSTREAM/\/staging\//\/}}
 
@@ -78,6 +79,10 @@ libvirt)
 	repo_tree_rev_fetch_git libvirt \
 		$BASE_TREE_LIBVIRT xen-tested-master $BASE_LOCALREV_LIBVIRT
 	;;
+rumpuserxen)
+	repo_tree_rev_fetch_git rumpuserxen \
+		$BASE_TREE_RUMPUSERXEN xen-tested-master $BASE_LOCALREV_RUMPUSERXEN
+	;;
 gnulib-libvirt)
 	# No push gate, same as ap-fetch-version
 	./ap-fetch-version $branch
diff --git a/ap-print-url b/ap-print-url
index b1af0b9..8bcf396 100755
--- a/ap-print-url
+++ b/ap-print-url
@@ -52,6 +52,9 @@ libvirt)
 gnulib-libvirt)
 	echo $TREE_GNULIB_LIBVIRT
 	;;
+rumpuserxen)
+	echo $TREE_RUMPUSERXEN
+	;;
 osstest)
 	echo none:;
 	;;
diff --git a/ap-push b/ap-push
index 674559f..5c39b26 100755
--- a/ap-push
+++ b/ap-push
@@ -33,6 +33,7 @@ TREE_LINUX=$PUSH_TREE_LINUX
 TREE_QEMU_UPSTREAM=$XENBITS:/home/xen/git/qemu-upstream-${xenbranch#xen-}.git
 TREE_XEN=$PUSH_TREE_XEN
 TREE_LIBVIRT=$PUSH_TREE_LIBVIRT
+TREE_RUMPUSERXEN=$PUSH_TREE_RUMPUSERXEN
 
 if info_linux_tree "$branch"; then
 	cd $repos/linux
@@ -77,6 +78,10 @@ libvirt)
 	cd $repos/libvirt
 	git push $TREE_LIBVIRT $revision:xen-tested-master
 	;;
+rumpuserxen)
+	cd $repos/rumpuserxen
+	git push $TREE_RUMPUSERXEN $revision:xen-tested-master
+	;;
 gnulib-libvirt)
 	# No gate
 	echo "gnulib-libvirt has not push gate, refusing to push" >&2
diff --git a/cr-daily-branch b/cr-daily-branch
index 0cafe39..a7fe8db 100755
--- a/cr-daily-branch
+++ b/cr-daily-branch
@@ -141,6 +141,10 @@ if [ "x$REVISION_GNULIB_LIBVIRT" = x ]; then
 	determine_version REVISION_GNULIB_LIBVIRT gnulib-libvirt
 	export REVISION_GNULIB_LIBVIRT
 fi
+if [ "x$REVISION_RUMPUSERXEN" = x ]; then
+	determine_version REVISION_RUMPUSERXEN rumpuserxen
+	export REVISION_RUMPUSERXEN
+fi
 if [ "x$REVISION_LINUXFIRMWARE" = x ]; then
 	determine_version REVISION_LINUXFIRMWARE linuxfirmware
         export REVISION_LINUXFIRMWARE
@@ -177,6 +181,12 @@ libvirt)
 	realtree=libvirt
 	NEW_REVISION=$REVISION_LIBVIRT
 	;;
+rumpuserxen)
+	realtree=rumpuserxen
+	NEW_REVISION=$REVISION_RUMPUSERXEN
+	export REVISION_LINUX_OLD=disable
+	export REVISION_LIBVIRT=disable
+	;;
 *)
 	NEW_REVISION=''
 	wantpush=false
diff --git a/cri-common b/cri-common
index d82312c..cd9112c 100644
--- a/cri-common
+++ b/cri-common
@@ -48,6 +48,7 @@ select_xenbranch () {
 	linux-*)		tree=linux;	xenbranch=xen-unstable ;;
 	linuxfirmware)	    tree=linuxfirmware;	xenbranch=xen-unstable ;;
 	libvirt)		tree=libvirt;	xenbranch=xen-unstable ;;
+	rumpuserxen)	      tree=rumpuserxen; xenbranch=xen-unstable ;;
 	osstest)		tree=osstest;	xenbranch=xen-unstable ;;
 	esac
 	if [ "x$tree" = xlinux ]; then
diff --git a/crontab b/crontab
index 002876a..f83bd78 100644
--- a/crontab
+++ b/crontab
@@ -8,6 +8,7 @@ MAILTO=ian.jackson@citrix.com,ian.campbell@eu.citrix.com
 18		11	* * *		cd testing.git && BRANCHES=linux-mingo-tip-master ./cr-for-branches branches -w "./cr-daily-branch --real"
 18		12	* * *		cd testing.git && BRANCHES=linux-3.0		./cr-for-branches branches -w "./cr-daily-branch --real"
 18		13	* * *		cd testing.git && BRANCHES=libvirt		./cr-for-branches branches -w "./cr-daily-branch --real"
-6-59/15   	*	* * *		cd testing.git && EXTRA_BRANCHES='linux-linus linux-3.0' ./cr-for-branches bisects -w "./cr-try-bisect --real"
+18		14	* * *		cd testing.git && BRANCHES=rumpuserxen		./cr-for-branches branches -w "./cr-daily-branch --real"
+6-59/15   	*	* * *		cd testing.git && EXTRA_BRANCHES='linux-linus linux-3.0 rumpuserxen' ./cr-for-branches bisects -w "./cr-try-bisect --real"
 #8-59/5		*	* * *		cd bisects/adhoc.git &&	with-lock-ex -q data-tree-lock bash -c "./cr-try-bisect-adhoc; exit $?"
 3		5	* * *		savelog -c28 testing.git/tmp/cr-for-branches.log >/dev/null
diff --git a/make-flight b/make-flight
index 5bac70e..dd679e8 100755
--- a/make-flight
+++ b/make-flight
@@ -67,6 +67,15 @@ job_create_test_filter_callback () {
     libvirt)
       if [ x$toolstack != xlibvirt ] ; then return 1; fi
       ;;
+    rumpuserxen)
+      case "$job" in
+      *-rumpuserxen-*)
+          ;;
+      *)
+          : "suppressed $job"
+          return 1;;
+      esac
+      ;;
     *)
       case "$job" in
         *-qemuu-*)
diff --git a/mfi-common b/mfi-common
index 7c5f301..ff3c57e 100644
--- a/mfi-common
+++ b/mfi-common
@@ -52,6 +52,7 @@ create_build_jobs () {
       linux-mingo-tip-master) continue;;
       linux-*) ;;
       qemu-*) continue;;
+      rumpuserxen) continue;;
       esac
       case "$xenbranch" in
       xen-3.*-testing) continue;;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2014-05-16 18:02 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 01/13] TestSupport: Provide target_editfile Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 02/13] git_massage_url: Make idempotent Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 03/13] BuildSupport, ts-*-build: Remove some clone-and-hack Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 04/13] BuildSupport: Provide some support for git submodules Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 05/13] TestSupport: Break out target_jobdir Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 06/13] TestSupport: Break out target_extract_jobdistpath_subdir Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 07/13] target_jobdir: Create the directory Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 08/13] guest_umount_lv: Tolerate lack of volume group Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 09/13] prepareguest: Tolerate $mb=undef Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 10/13] mfi-common: Honour REVISION_LIBVIRT=disable Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 11/13] rump kernels: Provide a build job Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 12/13] rump kernels: Provide two test jobs Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 13/13] rump kernels: Create a "branch" for rump kernel tests Ian Jackson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).