Skip to content

fix(release): write composer.json to host workspace, add macOS PIE binaries - #78

Merged
zeriyoshi merged 1 commit into
mainfrom
fix/release-workspace-macos
Jul 27, 2026
Merged

fix(release): write composer.json to host workspace, add macOS PIE binaries#78
zeriyoshi merged 1 commit into
mainfrom
fix/release-workspace-macos

Conversation

@zeriyoshi

Copy link
Copy Markdown
Contributor

Summary

Fixes the failed Release run (Verify project is initialized → composer.json not found): the fallback pskel init skeleton wrote composer.json to /opt/pskel inside the container because get_workspace_dir never considered the compose-mounted /workspace when the working directory is outside it (docker compose run defaults to /). An explicit /workspace fallback now places the generated composer.json in the host checkout.

Completes the prebuilt binary matrix with macOS (Linux was added in #77, Windows already existed):

  • New macOS release job: macos-15 (arm64) + macos-15-intel (x86_64) × PHP 8.1–8.5 × ts/nts = 20 assets, built natively with pskel package (darwin/bsdlibc PIE naming)
  • cmd_package: sysctl -n hw.ncpu fallback where nproc is unavailable; the Linux-only ltmain.sh patch is skipped on Darwin (mirrors the proven ci_macos build steps)
  • Source job now uses the lightweight builder target instead of the full base image (no Valgrind/LLVM needed for skeleton init)

Test plan

  • Container replication of the Source job (docker compose run ... pskel init skeleton, builder target): composer.json and initialized ext/ land in the host checkout, extension-name resolves to skeleton
  • Native macOS (arm64, Homebrew PHP 8.5 NTS): pskel package produced php_skeleton-v9.9.9-mac_php8.5-arm64-darwin-bsdlibc.zip containing skeleton.so, load smoke test passed
  • Re-tag after merge to verify the full release pipeline (Linux 40 + macOS 20 + Windows 20 assets)

🤖 Generated with Claude Code

…naries

The Source job's fallback "pskel init skeleton" wrote composer.json to
/opt/pskel inside the container because get_workspace_dir never checked
the compose-mounted /workspace when invoked with a working directory
outside it (docker compose run defaults to /). Add an explicit
/workspace fallback so the generated composer.json lands in the host
checkout, fixing the "composer.json not found" release failure.

Also complete the prebuilt binary matrix with macOS: a new release job
builds on macos-15 (arm64) and macos-15-intel (x86_64) for PHP 8.1-8.5
ts/nts via setup-php and runs "pskel package" natively (darwin/bsdlibc
naming). cmd_package now falls back to sysctl hw.ncpu where nproc is
unavailable and skips the Linux-only ltmain.sh patch on Darwin,
mirroring the proven ci_macos build steps. The Source job now uses the
lightweight builder target instead of the full base image.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@zeriyoshi
zeriyoshi merged commit 9345e6c into main Jul 27, 2026
1 check passed
zeriyoshi added a commit that referenced this pull request Jul 27, 2026
Since get_workspace_dir learned to detect the compose-mounted
/workspace (#78), pskel coverage captures into /workspace/ext/lcov.info
(the host checkout) instead of the image's /ext. The coverage job still
bind-mounted an empty host file over /ext/lcov.info and shipped it as
the shard, which coverage-report rejected with "missing FNL: records".
Drop the single-file mount and take the shard from ext/lcov.info.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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