[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH OSSTEST v3] ts-libvirt-build: use Osstest::BuildSupport::submodulefixup
On Mon, 2015-01-05 at 15:36 +0000, Ian Campbell wrote: > Instead of cloning gnulib manually which can break if upstream gnulib > gets ahead of libvirt.git (which applies patches on the fly etc). By > using submodulefixup we automatically DTRT and use the version of > gnulib specified by the libvirt.git submodule metadata, but with a > runvar override if necessary. > > This also removes a whole bunch of faffing in ap-*, cr-daily-branch > and mfi-common to get the version of gnulib to use, which was always a > bit of a wart (ungated for one thing...). > > We continue to use --no-git and GNULIB_SRCDIR because otherwise > autogen.sh (via bootstrap) will force its own version, overwriting > what submodulefixup has done. For this we need a way to get the hash > representing the module, so introduce submodule_find (and rework > submodule_have in terms of it). > > Tested in standalone mode with build-amd64-libvirt and > build-amd64-rumpuserxen (because I touched submodule_have, AFAICT the > bodges were not run). The libvirt build was tested both with the > automatic revisions and with: > revision_libvirt=2360fe5d24175835d3f5fd1c7e8e6e13addab629 > revision_libvirt_gnulib=16518d9ed8f25d3e53931dd1aa343072933e4604 > (used in successful libvirt flight 32648), in both cases confirming > that the build used the desired versions. > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Ian J acked on IRC so I have pushed to osstests' pretest branch. Ian. > --- > v2: Honour revision_libvirt_gnulib. > v3: Fix submodule_have, defined(&sub) is always true because defined > is special wrt &sub. > --- > Osstest/BuildSupport.pm | 13 ++++++++++--- > ap-common | 3 --- > ap-fetch-version | 4 ---- > ap-fetch-version-old | 4 ---- > ap-print-url | 3 --- > ap-push | 5 ----- > cr-daily-branch | 4 ---- > mfi-common | 1 - > ts-libvirt-build | 20 +++++++++++--------- > 9 files changed, 21 insertions(+), 36 deletions(-) > > diff --git a/Osstest/BuildSupport.pm b/Osstest/BuildSupport.pm > index 874e27e..933f6e1 100644 > --- a/Osstest/BuildSupport.pm > +++ b/Osstest/BuildSupport.pm > @@ -43,7 +43,7 @@ BEGIN { > xendist > $xendist > > - submodulefixup submodule_have > + submodulefixup submodule_have submodule_find > > ); > %EXPORT_TAGS = ( ); > @@ -145,9 +145,16 @@ sub submodulefixup ($$$$) { > return \@submodules; > } > > -sub submodule_have ($$) { > +sub submodule_find ($$) { > my ($submodules, $ourname) = @_; > - return !!grep { $_->{OurName} eq $ourname } @$submodules; > + my @submods = grep { $_->{OurName} eq $ourname } @$submodules; > + return undef unless @submods; > + die "more than one $ourname?" if @submods ne 1; > + return $submods[0]; > +} > + > +sub submodule_have ($$) { > + return !!&submodule_find; > } > > 1; > diff --git a/ap-common b/ap-common > index ff50754..96cbd14 100644 > --- a/ap-common > +++ b/ap-common > @@ -37,8 +37,6 @@ > : ${PUSH_TREE_LIBVIRT:=$XENBITS:/home/xen/git/libvirt.git} > : ${BASE_TREE_LIBVIRT:=git://xenbits.xen.org/libvirt.git} > > -: ${TREE_GNULIB_LIBVIRT:=$(besteffort_repo git://git.sv.gnu.org/gnulib.git)} > - > : ${TREE_RUMPUSERXEN:=https://github.com/rumpkernel/rumprun-xen} > : ${TREEVCS_RUMPUSERXEN:=git} > : ${BASE_TREE_RUMPUSERXEN:=git://xenbits.xen.org/rumpuser-xen.git} > @@ -77,7 +75,6 @@ fi > : ${LOCALREV_XEN:=daily-cron.$branch} > : ${LOCALREV_LINUX:=daily-cron.$branch} > : ${LOCALREV_LIBVIRT:=daily-cron.$branch} > -: ${LOCALREV_GNULIB_LIBVIRT:=daily-cron.$branch} > : ${LOCALREV_RUMPUSERXEN:=daily-cron.$branch} > : ${LOCALREV_SEABIOS:=daily-cron.$branch} > > diff --git a/ap-fetch-version b/ap-fetch-version > index 9c189b4..f6c65d8 100755 > --- a/ap-fetch-version > +++ b/ap-fetch-version > @@ -77,10 +77,6 @@ libvirt) > repo_tree_rev_fetch_git libvirt \ > $TREE_LIBVIRT master $LOCALREV_LIBVIRT > ;; > -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 > diff --git a/ap-fetch-version-old b/ap-fetch-version-old > index f3cf339..43c997c 100755 > --- a/ap-fetch-version-old > +++ b/ap-fetch-version-old > @@ -88,10 +88,6 @@ 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 > - ;; > seabios) > repo_tree_rev_fetch_git seabios \ > $BASE_TREE_SEABIOS xen-tested-master $BASE_LOCALREV_SEABIOS > diff --git a/ap-print-url b/ap-print-url > index a14d2a6..7b27e1e 100755 > --- a/ap-print-url > +++ b/ap-print-url > @@ -52,9 +52,6 @@ linuxfirmware) > libvirt) > echo $TREE_LIBVIRT > ;; > -gnulib-libvirt) > - echo $TREE_GNULIB_LIBVIRT > - ;; > rumpuserxen) > echo $TREE_RUMPUSERXEN > ;; > diff --git a/ap-push b/ap-push > index 9df900a..a2aa747 100755 > --- a/ap-push > +++ b/ap-push > @@ -88,11 +88,6 @@ 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 > - exit 1 > - ;; > seabios) > cd $repos/seabios > git push $TREE_SEABIOS $revision:refs/heads/xen-tested-master > diff --git a/cr-daily-branch b/cr-daily-branch > index 17bb2c9..fc663ce 100755 > --- a/cr-daily-branch > +++ b/cr-daily-branch > @@ -150,10 +150,6 @@ if [ "x$REVISION_LIBVIRT" = x ]; then > determine_version REVISION_LIBVIRT libvirt LIBVIRT > export REVISION_LIBVIRT > fi > -if [ "x$REVISION_GNULIB_LIBVIRT" = x ]; then > - determine_version REVISION_GNULIB_LIBVIRT gnulib-libvirt GNULIB_LIBVIRT > - export REVISION_GNULIB_LIBVIRT > -fi > if [ "x$REVISION_RUMPUSERXEN" = x ]; then > determine_version REVISION_RUMPUSERXEN rumpuserxen RUMPUSERXEN > export REVISION_RUMPUSERXEN > diff --git a/mfi-common b/mfi-common > index 5c4f5d5..e167606 100644 > --- a/mfi-common > +++ b/mfi-common > @@ -187,7 +187,6 @@ create_build_jobs () { > host_hostflags=$build_hostflags > \ > buildjob=${bfi}build-$arch > \ > tree_libvirt=$TREE_LIBVIRT > revision_libvirt=$REVISION_LIBVIRT\ > - tree_gnulib_libvirt=$TREE_GNULIB_LIBVIRT > revision_gnulib_libvirt=$REVISION_GNULIB_LIBVIRT\ > > fi > > diff --git a/ts-libvirt-build b/ts-libvirt-build > index 940c034..8c5d1fc 100755 > --- a/ts-libvirt-build > +++ b/ts-libvirt-build > @@ -25,6 +25,9 @@ tsreadconfig(); > selectbuildhost(\@ARGV); > builddirsprops(); > > +our %submodmap = qw(gnulib gnulib); > +our $submodules; > + > sub libvirtd_init (); > > sub checkout () { > @@ -32,7 +35,7 @@ sub checkout () { > xendist(); > > build_clone($ho, 'libvirt', $builddir, 'libvirt'); > - build_clone($ho, 'gnulib_libvirt', $builddir, 'gnulib-libvirt'); > + $submodules = submodulefixup($ho, 'libvirt', 'libvirt', \%submodmap); > } > > sub config() { > @@ -45,13 +48,17 @@ sub config() { > } > die "no xen prefix" unless $xenprefix; > > - # Uses $GNULIB_SRCDIR because ./autogen.sh doesn't propagate > - # --gnulib-srcdir to ./bootstap. > + # Uses --no-git because otherwise autogen.sh will undo > + # submodulefixup's attempts to honour > + # revision_libvirt_gnulib. This in turn requires that we specify > + # --gnulib-srcdir, but ./autogen.sh doesn't propagate > + # --gnulib-srcdir to ./bootstap so we use GNULIB_SRCDIR directly. > + my $gnulib = submodule_find($submodules, "gnulib"); > target_cmd_build($ho, 3600, $builddir, <<END); > cd libvirt > CFLAGS="-I$xenprefix/include/" \\ > LDFLAGS="-L$xenprefix/lib/ -Wl,-rpath-link=$xenprefix/lib/" \\ > - GNULIB_SRCDIR=$builddir/gnulib-libvirt \\ > + GNULIB_SRCDIR=$builddir/libvirt/$gnulib->{Path} \\ > ./autogen.sh --no-git \\ > --with-libxl --without-xen --without-xenapi > --without-selinux \\ > --without-lxc --without-vbox --without-uml \\ > @@ -83,15 +90,10 @@ END > END > } > > -sub collectversion_gnulib () { > - store_revision($ho, 'gnulib_libvirt', "$builddir/gnulib-libvirt", 1); > -} > - > checkout(); > config(); > build(); > install(); > -collectversion_gnulib(); > built_stash($ho, $builddir, 'dist', 'libvirtdist'); > > sub libvirtd_init () { _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |