Remove Skylark ConfigurationTransition.DATA references. PiperOrigin-RevId: 183733621
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java index 9a57dae..5275dc9 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
@@ -812,6 +812,7 @@ .build(); SkylarkUtils.setToolsRepository(env, toolsRepository); SkylarkUtils.setFragmentMap(env, configurationFragmentMap); + SkylarkUtils.setLipoDataTransition(env, getLipoDataTransition()); return env; }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java index f0bcfa4..a2fefdf 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
@@ -20,7 +20,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.analysis.config.HostTransition; -import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransitionProxy; +import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.events.Location; @@ -295,7 +295,7 @@ if (containsNonNoneKey(arguments, CONFIGURATION_ARG)) { Object trans = arguments.get(CONFIGURATION_ARG); if (trans.equals("data")) { - builder.cfg(ConfigurationTransitionProxy.DATA); + builder.cfg((PatchTransition) SkylarkUtils.getLipoDataTransition(env)); } else if (trans.equals("host")) { builder.cfg(HostTransition.INSTANCE); } else if (trans instanceof SplitTransition) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java index 5b2b6e3..7a83ac5 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
@@ -15,7 +15,6 @@ package com.google.devtools.build.lib.analysis.skylark; import static com.google.devtools.build.lib.analysis.BaseRuleClasses.RUN_UNDER; -import static com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransitionProxy.DATA; import static com.google.devtools.build.lib.packages.Attribute.attr; import static com.google.devtools.build.lib.packages.BuildType.LABEL; import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST; @@ -41,6 +40,7 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.config.ConfigAwareRuleClassBuilder; import com.google.devtools.build.lib.analysis.config.HostTransition; +import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; import com.google.devtools.build.lib.analysis.skylark.SkylarkAttr.Descriptor; import com.google.devtools.build.lib.analysis.test.TestConfiguration; import com.google.devtools.build.lib.cmdline.Label; @@ -143,7 +143,8 @@ .build(); /** Parent rule class for test Skylark rules. */ - public static final RuleClass getTestBaseRule(String toolsRepository) { + public static final RuleClass getTestBaseRule(String toolsRepository, + PatchTransition lipoDataTransition) { return new RuleClass.Builder("$test_base_rule", RuleClassType.ABSTRACT, true, baseRule) .requiresConfigurationFragments(TestConfiguration.class) .add( @@ -200,7 +201,9 @@ .cfg(HostTransition.INSTANCE) .value(labelCache.getUnchecked("//tools/defaults:coverage_report_generator")) .singleArtifact()) - .add(attr(":run_under", LABEL).cfg(DATA).value(RUN_UNDER)) + .add(attr(":run_under", LABEL) + .cfg(lipoDataTransition) + .value(RUN_UNDER)) .build(); } @@ -496,7 +499,8 @@ RuleClassType type = test ? RuleClassType.TEST : RuleClassType.NORMAL; RuleClass parent = test - ? getTestBaseRule(SkylarkUtils.getToolsRepository(funcallEnv)) + ? getTestBaseRule(SkylarkUtils.getToolsRepository(funcallEnv), + (PatchTransition) SkylarkUtils.getLipoDataTransition(funcallEnv)) : (executable ? binaryBaseRule : baseRule); // We'll set the name later, pass the empty string for now.
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java index 397768a..84cec5b 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java
@@ -23,6 +23,7 @@ private static class BazelInfo { String toolsRepository; ImmutableMap<String, Class<?>> fragmentNameToClass; + Object lipoDataTransition; } private static final String BAZEL_INFO_KEY = "$bazel"; @@ -59,11 +60,32 @@ getInfo(env).fragmentNameToClass = fragmentNameToClass; } - /* + /** * Returns the {@link Map} from configuration fragment name to configuration fragment class, as * set by {@link #setFragmentMap}. */ public static ImmutableMap<String, Class<?>> getFragmentMap(Environment env) { return getInfo(env).fragmentNameToClass; } + + /** + * Sets the configuration transition to apply to <code>cfg = "data"</code> attributes. + * + * <p>This must be a + * {@link com.google.devtools.build.lib.analysis.config.transitions.PatchTransition}. But that + * class isn't available in <code>lib.syntax</code>, so we can't type-check it here. + */ + public static void setLipoDataTransition(Environment env, Object lipoDataTransition) { + getInfo(env).lipoDataTransition = lipoDataTransition; + } + + /** + * Returns the configuration transition to apply to <code>cfg = "data"</code> attributes. + * + * <p>This is always a + * {@link com.google.devtools.build.lib.analysis.config.transitions.PatchTransition}. + */ + public static Object getLipoDataTransition(Environment env) { + return getInfo(env).lipoDataTransition; + } }
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java index 58dfecf..0524bb3 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -22,7 +22,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; -import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransitionProxy; import com.google.devtools.build.lib.analysis.config.transitions.NoTransition; import com.google.devtools.build.lib.analysis.skylark.SkylarkAttr; import com.google.devtools.build.lib.analysis.skylark.SkylarkAttr.Descriptor; @@ -46,6 +45,7 @@ import com.google.devtools.build.lib.packages.SkylarkInfo; import com.google.devtools.build.lib.packages.SkylarkProvider; import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier; +import com.google.devtools.build.lib.rules.cpp.transitions.DisableLipoTransition; import com.google.devtools.build.lib.skyframe.SkylarkImportLookupFunction; import com.google.devtools.build.lib.skylark.util.SkylarkTestCase; import com.google.devtools.build.lib.syntax.BuildFileAST; @@ -540,7 +540,7 @@ @Test public void testAttrCfgData() throws Exception { Attribute attr = buildAttribute("a1", "attr.label(cfg = 'data', allow_files = True)"); - assertThat(attr.getConfigurationTransition()).isEqualTo(ConfigurationTransitionProxy.DATA); + assertThat(attr.getConfigurationTransition()).isEqualTo(DisableLipoTransition.INSTANCE); } @Test
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkTestCase.java b/src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkTestCase.java index a442f7c..b422140 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkTestCase.java
@@ -72,6 +72,7 @@ // create rules. Creating actual rules is tested in SkylarkIntegrationTest. new PackageContext(null, null, getEventHandler(), null)); SkylarkUtils.setToolsRepository(env, TestConstants.TOOLS_REPOSITORY); + SkylarkUtils.setLipoDataTransition(env, ruleClassProvider.getLipoDataTransition()); return env; } };