mirror of
https://github.com/openai/codex.git
synced 2026-10-19 16:17:49 +00:00
Align Cargo and Bazel Rust debug information defaults (#47748)
## Why Keep source locations available without full debug information in ordinary builds, and retain symbols until release packaging. macOS targets also need to avoid invoking `dsymutil` in Linux remote Rust actions where it is unavailable. ## What changed - Set Cargo's `dev` profile to `line-tables-only` and let `ci-test` inherit it through `test`. Document environment overrides for full debug information. - Patch `rules_rs` to use line tables for `fastbuild` and `opt`, full debug information for `dbg`, and no stripping in all three modes. - Disable split debug information for macOS toolchains, matching Cargo's release policy. GitOrigin-RevId: 9e92b28f9647cea7dd73084febd84726b1cee279
This commit is contained in:
@@ -189,6 +189,7 @@ single_version_override(
|
||||
patch_strip = 1,
|
||||
patches = [
|
||||
"//patches:rules_rs_build_script_deps_annotation.patch",
|
||||
"//patches:rules_rs_rust_debug_modes.patch",
|
||||
"//patches:rules_rs_windows_msvc_linker.patch",
|
||||
"//patches:rules_rs_zlib_snapshot_urls.patch",
|
||||
],
|
||||
|
||||
+3
-4
@@ -598,9 +598,9 @@ ignored = [
|
||||
]
|
||||
|
||||
[profile.dev]
|
||||
# Keep line tables/backtraces while avoiding expensive full variable debug info
|
||||
# across local dev builds.
|
||||
debug = "limited"
|
||||
# The test profile inherits dev. Keep source locations in ordinary builds;
|
||||
# use CARGO_PROFILE_DEV_DEBUG=full (or CARGO_PROFILE_TEST_DEBUG=full) for locals.
|
||||
debug = "line-tables-only"
|
||||
|
||||
[profile.dev-small]
|
||||
inherits = "dev"
|
||||
@@ -627,7 +627,6 @@ strip = false
|
||||
|
||||
[profile.ci-test]
|
||||
# Reduce binary size to reduce disk pressure.
|
||||
debug = "limited"
|
||||
inherits = "test"
|
||||
opt-level = 0
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ exports_files([
|
||||
"rules_foreign_cc_make_xcompile.patch",
|
||||
"rules_foreign_cc_make_msvc_stdint.patch",
|
||||
"rules_rs_build_script_deps_annotation.patch",
|
||||
"rules_rs_rust_debug_modes.patch",
|
||||
"rules_rs_windows_msvc_linker.patch",
|
||||
"rules_rs_zlib_snapshot_urls.patch",
|
||||
"rusty_v8_prebuilt_out_dir.patch",
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
diff --git a/rs/toolchains/declare_rustc_toolchains.bzl b/rs/toolchains/declare_rustc_toolchains.bzl
|
||||
--- a/rs/toolchains/declare_rustc_toolchains.bzl
|
||||
+++ b/rs/toolchains/declare_rustc_toolchains.bzl
|
||||
@@ -45,6 +45,14 @@
|
||||
},
|
||||
)
|
||||
source_stdlib_building_select[config_setting] = "@rules_rs//rs/private:empty_stdlib"
|
||||
+
|
||||
+ # Apple targets default to packed dSYMs and invoke dsymutil at link time.
|
||||
+ # The Linux remote Rust action has no dsymutil. Match Cargo release's
|
||||
+ # split-debuginfo policy so line/full info remains available before packaging.
|
||||
+ darwin_debug_flags = select({
|
||||
+ "@platforms//os:macos": ["-Csplit-debuginfo=off"],
|
||||
+ "//conditions:default": [],
|
||||
+ })
|
||||
-
|
||||
+
|
||||
for triple in execs:
|
||||
exec_triple = _parse_triple(triple)
|
||||
@@ -152,8 +160,20 @@
|
||||
"//conditions:default": [],
|
||||
}),
|
||||
default_edition = edition,
|
||||
- extra_exec_rustc_flags = _rustc_flags_to_select(extra_exec_rustc_flags),
|
||||
- extra_rustc_flags = _rustc_flags_to_select(extra_rustc_flags),
|
||||
+ extra_exec_rustc_flags = _rustc_flags_to_select(extra_exec_rustc_flags) + darwin_debug_flags,
|
||||
+ extra_rustc_flags = _rustc_flags_to_select(extra_rustc_flags) + darwin_debug_flags,
|
||||
+ # Retain source locations through linking; release packaging owns
|
||||
+ # extracting and stripping symbols. Keep -c dbg for full debugging.
|
||||
+ debug_info = {
|
||||
+ "dbg": "full",
|
||||
+ "fastbuild": "line-tables-only",
|
||||
+ "opt": "line-tables-only",
|
||||
+ },
|
||||
+ strip_level = {
|
||||
+ "dbg": "none",
|
||||
+ "fastbuild": "none",
|
||||
+ "opt": "none",
|
||||
+ },
|
||||
exec_triple = triple,
|
||||
target_triple = select(target_triple_select),
|
||||
visibility = ["//visibility:public"],
|
||||
Reference in New Issue
Block a user