Move BuildView.Options to a new top-level class
This is in preparation for dismantling BuildView and merging the relevant
parts into AnalysisPhaseRunner.
PiperOrigin-RevId: 200391088
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 002c1fc..ea7710a 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.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 @@
* 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 @@
LoadingResult loadingResult,
BuildConfigurationCollection configurations,
List<String> aspects,
- Options viewOptions,
+ AnalysisOptions viewOptions,
boolean keepGoing,
int loadingPhaseThreads,
TopLevelArtifactContext topLevelOptions,
@@ -503,7 +425,7 @@
ExtendedEventHandler eventHandler,
LoadingResult loadingResult,
TopLevelArtifactContext topLevelOptions,
- BuildView.Options viewOptions,
+ AnalysisOptions viewOptions,
SkyframeAnalysisResult skyframeAnalysisResult,
Set<ConfiguredTarget> targetsToSkip,
List<TargetAndConfiguration> topLevelTargetsWithConfigs)
@@ -633,7 +555,7 @@
}
private void addExtraActionsIfRequested(
- Options viewOptions,
+ AnalysisOptions viewOptions,
Collection<ConfiguredTarget> configuredTargets,
Collection<AspectValue> aspects,
Set<Artifact> artifactsToBuild,
@@ -654,7 +576,7 @@
}
private NestedSet<Artifact> addExtraActionsFromTargets(
- BuildView.Options viewOptions,
+ AnalysisOptions viewOptions,
Collection<ConfiguredTarget> configuredTargets,
ExtendedEventHandler eventHandler) {
NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
@@ -709,7 +631,7 @@
}
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 @@
}
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";
- }
- }
}