Change host transitions to execution transitions in Objc rules.
PiperOrigin-RevId: 416227805
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD b/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD
index 735a836..8dd42bf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD
@@ -27,9 +27,9 @@
"//src/main/java/com/google/devtools/build/lib/analysis:config/config_aware_aspect_builder",
"//src/main/java/com/google/devtools/build/lib/analysis:config/core_option_converters",
"//src/main/java/com/google/devtools/build/lib/analysis:config/core_options",
+ "//src/main/java/com/google/devtools/build/lib/analysis:config/execution_transition_factory",
"//src/main/java/com/google/devtools/build/lib/analysis:config/fragment",
"//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_options",
- "//src/main/java/com/google/devtools/build/lib/analysis:config/host_transition",
"//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/patch_transition",
"//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/split_transition",
"//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/starlark_exposed_rule_transition_factory",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
index 8825101..6187ff2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
@@ -39,7 +39,7 @@
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.config.ConfigAwareAspectBuilder;
-import com.google.devtools.build.lib.analysis.config.HostTransition;
+import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory;
import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.RepositoryName;
@@ -157,11 +157,11 @@
.useToolchainTransition(true)
.add(
attr("$grep_includes", LABEL)
- .cfg(HostTransition.createFactory())
+ .cfg(ExecutionTransitionFactory.create())
.value(Label.parseAbsoluteUnchecked(toolsRepository + "//tools/cpp:grep-includes")))
.add(
attr("$j2objc", LABEL)
- .cfg(HostTransition.createFactory())
+ .cfg(ExecutionTransitionFactory.create())
.exec()
.value(
Label.parseAbsoluteUnchecked(
@@ -169,7 +169,7 @@
.add(
attr("$j2objc_wrapper", LABEL)
.allowedFileTypes(FileType.of(".py"))
- .cfg(HostTransition.createFactory())
+ .cfg(ExecutionTransitionFactory.create())
.exec()
.singleArtifact()
.value(
@@ -178,7 +178,7 @@
.add(
attr("$j2objc_header_map", LABEL)
.allowedFileTypes(FileType.of(".py"))
- .cfg(HostTransition.createFactory())
+ .cfg(ExecutionTransitionFactory.create())
.exec()
.singleArtifact()
.value(
@@ -186,19 +186,19 @@
toolsRepository + "//tools/j2objc:j2objc_header_map")))
.add(
attr("$jre_emul_jar", LABEL)
- .cfg(HostTransition.createFactory())
+ .cfg(ExecutionTransitionFactory.create())
.value(
Label.parseAbsoluteUnchecked(
toolsRepository + "//third_party/java/j2objc:jre_emul.jar")))
.add(
attr("$jre_emul_module", LABEL)
- .cfg(HostTransition.createFactory())
+ .cfg(ExecutionTransitionFactory.create())
.value(
Label.parseAbsoluteUnchecked(
toolsRepository + "//third_party/java/j2objc:jre_emul_module")))
.add(
attr(":dead_code_report", LABEL)
- .cfg(HostTransition.createFactory())
+ .cfg(ExecutionTransitionFactory.create())
.value(DEAD_CODE_REPORT))
.add(
attr("$jre_lib", LABEL)
@@ -207,7 +207,7 @@
toolsRepository + "//third_party/java/j2objc:jre_core_lib")))
.add(
attr("$xcrunwrapper", LABEL)
- .cfg(HostTransition.createFactory())
+ .cfg(ExecutionTransitionFactory.create())
.exec()
.value(Label.parseAbsoluteUnchecked(toolsRepository + "//tools/objc:xcrunwrapper")))
.add(
@@ -218,7 +218,7 @@
.value(AppleToolchain.getXcodeConfigLabel(toolsRepository)))
.add(
attr("$zipper", LABEL)
- .cfg(HostTransition.createFactory())
+ .cfg(ExecutionTransitionFactory.create())
.exec()
.value(Label.parseAbsoluteUnchecked(toolsRepository + "//tools/zip:zipper")))
.add(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
index 9bb5c82..b23eec4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
@@ -36,7 +36,7 @@
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
-import com.google.devtools.build.lib.analysis.config.HostTransition;
+import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.RuleClass;
@@ -660,7 +660,7 @@
.add(
attr("$j2objc_dead_code_pruner", LABEL)
.allowedFileTypes(FileType.of(".py"))
- .cfg(HostTransition.createFactory())
+ .cfg(ExecutionTransitionFactory.create())
.exec()
.singleArtifact()
.value(env.getToolsLabel("//tools/objc:j2objc_dead_code_pruner")))
@@ -731,7 +731,7 @@
return builder
.add(
attr("$xcrunwrapper", LABEL)
- .cfg(HostTransition.createFactory())
+ .cfg(ExecutionTransitionFactory.create())
.exec()
.value(env.getToolsLabel("//tools/objc:xcrunwrapper")))
.build();
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryStarlarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryStarlarkApiTest.java
index 55b4b67..f8867cb 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryStarlarkApiTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryStarlarkApiTest.java
@@ -82,7 +82,7 @@
" fragment='apple', name='xcode_config_label'),),",
" '_xcrunwrapper': attr.label(",
" executable=True,",
- " cfg='host',",
+ " cfg='exec',",
" default=Label('" + toolsLoc + ":xcrunwrapper')),",
" 'binary_type': attr.string(),",
" 'bundle_loader': attr.label(),",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
index dcea63b..0748cd7 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
@@ -29,6 +29,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
+import com.google.common.truth.Correspondence;
import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.actions.ActionExecutionException;
import com.google.devtools.build.lib.actions.Artifact;
@@ -65,6 +66,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.regex.Pattern;
import javax.annotation.Nullable;
/**
@@ -76,6 +78,8 @@
* simply call a check... method) across several rule types.
*/
public abstract class ObjcRuleTestCase extends BuildViewTestCase {
+ private static final Correspondence<String, String> MATCHES_REGEX =
+ Correspondence.from((a, b) -> Pattern.matches(b, a), "matches");
protected static final String MOCK_XCRUNWRAPPER_PATH =
toolsRepoExecPath("tools/objc/xcrunwrapper.sh");
protected static final String MOCK_XCRUNWRAPPER_EXECUTABLE_PATH =
@@ -163,8 +167,9 @@
}
private static String toolExecutable(String toolSrcPath) {
- return String.format("%s-out/host/bin/%s", TestConstants.PRODUCT_NAME,
- TestConstants.TOOLS_REPOSITORY_PATH_PREFIX + toolSrcPath);
+ return String.format(
+ "%s-out/[^/]*-exec-[^/]*/bin/%s",
+ TestConstants.PRODUCT_NAME, TestConstants.TOOLS_REPOSITORY_PATH_PREFIX + toolSrcPath);
}
private String configurationDir(
@@ -1096,13 +1101,20 @@
configurationBin("x86_64", ConfigurationDistinguisher.APPLEBIN_IOS) + "x/x_bin";
assertThat(Artifact.asExecPaths(action.getInputs()))
+ .comparingElementsUsing(MATCHES_REGEX)
.containsExactly(
i386Bin, x8664Bin, MOCK_XCRUNWRAPPER_PATH, MOCK_XCRUNWRAPPER_EXECUTABLE_PATH);
assertThat(action.getArguments())
- .containsExactly(MOCK_XCRUNWRAPPER_EXECUTABLE_PATH, LIPO,
- "-create", i386Bin, x8664Bin,
- "-o", execPathEndingWith(action.getOutputs(), "x_lipobin"))
+ .comparingElementsUsing(MATCHES_REGEX)
+ .containsExactly(
+ MOCK_XCRUNWRAPPER_EXECUTABLE_PATH,
+ LIPO,
+ "-create",
+ i386Bin,
+ x8664Bin,
+ "-o",
+ execPathEndingWith(action.getOutputs(), "x_lipobin"))
.inOrder();
assertThat(Artifact.toRootRelativePaths(action.getOutputs()))
@@ -1418,11 +1430,14 @@
+ "x/x_bin";
assertThat(Artifact.asExecPaths(action.getInputs()))
+ .comparingElementsUsing(MATCHES_REGEX)
.containsExactly(
i386Bin, armv7kBin, MOCK_XCRUNWRAPPER_PATH, MOCK_XCRUNWRAPPER_EXECUTABLE_PATH);
- assertContainsSublist(action.getArguments(), ImmutableList.of(
- MOCK_XCRUNWRAPPER_EXECUTABLE_PATH, LIPO, "-create"));
+ assertThat(action.getArguments())
+ .comparingElementsUsing(MATCHES_REGEX)
+ .containsAtLeast(MOCK_XCRUNWRAPPER_EXECUTABLE_PATH, LIPO, "-create")
+ .inOrder();
assertThat(action.getArguments()).containsAtLeast(armv7kBin, i386Bin);
assertContainsSublist(action.getArguments(), ImmutableList.of(
"-o", execPathEndingWith(action.getOutputs(), "x_lipobin")));