bazel: define release bundle platforms

This commit is contained in:
Adam Perry
2026-06-05 23:33:51 +00:00
parent 7b4fe41767
commit c73d50c33d
3 changed files with 76 additions and 12 deletions

View File

@@ -560,6 +560,24 @@ jobs:
-- \
"${bazel_targets[@]}"
- name: Analyze Bazel release bundle
if: runner.os == 'Linux'
env:
BUILDBUDDY_API_KEY: ${{ secrets.BUILDBUDDY_API_KEY }}
shell: bash
run: |
# Keep the documented `just build-for-release` target's platform
# transitions covered without compiling every release artifact in CI.
./.github/scripts/run-bazel-ci.sh \
--print-failed-action-summary \
-- \
build \
--nobuild \
--build_metadata=COMMIT_SHA=${GITHUB_SHA} \
--build_metadata=TAG_job=analyze-release-bundle \
-- \
//codex-rs/cli:release_binaries
- name: Verify Bazel builds bwrap
if: runner.os == 'Linux'
env:

View File

@@ -56,6 +56,52 @@ platform(
],
)
# Release bundles cross-compile from the host and need the complete constraint
# set expected by both the Rust and LLVM toolchains.
platform(
name = "release_linux_arm64_musl",
constraint_values = [
"@llvm//constraints/libc:musl",
"@llvm//constraints/pie:off",
"@platforms//cpu:aarch64",
"@platforms//os:linux",
],
visibility = ["//visibility:public"],
)
platform(
name = "release_linux_amd64_musl",
constraint_values = [
"@llvm//constraints/libc:musl",
"@llvm//constraints/pie:off",
"@platforms//cpu:x86_64",
"@platforms//os:linux",
],
visibility = ["//visibility:public"],
)
platform(
name = "release_windows_amd64",
constraint_values = [
"@llvm//constraints/windows_abi:gnullvm",
"@platforms//cpu:x86_64",
"@platforms//os:windows",
"@rules_rs//rs/experimental/platforms/constraints:windows_gnullvm",
],
visibility = ["//visibility:public"],
)
platform(
name = "release_windows_arm64",
constraint_values = [
"@llvm//constraints/windows_abi:gnullvm",
"@platforms//cpu:aarch64",
"@platforms//os:windows",
"@rules_rs//rs/experimental/platforms/constraints:windows_gnullvm",
],
visibility = ["//visibility:public"],
)
toolchain(
name = "windows_gnullvm_tests_on_msvc_host_toolchain",
exec_compatible_with = [

View File

@@ -4,14 +4,14 @@ load("@rules_platform//platform_data:defs.bzl", "platform_data")
load("@rules_rust//cargo/private:cargo_build_script_wrapper.bzl", "cargo_build_script")
load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_proc_macro", "rust_test")
PLATFORMS = [
"linux_arm64_musl",
"linux_amd64_musl",
"macos_amd64",
"macos_arm64",
"windows_amd64",
"windows_arm64",
]
PLATFORMS = {
"linux_arm64_musl": "//:release_linux_arm64_musl",
"linux_amd64_musl": "//:release_linux_amd64_musl",
"macos_amd64": "@llvm//platforms:macos_amd64",
"macos_arm64": "@llvm//platforms:macos_arm64",
"windows_amd64": "//:release_windows_amd64",
"windows_arm64": "//:release_windows_arm64",
}
# Match Cargo's Windows linker behavior so Bazel-built binaries and tests use
# the same stack reserve on both Windows ABIs and resolve UCRT imports on MSVC.
@@ -54,17 +54,17 @@ MACOS_WEBRTC_RUSTC_LINK_FLAGS = select({
})
def multiplatform_binaries(name, platforms = PLATFORMS):
for platform in platforms:
for platform_name, platform_label in platforms.items():
platform_data(
name = name + "_" + platform,
platform = "@llvm//platforms:" + platform,
name = name + "_" + platform_name,
platform = platform_label,
target = name,
tags = ["manual"],
)
native.filegroup(
name = "release_binaries",
srcs = [name + "_" + platform for platform in platforms],
srcs = [name + "_" + platform for platform in platforms.keys()],
tags = ["manual"],
)