[Xen-devel,OSSTEST] Add a libvirt build job.

Message ID 1394551597-1197-1-git-send-email-ian.campbell@citrix.com
State New
Headers show

Commit Message

Ian Campbell March 11, 2014, 3:26 p.m.
The ts-libvirt-build, sg-run-job and mfi-common changes have been tested in
standalone mode.

The remaining changes are intended to introduce a libvirt push gate and have
been tested as far as my limited ability to invoke cr-daily-branch by hand is
able, but I am sure they are incomplete in some way or other.

Actually installing/running the result is left for another day.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Jim Fehlig <jfehlig@suse.com>
Cc: Dario Faggioli <dario.faggioli@citrix.com>
---
 ap-common            |  5 ++++
 ap-fetch-version     |  4 +++
 ap-fetch-version-old |  5 ++++
 ap-print-url         |  3 ++
 ap-push              |  5 ++++
 cr-daily-branch      |  8 +++++
 cri-common           |  1 +
 mfi-common           | 10 +++++++
 sg-run-job           |  5 ++++
 ts-libvirt-build     | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 10 files changed, 130 insertions(+)
 create mode 100755 ts-libvirt-build

Comments

Dario Faggioli March 11, 2014, 4:11 p.m. | #1
On mar, 2014-03-11 at 15:26 +0000, Ian Campbell wrote:
> The ts-libvirt-build, sg-run-job and mfi-common changes have been tested in
> standalone mode.
> 
Awesome!

> Actually installing/running the result is left for another day.
> 
Do you have something, even half baked, about it already? Because, if
you want, I can pick this up myself. In case you're fine with it, feel
free to send me whatever you've got, and I'll use it as a starting
point. Otherwise, I'll just start from scratch.

> Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
> Cc: Jim Fehlig <jfehlig@suse.com>
> Cc: Dario Faggioli <dario.faggioli@citrix.com>
>
Reviewed-by: Dario Faggioli <dario.faggioli@citrix.com>

Regards,
Dario
Ian Campbell March 11, 2014, 4:16 p.m. | #2
On Tue, 2014-03-11 at 17:11 +0100, Dario Faggioli wrote:
> On mar, 2014-03-11 at 15:26 +0000, Ian Campbell wrote:
> > The ts-libvirt-build, sg-run-job and mfi-common changes have been tested in
> > standalone mode.
> > 
> Awesome!
> 
> > Actually installing/running the result is left for another day.
> > 
> Do you have something, even half baked, about it already?

I've done nothing in this regard except vaguely think about it.

>  Because, if
> you want, I can pick this up myself. In case you're fine with it, feel
> free to send me whatever you've got, and I'll use it as a starting
> point. Otherwise, I'll just start from scratch.


> 
> > Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
> > Cc: Jim Fehlig <jfehlig@suse.com>
> > Cc: Dario Faggioli <dario.faggioli@citrix.com>
> >
> Reviewed-by: Dario Faggioli <dario.faggioli@citrix.com>
> 
> Regards,
> Dario
Ian Jackson March 21, 2014, 11:13 a.m. | #3
Ian Campbell writes ("[PATCH OSSTEST] Add a libvirt build job."):
> The ts-libvirt-build, sg-run-job and mfi-common changes have been tested in
> standalone mode.
> 
> The remaining changes are intended to introduce a libvirt push gate and have
> been tested as far as my limited ability to invoke cr-daily-branch by hand is
> able, but I am sure they are incomplete in some way or other.
> 
> Actually installing/running the result is left for another day.

Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>

Ian.
Ian Campbell March 21, 2014, 11:47 a.m. | #4
On Fri, 2014-03-21 at 11:13 +0000, Ian Jackson wrote:
> Ian Campbell writes ("[PATCH OSSTEST] Add a libvirt build job."):
> > The ts-libvirt-build, sg-run-job and mfi-common changes have been tested in
> > standalone mode.
> > 
> > The remaining changes are intended to introduce a libvirt push gate and have
> > been tested as far as my limited ability to invoke cr-daily-branch by hand is
> > able, but I am sure they are incomplete in some way or other.
> > 
> > Actually installing/running the result is left for another day.
> 
> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>

Thanks, at some point I'll come over and pick your brains about exactly
what needs to happen to deploy a new git tree and push gate...

