aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-11-19 16:09:49 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-11-19 16:48:02 +0000
commitec2fcee457a949d58295d3c4dade3684f11350e0 (patch)
tree62128059478b6b2fbd0ee362f55d2e2b76137341
parenta811460b2d1d1b69dc7f28cf838bfa4d7f629f70 (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.java23
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/MobileInstallCommand.java6
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);
}