diff options
author | lberki <lberki@google.com> | 2018-04-09 03:16:19 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-09 03:17:36 -0700 |
commit | 406199f6d2f8f12af0d8338877a901bbc8293bce (patch) | |
tree | 28a5db5ac26d5b1039f13b9e1c643e6184ebc66b /src/main/java/com/google/devtools | |
parent | f3de7d5ff2834ad601975929aa189cfe268a6fb9 (diff) |
Remove BuildConfiguration.Fragment#getReservedActionMnemonics() in favor of encoding the same in ConfiguredRuleClassProvider.
This is a step towards dumbing down BuildConfiguration.Fragment and the ConfigurationFactoryLoader, which is in needed so that we can rewrite C++/Java/Python rules in Skylark without having to introduce the concept of "configuration loader" in Skylark, too.
RELNOTES: None.
PiperOrigin-RevId: 192104912
Diffstat (limited to 'src/main/java/com/google/devtools')
3 files changed, 32 insertions, 15 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java index e55b44aba2..8cd2b7bef3 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java @@ -25,6 +25,7 @@ import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSortedSet; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; @@ -69,6 +70,8 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.TreeSet; /** * Knows about every rule Blaze supports and the associated configuration options. @@ -233,6 +236,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { private ImmutableList.Builder<Class<?>> skylarkModules = ImmutableList.<Class<?>>builder().addAll(SkylarkModules.MODULES); private ImmutableList.Builder<NativeProvider> nativeProviders = ImmutableList.builder(); + private Set<String> reservedActionMnemonics = new TreeSet<>(); private ImmutableBiMap.Builder<String, Class<? extends TransitiveInfoProvider>> registeredSkylarkProviders = ImmutableBiMap.builder(); @@ -362,6 +366,11 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { return this; } + public Builder addReservedActionMnemonic(String mnemonic) { + this.reservedActionMnemonics.add(mnemonic); + return this; + } + /** * Sets the C++ LIPO data transition, as defined in {@link * com.google.devtools.build.lib.rules.cpp.transitions.DisableLipoTransition}. @@ -461,6 +470,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { prerequisiteValidator, skylarkAccessibleTopLevels.build(), skylarkModules.build(), + ImmutableSet.copyOf(reservedActionMnemonics), nativeProviders.build()); } @@ -567,6 +577,8 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { private final Environment.GlobalFrame globals; + private final ImmutableSet<String> reservedActionMnemonics; + private final ImmutableList<NativeProvider> nativeProviders; private final ImmutableMap<String, Class<?>> configurationFragmentMap; @@ -588,6 +600,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { PrerequisiteValidator prerequisiteValidator, ImmutableMap<String, Object> skylarkAccessibleJavaClasses, ImmutableList<Class<?>> skylarkModules, + ImmutableSet<String> reservedActionMnemonics, ImmutableList<NativeProvider> nativeProviders) { this.preludeLabel = preludeLabel; this.runfilesPrefix = runfilesPrefix; @@ -604,6 +617,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { this.universalFragments = universalFragments; this.prerequisiteValidator = prerequisiteValidator; this.globals = createGlobals(skylarkAccessibleJavaClasses, skylarkModules); + this.reservedActionMnemonics = reservedActionMnemonics; this.nativeProviders = nativeProviders; this.configurationFragmentMap = createFragmentMap(configurationFragmentFactories); } @@ -813,6 +827,11 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { return fragmentsBuilder.build(); } + /** Returns a reserved set of action mnemonics. These cannot be used from a Skylark action. */ + public ImmutableSet<String> getReservedActionMnemonics() { + return reservedActionMnemonics; + } + /** * Returns all registered {@link NativeProvider} instances, i.e. all built-in provider types that * are based on {@link Provider} rather than {@link TransitiveInfoProvider}. 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 a068e51b72..4646a73565 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 @@ -209,11 +209,6 @@ public class BuildConfiguration { public PatchTransition topLevelConfigurationHook(Target toTarget) { return null; } - - /** Returns a reserved set of action mnemonics. These cannot be used from a Skylark action. */ - public ImmutableSet<String> getReservedActionMnemonics() { - return ImmutableSet.of(); - } } public static final Label convertOptionsLabel(String input) throws OptionsParsingException { @@ -1273,6 +1268,7 @@ public class BuildConfiguration { Map<Class<? extends Fragment>, Fragment> fragmentsMap, BuildOptions buildOptions, BuildOptions.OptionsDiffForReconstruction buildOptionsDiff, + ImmutableSet<String> reservedActionMnemonics, String repositoryName) { this.directories = directories; this.fragments = makeFragmentsMap(fragmentsMap); @@ -1347,11 +1343,7 @@ public class BuildConfiguration { checksum = buildOptions.computeChecksum(); hashCode = computeHashCode(); - ImmutableSet.Builder<String> reservedActionMnemonics = ImmutableSet.builder(); - for (Fragment fragment : fragments.values()) { - reservedActionMnemonics.addAll(fragment.getReservedActionMnemonics()); - } - this.reservedActionMnemonics = reservedActionMnemonics.build(); + this.reservedActionMnemonics = reservedActionMnemonics; this.buildEventSupplier = Suppliers.memoize(this::createBuildEvent); } @@ -1378,6 +1370,7 @@ public class BuildConfiguration { fragmentsMap, options, BuildOptions.diffForReconstruction(defaultBuildOptions, options), + reservedActionMnemonics, mainRepositoryName.strippedName()); return newConfig; } @@ -1960,10 +1953,6 @@ public class BuildConfiguration { return skylarkVisibleFragments.keySet(); } - public ImmutableSet<String> getReservedActionMnemonics() { - return reservedActionMnemonics; - } - /** * Returns an extra transition that should apply to top-level targets in this * configuration. Returns null if no transition is needed. @@ -2007,4 +1996,8 @@ public class BuildConfiguration { .build()); return new BuildConfigurationEvent(eventId, builder.build()); } + + public ImmutableSet<String> getReservedActionMnemonics() { + return reservedActionMnemonics; + } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java index 6b39f2883b..093cbb015a 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java @@ -80,7 +80,12 @@ public class BuildConfigurationFunction implements SkyFunction { BuildConfiguration config = new BuildConfiguration( - directories, fragmentsMap, options, key.getOptionsDiff(), workspaceNameValue.getName()); + directories, + fragmentsMap, + options, + key.getOptionsDiff(), + ruleClassProvider.getReservedActionMnemonics(), + workspaceNameValue.getName()); return new BuildConfigurationValue(config); } |