(IOW I won't be pushing this right away)

Ian.
Ian Jackson March 21, 2014, 12:01 p.m. | #5
Ian Campbell writes ("Re: [PATCH OSSTEST] Add a libvirt build job."):
> On Fri, 2014-03-21 at 11:13 +0000, Ian Jackson wrote:
> > Ian Campbell writes ("[PATCH OSSTEST] Add a libvirt build job."):
> > > The ts-libvirt-build, sg-run-job and mfi-common changes have been test\
ed in
> > > standalone mode.
> > > 
> > > The remaining changes are intended to introduce a libvirt push gate an\
d have
> > > been tested as far as my limited ability to invoke cr-daily-branch by \
hand is
> > > able, but I am sure they are incomplete in some way or other.
> > > 
> > > Actually installing/running the result is left for another day.
> > 
> > Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
> 
> Thanks, at some point I'll come over and pick your brains about exactly
> what needs to happen to deploy a new git tree and push gate...

Right.  I'll walk you through it at some point.

> (IOW I won't be pushing this right away)

OK.

Thanks,
Ian.

Patch

diff --git a/ap-common b/ap-common
index cb0cfff..73bb90c 100644
--- a/ap-common
+++ b/ap-common
@@ -33,6 +33,10 @@ 
 
 : ${TREEVCS_LINUX:=git}
 
+: ${TREE_LIBVIRT:=git://libvirt.org/libvirt.git}
+: ${PUSH_TREE_LIBVIRT:=$XENBITS:/home/xen/git/libvirt.git}
+: ${TREEVCS_LIBVIRT:=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}
@@ -56,6 +60,7 @@  fi
 
 : ${LOCALREV_XEN:=daily-cron.$branch}
 : ${LOCALREV_LINUX:=daily-cron.$branch}
+: ${LOCALREV_LIBVIRT:=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 a0a3b16..142ae5e 100755
--- a/ap-fetch-version
+++ b/ap-fetch-version
@@ -69,6 +69,10 @@  linuxfirmware)
 	repo_tree_rev_fetch_git linuxfirmware \
 		$UPSTREAM_TREE_LINUXFIRMWARE master daily-cron.$branch
 	;;
+libvirt)
+	repo_tree_rev_fetch_git libvirt \
+		$TREE_LIBVIRT master $LOCALREV_LIBVIRT
+	;;
 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 3772891..1f44e2a 100755
--- a/ap-fetch-version-old
+++ b/ap-fetch-version-old
@@ -27,6 +27,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_TREE_QEMU_UPSTREAM:=${TREE_QEMU_UPSTREAM/\/staging\//\/}}
 
@@ -73,6 +74,10 @@  linuxfirmware)
 	repo_tree_rev_fetch_git linuxfirmware \
 		$TREE_LINUXFIRMWARE master daily-cron-old.$branch
 	;;
+libvirt)
+	repo_tree_rev_fetch_git libvirt \
+		$TREE_LIBVIRT master $BASE_LOCALREV_LIBVIRT
+	;;
 osstest)
 	if [ "x$OSSTEST_USE_HEAD" != xy ] ; then
 	    git fetch -f $HOME/testing.git incoming:ap-fetch
diff --git a/ap-print-url b/ap-print-url
index f2812d0..2b55fce 100755
--- a/ap-print-url
+++ b/ap-print-url
@@ -46,6 +46,9 @@  linux-2.6.39)
 linuxfirmware)
 	echo $UPSTREAM_TREE_LINUXFIRMWARE
 	;;
+libvirt)
+	echo $TREE_LIBVIRT
+	;;
 osstest)
 	echo none:;
 	;;
diff --git a/ap-push b/ap-push
index dc0a166..af76ecc 100755
--- a/ap-push
+++ b/ap-push
@@ -32,6 +32,7 @@  select_xenbranch
 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
 
 if info_linux_tree "$branch"; then
 	cd $repos/linux
@@ -72,6 +73,10 @@  linux-xen-*)
         cd $repos/linux
         git push $TREE_LINUX $revision:refs/heads/$branch
         ;;
+libvirt)
+	cd $repos/libvirt
+	git push $TREE_LIBVIRT $revision:master
+	;;
 osstest)
 	git push $HOME/testing.git $revision:incoming
 	git push $XENBITS:/home/xen/git/osstest.git $revision:master
diff --git a/cr-daily-branch b/cr-daily-branch
index 28ccc7e..12a1ee8 100755
--- a/cr-daily-branch
+++ b/cr-daily-branch
@@ -133,6 +133,10 @@  if [ "x$REVISION_LINUX_ARM" = x ]; then
         export REVISION_LINUX_ARM
     fi
 fi
+if [ "x$REVISION_LIBVIRT" = x ]; then
+	determine_version REVISION_LIBVIRT libvirt
+	export REVISION_LIBVIRT
+fi
 if [ "x$REVISION_LINUXFIRMWARE" = x ]; then
 	determine_version REVISION_LINUXFIRMWARE linuxfirmware
         export REVISION_LINUXFIRMWARE
@@ -165,6 +169,10 @@  linuxfirmware)
 	realtree=linuxfirmware
 	NEW_REVISION=$REVISION_LINUXFIRMWARE
         ;;
+libvirt)
+	realtree=libvirt
+	NEW_REVISION=$REVISION_LIBVIRT
+	;;
 *)
 	NEW_REVISION=''
 	wantpush=false
diff --git a/cri-common b/cri-common
index 497d4e3..f472927 100644
--- a/cri-common
+++ b/cri-common
@@ -42,6 +42,7 @@  select_xenbranch () {
 	linux)			tree=linux;	xenbranch=xen-unstable ;;
 	linux-*)		tree=linux;	xenbranch=xen-unstable ;;
 	linuxfirmware)	    tree=linuxfirmware;	xenbranch=xen-unstable ;;
+	libvirt)		tree=libvirt;	xenbranch=xen-unstable ;;
 	osstest)		tree=osstest;	xenbranch=xen-unstable ;;
 	esac
 	if [ "x$tree" = xlinux ]; then
diff --git a/mfi-common b/mfi-common
index f84ee97..37444b3 100644
--- a/mfi-common
+++ b/mfi-common
@@ -164,6 +164,16 @@  create_build_jobs () {
                 tree_linuxfirmware=$TREE_LINUXFIRMWARE                       \
                 revision_linuxfirmware=$REVISION_LINUXFIRMWARE
 
+    ./cs-job-create $flight build-$arch-libvirt build-libvirt                \
+                arch=$arch                                                   \
+        tree_xen=$TREE_XEN                                                   \
+                $RUNVARS $BUILD_RUNVARS $BUILD_LIBVIRT_RUNVARS $arch_runvars \
+                $suite_runvars                                               \
+                host_hostflags=$build_hostflags                              \
+                buildjob=${bfi}build-$arch                                   \
+                tree_libvirt=$TREE_LIBVIRT revision_libvirt=$REVISION_LIBVIRT\
+                ${TREEVCS_LIBVIRT:+treevcs_libvirt=}${TREEVCS_LIBVIRT}
+
     case "$arch" in
     armhf|arm64) continue;; # don't do any other kernel builds
     esac
diff --git a/sg-run-job b/sg-run-job
index d894711..e3c6b00 100755
--- a/sg-run-job
+++ b/sg-run-job
@@ -306,6 +306,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 run-job/build {} {
     run-ts . = ts-xen-build
@@ -315,6 +316,10 @@  proc run-job/build-kern {} {
     run-ts . = ts-kernel-build
 }
 
+proc run-job/build-libvirt {} {
+    run-ts . = ts-libvirt-build
+}
+
 proc prepare-build-host {} {
     global jobinfo
     run-ts broken = ts-hosts-allocate + host
diff --git a/ts-libvirt-build b/ts-libvirt-build
new file mode 100755
index 0000000..8e3a7aa
--- /dev/null
+++ b/ts-libvirt-build
@@ -0,0 +1,84 @@ 
+#!/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;
+
+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";
+
+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_root($ho, 300, $path, $distcopy);
+    target_cmd_root($ho, "tar -C $xendist -hzxf $distcopy", 300);
+
+    build_clone($ho, 'libvirt', $builddir, 'libvirt');
+}
+
+sub prep() {
+    target_install_packages($ho, qw(autoconf automake libtool xsltproc
+                                    libxml2-utils libxml2-dev libnl-dev
+                                    libdevmapper-dev w3c-dtd-xhtml));
+}
+
+sub config() {
+    target_cmd_build($ho, 1000, $builddir, <<END);
+        cd libvirt
+        CFLAGS="-I$xendist/usr/local/include/" \
+        LDFLAGS="-L$xendist/usr/local/lib/ -Wl,-rpath-link=$xendist/usr/local/lib/" \
+            ./autogen.sh --with-libxl --without-xen --without-xenapi --without-selinux
+END
+}
+
+sub build() {
+    target_cmd_build($ho, 1000, $builddir, <<END);
+        cd libvirt
+        (make $makeflags 2>&1 && touch ../build-ok-stamp) |tee ../log
+        test -f ../build-ok-stamp
+        echo ok.
+END
+}
+
+sub install() {
+    target_cmd_build($ho, 300, $builddir, <<END);
+        mkdir -p dist
+        cd libvirt
+        make $makeflags install DESTDIR=$builddir/dist
+END
+}
+
+prep();
+checkout();
+config();
+build();
+install();
+built_stash($ho, $builddir, 'dist', 'libvirtdist');