From 3de19487d90a8035c78af4668a953d7330845705 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 27 Jan 2016 14:45:35 +0100 Subject: replace 'initrepo' with more fine-grained 'status' instead of a simple bool, we now have five states: preview, active, addon, obsolete, and ignore (the default). the default includes the first three. the CI system is expected to use --module-subset=all,-ignore to include everything that is expected to build (in some configurations). Change-Id: Ifb43412054a8e42db0425f24f8e53acfce363caa Reviewed-by: Simon Hausmann --- init-repository | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) (limited to 'init-repository') diff --git a/init-repository b/init-repository index f0407f63..966e0c16 100755 --- a/init-repository +++ b/init-repository @@ -71,9 +71,12 @@ Options: --module-subset=,... Only initialize the specified subset of modules given as the argument. Specified modules must already exist in .gitmodules. The - string "all" results in cloning all known modules. The default is - the set of maintained modules. Module names may be prefixed with a - dash to exclude them from a bigger set. + string "all" results in cloning all known modules. The strings + "essential", "addon", "preview", "obsolete", and "ignore" refer to + classes of modules; "default" maps to "essential,addon,preview", + which corresponds with the set of maintained modules and is also + the default set. Module names may be prefixed with a dash to + exclude them from a bigger set, e.g. "all,-ignore". --no-update Skip the `git submodule update' command. @@ -234,6 +237,7 @@ sub parse_arguments # Replace any double trailing slashes from end of mirror $self->{'mirror-url'} =~ s{//+$}{/}; + $self->{'module-subset'} =~ s/\bdefault\b/preview,essential,addon/; $self->{'module-subset'} = [ split(/,/, $self->{'module-subset'}) ]; return; @@ -272,6 +276,13 @@ sub git_submodule_init return; } +use constant { + STS_PREVIEW => 1, + STS_ESSENTIAL => 2, + STS_ADDON => 3, + STS_OBSOLETE => 4 +}; + sub git_clone_all_submodules { my ($self, $my_repo_base, $co_branch, @subset) = @_; @@ -296,8 +307,20 @@ sub git_clone_all_submodules $subbases{$mod} = $base; } elsif ($2 eq "update") { push @subset, '-'.$1 if ($3 eq 'none'); - } elsif ($2 eq "initrepo") { - $subinits{$1} = ($3 eq "yes" or $3 eq "true"); + } elsif ($2 eq "status") { + if ($3 eq "preview") { + $subinits{$1} = STS_PREVIEW; + } elsif ($3 eq "essential") { + $subinits{$1} = STS_ESSENTIAL; + } elsif ($3 eq "addon") { + $subinits{$1} = STS_ADDON; + } elsif ($3 eq "obsolete") { + $subinits{$1} = STS_OBSOLETE; + } elsif ($3 eq "ignore") { + delete $subinits{$1}; + } else { + die("Invalid subrepo status '$3' for '$1'.\n"); + } } } @@ -305,8 +328,14 @@ sub git_clone_all_submodules foreach my $mod (@subset) { if ($mod eq "all") { map { $include{$_} = 1; } keys %subbases; - } elsif ($mod eq "default") { - map { $include{$_} = 1; } grep { $subinits{$_} } keys %subbases; + } elsif ($mod eq "essential") { + map { $include{$_} = 1; } grep { ($subinits{$_} || 0) eq STS_ESSENTIAL } keys %subbases; + } elsif ($mod eq "addon") { + map { $include{$_} = 1; } grep { ($subinits{$_} || 0) eq STS_ADDON } keys %subbases; + } elsif ($mod eq "preview") { + map { $include{$_} = 1; } grep { ($subinits{$_} || 0) eq STS_PREVIEW } keys %subbases; + } elsif ($mod eq "obsolete") { + map { $include{$_} = 1; } grep { ($subinits{$_} || 0) eq STS_OBSOLETE } keys %subbases; } elsif ($mod =~ s/^-//) { delete $include{$mod}; } else { -- cgit v1.2.3 From d1d52b5c1e40bdc94431ab303fa6368b12fe4f53 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 27 Jan 2016 15:42:46 +0100 Subject: properly complain about invalid entries in --module-subset Change-Id: I13ec7a6acdc8a47efea14bfabf0413d8a3570870 Reviewed-by: Simon Hausmann --- init-repository | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'init-repository') diff --git a/init-repository b/init-repository index 966e0c16..ae3f0495 100755 --- a/init-repository +++ b/init-repository @@ -337,8 +337,12 @@ sub git_clone_all_submodules } elsif ($mod eq "obsolete") { map { $include{$_} = 1; } grep { ($subinits{$_} || 0) eq STS_OBSOLETE } keys %subbases; } elsif ($mod =~ s/^-//) { + print "Warning: excluding non-existent module '$mod'.\n" + if (!defined($subdirs{$mod})); delete $include{$mod}; } else { + die("Error: module subset names non-existent '$mod'.\n") + if (!defined($subdirs{$mod})); $include{$mod} = 1; } } -- cgit v1.2.3