Skip to content

fork-release: prebuilt Linux packages with a fork-only installer - #6

Merged
JSBtechnologies merged 2 commits into
mainfrom
fork-release-pipeline
Oct 21, 2026
Merged

JSBtechnologies merged 2 commits into
mainfrom
fork-release-pipeline

Conversation

@JSBtechnologies

Copy link
Copy Markdown
Owner

Summary

Prebuilt, explicitly fork-labelled releases, following upstream's distribution model (a GitHub release of the standard Codex package plus an installer) without its infrastructure.

  • .github/workflows/fork-release.yml — on a fork-v<semver> tag: builds the Codex package with upstream's own scripts/build_codex_package.py on ubuntu-22.04 (codex, code-mode host, bwrap, pinned rg; stripped), stamps the workspace version to <semver>+fork, smoke-tests the package, and publishes a GitHub release titled "Codex fork v (JSBtechnologies)" with codex-package-x86_64-unknown-linux-gnu.tar.gz / .tar.zst, codex-package_SHA256SUMS and the installer. workflow_dispatch builds without releasing.
  • scripts/install/install-fork.sh — fork-only installer (refuses non-fork-v tags). Verifies the checksum and installs into ~/.codex/packages/standalone/releases/<version> with a current symlink and ~/.local/bin/codex, the same layout as upstream's standalone installer, so the daemon tooling sees a complete package.
  • tui — +fork builds skip the upstream update check (they could never upgrade to an openai/codex release).
  • README: install one-liner and release instructions.

Linux x86_64 (glibc 2.35+) first. musl and Windows (needs codex-command-runner.exe, codex-windows-sandbox-setup.exe, signing) are documented as next steps in the workflow header.

Test plan

  • Package builder dry run locally on WSL2 produces the expected layout; stripped package is 140 MB (--strip all)
  • Installer end-to-end against the local package over a throwaway http.server: layout, symlinks, codex --version through the symlink, helper beside the real binary, tampered checksum rejected, rust-v* tag rejected
  • cargo test -p codex-tui --lib update_versions passes; rustfmt and clippy clean
  • Workflow YAML parses
  • After merge: Actions → fork-release → Run workflow with version 0.1.0 (build only), then git tag fork-v0.1.0 && git push origin fork-v0.1.0 for the first real release
  • curl -fsSL https://github.com/JSBtechnologies/codex/releases/latest/download/install-fork.sh | sh on a clean machine

Fork releases carry `+fork` build metadata in CARGO_PKG_VERSION. The startup
update check compares against openai/codex releases, which a fork build can
never upgrade to, so treat such versions like source builds and skip it.
Follow upstream's distribution model without its infrastructure: a
GitHub-hosted workflow builds the same Codex package upstream ships
(codex-package-<target>.tar.gz with bin/codex, bin/codex-code-mode-host,
codex-resources/bwrap, codex-path/rg and codex-package.json) via
scripts/build_codex_package.py, smoke-tests it, and publishes a GitHub release
with checksums and an installer.

Fork labelling is explicit everywhere: tags are fork-v<semver> (upstream uses
rust-v), the workspace version is stamped <semver>+fork so `codex --version`
says so, and the release title and notes name the fork.

scripts/install/install-fork.sh is a small POSIX installer for fork releases
only (it refuses non-fork tags). It verifies the archive against
codex-package_SHA256SUMS and installs into ~/.codex/packages/standalone with a
`current` symlink and ~/.local/bin/codex, the layout upstream's standalone
installer uses, so the daemon tooling sees a complete package.
CODEX_FORK_BASE_URL allows mirrors and local testing.

Linux x86_64 (glibc, built on ubuntu-22.04) first; musl and Windows are
documented as next steps in the workflow.
@JSBtechnologies
JSBtechnologies merged commit b406241 into main Oct 21, 2026
11 checks passed
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.

1 participant