1load("@bazel_skylib//rules:common_settings.bzl", "string_flag") 2load("@pythons_hub//:versions.bzl", "DEFAULT_PYTHON_VERSION", "MINOR_MAPPING", "PYTHON_VERSIONS") 3load( 4 "//python/private:flags.bzl", 5 "AddSrcsToRunfilesFlag", 6 "BootstrapImplFlag", 7 "ExecToolsToolchainFlag", 8 "FreeThreadedFlag", 9 "LibcFlag", 10 "PrecompileFlag", 11 "PrecompileSourceRetentionFlag", 12) 13load( 14 "//python/private/pypi:flags.bzl", 15 "UniversalWhlFlag", 16 "UseWhlFlag", 17 "define_pypi_internal_flags", 18) 19load(":config_settings.bzl", "construct_config_settings") 20 21filegroup( 22 name = "distribution", 23 srcs = glob(["**"]) + [ 24 "//python/config_settings/private:distribution", 25 ], 26 visibility = ["//python:__pkg__"], 27) 28 29construct_config_settings( 30 name = "construct_config_settings", 31 default_version = DEFAULT_PYTHON_VERSION, 32 minor_mapping = MINOR_MAPPING, 33 versions = PYTHON_VERSIONS, 34) 35 36string_flag( 37 name = "add_srcs_to_runfiles", 38 build_setting_default = AddSrcsToRunfilesFlag.AUTO, 39 values = AddSrcsToRunfilesFlag.flag_values(), 40 # NOTE: Only public because it is dependency of public rules. 41 visibility = ["//visibility:public"], 42) 43 44string_flag( 45 name = "exec_tools_toolchain", 46 build_setting_default = ExecToolsToolchainFlag.ENABLED, 47 values = sorted(ExecToolsToolchainFlag.__members__.values()), 48 # NOTE: Only public because it is used in py_toolchain_suite from toolchain 49 # repositories 50 visibility = ["//visibility:private"], 51) 52 53config_setting( 54 name = "is_exec_tools_toolchain_enabled", 55 flag_values = { 56 "exec_tools_toolchain": ExecToolsToolchainFlag.ENABLED, 57 }, 58 # NOTE: Only public because it is used in py_toolchain_suite from toolchain 59 # repositories 60 visibility = ["//visibility:public"], 61) 62 63string_flag( 64 name = "precompile", 65 build_setting_default = PrecompileFlag.AUTO, 66 values = sorted(PrecompileFlag.__members__.values()), 67 # NOTE: Only public because it's an implicit dependency 68 visibility = ["//visibility:public"], 69) 70 71string_flag( 72 name = "precompile_source_retention", 73 build_setting_default = PrecompileSourceRetentionFlag.AUTO, 74 values = sorted(PrecompileSourceRetentionFlag.__members__.values()), 75 # NOTE: Only public because it's an implicit dependency 76 visibility = ["//visibility:public"], 77) 78 79string_flag( 80 name = "bootstrap_impl", 81 build_setting_default = BootstrapImplFlag.SYSTEM_PYTHON, 82 values = sorted(BootstrapImplFlag.__members__.values()), 83 # NOTE: Only public because it's an implicit dependency 84 visibility = ["//visibility:public"], 85) 86 87# This is used for pip and hermetic toolchain resolution. 88string_flag( 89 name = "py_linux_libc", 90 build_setting_default = LibcFlag.GLIBC, 91 values = LibcFlag.flag_values(), 92 # NOTE: Only public because it is used in pip hub and toolchain repos. 93 visibility = ["//visibility:public"], 94) 95 96string_flag( 97 name = "py_freethreaded", 98 build_setting_default = FreeThreadedFlag.NO, 99 values = sorted(FreeThreadedFlag.__members__.values()), 100 visibility = ["//visibility:public"], 101) 102 103config_setting( 104 name = "is_py_freethreaded", 105 flag_values = {":py_freethreaded": FreeThreadedFlag.YES}, 106 visibility = ["//visibility:public"], 107) 108 109# pip.parse related flags 110 111string_flag( 112 name = "pip_whl", 113 build_setting_default = UseWhlFlag.AUTO, 114 values = sorted(UseWhlFlag.__members__.values()), 115 # NOTE: Only public because it is used in pip hub repos. 116 visibility = ["//visibility:public"], 117) 118 119config_setting( 120 name = "is_pip_whl_auto", 121 flag_values = { 122 ":pip_whl": UseWhlFlag.AUTO, 123 }, 124 # NOTE: Only public because it is used in pip hub repos. 125 visibility = ["//visibility:public"], 126) 127 128config_setting( 129 name = "is_pip_whl_no", 130 flag_values = { 131 ":pip_whl": UseWhlFlag.NO, 132 }, 133 # NOTE: Only public because it is used in pip hub repos. 134 visibility = ["//visibility:public"], 135) 136 137config_setting( 138 name = "is_pip_whl_only", 139 flag_values = { 140 ":pip_whl": UseWhlFlag.ONLY, 141 }, 142 # NOTE: Only public because it is used in pip hub repos. 143 visibility = ["//visibility:public"], 144) 145 146string_flag( 147 name = "pip_whl_osx_arch", 148 build_setting_default = UniversalWhlFlag.ARCH, 149 values = sorted(UniversalWhlFlag.__members__.values()), 150 # NOTE: Only public because it is used in pip hub repos. 151 visibility = ["//visibility:public"], 152) 153 154string_flag( 155 name = "pip_whl_glibc_version", 156 build_setting_default = "", 157 # NOTE: Only public because it is used in pip hub repos. 158 visibility = ["//visibility:public"], 159) 160 161string_flag( 162 name = "pip_whl_muslc_version", 163 build_setting_default = "", 164 # NOTE: Only public because it is used in pip hub repos. 165 visibility = ["//visibility:public"], 166) 167 168string_flag( 169 name = "pip_whl_osx_version", 170 build_setting_default = "", 171 # NOTE: Only public because it is used in pip hub repos. 172 visibility = ["//visibility:public"], 173) 174 175define_pypi_internal_flags( 176 name = "define_pypi_internal_flags", 177) 178