Skip to content

Commit 4a277ec

Browse files
committed
refactor: further decrease the number of extra targets to 496
Now the number of the extra targets that we need to have is about double the number of the different dist types that we need to support - `496`. Since this becomes `O(2n)`, this is probably the best we can do here.
1 parent 83b7d17 commit 4a277ec

File tree

3 files changed

+42
-21
lines changed

3 files changed

+42
-21
lines changed

python/config_settings/BUILD.bazel

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,33 @@ string_flag(
8888
visibility = ["//visibility:public"],
8989
)
9090

91+
config_setting(
92+
name = "is_pip_whl_auto",
93+
flag_values = {
94+
":pip_whl": UseWhlFlag.AUTO,
95+
},
96+
# NOTE: Only public because it is used in pip hub repos.
97+
visibility = ["//visibility:public"],
98+
)
99+
100+
config_setting(
101+
name = "is_pip_whl_no",
102+
flag_values = {
103+
":pip_whl": UseWhlFlag.NO,
104+
},
105+
# NOTE: Only public because it is used in pip hub repos.
106+
visibility = ["//visibility:public"],
107+
)
108+
109+
config_setting(
110+
name = "is_pip_whl_only",
111+
flag_values = {
112+
":pip_whl": UseWhlFlag.ONLY,
113+
},
114+
# NOTE: Only public because it is used in pip hub repos.
115+
visibility = ["//visibility:public"],
116+
)
117+
91118
string_flag(
92119
name = "pip_whl_osx_arch",
93120
build_setting_default = UniversalWhlFlag.ARCH,

python/private/pip_config_settings.bzl

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ load(
4343
":pip_flags.bzl",
4444
"INTERNAL_FLAGS",
4545
"UniversalWhlFlag",
46-
"UseWhlFlag",
4746
"WhlLibcFlag",
4847
)
4948

@@ -58,6 +57,9 @@ FLAGS = struct(
5857
"pip_whl_osx_arch",
5958
"pip_whl_osx_version",
6059
"py_linux_libc",
60+
"is_pip_whl_no",
61+
"is_pip_whl_only",
62+
"is_pip_whl_auto",
6163
]
6264
}
6365
)
@@ -289,31 +291,27 @@ def _whl_config_setting(*, name, flag_values, config_setting_rule = None, **kwar
289291
config_setting_rule = config_setting_rule or _config_setting_or
290292
config_setting_rule(
291293
name = "is_" + name,
292-
flag_values = flag_values | {
293-
FLAGS.pip_whl: UseWhlFlag.ONLY,
294-
},
295-
default = flag_values | {
296-
FLAGS.pip_whl: UseWhlFlag.AUTO,
297-
},
294+
flag_values = flag_values,
295+
use_whl_flag = FLAGS.is_pip_whl_only,
298296
**kwargs
299297
)
300298

301299
def _sdist_config_setting(*, name, config_setting_rule = None, **kwargs):
302300
config_setting_rule = config_setting_rule or _config_setting_or
303301
config_setting_rule(
304302
name = "is_" + name,
305-
flag_values = {FLAGS.pip_whl: UseWhlFlag.NO},
306-
default = {FLAGS.pip_whl: UseWhlFlag.AUTO},
303+
use_whl_flag = FLAGS.is_pip_whl_no,
307304
**kwargs
308305
)
309306

310-
def _config_setting_or(*, name, flag_values, default, visibility, python_version = "", **kwargs):
307+
def _config_setting_or(*, name, use_whl_flag, python_version = "", **kwargs):
311308
if python_version:
312309
_name = name.replace("is_cp{}".format(python_version), "_is")
313310
else:
314311
_name = "_" + name
315312

316313
is_python = ":is_python_" + (python_version or "default")
314+
visibility = kwargs.get("visibility")
317315
native.alias(
318316
name = name,
319317
actual = select({
@@ -329,24 +327,19 @@ def _config_setting_or(*, name, flag_values, default, visibility, python_version
329327
return
330328

331329
match_name = "_{}_1".format(name)
332-
default_name = "_{}_2".format(name)
333330
native.config_setting(
334331
name = match_name,
335-
flag_values = flag_values,
336-
visibility = visibility,
337-
**kwargs
338-
)
339-
native.config_setting(
340-
name = default_name,
341-
flag_values = default,
342-
visibility = visibility,
332+
flag_values = {
333+
_flags.dist: "",
334+
} | kwargs.pop("flag_values", {}),
343335
**kwargs
344336
)
345337
native.alias(
346338
name = _name,
347339
actual = select({
348-
match_name: match_name,
349-
"//conditions:default": default_name,
340+
FLAGS.is_pip_whl_auto: match_name,
341+
use_whl_flag: match_name,
342+
"//conditions:default": use_whl_flag,
350343
}),
351344
visibility = visibility,
352345
)

python/private/pip_flags.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ WhlLibcFlag = enum(
5454
)
5555

5656
INTERNAL_FLAGS = [
57+
"dist",
5758
"whl_plat",
5859
"whl_plat_py3",
5960
"whl_plat_py3_abi3",

0 commit comments

Comments
 (0)