Automated rollback of commit e969130525e34fbc5a6b5ff6ed65b934298b449a.

PiperOrigin-RevId: 936906229
Change-Id: Ic9a2cca7b8f3f37b9b48f1b25da23808ff2da97c
diff --git a/rules/android_binary/attrs.bzl b/rules/android_binary/attrs.bzl
index 8a24f9a..134e4ba 100644
--- a/rules/android_binary/attrs.bzl
+++ b/rules/android_binary/attrs.bzl
@@ -262,7 +262,6 @@
         _attrs.DATA_CONTEXT,
         _attrs.ANDROID_TOOLCHAIN_ATTRS,
         _attrs.AUTOMATIC_EXEC_GROUPS_ENABLED,
-        _attrs.FLAGS_ATTRS,
     ),
     # TODO(b/167599192): don't override manifest attr to remove .xml file restriction.
     manifest = attr.label(
diff --git a/rules/android_binary/impl.bzl b/rules/android_binary/impl.bzl
index a893ab3..7e3fced 100644
--- a/rules/android_binary/impl.bzl
+++ b/rules/android_binary/impl.bzl
@@ -46,7 +46,7 @@
     "utils",
 )
 load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
-load("//rules/flags:flags.bzl", "read_possibly_native_flag", _flags = "flags")
+load("//rules/flags:flags.bzl", _flags = "flags")
 load("@rules_java//java/common:java_common.bzl", "java_common")
 load("@rules_java//java/common:java_info.bzl", "JavaInfo")
 load("@rules_java//java/common:java_plugin_info.bzl", "JavaPluginInfo")
@@ -292,14 +292,14 @@
     if proguard_output_map:
         # Proguard map from preprocessing will be merged with Proguard map for desugared
         # library.
-        if should_optimize_dex and read_possibly_native_flag(ctx, "desugar_java8_libs"):
+        if should_optimize_dex and ctx.fragments.android.desugar_java8_libs:
             postprocessing_output_map = _dex.get_dx_artifact(ctx, "_proguard_output_for_desugared_library.map")
             final_proguard_output_map = ctx.actions.declare_file(ctx.label.name + "_proguard.map")
         elif should_optimize_dex:
             # No desugared library, Proguard map from postprocessing is the final Proguard map.
             postprocessing_output_map = ctx.actions.declare_file(ctx.label.name + "_proguard.map")
             final_proguard_output_map = postprocessing_output_map
-        elif read_possibly_native_flag(ctx, "desugar_java8_libs"):
+        elif ctx.fragments.android.desugar_java8_libs:
             # No postprocessing, Proguard map from merging with the desugared library map is the
             # final Proguard map.
             postprocessing_output_map = proguard_output_map
@@ -357,7 +357,7 @@
             toolchain_type = ANDROID_TOOLCHAIN_TYPE,
         )
 
-    if read_possibly_native_flag(ctx, "desugar_java8_libs") and classes_dex_zip.extension == "zip":
+    if ctx.fragments.android.desugar_java8_libs and classes_dex_zip.extension == "zip":
         final_classes_dex_zip = _dex.get_dx_artifact(ctx, "final_classes_dex.zip")
 
         java8_legacy_dex, java8_legacy_dex_map = _dex.get_java8_legacy_dex_and_map(
diff --git a/rules/android_binary/r8.bzl b/rules/android_binary/r8.bzl
index a252f5b..2516c88 100644
--- a/rules/android_binary/r8.bzl
+++ b/rules/android_binary/r8.bzl
@@ -34,7 +34,7 @@
     "utils",
 )
 load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
-load("//rules/flags:flags.bzl", "read_possibly_native_flag", _flags = "flags")
+load("//rules/flags:flags.bzl", _flags = "flags")
 
 visibility(PROJECT_VISIBILITY)
 
@@ -129,7 +129,7 @@
     args.add("--pg-map-output", proguard_mappings_output_file)
 
     r8_inputs = [android_jar, deploy_jar] + proguard_specs
-    if read_possibly_native_flag(ctx, "desugar_java8_libs") and desugared_lib_config:
+    if ctx.fragments.android.desugar_java8_libs and desugared_lib_config:
         args.add("--desugared-lib", desugared_lib_config)
         r8_inputs.append(desugared_lib_config)
 
@@ -149,7 +149,7 @@
     # backport references, but does NOT include the j$.* implementation classes
     # in its output. Append the prebuilt desugared library DEX so the j$.*
     # classes are available at runtime.
