aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AnalysisOptions.java92
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java119
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java2
6 files changed, 106 insertions, 123 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisOptions.java
new file mode 100644
index 0000000000..26803f8294
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisOptions.java
@@ -0,0 +1,92 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.analysis;
+
+import com.google.devtools.build.lib.util.RegexFilter;
+import com.google.devtools.common.options.Option;
+import com.google.devtools.common.options.OptionDocumentationCategory;
+import com.google.devtools.common.options.OptionEffectTag;
+import com.google.devtools.common.options.OptionsBase;
+
+/**
+ * Options that affect the <i>mechanism</i> of analysis. These are distinct from {@link
+ * com.google.devtools.build.lib.analysis.config.BuildOptions}, which affect the <i>value</i> of a
+ * BuildConfiguration.
+ */
+public class AnalysisOptions extends OptionsBase {
+ @Option(
+ name = "analysis_warnings_as_errors",
+ deprecationWarning =
+ "analysis_warnings_as_errors is now a no-op and will be removed in"
+ + " an upcoming Blaze release",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+ effectTags = {OptionEffectTag.NO_OP},
+ help = "Treat visible analysis warnings as errors."
+ )
+ public boolean analysisWarningsAsErrors;
+
+ @Option(
+ name = "discard_analysis_cache",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ help =
+ "Discard the analysis cache immediately after the analysis phase completes."
+ + " Reduces memory usage by ~10%, but makes further incremental builds slower."
+ )
+ public boolean discardAnalysisCache;
+
+ @Option(
+ name = "experimental_extra_action_filter",
+ defaultValue = "",
+ converter = RegexFilter.RegexFilterConverter.class,
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ help = "Filters set of targets to schedule extra_actions for."
+ )
+ public RegexFilter extraActionFilter;
+
+ @Option(
+ name = "experimental_extra_action_top_level_only",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ help = "Only schedules extra_actions for top level targets."
+ )
+ public boolean extraActionTopLevelOnly;
+
+ @Option(
+ name = "version_window_for_dirty_node_gc",
+ defaultValue = "0",
+ documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ help =
+ "Nodes that have been dirty for more than this many versions will be deleted"
+ + " from the graph upon the next update. Values must be non-negative long integers,"
+ + " or -1 indicating the maximum possible window."
+ )
+ public long versionWindowForDirtyNodeGc;
+
+ @Deprecated
+ @Option(
+ name = "experimental_interleave_loading_and_analysis",
+ defaultValue = "true",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ help = "No-op."
+ )
+ public boolean interleaveLoadingAndAnalysis;
+} \ No newline at end of file
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 002c1fc98f..ea7710ad12 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -100,12 +100,6 @@ import com.google.devtools.build.lib.util.Pair;
import com.google.devtools.build.lib.util.RegexFilter;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.WalkableGraph;
-import com.google.devtools.common.options.Converter;
-import com.google.devtools.common.options.Option;
-import com.google.devtools.common.options.OptionDocumentationCategory;
-import com.google.devtools.common.options.OptionEffectTag;
-import com.google.devtools.common.options.OptionsBase;
-import com.google.devtools.common.options.OptionsParsingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -164,78 +158,6 @@ import javax.annotation.Nullable;
* invariants.
*/
public class BuildView {
-
- /**
- * Options that affect the <i>mechanism</i> of analysis. These are distinct from {@link
- * com.google.devtools.build.lib.analysis.config.BuildOptions}, which affect the <i>value</i> of a
- * BuildConfiguration.
- */
- public static class Options extends OptionsBase {
- @Option(
- name = "analysis_warnings_as_errors",
- deprecationWarning =
- "analysis_warnings_as_errors is now a no-op and will be removed in"
- + " an upcoming Blaze release",
- defaultValue = "false",
- documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
- effectTags = {OptionEffectTag.NO_OP},
- help = "Treat visible analysis warnings as errors."
- )
- public boolean analysisWarningsAsErrors;
-
- @Option(
- name = "discard_analysis_cache",
- defaultValue = "false",
- documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
- effectTags = {OptionEffectTag.UNKNOWN},
- help =
- "Discard the analysis cache immediately after the analysis phase completes."
- + " Reduces memory usage by ~10%, but makes further incremental builds slower."
- )
- public boolean discardAnalysisCache;
-
- @Option(
- name = "experimental_extra_action_filter",
- defaultValue = "",
- converter = RegexFilter.RegexFilterConverter.class,
- documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
- effectTags = {OptionEffectTag.UNKNOWN},
- help = "Filters set of targets to schedule extra_actions for."
- )
- public RegexFilter extraActionFilter;
-
- @Option(
- name = "experimental_extra_action_top_level_only",
- defaultValue = "false",
- documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
- effectTags = {OptionEffectTag.UNKNOWN},
- help = "Only schedules extra_actions for top level targets."
- )
- public boolean extraActionTopLevelOnly;
-
- @Option(
- name = "version_window_for_dirty_node_gc",
- defaultValue = "0",
- documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
- effectTags = {OptionEffectTag.UNKNOWN},
- help =
- "Nodes that have been dirty for more than this many versions will be deleted"
- + " from the graph upon the next update. Values must be non-negative long integers,"
- + " or -1 indicating the maximum possible window."
- )
- public long versionWindowForDirtyNodeGc;
-
- @Deprecated
- @Option(
- name = "experimental_interleave_loading_and_analysis",
- defaultValue = "true",
- documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
- effectTags = {OptionEffectTag.UNKNOWN},
- help = "No-op."
- )
- public boolean interleaveLoadingAndAnalysis;
- }
-
private static final Logger logger = Logger.getLogger(BuildView.class.getName());
private final BlazeDirectories directories;
@@ -333,7 +255,7 @@ public class BuildView {
LoadingResult loadingResult,
BuildConfigurationCollection configurations,
List<String> aspects,
- Options viewOptions,
+ AnalysisOptions viewOptions,
boolean keepGoing,
int loadingPhaseThreads,
TopLevelArtifactContext topLevelOptions,
@@ -503,7 +425,7 @@ public class BuildView {
ExtendedEventHandler eventHandler,
LoadingResult loadingResult,
TopLevelArtifactContext topLevelOptions,
- BuildView.Options viewOptions,
+ AnalysisOptions viewOptions,
SkyframeAnalysisResult skyframeAnalysisResult,
Set<ConfiguredTarget> targetsToSkip,
List<TargetAndConfiguration> topLevelTargetsWithConfigs)
@@ -633,7 +555,7 @@ public class BuildView {
}
private void addExtraActionsIfRequested(
- Options viewOptions,
+ AnalysisOptions viewOptions,
Collection<ConfiguredTarget> configuredTargets,
Collection<AspectValue> aspects,
Set<Artifact> artifactsToBuild,
@@ -654,7 +576,7 @@ public class BuildView {
}
private NestedSet<Artifact> addExtraActionsFromTargets(
- BuildView.Options viewOptions,
+ AnalysisOptions viewOptions,
Collection<ConfiguredTarget> configuredTargets,
ExtendedEventHandler eventHandler) {
NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
@@ -709,7 +631,7 @@ public class BuildView {
}
private NestedSet<Artifact> addExtraActionsFromAspects(
- BuildView.Options viewOptions, Collection<AspectValue> aspects) {
+ AnalysisOptions viewOptions, Collection<AspectValue> aspects) {
NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
for (AspectValue aspect : aspects) {
ExtraActionArtifactsProvider provider =
@@ -1161,35 +1083,4 @@ public class BuildView {
}
return null;
}
-
- /**
- * A converter for loading phase thread count. Since the default is not a true constant, we create
- * a converter here to implement the default logic.
- */
- public static final class LoadingPhaseThreadCountConverter implements Converter<Integer> {
- @Override
- public Integer convert(String input) throws OptionsParsingException {
- if ("-1".equals(input)) {
- // Reduce thread count while running tests. Test cases are typically small, and large thread
- // pools vying for a relatively small number of CPU cores may induce non-optimal
- // performance.
- return System.getenv("TEST_TMPDIR") == null ? 200 : 5;
- }
-
- try {
- int result = Integer.decode(input);
- if (result < 0) {
- throw new OptionsParsingException("'" + input + "' must be at least -1");
- }
- return result;
- } catch (NumberFormatException e) {
- throw new OptionsParsingException("'" + input + "' is not an int");
- }
- }
-
- @Override
- public String getTypeDescription() {
- return "an integer";
- }
- }
}
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 35328c1908..263195a699 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,7 +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.devtools.build.lib.analysis.BuildView;
+import com.google.devtools.build.lib.analysis.AnalysisOptions;
import com.google.devtools.build.lib.analysis.OutputGroupInfo;
import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
@@ -75,7 +75,7 @@ public class BuildRequest implements OptionsClassProvider {
PackageCacheOptions.class,
SkylarkSemanticsOptions.class,
LoadingOptions.class,
- BuildView.Options.class,
+ AnalysisOptions.class,
ExecutionOptions.class,
KeepGoingOption.class,
LoadingPhaseThreadsOption.class);
@@ -202,8 +202,8 @@ public class BuildRequest implements OptionsClassProvider {
* Returns the set of command-line options related to the view specified for
* this request.
*/
- public BuildView.Options getViewOptions() {
- return getOptions(BuildView.Options.class);
+ public AnalysisOptions getViewOptions() {
+ return getOptions(AnalysisOptions.class);
}
/** Returns the value of the --keep_going option. */
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
index 3870931203..4ff1089da5 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
@@ -19,8 +19,8 @@ import com.google.common.base.Preconditions;
import com.google.common.eventbus.EventBus;
import com.google.devtools.build.lib.actions.PackageRootResolver;
import com.google.devtools.build.lib.actions.cache.ActionCache;
+import com.google.devtools.build.lib.analysis.AnalysisOptions;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
-import com.google.devtools.build.lib.analysis.BuildView.Options;
import com.google.devtools.build.lib.analysis.SkyframePackageRootResolver;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.DefaultsPackage;
@@ -622,7 +622,7 @@ public final class CommandEnvironment {
// Fail fast in the case where a Blaze command forgets to install the package path correctly.
skyframeExecutor.setActive(false);
// Let skyframe figure out how much incremental state it will be keeping.
- Options viewOptions = options.getOptions(Options.class);
+ AnalysisOptions viewOptions = options.getOptions(AnalysisOptions.class);
BuildRequestOptions requestOptions = options.getOptions(BuildRequestOptions.class);
skyframeExecutor.decideKeepIncrementalState(
runtime.getStartupOptionsProvider().getOptions(BlazeServerStartupOptions.class).batch,
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
index 4803aaf115..14b6c19c01 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
@@ -13,7 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.runtime.commands;
-import com.google.devtools.build.lib.analysis.BuildView;
+import com.google.devtools.build.lib.analysis.AnalysisOptions;
import com.google.devtools.build.lib.buildtool.BuildRequest;
import com.google.devtools.build.lib.buildtool.BuildRequestOptions;
import com.google.devtools.build.lib.buildtool.BuildTool;
@@ -45,7 +45,7 @@ import java.util.List;
ExecutionOptions.class,
LocalExecutionOptions.class,
PackageCacheOptions.class,
- BuildView.Options.class,
+ AnalysisOptions.class,
LoadingOptions.class,
KeepGoingOption.class,
LoadingPhaseThreadsOption.class
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
index 131c4912eb..a4eec29cf2 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
@@ -182,7 +182,7 @@ public final class SkyframeBuildView {
* Drops the analysis cache. If building with Skyframe, targets in {@code topLevelTargets} may
* remain in the cache for use during the execution phase.
*
- * @see com.google.devtools.build.lib.analysis.BuildView.Options#discardAnalysisCache
+ * @see com.google.devtools.build.lib.analysis.AnalysisOptions#discardAnalysisCache
*/
public void clearAnalysisCache(
Collection<ConfiguredTarget> topLevelTargets, Collection<AspectValue> topLevelAspects) {