Skip to content

Commit bdc6c5c

Browse files
tetrominocopybara-github
authored andcommitted
Automated rollback of commit 34f20a1.
*** Reason for rollback *** See unknown commit *** Original change description *** Replace HOST transition with EXEC transition for Starlark rules. PiperOrigin-RevId: 429580659
1 parent 9a8cac7 commit bdc6c5c

File tree

12 files changed

+90
-48
lines changed

12 files changed

+90
-48
lines changed

src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkAttrModule.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.google.common.collect.ImmutableMap;
2020
import com.google.common.collect.ImmutableSet;
2121
import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory;
22+
import com.google.devtools.build.lib.analysis.config.HostTransition;
2223
import com.google.devtools.build.lib.analysis.config.StarlarkDefinedConfigTransition;
2324
import com.google.devtools.build.lib.analysis.config.TransitionFactories;
2425
import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition;
@@ -227,9 +228,8 @@ && containsNonNoneKey(arguments, ALLOW_SINGLE_FILE_ARG)) {
227228
throw Starlark.errorf(
228229
"late-bound attributes must not have a split configuration transition");
229230
}
230-
// TODO(b/203203933): Officially deprecate HOST transition and remove this.
231231
if (trans.equals("host")) {
232-
builder.cfg(ExecutionTransitionFactory.create());
232+
builder.cfg(HostTransition.createFactory());
233233
} else if (trans.equals("exec")) {
234234
builder.cfg(ExecutionTransitionFactory.create());
235235
} else if (trans instanceof ExecutionTransitionFactory) {

src/main/java/com/google/devtools/build/lib/rules/genrule/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ java_library(
1818
"//src/main/java/com/google/devtools/build/lib/actions:artifacts",
1919
"//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
2020
"//src/main/java/com/google/devtools/build/lib/analysis:config/execution_transition_factory",
21+
"//src/main/java/com/google/devtools/build/lib/analysis:config/host_transition",
2122
"//src/main/java/com/google/devtools/build/lib/analysis:configured_target",
2223
"//src/main/java/com/google/devtools/build/lib/analysis:file_provider",
2324
"//src/main/java/com/google/devtools/build/lib/analysis:make_variable_supplier",

src/test/java/com/google/devtools/build/lib/analysis/test/TrimTestConfigurationTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import com.google.devtools.build.lib.analysis.RunfilesSupport;
3939
import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
4040
import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
41-
import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory;
41+
import com.google.devtools.build.lib.analysis.config.HostTransition;
4242
import com.google.devtools.build.lib.analysis.util.AnalysisTestCase;
4343
import com.google.devtools.build.lib.analysis.util.MockRule;
4444
import com.google.devtools.build.lib.cmdline.Label;
@@ -92,7 +92,7 @@ public ConfiguredTarget create(RuleContext context)
9292
"native_test",
9393
attr("deps", LABEL_LIST).allowedFileTypes(),
9494
attr("host_deps", LABEL_LIST)
95-
.cfg(ExecutionTransitionFactory.create())
95+
.cfg(HostTransition.createFactory())
9696
.allowedFileTypes());
9797

9898
private static final RuleDefinition NATIVE_LIB_RULE =
@@ -103,7 +103,7 @@ public ConfiguredTarget create(RuleContext context)
103103
"native_lib",
104104
attr("deps", LABEL_LIST).allowedFileTypes(),
105105
attr("host_deps", LABEL_LIST)
106-
.cfg(ExecutionTransitionFactory.create())
106+
.cfg(HostTransition.createFactory())
107107
.allowedFileTypes());
108108

109109
@Before

