1*9e965d6fSRomain Jobredeaux# Copyright 2020 The Bazel Authors. All rights reserved. 2*9e965d6fSRomain Jobredeaux# 3*9e965d6fSRomain Jobredeaux# Licensed under the Apache License, Version 2.0 (the "License"); 4*9e965d6fSRomain Jobredeaux# you may not use this file except in compliance with the License. 5*9e965d6fSRomain Jobredeaux# You may obtain a copy of the License at 6*9e965d6fSRomain Jobredeaux# 7*9e965d6fSRomain Jobredeaux# http://www.apache.org/licenses/LICENSE-2.0 8*9e965d6fSRomain Jobredeaux# 9*9e965d6fSRomain Jobredeaux# Unless required by applicable law or agreed to in writing, software 10*9e965d6fSRomain Jobredeaux# distributed under the License is distributed on an "AS IS" BASIS, 11*9e965d6fSRomain Jobredeaux# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*9e965d6fSRomain Jobredeaux# See the License for the specific language governing permissions and 13*9e965d6fSRomain Jobredeaux# limitations under the License. 14*9e965d6fSRomain Jobredeaux 15*9e965d6fSRomain Jobredeaux"""Access Control Lists. 16*9e965d6fSRomain Jobredeaux 17*9e965d6fSRomain JobredeauxTo create a new list: 18*9e965d6fSRomain Jobredeaux 1. Create new .bzl file in the acls directory with a list of targets. 19*9e965d6fSRomain Jobredeaux 2. Create matching method in this file. 20*9e965d6fSRomain Jobredeaux 3. Add matching method to struct. 21*9e965d6fSRomain Jobredeaux 22*9e965d6fSRomain JobredeauxTo check an ACL: 23*9e965d6fSRomain Jobredeaux 1. Import the `acls` struct. 24*9e965d6fSRomain Jobredeaux 2. Check `acls.list_name(fqn)` using the //fully/qualified:target 25*9e965d6fSRomain Jobredeaux 26*9e965d6fSRomain JobredeauxTo update a list: 27*9e965d6fSRomain Jobredeaux 1. Directly add/remove/edit targets in the appropriate .bzl file 28*9e965d6fSRomain Jobredeaux""" 29*9e965d6fSRomain Jobredeaux 30*9e965d6fSRomain Jobredeauxload("//rules/acls:aar_import_deps_checker.bzl", "AAR_IMPORT_DEPS_CHECKER_FALLBACK", "AAR_IMPORT_DEPS_CHECKER_ROLLOUT") 31*9e965d6fSRomain Jobredeauxload("//rules/acls:aar_import_explicit_exports_manifest.bzl", "AAR_IMPORT_EXPLICIT_EXPORTS_MANIFEST") 32*9e965d6fSRomain Jobredeauxload("//rules/acls:aar_import_exports_r_java.bzl", "AAR_IMPORT_EXPORTS_R_JAVA") 33*9e965d6fSRomain Jobredeauxload("//rules/acls:aar_propagate_resources.bzl", "AAR_PROPAGATE_RESOURCES_FALLBACK", "AAR_PROPAGATE_RESOURCES_ROLLOUT") 34*9e965d6fSRomain Jobredeauxload("//rules/acls:ait_install_snapshots.bzl", "APP_INSTALLATION_SNAPSHOT", "APP_INSTALLATION_SNAPSHOT_FALLBACK") 35*9e965d6fSRomain Jobredeauxload("//rules/acls:allow_resource_conflicts.bzl", "ALLOW_RESOURCE_CONFLICTS") 36*9e965d6fSRomain Jobredeauxload("//rules/acls:android_apk_to_bundle_features_lockdown.bzl", "ANDROID_APK_TO_BUNDLE_FEATURES") 37*9e965d6fSRomain Jobredeauxload("//rules/acls:android_archive_dogfood.bzl", "ANDROID_ARCHIVE_DOGFOOD") 38*9e965d6fSRomain Jobredeauxload("//rules/acls:android_archive_duplicate_class_allowlist.bzl", "ANDROID_ARCHIVE_DUPLICATE_CLASS_ALLOWLIST") 39*9e965d6fSRomain Jobredeauxload("//rules/acls:android_archive_excluded_deps_denylist.bzl", "ANDROID_ARCHIVE_EXCLUDED_DEPS_DENYLIST") 40*9e965d6fSRomain Jobredeauxload("//rules/acls:android_archive_exposed_package_allowlist.bzl", "ANDROID_ARCHIVE_EXPOSED_PACKAGE_ALLOWLIST") 41*9e965d6fSRomain Jobredeauxload("//rules/acls:android_binary_min_sdk_version_attribute.bzl", "ANDROID_BINARY_MIN_SDK_VERSION_ATTRIBUTE_ALLOWLIST") 42*9e965d6fSRomain Jobredeauxload("//rules/acls:android_binary_raw_access_to_resource_paths_allowlist.bzl", "ANDROID_BINARY_RAW_ACCESS_TO_RESOURCE_PATHS_ALLOWLIST") 43*9e965d6fSRomain Jobredeauxload("//rules/acls:android_binary_resource_name_obfuscation_opt_out_allowlist.bzl", "ANDROID_BINARY_RESOURCE_NAME_OBFUSCATION_OPT_OUT_ALLOWLIST") 44*9e965d6fSRomain Jobredeauxload("//rules/acls:android_binary_starlark_dex_desugar_proguard.bzl", "ANDROID_BINARY_STARLARK_DEX_DESUGAR_PROGUARD_FALLBACK", "ANDROID_BINARY_STARLARK_DEX_DESUGAR_PROGUARD_ROLLOUT") 45*9e965d6fSRomain Jobredeauxload("//rules/acls:android_binary_starlark_javac.bzl", "ANDROID_BINARY_STARLARK_JAVAC_FALLBACK", "ANDROID_BINARY_STARLARK_JAVAC_ROLLOUT") 46*9e965d6fSRomain Jobredeauxload("//rules/acls:android_binary_starlark_split_transition.bzl", "ANDROID_BINARY_STARLARK_SPLIT_TRANSITION_FALLBACK", "ANDROID_BINARY_STARLARK_SPLIT_TRANSITION_ROLLOUT") 47*9e965d6fSRomain Jobredeauxload("//rules/acls:android_binary_with_sandboxed_sdks_allowlist.bzl", "ANDROID_BINARY_WITH_SANDBOXED_SDKS_ALLOWLIST") 48*9e965d6fSRomain Jobredeauxload("//rules/acls:android_build_stamping_rollout.bzl", "ANDROID_BUILD_STAMPING_FALLBACK", "ANDROID_BUILD_STAMPING_ROLLOUT") 49*9e965d6fSRomain Jobredeauxload("//rules/acls:android_device_plugin_rollout.bzl", "ANDROID_DEVICE_PLUGIN_FALLBACK", "ANDROID_DEVICE_PLUGIN_ROLLOUT") 50*9e965d6fSRomain Jobredeauxload("//rules/acls:android_feature_splits_dogfood.bzl", "ANDROID_FEATURE_SPLITS_DOGFOOD") 51*9e965d6fSRomain Jobredeauxload("//rules/acls:android_instrumentation_binary_starlark_resources.bzl", "ANDROID_INSTRUMENTATION_BINARY_STARLARK_RESOURCES_FALLBACK", "ANDROID_INSTRUMENTATION_BINARY_STARLARK_RESOURCES_ROLLOUT") 52*9e965d6fSRomain Jobredeauxload("//rules/acls:android_instrumentation_test_manifest_check_rollout.bzl", "ANDROID_INSTRUMENTATION_TEST_MANIFEST_CHECK_FALLBACK", "ANDROID_INSTRUMENTATION_TEST_MANIFEST_CHECK_ROLLOUT") 53*9e965d6fSRomain Jobredeauxload("//rules/acls:android_instrumentation_test_prebuilt_test_apk.bzl", "ANDROID_INSTRUMENTATION_TEST_PREBUILT_TEST_APK_FALLBACK", "ANDROID_INSTRUMENTATION_TEST_PREBUILT_TEST_APK_ROLLOUT") 54*9e965d6fSRomain Jobredeauxload("//rules/acls:android_library_resources_without_srcs.bzl", "ANDROID_LIBRARY_RESOURCES_WITHOUT_SRCS", "ANDROID_LIBRARY_RESOURCES_WITHOUT_SRCS_GENERATOR_FUNCTIONS") 55*9e965d6fSRomain Jobredeauxload("//rules/acls:android_library_starlark_resource_outputs.bzl", "ANDROID_LIBRARY_STARLARK_RESOURCE_OUTPUTS_FALLBACK", "ANDROID_LIBRARY_STARLARK_RESOURCE_OUTPUTS_ROLLOUT") 56*9e965d6fSRomain Jobredeauxload("//rules/acls:android_library_use_aosp_aidl_compiler.bzl", "ANDROID_LIBRARY_USE_AOSP_AIDL_COMPILER_ALLOWLIST") 57*9e965d6fSRomain Jobredeauxload("//rules/acls:android_lint_checks_rollout.bzl", "ANDROID_LINT_CHECKS_FALLBACK", "ANDROID_LINT_CHECKS_ROLLOUT") 58*9e965d6fSRomain Jobredeauxload("//rules/acls:android_lint_rollout.bzl", "ANDROID_LINT_FALLBACK", "ANDROID_LINT_ROLLOUT") 59*9e965d6fSRomain Jobredeauxload("//rules/acls:android_local_test_jdk_sts_rollout.bzl", "ANDROID_LOCAL_TEST_JDK_STS_FALLBACK", "ANDROID_LOCAL_TEST_JDK_STS_ROLLOUT") 60*9e965d6fSRomain Jobredeauxload("//rules/acls:android_test_lockdown.bzl", "ANDROID_TEST_LOCKDOWN_GENERATOR_FUNCTIONS", "ANDROID_TEST_LOCKDOWN_TARGETS") 61*9e965d6fSRomain Jobredeauxload("//rules/acls:android_test_platform_rollout.bzl", "ANDROID_TEST_PLATFORM_FALLBACK", "ANDROID_TEST_PLATFORM_ROLLOUT") 62*9e965d6fSRomain Jobredeauxload("//rules/acls:b122039567.bzl", "B122039567") 63*9e965d6fSRomain Jobredeauxload("//rules/acls:b123854163.bzl", "B123854163") 64*9e965d6fSRomain Jobredeauxload("//rules/acls:baseline_profiles_optimizer_integration.bzl", "BASELINE_PROFILES_OPTIMIZER_INTEGRATION") 65*9e965d6fSRomain Jobredeauxload("//rules/acls:baseline_profiles_rollout.bzl", "BASELINE_PROFILES_ROLLOUT") 66*9e965d6fSRomain Jobredeauxload("//rules/acls:databinding.bzl", "DATABINDING_ALLOWED", "DATABINDING_DISALLOWED") 67*9e965d6fSRomain Jobredeauxload("//rules/acls:dex2oat_opts.bzl", "CAN_USE_DEX2OAT_OPTIONS") 68*9e965d6fSRomain Jobredeauxload("//rules/acls:fix_export_exporting_rollout.bzl", "FIX_EXPORT_EXPORTING_FALLBACK", "FIX_EXPORT_EXPORTING_ROLLOUT") 69*9e965d6fSRomain Jobredeauxload("//rules/acls:fix_resource_transitivity_rollout.bzl", "FIX_RESOURCE_TRANSITIVITY_FALLBACK", "FIX_RESOURCE_TRANSITIVITY_ROLLOUT") 70*9e965d6fSRomain Jobredeauxload("//rules/acls:host_dex2oat_rollout.bzl", "AIT_USE_HOST_DEX2OAT_ROLLOUT", "AIT_USE_HOST_DEX2OAT_ROLLOUT_FALLBACK") 71*9e965d6fSRomain Jobredeauxload("//rules/acls:install_apps_in_data.bzl", "INSTALL_APPS_IN_DATA") 72*9e965d6fSRomain Jobredeauxload("//rules/acls:lint_registry_rollout.bzl", "LINT_REGISTRY_FALLBACK", "LINT_REGISTRY_ROLLOUT") 73*9e965d6fSRomain Jobredeauxload("//rules/acls:local_test_multi_proto.bzl", "LOCAL_TEST_MULTI_PROTO_PKG") 74*9e965d6fSRomain Jobredeauxload("//rules/acls:local_test_rollout.bzl", "LOCAL_TEST_FALLBACK", "LOCAL_TEST_ROLLOUT") 75*9e965d6fSRomain Jobredeauxload("//rules/acls:local_test_starlark_resources.bzl", "LOCAL_TEST_STARLARK_RESOURCES_FALLBACK", "LOCAL_TEST_STARLARK_RESOURCES_ROLLOUT") 76*9e965d6fSRomain Jobredeauxload("//rules/acls:min_sdk_floors.bzl", "MIN_SDK_FLOORS") 77*9e965d6fSRomain Jobredeauxload( 78*9e965d6fSRomain Jobredeaux "//rules/acls:partial_jetification_targets.bzl", 79*9e965d6fSRomain Jobredeaux "PARTIAL_JETIFICATION_TARGETS_FALLBACK", 80*9e965d6fSRomain Jobredeaux "PARTIAL_JETIFICATION_TARGETS_ROLLOUT", 81*9e965d6fSRomain Jobredeaux) 82*9e965d6fSRomain Jobredeauxload("//rules/acls:proguard_apply_mapping.bzl", "ALLOW_PROGUARD_APPLY_MAPPING") 83*9e965d6fSRomain Jobredeauxload("//rules/acls:r8.bzl", "USE_R8") 84*9e965d6fSRomain Jobredeauxload("//rules/acls:shared_library_resource_linking.bzl", "SHARED_LIBRARY_RESOURCE_LINKING_ALLOWLIST") 85*9e965d6fSRomain Jobredeauxload("//rules/acls:test_to_instrument_test_rollout.bzl", "TEST_TO_INSTRUMENT_TEST_FALLBACK", "TEST_TO_INSTRUMENT_TEST_ROLLOUT") 86*9e965d6fSRomain Jobredeaux 87*9e965d6fSRomain Jobredeauxdef _get_min_sdk_floor(fqn): 88*9e965d6fSRomain Jobredeaux for minsdk, package_dict in MIN_SDK_FLOORS_DICT.items(): 89*9e965d6fSRomain Jobredeaux if matches(fqn, package_dict): 90*9e965d6fSRomain Jobredeaux return minsdk 91*9e965d6fSRomain Jobredeaux fail("No matching min_sdk_floor for %s" % fqn) 92*9e965d6fSRomain Jobredeaux 93*9e965d6fSRomain Jobredeauxdef _in_aar_import_deps_checker(fqn): 94*9e965d6fSRomain Jobredeaux return not matches(fqn, AAR_IMPORT_DEPS_CHECKER_FALLBACK_DICT) and matches(fqn, AAR_IMPORT_DEPS_CHECKER_ROLLOUT_DICT) 95*9e965d6fSRomain Jobredeaux 96*9e965d6fSRomain Jobredeauxdef _in_aar_import_explicit_exports_manifest(fqn): 97*9e965d6fSRomain Jobredeaux return matches(fqn, AAR_IMPORT_EXPLICIT_EXPORTS_MANIFEST_DICT) 98*9e965d6fSRomain Jobredeaux 99*9e965d6fSRomain Jobredeauxdef _in_aar_import_exports_r_java(fqn): 100*9e965d6fSRomain Jobredeaux return matches(fqn, AAR_IMPORT_EXPORTS_R_JAVA_DICT) 101*9e965d6fSRomain Jobredeaux 102*9e965d6fSRomain Jobredeauxdef _in_aar_propagate_resources(fqn): 103*9e965d6fSRomain Jobredeaux # AOSP-only change. 104*9e965d6fSRomain Jobredeaux return True 105*9e965d6fSRomain Jobredeaux 106*9e965d6fSRomain Jobredeauxdef _in_android_archive_dogfood(fqn): 107*9e965d6fSRomain Jobredeaux return matches(fqn, ANDROID_ARCHIVE_DOGFOOD_DICT) 108*9e965d6fSRomain Jobredeaux 109*9e965d6fSRomain Jobredeauxdef _in_android_archive_excluded_deps_denylist(fqn): 110*9e965d6fSRomain Jobredeaux return matches(fqn, ANDROID_ARCHIVE_EXCLUDED_DEPS_DENYLIST_DICT) 111*9e965d6fSRomain Jobredeaux 112*9e965d6fSRomain Jobredeauxdef _in_android_device_plugin_rollout(fqn): 113*9e965d6fSRomain Jobredeaux return not matches(fqn, ANDROID_DEVICE_PLUGIN_FALLBACK_DICT) and matches(fqn, ANDROID_DEVICE_PLUGIN_ROLLOUT_DICT) 114*9e965d6fSRomain Jobredeaux 115*9e965d6fSRomain Jobredeauxdef _in_android_instrumentation_binary_starlark_resources(fqn): 116*9e965d6fSRomain Jobredeaux return not matches(fqn, ANDROID_INSTRUMENTATION_BINARY_STARLARK_RESOURCES_FALLBACK_DICT) and matches(fqn, ANDROID_INSTRUMENTATION_BINARY_STARLARK_RESOURCES_ROLLOUT_DICT) 117*9e965d6fSRomain Jobredeaux 118*9e965d6fSRomain Jobredeauxdef _in_android_binary_starlark_javac(fqn): 119*9e965d6fSRomain Jobredeaux return not matches(fqn, ANDROID_BINARY_STARLARK_JAVAC_FALLBACK_DICT) and matches(fqn, ANDROID_BINARY_STARLARK_JAVAC_ROLLOUT_DICT) 120*9e965d6fSRomain Jobredeaux 121*9e965d6fSRomain Jobredeauxdef _in_android_binary_starlark_split_transition(fqn): 122*9e965d6fSRomain Jobredeaux return not matches(fqn, ANDROID_BINARY_STARLARK_SPLIT_TRANSITION_FALLBACK_DICT) and matches(fqn, ANDROID_BINARY_STARLARK_SPLIT_TRANSITION_ROLLOUT_DICT) 123*9e965d6fSRomain Jobredeaux 124*9e965d6fSRomain Jobredeauxdef _in_android_binary_with_sandboxed_sdks_allowlist(fqn): 125*9e965d6fSRomain Jobredeaux return matches(fqn, ANDROID_BINARY_WITH_SANDBOXED_SDKS_ALLOWLIST_DICT) 126*9e965d6fSRomain Jobredeaux 127*9e965d6fSRomain Jobredeauxdef _in_android_feature_splits_dogfood(fqn): 128*9e965d6fSRomain Jobredeaux return matches(fqn, ANDROID_FEATURE_SPLITS_DOGFOOD_DICT) 129*9e965d6fSRomain Jobredeaux 130*9e965d6fSRomain Jobredeauxdef _in_android_lint_checks_rollout(fqn): 131*9e965d6fSRomain Jobredeaux return not matches(fqn, ANDROID_LINT_CHECKS_FALLBACK_DICT) and matches(fqn, ANDROID_LINT_CHECKS_ROLLOUT_DICT) 132*9e965d6fSRomain Jobredeaux 133*9e965d6fSRomain Jobredeauxdef _in_android_lint_rollout(fqn): 134*9e965d6fSRomain Jobredeaux return not matches(fqn, ANDROID_LINT_FALLBACK_DICT) and matches(fqn, ANDROID_LINT_ROLLOUT_DICT) 135*9e965d6fSRomain Jobredeaux 136*9e965d6fSRomain Jobredeauxdef _in_lint_registry_rollout(fqn): 137*9e965d6fSRomain Jobredeaux return not matches(fqn, LINT_REGISTRY_FALLBACK_DICT) and matches(fqn, LINT_REGISTRY_ROLLOUT_DICT) 138*9e965d6fSRomain Jobredeaux 139*9e965d6fSRomain Jobredeauxdef _in_android_build_stamping_rollout(fqn): 140*9e965d6fSRomain Jobredeaux return not matches(fqn, ANDROID_BUILD_STAMPING_FALLBACK_DICT) and matches(fqn, ANDROID_BUILD_STAMPING_ROLLOUT_DICT) 141*9e965d6fSRomain Jobredeaux 142*9e965d6fSRomain Jobredeauxdef _in_android_test_lockdown_allowlist(fqn, generator): 143*9e965d6fSRomain Jobredeaux if generator == "android_test": 144*9e965d6fSRomain Jobredeaux return matches(fqn, ANDROID_TEST_LOCKDOWN_TARGETS) 145*9e965d6fSRomain Jobredeaux return generator in ANDROID_TEST_LOCKDOWN_GENERATOR_FUNCTIONS_DICT 146*9e965d6fSRomain Jobredeaux 147*9e965d6fSRomain Jobredeauxdef _in_b122039567(fqn): 148*9e965d6fSRomain Jobredeaux return matches(fqn, B122039567_DICT) 149*9e965d6fSRomain Jobredeaux 150*9e965d6fSRomain Jobredeauxdef _in_b123854163(fqn): 151*9e965d6fSRomain Jobredeaux return matches(fqn, B123854163_DICT) 152*9e965d6fSRomain Jobredeaux 153*9e965d6fSRomain Jobredeauxdef _in_android_library_resources_without_srcs(fqn): 154*9e965d6fSRomain Jobredeaux return matches(fqn, ANDROID_LIBRARY_RESOURCES_WITHOUT_SRCS_DICT) 155*9e965d6fSRomain Jobredeaux 156*9e965d6fSRomain Jobredeauxdef _in_android_library_resources_without_srcs_generator_functions(gfn): 157*9e965d6fSRomain Jobredeaux return gfn in ANDROID_LIBRARY_RESOURCES_WITHOUT_SRCS_GENERATOR_FUNCTIONS_DICT 158*9e965d6fSRomain Jobredeaux 159*9e965d6fSRomain Jobredeauxdef _in_android_library_starlark_resource_outputs_rollout(fqn): 160*9e965d6fSRomain Jobredeaux return not matches(fqn, ANDROID_LIBRARY_STARLARK_RESOURCE_OUTPUTS_FALLBACK_DICT) and matches(fqn, ANDROID_LIBRARY_STARLARK_RESOURCE_OUTPUTS_ROLLOUT_DICT) 161*9e965d6fSRomain Jobredeaux 162*9e965d6fSRomain Jobredeauxdef _in_android_library_use_aosp_aidl_compiler_allowlist(fqn): 163*9e965d6fSRomain Jobredeaux return matches(fqn, ANDROID_LIBRARY_USE_AOSP_AIDL_COMPILER_ALLOWLIST_DICT) 164*9e965d6fSRomain Jobredeaux 165*9e965d6fSRomain Jobredeauxdef _in_app_installation_snapshot(fqn): 166*9e965d6fSRomain Jobredeaux return not matches(fqn, APP_INSTALLATION_SNAPSHOT_FALLBACK_DICT) and matches(fqn, APP_INSTALLATION_SNAPSHOT_DICT) 167*9e965d6fSRomain Jobredeaux 168*9e965d6fSRomain Jobredeauxdef _in_databinding_allowed(fqn): 169*9e965d6fSRomain Jobredeaux return not matches(fqn, DATABINDING_DISALLOWED_DICT) and matches(fqn, DATABINDING_ALLOWED_DICT) 170*9e965d6fSRomain Jobredeaux 171*9e965d6fSRomain Jobredeauxdef _in_dex2oat_opts(fqn): 172*9e965d6fSRomain Jobredeaux return matches(fqn, CAN_USE_DEX2OAT_OPTIONS_DICT) 173*9e965d6fSRomain Jobredeaux 174*9e965d6fSRomain Jobredeauxdef _in_fix_export_exporting_rollout(fqn): 175*9e965d6fSRomain Jobredeaux return not matches(fqn, FIX_EXPORT_EXPORTING_FALLBACK_DICT) and matches(fqn, FIX_EXPORT_EXPORTING_ROLLOUT_DICT) 176*9e965d6fSRomain Jobredeaux 177*9e965d6fSRomain Jobredeauxdef _in_fix_resource_transivity_rollout(fqn): 178*9e965d6fSRomain Jobredeaux return not matches(fqn, FIX_RESOURCE_TRANSIVITY_FALLBACK_DICT) and matches(fqn, FIX_RESOURCE_TRANSIVITY_ROLLOUT_DICT) 179*9e965d6fSRomain Jobredeaux 180*9e965d6fSRomain Jobredeauxdef _in_host_dex2oat_rollout(fqn): 181*9e965d6fSRomain Jobredeaux return not matches(fqn, AIT_USE_HOST_DEX2OAT_ROLLOUT_FALLBACK_DICT) and matches(fqn, AIT_USE_HOST_DEX2OAT_ROLLOUT_DICT) 182*9e965d6fSRomain Jobredeaux 183*9e965d6fSRomain Jobredeauxdef _in_install_apps_in_data(fqn): 184*9e965d6fSRomain Jobredeaux return matches(fqn, AIT_INSTALL_APPS_IN_DATA_DICT) 185*9e965d6fSRomain Jobredeaux 186*9e965d6fSRomain Jobredeauxdef _in_local_test_multi_proto(fqn): 187*9e965d6fSRomain Jobredeaux return matches(fqn, LOCAL_TEST_MULTI_PROTO_PKG_DICT) 188*9e965d6fSRomain Jobredeaux 189*9e965d6fSRomain Jobredeauxdef _in_local_test_rollout(fqn): 190*9e965d6fSRomain Jobredeaux return not matches(fqn, LOCAL_TEST_FALLBACK_DICT) and matches(fqn, LOCAL_TEST_ROLLOUT_DICT) 191*9e965d6fSRomain Jobredeaux 192*9e965d6fSRomain Jobredeauxdef _in_local_test_starlark_resources(fqn): 193*9e965d6fSRomain Jobredeaux return not matches(fqn, LOCAL_TEST_STARLARK_RESOURCES_FALLBACK_DICT) and matches(fqn, LOCAL_TEST_STARLARK_RESOURCES_ROLLOUT_DICT) 194*9e965d6fSRomain Jobredeaux 195*9e965d6fSRomain Jobredeauxdef _in_android_test_platform_rollout(fqn): 196*9e965d6fSRomain Jobredeaux return not matches(fqn, ANDROID_TEST_PLATFORM_FALLBACK_DICT) and matches(fqn, ANDROID_TEST_PLATFORM_ROLLOUT_DICT) 197*9e965d6fSRomain Jobredeaux 198*9e965d6fSRomain Jobredeauxdef _in_test_to_instrument_test_rollout(fqn): 199*9e965d6fSRomain Jobredeaux return not matches(fqn, TEST_TO_INSTRUMENT_TEST_FALLBACK_DICT) and matches(fqn, TEST_TO_INSTRUMENT_TEST_ROLLOUT_DICT) 200*9e965d6fSRomain Jobredeaux 201*9e965d6fSRomain Jobredeauxdef _in_allow_resource_conflicts(fqn): 202*9e965d6fSRomain Jobredeaux return matches(fqn, ALLOW_RESOURCE_CONFLICTS_DICT) 203*9e965d6fSRomain Jobredeaux 204*9e965d6fSRomain Jobredeauxdef _in_partial_jetification_targets(fqn): 205*9e965d6fSRomain Jobredeaux return not matches(fqn, PARTIAL_JETIFICATION_TARGETS_FALLBACK_DICT) and matches(fqn, PARTIAL_JETIFICATION_TARGETS_ROLLOUT_DICT) 206*9e965d6fSRomain Jobredeaux 207*9e965d6fSRomain Jobredeauxdef _in_android_instrumentation_test_manifest_check_rollout(fqn): 208*9e965d6fSRomain Jobredeaux return not matches(fqn, ANDROID_INSTRUMENTATION_TEST_MANIFEST_CHECK_FALLBACK_DICT) and matches(fqn, ANDROID_INSTRUMENTATION_TEST_MANIFEST_CHECK_ROLLOUT_DICT) 209*9e965d6fSRomain Jobredeaux 210*9e965d6fSRomain Jobredeauxdef _in_android_instrumentation_test_prebuilt_test_apk(fqn): 211*9e965d6fSRomain Jobredeaux return matches(fqn, ANDROID_INSTRUMENTATION_TEST_PREBUILT_TEST_APK_ROLLOUT_DICT) and not matches(fqn, ANDROID_INSTRUMENTATION_TEST_PREBUILT_TEST_APK_FALLBACK_DICT) 212*9e965d6fSRomain Jobredeaux 213*9e965d6fSRomain Jobredeauxdef _get_android_archive_exposed_package_allowlist(fqn): 214*9e965d6fSRomain Jobredeaux return ANDROID_ARCHIVE_EXPOSED_PACKAGE_ALLOWLIST.get(fqn, []) 215*9e965d6fSRomain Jobredeaux 216*9e965d6fSRomain Jobredeauxdef _in_baseline_profiles_rollout(fqn): 217*9e965d6fSRomain Jobredeaux return matches(fqn, BASELINE_PROFILES_ROLLOUT) 218*9e965d6fSRomain Jobredeaux 219*9e965d6fSRomain Jobredeauxdef _in_baseline_profiles_optimizer_integration(fqn): 220*9e965d6fSRomain Jobredeaux return matches(fqn, BASELINE_PROFILES_OPTIMIZER_INTEGRATION) 221*9e965d6fSRomain Jobredeaux 222*9e965d6fSRomain Jobredeauxdef _in_android_apk_to_bundle_features(fqn): 223*9e965d6fSRomain Jobredeaux return matches(fqn, ANDROID_APK_TO_BUNDLE_FEATURES_DICT) 224*9e965d6fSRomain Jobredeaux 225*9e965d6fSRomain Jobredeauxdef _get_android_archive_duplicate_class_allowlist(fqn): 226*9e965d6fSRomain Jobredeaux return ANDROID_ARCHIVE_DUPLICATE_CLASS_ALLOWLIST.get(fqn, []) 227*9e965d6fSRomain Jobredeaux 228*9e965d6fSRomain Jobredeauxdef _in_android_local_test_jdk_sts_rollout(fqn): 229*9e965d6fSRomain Jobredeaux return not matches(fqn, ANDROID_LOCAL_TEST_JDK_STS_FALLBACK_DICT) and matches(fqn, ANDROID_LOCAL_TEST_JDK_STS_ROLLOUT_DICT) 230*9e965d6fSRomain Jobredeaux 231*9e965d6fSRomain Jobredeauxdef _in_shared_library_resource_linking_allowlist(fqn): 232*9e965d6fSRomain Jobredeaux return matches(fqn, SHARED_LIBRARY_RESOURCE_LINKING_DICT) 233*9e965d6fSRomain Jobredeaux 234*9e965d6fSRomain Jobredeauxdef _in_android_binary_starlark_dex_desugar_proguard(fqn): 235*9e965d6fSRomain Jobredeaux return not matches(fqn, ANDROID_BINARY_STARLARK_DEX_DESUGAR_PROGUARD_FALLBACK_DICT) and matches(fqn, ANDROID_BINARY_STARLARK_DEX_DESUGAR_PROGUARD_ROLLOUT_DICT) 236*9e965d6fSRomain Jobredeaux 237*9e965d6fSRomain Jobredeauxdef _in_android_binary_min_sdk_version_attribute_allowlist(fqn): 238*9e965d6fSRomain Jobredeaux return matches(fqn, ANDROID_BINARY_MIN_SDK_VERSION_ATTRIBUTE_DICT) 239*9e965d6fSRomain Jobredeaux 240*9e965d6fSRomain Jobredeauxdef _in_android_binary_raw_access_to_resource_paths_allowlist(fqn): 241*9e965d6fSRomain Jobredeaux return matches(fqn, ANDROID_BINARY_RAW_ACCESS_TO_RESOURCE_PATHS_ALLOWLIST_DICT) 242*9e965d6fSRomain Jobredeaux 243*9e965d6fSRomain Jobredeauxdef _in_android_binary_resource_name_obfuscation_opt_out_allowlist(fqn): 244*9e965d6fSRomain Jobredeaux return matches(fqn, ANDROID_BINARY_RESOURCE_NAME_OBFUSCATION_OPT_OUT_ALLOWLIST_DICT) 245*9e965d6fSRomain Jobredeaux 246*9e965d6fSRomain Jobredeauxdef _in_allow_proguard_apply_mapping(fqn): 247*9e965d6fSRomain Jobredeaux return matches(fqn, ALLOW_PROGUARD_APPLY_MAPPING_DICT) 248*9e965d6fSRomain Jobredeaux 249*9e965d6fSRomain Jobredeauxdef _use_r8(fqn): 250*9e965d6fSRomain Jobredeaux return matches(fqn, USE_R8_DICT) 251*9e965d6fSRomain Jobredeaux 252*9e965d6fSRomain Jobredeauxdef make_dict(lst): 253*9e965d6fSRomain Jobredeaux """Do not use this method outside of acls directory.""" 254*9e965d6fSRomain Jobredeaux return {t: True for t in lst} 255*9e965d6fSRomain Jobredeaux 256*9e965d6fSRomain Jobredeauxdef make_min_sdk_dict(dict_of_lists): 257*9e965d6fSRomain Jobredeaux res = {} 258*9e965d6fSRomain Jobredeaux for k in dict_of_lists.keys(): 259*9e965d6fSRomain Jobredeaux res[k] = make_dict(dict_of_lists[k]) 260*9e965d6fSRomain Jobredeaux return res 261*9e965d6fSRomain Jobredeaux 262*9e965d6fSRomain JobredeauxAAR_IMPORT_DEPS_CHECKER_FALLBACK_DICT = make_dict(AAR_IMPORT_DEPS_CHECKER_FALLBACK) 263*9e965d6fSRomain JobredeauxAAR_IMPORT_DEPS_CHECKER_ROLLOUT_DICT = make_dict(AAR_IMPORT_DEPS_CHECKER_ROLLOUT) 264*9e965d6fSRomain JobredeauxAAR_IMPORT_EXPLICIT_EXPORTS_MANIFEST_DICT = make_dict(AAR_IMPORT_EXPLICIT_EXPORTS_MANIFEST) 265*9e965d6fSRomain JobredeauxAAR_IMPORT_EXPORTS_R_JAVA_DICT = make_dict(AAR_IMPORT_EXPORTS_R_JAVA) 266*9e965d6fSRomain JobredeauxAAR_PROPAGATE_RESOURCES_FALLBACK_DICT = make_dict(AAR_PROPAGATE_RESOURCES_FALLBACK) 267*9e965d6fSRomain JobredeauxAAR_PROPAGATE_RESOURCES_ROLLOUT_DICT = make_dict(AAR_PROPAGATE_RESOURCES_ROLLOUT) 268*9e965d6fSRomain JobredeauxANDROID_ARCHIVE_DOGFOOD_DICT = make_dict(ANDROID_ARCHIVE_DOGFOOD) 269*9e965d6fSRomain JobredeauxANDROID_ARCHIVE_EXCLUDED_DEPS_DENYLIST_DICT = make_dict(ANDROID_ARCHIVE_EXCLUDED_DEPS_DENYLIST) 270*9e965d6fSRomain JobredeauxANDROID_DEVICE_PLUGIN_ROLLOUT_DICT = make_dict(ANDROID_DEVICE_PLUGIN_ROLLOUT) 271*9e965d6fSRomain JobredeauxANDROID_DEVICE_PLUGIN_FALLBACK_DICT = make_dict(ANDROID_DEVICE_PLUGIN_FALLBACK) 272*9e965d6fSRomain JobredeauxANDROID_INSTRUMENTATION_BINARY_STARLARK_RESOURCES_ROLLOUT_DICT = make_dict(ANDROID_INSTRUMENTATION_BINARY_STARLARK_RESOURCES_ROLLOUT) 273*9e965d6fSRomain JobredeauxANDROID_INSTRUMENTATION_BINARY_STARLARK_RESOURCES_FALLBACK_DICT = make_dict(ANDROID_INSTRUMENTATION_BINARY_STARLARK_RESOURCES_FALLBACK) 274*9e965d6fSRomain JobredeauxANDROID_BINARY_STARLARK_JAVAC_ROLLOUT_DICT = make_dict(ANDROID_BINARY_STARLARK_JAVAC_ROLLOUT) 275*9e965d6fSRomain JobredeauxANDROID_BINARY_STARLARK_JAVAC_FALLBACK_DICT = make_dict(ANDROID_BINARY_STARLARK_JAVAC_FALLBACK) 276*9e965d6fSRomain JobredeauxANDROID_BINARY_STARLARK_SPLIT_TRANSITION_ROLLOUT_DICT = make_dict(ANDROID_BINARY_STARLARK_SPLIT_TRANSITION_ROLLOUT) 277*9e965d6fSRomain JobredeauxANDROID_BINARY_STARLARK_SPLIT_TRANSITION_FALLBACK_DICT = make_dict(ANDROID_BINARY_STARLARK_SPLIT_TRANSITION_FALLBACK) 278*9e965d6fSRomain JobredeauxANDROID_BINARY_WITH_SANDBOXED_SDKS_ALLOWLIST_DICT = make_dict(ANDROID_BINARY_WITH_SANDBOXED_SDKS_ALLOWLIST) 279*9e965d6fSRomain JobredeauxANDROID_FEATURE_SPLITS_DOGFOOD_DICT = make_dict(ANDROID_FEATURE_SPLITS_DOGFOOD) 280*9e965d6fSRomain JobredeauxANDROID_LIBRARY_RESOURCES_WITHOUT_SRCS_DICT = make_dict(ANDROID_LIBRARY_RESOURCES_WITHOUT_SRCS) 281*9e965d6fSRomain JobredeauxANDROID_LIBRARY_RESOURCES_WITHOUT_SRCS_GENERATOR_FUNCTIONS_DICT = make_dict(ANDROID_LIBRARY_RESOURCES_WITHOUT_SRCS_GENERATOR_FUNCTIONS) 282*9e965d6fSRomain JobredeauxANDROID_LIBRARY_STARLARK_RESOURCE_OUTPUTS_FALLBACK_DICT = make_dict(ANDROID_LIBRARY_STARLARK_RESOURCE_OUTPUTS_FALLBACK) 283*9e965d6fSRomain JobredeauxANDROID_LIBRARY_STARLARK_RESOURCE_OUTPUTS_ROLLOUT_DICT = make_dict(ANDROID_LIBRARY_STARLARK_RESOURCE_OUTPUTS_ROLLOUT) 284*9e965d6fSRomain JobredeauxANDROID_LINT_CHECKS_FALLBACK_DICT = make_dict(ANDROID_LINT_CHECKS_FALLBACK) 285*9e965d6fSRomain JobredeauxANDROID_LINT_CHECKS_ROLLOUT_DICT = make_dict(ANDROID_LINT_CHECKS_ROLLOUT) 286*9e965d6fSRomain JobredeauxANDROID_LINT_FALLBACK_DICT = make_dict(ANDROID_LINT_FALLBACK) 287*9e965d6fSRomain JobredeauxANDROID_LINT_ROLLOUT_DICT = make_dict(ANDROID_LINT_ROLLOUT) 288*9e965d6fSRomain Jobredeaux 289*9e965d6fSRomain JobredeauxLINT_REGISTRY_FALLBACK_DICT = make_dict(LINT_REGISTRY_FALLBACK) 290*9e965d6fSRomain JobredeauxLINT_REGISTRY_ROLLOUT_DICT = make_dict(LINT_REGISTRY_ROLLOUT) 291*9e965d6fSRomain JobredeauxANDROID_BUILD_STAMPING_ROLLOUT_DICT = make_dict(ANDROID_BUILD_STAMPING_ROLLOUT) 292*9e965d6fSRomain JobredeauxANDROID_BUILD_STAMPING_FALLBACK_DICT = make_dict(ANDROID_BUILD_STAMPING_FALLBACK) 293*9e965d6fSRomain JobredeauxANDROID_TEST_LOCKDOWN_GENERATOR_FUNCTIONS_DICT = make_dict(ANDROID_TEST_LOCKDOWN_GENERATOR_FUNCTIONS) 294*9e965d6fSRomain JobredeauxANDROID_TEST_LOCKDOWN_TARGETS_DICT = make_dict(ANDROID_TEST_LOCKDOWN_TARGETS) 295*9e965d6fSRomain JobredeauxAPP_INSTALLATION_SNAPSHOT_DICT = make_dict(APP_INSTALLATION_SNAPSHOT) 296*9e965d6fSRomain JobredeauxAPP_INSTALLATION_SNAPSHOT_FALLBACK_DICT = make_dict(APP_INSTALLATION_SNAPSHOT_FALLBACK) 297*9e965d6fSRomain JobredeauxB122039567_DICT = make_dict(B122039567) 298*9e965d6fSRomain JobredeauxB123854163_DICT = make_dict(B123854163) 299*9e965d6fSRomain JobredeauxCAN_USE_DEX2OAT_OPTIONS_DICT = make_dict(CAN_USE_DEX2OAT_OPTIONS) 300*9e965d6fSRomain JobredeauxFIX_RESOURCE_TRANSIVITY_FALLBACK_DICT = make_dict(FIX_RESOURCE_TRANSITIVITY_FALLBACK) 301*9e965d6fSRomain JobredeauxFIX_RESOURCE_TRANSIVITY_ROLLOUT_DICT = make_dict(FIX_RESOURCE_TRANSITIVITY_ROLLOUT) 302*9e965d6fSRomain JobredeauxFIX_EXPORT_EXPORTING_FALLBACK_DICT = make_dict(FIX_EXPORT_EXPORTING_FALLBACK) 303*9e965d6fSRomain JobredeauxFIX_EXPORT_EXPORTING_ROLLOUT_DICT = make_dict(FIX_EXPORT_EXPORTING_ROLLOUT) 304*9e965d6fSRomain JobredeauxAIT_USE_HOST_DEX2OAT_ROLLOUT_DICT = make_dict(AIT_USE_HOST_DEX2OAT_ROLLOUT) 305*9e965d6fSRomain JobredeauxAIT_USE_HOST_DEX2OAT_ROLLOUT_FALLBACK_DICT = make_dict(AIT_USE_HOST_DEX2OAT_ROLLOUT_FALLBACK) 306*9e965d6fSRomain JobredeauxAIT_INSTALL_APPS_IN_DATA_DICT = make_dict(INSTALL_APPS_IN_DATA) 307*9e965d6fSRomain JobredeauxLOCAL_TEST_MULTI_PROTO_PKG_DICT = make_dict(LOCAL_TEST_MULTI_PROTO_PKG) 308*9e965d6fSRomain JobredeauxLOCAL_TEST_FALLBACK_DICT = make_dict(LOCAL_TEST_FALLBACK) 309*9e965d6fSRomain JobredeauxLOCAL_TEST_ROLLOUT_DICT = make_dict(LOCAL_TEST_ROLLOUT) 310*9e965d6fSRomain JobredeauxLOCAL_TEST_STARLARK_RESOURCES_FALLBACK_DICT = make_dict(LOCAL_TEST_STARLARK_RESOURCES_FALLBACK) 311*9e965d6fSRomain JobredeauxLOCAL_TEST_STARLARK_RESOURCES_ROLLOUT_DICT = make_dict(LOCAL_TEST_STARLARK_RESOURCES_ROLLOUT) 312*9e965d6fSRomain JobredeauxANDROID_TEST_PLATFORM_FALLBACK_DICT = make_dict(ANDROID_TEST_PLATFORM_FALLBACK) 313*9e965d6fSRomain JobredeauxANDROID_TEST_PLATFORM_ROLLOUT_DICT = make_dict(ANDROID_TEST_PLATFORM_ROLLOUT) 314*9e965d6fSRomain JobredeauxTEST_TO_INSTRUMENT_TEST_FALLBACK_DICT = make_dict(TEST_TO_INSTRUMENT_TEST_FALLBACK) 315*9e965d6fSRomain JobredeauxTEST_TO_INSTRUMENT_TEST_ROLLOUT_DICT = make_dict(TEST_TO_INSTRUMENT_TEST_ROLLOUT) 316*9e965d6fSRomain JobredeauxALLOW_RESOURCE_CONFLICTS_DICT = make_dict(ALLOW_RESOURCE_CONFLICTS) 317*9e965d6fSRomain JobredeauxPARTIAL_JETIFICATION_TARGETS_ROLLOUT_DICT = make_dict(PARTIAL_JETIFICATION_TARGETS_ROLLOUT) 318*9e965d6fSRomain JobredeauxPARTIAL_JETIFICATION_TARGETS_FALLBACK_DICT = make_dict(PARTIAL_JETIFICATION_TARGETS_FALLBACK) 319*9e965d6fSRomain JobredeauxANDROID_INSTRUMENTATION_TEST_MANIFEST_CHECK_ROLLOUT_DICT = make_dict(ANDROID_INSTRUMENTATION_TEST_MANIFEST_CHECK_ROLLOUT) 320*9e965d6fSRomain JobredeauxANDROID_INSTRUMENTATION_TEST_MANIFEST_CHECK_FALLBACK_DICT = make_dict(ANDROID_INSTRUMENTATION_TEST_MANIFEST_CHECK_FALLBACK) 321*9e965d6fSRomain JobredeauxANDROID_INSTRUMENTATION_TEST_PREBUILT_TEST_APK_ROLLOUT_DICT = make_dict(ANDROID_INSTRUMENTATION_TEST_PREBUILT_TEST_APK_ROLLOUT) 322*9e965d6fSRomain JobredeauxANDROID_INSTRUMENTATION_TEST_PREBUILT_TEST_APK_FALLBACK_DICT = make_dict(ANDROID_INSTRUMENTATION_TEST_PREBUILT_TEST_APK_FALLBACK) 323*9e965d6fSRomain JobredeauxBASELINE_PROFILES_ROLLOUT_DICT = make_dict(BASELINE_PROFILES_ROLLOUT) 324*9e965d6fSRomain JobredeauxBASELINE_PROFILES_OPTIMIZER_INTEGRATION_DICT = make_dict(BASELINE_PROFILES_OPTIMIZER_INTEGRATION) 325*9e965d6fSRomain JobredeauxMIN_SDK_FLOORS_DICT = make_min_sdk_dict(MIN_SDK_FLOORS) 326*9e965d6fSRomain JobredeauxANDROID_APK_TO_BUNDLE_FEATURES_DICT = make_dict(ANDROID_APK_TO_BUNDLE_FEATURES) 327*9e965d6fSRomain JobredeauxANDROID_LIBRARY_USE_AOSP_AIDL_COMPILER_ALLOWLIST_DICT = make_dict(ANDROID_LIBRARY_USE_AOSP_AIDL_COMPILER_ALLOWLIST) 328*9e965d6fSRomain JobredeauxANDROID_LOCAL_TEST_JDK_STS_FALLBACK_DICT = make_dict(ANDROID_LOCAL_TEST_JDK_STS_FALLBACK) 329*9e965d6fSRomain JobredeauxANDROID_LOCAL_TEST_JDK_STS_ROLLOUT_DICT = make_dict(ANDROID_LOCAL_TEST_JDK_STS_ROLLOUT) 330*9e965d6fSRomain JobredeauxDATABINDING_ALLOWED_DICT = make_dict(DATABINDING_ALLOWED) 331*9e965d6fSRomain JobredeauxDATABINDING_DISALLOWED_DICT = make_dict(DATABINDING_DISALLOWED) 332*9e965d6fSRomain JobredeauxSHARED_LIBRARY_RESOURCE_LINKING_DICT = make_dict(SHARED_LIBRARY_RESOURCE_LINKING_ALLOWLIST) 333*9e965d6fSRomain JobredeauxANDROID_BINARY_STARLARK_DEX_DESUGAR_PROGUARD_ROLLOUT_DICT = make_dict(ANDROID_BINARY_STARLARK_DEX_DESUGAR_PROGUARD_ROLLOUT) 334*9e965d6fSRomain JobredeauxANDROID_BINARY_STARLARK_DEX_DESUGAR_PROGUARD_FALLBACK_DICT = make_dict(ANDROID_BINARY_STARLARK_DEX_DESUGAR_PROGUARD_FALLBACK) 335*9e965d6fSRomain JobredeauxANDROID_BINARY_MIN_SDK_VERSION_ATTRIBUTE_DICT = make_dict(ANDROID_BINARY_MIN_SDK_VERSION_ATTRIBUTE_ALLOWLIST) 336*9e965d6fSRomain JobredeauxANDROID_BINARY_RAW_ACCESS_TO_RESOURCE_PATHS_ALLOWLIST_DICT = make_dict(ANDROID_BINARY_RAW_ACCESS_TO_RESOURCE_PATHS_ALLOWLIST) 337*9e965d6fSRomain JobredeauxANDROID_BINARY_RESOURCE_NAME_OBFUSCATION_OPT_OUT_ALLOWLIST_DICT = make_dict(ANDROID_BINARY_RESOURCE_NAME_OBFUSCATION_OPT_OUT_ALLOWLIST) 338*9e965d6fSRomain JobredeauxALLOW_PROGUARD_APPLY_MAPPING_DICT = make_dict(ALLOW_PROGUARD_APPLY_MAPPING) 339*9e965d6fSRomain JobredeauxUSE_R8_DICT = make_dict(USE_R8) 340*9e965d6fSRomain Jobredeaux 341*9e965d6fSRomain Jobredeauxdef matches(fqn, dct): 342*9e965d6fSRomain Jobredeaux # Labels with workspace names ("@workspace//pkg:target") are not supported. 343*9e965d6fSRomain Jobredeaux # For now, default external dependency ACLs to True to enable rollout features for all 344*9e965d6fSRomain Jobredeaux # external users. See https://github.com/bazelbuild/rules_android/issues/68 345*9e965d6fSRomain Jobredeaux # Note that this only affects Bazel builds with OSS rules_android. 346*9e965d6fSRomain Jobredeaux if fqn.startswith("@"): 347*9e965d6fSRomain Jobredeaux return True 348*9e965d6fSRomain Jobredeaux 349*9e965d6fSRomain Jobredeaux if not fqn.startswith("//"): 350*9e965d6fSRomain Jobredeaux fail("Fully qualified target should start with '//', got: " + fqn) 351*9e965d6fSRomain Jobredeaux 352*9e965d6fSRomain Jobredeaux if fqn in dct: 353*9e965d6fSRomain Jobredeaux return True 354*9e965d6fSRomain Jobredeaux 355*9e965d6fSRomain Jobredeaux pkg_and_target = fqn.split(":") 356*9e965d6fSRomain Jobredeaux if len(pkg_and_target) != 2: 357*9e965d6fSRomain Jobredeaux fail("Expected fully qualified target, got: " + fqn) 358*9e965d6fSRomain Jobredeaux pkg = pkg_and_target[0] 359*9e965d6fSRomain Jobredeaux 360*9e965d6fSRomain Jobredeaux if (pkg + ":__pkg__") in dct: 361*9e965d6fSRomain Jobredeaux return True 362*9e965d6fSRomain Jobredeaux 363*9e965d6fSRomain Jobredeaux pkg = pkg.lstrip("//") 364*9e965d6fSRomain Jobredeaux pkg_parts = pkg.split("/") 365*9e965d6fSRomain Jobredeaux ancestor_pkg = "//" 366*9e965d6fSRomain Jobredeaux 367*9e965d6fSRomain Jobredeaux if (ancestor_pkg + ":__subpackages__") in dct: 368*9e965d6fSRomain Jobredeaux return True 369*9e965d6fSRomain Jobredeaux 370*9e965d6fSRomain Jobredeaux for pkg_part in pkg_parts: 371*9e965d6fSRomain Jobredeaux ancestor_pkg = ( 372*9e965d6fSRomain Jobredeaux (ancestor_pkg + "/" + pkg_part) if ancestor_pkg != "//" else ("//" + pkg_part) 373*9e965d6fSRomain Jobredeaux ) 374*9e965d6fSRomain Jobredeaux if (ancestor_pkg + ":__subpackages__") in dct: 375*9e965d6fSRomain Jobredeaux return True 376*9e965d6fSRomain Jobredeaux 377*9e965d6fSRomain Jobredeaux return False 378*9e965d6fSRomain Jobredeaux 379*9e965d6fSRomain Jobredeauxacls = struct( 380*9e965d6fSRomain Jobredeaux get_android_archive_duplicate_class_allowlist = _get_android_archive_duplicate_class_allowlist, 381*9e965d6fSRomain Jobredeaux get_android_archive_exposed_package_allowlist = _get_android_archive_exposed_package_allowlist, 382*9e965d6fSRomain Jobredeaux get_min_sdk_floor = _get_min_sdk_floor, 383*9e965d6fSRomain Jobredeaux in_aar_import_deps_checker = _in_aar_import_deps_checker, 384*9e965d6fSRomain Jobredeaux in_aar_import_explicit_exports_manifest = _in_aar_import_explicit_exports_manifest, 385*9e965d6fSRomain Jobredeaux in_aar_import_exports_r_java = _in_aar_import_exports_r_java, 386*9e965d6fSRomain Jobredeaux in_aar_propagate_resources = _in_aar_propagate_resources, 387*9e965d6fSRomain Jobredeaux in_b122039567 = _in_b122039567, 388*9e965d6fSRomain Jobredeaux in_b123854163 = _in_b123854163, 389*9e965d6fSRomain Jobredeaux in_android_archive_dogfood = _in_android_archive_dogfood, 390*9e965d6fSRomain Jobredeaux in_android_archive_excluded_deps_denylist = _in_android_archive_excluded_deps_denylist, 391*9e965d6fSRomain Jobredeaux in_android_device_plugin_rollout = _in_android_device_plugin_rollout, 392*9e965d6fSRomain Jobredeaux in_android_instrumentation_binary_starlark_resources = _in_android_instrumentation_binary_starlark_resources, 393*9e965d6fSRomain Jobredeaux in_android_binary_starlark_javac = _in_android_binary_starlark_javac, 394*9e965d6fSRomain Jobredeaux in_android_binary_starlark_split_transition = _in_android_binary_starlark_split_transition, 395*9e965d6fSRomain Jobredeaux in_android_binary_with_sandboxed_sdks_allowlist = _in_android_binary_with_sandboxed_sdks_allowlist, 396*9e965d6fSRomain Jobredeaux in_android_feature_splits_dogfood = _in_android_feature_splits_dogfood, 397*9e965d6fSRomain Jobredeaux in_android_library_starlark_resource_outputs_rollout = _in_android_library_starlark_resource_outputs_rollout, 398*9e965d6fSRomain Jobredeaux in_android_library_resources_without_srcs = _in_android_library_resources_without_srcs, 399*9e965d6fSRomain Jobredeaux in_android_library_resources_without_srcs_generator_functions = _in_android_library_resources_without_srcs_generator_functions, 400*9e965d6fSRomain Jobredeaux in_android_library_use_aosp_aidl_compiler_allowlist = _in_android_library_use_aosp_aidl_compiler_allowlist, 401*9e965d6fSRomain Jobredeaux in_android_lint_checks_rollout = _in_android_lint_checks_rollout, 402*9e965d6fSRomain Jobredeaux in_android_lint_rollout = _in_android_lint_rollout, 403*9e965d6fSRomain Jobredeaux in_lint_registry_rollout = _in_lint_registry_rollout, 404*9e965d6fSRomain Jobredeaux in_android_build_stamping_rollout = _in_android_build_stamping_rollout, 405*9e965d6fSRomain Jobredeaux in_android_test_lockdown_allowlist = _in_android_test_lockdown_allowlist, 406*9e965d6fSRomain Jobredeaux in_app_installation_snapshot = _in_app_installation_snapshot, 407*9e965d6fSRomain Jobredeaux in_databinding_allowed = _in_databinding_allowed, 408*9e965d6fSRomain Jobredeaux in_dex2oat_opts = _in_dex2oat_opts, 409*9e965d6fSRomain Jobredeaux in_fix_export_exporting_rollout = _in_fix_export_exporting_rollout, 410*9e965d6fSRomain Jobredeaux in_fix_resource_transivity_rollout = _in_fix_resource_transivity_rollout, 411*9e965d6fSRomain Jobredeaux in_host_dex2oat_rollout = _in_host_dex2oat_rollout, 412*9e965d6fSRomain Jobredeaux in_install_apps_in_data = _in_install_apps_in_data, 413*9e965d6fSRomain Jobredeaux in_local_test_multi_proto = _in_local_test_multi_proto, 414*9e965d6fSRomain Jobredeaux in_local_test_rollout = _in_local_test_rollout, 415*9e965d6fSRomain Jobredeaux in_local_test_starlark_resources = _in_local_test_starlark_resources, 416*9e965d6fSRomain Jobredeaux in_android_test_platform_rollout = _in_android_test_platform_rollout, 417*9e965d6fSRomain Jobredeaux in_test_to_instrument_test_rollout = _in_test_to_instrument_test_rollout, 418*9e965d6fSRomain Jobredeaux in_allow_resource_conflicts = _in_allow_resource_conflicts, 419*9e965d6fSRomain Jobredeaux in_partial_jetification_targets = _in_partial_jetification_targets, 420*9e965d6fSRomain Jobredeaux in_android_instrumentation_test_manifest_check_rollout = _in_android_instrumentation_test_manifest_check_rollout, 421*9e965d6fSRomain Jobredeaux in_android_instrumentation_test_prebuilt_test_apk = _in_android_instrumentation_test_prebuilt_test_apk, 422*9e965d6fSRomain Jobredeaux in_baseline_profiles_rollout = _in_baseline_profiles_rollout, 423*9e965d6fSRomain Jobredeaux in_baseline_profiles_optimizer_integration = _in_baseline_profiles_optimizer_integration, 424*9e965d6fSRomain Jobredeaux in_android_apk_to_bundle_features = _in_android_apk_to_bundle_features, 425*9e965d6fSRomain Jobredeaux in_android_local_test_jdk_sts_rollout = _in_android_local_test_jdk_sts_rollout, 426*9e965d6fSRomain Jobredeaux in_shared_library_resource_linking_allowlist = _in_shared_library_resource_linking_allowlist, 427*9e965d6fSRomain Jobredeaux in_android_binary_starlark_dex_desugar_proguard = _in_android_binary_starlark_dex_desugar_proguard, 428*9e965d6fSRomain Jobredeaux in_android_binary_min_sdk_version_attribute_allowlist = _in_android_binary_min_sdk_version_attribute_allowlist, 429*9e965d6fSRomain Jobredeaux in_android_binary_raw_access_to_resource_paths_allowlist = _in_android_binary_raw_access_to_resource_paths_allowlist, 430*9e965d6fSRomain Jobredeaux in_android_binary_resource_name_obfuscation_opt_out_allowlist = _in_android_binary_resource_name_obfuscation_opt_out_allowlist, 431*9e965d6fSRomain Jobredeaux in_allow_proguard_apply_mapping = _in_allow_proguard_apply_mapping, 432*9e965d6fSRomain Jobredeaux use_r8 = _use_r8, 433*9e965d6fSRomain Jobredeaux) 434*9e965d6fSRomain Jobredeaux 435*9e965d6fSRomain Jobredeaux# Visible for testing 436*9e965d6fSRomain Jobredeauxtesting = struct( 437*9e965d6fSRomain Jobredeaux matches = matches, 438*9e965d6fSRomain Jobredeaux make_dict = make_dict, 439*9e965d6fSRomain Jobredeaux) 440