Skip to content

release: ship dx-windows-*-pdb.zip debug symbols with each Windows cell (part of #8428) - #8467

Merged
TrapsterDK merged 4 commits into
mainfrom
fix-8428-pdb-zip
Nov 6, 2026
Merged

TrapsterDK merged 4 commits into
mainfrom
fix-8428-pdb-zip

Conversation

@TrapsterDK

@TrapsterDK TrapsterDK commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

Part of #8428

Rebased onto main (after #8459 and #8471). #8471's msvc_pdb_output.patch already declares the MSVC PDB at every strip level, so no strip_level change is needed.

Changes

  • deploy/release/matrix.bzl: each Windows cell gets <cell>_pdb_archive (dx-windows-<cpu>-pdb.zip, via the Bazel zipper), a .sha256 and an SPDX SBOM. :dx_host_cell_pdb and :dx_host_cell_pdb_sbom alias the host cell. release_cell_symbols names the file; the matrix JSON is unchanged.
  • The zip entry is dx_upstream.pdb, not dx.pdb: /pdbaltpath:%_PDB% writes the PDB basename of the upstream rust_binary into dx.exe, so a renamed PDB would not be found next to the exe.
  • deploy/release/src/cell.rs: qualify takes optional --symbols and --symbols-rebuild; the determinism check also compares their digests.
  • tools/ci/release_cell.sh: builds, copies and rebuilds the symbols zip on Windows cells and passes it to qualify.
  • .github/workflows/release.yml: the symbols zip, its .sha256 and SPDX go into the checksum manifest (15 -> 19 lines), files.list and the attestation verification loop.
  • cli/adopt/src/launcher.rs: the pin parser skips the symbols zip and its SBOM lines (Windows only).
  • Tests: matrix_unit, qualify_compares_the_symbols_rebuild, launcher parser test, release_assets_test strings, windows_host_cell_ships_its_symbols_zip in release_host_cell_test, and the new //cli/cli:dx_opt_pdb_test (dx_msvc_opt_pdb_tests in rust/rules/wrapper_tests.bzl, Windows only, compilation_mode=opt, checks the pdb_file output group is exactly dx_upstream.pdb).

Local (linux): matrix_unit, dx_release_tools_clippy_test, the //rust/rules/... analysis tests and dx_adopt_clippy_test pass. These fail on main too: rustfmt aspect targets (dx_release_tools_fmt_test, bench_report_fmt_test, dx_adopt_fmt_test), bcr_templates_test, bump_version_bin_test, candidate_identity_test, release_assets_test (python in ci.yml; launcher shell pattern), and dx_adopt_test (table_matches_the_repo_module_bazel, deps_match_the_repo_module_bazel). Nested-Bazel and *_consumer_test targets were not run.

Evidence (windows_x86_64, windows_arm64)

  • 42221573046 (task=build relocate=true, --config=dx_release, //deploy/release:dx_host_cell //deploy/release:dx_host_cell_pdb): both cells build the exe zip and the pdb zip. The relocated rebuild differs for both, because dx.exe and dx_upstream.pdb themselves still differ after relocation. That is release: reproducible PDB for Windows dx.exe so debug symbols can ship #8410 (same result in its run 42216510920).
  • 42221586283 (task=test): dx_opt_pdb_test reported dx_upstream.pdb (fixed in the last commit by expecting that name). host_cell_ships_exactly_its_members fails because the archive lists the CRT DLLs while the cell runtime lists msvc_vcruntime/windows_ucrt. That test is not changed here.

Evidence (stacked on #8568)

Rebased onto main again (f09c42f). Local (linux): matrix_unit, dx_release_tools_clippy_test, dx_adopt_clippy_test and the //rust/tests/fixtures/hello analysis tests (thin_rust_test, wrapper_conformance_tests, wrapper_registry_tests, wrapper_registry_tests_forward) pass. dx_opt_pdb_test is Windows only. Nested-Bazel and *_consumer_test targets were not run.

The host_cell_ships_exactly_its_members failure is tracked in #8571.

Remaining (blocks closing #8428)

🤖 Generated with Claude Code

https://claude.ai/code/session_011u9TXHDZrfmzFQ2WT8QAKK

TrapsterDK and others added 4 commits November 6, 2026 15:19
…ll (closes #8428)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011u9TXHDZrfmzFQ2WT8QAKK
…#8428)

/pdbaltpath:%_PDB% writes dx_upstream.pdb into dx.exe, so a renamed dx.pdb
would not be found next to the exe.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011u9TXHDZrfmzFQ2WT8QAKK
@TrapsterDK

Copy link
Copy Markdown
Collaborator Author

Handoff: evidence run 42232865025 (windows_x86_64, windows_arm64, task=build relocate=true, --config=dx_release, //deploy/release:dx_host_cell //deploy/release:dx_host_cell_pdb) runs on evidence-8428-on-8568, which is this PR merged into #8568's fix-8410-msvc-paths (clean merge, launcher.rs and the 19-line manifest unchanged). This PR is rebased onto main at f09c42f and its local checks pass.

When the run finishes:

In every case, delete the throwaway branch afterwards (git push origin --delete evidence-8428-on-8568). Do not remove blocked from #8428 by hand; issue-labels drops it once #8410 closes. If #8568 changes before it merges, rerun the evidence on a fresh combined branch.

@TrapsterDK
TrapsterDK marked this pull request as ready for review November 6, 2026 15:34
@TrapsterDK
TrapsterDK merged commit e6f34c4 into main Nov 6, 2026
@TrapsterDK
TrapsterDK deleted the fix-8428-pdb-zip branch November 6, 2026 15:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

release: ship dx-windows-*-pdb.zip debug symbols with each Windows cell

1 participant