[Homebrew/PHP] Build PHP and FPM directly from upstream source - #119
Draft
brandonpayton wants to merge 7 commits into
Draft
[Homebrew/PHP] Build PHP and FPM directly from upstream source#119brandonpayton wants to merge 7 commits into
brandonpayton wants to merge 7 commits into
Conversation
Add the reviewed PHP timeout, extension-boundary, and ICU-data-loader sources as immutable inputs for the direct Formula.
Replace the transitional registry bridge with a direct PHP 8.3 source build, complete static and loadable extension closure, ICU data, CLI/FPM artifacts, and Node/Chromium service validation.
PHP must compile with the declared host GNU Make rather than the tap's wasm target program. Homebrew installs that dependency as gmake on macOS and make on Linux; select the platform-owned name and fail clearly if the sealed native proxy is unavailable.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
PHP is still built through Kandelo's legacy package registry. That leaves the
tap unable to own PHP's source recipe and prevents the old registry entry from
being retired.
This change gives the core tap a complete, direct-source PHP build. It produces
the command-line runtime, PHP-FPM, and the optional modules needed by Kandelo's
PHP and WordPress workloads without calling the transitional registry bridge.
What changes
libxml2, libzip, OpenSSL, SQLite, and zlib.
php,php-fpm, six loadable modules (curl,intl,opcache,phar,zend_test, andzip), ICU runtime data, sample configuration,manuals, and licenses.
them.
checksum-pinned tap assets.
Wasm output before installation.
Runtime boundaries
Kandelo does not provide cross-process writable
MAP_SHAREDmemory today.Accordingly, opcache remains disabled by default and is supported only with
opcache.file_cache_only=1. The Formula tests both the supported mode and thetruthful failure when shared-memory opcache is requested.
Validation
brew style Formula/php.rbruby -c Formula/php.rbgit diff --checkTwo Linux diagnosis runs proved that the first build failure was not caused by
compiler parallelism:
captured exit status 127 before compilation because the Formula requested
macOS's
gmakeexecutable name on Linux.reproduced the same missing executable at
-j2, ruling out the original-j4concurrency as the cause.Run 30297920467
tested Formula commit
0e2873973b2afb0272a79903eb46b007db37b9a6.It completed the PHP build, bottle creation, full Node.js and Chromium Formula
tests, and source-closure revalidation. It then stopped in the strict bottle
handoff because the publisher incorrectly treated PHP's
curl.sodynamic-linkside module as a process executable and required the process-only
__abi_versionexport.Automattic/kandelo#1119corrects that shared artifact-role classifier withoutweakening executable validation. This branch will receive one exact dry run
against that publisher after #1119 lands and the tap caller pin is rotated.
Rollout notes
This PR does not publish a PHP bottle or change tap
main. PRs #120 and #121first corrected the public SQLite and libxml2 bottle declarations. PR #122 then
landed the sealed tap-recipe support boundary. Current branch head
7876c8ca22f28f0f3aa6a510b6722cab0cf972c5contains those current-maincontracts; the PHP Formula bytes remain the already-tested
0e287397...version.
The three PHP adaptation assets live in commit
220b0690536d4a2c7c1fd3a704aea093aad6e206, and the Formula fetches their exactraw URLs. That commit must remain reachable from
main: merge this branch withhistory preserved, or land the asset commit separately before merging the
Formula commit.
The WordPress/LAMP image handoff has not yet been rerun against a published PHP
bottle; that belongs to the publication and image-cutover step after this
source recipe is reviewed.
Scope
This is a Homebrew packaging and build change. It does not change Kandelo's
kernel or ABI. The PHP Formula exercises the same Node.js and browser host
runtime paths that package consumers use.