Repository navigation
Conversation
This was referenced Oct 19, 2026
Author
|
Closing this one and the PRs stacked on it (#25–#28): @lukas-frey's #34 landed Linux builds of PHP, FrankenPHP, PostgreSQL, MariaDB, Valkey and Redis and the Linux mirrors, which covers what these did, including MySQL's Two things here that #34 does differently, in case they're useful later:
The branches stay on my fork. |
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.
Linux packages for Flock's Linux support (flock-php/flock#12): PHP for
linux-x64andlinux-arm64, built like the macOS one, plus the services that are a matter of mirroring (Node.js, Meilisearch, Typesense, RustFS). Flock names these platforms since flock-php/flock#12 and needs no other change to install them.PHP for Linux
php.linuxinversions.json), for PHP 8.2–8.5. The build runs in static-php-cli's glibc container (bin/spc-gnu-docker: CentOS 7, glibc 2.17, devtoolset-10).ext/(xdebug, imagick, pcov, mongodb, memcached, opentelemetry) is part of the package.SPC_TARGET=native-native-gnu.2.17, so it picks the pre-built libraries the container expects (<lib>-<arch>-linux-glibc-2.17.txz). Only the build runs in the container./app/buildroot/lib) as RPATH.patchelf --remove-rpathdrops it: the path is empty on a user's machine, and whoever could create it would have PHP load their libraries.scripts/verify-linux.sh(likeverify-macos.sh) fails when a binary needs a glibc symbol newer thanmin_glibc(2.17), a library other than glibc's, libgcc_s and libstdc++, or has an RPATH.centos:7container, the oldest glibc we target, without anything the runner has installed. The container runs as the runner's user: as root, PHP-FPM wants a pool user._GNU_SOURCE, which the mongodb extension's-std=c17build doesn't get from 8.1'sphp_config.h(8.2 defines it there), somongodb.sodidn't build.flockrel planemitsphp_linux(both platforms per version).release.ymlrunsbuild-php-linux.ymlfor it.php.linux.minors,php.linux.spcand the xdebug/opentelemetry pins inpackages/php/linux/build.sh.The layout is the macOS one:
bin/php,bin/php-fpm,ext/*.so,LICENSES/,flock-package.json(withmin_glibcinstead ofmin_os).Mirrored services
nodenode-v<V>-linux-{x64,arm64}.tar.gzmeilisearchmeilisearch-linux-{amd64,aarch64}(Community Edition)typesensetypesense-server-<V>-linux-{amd64,arm64}.tar.gzrustfsrustfs-linux-{x86_64,aarch64}-musl-v<V>.zip(static)mirror.ymltests Linux onubuntu-24.04andubuntu-24.04-armwith the existingsmoke-service.sh. The only change there: the code-signature check (SIGNER_MACOS, set for Node.js) only runs on macOS, since Linux binaries carry none. The Node.js archive is still checked against the signed SHASUMS256.txt.Commits
feat(flockrel):linux-x64andlinux-arm64inplatformExt. The plan iterates overplatformsinstead of a hard-coded pair.feat(php):php.linux,packages/php/linux/build.sh,build-php-linux.yml,scripts/verify-linux.sh, and the planner, release and check wiring.feat: the four mirrors for Linux, withversions.jsonandmirror.yml.Not in this PR (follow-ups, each built on this one)
manylinux_2_28(glibc 2.28+).phphere.Testing
All of this ran on my fork with
publishoff (https://github.com/sineld/binaries/actions):build-php-linux.yml: PHP 8.2.34, 8.3.35, 8.4.26 and 8.5.11 onlinux-x64andlinux-arm64all pass the build,verify-linux.sh, the smoke test on the runner and the one on CentOS 7. Every compiled-in extension loads, as do xdebug, imagick, pcov, mongodb, memcached and opentelemetry (hook included).flock php install --frominto Flock built from feat: Linux support for the CLI and daemon flock#12, on Ubuntu 24.04 arm64. It served a site over HTTPS through PHP-FPM with 64 extensions, intl and opcache, and an outgoing HTTPS request from PHP worked.mirror.yml: node 22.12.0, meilisearch 1.55.0, rustfs 1.0.3 and typesense 30.1 pass onlinux-x64. The same scripts mirrored and smoke-tested them forlinux-arm64on my arm64 machine.flockrel:go testpasses on every commit.plandry run against this repository's releases lists PHP 8.2–8.5 for both Linux platforms and the Linux mirrors.checkagainst the live sources lists the Linux pins as current.Questions
ext/could serve it later.