mirror of
https://github.com/openai/codex.git
synced 2026-05-22 12:04:19 +00:00
## Why Codex CLI packaging is currently split across npm staging, standalone installers, and release bundle creation, which makes it hard to define and validate a single valid package directory. This adds the first standalone package builder so later release paths can converge on the same canonical layout. ## What changed - Added `scripts/build_codex_package.py` as the stable executable wrapper around `scripts/codex_package`. - Added modules for CLI parsing, target metadata, grouped cargo builds, package layout validation, and archive writing. - The builder creates a package directory with `codex-package.json`, `bin/`, `codex-resources/`, and `codex-path`, and can serialize it as `.tar.gz`, `.tar.zst`, or `.zip`. - Source-built artifacts are built by one grouped `cargo build`: `codex` for all targets, `bwrap` for Linux, and the Windows sandbox helpers for Windows. `rg` remains an input because it is vendored from upstream rather than built from this repo. - Added `scripts/codex_package/README.md` to document the package layout, source-built artifacts, and cargo profile behavior. ## Verification - Ran wrapper/module syntax compilation. - Ran `scripts/build_codex_package.py --help` from `/private/tmp`. - Ran fake-cargo package/archive builds for macOS, Linux, and Windows target layouts, including an assertion that generated tar archives contain no duplicate member names. --- [//]: # (BEGIN SAPLING FOOTER) Stack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/openai/codex/pull/23513). * #23526 * __->__ #23513
40 lines
1.4 KiB
Markdown
40 lines
1.4 KiB
Markdown
# Codex package builder
|
|
|
|
This package contains the implementation behind `scripts/build_codex_package.py`.
|
|
The top-level script is the stable executable entry point; these modules keep the
|
|
package-building logic split by responsibility.
|
|
|
|
The builder creates a canonical Codex package directory:
|
|
|
|
```text
|
|
.
|
|
├── codex-package.json
|
|
├── bin
|
|
│ └── codex[.exe]
|
|
├── codex-resources
|
|
│ ├── bwrap # Linux only
|
|
│ ├── codex-command-runner.exe # Windows only
|
|
│ └── codex-windows-sandbox-setup.exe # Windows only
|
|
└── codex-path
|
|
└── rg[.exe]
|
|
```
|
|
|
|
The package directory is the primary artifact. Archive formats such as
|
|
`.tar.gz`, `.tar.zst`, and `.zip` are serializations of that directory.
|
|
|
|
## Source-built artifacts
|
|
|
|
Artifacts built from this repository are always built by the package builder in
|
|
one grouped `cargo build` command per package:
|
|
|
|
- all targets: `codex`
|
|
- Linux targets: `bwrap`
|
|
- Windows targets: `codex-command-runner` and `codex-windows-sandbox-setup`
|
|
|
|
The default cargo profile is `dev-small` because local iteration should favor
|
|
fast, small builds. Release jobs should pass `--cargo-profile release`.
|
|
|
|
`rg` is not built from this repository, so it remains an input. If `--rg-bin` is
|
|
omitted, the builder looks in the existing `codex-cli/vendor/<target>/path/`
|
|
location.
|