blob: cc5c472fe7461c23a6f96e54b755d5b6f0b8c55b [file] [log] [blame]
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"],
)