|
[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 |