mirror of
https://github.com/openai/codex.git
synced 2026-05-23 04:24:21 +00:00
## Why The package builder should describe the binaries it is actually packaging, not require callers to restate release metadata out of band. A caller-provided `--version` flag can drift from the workspace version, but running the target entrypoint to discover its version breaks cross-target packages when the produced binary cannot execute on the build host. This PR keeps package metadata tied to the repository source of truth by reading `[workspace.package].version` from `codex-rs/Cargo.toml`. It also prepares the package layout for `codex-app-server` packages: the same package structure can now represent either the CLI entrypoint or the app-server entrypoint while keeping shared sidecars such as `rg`, `bwrap`, and Windows sandbox helpers in the existing package directories. ## What changed - Removes the `--version` CLI flag from `scripts/build_codex_package.py`. - Adds Cargo.toml version discovery for `codex-package.json.version` via `codex-rs/Cargo.toml`. - Adds `--entrypoint-bin` so callers can package a prebuilt entrypoint instead of rebuilding it with Cargo. - Makes `--variant` an explicit choice between `codex` and `codex-app-server`, and uses it to select the cargo binary and packaged `bin/` entrypoint name. - Updates `scripts/codex_package/README.md` to document variants, prebuilt entrypoints, and Cargo.toml version detection. ## Verification - Compiled `scripts/build_codex_package.py` and `scripts/codex_package/*.py` with `PYTHONDONTWRITEBYTECODE=1`. - Ran `scripts/build_codex_package.py --help` and verified `--version` is gone while `--variant` and `--entrypoint-bin` are present. - Verified the package builder reads version `0.0.0` from `codex-rs/Cargo.toml`. - Built a fake cross-target `codex-app-server` package using a non-executable `--entrypoint-bin`; verified metadata records version `0.0.0`, variant `codex-app-server`, and `bin/codex-app-server` as the entrypoint.
30 lines
874 B
Python
30 lines
874 B
Python
"""Version discovery for Codex packages."""
|
|
|
|
import re
|
|
|
|
from .targets import REPO_ROOT
|
|
|
|
|
|
WORKSPACE_VERSION_PATTERN = re.compile(r'^version\s*=\s*"([^"]+)"')
|
|
|
|
|
|
def read_workspace_version() -> str:
|
|
cargo_toml = REPO_ROOT / "codex-rs" / "Cargo.toml"
|
|
in_workspace_package = False
|
|
with open(cargo_toml, encoding="utf-8") as fh:
|
|
for line in fh:
|
|
stripped = line.strip()
|
|
if stripped == "[workspace.package]":
|
|
in_workspace_package = True
|
|
continue
|
|
|
|
if in_workspace_package and stripped.startswith("["):
|
|
break
|
|
|
|
if in_workspace_package:
|
|
match = WORKSPACE_VERSION_PATTERN.match(stripped)
|
|
if match is not None:
|
|
return match.group(1)
|
|
|
|
raise RuntimeError(f"Could not find [workspace.package].version in {cargo_toml}")
|