diff options
author | gregce <gregce@google.com> | 2018-06-15 17:54:46 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-15 17:56:26 -0700 |
commit | 1bacab9717a76dfbfc9612b3864bc25588220bbd (patch) | |
tree | 31f11639bb51b26680e870fd9fae63d9b37d19c2 | |
parent | c6b852ec0df08ddd1bc542e6f0a78c1cc71c62e8 (diff) |
Remove topLevelConfigurationHook now that LIPO is gone
PiperOrigin-RevId: 200801973
4 files changed, 3 insertions, 194 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 a3d59837fa..e9980f8578 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 @@ -37,8 +37,6 @@ import com.google.devtools.build.lib.actions.CommandLines.CommandLineLimits; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; import com.google.devtools.build.lib.analysis.actions.FileWriteAction; -import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; -import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; import com.google.devtools.build.lib.buildeventstream.BuildEventId; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos; import com.google.devtools.build.lib.cmdline.Label; @@ -48,7 +46,6 @@ import com.google.devtools.build.lib.concurrent.BlazeInterners; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.RuleClassProvider; -import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.packages.TestTimeout; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skylarkbuildapi.BuildConfigurationApi; @@ -162,23 +159,6 @@ public class BuildConfiguration implements BuildConfigurationApi { public Map<String, Object> lateBoundOptionDefaults() { return ImmutableMap.of(); } - - /** - * Returns an extra transition that should apply to top-level targets in this - * configuration. Returns null if no transition is needed. - * - * <p>Overriders should not change {@link FragmentOptions} not associated with their fragment. - * - * <p>If multiple fragments specify a transition, they're composed together in a - * deterministic but undocumented order (so don't write code expecting a specific order). - * - * <p>Deprecated. The only known use of this is LIPO, which is on its deathbed. - */ - @Nullable - @Deprecated - public PatchTransition topLevelConfigurationHook(Target toTarget) { - return null; - } } public static final Label convertOptionsLabel(String input) throws OptionsParsingException { @@ -1854,27 +1834,6 @@ public class BuildConfiguration implements BuildConfigurationApi { return skylarkVisibleFragments.keySet(); } - /** - * Returns an extra transition that should apply to top-level targets in this - * configuration. Returns null if no transition is needed. - */ - @Nullable - public ConfigurationTransition topLevelConfigurationHook(Target toTarget) { - ConfigurationTransition currentTransition = null; - for (Fragment fragment : fragments.values()) { - PatchTransition fragmentTransition = fragment.topLevelConfigurationHook(toTarget); - if (fragmentTransition == null) { - continue; - } else if (currentTransition == null) { - currentTransition = fragmentTransition; - } else { - currentTransition = - TransitionResolver.composeTransitions(currentTransition, fragmentTransition); - } - } - return currentTransition; - } - public BuildEventId getEventId() { return BuildEventId.configurationId(checksum()); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java index 6f2ba471fa..9fa17c973e 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java @@ -129,17 +129,11 @@ public final class TransitionResolver { Target target = targetAndConfig.getTarget(); BuildConfiguration fromConfig = targetAndConfig.getConfiguration(); - // Top-level transitions (chosen by configuration fragments): - ConfigurationTransition topLevelTransition = fromConfig.topLevelConfigurationHook(target); - if (topLevelTransition == null) { - topLevelTransition = NoTransition.INSTANCE; - } - // Rule class transitions (chosen by rule class definitions): if (target.getAssociatedRule() == null) { - return topLevelTransition; + return NoTransition.INSTANCE; } - ConfigurationTransition ruleTransition = applyRuleTransition(topLevelTransition, target); + ConfigurationTransition ruleTransition = applyRuleTransition(NoTransition.INSTANCE, target); ConfigurationTransition trimmingTransition = applyTransitionFromFactory(ruleTransition, target, trimmingTransitionFactory); return trimmingTransition; diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java index ee19db1635..e336d46a4a 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java @@ -336,32 +336,6 @@ public class BuildViewTest extends BuildViewTestBase { } @Test - public void topLevelConfigurationHook() throws Exception { - setConfigFragmentsAvailableInTests(TestConfigFragments.FragmentWithTopLevelConfigHook1Factory); - scratch.file( - "package/BUILD", - "sh_binary(name = 'binary', srcs = ['binary.sh'])"); - ConfiguredTarget ct = Iterables.getOnlyElement(update("//package:binary").getTargetsToBuild()); - BuildConfiguration.Options options = - getConfiguration(ct).getOptions().get(BuildConfiguration.Options.class); - assertThat(options.hostCpu).isEqualTo("$CONFIG HOOK 1"); - } - - @Test - public void topLevelComposedConfigurationHooks() throws Exception { - setConfigFragmentsAvailableInTests( - TestConfigFragments.FragmentWithTopLevelConfigHook1Factory, - TestConfigFragments.FragmentWithTopLevelConfigHook2Factory); - scratch.file( - "package/BUILD", - "sh_binary(name = 'binary', srcs = ['binary.sh'])"); - ConfiguredTarget ct = Iterables.getOnlyElement(update("//package:binary").getTargetsToBuild()); - BuildConfiguration.Options options = - getConfiguration(ct).getOptions().get(BuildConfiguration.Options.class); - assertThat(options.hostCpu).isEqualTo("$CONFIG HOOK 1$CONFIG HOOK 2"); - } - - @Test public void testGetDirectPrerequisites() throws Exception { scratch.file( "package/BUILD", @@ -371,15 +345,7 @@ public class BuildViewTest extends BuildViewTestBase { ConfiguredTarget top = getConfiguredTarget("//package:top", getTargetConfiguration()); Iterable<ConfiguredTarget> targets = getView().getDirectPrerequisitesForTesting( reporter, top, getBuildConfigurationCollection()); - Iterable<Label> labels = - Iterables.transform( - targets, - new Function<ConfiguredTarget, Label>() { - @Override - public Label apply(ConfiguredTarget target) { - return target.getLabel(); - } - }); + Iterable<Label> labels = Iterables.transform(targets, target -> target.getLabel()); assertThat(labels) .containsExactly( Label.parseAbsolute("//package:inner"), Label.parseAbsolute("//package:file")); diff --git a/src/test/java/com/google/devtools/build/lib/analysis/TestConfigFragments.java b/src/test/java/com/google/devtools/build/lib/analysis/TestConfigFragments.java deleted file mode 100644 index 65476a07f2..0000000000 --- a/src/test/java/com/google/devtools/build/lib/analysis/TestConfigFragments.java +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright 2017 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.common.collect.ImmutableSet; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildOptions; -import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory; -import com.google.devtools.build.lib.analysis.config.FragmentOptions; -import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; -import com.google.devtools.build.lib.packages.Target; -import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; - -/** - * Grab bag file for test configuration fragments and fragment factories. - */ -public class TestConfigFragments { - /** - * A {@link PatchTransition} that appends a given value to {@link - * BuildConfiguration.Options#hostCpu}. - */ - @AutoCodec - @VisibleForSerialization - static class HostCpuTransition implements PatchTransition { - - private final String patchMessage; - - HostCpuTransition(String patchMessage) { - this.patchMessage = patchMessage; - } - - @Override - public BuildOptions patch(BuildOptions options) { - BuildOptions toOptions = options.clone(); - BuildConfiguration.Options coreOptions = - toOptions.get(BuildConfiguration.Options.class); - String prefix = coreOptions.hostCpu.startsWith("$") ? coreOptions.hostCpu : ""; - coreOptions.hostCpu = prefix + "$" + patchMessage; - return toOptions; - } - } - - /** - * A {@link ConfigurationFragmentFactory} that trivially returns a given fragment. - */ - private static class SimpleFragmentFactory implements ConfigurationFragmentFactory { - private final BuildConfiguration.Fragment fragment; - - public SimpleFragmentFactory(BuildConfiguration.Fragment fragment) { - this.fragment = fragment; - } - - @Override - public BuildConfiguration.Fragment create(BuildOptions buildOptions) { - return fragment; - } - - @Override - public Class<? extends BuildConfiguration.Fragment> creates() { - return fragment.getClass(); - } - - @Override - public ImmutableSet<Class<? extends FragmentOptions>> requiredOptions() { - return ImmutableSet.<Class<? extends FragmentOptions>>of(); - } - } - - @AutoCodec - static class Hook1Fragment extends BuildConfiguration.Fragment { - @Override - public PatchTransition topLevelConfigurationHook(Target toTarget) { - return new HostCpuTransition("CONFIG HOOK 1"); - } - } - - /** Factory for a test fragment with a top-level configuration hook. */ - public static SimpleFragmentFactory FragmentWithTopLevelConfigHook1Factory = - new SimpleFragmentFactory(new Hook1Fragment()); - - /** - * The class definition for the BuildConfiguration.Fragment needs to be different than the one of - * its peer above. This is because Bazel indexes configuration fragments by class name. So we need - * to make sure all fragment definitions retain distinct class names. - */ - @AutoCodec - static class Hook2Fragment extends BuildConfiguration.Fragment { - @Override - public PatchTransition topLevelConfigurationHook(Target toTarget) { - return new HostCpuTransition("CONFIG HOOK 2"); - } - } - - /** Factory for a test fragment with a top-level configuration hook. */ - public static SimpleFragmentFactory FragmentWithTopLevelConfigHook2Factory = - new SimpleFragmentFactory(new Hook2Fragment()); -} |