aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
diff options
context:
space:
mode:
authorGravatar gregce <gregce@google.com>2017-05-03 22:58:50 +0200
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-05-04 13:13:54 +0200
commitd746655be6a46ac05252cf460dfed14d1f7ca120 (patch)
tree46f2e7da93f68844b1e92b58bb0072f67b9712ee /src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
parent5f1d88646b35625aa90a178efb8ef8ca4b736a00 (diff)
BuildOptions cleanup:
1) Remove obsolete originalOptions field. This was originally added to support "parent" transitions, which supported config1 -> config2 -> config1 transitions by having config2 store config1's options. The purpose of this feature was to support LIPO (which has a DATA -> TARGET transition). But https://github.com/bazelbuild/bazel/commit/ff29c0b39cf936a2699b05edd54f483f1a037d93 makes this unnecessary. 2) Support the "disable actions" feature of the LIPO context collector configuration. Putting this in BuildOptions make this dynamic config-compatible. This change intentionally doesn't add disableOptions to BuildOptions.equals() or BuildOptions.hashCode(). It'd be great to do that. But that has semantic consequences. And we've run into really tricky bugs in the past with dynamic configurations and BuildOptions.equals / BuildConfiguration.equals. So it's best to experiment with that in its own change. PiperOrigin-RevId: 154999718
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 3273a6d3e6..af68c8b9fa 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -1119,6 +1119,7 @@ public final class BuildConfiguration {
private final ImmutableMap<Class<? extends Fragment>, Fragment> fragments;
private final ImmutableMap<String, Class<? extends Fragment>> skylarkVisibleFragments;
+
/**
* Directories in the output tree.
*
@@ -1221,7 +1222,8 @@ public final class BuildConfiguration {
private final Root testlogsDirectoryForMainRepository;
private final Root middlemanDirectoryForMainRepository;
- /** If false, AnalysisEnviroment doesn't register any actions created by the ConfiguredTarget. */
+ // Cache this value for quicker access. We don't cache it inside BuildOptions because BuildOptions
+ // is mutable, so a cached value there could fall out of date when it's updated.
private final boolean actionsEnabled;
// TODO(bazel-team): Move this to a configuration fragment.
@@ -1304,7 +1306,7 @@ public final class BuildConfiguration {
}
private int computeHashCode() {
- return Objects.hash(actionsEnabled, fragments, buildOptions.getOptions());
+ return Objects.hash(isActionsEnabled(), fragments, buildOptions.getOptions());
}
@Override
@@ -1425,15 +1427,14 @@ public final class BuildConfiguration {
*/
public BuildConfiguration(BlazeDirectories directories,
Map<Class<? extends Fragment>, Fragment> fragmentsMap,
- BuildOptions buildOptions,
- boolean actionsDisabled) {
+ BuildOptions buildOptions) {
this.directories = directories;
- this.actionsEnabled = !actionsDisabled;
this.fragments = ImmutableSortedMap.copyOf(fragmentsMap, lexicalFragmentSorter);
this.skylarkVisibleFragments = buildIndexOfSkylarkVisibleFragments();
- this.buildOptions = buildOptions;
+ this.buildOptions = buildOptions.clone();
+ this.actionsEnabled = buildOptions.enableActions();
this.options = buildOptions.get(Options.class);
Map<String, String> testEnv = new TreeMap<>();
@@ -1521,7 +1522,7 @@ public final class BuildConfiguration {
BuildOptions options = buildOptions.trim(
getOptionsClasses(fragmentsMap.keySet(), ruleClassProvider));
BuildConfiguration newConfig =
- new BuildConfiguration(directories, fragmentsMap, options, !actionsEnabled);
+ new BuildConfiguration(directories, fragmentsMap, options);
newConfig.setConfigurationTransitions(this.transitions);
return newConfig;
}
@@ -2447,6 +2448,7 @@ public final class BuildConfiguration {
return options.useLLVMCoverageMapFormat;
}
+ /** If false, AnalysisEnviroment doesn't register any actions created by the ConfiguredTarget. */
public boolean isActionsEnabled() {
return actionsEnabled;
}
@@ -2492,7 +2494,7 @@ public final class BuildConfiguration {
}
public List<Label> getActionListeners() {
- return actionsEnabled ? options.actionListeners : ImmutableList.<Label>of();
+ return isActionsEnabled() ? options.actionListeners : ImmutableList.<Label>of();
}
/**