diff options
author | Googler <noreply@google.com> | 2015-11-19 16:09:49 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2015-11-19 16:48:02 +0000 |
commit | ec2fcee457a949d58295d3c4dade3684f11350e0 (patch) | |
tree | 62128059478b6b2fbd0ee362f55d2e2b76137341 | |
parent | a811460b2d1d1b69dc7f28cf838bfa4d7f629f70 (diff) |
--output_groups overrides default output groups if set.
If --output_groups is specified without a + or a - sign, it removes the
default output groups used for artifact selection from targets.
* Use output_groups=+<group_name> to add an output group,
* Use output_groups=-<group_name> to remove an output group.
--
MOS_MIGRATED_REVID=108247894
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java | 23 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/commands/MobileInstallCommand.java | 6 |
2 files changed, 20 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java index ef5a23c8ee..7298301494 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java @@ -20,6 +20,7 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Sets; import com.google.devtools.build.lib.Constants; import com.google.devtools.build.lib.analysis.BuildView; import com.google.devtools.build.lib.analysis.OutputGroupProvider; @@ -42,7 +43,6 @@ import com.google.devtools.common.options.OptionsParsingException; import com.google.devtools.common.options.OptionsProvider; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.UUID; @@ -207,7 +207,12 @@ public class BuildRequest implements OptionsClassProvider { allowMultiple = true, defaultValue = "", category = "undocumented", - help = "Specifies, which output groups of the top-level target to build.") + help = "Specifies which output groups of the top-level targets to build. " + + "If omitted, a default set of output groups are built." + + "When specified the default set is overridden." + + "However you may use --output_groups=+<output_group> " + + "or --output_groups=-<output_group> " + + "to instead modify the set of output groups.") public List<String> outputGroups; @Option(name = "show_result", @@ -524,10 +529,20 @@ public class BuildRequest implements OptionsClassProvider { } private ImmutableSortedSet<String> determineOutputGroups() { - Set<String> current = new HashSet<>(OutputGroupProvider.DEFAULT_GROUPS); + Set<String> current = Sets.newHashSet(); + boolean overridesDefaultOutputGroups = false; for (String outputGroup : getBuildOptions().outputGroups) { - if (outputGroup.startsWith("-")) { + overridesDefaultOutputGroups |= !(outputGroup.startsWith("+") || outputGroup.startsWith("-")); + } + if (!overridesDefaultOutputGroups) { + current.addAll(OutputGroupProvider.DEFAULT_GROUPS); + } + + for (String outputGroup : getBuildOptions().outputGroups) { + if (outputGroup.startsWith("+")) { + current.add(outputGroup.substring(1)); + } else if (outputGroup.startsWith("-")) { current.remove(outputGroup.substring(1)); } else { current.add(outputGroup); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/MobileInstallCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/MobileInstallCommand.java index 44fabe901e..67ad56bd55 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/MobileInstallCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/MobileInstallCommand.java @@ -14,7 +14,6 @@ package com.google.devtools.build.lib.runtime.commands; import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.analysis.OutputGroupProvider; import com.google.devtools.build.lib.buildtool.BuildRequest; import com.google.devtools.build.lib.buildtool.BuildTool; import com.google.devtools.build.lib.events.Event; @@ -95,10 +94,7 @@ public class MobileInstallCommand implements BlazeCommand { optionsParser.parse(OptionPriority.COMMAND_LINE, "Options required by the mobile-install command", - ImmutableList.of( - "--output_groups=-" + OutputGroupProvider.DEFAULT, - "--output_groups=-" + OutputGroupProvider.HIDDEN_TOP_LEVEL, - "--output_groups=" + outputGroup)); + ImmutableList.of("--output_groups=" + outputGroup)); } catch (OptionsParsingException e) { throw new IllegalStateException(e); } |