diff --git a/CHANGES.md b/CHANGES.md index 70beb16..2c273ef 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,6 +9,7 @@ ### Add +* The `igbinary` extension, so Appwrite can store cache entries as binary payloads through the `Igbinary` codec in `utopia-php/cache` instead of JSON. * Weekly dependency automation (`.github/workflows/dependencies.yml`). A scheduled job resolves the newest upstream release for every pinned Dockerfile source, rewrites the pins, opens a pull request, waits for the exact CI runs for that head, approves and merges it, then tags, builds, and publishes the release. A `recover` step resumes a run that died between merge and publish, so a half-finished release is completed rather than duplicated. * PHP automation domain under `.github/scripts` — `Dependency` (catalog, resolvers, Dockerfile pin rewriting, reporting), `Automation` (release orchestration, version selection, merge and target validation, recovery), `Command`, and `Parity`. Entry points are `bin/dependencies.php`, `bin/orchestrator.php`, and `bin/parity.php`. * Composer tooling for the automation: `lint` (Pint), `check` (PHPStan), `test` (PHPUnit), `parity` (asserts every source class has covering tests), and `verify` to run all four. CI runs `composer verify` before touching any dependency. diff --git a/Dockerfile b/Dockerfile index 5e42bdd..75c716e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -159,6 +159,23 @@ RUN \ cp $(php-config --extension-dir)/brotli.so /artifacts/ && \ strip /artifacts/brotli.so +# igbinary 3.2.17RC1 is the first tag that builds on PHP 8.5, and no final +# 3.2.17 exists yet. The dependency updater only understands x.y.z pins, so the +# commit is inlined here rather than declared as PHP_IGBINARY_VERSION/COMMIT; +# move it into the catalog (.github/scripts/src/Dependency/Catalog.php) once +# igbinary tags a final release. +FROM compile AS igbinary +RUN \ + git init igbinary && \ + cd igbinary && \ + git fetch --depth 1 https://github.com/igbinary/igbinary.git edda7101adf583df047d028a154abf3bf04ced61 && \ + git checkout FETCH_HEAD && \ + phpize && \ + ./configure && \ + make -j"$(nproc)" && make install && \ + cp $(php-config --extension-dir)/igbinary.so /artifacts/ && \ + strip /artifacts/igbinary.so + FROM compile AS lz4 RUN \ git init lz4 && \ @@ -303,6 +320,7 @@ WORKDIR /usr/src/code COPY --from=core-extensions /artifacts/ /tmp/exts/ COPY --from=brotli /artifacts/ /tmp/exts/ +COPY --from=igbinary /artifacts/ /tmp/exts/ COPY --from=imagick /artifacts/ /tmp/exts/ COPY --from=lz4 /artifacts/ /tmp/exts/ COPY --from=maxmind /artifacts/ /tmp/exts/ @@ -320,6 +338,7 @@ RUN cp /tmp/exts/*.so $(php-config --extension-dir)/ && \ docker-php-ext-enable \ brotli \ gd \ + igbinary \ imagick \ intl \ lz4 \ diff --git a/tests.yaml b/tests.yaml index 9b6cce0..e06b8fe 100644 --- a/tests.yaml +++ b/tests.yaml @@ -44,6 +44,7 @@ commandTests: - gd - hash - iconv + - igbinary - imagick - intl - json