-    if read_possibly_native_flag(ctx, "desugar_java8_libs") and desugared_lib_config:
+    if ctx.fragments.android.desugar_java8_libs and desugared_lib_config:
         final_classes_dex_zip = ctx.actions.declare_file(ctx.label.name + "_final_dexes.zip")
         java8_legacy_dex = utils.only(
             get_android_toolchain(ctx).java8_legacy_dex.files.to_list(),
diff --git a/rules/attrs.bzl b/rules/attrs.bzl
index f58952a..fbe58fe 100644
--- a/rules/attrs.bzl
+++ b/rules/attrs.bzl
@@ -312,9 +312,6 @@
         _desugared_java8_legacy_apis = attr.label(
             default = Label("//tools/android:desugared_java8_legacy_apis"),
         ),
-        _desugar_java8_libs = attr.label(
-            default = Label("//rules/flags:desugar_java8_libs"),
-        ),
         _dexbuilder = attr.label(
             cfg = "exec",
             default = Label("//tools/android:dexbuilder"),
@@ -511,12 +508,6 @@
     _use_auto_exec_groups = attr.bool(default = True),
 )
 
-_FLAGS_ATTRS = dict(
-    _desugar_java8_libs = attr.label(
-        default = Label("//rules/flags:desugar_java8_libs"),
-    ),
-)
-
 attrs = struct(
     ANDROID_SDK = _ANDROID_SDK,
     compilation_attributes = _compilation_attributes,
@@ -527,5 +518,4 @@
     add = _add,
     replace = _replace,
     AUTOMATIC_EXEC_GROUPS_ENABLED = _AUTOMATIC_EXEC_GROUPS_ENABLED,
-    FLAGS_ATTRS = _FLAGS_ATTRS,
 )
diff --git a/rules/desugar.bzl b/rules/desugar.bzl
index d75133f..74348f8 100644
--- a/rules/desugar.bzl
+++ b/rules/desugar.bzl
@@ -14,7 +14,6 @@
 """Bazel Desugar Commands."""
 
 load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
-load("//rules/flags:flags.bzl", "read_possibly_native_flag")
 
 visibility(PROJECT_VISIBILITY)
 
@@ -57,7 +56,7 @@
     input_file_deps = [input]
     if library_desugaring:
         args.add("--emit_dependency_metadata_as_needed")
-        if read_possibly_native_flag(ctx, "desugar_java8_libs"):
+        if ctx.fragments.android.desugar_java8_libs:
             args.add("--desugar_supported_core_libs")
 
     # Unconditionally add --desugared_lib_config. This matches the behavior of tools/android/d8_desugar.sh.
diff --git a/rules/dex_desugar_aspect.bzl b/rules/dex_desugar_aspect.bzl
index b97b021..b154240 100644
--- a/rules/dex_desugar_aspect.bzl
+++ b/rules/dex_desugar_aspect.bzl
@@ -296,7 +296,6 @@
         },
         _attrs.ANDROID_SDK,
         _min_sdk_version.attrs,
-        _attrs.FLAGS_ATTRS,
     ),
     fragments = ["android"],
     toolchains = [
diff --git a/rules/flags/BUILD b/rules/flags/BUILD
index 5a3e825..ed32594 100644
--- a/rules/flags/BUILD
+++ b/rules/flags/BUILD
@@ -28,7 +28,6 @@
     visibility = ["//:__subpackages__"],
     deps = [
         "//rules:visibility_bzl",
-        "@bazel_features//:features",
         "@bazel_skylib//rules:common_settings",
     ],
 )
diff --git a/rules/flags/flags.bzl b/rules/flags/flags.bzl
index 6c9a565..6a8d4f7 100644
--- a/rules/flags/flags.bzl
+++ b/rules/flags/flags.bzl
@@ -13,10 +13,8 @@
 # limitations under the License.
 """Bazel Flags."""
 
-load("@bazel_features//private:util.bzl", "lt")  # buildifier: disable=bzl-visibility
 load("//rules:utils.bzl", "utils")
 load("//rules:visibility.bzl", "PROJECT_VISIBILITY")
-load("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo")
 
 visibility(PROJECT_VISIBILITY)
 
@@ -189,49 +187,6 @@
         return flags[FlagsInfo]
     return flags[0][FlagsInfo]
 
-_POSSIBLY_NATIVE_FLAGS = {
-    "desugar_java8_libs": (lambda ctx: ctx.fragments.android.desugar_java8_libs, "native"),
-}
-
-def read_possibly_native_flag(ctx, flag_name):
-    """
-    Canonical API for reading a Android build flag.
-
-    Flags might be defined in Starlark or native-Bazel. This function reads flags
-    from the correct source based on supporting Bazel version and --incompatible*
-    flags that disable native references.
-
-    Args:
-        ctx: Rule's configuration context.
-        flag_name: Name of the flag to read, without preceding "--".
-
-    Returns:
-        The flag's value.
-    """
-
-    # Bazel 9.1+ can disable these fragments with --incompatible_remove_ctx_android_fragment.
-    # Disabling them means bazel expects Android to read Starlark flags.
-    use_native_def = hasattr(ctx.fragments, "android")
-
-    # Developer override to force the Starlark definition for testing.
-    # This would allow us to migrate flags gradually from native to Starlark with flag aliases.
-    if _POSSIBLY_NATIVE_FLAGS[flag_name][1] == "starlark":
-        use_native_def = False
-
-    if lt("9.1.0"):
-        use_native_def = True
-
-    if use_native_def:
-        return _POSSIBLY_NATIVE_FLAGS[flag_name][0](ctx)
-    else:
-        # Starlark definition of "--foo" is assumed to be a label dependency named "_foo".
-        if hasattr(ctx.attr, "_" + flag_name):
-            return getattr(ctx.attr, "_" + flag_name)[BuildSettingInfo].value
-        elif hasattr(ctx.fragments, "android"):
-            return _POSSIBLY_NATIVE_FLAGS[flag_name][0](ctx)
-
-    fail("Unable to read flag value for " + flag_name)
-
 flags = struct(
     DEFINE_bool = bool_flag,
     DEFINE_bool_group = bool_flag_group,