feat: Builds static php interpreters on release - #94
carlos-granados merged 4 commits into
Conversation
a2c6259 to
12f802a
Compare
|
@claude review |
|
Claude finished @pronskiy's task in 5m 3s —— View job PR Review: feat: Builds static php interpreters on release
Nice scope — gives users a turn-key debugger-enabled PHP for every supported (OS, arch, PHP version, TS/NTS) combination. A few real bugs worth fixing before tag-and-ship, plus some efficiency notes. Bugs1. macOS RC/alpha/beta filter is a no-op — grep -v 'RC\|alpha\|beta'GNU grep extends BRE so Fix once for both jobs: grep -vE 'RC|alpha|beta'2. Windows tag selection picks the wrong "latest stable" — ... | Sort-Object -Descending | Select-Object -First 1
PHP 8.2 already has >10 patch releases, so this is currently broken for 8.2 (probably 8.3 too) — the Unix jobs use Fix: ... | Sort-Object { [version]($_ -replace '.*php-',) } -Descending | Select-Object -First 1Fix this →%20%7D%20-Descending%60%20so%20that%20php-8.4.10%20sorts%20higher%20than%20php-8.4.2.%20Lexical%20sort%20currently%20picks%20an%20older%20patch%20level.&repo=php-debugger/php-debugger) 3. arm64 macOS build is implicitly relying on pre-installed brew packages — L173-176 # arm64 native build can use system libraries
brew install autoconf automake libtool bison re2c pkg-config argon2The configure includes brew install autoconf automake libtool bison re2c pkg-config \
openssl@3 argon2 oniguruma libsodiumConsistency / drift4. 5. The Efficiency6. Configure flags include things never packaged — 7. No cache of 8. Coverage gaps9. macOS x86_64 has no post-build verification — the static-linkage and functional tests are correctly skipped ( 10. SummaryTwo bugs that will hit users: macOS RC filter (broken filter → potential pre-release tag selection) and Windows version sort (lexical → wrong patch on 8.2). The third (implicit brew deps on arm64) is latent. Everything else is polish. Sample release at https://github.com/carlos-granados/php-debugger/releases/tag/php2 — worth manually checking what version each Windows binary reports ( |
12f802a to
895dc67
Compare
There was a problem hiding this comment.
Pull request overview
Adds release-time CI jobs that build and attach statically-built PHP CLI binaries with php_debugger built-in, across supported OSes/architectures/PHP versions and TS/NTS variants, so end users can download ready-to-run PHP executables from GitHub Releases.
Changes:
- Introduces shared
CONFIGURE_FLAGSplus OS-specific configure flag variables for building PHP withphp_debuggerenabled. - Adds new build matrix jobs to compile and upload PHP CLI binaries for macOS (arm64/x86_64), Linux (x86_64/arm64), and Windows (x64), including basic runtime checks.
- Expands the release asset collection step to include the newly produced PHP executables.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - name: Verify extension is statically linked | ||
| if: matrix.arch == 'arm64' | ||
| run: | | ||
| cd ~/php-src | ||
| ./sapi/cli/php -m | grep -q php_debugger | ||
| ./sapi/cli/php -m | grep -q xdebug | ||
| ./sapi/cli/php -v | grep -q "PHP Debugger" | ||
|
|
||
| - name: Test extension functionality | ||
| if: matrix.arch == 'arm64' | ||
| run: | |
# Conflicts: # .github/workflows/release.yml
0dcf4ad to
1c9a419
Compare
1c9a419 to
a83f5d5
Compare
|
The suggestions of the second review from Copilot were all unnecessary changes, I have resolved all of them, will now look into the Claude review |
|
@claude I updated everything according to your comments except point 5 as I believe that the current implementation is correct, can you do a new review? |
|
Claude finished @carlos-granados's task in 2m 48s —— View job PR Re-Review: feat: Builds static php interpreters on release
Nice work — all four "will hit users" issues from the previous review are fixed, and the fix for #2 (Windows lexical sort) is a nicer solution than what I suggested: centralizing tag resolution into a Verified fixes
Point 5 confirmedYou were right — no change needed. New findingsA. PowerShell & $php -m | Select-String -Pattern "php_debugger"
if (-not $?) { Write-Error "php_debugger not in module list"; exit 1 }
if (-not (& $php -m | Select-String -Pattern "php_debugger" -Quiet)) {
Write-Error "php_debugger not in module list"; exit 1
}B. C. SummaryShip it. The previously-flagged user-hitting bugs are all gone. The remaining items (A dead check, B version drift, C JIT-off scope creep) are polish — none block release. Sample release worth spot-checking: pick one 8.2 Windows build and one 8.4 Windows build from the new sample release and confirm |
|
@claude review again |
|
Claude finished @carlos-granados's task in 3m 52s —— View job PR Re-Review: feat: Builds static php interpreters on release
All three items from the previous review are resolved. Diff since last review is exactly the fixes I asked for and nothing else — clean. Verified fixes
Ship itI intentionally didn't hunt for anything new — the changes since the last review are surgically scoped to my three items and I already reviewed the rest of the workflow. The pre-existing minor items I flagged before ( Two things worth doing manually before you cut a real tag, as sanity checks that don't need code changes:
Nothing blocking. Merge when ready. --- · branch: |
|
@pronskiy everything seen by Claude and Copilot fixed, time for a final review |
Sample release build in my fork:
https://github.com/carlos-granados/php-debugger/releases/tag/php