mirror of
https://github.com/openai/codex.git
synced 2026-05-01 01:47:18 +00:00
Configure the large Rust test targets with Bazel's native shard_count while keeping rules_rust's stable test-name hash bucket assignment. This depends on hermeticbuild/rules_rs#94, which pins the rules_rust stable sharding stack, and keeps the original test labels so BuildBuddy can render Bazel's native sharded test UI. Co-authored-by: Codex <noreply@openai.com>
209 lines
9.4 KiB
Diff
209 lines
9.4 KiB
Diff
# What: teach `rules_rs` that `windows-gnullvm` is a distinct Windows exec ABI.
|
|
# Scope: experimental platform/toolchain naming only; no Cargo target changes.
|
|
|
|
diff --git a/rs/experimental/platforms/triples.bzl b/rs/experimental/platforms/triples.bzl
|
|
--- a/rs/experimental/platforms/triples.bzl
|
|
+++ b/rs/experimental/platforms/triples.bzl
|
|
@@ -30,7 +30,9 @@ SUPPORTED_EXEC_TRIPLES = [
|
|
"x86_64-unknown-linux-gnu",
|
|
"aarch64-unknown-linux-gnu",
|
|
"x86_64-pc-windows-msvc",
|
|
+ "x86_64-pc-windows-gnullvm",
|
|
"aarch64-pc-windows-msvc",
|
|
+ "aarch64-pc-windows-gnullvm",
|
|
"x86_64-apple-darwin",
|
|
"aarch64-apple-darwin",
|
|
]
|
|
diff --git a/rs/experimental/toolchains/declare_rustc_toolchains.bzl b/rs/experimental/toolchains/declare_rustc_toolchains.bzl
|
|
--- a/rs/experimental/toolchains/declare_rustc_toolchains.bzl
|
|
+++ b/rs/experimental/toolchains/declare_rustc_toolchains.bzl
|
|
@@ -16,6 +16,11 @@ def _rustc_flags_to_select(rustc_flags_by_triple):
|
|
{"//conditions:default": []},
|
|
)
|
|
|
|
+def _exec_triple_suffix(exec_triple):
|
|
+ if exec_triple.system == "windows":
|
|
+ return "{}_{}_{}".format(exec_triple.system, exec_triple.arch, exec_triple.abi)
|
|
+ return "{}_{}".format(exec_triple.system, exec_triple.arch)
|
|
+
|
|
def declare_rustc_toolchains(
|
|
*,
|
|
version,
|
|
@@ -31,15 +36,14 @@ def declare_rustc_toolchains(
|
|
|
|
for triple in execs:
|
|
exec_triple = _parse_triple(triple)
|
|
- triple_suffix = exec_triple.system + "_" + exec_triple.arch
|
|
+ triple_suffix = _exec_triple_suffix(exec_triple)
|
|
|
|
rustc_repo_label = "@rustc_{}_{}//:".format(triple_suffix, version_key)
|
|
cargo_repo_label = "@cargo_{}_{}//:".format(triple_suffix, version_key)
|
|
clippy_repo_label = "@clippy_{}_{}//:".format(triple_suffix, version_key)
|
|
|
|
- rust_toolchain_name = "{}_{}_{}_rust_toolchain".format(
|
|
- exec_triple.system,
|
|
- exec_triple.arch,
|
|
+ rust_toolchain_name = "{}_{}_rust_toolchain".format(
|
|
+ triple_suffix,
|
|
version_key,
|
|
)
|
|
|
|
@@ -114,11 +118,8 @@ def declare_rustc_toolchains(
|
|
target_key = sanitize_triple(target_triple)
|
|
|
|
native.toolchain(
|
|
- name = "{}_{}_to_{}_{}".format(exec_triple.system, exec_triple.arch, target_key, version_key),
|
|
- exec_compatible_with = [
|
|
- "@platforms//os:" + exec_triple.system,
|
|
- "@platforms//cpu:" + exec_triple.arch,
|
|
- ],
|
|
+ name = "{}_to_{}_{}".format(triple_suffix, target_key, version_key),
|
|
+ exec_compatible_with = triple_to_constraint_set(triple),
|
|
target_compatible_with = triple_to_constraint_set(target_triple),
|
|
target_settings = [
|
|
"@rules_rust//rust/toolchain/channel:" + channel,
|
|
diff --git a/rs/experimental/toolchains/declare_rustfmt_toolchains.bzl b/rs/experimental/toolchains/declare_rustfmt_toolchains.bzl
|
|
--- a/rs/experimental/toolchains/declare_rustfmt_toolchains.bzl
|
|
+++ b/rs/experimental/toolchains/declare_rustfmt_toolchains.bzl
|
|
@@ -1,8 +1,13 @@
|
|
load("@rules_rust//rust:toolchain.bzl", "rustfmt_toolchain")
|
|
load("@rules_rust//rust/platform:triple.bzl", _parse_triple = "triple")
|
|
-load("//rs/experimental/platforms:triples.bzl", "SUPPORTED_EXEC_TRIPLES")
|
|
+load("//rs/experimental/platforms:triples.bzl", "SUPPORTED_EXEC_TRIPLES", "triple_to_constraint_set")
|
|
load("//rs/experimental/toolchains:toolchain_utils.bzl", "sanitize_version")
|
|
|
|
+def _exec_triple_suffix(exec_triple):
|
|
+ if exec_triple.system == "windows":
|
|
+ return "{}_{}_{}".format(exec_triple.system, exec_triple.arch, exec_triple.abi)
|
|
+ return "{}_{}".format(exec_triple.system, exec_triple.arch)
|
|
+
|
|
def _channel(version):
|
|
if version.startswith("nightly"):
|
|
return "nightly"
|
|
@@ -22,14 +27,13 @@ def declare_rustfmt_toolchains(
|
|
|
|
for triple in execs:
|
|
exec_triple = _parse_triple(triple)
|
|
- triple_suffix = exec_triple.system + "_" + exec_triple.arch
|
|
+ triple_suffix = _exec_triple_suffix(exec_triple)
|
|
|
|
rustc_repo_label = "@rustc_{}_{}//:".format(triple_suffix, version_key)
|
|
rustfmt_repo_label = "@rustfmt_{}_{}//:".format(triple_suffix, rustfmt_version_key)
|
|
|
|
- rustfmt_toolchain_name = "{}_{}_{}_rustfmt_toolchain".format(
|
|
- exec_triple.system,
|
|
- exec_triple.arch,
|
|
+ rustfmt_toolchain_name = "{}_{}_rustfmt_toolchain".format(
|
|
+ triple_suffix,
|
|
version_key,
|
|
)
|
|
|
|
@@ -43,11 +47,8 @@ def declare_rustfmt_toolchains(
|
|
)
|
|
|
|
native.toolchain(
|
|
- name = "{}_{}_rustfmt_{}".format(exec_triple.system, exec_triple.arch, version_key),
|
|
- exec_compatible_with = [
|
|
- "@platforms//os:" + exec_triple.system,
|
|
- "@platforms//cpu:" + exec_triple.arch,
|
|
- ],
|
|
+ name = "{}_rustfmt_{}".format(triple_suffix, version_key),
|
|
+ exec_compatible_with = triple_to_constraint_set(triple),
|
|
target_compatible_with = [],
|
|
target_settings = [
|
|
"@rules_rust//rust/toolchain/channel:" + channel,
|
|
diff --git a/rs/experimental/toolchains/declare_rust_analyzer_toolchains.bzl b/rs/experimental/toolchains/declare_rust_analyzer_toolchains.bzl
|
|
--- a/rs/experimental/toolchains/declare_rust_analyzer_toolchains.bzl
|
|
+++ b/rs/experimental/toolchains/declare_rust_analyzer_toolchains.bzl
|
|
@@ -3,9 +3,14 @@ load(
|
|
"@rules_rust//rust/private:repository_utils.bzl",
|
|
"includes_rust_analyzer_proc_macro_srv",
|
|
)
|
|
-load("//rs/experimental/platforms:triples.bzl", "SUPPORTED_EXEC_TRIPLES")
|
|
+load("//rs/experimental/platforms:triples.bzl", "SUPPORTED_EXEC_TRIPLES", "triple_to_constraint_set")
|
|
load("//rs/experimental/toolchains:toolchain_utils.bzl", "sanitize_version")
|
|
|
|
+def _exec_triple_suffix(exec_triple):
|
|
+ if exec_triple.system == "windows":
|
|
+ return "{}_{}_{}".format(exec_triple.system, exec_triple.arch, exec_triple.abi)
|
|
+ return "{}_{}".format(exec_triple.system, exec_triple.arch)
|
|
+
|
|
def _channel(version):
|
|
if version.startswith("nightly"):
|
|
return "nightly"
|
|
@@ -32,15 +37,14 @@ def declare_rust_analyzer_toolchains(
|
|
|
|
for triple in execs:
|
|
exec_triple = _parse_triple(triple)
|
|
- triple_suffix = exec_triple.system + "_" + exec_triple.arch
|
|
+ triple_suffix = _exec_triple_suffix(exec_triple)
|
|
|
|
rustc_repo_label = "@rustc_{}_{}//:".format(triple_suffix, rust_analyzer_version_key)
|
|
rust_analyzer_repo_label = "@rust_analyzer_{}_{}//:".format(triple_suffix, rust_analyzer_version_key)
|
|
rust_src_repo_label = "@rust_src_{}//lib/rustlib/src:rustc_srcs".format(rust_analyzer_version_key)
|
|
|
|
- rust_analyzer_toolchain_name = "{}_{}_{}_rust_analyzer_toolchain".format(
|
|
- exec_triple.system,
|
|
- exec_triple.arch,
|
|
+ rust_analyzer_toolchain_name = "{}_{}_rust_analyzer_toolchain".format(
|
|
+ triple_suffix,
|
|
version_key,
|
|
)
|
|
|
|
@@ -59,11 +63,8 @@ def declare_rust_analyzer_toolchains(
|
|
rust_analyzer_toolchain(**rust_analyzer_toolchain_kwargs)
|
|
|
|
native.toolchain(
|
|
- name = "{}_{}_rust_analyzer_{}".format(exec_triple.system, exec_triple.arch, version_key),
|
|
- exec_compatible_with = [
|
|
- "@platforms//os:" + exec_triple.system,
|
|
- "@platforms//cpu:" + exec_triple.arch,
|
|
- ],
|
|
+ name = "{}_rust_analyzer_{}".format(triple_suffix, version_key),
|
|
+ exec_compatible_with = triple_to_constraint_set(triple),
|
|
target_compatible_with = [],
|
|
target_settings = [
|
|
"@rules_rust//rust/toolchain/channel:" + channel,
|
|
diff --git a/rs/experimental/toolchains/module_extension.bzl b/rs/experimental/toolchains/module_extension.bzl
|
|
--- a/rs/experimental/toolchains/module_extension.bzl
|
|
+++ b/rs/experimental/toolchains/module_extension.bzl
|
|
@@ -37,6 +37,11 @@ def _normalize_arch_name(arch):
|
|
return "aarch64"
|
|
return arch
|
|
|
|
+def _exec_triple_suffix(exec_triple):
|
|
+ if exec_triple.system == "windows":
|
|
+ return "{}_{}_{}".format(exec_triple.system, exec_triple.arch, exec_triple.abi)
|
|
+ return "{}_{}".format(exec_triple.system, exec_triple.arch)
|
|
+
|
|
def _sanitize_path_fragment(path):
|
|
return path.replace("/", "_").replace(":", "_")
|
|
|
|
@@ -219,7 +224,7 @@ def _toolchains_impl(mctx):
|
|
for triple in SUPPORTED_EXEC_TRIPLES:
|
|
exec_triple = _parse_triple(triple)
|
|
|
|
- triple_suffix = exec_triple.system + "_" + exec_triple.arch
|
|
+ triple_suffix = _exec_triple_suffix(exec_triple)
|
|
rustc_name = "rustc_{}_{}".format(triple_suffix, version_key)
|
|
|
|
rustc_repository(
|
|
@@ -268,7 +273,7 @@ def _toolchains_impl(mctx):
|
|
|
|
for triple in SUPPORTED_EXEC_TRIPLES:
|
|
exec_triple = _parse_triple(triple)
|
|
- triple_suffix = exec_triple.system + "_" + exec_triple.arch
|
|
+ triple_suffix = _exec_triple_suffix(exec_triple)
|
|
|
|
rustfmt_repository(
|
|
name = "rustfmt_{}_{}".format(triple_suffix, version_key),
|
|
@@ -283,7 +288,7 @@ def _toolchains_impl(mctx):
|
|
|
|
for triple in SUPPORTED_EXEC_TRIPLES:
|
|
exec_triple = _parse_triple(triple)
|
|
- triple_suffix = exec_triple.system + "_" + exec_triple.arch
|
|
+ triple_suffix = _exec_triple_suffix(exec_triple)
|
|
|
|
rust_analyzer_repository(
|
|
name = "rust_analyzer_{}_{}".format(triple_suffix, version_key),
|