mirror of
https://github.com/openai/codex.git
synced 2026-04-24 14:45:27 +00:00
## Why `shell-tool-mcp` and the Bash fork are no longer needed, but the patched zsh fork is still relevant for shell escalation and for the DotSlash-backed zsh-fork integration tests. Deleting the old `shell-tool-mcp` workflow also deleted the only pipeline that rebuilt those patched zsh binaries. This keeps the package removal, while preserving a small release path that can be reused whenever `codex-rs/shell-escalation/patches/zsh-exec-wrapper.patch` changes. ## What changed - removed the `shell-tool-mcp` workspace package, its npm packaging/release jobs, the Bash test fixture, and the remaining Bash-specific compatibility wiring - deleted the old `.github/workflows/shell-tool-mcp.yml` and `.github/workflows/shell-tool-mcp-ci.yml` workflows now that their responsibilities have been replaced or removed - kept the zsh patch under `codex-rs/shell-escalation/patches/zsh-exec-wrapper.patch` and updated the `codex-rs/shell-escalation` docs/code to describe the zsh-based flow directly - added `.github/workflows/rust-release-zsh.yml` to build only the three zsh binaries that `codex-rs/app-server/tests/suite/zsh` needs today: - `aarch64-apple-darwin` on `macos-15` - `x86_64-unknown-linux-musl` on `ubuntu-24.04` - `aarch64-unknown-linux-musl` on `ubuntu-24.04` - extracted the shared zsh build/smoke-test/stage logic into `.github/scripts/build-zsh-release-artifact.sh`, made that helper directly executable, and now invoke it directly from the workflow so the Linux and macOS jobs only keep the OS-specific setup in YAML - wired those standalone `codex-zsh-*.tar.gz` assets into `rust-release.yml` and added `.github/dotslash-zsh-config.json` so releases also publish a `codex-zsh` DotSlash file - updated the checked-in `codex-rs/app-server/tests/suite/zsh` fixture comments to explain that new releases come from the standalone zsh assets, while the checked-in fixture remains pinned to the latest historical release until a newer zsh artifact is published - tightened a couple of follow-on cleanups in `codex-rs/shell-escalation`: the `ExecParams::command` comment now describes the shell `-c`/`-lc` string more clearly, and the README now points at the same `git.code.sf.net` zsh source URL that the workflow uses ## Testing - `cargo test -p codex-shell-escalation` - `just argument-comment-lint` - `bash -n .github/scripts/build-zsh-release-artifact.sh` - attempted `cargo test -p codex-core`; unrelated existing failures remain, but the touched `tools::runtimes::shell::unix_escalation::*` coverage passed during that run
62 lines
1.6 KiB
Bash
Executable File
62 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
if [[ "$#" -ne 1 ]]; then
|
|
echo "usage: $0 <archive-path>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
archive_path="$1"
|
|
workspace="${GITHUB_WORKSPACE:?missing GITHUB_WORKSPACE}"
|
|
zsh_commit="${ZSH_COMMIT:?missing ZSH_COMMIT}"
|
|
zsh_patch="${ZSH_PATCH:?missing ZSH_PATCH}"
|
|
temp_root="${RUNNER_TEMP:-/tmp}"
|
|
work_root="$(mktemp -d "${temp_root%/}/codex-zsh-release.XXXXXX")"
|
|
trap 'rm -rf "$work_root"' EXIT
|
|
|
|
source_root="${work_root}/zsh"
|
|
package_root="${work_root}/codex-zsh"
|
|
wrapper_path="${work_root}/exec-wrapper"
|
|
stdout_path="${work_root}/stdout.txt"
|
|
wrapper_log_path="${work_root}/wrapper.log"
|
|
|
|
git clone https://git.code.sf.net/p/zsh/code "$source_root"
|
|
cd "$source_root"
|
|
git checkout "$zsh_commit"
|
|
git apply "${workspace}/${zsh_patch}"
|
|
./Util/preconfig
|
|
./configure
|
|
|
|
cores="$(command -v nproc >/dev/null 2>&1 && nproc || getconf _NPROCESSORS_ONLN)"
|
|
make -j"${cores}"
|
|
|
|
cat > "$wrapper_path" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
: "${CODEX_WRAPPER_LOG:?missing CODEX_WRAPPER_LOG}"
|
|
printf '%s\n' "$@" > "$CODEX_WRAPPER_LOG"
|
|
file="$1"
|
|
shift
|
|
if [[ "$#" -eq 0 ]]; then
|
|
exec "$file"
|
|
fi
|
|
arg0="$1"
|
|
shift
|
|
exec -a "$arg0" "$file" "$@"
|
|
EOF
|
|
chmod +x "$wrapper_path"
|
|
|
|
CODEX_WRAPPER_LOG="$wrapper_log_path" \
|
|
EXEC_WRAPPER="$wrapper_path" \
|
|
"${source_root}/Src/zsh" -fc '/bin/echo smoke-zsh' > "$stdout_path"
|
|
|
|
grep -Fx "smoke-zsh" "$stdout_path"
|
|
grep -Fx "/bin/echo" "$wrapper_log_path"
|
|
|
|
mkdir -p "$package_root/bin" "$(dirname "${workspace}/${archive_path}")"
|
|
cp "${source_root}/Src/zsh" "$package_root/bin/zsh"
|
|
chmod +x "$package_root/bin/zsh"
|
|
|
|
(cd "$work_root" && tar -czf "${workspace}/${archive_path}" codex-zsh)
|