aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar gregce <gregce@google.com>2018-06-15 17:54:46 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-15 17:56:26 -0700
commit1bacab9717a76dfbfc9612b3864bc25588220bbd (patch)
tree31f11639bb51b26680e870fd9fae63d9b37d19c2
parentc6b852ec0df08ddd1bc542e6f0a78c1cc71c62e8 (diff)
Remove topLevelConfigurationHook now that LIPO is gone
PiperOrigin-RevId: 200801973
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java41
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java36
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/TestConfigFragments.java110
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());
-}