Skip to content

release: package prebuilt resource binaries#23759

Merged
bolinfest merged 1 commit into
mainfrom
pr23759
May 20, 2026
Merged

release: package prebuilt resource binaries#23759
bolinfest merged 1 commit into
mainfrom
pr23759

Conversation

@bolinfest
Copy link
Copy Markdown
Collaborator

@bolinfest bolinfest commented May 20, 2026

Why

Release packaging should be a staging step once release binaries have already been built and signed. The Windows release job was downloading and signing codex-command-runner.exe and codex-windows-sandbox-setup.exe, but scripts/build_codex_package.py still rebuilt those helpers while creating the package archives.

That makes the package step slower and, more importantly, risks putting helper binaries in the archive that were produced after the signing step. Linux had the same shape for package resources: bwrap could be rebuilt by the package builder instead of being passed in as a prebuilt release artifact.

This builds on #23752, which fixes .tar.zst creation when Windows runners rely on the repository DotSlash zstd wrapper.

What changed

  • Add explicit prebuilt resource inputs to the Codex package builder:
    • --bwrap-bin
    • --codex-command-runner-bin
    • --codex-windows-sandbox-setup-bin
  • Make .github/scripts/build-codex-package-archive.sh pass resource binaries from the release output directory when they are already present.
  • Build Linux bwrap for app-server release jobs too, so app-server package creation does not invoke Cargo just to supply the package resource.
  • Keep macOS package creation as a no-Cargo path when --entrypoint-bin is provided, since macOS packages have no resource binaries.
  • Add unit coverage showing prebuilt macOS, Linux, and Windows package inputs result in no source-built binaries.

Verification

  • python3 -m unittest discover -s scripts/codex_package -p 'test_*.py'
  • python3 -m py_compile scripts/codex_package/*.py
  • bash -n .github/scripts/build-codex-package-archive.sh
  • Dry-ran Linux and Windows package builds with fake prebuilt resources and a nonexistent Cargo path to verify the package builder did not invoke Cargo.

Stack created with Sapling. Best reviewed with ReviewStack.

Copy link
Copy Markdown
Contributor

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bdafb7ab46

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

--package-dir "$package_dir" \
--archive-output "$gzip_archive_path" \
--archive-output "$zstd_archive_path" \
"${resource_args[@]}" \
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Guard empty resource arg expansion under nounset

When this script is invoked for macOS packaging paths (for example .github/workflows/rust-release.yml Build Codex package archive steps around lines 522-535 and 836-848), no resource flags are provided, so resource_args stays empty. Under set -u, Bash 3.2 (the default shell on GitHub macOS runners) treats "${resource_args[@]}" as an unbound expansion for an empty array, causing the packaging command to abort before build_codex_package.py runs. Please gate this expansion (e.g., only append the array when non-empty) so macOS release packaging does not fail.

Useful? React with 👍 / 👎.

@bolinfest bolinfest merged commit 80c4a97 into main May 20, 2026
47 of 62 checks passed
@bolinfest bolinfest deleted the pr23759 branch May 20, 2026 21:51
@github-actions github-actions Bot locked and limited conversation to collaborators May 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants