diff options
Diffstat (limited to 'src/main')
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) { |