| load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag") |
| load("@pythons_hub//:versions.bzl", "DEFAULT_PYTHON_VERSION", "MINOR_MAPPING", "PYTHON_VERSIONS") |
| load( |
| "//python/private:flags.bzl", |
| "AddSrcsToRunfilesFlag", |
| "BootstrapImplFlag", |
| "ExecToolsToolchainFlag", |
| "FreeThreadedFlag", |
| "LibcFlag", |
| "PrecompileFlag", |
| "PrecompileSourceRetentionFlag", |
| "VenvsSitePackages", |
| "VenvsUseDeclareSymlinkFlag", |
| rp_string_flag = "string_flag", |
| ) |
| load( |
| "//python/private/pypi:flags.bzl", |
| "UniversalWhlFlag", |
| "UseWhlFlag", |
| "define_pypi_internal_flags", |
| ) |
| load(":config_settings.bzl", "construct_config_settings") |
| |
| filegroup( |
| name = "distribution", |
| srcs = glob(["**"]) + [ |
| "//python/config_settings/private:distribution", |
| ], |
| visibility = ["//python:__pkg__"], |
| ) |
| |
| construct_config_settings( |
| name = "construct_config_settings", |
| default_version = DEFAULT_PYTHON_VERSION, |
| documented_flags = [ |
| ":pip_whl", |
| ":pip_whl_glibc_version", |
| ":pip_whl_muslc_version", |
| ":pip_whl_osx_arch", |
| ":pip_whl_osx_version", |
| ":py_freethreaded", |
| ":py_linux_libc", |
| ], |
| minor_mapping = MINOR_MAPPING, |
| versions = PYTHON_VERSIONS, |
| ) |
| |
| string_flag( |
| name = "add_srcs_to_runfiles", |
| build_setting_default = AddSrcsToRunfilesFlag.AUTO, |
| values = AddSrcsToRunfilesFlag.flag_values(), |
| # NOTE: Only public because it is dependency of public rules. |
| visibility = ["//visibility:public"], |
| ) |
| |
| string_flag( |
| name = "exec_tools_toolchain", |
| build_setting_default = ExecToolsToolchainFlag.ENABLED, |
| values = sorted(ExecToolsToolchainFlag.__members__.values()), |
| # NOTE: Only public because it is used in py_toolchain_suite from toolchain |
| # repositories |
| visibility = ["//visibility:private"], |
| ) |
| |
| config_setting( |
| name = "is_exec_tools_toolchain_enabled", |
| flag_values = { |
| "exec_tools_toolchain": ExecToolsToolchainFlag.ENABLED, |
| }, |
| # NOTE: Only public because it is used in py_toolchain_suite from toolchain |
| # repositories |
| visibility = ["//visibility:public"], |
| ) |
| |
| string_flag( |
| name = "precompile", |
| build_setting_default = PrecompileFlag.AUTO, |
| values = sorted(PrecompileFlag.__members__.values()), |
| # NOTE: Only public because it's an implicit dependency |
| visibility = ["//visibility:public"], |
| ) |
| |
| string_flag( |
| name = "precompile_source_retention", |
| build_setting_default = PrecompileSourceRetentionFlag.AUTO, |
| values = sorted(PrecompileSourceRetentionFlag.__members__.values()), |
| # NOTE: Only public because it's an implicit dependency |
| visibility = ["//visibility:public"], |
| ) |
| |
| rp_string_flag( |
| name = "bootstrap_impl", |
| build_setting_default = BootstrapImplFlag.SYSTEM_PYTHON, |
| override = select({ |
| # Windows doesn't yet support bootstrap=script, so force disable it |
| ":_is_windows": BootstrapImplFlag.SYSTEM_PYTHON, |
| "//conditions:default": "", |
| }), |
| values = sorted(BootstrapImplFlag.__members__.values()), |
| # NOTE: Only public because it's an implicit dependency |
| visibility = ["//visibility:public"], |
| ) |
| |
| # For some reason, @platforms//os:windows can't be directly used |
| # in the select() for the flag. But it can be used when put behind |
| # a config_setting(). |
| config_setting( |
| name = "_is_windows", |
| constraint_values = ["@platforms//os:windows"], |
| ) |
| |
| # This is used for pip and hermetic toolchain resolution. |
| string_flag( |
| name = "py_linux_libc", |
| build_setting_default = LibcFlag.GLIBC, |
| values = LibcFlag.flag_values(), |
| # NOTE: Only public because it is used in pip hub and toolchain repos. |
| visibility = ["//visibility:public"], |
| ) |
| |
| string_flag( |
| name = "py_freethreaded", |
| build_setting_default = FreeThreadedFlag.NO, |
| values = sorted(FreeThreadedFlag.__members__.values()), |
| visibility = ["//visibility:public"], |
| ) |
| |
| alias( |
| name = "is_py_freethreaded", |
| actual = ":_is_py_freethreaded_yes", |
| deprecation = "not actually public, please create your own config_setting using the flag that rules_python exposes", |
| tags = ["manual"], |
| visibility = ["//visibility:public"], |
| ) |
| |
| alias( |
| name = "is_py_non_freethreaded", |
| actual = ":_is_py_freethreaded_no", |
| deprecation = "not actually public, please create your own config_setting using the flag that rules_python exposes", |
| tags = ["manual"], |
| visibility = ["//visibility:public"], |
| ) |
| |
| string_flag( |
| name = "venvs_use_declare_symlink", |
| build_setting_default = VenvsUseDeclareSymlinkFlag.YES, |
| values = VenvsUseDeclareSymlinkFlag.flag_values(), |
| visibility = ["//visibility:public"], |
| ) |
| |
| # pip.parse related flags |
| |
| string_flag( |
| name = "pip_whl", |
| build_setting_default = UseWhlFlag.AUTO, |
| values = sorted(UseWhlFlag.__members__.values()), |
| # NOTE: Only public because it is used in pip hub repos. |
| visibility = ["//visibility:public"], |
| ) |
| |
| config_setting( |
| name = "is_pip_whl_auto", |
| flag_values = { |
| ":pip_whl": UseWhlFlag.AUTO, |
| }, |
| # NOTE: Only public because it is used in pip hub repos. |
| visibility = ["//visibility:public"], |
| ) |
| |
| config_setting( |
| name = "is_pip_whl_no", |
| flag_values = { |
| ":pip_whl": UseWhlFlag.NO, |
| }, |
| # NOTE: Only public because it is used in pip hub repos. |
| visibility = ["//visibility:public"], |
| ) |
| |
| config_setting( |
| name = "is_pip_whl_only", |
| flag_values = { |
| ":pip_whl": UseWhlFlag.ONLY, |
| }, |
| # NOTE: Only public because it is used in pip hub repos. |
| visibility = ["//visibility:public"], |
| ) |
| |
| string_flag( |
| name = "pip_whl_osx_arch", |
| build_setting_default = UniversalWhlFlag.ARCH, |
| values = sorted(UniversalWhlFlag.__members__.values()), |
| # NOTE: Only public because it is used in pip hub repos. |
| visibility = ["//visibility:public"], |
| ) |
| |
| string_flag( |
| name = "pip_whl_glibc_version", |
| build_setting_default = "", |
| # NOTE: Only public because it is used in pip hub repos. |
| visibility = ["//visibility:public"], |
| ) |
| |
| string_flag( |
| name = "pip_whl_muslc_version", |
| build_setting_default = "", |
| # NOTE: Only public because it is used in pip hub repos. |
| visibility = ["//visibility:public"], |
| ) |
| |
| string_flag( |
| name = "pip_whl_osx_version", |
| build_setting_default = "", |
| # NOTE: Only public because it is used in pip hub repos. |
| visibility = ["//visibility:public"], |
| ) |
| |
| string_flag( |
| name = "venvs_site_packages", |
| build_setting_default = VenvsSitePackages.NO, |
| # NOTE: Only public because it is used in pip hub repos. |
| visibility = ["//visibility:public"], |
| ) |
| |
| config_setting( |
| name = "is_venvs_site_packages", |
| flag_values = { |
| ":venvs_site_packages": VenvsSitePackages.YES, |
| }, |
| # NOTE: Only public because it is used in whl_library repos. |
| visibility = ["//visibility:public"], |
| ) |
| |
| define_pypi_internal_flags( |
| name = "define_pypi_internal_flags", |
| ) |
| |
| label_flag( |
| name = "pip_env_marker_config", |
| build_setting_default = ":_pip_env_marker_default_config", |
| # NOTE: Only public because it is used in pip hub repos. |
| visibility = ["//visibility:public"], |
| ) |
| |
| bool_flag( |
| name = "experimental_python_import_all_repositories", |
| build_setting_default = True, |
| visibility = ["//visibility:public"], |
| ) |