mirror of
https://github.com/openai/codex.git
synced 2026-05-28 06:55:01 +00:00
## Why #20585 moved the Windows Bazel test job to the cross-compile path, but the Windows Bazel clippy and verify-release-build jobs were still using the native Windows/MSVC-host fallback. Those two jobs became the slowest Windows PR legs, even though both are build-only signal and do not need to execute the resulting binaries. ## What Changed - Switches the Windows Bazel clippy job from `--windows-msvc-host-platform` to `--windows-cross-compile`, so clippy build actions use Linux RBE while still targeting `x86_64-pc-windows-gnullvm`. - Switches the Windows Bazel verify-release-build job to `--windows-cross-compile` as well. This job only compiles `cfg(not(debug_assertions))` Rust code under `fastbuild`, so it does not need a native Windows build host. - Keeps the old `--skip_incompatible_explicit_targets` behavior only for fork/community PRs without `BUILDBUDDY_API_KEY`, where `run-bazel-ci.sh` falls back to the local Windows MSVC-host shape. - Adds `--windows-cross-compile` support to `.github/scripts/run-bazel-query-ci.sh`, so target-discovery queries select the same `ci-windows-cross` config as the subsequent build. - Threads that option through `scripts/list-bazel-clippy-targets.sh` so the Windows clippy job discovers targets under the same platform shape as the subsequent clippy build. ## Verification Local checks: ```shell bash -n .github/scripts/run-bazel-query-ci.sh bash -n scripts/list-bazel-clippy-targets.sh ruby -e 'require "yaml"; YAML.load_file(".github/workflows/bazel.yml"); puts "ok"' RUNNER_OS=Linux ./scripts/list-bazel-clippy-targets.sh | grep -c -- '-windows-cross-bin$' RUNNER_OS=Windows ./scripts/list-bazel-clippy-targets.sh --windows-cross-compile | grep -c -- '-windows-cross-bin$' ``` The Linux target-list check reported `0` Windows-cross internal test binaries, while the Windows cross target-list check reported `47`, preserving the test-code clippy coverage shape from the existing Windows job.
53 lines
1.6 KiB
Bash
Executable File
53 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
cd "${repo_root}"
|
|
|
|
windows_cross_compile=0
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--windows-cross-compile)
|
|
windows_cross_compile=1
|
|
shift
|
|
;;
|
|
*)
|
|
echo "Usage: $0 [--windows-cross-compile]" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Resolve the dynamic targets before printing anything so callers do not
|
|
# continue with a partial list if `bazel query` fails. Reuse the same CI Bazel
|
|
# server settings as the subsequent build so Windows jobs do not cold-start a
|
|
# second Bazel server just for target discovery.
|
|
if [[ $windows_cross_compile -eq 1 ]]; then
|
|
manual_rust_test_targets="$(
|
|
./.github/scripts/run-bazel-query-ci.sh \
|
|
--windows-cross-compile \
|
|
--output=label \
|
|
-- 'kind("rust_test rule", attr(tags, "manual", //codex-rs/... except //codex-rs/v8-poc/...))'
|
|
)"
|
|
else
|
|
manual_rust_test_targets="$(
|
|
./.github/scripts/run-bazel-query-ci.sh \
|
|
--output=label \
|
|
-- 'kind("rust_test rule", attr(tags, "manual", //codex-rs/... except //codex-rs/v8-poc/...))'
|
|
)"
|
|
fi
|
|
if [[ "${RUNNER_OS:-}" != "Windows" ]]; then
|
|
manual_rust_test_targets="$(printf '%s\n' "${manual_rust_test_targets}" | grep -v -- '-windows-cross-bin$' || true)"
|
|
fi
|
|
|
|
printf '%s\n' \
|
|
"//codex-rs/..." \
|
|
"-//codex-rs/v8-poc:all"
|
|
|
|
# `--config=clippy` on the `workspace_root_test` wrappers does not lint the
|
|
# underlying `rust_test` binaries. Add the internal manual `*-unit-tests-bin`
|
|
# targets explicitly so inline `#[cfg(test)]` code is linted like
|
|
# `cargo clippy --tests`.
|
|
printf '%s\n' "${manual_rust_test_targets}"
|