src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import com.google.common.collect.ImmutableMap;
2727
import com.google.devtools.build.lib.analysis.config.BuildOptions;
2828
import com.google.devtools.build.lib.analysis.config.BuildOptionsView;
29-
import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory;
29+
import com.google.devtools.build.lib.analysis.config.HostTransition;
3030
import com.google.devtools.build.lib.analysis.config.TransitionFactories;
3131
import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition;
3232
import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition;
@@ -102,12 +102,11 @@ public void testDoublePropertySet() {
102102
Attribute.Builder<String> builder =
103103
attr("x", STRING)
104104
.mandatory()
105-
.cfg(ExecutionTransitionFactory.create())
105+
.cfg(HostTransition.createFactory())
106106
.undocumented("")
107107
.value("y");
108108
assertThrows(IllegalStateException.class, () -> builder.mandatory());
109-
assertThrows(
110-
IllegalStateException.class, () -> builder.cfg(ExecutionTransitionFactory.create()));
109+
assertThrows(IllegalStateException.class, () -> builder.cfg(HostTransition.createFactory()));
111110
assertThrows(IllegalStateException.class, () -> builder.undocumented(""));
112111
assertThrows(IllegalStateException.class, () -> builder.value("z"));
113112

@@ -280,8 +279,8 @@ public void testSplitTransitionProvider() throws Exception {
280279
@Test
281280
public void testHostTransition() throws Exception {
282281
Attribute attr =
283-
attr("foo", LABEL).cfg(ExecutionTransitionFactory.create()).allowedFileTypes().build();
284-
assertThat(attr.getTransitionFactory().isTool()).isTrue();
282+
attr("foo", LABEL).cfg(HostTransition.createFactory()).allowedFileTypes().build();
283+
assertThat(attr.getTransitionFactory().isHost()).isTrue();
285284
assertThat(attr.getTransitionFactory().isSplit()).isFalse();
286285
}
287286

src/test/java/com/google/devtools/build/lib/packages/BUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ java_test(
5656
"//src/main/java/com/google/devtools/build/lib/actions:thread_state_receiver",
5757
"//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
5858
"//src/main/java/com/google/devtools/build/lib/analysis:config/build_options",
59-
"//src/main/java/com/google/devtools/build/lib/analysis:config/execution_transition_factory",
6059
"//src/main/java/com/google/devtools/build/lib/analysis:config/fragment",
60+
"//src/main/java/com/google/devtools/build/lib/analysis:config/host_transition",
6161
"//src/main/java/com/google/devtools/build/lib/analysis:config/transition_factories",
6262
"//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/configuration_transition",
6363
"//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/no_transition",

src/test/java/com/google/devtools/build/lib/query2/cquery/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ java_test(
5959
"//src/main/java/com/google/devtools/build/lib/analysis:config/build_options",
6060
"//src/main/java/com/google/devtools/build/lib/analysis:config/execution_transition_factory",
6161
"//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_options",
62+
"//src/main/java/com/google/devtools/build/lib/analysis:config/host_transition",
6263
"//src/main/java/com/google/devtools/build/lib/analysis:config/transition_factories",
6364
"//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/patch_transition",
6465
"//src/main/java/com/google/devtools/build/lib/analysis:test/test_configuration",

src/test/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQuerySemanticsTest.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.google.devtools.build.lib.analysis.config.BuildOptionsView;
2929
import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory;
3030
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
31+
import com.google.devtools.build.lib.analysis.config.HostTransition;
3132
import com.google.devtools.build.lib.analysis.config.TransitionFactories;
3233
import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
3334
import com.google.devtools.build.lib.analysis.test.TestConfiguration.TestOptions;
@@ -207,7 +208,7 @@ public void testAlias_filtering() throws Exception {
207208
"rule_with_host_dep",
208209
attr("host_dep", LABEL)
209210
.allowedFileTypes(FileTypeSet.ANY_FILE)
210-
.cfg(ExecutionTransitionFactory.create()),
211+
.cfg(HostTransition.createFactory()),
211212
attr("$impl_dep", LABEL)
212213
.allowedFileTypes(FileTypeSet.ANY_FILE)
213214
.value(Label.parseAbsoluteUnchecked("//test:other")));
@@ -265,7 +266,7 @@ private void createConfigRulesAndBuild() throws Exception {
265266
attr("target", LABEL).allowedFileTypes(FileTypeSet.ANY_FILE),
266267
attr("host", LABEL)
267268
.allowedFileTypes(FileTypeSet.ANY_FILE)
268-
.cfg(ExecutionTransitionFactory.create()),
269+
.cfg(HostTransition.createFactory()),
269270
attr("exec", LABEL)
270271
.allowedFileTypes(FileTypeSet.ANY_FILE)
271272
.cfg(ExecutionTransitionFactory.create()),
@@ -360,7 +361,7 @@ public void testConfig_target() throws Exception {
360361
}
361362

362363
@Test
363-
public void testConfig_noMoreHostTransition() throws Exception {
364+
public void testConfig_hostTransition() throws Exception {
364365
createConfigRulesAndBuild();
365366

366367
getHelper().setWholeTestUniverseScope("test:my_rule");
@@ -370,21 +371,20 @@ public void testConfig_noMoreHostTransition() throws Exception {
370371
.isEqualTo("No target (in) //test:target_dep could be found in the 'host' configuration");
371372
assertConfigurableQueryCode(
372373
targetResult.getFailureDetail(), ConfigurableQuery.Code.TARGET_MISSING);
373-
EvalThrowsResult hostDepResult = evalThrows("config(//test:host_dep, host)", true);
374-
assertThat(hostDepResult.getMessage())
375-
.isEqualTo("No target (in) //test:host_dep could be found in the 'host' configuration");
376-
assertConfigurableQueryCode(
377-
hostDepResult.getFailureDetail(), ConfigurableQuery.Code.TARGET_MISSING);
378-
EvalThrowsResult execDepResult = evalThrows("config(//test:exec_dep, host)", true);
379-
assertThat(execDepResult.getMessage())
380-
.isEqualTo("No target (in) //test:exec_dep could be found in the 'host' configuration");
381-
assertConfigurableQueryCode(
382-
execDepResult.getFailureDetail(), ConfigurableQuery.Code.TARGET_MISSING);
383-
EvalThrowsResult hostResult = evalThrows("config(//test:dep, host)", true);
374+
assertThat(eval("config(//test:host_dep, host)")).isEqualTo(eval("//test:host_dep"));
375+
EvalThrowsResult hostResult = evalThrows("config(//test:exec_dep, host)", true);
384376
assertThat(hostResult.getMessage())
385-
.isEqualTo("No target (in) //test:dep could be found in the 'host' configuration");
377+
.isEqualTo("No target (in) //test:exec_dep could be found in the 'host' configuration");
386378
assertConfigurableQueryCode(
387379
hostResult.getFailureDetail(), ConfigurableQuery.Code.TARGET_MISSING);
380+
381+
BuildConfigurationValue configuration =
382+
getConfiguration(Iterables.getOnlyElement(eval("config(//test:dep, host)")));
383+
384+
assertThat(configuration).isNotNull();
385+
assertThat(configuration.isHostConfiguration()).isTrue();
386+
assertThat(configuration.isExecConfiguration()).isFalse();
387+
assertThat(configuration.isToolConfiguration()).isTrue();
388388
}
389389

390390
@Test

src/test/java/com/google/devtools/build/lib/query2/cquery/GraphOutputFormatterCallbackTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,6 @@ public void factorEquivalentNodes() throws Exception {
147147
"}"));
148148
}
149149

150-
// TODO(b/203203933): Replace "host" with "exec" throughout this test.
151150
@Test
152151
public void nullAndHostDeps() throws Exception {
153152
writeFile(
@@ -160,8 +159,6 @@ public void nullAndHostDeps() throws Exception {
160159
List<String> output = getOutput("deps(//test:a)");
161160
String firstNode = output.get(2);
162161
String configHash = firstNode.substring(firstNode.indexOf("(") + 1, firstNode.length() - 2);
163-
String hostNode = output.get(6);
164-
String execConfigHash = hostNode.substring(hostNode.indexOf("(") + 1, hostNode.length() - 2);
165162
assertThat(getOutput("deps(//test:a)"))
166163
.isEqualTo(
167164
withConfigHash(
@@ -171,8 +168,8 @@ public void nullAndHostDeps() throws Exception {
171168
" \"//test:a (%s)\"",
172169
" \"//test:a (%s)\" -> \"//test:b (%s)\"",
173170
" \"//test:a (%s)\" -> \"//test:file.src (null)\"",
174-
" \"//test:a (%s)\" -> \"//test:host_dep (" + execConfigHash + ")\"",
175-
" \"//test:host_dep (" + execConfigHash + ")\"",
171+
" \"//test:a (%s)\" -> \"//test:host_dep (HOST)\"",
172+
" \"//test:host_dep (HOST)\"",
176173
" \"//test:file.src (null)\"",
177174
" \"//test:b (%s)\"",
178175
"}"));

src/test/java/com/google/devtools/build/lib/rules/config/FeatureFlagManualTrimmingTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -697,6 +697,41 @@ public void featureFlagInHostConfiguration_HasNoTransitiveConfigEnforcement() th
697697
assertNoEvents();
698698
}
699699

700+
@Test
701+
public void noDistinctHostConfiguration_DoesNotResultInActionConflicts() throws Exception {
702+
scratch.file(
703+
"test/BUILD",
704+
"load(':host_transition.bzl', 'host_transition')",
705+
"load(':read_flags.bzl', 'read_flags')",
706+
"feature_flag_setter(",
707+
" name = 'target',",
708+
" deps = [':host', ':reader'],",
709+
")",
710+
"host_transition(",
711+
" name = 'host',",
712+
" srcs = [':reader'],",
713+
")",
714+
"read_flags(",
715+
" name = 'reader',",
716+
" flags = [],",
717+
")");
718+
719+
enableManualTrimmingAnd("--nodistinct_host_configuration");
720+
ConfiguredTarget target = getConfiguredTarget("//test:target");
721+
assertNoEvents();
722+
// Note that '//test:reader' is accessed (and creates actions) in both the host and target
723+
// configurations. If these are different but output to the same path (as was the case before
724+
// --nodistinct_host_configuration caused --enforce_transitive_configs_for_config_feature_flag
725+
// to become a no-op), then this causes action conflicts, as described in b/117932061 (for which
726+
// this test is a regression test).
727+
assertThat(getFilesToBuild(target).toList()).hasSize(1);
728+
// Action conflict detection is not enabled for these tests. However, the action conflict comes
729+
// from the outputs of the two configurations of //test:reader being unequal artifacts;
730+
// hence, this test checks that the nested set of artifacts reachable from //test:target only
731+
// contains one artifact, that is, they were deduplicated for being equal.
732+
}
733+
734+
700735
@Test
701736
public void noDistinctHostConfiguration_DisablesEnforcementForBothHostAndTargetConfigs()
702737
throws Exception {

src/test/java/com/google/devtools/build/lib/rules/java/ProguardLibraryTest.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
3636
import com.google.devtools.build.lib.analysis.RunfilesProvider;
3737
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
38-
import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory;
38+
import com.google.devtools.build.lib.analysis.config.HostTransition;
3939
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
4040
import com.google.devtools.build.lib.cmdline.Label;
4141
import com.google.devtools.build.lib.cmdline.RepositoryName;
@@ -45,6 +45,7 @@
4545
import com.google.devtools.build.lib.packages.NativeAspectClass;
4646
import com.google.devtools.build.lib.packages.RuleClass;
4747
import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
48+
import com.google.devtools.build.lib.testutil.TestConstants;
4849
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
4950
import com.google.devtools.build.lib.util.FileTypeSet;
5051
import java.util.List;
@@ -69,11 +70,11 @@ public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env)
6970
.add(attr("runtime_deps", LABEL_LIST).allowedFileTypes(FileTypeSet.NO_FILE))
7071
.add(
7172
attr("plugins", LABEL_LIST)
72-
.cfg(ExecutionTransitionFactory.create())
73+
.cfg(HostTransition.createFactory())
7374
.allowedFileTypes(FileTypeSet.NO_FILE))
7475
.add(
7576
attr("exported_plugins", LABEL_LIST)
76-
.cfg(ExecutionTransitionFactory.create())
77+
.cfg(HostTransition.createFactory())
7778
.allowedFileTypes(FileTypeSet.NO_FILE))
7879
.build();
7980
}
@@ -110,7 +111,7 @@ public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env)
110111
.add(attr("target_libs", LABEL_LIST).allowedFileTypes(FileTypeSet.NO_FILE))
111112
.add(
112113
attr("host_libs", LABEL_LIST)
113-
.cfg(ExecutionTransitionFactory.create())
114+
.cfg(HostTransition.createFactory())
114115
.allowedFileTypes(FileTypeSet.NO_FILE))
115116
.add(attr("target_attrs", STRING_LIST))
116117
.add(attr("host_attrs", STRING_LIST))
@@ -119,7 +120,7 @@ public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env)
119120
.value(Label.parseAbsoluteUnchecked("//test/implicit:implicit_target")))
120121
.add(
121122
attr("$implicit_host", LABEL)
122-
.cfg(ExecutionTransitionFactory.create())
123+
.cfg(HostTransition.createFactory())
123124
.value(Label.parseAbsoluteUnchecked("//test/implicit:implicit_host")))
124125
.build();
125126
}
@@ -282,7 +283,7 @@ public void testProguardSpecs_originalConfigSentAsInputToAllowlister() throws Ex
282283
.map(path -> path.replaceFirst(TestConstants.PRODUCT_NAME + "-out/[^/]+/", ""))
283284
.collect(Collectors.toList());
284285
List<String> expectedFilesToRun =
285-
getFilesToRun(getConfiguredTarget(TestConstants.PROGUARD_ALLOWLISTER_TARGET))
286+
getFilesToRun(getHostConfiguredTarget(TestConstants.PROGUARD_ALLOWLISTER_TARGET))
286287
.toList()
287288
.stream()
288289
.map(Artifact::getExecPathString)
@@ -347,11 +348,11 @@ public void testProguardSpecs_pickedUpFromDependencyAttributes() throws Exceptio
347348
Artifact validatedPlugin =
348349
getBinArtifact(
349350
"validated_proguard/plugin/test/plugin.cfg_valid",
350-
getDirectPrerequisite(target, "//test:plugin"));
351+
getHostConfiguredTarget("//test:plugin"));
351352
Artifact validatedExportedPlugin =
352353
getBinArtifact(
353354
"validated_proguard/exported_plugin/test/exported_plugin.cfg_valid",
354-
getDirectPrerequisite(target, "//test:exported_plugin"));
355+
getHostConfiguredTarget("//test:exported_plugin"));
355356

356357
assertThat(getFilesToBuild(target).toList())
357358
.containsExactly(
@@ -382,16 +383,15 @@ public void testProguardSpecs_customAttributes() throws Exception {
382383
getConfiguredTarget("//test:target"));
383384
Artifact validatedHost =
384385
getBinArtifact(
385-
"validated_proguard/host/test/host.cfg_valid",
386-
getDirectPrerequisite(target, "//test:host"));
386+
"validated_proguard/host/test/host.cfg_valid", getHostConfiguredTarget("//test:host"));
387387
Artifact validatedImplicitTarget =
388388
getBinArtifact(
389389
"validated_proguard/implicit_target/test/implicit/implicit_target.cfg_valid",
390390
getConfiguredTarget("//test/implicit:implicit_target"));
391391
Artifact validatedImplicitHost =
392392
getBinArtifact(
393393
"validated_proguard/implicit_host/test/implicit/implicit_host.cfg_valid",
394-
getDirectPrerequisite(target, "//test/implicit:implicit_host"));
394+
getHostConfiguredTarget("//test/implicit:implicit_host"));
395395

396396
assertThat(getFilesToBuild(target).toList())
397397
.containsExactly(

src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleClassFunctionsTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -759,10 +759,9 @@ public void testAttrBadKeywordArguments() throws Exception {
759759
}
760760

761761
@Test
762-
public void testAttrCfgNoMoreHost() throws Exception {
762+
public void testAttrCfg() throws Exception {
763763
Attribute attr = buildAttribute("a1", "attr.label(cfg = 'host', allow_files = True)");
764-
assertThat(attr.getTransitionFactory().isHost()).isFalse();
765-
assertThat(attr.getTransitionFactory().isTool()).isTrue();
764+
assertThat(attr.getTransitionFactory().isHost()).isTrue();
766765
}
767766

768767
@Test

0 commit comments

Comments
 (0)