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;
       }
     };