Skip to content

Commit 1c4cb2c

Browse files
lberkicopybara-github
authored andcommitted
No public description
RELNOTES: None. PiperOrigin-RevId: 878603705 Change-Id: I1d93c4bbe3ab4295dfabd7baecf9fb141b7cf63b
1 parent 4fa5867 commit 1c4cb2c

File tree

7 files changed

+135
-225
lines changed

7 files changed

+135
-225
lines changed

src/main/java/com/google/devtools/build/lib/analysis/BuildView.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -329,10 +329,6 @@ public AnalysisResult update(
329329
if (buildConfigurationsCreatedCallback != null) {
330330
buildConfigurationsCreatedCallback.run(topLevelConfig);
331331
}
332-
if (remoteAnalysisCachingDependenciesProvider.mode().requiresBackendConnectivity()) {
333-
remoteAnalysisCachingDependenciesProvider.setTopLevelBuildOptions(
334-
topLevelConfigurationTrimmedOfTestOptions);
335-
}
336332
if (remoteAnalysisCachingDependenciesProvider.mode() == RemoteAnalysisCacheMode.DOWNLOAD) {
337333
try (SilentCloseable c = Profiler.instance().profile("skycache.metadataQuery")) {
338334
remoteAnalysisCachingDependenciesProvider.queryMetadataAndMaybeBailout();

src/main/java/com/google/devtools/build/lib/buildtool/AnalysisAndExecutionPhaseRunner.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import com.google.devtools.build.lib.analysis.BuildView.ExecutionSetup;
2525
import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
2626
import com.google.devtools.build.lib.analysis.config.BuildOptions;
27-
import com.google.devtools.build.lib.analysis.config.CoreOptions;
2827
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
2928
import com.google.devtools.build.lib.analysis.test.CoverageArtifactsKnownEvent;
3029
import com.google.devtools.build.lib.buildtool.buildevent.NoAnalyzeEvent;
@@ -40,7 +39,6 @@
4039
import com.google.devtools.build.lib.profiler.SilentCloseable;
4140
import com.google.devtools.build.lib.runtime.BlazeModule;
4241
import com.google.devtools.build.lib.runtime.CommandEnvironment;
43-
import com.google.devtools.build.lib.server.FailureDetails.BuildConfiguration.Code;
4442
import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
4543
import com.google.devtools.build.lib.skyframe.BuildResultListener;
4644
import com.google.devtools.build.lib.skyframe.RepositoryMappingValue.RepositoryMappingResolutionException;
@@ -53,8 +51,6 @@
5351
import com.google.devtools.build.lib.skyframe.serialization.analysis.RemoteAnalysisCachingDependenciesProvider;
5452
import com.google.devtools.build.lib.util.AbruptExitException;
5553
import com.google.devtools.build.lib.util.DetailedExitCode;
56-
import com.google.devtools.build.lib.util.RegexFilter;
57-
import com.google.devtools.common.options.OptionsParsingException;
5854
import java.util.List;
5955
import javax.annotation.Nullable;
6056

@@ -89,28 +85,6 @@ static AnalysisAndExecutionResult execute(
8985
InvalidConfigurationException,
9086
TestExecException,
9187
RepositoryMappingResolutionException {
92-
93-
// Compute the heuristic instrumentation filter if needed.
94-
if (request.needsInstrumentationFilter()) {
95-
try (SilentCloseable c = Profiler.instance().profile("Compute instrumentation filter")) {
96-
String instrumentationFilter =
97-
InstrumentationFilterSupport.computeInstrumentationFilter(
98-
env.getReporter(),
99-
// TODO(ulfjack): Expensive. Make this part of the TargetPatternPhaseValue or write
100-
// a new SkyFunction to compute it?
101-
loadingResult.getTestsToRun(env.getReporter(), env.getPackageManager()));
102-
try {
103-
// We're modifying the buildOptions in place, which is not ideal, but we also don't want
104-
// to pay the price for making a copy. Maybe reconsider later if this turns out to be a
105-
// problem (and the performance loss may not be a big deal).
106-
buildOptions.get(CoreOptions.class).instrumentationFilter =
107-
new RegexFilter.RegexFilterConverter().convert(instrumentationFilter);
108-
} catch (OptionsParsingException e) {
109-
throw new InvalidConfigurationException(Code.HEURISTIC_INSTRUMENTATION_FILTER_INVALID, e);
110-
}
111-
}
112-
}
113-
11488
// Exit if there are any pending exceptions from modules.
11589
env.throwPendingException();
11690

src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@
6262
import com.google.devtools.build.lib.profiler.SilentCloseable;
6363
import com.google.devtools.build.lib.runtime.BlazeModule;
6464
import com.google.devtools.build.lib.runtime.CommandEnvironment;
65-
import com.google.devtools.build.lib.server.FailureDetails.BuildConfiguration.Code;
6665
import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
6766
import com.google.devtools.build.lib.server.FailureDetails.RemoteAnalysisCaching;
6867
import com.google.devtools.build.lib.skyframe.AspectKeyCreator.AspectKey;
@@ -79,8 +78,6 @@
7978
import com.google.devtools.build.lib.util.AbruptExitException;
8079
import com.google.devtools.build.lib.util.DetailedExitCode;
8180
import com.google.devtools.build.lib.util.ExitCode;
82-
import com.google.devtools.build.lib.util.RegexFilter;
83-
import com.google.devtools.common.options.OptionsParsingException;
8481
import java.util.Collection;
8582
import java.util.EnumSet;
8683
import java.util.List;
@@ -111,28 +108,6 @@ public static AnalysisResult execute(
111108
AbruptExitException,
112109
InvalidConfigurationException,
113110
RepositoryMappingResolutionException {
114-
115-
// Compute the heuristic instrumentation filter if needed.
116-
if (request.needsInstrumentationFilter()) {
117-
try (SilentCloseable c = Profiler.instance().profile("Compute instrumentation filter")) {
118-
String instrumentationFilter =
119-
InstrumentationFilterSupport.computeInstrumentationFilter(
120-
env.getReporter(),
121-
// TODO(ulfjack): Expensive. Make this part of the TargetPatternPhaseValue or write
122-
// a new SkyFunction to compute it?
123-
targetPatternPhaseValue.getTestsToRun(env.getReporter(), env.getPackageManager()));
124-
try {
125-
// We're modifying the buildOptions in place, which is not ideal, but we also don't want
126-
// to pay the price for making a copy. Maybe reconsider later if this turns out to be a
127-
// problem (and the performance loss may not be a big deal).
128-
buildOptions.get(CoreOptions.class).instrumentationFilter =
129-
new RegexFilter.RegexFilterConverter().convert(instrumentationFilter);
130-
} catch (OptionsParsingException e) {
131-
throw new InvalidConfigurationException(Code.HEURISTIC_INSTRUMENTATION_FILTER_INVALID, e);
132-
}
133-
}
134-
}
135-
136111
// Exit if there are any pending exceptions from modules.
137112
env.throwPendingException();
138113

src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,12 @@
3636
import com.google.devtools.build.lib.actions.TestExecException;
3737
import com.google.devtools.build.lib.analysis.AnalysisAndExecutionResult;
3838
import com.google.devtools.build.lib.analysis.AnalysisResult;
39+
import com.google.devtools.build.lib.analysis.BuildView;
3940
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
4041
import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
4142
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionException;
4243
import com.google.devtools.build.lib.analysis.config.BuildOptions;
44+
import com.google.devtools.build.lib.analysis.config.CoreOptions;
4345
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
4446
import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile.LocalFileType;
4547
import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader.UploadContext;
@@ -113,6 +115,7 @@
113115
import com.google.devtools.build.lib.util.DetailedExitCode;
114116
import com.google.devtools.build.lib.util.ExitCode;
115117
import com.google.devtools.build.lib.util.InterruptedFailureDetails;
118+
import com.google.devtools.build.lib.util.RegexFilter;
116119
import com.google.devtools.build.lib.vfs.Path;
117120
import com.google.devtools.build.lib.vfs.PathFragment;
118121
import com.google.devtools.build.skyframe.EvaluationResult;
@@ -359,11 +362,16 @@ public void buildTargets(
359362
CommandLineEvent.CanonicalCommandLineEvent.LABEL)));
360363
}
361364
buildOptions = runtime.createBuildOptions(optionsParser);
365+
if (request.needsInstrumentationFilter()) {
366+
applyHeuristicInstrumentationFilter(buildOptions, targetPatternPhaseValue);
367+
}
362368
var analysisDeps =
363369
RemoteAnalysisCacheManager.forAnalysis(
364370
env,
365371
projectEvaluationResult.activeDirectoriesMatcher(),
366372
targetPatternPhaseValue.getTargetLabels(),
373+
BuildView.getTopLevelConfigurationTrimmedOfTestOptions(
374+
buildOptions, env.getReporter()),
367375
request.getUserOptions(),
368376
projectEvaluationResult.buildOptions());
369377
analysisCachingDeps = analysisDeps.deps();
@@ -474,6 +482,30 @@ private static TargetPatternPhaseValue evaluateTargetPatterns(
474482
return result;
475483
}
476484

485+
private void applyHeuristicInstrumentationFilter(
486+
BuildOptions buildOptions, TargetPatternPhaseValue targetPatternPhaseValue)
487+
throws InterruptedException, InvalidConfigurationException {
488+
try (SilentCloseable c = Profiler.instance().profile("Compute instrumentation filter")) {
489+
String instrumentationFilter =
490+
InstrumentationFilterSupport.computeInstrumentationFilter(
491+
env.getReporter(),
492+
// TODO(ulfjack): Expensive. Make this part of the TargetPatternPhaseValue or write
493+
// a new SkyFunction to compute it?
494+
targetPatternPhaseValue.getTestsToRun(env.getReporter(), env.getPackageManager()));
495+
try {
496+
// We're modifying the buildOptions in place, which is not ideal, but we also don't want
497+
// to pay the price for making a copy. Maybe reconsider later if this turns out to be a
498+
// problem (and the performance loss may not be a big deal). Notably, one must not call
499+
// .checksum() before mutating the BuildOptions instance, lest the checksum and the option
500+
// values get out of sync.
501+
buildOptions.get(CoreOptions.class).instrumentationFilter =
502+
new RegexFilter.RegexFilterConverter().convert(instrumentationFilter);
503+
} catch (OptionsParsingException e) {
504+
throw new InvalidConfigurationException(Code.HEURISTIC_INSTRUMENTATION_FILTER_INVALID, e);
505+
}
506+
}
507+
}
508+
477509
private void buildTargetsWithoutMergedAnalysisExecution(
478510
BuildRequest request,
479511
BuildResult result,

src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ java_library(
3838
":remote_analysis_caching_server_state",
3939
":remote_analysis_json_log_writer",
4040
":remote_analysis_metadata_writer",
41-
"//src/main/java/com/google/devtools/build/lib/analysis/config:build_options",
4241
"//src/main/java/com/google/devtools/build/lib/cmdline",
4342
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
4443
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization:frontier_node_version",

0 commit comments

Comments
 (0)