Rename ToolchainResolutionFunction to SingleToolchainResolutionFunction.
Part of work on execution transitions, #7935.
Closes #8065.
PiperOrigin-RevId: 243843398
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ToolchainResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/ToolchainResolver.java
index 59d8cf5..ead2d52 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ToolchainResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ToolchainResolver.java
@@ -38,9 +38,10 @@
import com.google.devtools.build.lib.skyframe.PlatformLookupUtil.InvalidPlatformException;
import com.google.devtools.build.lib.skyframe.RegisteredExecutionPlatformsValue;
import com.google.devtools.build.lib.skyframe.RegisteredToolchainsFunction.InvalidToolchainLabelException;
+import com.google.devtools.build.lib.skyframe.SingleToolchainResolutionFunction;
+import com.google.devtools.build.lib.skyframe.SingleToolchainResolutionFunction.NoToolchainFoundException;
+import com.google.devtools.build.lib.skyframe.SingleToolchainResolutionValue;
import com.google.devtools.build.lib.skyframe.ToolchainException;
-import com.google.devtools.build.lib.skyframe.ToolchainResolutionFunction.NoToolchainFoundException;
-import com.google.devtools.build.lib.skyframe.ToolchainResolutionValue;
import com.google.devtools.build.skyframe.SkyFunction.Environment;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.ValueOrException2;
@@ -114,8 +115,8 @@
* com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction} (to load platforms and
* toolchains), to {@link
* com.google.devtools.build.lib.skyframe.RegisteredExecutionPlatformsFunction}, and to {@link
- * com.google.devtools.build.lib.skyframe.ToolchainResolutionFunction}. This method return {@code
- * null} to signal a SkyFrame restart is needed to resolve dependencies.
+ * SingleToolchainResolutionFunction}. This method returns {@code null} to signal a SkyFrame
+ * restart is needed to resolve dependencies.
*/
@Nullable
public UnloadedToolchainContext resolve() throws InterruptedException, ToolchainException {
@@ -286,10 +287,10 @@
throws InterruptedException, ToolchainException, ValueMissingException {
// Find the toolchains for the required toolchain types.
- List<ToolchainResolutionValue.Key> registeredToolchainKeys = new ArrayList<>();
+ List<SingleToolchainResolutionValue.Key> registeredToolchainKeys = new ArrayList<>();
for (Label toolchainTypeLabel : requiredToolchainTypeLabels) {
registeredToolchainKeys.add(
- ToolchainResolutionValue.key(
+ SingleToolchainResolutionValue.key(
configurationKey,
toolchainTypeLabel,
platformKeys.targetPlatformKey(),
@@ -315,17 +316,17 @@
try {
ValueOrException2<NoToolchainFoundException, InvalidToolchainLabelException>
valueOrException = entry.getValue();
- ToolchainResolutionValue toolchainResolutionValue =
- (ToolchainResolutionValue) valueOrException.get();
- if (toolchainResolutionValue == null) {
+ SingleToolchainResolutionValue singleToolchainResolutionValue =
+ (SingleToolchainResolutionValue) valueOrException.get();
+ if (singleToolchainResolutionValue == null) {
valuesMissing = true;
continue;
}
- ToolchainTypeInfo requiredToolchainType = toolchainResolutionValue.toolchainType();
+ ToolchainTypeInfo requiredToolchainType = singleToolchainResolutionValue.toolchainType();
requiredToolchainTypesBuilder.add(requiredToolchainType);
resolvedToolchains.putAll(
- findPlatformsAndLabels(requiredToolchainType, toolchainResolutionValue));
+ findPlatformsAndLabels(requiredToolchainType, singleToolchainResolutionValue));
} catch (NoToolchainFoundException e) {
// Save the missing type and continue looping to check for more.
missingToolchains.add(e.missingToolchainTypeLabel());
@@ -386,12 +387,13 @@
* resolvedToolchains}.
*/
private static Table<ConfiguredTargetKey, ToolchainTypeInfo, Label> findPlatformsAndLabels(
- ToolchainTypeInfo requiredToolchainType, ToolchainResolutionValue toolchainResolutionValue) {
+ ToolchainTypeInfo requiredToolchainType,
+ SingleToolchainResolutionValue singleToolchainResolutionValue) {
Table<ConfiguredTargetKey, ToolchainTypeInfo, Label> resolvedToolchains =
HashBasedTable.create();
for (Map.Entry<ConfiguredTargetKey, Label> entry :
- toolchainResolutionValue.availableToolchainLabels().entrySet()) {
+ singleToolchainResolutionValue.availableToolchainLabels().entrySet()) {
resolvedToolchains.put(entry.getKey(), requiredToolchainType, entry.getValue());
}
return resolvedToolchains;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsCycleReporter.java b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsCycleReporter.java
index b5f035f..4bd0451 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsCycleReporter.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsCycleReporter.java
@@ -27,7 +27,7 @@
import java.util.Optional;
/**
- * {@link CyclesReporter#SingleCycleReporter} implementation that can handle cycles involving
+ * {@link CyclesReporter.SingleCycleReporter} implementation that can handle cycles involving
* registered toolchains.
*/
public class RegisteredToolchainsCycleReporter implements CyclesReporter.SingleCycleReporter {
@@ -38,8 +38,8 @@
private static final Predicate<SkyKey> IS_CONFIGURED_TARGET_SKY_KEY =
SkyFunctions.isSkyFunction(SkyFunctions.CONFIGURED_TARGET);
- private static final Predicate<SkyKey> IS_TOOLCHAIN_RESOLUTION_SKY_KEY =
- SkyFunctions.isSkyFunction(SkyFunctions.TOOLCHAIN_RESOLUTION);
+ private static final Predicate<SkyKey> IS_SINGLE_TOOLCHAIN_RESOLUTION_SKY_KEY =
+ SkyFunctions.isSkyFunction(SkyFunctions.SINGLE_TOOLCHAIN_RESOLUTION);
@Override
public boolean maybeReportCycle(
@@ -52,7 +52,7 @@
return true;
} else if (!Iterables.any(cycle, IS_REGISTERED_TOOLCHAINS_SKY_KEY)
|| !Iterables.any(cycle, IS_CONFIGURED_TARGET_SKY_KEY)
- || !Iterables.any(cycle, IS_TOOLCHAIN_RESOLUTION_SKY_KEY)) {
+ || !Iterables.any(cycle, IS_SINGLE_TOOLCHAIN_RESOLUTION_SKY_KEY)) {
return false;
}
@@ -73,9 +73,9 @@
if (input.argument() instanceof RegisteredToolchainsValue.Key) {
return "RegisteredToolchains";
}
- if (input.argument() instanceof ToolchainResolutionValue.Key) {
+ if (input.argument() instanceof SingleToolchainResolutionValue.Key) {
Label toolchainType =
- ((ToolchainResolutionValue.Key) input.argument()).toolchainTypeLabel();
+ ((SingleToolchainResolutionValue.Key) input.argument()).toolchainTypeLabel();
return String.format("toolchain type %s", toolchainType.toString());
} else {
throw new UnsupportedOperationException();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunction.java
similarity index 95%
rename from src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunction.java
rename to src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunction.java
index 90771af..3842291 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunction.java
@@ -42,14 +42,14 @@
import java.util.Set;
import javax.annotation.Nullable;
-/** {@link SkyFunction} which performs toolchain resolution for a class of rules. */
-public class ToolchainResolutionFunction implements SkyFunction {
+/** {@link SkyFunction} which performs toolchain resolution for a single toolchain type. */
+public class SingleToolchainResolutionFunction implements SkyFunction {
@Nullable
@Override
public SkyValue compute(SkyKey skyKey, Environment env)
throws ToolchainResolutionFunctionException, InterruptedException {
- ToolchainResolutionValue.Key key = (ToolchainResolutionValue.Key) skyKey.argument();
+ SingleToolchainResolutionValue.Key key = (SingleToolchainResolutionValue.Key) skyKey.argument();
// This call could be combined with the call below, but this SkyFunction is evaluated so rarely
// it's not worth optimizing.
@@ -91,7 +91,7 @@
* platform.
*/
@Nullable
- private static ToolchainResolutionValue resolveConstraints(
+ private static SingleToolchainResolutionValue resolveConstraints(
Label toolchainTypeLabel,
List<ConfiguredTargetKey> availableExecutionPlatformKeys,
ConfiguredTargetKey targetPlatformKey,
@@ -179,7 +179,7 @@
new NoToolchainFoundException(toolchainTypeLabel));
}
- return ToolchainResolutionValue.create(toolchainType, resolvedToolchainLabels);
+ return SingleToolchainResolutionValue.create(toolchainType, resolvedToolchainLabels);
}
/**
@@ -246,7 +246,9 @@
}
}
- /** Used to indicate errors during the computation of an {@link ToolchainResolutionValue}. */
+ /**
+ * Used to indicate errors during the computation of an {@link SingleToolchainResolutionValue}.
+ */
private static final class ToolchainResolutionFunctionException extends SkyFunctionException {
public ToolchainResolutionFunctionException(NoToolchainFoundException e) {
super(e, Transience.PERSISTENT);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionValue.java
similarity index 82%
rename from src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionValue.java
rename to src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionValue.java
index 128269c..2ff5294 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionValue.java
@@ -26,14 +26,12 @@
import java.util.List;
/**
- * A value which represents the map of potential execution platforms and resolved toolchains. This
- * value only considers a single toolchain type, which allows for a Skyframe cache per toolchain
- * type. Callers will need to consider all toolchain types that are required and merge the results
- * together appropriately.
+ * A value which represents the map of potential execution platforms and resolved toolchains for a
+ * single toolchain type. This allows for a Skyframe cache per toolchain type.
*/
@AutoCodec
@AutoValue
-public abstract class ToolchainResolutionValue implements SkyValue {
+public abstract class SingleToolchainResolutionValue implements SkyValue {
// A key representing the input data.
public static Key key(
@@ -45,7 +43,7 @@
configurationKey, toolchainTypeLabel, targetPlatformKey, availableExecutionPlatformKeys);
}
- /** {@link SkyKey} implementation used for {@link ToolchainResolutionFunction}. */
+ /** {@link SkyKey} implementation used for {@link SingleToolchainResolutionFunction}. */
@AutoCodec
@AutoCodec.VisibleForSerialization
@AutoValue
@@ -53,7 +51,7 @@
@Override
public SkyFunctionName functionName() {
- return SkyFunctions.TOOLCHAIN_RESOLUTION;
+ return SkyFunctions.SINGLE_TOOLCHAIN_RESOLUTION;
}
abstract BuildConfigurationValue.Key configurationKey();
@@ -70,7 +68,7 @@
Label toolchainTypeLabel,
ConfiguredTargetKey targetPlatformKey,
List<ConfiguredTargetKey> availableExecutionPlatformKeys) {
- return new AutoValue_ToolchainResolutionValue_Key(
+ return new AutoValue_SingleToolchainResolutionValue_Key(
configurationKey,
toolchainTypeLabel,
targetPlatformKey,
@@ -79,10 +77,10 @@
}
@AutoCodec.Instantiator
- public static ToolchainResolutionValue create(
+ public static SingleToolchainResolutionValue create(
ToolchainTypeInfo toolchainType,
ImmutableMap<ConfiguredTargetKey, Label> availableToolchainLabels) {
- return new AutoValue_ToolchainResolutionValue(toolchainType, availableToolchainLabels);
+ return new AutoValue_SingleToolchainResolutionValue(toolchainType, availableToolchainLabels);
}
/** Returns the resolved details about the requested toolchain type. */
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java
index 21f5ad1..ee43272 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java
@@ -136,8 +136,8 @@
SkyFunctionName.createHermetic("REGISTERED_EXECUTION_PLATFORMS");
static final SkyFunctionName REGISTERED_TOOLCHAINS =
SkyFunctionName.createHermetic("REGISTERED_TOOLCHAINS");
- static final SkyFunctionName TOOLCHAIN_RESOLUTION =
- SkyFunctionName.createHermetic("TOOLCHAIN_RESOLUTION");
+ static final SkyFunctionName SINGLE_TOOLCHAIN_RESOLUTION =
+ SkyFunctionName.createHermetic("SINGLE_TOOLCHAIN_RESOLUTION");
public static final SkyFunctionName REPOSITORY_MAPPING =
SkyFunctionName.createHermetic("REPOSITORY_MAPPING");
public static final SkyFunctionName RESOLVED_FILE =
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 5aec27b..1d18244 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -592,7 +592,7 @@
map.put(
SkyFunctions.REGISTERED_EXECUTION_PLATFORMS, new RegisteredExecutionPlatformsFunction());
map.put(SkyFunctions.REGISTERED_TOOLCHAINS, new RegisteredToolchainsFunction());
- map.put(SkyFunctions.TOOLCHAIN_RESOLUTION, new ToolchainResolutionFunction());
+ map.put(SkyFunctions.SINGLE_TOOLCHAIN_RESOLUTION, new SingleToolchainResolutionFunction());
map.put(SkyFunctions.REPOSITORY_MAPPING, new RepositoryMappingFunction());
map.put(SkyFunctions.RESOLVED_HASH_VALUES, new ResolvedHashesFunction());
map.put(SkyFunctions.RESOLVED_FILE, new ResolvedFileFunction());
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunctionTest.java
similarity index 86%
rename from src/test/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunctionTest.java
rename to src/test/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunctionTest.java
index d499362..e12bb7e 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunctionTest.java
@@ -38,7 +38,6 @@
import com.google.devtools.build.lib.skyframe.util.SkyframeExecutorTestUtils;
import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
import com.google.devtools.build.lib.skylarkinterface.StarlarkContext;
-import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.skyframe.EvaluationResult;
import com.google.devtools.build.skyframe.SkyKey;
import javax.annotation.Nullable;
@@ -47,9 +46,11 @@
import org.junit.runners.JUnit4;
import org.mockito.Mockito;
-/** Tests for {@link ToolchainResolutionValue} and {@link ToolchainResolutionFunction}. */
+/**
+ * Tests for {@link SingleToolchainResolutionValue} and {@link SingleToolchainResolutionFunction}.
+ */
@RunWith(JUnit4.class)
-public class ToolchainResolutionFunctionTest extends ToolchainTestCase {
+public class SingleToolchainResolutionFunctionTest extends ToolchainTestCase {
@AutoCodec @AutoCodec.VisibleForSerialization
static final ConfiguredTargetKey LINUX_CTKEY = Mockito.mock(ConfiguredTargetKey.class);
@@ -72,7 +73,7 @@
/*nonceVersion=*/ null);
}
- private EvaluationResult<ToolchainResolutionValue> invokeToolchainResolution(SkyKey key)
+ private EvaluationResult<SingleToolchainResolutionValue> invokeToolchainResolution(SkyKey key)
throws InterruptedException {
ConfiguredTarget mockLinuxTarget = new SerializableConfiguredTarget(linuxPlatform);
ConfiguredTarget mockMacTarget = new SerializableConfiguredTarget(macPlatform);
@@ -97,14 +98,14 @@
@Test
public void testResolution_singleExecutionPlatform() throws Exception {
SkyKey key =
- ToolchainResolutionValue.key(
+ SingleToolchainResolutionValue.key(
targetConfigKey, testToolchainTypeLabel, LINUX_CTKEY, ImmutableList.of(MAC_CTKEY));
- EvaluationResult<ToolchainResolutionValue> result = invokeToolchainResolution(key);
+ EvaluationResult<SingleToolchainResolutionValue> result = invokeToolchainResolution(key);
assertThatEvaluationResult(result).hasNoError();
- ToolchainResolutionValue toolchainResolutionValue = result.get(key);
- assertThat(toolchainResolutionValue.availableToolchainLabels())
+ SingleToolchainResolutionValue singleToolchainResolutionValue = result.get(key);
+ assertThat(singleToolchainResolutionValue.availableToolchainLabels())
.containsExactly(MAC_CTKEY, makeLabel("//toolchain:toolchain_2_impl"));
}
@@ -123,17 +124,17 @@
"'//extra:extra_toolchain')");
SkyKey key =
- ToolchainResolutionValue.key(
+ SingleToolchainResolutionValue.key(
targetConfigKey,
testToolchainTypeLabel,
LINUX_CTKEY,
ImmutableList.of(LINUX_CTKEY, MAC_CTKEY));
- EvaluationResult<ToolchainResolutionValue> result = invokeToolchainResolution(key);
+ EvaluationResult<SingleToolchainResolutionValue> result = invokeToolchainResolution(key);
assertThatEvaluationResult(result).hasNoError();
- ToolchainResolutionValue toolchainResolutionValue = result.get(key);
- assertThat(toolchainResolutionValue.availableToolchainLabels())
+ SingleToolchainResolutionValue singleToolchainResolutionValue = result.get(key);
+ assertThat(singleToolchainResolutionValue.availableToolchainLabels())
.containsExactly(
LINUX_CTKEY,
makeLabel("//extra:extra_toolchain_impl"),
@@ -147,9 +148,9 @@
rewriteWorkspace();
SkyKey key =
- ToolchainResolutionValue.key(
+ SingleToolchainResolutionValue.key(
targetConfigKey, testToolchainTypeLabel, LINUX_CTKEY, ImmutableList.of(MAC_CTKEY));
- EvaluationResult<ToolchainResolutionValue> result = invokeToolchainResolution(key);
+ EvaluationResult<SingleToolchainResolutionValue> result = invokeToolchainResolution(key);
assertThatEvaluationResult(result)
.hasErrorEntryForKeyThat(key)
@@ -162,30 +163,30 @@
public void testToolchainResolutionValue_equalsAndHashCode() {
new EqualsTester()
.addEqualityGroup(
- ToolchainResolutionValue.create(
+ SingleToolchainResolutionValue.create(
testToolchainType,
ImmutableMap.of(LINUX_CTKEY, makeLabel("//test:toolchain_impl_1"))),
- ToolchainResolutionValue.create(
+ SingleToolchainResolutionValue.create(
testToolchainType,
ImmutableMap.of(LINUX_CTKEY, makeLabel("//test:toolchain_impl_1"))))
// Different execution platform, same label.
.addEqualityGroup(
- ToolchainResolutionValue.create(
+ SingleToolchainResolutionValue.create(
testToolchainType,
ImmutableMap.of(MAC_CTKEY, makeLabel("//test:toolchain_impl_1"))))
// Same execution platform, different label.
.addEqualityGroup(
- ToolchainResolutionValue.create(
+ SingleToolchainResolutionValue.create(
testToolchainType,
ImmutableMap.of(LINUX_CTKEY, makeLabel("//test:toolchain_impl_2"))))
// Different execution platform, different label.
.addEqualityGroup(
- ToolchainResolutionValue.create(
+ SingleToolchainResolutionValue.create(
testToolchainType,
ImmutableMap.of(MAC_CTKEY, makeLabel("//test:toolchain_impl_2"))))
// Multiple execution platforms.
.addEqualityGroup(
- ToolchainResolutionValue.create(
+ SingleToolchainResolutionValue.create(
testToolchainType,
ImmutableMap.<ConfiguredTargetKey, Label>builder()
.put(LINUX_CTKEY, makeLabel("//test:toolchain_impl_1"))
@@ -263,13 +264,12 @@
public void repr(SkylarkPrinter printer) {}
@Override
- public Object getIndex(Object key, Location loc, StarlarkContext context) throws EvalException {
+ public Object getIndex(Object key, Location loc, StarlarkContext context) {
return null;
}
@Override
- public boolean containsKey(Object key, Location loc, StarlarkContext context)
- throws EvalException {
+ public boolean containsKey(Object key, Location loc, StarlarkContext context) {
return false;
}
}