aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java
diff options
context:
space:
mode:
authorGravatar Greg Estren <gregce@google.com>2015-11-12 21:10:19 +0000
committerGravatar Lukacs Berki <lberki@google.com>2015-11-13 10:22:35 +0000
commitca1b21ac6d8a58041db822725b42de151b163dee (patch)
treee309a78ce4fc5d53ae0ae408aeef253afa330768 /src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java
parent517bc6f698eca41356909499c98f91bc69141f2f (diff)
Pre-trim build options for all remaining calls to ConfigurationFragment.key. Move
the trimming logic into key() itself to: a) eliminate code redundancy b) guarantee all future calls to key() also do this. -- MOS_MIGRATED_REVID=107713353
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java
index 10a5f18dce..3e14e7f53a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java
@@ -14,11 +14,13 @@
package com.google.devtools.build.lib.skyframe;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
+import com.google.devtools.build.lib.packages.RuleClassProvider;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
@@ -46,9 +48,16 @@ public class ConfigurationFragmentValue implements SkyValue {
}
@ThreadSafe
- public static SkyKey key(BuildOptions buildOptions, Class<? extends Fragment> fragmentType) {
+ public static SkyKey key(BuildOptions buildOptions, Class<? extends Fragment> fragmentType,
+ RuleClassProvider ruleClassProvider) {
+ // Trim the options down to just those used by this fragment. This ensures we don't end
+ // up with different Skyframe keys due to trimming of unrelated options.
+ BuildOptions optionsUsedByFragment = buildOptions.trim(
+ BuildConfiguration.getOptionsClasses(
+ ImmutableList.<Class<? extends BuildConfiguration.Fragment>>of(fragmentType),
+ ruleClassProvider));
return new SkyKey(SkyFunctions.CONFIGURATION_FRAGMENT,
- new ConfigurationFragmentKey(buildOptions, fragmentType));
+ new ConfigurationFragmentKey(optionsUsedByFragment, fragmentType));
}
static final class ConfigurationFragmentKey implements Serializable {