[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH OSSTEST v3] ts-libvirt-build: use Osstest::BuildSupport::submodulefixup
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> --- 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 () { -- 2.1.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |