use AutoValue for ExecGroup
PiperOrigin-RevId: 316150023
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkRuleClassFunctions.java
index adcbeb0..71dd187 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkRuleClassFunctions.java
@@ -894,6 +894,6 @@
ImmutableSet<Label> toolchainTypes = ImmutableSet.copyOf(parseToolchains(toolchains, thread));
ImmutableSet<Label> constraints =
ImmutableSet.copyOf(parseExecCompatibleWith(execCompatibleWith, thread));
- return new ExecGroup(toolchainTypes, constraints);
+ return ExecGroup.create(toolchainTypes, constraints);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/ExecGroup.java b/src/main/java/com/google/devtools/build/lib/packages/ExecGroup.java
index 510e82a..e9f24ab 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/ExecGroup.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/ExecGroup.java
@@ -14,30 +14,22 @@
package com.google.devtools.build.lib.packages;
+import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.skylarkbuildapi.ExecGroupApi;
import java.util.Set;
-/**
- * Resolves the appropriate toolchains for the given parameters.
- *
- * <p>Currently just a stub.
- */
-public class ExecGroup implements ExecGroupApi {
- private final ImmutableSet<Label> requiredToolchains;
- private final ImmutableSet<Label> execCompatibleWith;
+/** Resolves the appropriate toolchains for the given parameters. */
+@AutoValue
+public abstract class ExecGroup implements ExecGroupApi {
- public ExecGroup(Set<Label> requiredToolchains, Set<Label> execCompatibleWith) {
- this.requiredToolchains = ImmutableSet.copyOf(requiredToolchains);
- this.execCompatibleWith = ImmutableSet.copyOf(execCompatibleWith);
+ public static ExecGroup create(Set<Label> requiredToolchains, Set<Label> execCompatibleWith) {
+ return new AutoValue_ExecGroup(
+ ImmutableSet.copyOf(requiredToolchains), ImmutableSet.copyOf(execCompatibleWith));
}
- public ImmutableSet<Label> getRequiredToolchains() {
- return requiredToolchains;
- }
+ public abstract ImmutableSet<Label> requiredToolchains();
- public ImmutableSet<Label> getExecutionPlatformConstraints() {
- return execCompatibleWith;
- }
+ public abstract ImmutableSet<Label> execCompatibleWith();
}
diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetAccessor.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetAccessor.java
index c8fe5d0..14cc45d 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetAccessor.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetAccessor.java
@@ -232,8 +232,8 @@
walkableGraph.getValue(
ToolchainContextKey.key()
.configurationKey(BuildConfigurationValue.key(config))
- .requiredToolchainTypeLabels(execGroup.getRequiredToolchains())
- .execConstraintLabels(execGroup.getExecutionPlatformConstraints())
+ .requiredToolchainTypeLabels(execGroup.requiredToolchains())
+ .execConstraintLabels(execGroup.execCompatibleWith())
.build());
if (context == null) {
return null;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
index bb122c9..515faf7 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
@@ -525,8 +525,8 @@
group.getKey(),
ToolchainContextKey.key()
.configurationKey(toolchainConfig)
- .requiredToolchainTypeLabels(execGroup.getRequiredToolchains())
- .execConstraintLabels(execGroup.getExecutionPlatformConstraints())
+ .requiredToolchainTypeLabels(execGroup.requiredToolchains())
+ .execConstraintLabels(execGroup.execCompatibleWith())
.shouldSanityCheckConfiguration(configuration.trimConfigurationsRetroactively())
.build());
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java
index 6fc88cd..950249f 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java
@@ -511,7 +511,7 @@
execGroup.getKey(),
ToolchainContextKey.key()
.configurationKey(BuildConfigurationValue.key(targetConfig))
- .requiredToolchainTypeLabels(execGroup.getValue().getRequiredToolchains())
+ .requiredToolchainTypeLabels(execGroup.getValue().requiredToolchains())
.build());
}
String targetUnloadedToolchainContextKey = "target-unloaded-toolchain-context";
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleClassBuilderTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleClassBuilderTest.java
index 9cd63ce..faa0cc2 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleClassBuilderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleClassBuilderTest.java
@@ -197,8 +197,8 @@
Label mockToolchainType = Label.parseAbsoluteUnchecked("//mock_toolchain_type");
Label mockConstraint = Label.parseAbsoluteUnchecked("//mock_constraint");
ExecGroup parentGroup =
- new ExecGroup(ImmutableSet.of(mockToolchainType), ImmutableSet.of(mockConstraint));
- ExecGroup childGroup = new ExecGroup(ImmutableSet.of(), ImmutableSet.of());
+ ExecGroup.create(ImmutableSet.of(mockToolchainType), ImmutableSet.of(mockConstraint));
+ ExecGroup childGroup = ExecGroup.create(ImmutableSet.of(), ImmutableSet.of());
RuleClass parent =
new RuleClass.Builder("$parent", RuleClassType.ABSTRACT, false)
.add(attr("tags", STRING_LIST))
@@ -220,14 +220,16 @@
new RuleClass.Builder("ruleA", RuleClassType.NORMAL, false)
.factory(DUMMY_CONFIGURED_TARGET_FACTORY)
.addExecGroups(
- ImmutableMap.of("blueberry", new ExecGroup(ImmutableSet.of(), ImmutableSet.of())))
+ ImmutableMap.of(
+ "blueberry", ExecGroup.create(ImmutableSet.of(), ImmutableSet.of())))
.add(attr("tags", STRING_LIST))
.build();
RuleClass b =
new RuleClass.Builder("ruleB", RuleClassType.NORMAL, false)
.factory(DUMMY_CONFIGURED_TARGET_FACTORY)
.addExecGroups(
- ImmutableMap.of("blueberry", new ExecGroup(ImmutableSet.of(), ImmutableSet.of())))
+ ImmutableMap.of(
+ "blueberry", ExecGroup.create(ImmutableSet.of(), ImmutableSet.of())))
.add(attr("tags", STRING_LIST))
.build();
IllegalArgumentException e =
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
index 8115483..fc9477f 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
@@ -1145,14 +1145,14 @@
ruleClassBuilder.addExecGroups(
ImmutableMap.of(
- "cherry", new ExecGroup(ImmutableSet.of(toolchain), ImmutableSet.of(constraint))));
+ "cherry", ExecGroup.create(ImmutableSet.of(toolchain), ImmutableSet.of(constraint))));
RuleClass ruleClass = ruleClassBuilder.build();
assertThat(ruleClass.getExecGroups()).hasSize(1);
- assertThat(ruleClass.getExecGroups().get("cherry").getRequiredToolchains())
+ assertThat(ruleClass.getExecGroups().get("cherry").requiredToolchains())
.containsExactly(toolchain);
- assertThat(ruleClass.getExecGroups().get("cherry").getExecutionPlatformConstraints())
+ assertThat(ruleClass.getExecGroups().get("cherry").execCompatibleWith())
.containsExactly(constraint);
}
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/StarlarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/StarlarkRuleClassFunctionsTest.java
index ea1d36e..4e871d5 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/StarlarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/StarlarkRuleClassFunctionsTest.java
@@ -1821,10 +1821,10 @@
")");
RuleClass plum = ((StarlarkRuleFunction) ev.lookup("plum")).getRuleClass();
assertThat(plum.getRequiredToolchains()).isEmpty();
- assertThat(plum.getExecGroups().get("group").getRequiredToolchains())
+ assertThat(plum.getExecGroups().get("group").requiredToolchains())
.containsExactly(makeLabel("//test:my_toolchain_type"));
assertThat(plum.getExecutionPlatformConstraints()).isEmpty();
- assertThat(plum.getExecGroups().get("group").getExecutionPlatformConstraints())
+ assertThat(plum.getExecGroups().get("group").execCompatibleWith())
.containsExactly(makeLabel("//constraint:cv1"), makeLabel("//constraint:cv2"));
}
@@ -1874,9 +1874,8 @@
" exec_compatible_with=['//constraint:cv1', '//constraint:cv2'],",
")");
ExecGroup group = ((ExecGroup) ev.lookup("group"));
- assertThat(group.getRequiredToolchains())
- .containsExactly(makeLabel("//test:my_toolchain_type"));
- assertThat(group.getExecutionPlatformConstraints())
+ assertThat(group.requiredToolchains()).containsExactly(makeLabel("//test:my_toolchain_type"));
+ assertThat(group.execCompatibleWith())
.containsExactly(makeLabel("//constraint:cv1"), makeLabel("//constraint:cv2"));
}
}