[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.