[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v8 1/2] OSSTEST: introduce a raisin build test
Stefano Stabellini writes ("[PATCH v8 1/2] OSSTEST: introduce a raisin build test"): > Make divide_xen_build common between ts-raisin-build and ts-xen-build. > It is used to split the build output in two archives: one with the > hypervisor binary and another with the userspace tools. This refactoring should be in its own patch. > Introduce a raisin build test to OSSTest. The build is meant to test > Raisin itself. > > Enable the raisin build just for xen-unstable. Disable it for all the > older Xen branches and for all the non-Xen branches. > > The components built by the raisin job are static; the list is written > by ts-raisin-build. Don't automatically generate the list as the > component names are not regular. The versions of the components and > their git tree urls are passed by mfi-common to ts-raisin-build. > mfi-common passes the same TREE_ and REVISION_ variables used with the > other jobs. ts-raisin-build writes them to the raisin config file, > overwriting the defaults, only if both the tree and revision variables > for a component are set, to avoid inconsistencies. For example > mfi-common can pass a revision only present in a specific git tree, but > not the corresponding git tree. > > > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> > > --- > > Changes in v8: > - update commit message > - do not install-builddep in ts-raisin-build, rely on ts-xen-build-dep > > Changes in v7: > - update raisin git url after http://marc.info/?l=xen-devel&m=143472251602803 > > Changes in v6: > - move divide to Osstest/BuildSupport.pm and rename it to > divide_xen_build; use divide_xen_build in ts-raisin-build and > ts-xen-build. > > Changes in v5: > - remove setting DEFAULT_REVISION_RAISIN to master > - disable raisin when branch is not xen* > - do not overwrite raisin default variables unless both revision_* and > tree_* are set of a given component > > Changes in v4: > - introduce enable_raisin in mfi-common: only build raisin when building > xen-unstable > - start off from the default raisin config, then append osstest config > options to it > - do not write variable to the raisin config if the conrresponding > runvar is not set > - remove TREE_OVMF and TREE_SEABIOS > > Changes in v3: > - use $raisindir throughout ts-raisin-build > - do not specify ENABLED_COMPONENTS so that empty REVISION variables can > be used to disable building a raisin component > > Changes in v2: > - set revision_* variables in mfi-common; > - in ts-raisin-build set the *_REVISION config options based on the > revision_* variables; > - in ts-raisin-build, call store_revision appropriately; > - divide the output in an hypervisor and a tools tarball. > --- > Osstest/BuildSupport.pm | 48 ++++++++++++++++++ > ap-common | 2 + > mfi-common | 41 +++++++++++++++ > sg-run-job | 5 ++ > ts-raisin-build | 128 > +++++++++++++++++++++++++++++++++++++++++++++++ > ts-xen-build | 44 +--------------- > 6 files changed, 226 insertions(+), 42 deletions(-) > create mode 100755 ts-raisin-build > > diff --git a/Osstest/BuildSupport.pm b/Osstest/BuildSupport.pm > index 933f6e1..76a3feb 100644 > --- a/Osstest/BuildSupport.pm > +++ b/Osstest/BuildSupport.pm > @@ -43,6 +43,10 @@ BEGIN { > xendist > $xendist > > + divide_xen_build > + trapping > + die_if_fail > + > submodulefixup submodule_have submodule_find > > ); > @@ -84,6 +88,50 @@ sub xendist () { > ($ho, 'xendist', '', $r{"buildjob"}); > } > > +sub divide_xen_build ($$) { > + my ($subdir, $postfix) = @_; > + # Only move hv to xeninstall, so that we can have > + # xenpolicy in tools tarball. > + # > + # The files inside boot/ after `make dist' are > + # xen-$XEN_VERSION: Xen binary > + # xen.gz/xen: symlink to xen-$XEN_VERSION > + # xen-$MAJOR: symlink to xen-$XEN_VERSION > + # xen-$MAJOR.$MINOR: symlink to xen-$XEN_VERSION > + # xen-sym-$XEN_VERSION: Xen symbol > + # xenpolicy-$XEN_VERSION: flask policy binary if xsm is enabled > + # > + # So the following snippet will leave xenpolicy* in > + # install/boot and get packaged to tools tarball. > + target_cmd_build($ho, 100, $builddir, <<END); > + cd $subdir > + mkdir xen$postfix > + for f in *$postfix; do > + mkdir -p \$f/lib > + done > + if test -d $postfix/boot; then > + if test -f $postfix/boot/xen.gz || test -f $postfix/boot/xen; > then > + mkdir xen$postfix/boot > + mvfiles=`find $postfix/boot -name 'xen[a-z]*' -prune -o > -name 'xen*' -print` > + mv \$mvfiles xen$postfix/boot/. > + fi > + fi > +END > +} > + > +our @probs; > + > +sub trapping ($) { > + my ($sub) = @_; > + my $tok= eval { $sub->(); 1; }; > + if (!$tok) { push @probs, $@; print STDERR "failure (trapped): $@\n"; } > +} > + > +sub die_if_fail () { > + die "*** something failed:\n\n".(join "\n\n",@probs)."\n** something > failed" > + if @probs; > +} > + > #----- submodules ----- > > sub submodulefixup ($$$$) { > diff --git a/ap-common b/ap-common > index 64749e3..6e1c472 100644 > --- a/ap-common > +++ b/ap-common > @@ -47,6 +47,8 @@ > # rumpsrc-related runvars needed only for old rumpuser-xen > # (ie ones which need $bodges=1 in ts-rumpuserxen-build) > > +: ${TREE_RAISIN:=git://xenbits.xen.org/raisin.git} > + > : ${TREE_SEABIOS_UPSTREAM:=git://git.seabios.org/seabios.git} > : ${PUSH_TREE_SEABIOS:=$XENBITS:/home/xen/git/osstest/seabios.git} > : ${BASE_TREE_SEABIOS:=git://xenbits.xen.org/osstest/seabios.git} > diff --git a/mfi-common b/mfi-common > index 16fc8c5..d75823d 100644 > --- a/mfi-common > +++ b/mfi-common > @@ -148,6 +148,22 @@ create_build_jobs () { > *) enable_ovmf=true; > esac > > + case "$xenbranch" in > + xen-3.*-testing) enable_raisin=false;; > + xen-4.0-testing) enable_raisin=false;; > + xen-4.1-testing) enable_raisin=false;; > + xen-4.2-testing) enable_raisin=false;; > + xen-4.3-testing) enable_raisin=false;; > + xen-4.4-testing) enable_raisin=false;; > + xen-4.5-testing) enable_raisin=false;; How about > + xen-4.[0-5]-testing) enable_raisin=false;; ? > @@ -215,6 +231,31 @@ create_build_jobs () { > > fi > > + if [ "x$REVISION_RAISIN" != xdisable ] && [ "$enable_raisin" = "true" ]; > then > + > + ./cs-job-create $flight build-$arch-raisin build-raisin > \ > + arch=$arch > \ > + tree_xen=$TREE_XEN > \ > + $RUNVARS $BUILD_RUNVARS $BUILD_RAISIN_RUNVARS $arch_runvars \ > + $suite_runvars > \ > + host_hostflags=$build_hostflags > \ > + buildjob=${bfi}build-$arch > \ > + tree_raisin=$TREE_RAISIN > \ > + tree_qemuu=$TREE_QEMU_UPSTREAM > \ > + tree_qemu=$TREE_QEMU > \ > + tree_seabios=$TREE_SEABIOS > \ > + tree_libvirt=$TREE_LIBVIRT > \ > + tree_ovmf=$TREE_OVMF > \ > + revision_xen=$REVISION_XEN > \ > + revision_qemu=$REVISION_QEMU > \ > + revision_qemuu=$REVISION_QEMU_UPSTREAM > \ > + revision_seabios=$REVISION_SEABIOS > \ > + revision_ovmf=$REVISION_OVMF > \ > + revision_libvirt=$REVISION_LIBVIRT > \ > + > revision_raisin=${REVISION_RAISIN:-${DEFAULT_REVISION_RAISIN}}\ > + > + fi > + > if branch_wants_rumpkernel_tests; then > > case $arch in > diff --git a/sg-run-job b/sg-run-job > index eae159d..449118d 100755 > --- a/sg-run-job > +++ b/sg-run-job > @@ -346,6 +346,7 @@ 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 need-hosts/build-raisin {} { return BUILD } > > proc run-job/build {} { > run-ts . = ts-xen-build > @@ -364,6 +365,10 @@ proc run-job/build-rumpuserxen {} { > run-ts . = ts-xen-build + host tools > } > > +proc run-job/build-raisin {} { > + run-ts . = ts-raisin-build > +} > + > proc prepare-build-host {} { > global jobinfo > run-ts broken = ts-hosts-allocate + host > diff --git a/ts-raisin-build b/ts-raisin-build > new file mode 100755 > index 0000000..85f12d4 > --- /dev/null > +++ b/ts-raisin-build > @@ -0,0 +1,128 @@ > +#!/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 File::Path; > +use POSIX; > +use Osstest::TestSupport; > +use Osstest::BuildSupport; > + > +tsreadconfig(); > +selectbuildhost(\@ARGV); > +# remaining arguments are passed as targets to "make" > +builddirsprops(); > + > +my $raisindir="$builddir/raisin"; > + > +sub checkout () { > + prepbuilddirs(); > + build_clone($ho, 'raisin', $builddir, 'raisin'); > + > + target_cmd_build($ho, 100, $builddir, <<END. > + cd $raisindir > + cp defconfig config > + >>config > + > + echo >>config MAKE=\\"make $makeflags\\" > + echo >>config PREFIX=\\"/usr\\" > + echo >>config DESTDIR=dist > + echo >>config ENABLED_COMPONENTS=\\"seabios ovmf xen qemu > qemu_traditional libvirt\\" > +END > + (nonempty($r{tree_xen}) && nonempty($r{revision_xen}) ? <<END > : ''). > + echo >>config XEN_URL=\\"$r{tree_xen}\\" > + echo >>config XEN_REVISION=\\"$r{revision_xen}\\" > +END > + (nonempty($r{tree_qemuu}) && nonempty($r{revision_qemuu}) ? > <<END : ''). > + echo >>config QEMU_URL=\\"$r{tree_qemuu}\\" > + echo >>config QEMU_REVISION=\\"$r{revision_qemuu}\\" > +END > + (nonempty($r{tree_qemu}) && nonempty($r{revision_qemu}) ? > <<END : ''). > + echo >>config QEMU_TRADITIONAL_URL=\\"$r{tree_qemu}\\" > + echo >>config QEMU_TRADITIONAL_REVISION=\\"$r{revision_qemu}\\" > +END > + (nonempty($r{tree_seabios}) && nonempty($r{revision_seabios}) > ? <<END : ''). > + echo >>config SEABIOS_URL=\\"$r{tree_seabios}\\" > + echo >>config SEABIOS_REVISION=\\"$r{revision_seabios}\\" > +END > + (nonempty($r{tree_libvirt}) && nonempty($r{revision_libvirt}) > ? <<END : ''). > + echo >>config LIBVIRT_URL=\\"$r{tree_libvirt}\\" > + echo >>config LIBVIRT_REVISION=\\"$r{revision_libvirt}\\" > +END > + (nonempty($r{tree_ovmf}) && nonempty($r{revision_ovmf}) ? > <<END : '') > + echo >>config OVMF_URL=\\"$r{tree_ovmf}\\" > + echo >>config OVMF_REVISION=\\"$r{revision_ovmf}\\" > +END > + ); > +} > + > +sub build () { > + target_cmd_build($ho, 9000, $builddir, <<END); > + cd $raisindir > + ./raise -n build > +END > +#/; > +} > + > +sub checkoutput () { > + target_cmd_build($ho, 100, $builddir, <<END); > + cd $raisindir/dist > + ls boot/xen.gz > + ls usr/sbin/xenstored > + ls usr/sbin/xenconsoled > + ls usr/lib/libxenlight.so > + ls usr/sbin/xl > + ls usr/lib/xen/boot/hvmloader > + ls usr/lib/xen/bin/qemu-dm > + ls usr/lib/xen/bin/qemu-system-i386 > + ls usr/sbin/libvirtd > +END > +#/; > +} > + > +sub collectversions () { > + store_revision($ho, 'xen', "$raisindir/xen-dir", 1); > + store_revision($ho, 'qemu', "$raisindir/qemu-traditional-dir", 1); > + store_revision($ho, 'qemuu', "$raisindir/qemu-dir", 1); > + store_revision($ho, 'seabios', "$raisindir/seabios-dir", 1); > + store_revision($ho, 'ovmf', "$raisindir/ovmf-dir", 1); > + store_revision($ho, 'libvirt', "$raisindir/libvirt-dir", 1); > +} > + > +sub stash () { > + foreach my $part ('', 'xen') { > + built_stash($ho, $builddir, > + "raisin/${part}dist", > + "${part}dist"); > + } > + built_stash_file($ho, $builddir, "xen-syms", > "raisin/xen-dir/xen/xen-syms", 1); > + built_stash_file($ho, $builddir, "raisin-config", "raisin/config", 1); > + built_stash_file($ho, $builddir, "seabios-config", > + "raisin/seabios-dir/.config", 1); > + built_compress_stashed("xen-syms"); > +} > + > + > +checkout(); > +trapping(\&build); > +trapping(\&checkoutput); > +trapping(\&collectversions); > +divide_xen_build('raisin', 'dist'); > +stash(); > +die_if_fail(); > + > diff --git a/ts-xen-build b/ts-xen-build > index e757f68..10fc95b 100755 > --- a/ts-xen-build > +++ b/ts-xen-build > @@ -145,36 +145,6 @@ sub collectversions () { > store_revision($ho, 'ovmf', "$tools/firmware/ovmf-dir", 1); > } > > -sub divide () { > - # Only move hv to xeninstall, so that we can have > - # xenpolicy in tools tarball. > - # > - # The files inside boot/ after `make dist' are > - # xen-$XEN_VERSION: Xen binary > - # xen.gz/xen: symlink to xen-$XEN_VERSION > - # xen-$MAJOR: symlink to xen-$XEN_VERSION > - # xen-$MAJOR.$MINOR: symlink to xen-$XEN_VERSION > - # xen-sym-$XEN_VERSION: Xen symbol > - # xenpolicy-$XEN_VERSION: flask policy binary if xsm is enabled > - # > - # So the following snippet will leave xenpolicy* in > - # install/boot and get packaged to tools tarball. > - target_cmd_build($ho, 100, $builddir, <<END); > - cd xen/dist > - mkdir xeninstall > - for f in *install; do > - mkdir -p \$f/lib > - done > - if test -d install/boot; then > - if test -f install/boot/xen.gz || test -f install/boot/xen; then > - mkdir xeninstall/boot > - mvfiles=`find install/boot -name 'xen[a-z]*' -prune -o -name > 'xen*' -print` > - mv \$mvfiles xeninstall/boot/. > - fi > - fi > -END > -} > - > sub stash () { > foreach my $part ('', 'xen') { > built_stash($ho, $builddir, > @@ -212,22 +182,12 @@ END > $chk->finish(); > } > > -our @probs; > - > -sub trapping ($) { > - my ($sub) = @_; > - my $tok= eval { $sub->(); 1; }; > - if (!$tok) { push @probs, $@; print STDERR "failure (trapped): $@\n"; } > -} > - > checkout(); > > trapping(\&build); > trapping(\&collectversions); > +die_if_fail(); > > -die "*** something failed:\n\n".(join "\n\n",@probs)."\n** something failed" > - if @probs; > - > -divide(); > +divide_xen_build('xen/dist', 'install'); > stash(); > checkversions(); > -- > 1.7.10.4 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |