Skip to content

npm: remove legacy package artifact synthesis#23836

Open
bolinfest wants to merge 1 commit into
mainfrom
pr23836
Open

npm: remove legacy package artifact synthesis#23836
bolinfest wants to merge 1 commit into
mainfrom
pr23836

Conversation

@bolinfest
Copy link
Copy Markdown
Collaborator

@bolinfest bolinfest commented May 21, 2026

Why

The npm staging CI job no longer needs to exercise the legacy path that synthesized package layouts from old per-binary artifacts. Current rust-release runs publish real codex-package-<target>.tar.gz archives, and release staging already expects those canonical package archives.

Keeping the compatibility path makes install_native_deps.py carry stale responsibilities: it can fetch rg, install standalone codex/bwrap/Windows helper binaries, and construct an approximate package layout when the real archive is missing. That made sense for an old CI fixture, but it weakens the signal from npm staging now that the canonical artifacts exist.

What Changed

  • Updated the CI npm-staging fixture to use the successful rust-v0.133.0-alpha.4 run that includes codex-package-* archives.
  • Removed --allow-legacy-codex-package from scripts/stage_npm_packages.py and the CI invocation.
  • Simplified codex-cli/scripts/install_native_deps.py so it only hydrates real codex-package archives plus codex-responses-api-proxy binaries.
  • Removed the old layout synthesis, rg download, and extra per-binary component paths from install_native_deps.py.
  • Added unit coverage that package archives are extracted and missing package archives fail directly.

Verification

  • python3 -m unittest discover -s codex-cli/scripts -p "test_*.py"
  • python3 -m unittest discover -s scripts/codex_package -p "test_*.py"
  • python3 -m py_compile scripts/stage_npm_packages.py codex-cli/scripts/install_native_deps.py codex-cli/scripts/test_install_native_deps.py
  • scripts/stage_npm_packages.py --help
  • codex-cli/scripts/install_native_deps.py --help
  • Confirmed https://github.com/openai/codex/actions/runs/26201494185 exposes the target artifacts, and downloaded x86_64-unknown-linux-musl to confirm it contains codex-package-x86_64-unknown-linux-musl.tar.gz.

Base automatically changed from pr23833 to main May 21, 2026 15:48
bolinfest added a commit that referenced this pull request May 21, 2026
## Why

Installing `@openai/codex` currently places a Dotslash `rg` manifest at
`node_modules/@openai/codex/bin/rg`, even though the native optional
dependency already ships the actual helper under
`vendor/<target>/codex-path/rg`. The launcher prepends that `codex-path`
directory, so the top-level `bin/rg` file is redundant in the npm
install.

The remaining direct consumers of the manifest are package-building
paths: `scripts/codex_package/ripgrep.py` and
`codex-cli/scripts/install_native_deps.py`. Keeping the manifest under
`codex-cli/bin` makes it look like a shipped npm binary, so this moves
it next to the package-builder code that owns it. The checked-in
`@openai/codex` package metadata should likewise describe only the meta
package payload; generated platform packages continue to publish
`vendor`.

## What Changed

- Moved the Dotslash ripgrep manifest from `codex-cli/bin/rg` to
`scripts/codex_package/rg`.
- Updated the package builder, npm native-artifact hydrator, README, and
CLI help text to reference the new manifest location.
- Stopped `codex-cli/scripts/build_npm_package.py` from copying `rg`
into the `@openai/codex` meta package.
- Narrowed the checked-in meta package `files` whitelist to
`bin/codex.js`.

## Verification

- `python3 -m unittest discover -s scripts/codex_package -p "test_*.py"`
- `python3 -m unittest discover -s codex-cli/scripts -p "test_*.py"`
- `python3 -m py_compile codex-cli/scripts/build_npm_package.py
codex-cli/scripts/install_native_deps.py
scripts/codex_package/ripgrep.py scripts/codex_package/cli.py
scripts/stage_npm_packages.py`
- `codex-cli/scripts/build_npm_package.py --package codex --version
0.0.0-test --pack-output <tmp>/codex-meta-no-vendor.tgz`
- `tar -tf <tmp>/codex-meta-no-vendor.tgz` showed only
`package/bin/codex.js`, `package/package.json`, and `package/README.md`.
- Direct staging check showed `codex` uses `files: ["bin/codex.js"]`
while `codex-darwin-arm64` still uses `files: ["vendor"]`.

---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/openai/codex/pull/23833).
* #23836
* __->__ #23833
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.

2 participants