Skip to content

Commit 241593f

Browse files
committed
Fix expansion of ci targets when labels are outside the default set
1 parent 7baf76f commit 241593f

1 file changed

Lines changed: 27 additions & 6 deletions

File tree

ci-matrix.py

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,17 @@ def expand_default_triples(
110110
"""
111111
default_triples = set(pull_request_defaults["targets"])
112112

113-
expand_platform = "all" in labels.get("platform", set())
114-
expand_arch = "all" in labels.get("arch", set())
115-
expand_libc = "all" in labels.get("libc", set())
113+
platform_labels = labels.get("platform", set())
114+
arch_labels = labels.get("arch", set())
115+
libc_labels = labels.get("libc", set())
116+
117+
platform_filters = platform_labels - {"all"}
118+
arch_filters = arch_labels - {"all"}
119+
libc_filters = libc_labels - {"all"}
120+
121+
expand_platform = "all" in platform_labels or bool(platform_filters)
122+
expand_arch = "all" in arch_labels or bool(arch_filters)
123+
expand_libc = "all" in libc_labels or bool(libc_filters)
116124

117125
if not (expand_platform or expand_arch or expand_libc):
118126
return default_triples
@@ -136,14 +144,27 @@ def expand_default_triples(
136144
for platform, platform_config in ci_config.items():
137145
for triple, config in platform_config.items():
138146
for d_platform, d_arch, d_arch_variant, d_libc in default_attrs:
139-
if not expand_platform and platform != d_platform:
147+
if platform_filters:
148+
if platform not in platform_filters:
149+
continue
150+
elif "all" not in platform_labels and platform != d_platform:
140151
continue
141-
if not expand_arch and (
152+
153+
if arch_filters:
154+
if config["arch"] not in arch_filters:
155+
continue
156+
if config.get("arch_variant") != d_arch_variant:
157+
continue
158+
elif "all" not in arch_labels and (
142159
config["arch"] != d_arch
143160
or config.get("arch_variant") != d_arch_variant
144161
):
145162
continue
146-
if not expand_libc and config.get("libc") != d_libc:
163+
164+
if libc_filters:
165+
if config.get("libc") not in libc_filters:
166+
continue
167+
elif "all" not in libc_labels and config.get("libc") != d_libc:
147168
continue
148169
allowed.add(triple)
149170
break

0 commit comments

Comments
 (0)