• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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