From: Ian Jackson <ian.jackson@eu.citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Ian Jackson <Ian.Jackson@eu.citrix.com>,
Ian Campbell <ian.campbell@citrix.com>
Subject: [OSSTEST PATCH 04/13] BuildSupport: Provide some support for git submodules
Date: Fri, 16 May 2014 19:01:31 +0100 [thread overview]
Message-ID: <1400263300-22903-5-git-send-email-ian.jackson@eu.citrix.com> (raw)
In-Reply-To: <1400263300-22903-1-git-send-email-ian.jackson@eu.citrix.com>
* Provide a new "submodulefixup" function which, given a cloned
tree which has submodules:
- massages the .gitmodules file according to the tree_*
runvars and massage_url
- arranges for the submodules to be fetched and checked out
- stores the revisions of the submodules, as necessary
- honours any revision_ tags for the submodules
- allows the caller to give the submodules names which are
suitable for use in runvars etc. (and might differ from
the names or paths used in the supermodule)
* In a submodule, .git is actually a file containing a reference
to a subdirectory of the main git tree. Cope with that.
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
Osstest/BuildSupport.pm | 60 +++++++++++++++++++++++++++++++++++++++++++++++
Osstest/TestSupport.pm | 2 +-
2 files changed, 61 insertions(+), 1 deletion(-)
diff --git a/Osstest/BuildSupport.pm b/Osstest/BuildSupport.pm
index 1b15557..9a43f00 100644
--- a/Osstest/BuildSupport.pm
+++ b/Osstest/BuildSupport.pm
@@ -43,6 +43,8 @@ BEGIN {
xendist
$xendist
+ submodulefixup
+
);
%EXPORT_TAGS = ( );
@@ -90,4 +92,62 @@ sub xendist () {
target_cmd($ho, "tar -C $xendist -hzxf $distcopy", 300);
}
+#----- submodules -----
+
+sub submodulefixup ($$$$) {
+ my ($ho, $subdir, $basewhich, $submodmap) = @_;
+
+ my @submodules;
+ target_editfile($ho, "$builddir/$subdir/.gitmodules",
+ "$subdir-gitmodules", sub {
+ my $submod;
+ my $log1 = sub { logm("submodule $submod->{OurName} @_"); };
+ while (<::EI>) {
+ if (m/^\[submodule \"(.*)\"\]$/) {
+ $submod = { TheirName => $1 },
+ push @submodules, $submod;
+ my $mapped = $submodmap->{$1};
+ die "unknown submodule $1" unless defined $mapped;
+ $submod->{OurName} = $mapped;
+ $log1->("($submod->{TheirName}):");
+ } elsif (m/^\s*path\s*=\s*(\S+)/) {
+ die unless $submod;
+ $submod->{Path} = $1;
+ $log1->(" subpath=$submod->{Path}");
+ } elsif (m/^(\s*url\s*\=\s*)(\S+)/) {
+ die unless $submod;
+ my $l = $1;
+ my $u = $submod->{OrgUrl} = $2;
+ my $urv = "tree_${basewhich}_$submod->{OurName}";
+ if (length $r{$urv}) {
+ $log1->(" overriding url=$u with runvar $urv=$r{$urv}");
+ $u = $r{$urv};
+ } else {
+ $log1->(" recording url=$u");
+ store_runvar($urv, $u);
+ }
+ my $nu = $submod->{Url} = git_massage_url($u);
+ $_ = "${l}${nu}\n";
+ }
+ print ::EO or die $!;
+ }
+ });
+
+ target_cmd_build($ho, 60,"$builddir/$subdir","git submodule init");
+ target_cmd_build($ho,3600,"$builddir/$subdir","git submodule update");
+
+ foreach my $submod (@submodules) {
+ my $wantrev = $r{"revision_${basewhich}_$submod->{OurName}"};
+ if (length $wantrev) {
+ target_cmd_build($ho,200,"$builddir/$subdir/$submod->{Path}",
+ "git reset --hard $wantrev");
+ } else {
+ store_revision($ho, "${basewhich}_$submod->{OurName}",
+ "$builddir/$subdir/$submod->{Path}");
+ }
+ }
+
+ return \@submodules;
+}
+
1;
diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index 1492d9f..49bb175 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -1087,7 +1087,7 @@ sub dir_identify_vcs ($$) {
set -e
if ! test -e $dir; then echo none; exit 0; fi
cd $dir
- (test -d .git && echo git) ||
+ (test -e .git && echo git) ||
(test -d .hg && echo hg) ||
(echo >&2 'unable to determine vcs'; fail)
END
--
1.7.10.4
next prev parent reply other threads:[~2014-05-16 18:02 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-16 18:01 [OSSTEST PATCH 00/13] Test rump kernels Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 01/13] TestSupport: Provide target_editfile Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 02/13] git_massage_url: Make idempotent Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 03/13] BuildSupport, ts-*-build: Remove some clone-and-hack Ian Jackson
2014-05-16 18:01 ` Ian Jackson [this message]
2014-05-16 18:01 ` [OSSTEST PATCH 05/13] TestSupport: Break out target_jobdir Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 06/13] TestSupport: Break out target_extract_jobdistpath_subdir Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 07/13] target_jobdir: Create the directory Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 08/13] guest_umount_lv: Tolerate lack of volume group Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 09/13] prepareguest: Tolerate $mb=undef Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 10/13] mfi-common: Honour REVISION_LIBVIRT=disable Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 11/13] rump kernels: Provide a build job Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 12/13] rump kernels: Provide two test jobs Ian Jackson
2014-05-16 18:01 ` [OSSTEST PATCH 13/13] rump kernels: Create a "branch" for rump kernel tests Ian Jackson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1400263300-22903-5-git-send-email-ian.jackson@eu.citrix.com \
--to=ian.jackson@eu.citrix.com \
--cc=ian.campbell@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).