From c41e8ef24c6a2365b270179031f91720ba82de50 Mon Sep 17 00:00:00 2001 From: Daniel Hobi Date: Wed, 4 Mar 2026 18:52:35 +0100 Subject: [PATCH 1/7] heroku-22, heroku-24, php 8.1 - 8.5 with latest (#32) - Drops (unsupported) heroku-20 stack - Adds heroku-24 stack - Adds php 8.4 (20240924) - Adds php 8.5 (20250925) - Refactor build process --- .env.example | 3 - .github/workflows/build.yml | 167 ++++++---------- .github/workflows/mkrepo.yml | 29 +-- .github/workflows/pr.yml | 183 +----------------- .github/workflows/sync.yml | 20 +- .gitignore | 14 ++ CHANGELOG.md | 24 +++ README.md | 43 ++-- composer.lock | 10 +- docker/build/.gitkeep | 0 docker/heroku-20.Dockerfile | 3 - docker/heroku-22.Dockerfile | 3 - extensions/igbinary | 5 + extensions/msgpack | 5 + extensions/no-debug-non-zts-20131226/igbinary | 5 - extensions/no-debug-non-zts-20131226/msgpack | 5 - .../no-debug-non-zts-20180731/igbinary-3.2.15 | 5 - .../no-debug-non-zts-20180731/msgpack-2.2.0 | 5 - .../openswoole-4.12.1 | 5 - .../no-debug-non-zts-20180731/redis-6.0.2 | 5 - .../no-debug-non-zts-20180731/swoole-4.8.13 | 5 - .../no-debug-non-zts-20190902/igbinary-3.2.15 | 5 - .../no-debug-non-zts-20190902/msgpack-2.2.0 | 5 - .../openswoole-4.12.1 | 5 - .../no-debug-non-zts-20190902/redis-6.0.2 | 5 - .../no-debug-non-zts-20190902/relay-0.6.8 | 5 - .../no-debug-non-zts-20190902/swoole-4.8.13 | 5 - .../no-debug-non-zts-20200930/igbinary-3.2.15 | 5 - .../no-debug-non-zts-20200930/msgpack-2.2.0 | 5 - .../openswoole-4.12.1 | 5 - .../no-debug-non-zts-20200930/redis-6.0.2 | 5 - .../no-debug-non-zts-20200930/relay-0.6.8 | 5 - .../no-debug-non-zts-20200930/swoole-4.8.13 | 5 - .../no-debug-non-zts-20210902/igbinary-3.2.15 | 5 - .../no-debug-non-zts-20210902/msgpack-2.2.0 | 5 - .../openswoole-4.12.1 | 5 - .../no-debug-non-zts-20210902/redis-6.0.2 | 5 - .../no-debug-non-zts-20210902/relay-0.6.8 | 5 - .../no-debug-non-zts-20210902/swoole-4.8.13 | 5 - .../no-debug-non-zts-20220829/igbinary-3.2.15 | 5 - .../no-debug-non-zts-20220829/msgpack-2.2.0 | 5 - .../openswoole-4.12.1 | 5 - .../no-debug-non-zts-20220829/redis-6.0.2 | 5 - .../no-debug-non-zts-20220829/relay-0.6.8 | 5 - .../no-debug-non-zts-20220829/swoole-4.8.13 | 5 - .../no-debug-non-zts-20230831/igbinary-3.2.15 | 5 - .../no-debug-non-zts-20230831/msgpack-2.2.0 | 5 - .../openswoole-22.1.0 | 5 - .../no-debug-non-zts-20230831/redis-6.0.2 | 5 - .../no-debug-non-zts-20230831/relay-0.6.8 | 5 - .../no-debug-non-zts-20230831/swoole-5.1.1 | 5 - .../openswoole | 2 +- .../{no-debug-non-zts-20131226 => }/redis | 2 +- .../{no-debug-non-zts-20131226 => }/relay | 4 +- .../{no-debug-non-zts-20131226 => }/swoole | 2 +- libraries/liblzf-3.6 | 4 - libraries/lz4-1.9.3 | 4 - libraries/zstd | 2 +- libraries/zstd-1.4.9 | 4 - scripts/build-dockerfile.sh | 7 + scripts/build-extension.sh | 53 +++++ scripts/build-lib.sh | 43 ++++ scripts/create-dockerfile.sh | 12 ++ scripts/setup-local.sh | 12 ++ 64 files changed, 307 insertions(+), 538 deletions(-) delete mode 100644 docker/build/.gitkeep delete mode 100644 docker/heroku-20.Dockerfile delete mode 100644 docker/heroku-22.Dockerfile create mode 100644 extensions/igbinary create mode 100644 extensions/msgpack delete mode 100755 extensions/no-debug-non-zts-20131226/igbinary delete mode 100755 extensions/no-debug-non-zts-20131226/msgpack delete mode 100755 extensions/no-debug-non-zts-20180731/igbinary-3.2.15 delete mode 100755 extensions/no-debug-non-zts-20180731/msgpack-2.2.0 delete mode 100755 extensions/no-debug-non-zts-20180731/openswoole-4.12.1 delete mode 100755 extensions/no-debug-non-zts-20180731/redis-6.0.2 delete mode 100755 extensions/no-debug-non-zts-20180731/swoole-4.8.13 delete mode 100755 extensions/no-debug-non-zts-20190902/igbinary-3.2.15 delete mode 100755 extensions/no-debug-non-zts-20190902/msgpack-2.2.0 delete mode 100755 extensions/no-debug-non-zts-20190902/openswoole-4.12.1 delete mode 100755 extensions/no-debug-non-zts-20190902/redis-6.0.2 delete mode 100755 extensions/no-debug-non-zts-20190902/relay-0.6.8 delete mode 100755 extensions/no-debug-non-zts-20190902/swoole-4.8.13 delete mode 100755 extensions/no-debug-non-zts-20200930/igbinary-3.2.15 delete mode 100755 extensions/no-debug-non-zts-20200930/msgpack-2.2.0 delete mode 100755 extensions/no-debug-non-zts-20200930/openswoole-4.12.1 delete mode 100755 extensions/no-debug-non-zts-20200930/redis-6.0.2 delete mode 100755 extensions/no-debug-non-zts-20200930/relay-0.6.8 delete mode 100755 extensions/no-debug-non-zts-20200930/swoole-4.8.13 delete mode 100755 extensions/no-debug-non-zts-20210902/igbinary-3.2.15 delete mode 100755 extensions/no-debug-non-zts-20210902/msgpack-2.2.0 delete mode 100755 extensions/no-debug-non-zts-20210902/openswoole-4.12.1 delete mode 100755 extensions/no-debug-non-zts-20210902/redis-6.0.2 delete mode 100755 extensions/no-debug-non-zts-20210902/relay-0.6.8 delete mode 100755 extensions/no-debug-non-zts-20210902/swoole-4.8.13 delete mode 100755 extensions/no-debug-non-zts-20220829/igbinary-3.2.15 delete mode 100755 extensions/no-debug-non-zts-20220829/msgpack-2.2.0 delete mode 100755 extensions/no-debug-non-zts-20220829/openswoole-4.12.1 delete mode 100755 extensions/no-debug-non-zts-20220829/redis-6.0.2 delete mode 100755 extensions/no-debug-non-zts-20220829/relay-0.6.8 delete mode 100755 extensions/no-debug-non-zts-20220829/swoole-4.8.13 delete mode 100755 extensions/no-debug-non-zts-20230831/igbinary-3.2.15 delete mode 100755 extensions/no-debug-non-zts-20230831/msgpack-2.2.0 delete mode 100755 extensions/no-debug-non-zts-20230831/openswoole-22.1.0 delete mode 100755 extensions/no-debug-non-zts-20230831/redis-6.0.2 delete mode 100755 extensions/no-debug-non-zts-20230831/relay-0.6.8 delete mode 100755 extensions/no-debug-non-zts-20230831/swoole-5.1.1 rename extensions/{no-debug-non-zts-20131226 => }/openswoole (66%) mode change 100755 => 100644 rename extensions/{no-debug-non-zts-20131226 => }/redis (85%) mode change 100755 => 100644 rename extensions/{no-debug-non-zts-20131226 => }/relay (79%) mode change 100755 => 100644 rename extensions/{no-debug-non-zts-20131226 => }/swoole (64%) mode change 100755 => 100644 delete mode 100644 libraries/liblzf-3.6 delete mode 100644 libraries/lz4-1.9.3 delete mode 100644 libraries/zstd-1.4.9 create mode 100755 scripts/build-dockerfile.sh create mode 100755 scripts/build-extension.sh create mode 100755 scripts/build-lib.sh create mode 100755 scripts/create-dockerfile.sh create mode 100755 scripts/setup-local.sh diff --git a/.env.example b/.env.example index 130f8b5..45f016c 100644 --- a/.env.example +++ b/.env.example @@ -2,8 +2,5 @@ S3_BUCKET= S3_PREFIX= S3_REGION=s3 -UPSTREAM_S3_BUCKET=lang-php -UPSTREAM_S3_PREFIX=dist-heroku-22-stable/ - AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7b27c8d..fa83fb5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,37 +1,52 @@ - name: Build extensions on: push: - branches: - - main + branches: [main, feature/*] + workflow_call: + inputs: + S3_PREFIX: + type: string + default: "" jobs: - build: - name: Build and deploy - runs-on: ubuntu-latest + name: Build and deploy ${{ matrix.stack.name }} extensions with PHP ${{ matrix.series.php }} on ${{ matrix.stack.os }} + runs-on: ${{ matrix.stack.os }} timeout-minutes: 20 - env: - S3_BUCKET: heroku-php-extensions + S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }} + S3_REGION: ${{ secrets.S3_REGION || '' }} + S3_PREFIX: ${{ inputs.S3_PREFIX || '' }} BUILDPACK: ./vendor/heroku/heroku-buildpack-php AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} strategy: + fail-fast: true matrix: stack: - - heroku-20 - - heroku-22 + - { name: "heroku-22", prefix: "dist-heroku-22-stable/", prefixdevelop: "dist-heroku-22-develop/", os: "ubuntu-latest" } + - { name: "heroku-24", prefix: "dist-heroku-24-amd64-stable/", prefixdevelop: "dist-heroku-24-amd64-develop/", os: "ubuntu-latest" } + - { name: "heroku-24", prefix: "dist-heroku-24-arm64-stable/", prefixdevelop: "dist-heroku-24-arm64-develop/", os: "ubuntu-24.04-arm" } series: - - 20210902 # PHP 8.1 - - 20220829 # PHP 8.2 - - 20230831 # PHP 8.3 + - { version: 20210902, php: "8.1", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: "5.3.7 6.3.0", relay: "0.6.8", swoole: "4.8.13 5.1.8 6.1.7", openswoole: "4.12.1 22.1.2" } + - { version: 20220829, php: "8.2", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: "5.3.7 6.3.0", relay: "0.6.8", swoole: "4.8.13 5.1.8 6.1.7", openswoole: "22.1.2 25.2.0 26.2.0" } + - { version: 20230831, php: "8.3", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: "5.3.7 6.3.0", relay: "0.6.8 0.20.0", swoole: "5.1.8 6.1.7", openswoole: "22.1.2 25.2.0 26.2.0" } + - { version: 20240924, php: "8.4", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: "6.3.0", relay: "0.20.0", swoole: "6.1.7", openswoole: "25.2.0 26.2.0" } + - { version: 20250925, php: "8.5", liblzf: "3.6", lz4: "1.10.0", zstd: "1.5.7", igbinary: "3.2.17RC1", msgpack: "2.2.0", redis: "6.3.0", relay: "0.20.0", swoole: "6.2.0RC1", openswoole: "26.2.0" } + exclude: + # heroku-24 no longer supports php-8.1 + - { stack: { name: "heroku-24" }, series: { version: 20210902 } } + include: + # heroku-24 cannot compile openswoole 4.12.1 anymore, include for heroku-22 only + - { + stack: { name: "heroku-22", prefix: "dist-heroku-22-stable/", prefixdevelop: "dist-heroku-22-develop/", os: "ubuntu-latest" }, + series: { version: 20220829, php: "8.2", openswoole: "4.12.1" } + } steps: - - name: Checkout - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Composer Install run: composer install --prefer-dist --no-progress --no-suggest --ignore-platform-reqs @@ -40,114 +55,50 @@ jobs: run: cp ${BUILDPACK}/requirements.txt . - name: Build Dockerfile - run: | - cat ${BUILDPACK}/support/build/_docker/${{ matrix.stack }}.Dockerfile > docker/build/${{ matrix.stack }}.Dockerfile - cat docker/${{ matrix.stack }}.Dockerfile >> docker/build/${{ matrix.stack }}.Dockerfile + run: ./scripts/create-dockerfile.sh ${{ matrix.stack.name }} - name: Docker build - run: docker build --pull --tag ${{ matrix.stack }} --file docker/build/${{ matrix.stack }}.Dockerfile . + run: ./scripts/build-dockerfile.sh ${{ matrix.stack.name }} - name: Build liblzf library - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite libraries/liblzf-3.6 + run: ./scripts/build-lib.sh ${{ matrix.stack.name }} liblzf "${{ matrix.series.liblzf }}" true - name: Build lz4 library - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite libraries/lz4-1.9.3 + run: ./scripts/build-lib.sh ${{ matrix.stack.name }} lz4 "${{ matrix.series.lz4 }}" true - name: Build zstd library - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite libraries/zstd-1.4.9 + run: ./scripts/build-lib.sh ${{ matrix.stack.name }} zstd "${{ matrix.series.zstd }}" true - name: Build igbinary extension - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite \ - extensions/no-debug-non-zts-${{ matrix.series }}/igbinary-3.2.15 + run: ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} igbinary "${{ matrix.series.igbinary }}" "php-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true - name: Build msgpack extension - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite \ - extensions/no-debug-non-zts-${{ matrix.series }}/msgpack-2.2.0 - - - name: Build redis extension - shell: 'script -q -e -c "bash {0}"' + run: ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} msgpack "${{ matrix.series.msgpack }}" "php-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true + + - name: Build redis extensions run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite \ - extensions/no-debug-non-zts-${{ matrix.series }}/redis-6.0.2 + set -e + for VERSION in ${{ matrix.series.redis }}; do + ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} redis "$VERSION" "php-${{ matrix.series.php }}.*,libraries/liblzf-*,libraries/lz4-*,libraries/zstd-*,extensions/no-debug-non-zts-${{ matrix.series.version }}/igbinary-*,extensions/no-debug-non-zts-${{ matrix.series.version }}/msgpack-*" ${{ matrix.stack.prefix }} true + done - name: Build relay extension - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite \ - extensions/no-debug-non-zts-${{ matrix.series }}/relay-0.6.8 - - - name: Build swoole 4.x extension - if: matrix.series <= 20220829 - shell: 'script -q -e -c "bash {0}"' run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite \ - extensions/no-debug-non-zts-${{ matrix.series }}/swoole-4.8.13 - - - name: Build swoole 5.x extension - if: matrix.series >= 20230831 - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite \ - extensions/no-debug-non-zts-${{ matrix.series }}/swoole-5.1.1 - - - name: Build openswoole 4.x extension - if: matrix.series <= 20220829 - shell: 'script -q -e -c "bash {0}"' + set -e + for VERSION in ${{ matrix.series.relay }}; do + ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} relay "$VERSION" "php-${{ matrix.series.php }}.*,libraries/liblzf-*,libraries/lz4-*,libraries/zstd-*,extensions/no-debug-non-zts-${{ matrix.series.version }}/igbinary-*,extensions/no-debug-non-zts-${{ matrix.series.version }}/msgpack-*" ${{ matrix.stack.prefix }} true + done + + - name: Build swoole extension run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite \ - extensions/no-debug-non-zts-${{ matrix.series }}/openswoole-4.12.1 - - - name: Build openswoole 22.x extension - if: matrix.series >= 20230831 - shell: 'script -q -e -c "bash {0}"' + set -e + for VERSION in ${{ matrix.series.swoole }}; do + ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} swoole "$VERSION" "php-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true + done + + - name: Build openswoole extension run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite \ - extensions/no-debug-non-zts-${{ matrix.series }}/openswoole-22.1.0 + set -e + for VERSION in ${{ matrix.series.openswoole }}; do + ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} openswoole "$VERSION" "php-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true + done \ No newline at end of file diff --git a/.github/workflows/mkrepo.yml b/.github/workflows/mkrepo.yml index e379855..17735c2 100644 --- a/.github/workflows/mkrepo.yml +++ b/.github/workflows/mkrepo.yml @@ -9,6 +9,11 @@ on: - main types: - completed + workflow_call: + inputs: + S3_PREFIX: + type: string + default: "" jobs: @@ -22,16 +27,19 @@ jobs: strategy: matrix: stack: - - heroku-20 - - heroku-22 + - { name: "heroku-22", prefix: "dist-heroku-22-stable/", prefixdevelop: "dist-heroku-22-develop/", os: "ubuntu-latest" } + - { name: "heroku-24", prefix: "dist-heroku-24-amd64-stable/", prefixdevelop: "dist-heroku-24-amd64-develop/", os: "ubuntu-latest" } + - { name: "heroku-24", prefix: "dist-heroku-24-arm64-stable/", prefixdevelop: "dist-heroku-24-arm64-develop/", os: "ubuntu-24.04-arm" } env: - S3_BUCKET: heroku-php-extensions + S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }} + S3_REGION: ${{ secrets.S3_REGION || '' }} + S3_PREFIX: ${{ inputs.S3_PREFIX || '' }} BUILDPACK: ./vendor/heroku/heroku-buildpack-php steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Composer Install run: composer install --prefer-dist --no-progress --no-suggest --ignore-platform-reqs @@ -40,19 +48,16 @@ jobs: run: cp ${BUILDPACK}/requirements.txt . - name: Build Dockerfile - run: | - cat ${BUILDPACK}/support/build/_docker/${{ matrix.stack }}.Dockerfile > docker/build/${{ matrix.stack }}.Dockerfile - cat docker/${{ matrix.stack }}.Dockerfile >> docker/build/${{ matrix.stack }}.Dockerfile - + run: ./scripts/create-dockerfile.sh ${{ matrix.stack.name }} + - name: Docker build - run: docker build --pull --tag ${{ matrix.stack }} --file docker/build/${{ matrix.stack }}.Dockerfile . + run: ./scripts/build-dockerfile.sh ${{ matrix.stack.name }} - name: Make and upload repository - shell: 'script -q -e -c "bash {0}"' env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} run: | - docker run --rm -ti \ + docker run --rm \ --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} mkrepo.sh --upload + ${{ matrix.stack.name }} mkrepo.sh --upload diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e384593..2618167 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -3,178 +3,13 @@ name: Test PR builds on: pull_request -env: - S3_BUCKET: heroku-php-extensions - S3_PREFIX: pull-requests/${{ github.event.number }}/ - BUILDPACK: ./vendor/heroku/heroku-buildpack-php - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - jobs: - - build: - name: Test building - runs-on: ubuntu-latest - timeout-minutes: 20 - - strategy: - matrix: - stack: - - heroku-20 - - heroku-22 - series: - - 20210902 # PHP 8.1 - - 20220829 # PHP 8.2 - - 20230831 # PHP 8.3 - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Composer Install - run: composer install --prefer-dist --no-progress --no-suggest --ignore-platform-reqs - - - name: Copy requirements - run: cp ${BUILDPACK}/requirements.txt . - - - name: Build Dockerfile - run: | - cat ${BUILDPACK}/support/build/_docker/${{ matrix.stack }}.Dockerfile > docker/build/${{ matrix.stack }}.Dockerfile - cat docker/${{ matrix.stack }}.Dockerfile >> docker/build/${{ matrix.stack }}.Dockerfile - - - name: Docker build - run: docker build --pull --tag ${{ matrix.stack }} --file docker/build/${{ matrix.stack }}.Dockerfile . - - - name: Build liblzf library - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite libraries/liblzf-3.6 - - - name: Build lz4 library - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite libraries/lz4-1.9.3 - - - name: Build zstd library - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite libraries/zstd-1.4.9 - - - name: Build igbinary extension - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite extensions/no-debug-non-zts-${{ matrix.series }}/igbinary-3.2.15 - - - name: Build msgpack extension - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite extensions/no-debug-non-zts-${{ matrix.series }}/msgpack-2.2.0 - - - name: Build redis extension - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite extensions/no-debug-non-zts-${{ matrix.series }}/redis-6.0.2 - - - name: Build relay extension - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite extensions/no-debug-non-zts-${{ matrix.series }}/relay-0.6.8 - - - name: Build swoole 4.x extension - if: matrix.series <= 20220829 - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite extensions/no-debug-non-zts-${{ matrix.series }}/swoole-4.8.13 - - - name: Build swoole 5.x extension - if: matrix.series >= 20230831 - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite extensions/no-debug-non-zts-${{ matrix.series }}/swoole-5.1.1 - - - name: Build openswoole 4.x extension - if: matrix.series <= 20220829 - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite extensions/no-debug-non-zts-${{ matrix.series }}/openswoole-4.12.1 - - - name: Build openswoole 22.x extension - if: matrix.series >= 20230831 - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env UPSTREAM_S3_BUCKET=lang-php \ - --env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} deploy.sh --overwrite extensions/no-debug-non-zts-${{ matrix.series }}/openswoole-22.1.0 - - mkrepo: - name: Make repository - runs-on: ubuntu-latest - timeout-minutes: 20 - needs: build - - strategy: - matrix: - stack: - - heroku-20 - - heroku-22 - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Composer Install - run: composer install --prefer-dist --no-progress --no-suggest --ignore-platform-reqs - - - name: Copy requirements - run: cp ${BUILDPACK}/requirements.txt . - - - name: Build Dockerfile - run: | - cat ${BUILDPACK}/support/build/_docker/${{ matrix.stack }}.Dockerfile > docker/build/${{ matrix.stack }}.Dockerfile - cat docker/${{ matrix.stack }}.Dockerfile >> docker/build/${{ matrix.stack }}.Dockerfile - - - name: Docker build - run: docker build --pull --tag ${{ matrix.stack }} --file docker/build/${{ matrix.stack }}.Dockerfile . - - - name: Make and upload repository - shell: 'script -q -e -c "bash {0}"' - run: | - docker run --rm -ti \ - --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} mkrepo.sh --upload + call-build: + uses: ./.github/workflows/build.yml + with: + S3_PREFIX: pull-requests/${{ github.event.number }}/ + + call-mkrepo: + uses: ./.github/workflows/mkrepo.yml + with: + S3_PREFIX: pull-requests/${{ github.event.number }}/ diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index d7d69d2..38df7b2 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -16,16 +16,18 @@ jobs: strategy: matrix: stack: - - heroku-20 - - heroku-22 + - { name: "heroku-22", prefix: "dist-heroku-22-stable/", prefixdevelop: "dist-heroku-22-develop/", os: "ubuntu-latest" } + - { name: "heroku-24", prefix: "dist-heroku-24-amd64-stable/", prefixdevelop: "dist-heroku-24-amd64-develop/", os: "ubuntu-latest" } + - { name: "heroku-24", prefix: "dist-heroku-24-arm64-stable/", prefixdevelop: "dist-heroku-24-arm64-develop/", os: "ubuntu-24.04-arm" } env: - S3_BUCKET: heroku-php-extensions + S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }} + S3_REGION: ${{ secrets.S3_REGION || '' }} BUILDPACK: ./vendor/heroku/heroku-buildpack-php steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Composer Install run: composer install --prefer-dist --no-progress --no-suggest --ignore-platform-reqs @@ -34,12 +36,10 @@ jobs: run: cp ${BUILDPACK}/requirements.txt . - name: Build Dockerfile - run: | - cat ${BUILDPACK}/support/build/_docker/${{ matrix.stack }}.Dockerfile > docker/build/${{ matrix.stack }}.Dockerfile - cat docker/${{ matrix.stack }}.Dockerfile >> docker/build/${{ matrix.stack }}.Dockerfile - + run: ./scripts/create-dockerfile.sh ${{ matrix.stack.name }} + - name: Docker build - run: docker build --pull --tag ${{ matrix.stack }} --file docker/build/${{ matrix.stack }}.Dockerfile . + run: ./scripts/build-dockerfile.sh ${{ matrix.stack.name }} - name: Synchronize stable repository shell: 'script -q -e -c "bash {0}"' @@ -49,4 +49,4 @@ jobs: run: | echo "yes" | docker run --rm -i \ --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack }} sync.sh $S3_BUCKET dist-${{ matrix.stack }}-stable/ $S3_BUCKET dist-${{ matrix.stack }}-develop/ + ${{ matrix.stack.name }} sync.sh $S3_BUCKET ${{ matrix.stack.prefix }} $S3_BUCKET ${{ matrix.stack.prefixdevelop }} diff --git a/.gitignore b/.gitignore index d1c610a..3746bac 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,17 @@ /vendor .env requirements.txt + +libraries/* +!libraries/liblzf +!libraries/lz4 +!libraries/zstd + +extensions/* +!extensions/igbinary +!extensions/msgpack +!extensions/openswoole +!extensions/redis +!extensions/relay +!extensions/swoole + diff --git a/CHANGELOG.md b/CHANGELOG.md index cf13ce8..d21945d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.0.0] - 2026-03-04 + +Replaced file based declaration approach with shell scripts (generate instead of declaration) + +### heroku-22 stack + +| PHP | igbinary | msgpack | redis | relay | swoole | openswoole | +| ----- | ----------- | ------- | --------------- | ---------------- | ------------------------ | ----------------------------------- | +| `8.1` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` | `4.8.13` `5.1.8` `6.1.7` | `4.12.1` `22.1.2` | +| `8.2` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` | `4.8.13` `5.1.8` `6.1.7` | `4.12.1` `22.1.2` `25.2.0` `26.2.0` | +| `8.3` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` `0.20.0` | `5.1.8` `6.1.7` | `22.1.2` `25.2.0` `26.2.0` | +| `8.4` | `3.2.15` | `2.2.0` | `6.3.0` | `0.20.0` | `6.1.7` | `25.2.0` `26.2.0` | +| `8.5` | `3.2.17RC1` | `2.2.0` | `6.3.0` | `0.20.0` | `6.2.0RC1` | `26.2.0` | + +### heroku-24 stack + +| PHP | igbinary | msgpack | redis | relay | swoole | openswoole | +| ----- | ----------- | ------- | --------------- | ---------------- | ------------------------ | -------------------------- | +| `8.2` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` | `4.8.13` `5.1.8` `6.1.7` | `22.1.2` `25.2.0` `26.2.0` | +| `8.3` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` `0.20.0` | `5.1.8` `6.1.7` | `22.1.2` `25.2.0` `26.2.0` | +| `8.4` | `3.2.15` | `2.2.0` | `6.3.0` | `0.20.0` | `6.1.7` | `25.2.0` `26.2.0` | +| `8.5` | `3.2.17RC1` | `2.2.0` | `6.3.0` | `0.20.0` | `6.2.0RC1` | `26.2.0` | + + ## [2.0.1] - 2023-12-15 - Fixed Relay build for heroku-22 diff --git a/README.md b/README.md index 62c6676..a49bd65 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Pre-built PHP extensions for Heroku that are not included or fully supported by - [MessagePack](https://pecl.php.net/package/msgpack) - [igbinary](https://pecl.php.net/package/igbinary) -The supported PHP versions are `8.1` to `8.3` on the `heroku-20` and `heroku-22` stacks. +The supported PHP versions are `8.1` to `8.5` on the `heroku-22` and `heroku-24` stacks. Checkout the [demo app](https://php-extensions.herokuapp.com), or [browse the S3 bucket](https://s3.us-east-1.amazonaws.com/heroku-php-extensions/index.html). @@ -24,11 +24,16 @@ heroku config:set HEROKU_PHP_PLATFORM_REPOSITORIES="https://relay.so/heroku/" If you prefer using the AWS S3 repositories, add the corresponding repository to your Heroku app: ```bash -# heroku-20 +# heroku-20 (archive only, not supported anymore) heroku config:set HEROKU_PHP_PLATFORM_REPOSITORIES="https://heroku-php-extensions.s3.amazonaws.com/dist-heroku-20-stable/" # heroku-22 heroku config:set HEROKU_PHP_PLATFORM_REPOSITORIES="https://heroku-php-extensions.s3.amazonaws.com/dist-heroku-22-stable/" + +# heroku-24 (amd64) +heroku config:set HEROKU_PHP_PLATFORM_REPOSITORIES="https://heroku-php-extensions.s3.amazonaws.com/dist-heroku-24-amd64-stable/" +# heroku-24 (arm64) +heroku config:set HEROKU_PHP_PLATFORM_REPOSITORIES="https://heroku-php-extensions.s3.amazonaws.com/dist-heroku-24-arm64-stable/" ``` Next, add any of the extensions to `composer.json` as you usually would: @@ -57,6 +62,8 @@ Before continuing, read and understand the [official build instructions](https:/ ### Set up ```bash +# ./scripts/setup-local.sh + # Install Composer dependencies composer install @@ -71,39 +78,41 @@ Be sure to set all variables in your newly created `.env` file. ### Dockerfile -Create a custom Dockerfile for `heroku-22`. +Create a custom Dockerfile for `heroku-24`. ``` -cat vendor/heroku/heroku-buildpack-php/support/build/_docker/heroku-22.Dockerfile > docker/build/heroku-22.Dockerfile -cat docker/heroku-22.Dockerfile >> docker/build/heroku-22.Dockerfile +./scripts/create-dockerfile.sh heroku-24 ``` ### Build ```bash # Docker build -docker build --pull --tag heroku-22 --file docker/build/heroku-22.Dockerfile . +./scripts/build-dockerfile.sh heroku-24 # Build libraries -docker run --rm -ti --env-file=.env heroku-22 bob build --overwrite libraries/liblzf-3.6 -docker run --rm -ti --env-file=.env heroku-22 bob build --overwrite libraries/lz4-1.9.3 -docker run --rm -ti --env-file=.env heroku-22 bob build --overwrite libraries/zstd-1.4.9 +./scripts/build-lib.sh heroku-24 liblzf 3.6 +./scripts/build-lib.sh heroku-24 lz4 1.9.3 +./scripts/build-lib.sh heroku-24 zstd 1.4.9 # Build igbinary -docker run --rm -ti --env-file=.env heroku-22 bob build extensions/no-debug-non-zts-20230831/igbinary-3.2.15 +./scripts/build-extension.sh heroku-24 8.4 20240924 igbinary 3.2.16 "php-8.4.*" "dist-heroku-24-amd64-stable/" # Build msgpack -docker run --rm -ti --env-file=.env heroku-22 bob build extensions/no-debug-non-zts-20230831/msgpack-2.2.0 +./scripts/build-extension.sh heroku-24 8.4 20240924 msgpack 2.2.0 "php-8.4.*" "dist-heroku-24-amd64-stable/" -# Build phpredis -docker run --rm -ti --env-file=.env heroku-22 bob build extensions/no-debug-non-zts-20230831/redis-6.0.2 +# Build phpredis (has extra dependencies, libraries need to be "deployed" already) +./scripts/build-extension.sh heroku-24 8.4 20240924 redis 6.3.0 "php-8.4.*,libraries/liblzf-*,libraries/lz4-*,libraries/zstd-*,extensions/no-debug-non-zts-20240924/igbinary-*,extensions/no-debug-non-zts-20240924/msgpack-*" "dist-heroku-24-amd64-stable/" -# Build relay -docker run --rm -ti --env-file=.env heroku-22 bob build extensions/no-debug-non-zts-20230831/relay-0.6.8 +# Build relay (has extra dependencies, libraries need to be "deployed" already) +./scripts/build-extension.sh heroku-24 8.4 20240924 relay 0.20.0 "php-8.4.*,libraries/liblzf-*,libraries/lz4-*,libraries/zstd-*,extensions/no-debug-non-zts-20240924/igbinary-*,extensions/no-debug-non-zts-20240924/msgpack-*" "dist-heroku-24-amd64-stable/" # Build swoole -docker run --rm -ti --env-file=.env heroku-22 bob build extensions/no-debug-non-zts-20230831/swoole-4.8.13 +./scripts/build-extension.sh heroku-24 8.4 20240924 swoole 6.1.7 "php-8.4.*" "dist-heroku-24-amd64-stable/" # Build openswoole -docker run --rm -ti --env-file=.env heroku-22 bob build extensions/no-debug-non-zts-20230831/openswoole-4.12.1 +./scripts/build-extension.sh heroku-24 8.4 20240924 openswoole 25.2.0 "php-8.4.*" "dist-heroku-24-amd64-stable/" ``` +### Adding new versions + +New versions can be added to [build.yml](./.github/workflows/build.yml) and will automatically be built and deployed by github actions \ No newline at end of file diff --git a/composer.lock b/composer.lock index af2f35d..e42d584 100644 --- a/composer.lock +++ b/composer.lock @@ -13,12 +13,12 @@ "source": { "type": "git", "url": "https://github.com/heroku/heroku-buildpack-php.git", - "reference": "5c628e7e989e9d96d742bea67f3245bebe5fc7be" + "reference": "74456d03da581b9a0568157afdd9543688262bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/heroku/heroku-buildpack-php/zipball/5c628e7e989e9d96d742bea67f3245bebe5fc7be", - "reference": "5c628e7e989e9d96d742bea67f3245bebe5fc7be", + "url": "https://api.github.com/repos/heroku/heroku-buildpack-php/zipball/74456d03da581b9a0568157afdd9543688262bf8", + "reference": "74456d03da581b9a0568157afdd9543688262bf8", "shasum": "" }, "default-branch": true, @@ -49,9 +49,9 @@ ], "support": { "issues": "https://github.com/heroku/heroku-buildpack-php/issues", - "source": "https://github.com/heroku/heroku-buildpack-php/tree/v231" + "source": "https://github.com/heroku/heroku-buildpack-php/tree/main" }, - "time": "2023-02-14T21:03:27+00:00" + "time": "2026-02-18T15:58:28+00:00" } ], "aliases": [], diff --git a/docker/build/.gitkeep b/docker/build/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/docker/heroku-20.Dockerfile b/docker/heroku-20.Dockerfile deleted file mode 100644 index 9397e26..0000000 --- a/docker/heroku-20.Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ - -ENV WORKSPACE_DIR=/app -ENV PATH=/app/vendor/heroku/heroku-buildpack-php/support/build/_util:$PATH diff --git a/docker/heroku-22.Dockerfile b/docker/heroku-22.Dockerfile deleted file mode 100644 index 9397e26..0000000 --- a/docker/heroku-22.Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ - -ENV WORKSPACE_DIR=/app -ENV PATH=/app/vendor/heroku/heroku-buildpack-php/support/build/_util:$PATH diff --git a/extensions/igbinary b/extensions/igbinary new file mode 100644 index 0000000..31808d2 --- /dev/null +++ b/extensions/igbinary @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +dep_name=$(basename $BASH_SOURCE) + +source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl \ No newline at end of file diff --git a/extensions/msgpack b/extensions/msgpack new file mode 100644 index 0000000..31808d2 --- /dev/null +++ b/extensions/msgpack @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +dep_name=$(basename $BASH_SOURCE) + +source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl \ No newline at end of file diff --git a/extensions/no-debug-non-zts-20131226/igbinary b/extensions/no-debug-non-zts-20131226/igbinary deleted file mode 100755 index 5ce6131..0000000 --- a/extensions/no-debug-non-zts-20131226/igbinary +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -dep_name=$(basename $BASH_SOURCE) - -source $(dirname $BASH_SOURCE)/../../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl \ No newline at end of file diff --git a/extensions/no-debug-non-zts-20131226/msgpack b/extensions/no-debug-non-zts-20131226/msgpack deleted file mode 100755 index 5ce6131..0000000 --- a/extensions/no-debug-non-zts-20131226/msgpack +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -dep_name=$(basename $BASH_SOURCE) - -source $(dirname $BASH_SOURCE)/../../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl \ No newline at end of file diff --git a/extensions/no-debug-non-zts-20180731/igbinary-3.2.15 b/extensions/no-debug-non-zts-20180731/igbinary-3.2.15 deleted file mode 100755 index 1f95290..0000000 --- a/extensions/no-debug-non-zts-20180731/igbinary-3.2.15 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-7.3.* - -source $(dirname $0)/../no-debug-non-zts-20131226/igbinary \ No newline at end of file diff --git a/extensions/no-debug-non-zts-20180731/msgpack-2.2.0 b/extensions/no-debug-non-zts-20180731/msgpack-2.2.0 deleted file mode 100755 index 874ecf2..0000000 --- a/extensions/no-debug-non-zts-20180731/msgpack-2.2.0 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-7.3.* - -source $(dirname $0)/../no-debug-non-zts-20131226/msgpack diff --git a/extensions/no-debug-non-zts-20180731/openswoole-4.12.1 b/extensions/no-debug-non-zts-20180731/openswoole-4.12.1 deleted file mode 100755 index 5195428..0000000 --- a/extensions/no-debug-non-zts-20180731/openswoole-4.12.1 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-7.3.* - -source $(dirname $0)/../no-debug-non-zts-20131226/openswoole diff --git a/extensions/no-debug-non-zts-20180731/redis-6.0.2 b/extensions/no-debug-non-zts-20180731/redis-6.0.2 deleted file mode 100755 index af4acd4..0000000 --- a/extensions/no-debug-non-zts-20180731/redis-6.0.2 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-7.3.*, libraries/liblzf-*, libraries/lz4-*, libraries/zstd-*, extensions/no-debug-non-zts-20180731/igbinary-*, extensions/no-debug-non-zts-20180731/msgpack-* - -source $(dirname $0)/../no-debug-non-zts-20131226/redis diff --git a/extensions/no-debug-non-zts-20180731/swoole-4.8.13 b/extensions/no-debug-non-zts-20180731/swoole-4.8.13 deleted file mode 100755 index 5f85b1b..0000000 --- a/extensions/no-debug-non-zts-20180731/swoole-4.8.13 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-7.3.* - -source $(dirname $0)/../no-debug-non-zts-20131226/swoole diff --git a/extensions/no-debug-non-zts-20190902/igbinary-3.2.15 b/extensions/no-debug-non-zts-20190902/igbinary-3.2.15 deleted file mode 100755 index 35140f8..0000000 --- a/extensions/no-debug-non-zts-20190902/igbinary-3.2.15 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-7.4.* - -source $(dirname $0)/../no-debug-non-zts-20131226/igbinary \ No newline at end of file diff --git a/extensions/no-debug-non-zts-20190902/msgpack-2.2.0 b/extensions/no-debug-non-zts-20190902/msgpack-2.2.0 deleted file mode 100755 index 028e918..0000000 --- a/extensions/no-debug-non-zts-20190902/msgpack-2.2.0 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-7.4.* - -source $(dirname $0)/../no-debug-non-zts-20131226/msgpack diff --git a/extensions/no-debug-non-zts-20190902/openswoole-4.12.1 b/extensions/no-debug-non-zts-20190902/openswoole-4.12.1 deleted file mode 100755 index bf4cdea..0000000 --- a/extensions/no-debug-non-zts-20190902/openswoole-4.12.1 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-7.4.* - -source $(dirname $0)/../no-debug-non-zts-20131226/openswoole diff --git a/extensions/no-debug-non-zts-20190902/redis-6.0.2 b/extensions/no-debug-non-zts-20190902/redis-6.0.2 deleted file mode 100755 index 1d58ed4..0000000 --- a/extensions/no-debug-non-zts-20190902/redis-6.0.2 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-7.4.*, libraries/liblzf-*, libraries/lz4-*, libraries/zstd-*, extensions/no-debug-non-zts-20190902/igbinary-*, extensions/no-debug-non-zts-20190902/msgpack-* - -source $(dirname $0)/../no-debug-non-zts-20131226/redis diff --git a/extensions/no-debug-non-zts-20190902/relay-0.6.8 b/extensions/no-debug-non-zts-20190902/relay-0.6.8 deleted file mode 100755 index 1a79da4..0000000 --- a/extensions/no-debug-non-zts-20190902/relay-0.6.8 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-7.4.*, libraries/liblzf-*, libraries/lz4-*, libraries/zstd-*, extensions/no-debug-non-zts-20190902/igbinary-*, extensions/no-debug-non-zts-20190902/msgpack-* - -source $(dirname $0)/../no-debug-non-zts-20131226/relay diff --git a/extensions/no-debug-non-zts-20190902/swoole-4.8.13 b/extensions/no-debug-non-zts-20190902/swoole-4.8.13 deleted file mode 100755 index 838bcce..0000000 --- a/extensions/no-debug-non-zts-20190902/swoole-4.8.13 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-7.4.* - -source $(dirname $0)/../no-debug-non-zts-20131226/swoole diff --git a/extensions/no-debug-non-zts-20200930/igbinary-3.2.15 b/extensions/no-debug-non-zts-20200930/igbinary-3.2.15 deleted file mode 100755 index 7aa07b6..0000000 --- a/extensions/no-debug-non-zts-20200930/igbinary-3.2.15 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.0.* - -source $(dirname $0)/../no-debug-non-zts-20131226/igbinary \ No newline at end of file diff --git a/extensions/no-debug-non-zts-20200930/msgpack-2.2.0 b/extensions/no-debug-non-zts-20200930/msgpack-2.2.0 deleted file mode 100755 index 9df5d45..0000000 --- a/extensions/no-debug-non-zts-20200930/msgpack-2.2.0 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.0.* - -source $(dirname $0)/../no-debug-non-zts-20131226/msgpack diff --git a/extensions/no-debug-non-zts-20200930/openswoole-4.12.1 b/extensions/no-debug-non-zts-20200930/openswoole-4.12.1 deleted file mode 100755 index 635ef44..0000000 --- a/extensions/no-debug-non-zts-20200930/openswoole-4.12.1 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.0.* - -source $(dirname $0)/../no-debug-non-zts-20131226/openswoole diff --git a/extensions/no-debug-non-zts-20200930/redis-6.0.2 b/extensions/no-debug-non-zts-20200930/redis-6.0.2 deleted file mode 100755 index 5d820a9..0000000 --- a/extensions/no-debug-non-zts-20200930/redis-6.0.2 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.0.*, libraries/liblzf-*, libraries/lz4-*, libraries/zstd-*, extensions/no-debug-non-zts-20200930/igbinary-*, extensions/no-debug-non-zts-20200930/msgpack-* - -source $(dirname $0)/../no-debug-non-zts-20131226/redis diff --git a/extensions/no-debug-non-zts-20200930/relay-0.6.8 b/extensions/no-debug-non-zts-20200930/relay-0.6.8 deleted file mode 100755 index 7bde403..0000000 --- a/extensions/no-debug-non-zts-20200930/relay-0.6.8 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.0.*, libraries/liblzf-*, libraries/lz4-*, libraries/zstd-*, extensions/no-debug-non-zts-20200930/igbinary-*, extensions/no-debug-non-zts-20200930/msgpack-* - -source $(dirname $0)/../no-debug-non-zts-20131226/relay diff --git a/extensions/no-debug-non-zts-20200930/swoole-4.8.13 b/extensions/no-debug-non-zts-20200930/swoole-4.8.13 deleted file mode 100755 index cc14e06..0000000 --- a/extensions/no-debug-non-zts-20200930/swoole-4.8.13 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.0.* - -source $(dirname $0)/../no-debug-non-zts-20131226/swoole diff --git a/extensions/no-debug-non-zts-20210902/igbinary-3.2.15 b/extensions/no-debug-non-zts-20210902/igbinary-3.2.15 deleted file mode 100755 index 11ac116..0000000 --- a/extensions/no-debug-non-zts-20210902/igbinary-3.2.15 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.1.* - -source $(dirname $0)/../no-debug-non-zts-20131226/igbinary diff --git a/extensions/no-debug-non-zts-20210902/msgpack-2.2.0 b/extensions/no-debug-non-zts-20210902/msgpack-2.2.0 deleted file mode 100755 index ed93763..0000000 --- a/extensions/no-debug-non-zts-20210902/msgpack-2.2.0 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.1.* - -source $(dirname $0)/../no-debug-non-zts-20131226/msgpack diff --git a/extensions/no-debug-non-zts-20210902/openswoole-4.12.1 b/extensions/no-debug-non-zts-20210902/openswoole-4.12.1 deleted file mode 100755 index 03f9723..0000000 --- a/extensions/no-debug-non-zts-20210902/openswoole-4.12.1 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.1.* - -source $(dirname $0)/../no-debug-non-zts-20131226/openswoole diff --git a/extensions/no-debug-non-zts-20210902/redis-6.0.2 b/extensions/no-debug-non-zts-20210902/redis-6.0.2 deleted file mode 100755 index fff2767..0000000 --- a/extensions/no-debug-non-zts-20210902/redis-6.0.2 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.1.*, libraries/liblzf-*, libraries/lz4-*, libraries/zstd-*, extensions/no-debug-non-zts-20210902/igbinary-*, extensions/no-debug-non-zts-20210902/msgpack-* - -source $(dirname $0)/../no-debug-non-zts-20131226/redis diff --git a/extensions/no-debug-non-zts-20210902/relay-0.6.8 b/extensions/no-debug-non-zts-20210902/relay-0.6.8 deleted file mode 100755 index fd7d676..0000000 --- a/extensions/no-debug-non-zts-20210902/relay-0.6.8 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.1.*, libraries/liblzf-*, libraries/lz4-*, libraries/zstd-*, extensions/no-debug-non-zts-20210902/igbinary-*, extensions/no-debug-non-zts-20210902/msgpack-* - -source $(dirname $0)/../no-debug-non-zts-20131226/relay diff --git a/extensions/no-debug-non-zts-20210902/swoole-4.8.13 b/extensions/no-debug-non-zts-20210902/swoole-4.8.13 deleted file mode 100755 index 235761b..0000000 --- a/extensions/no-debug-non-zts-20210902/swoole-4.8.13 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.1.* - -source $(dirname $0)/../no-debug-non-zts-20131226/swoole diff --git a/extensions/no-debug-non-zts-20220829/igbinary-3.2.15 b/extensions/no-debug-non-zts-20220829/igbinary-3.2.15 deleted file mode 100755 index 6b7d329..0000000 --- a/extensions/no-debug-non-zts-20220829/igbinary-3.2.15 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.2.* - -source $(dirname $0)/../no-debug-non-zts-20131226/igbinary diff --git a/extensions/no-debug-non-zts-20220829/msgpack-2.2.0 b/extensions/no-debug-non-zts-20220829/msgpack-2.2.0 deleted file mode 100755 index 322cac7..0000000 --- a/extensions/no-debug-non-zts-20220829/msgpack-2.2.0 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.2.* - -source $(dirname $0)/../no-debug-non-zts-20131226/msgpack diff --git a/extensions/no-debug-non-zts-20220829/openswoole-4.12.1 b/extensions/no-debug-non-zts-20220829/openswoole-4.12.1 deleted file mode 100755 index 57b162e..0000000 --- a/extensions/no-debug-non-zts-20220829/openswoole-4.12.1 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.2.* - -source $(dirname $0)/../no-debug-non-zts-20131226/openswoole diff --git a/extensions/no-debug-non-zts-20220829/redis-6.0.2 b/extensions/no-debug-non-zts-20220829/redis-6.0.2 deleted file mode 100755 index 9d24cca..0000000 --- a/extensions/no-debug-non-zts-20220829/redis-6.0.2 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.2.*, libraries/liblzf-*, libraries/lz4-*, libraries/zstd-*, extensions/no-debug-non-zts-20220829/igbinary-*, extensions/no-debug-non-zts-20220829/msgpack-* - -source $(dirname $0)/../no-debug-non-zts-20131226/redis diff --git a/extensions/no-debug-non-zts-20220829/relay-0.6.8 b/extensions/no-debug-non-zts-20220829/relay-0.6.8 deleted file mode 100755 index 598e9e0..0000000 --- a/extensions/no-debug-non-zts-20220829/relay-0.6.8 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.2.*, libraries/liblzf-*, libraries/lz4-*, libraries/zstd-*, extensions/no-debug-non-zts-20220829/igbinary-*, extensions/no-debug-non-zts-20220829/msgpack-* - -source $(dirname $0)/../no-debug-non-zts-20131226/relay diff --git a/extensions/no-debug-non-zts-20220829/swoole-4.8.13 b/extensions/no-debug-non-zts-20220829/swoole-4.8.13 deleted file mode 100755 index b3e053f..0000000 --- a/extensions/no-debug-non-zts-20220829/swoole-4.8.13 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.2.* - -source $(dirname $0)/../no-debug-non-zts-20131226/swoole diff --git a/extensions/no-debug-non-zts-20230831/igbinary-3.2.15 b/extensions/no-debug-non-zts-20230831/igbinary-3.2.15 deleted file mode 100755 index ffe36ec..0000000 --- a/extensions/no-debug-non-zts-20230831/igbinary-3.2.15 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.3.* - -source $(dirname $0)/../no-debug-non-zts-20131226/igbinary diff --git a/extensions/no-debug-non-zts-20230831/msgpack-2.2.0 b/extensions/no-debug-non-zts-20230831/msgpack-2.2.0 deleted file mode 100755 index 27154b4..0000000 --- a/extensions/no-debug-non-zts-20230831/msgpack-2.2.0 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.3.* - -source $(dirname $0)/../no-debug-non-zts-20131226/msgpack diff --git a/extensions/no-debug-non-zts-20230831/openswoole-22.1.0 b/extensions/no-debug-non-zts-20230831/openswoole-22.1.0 deleted file mode 100755 index d931699..0000000 --- a/extensions/no-debug-non-zts-20230831/openswoole-22.1.0 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.3.* - -source $(dirname $0)/../no-debug-non-zts-20131226/openswoole diff --git a/extensions/no-debug-non-zts-20230831/redis-6.0.2 b/extensions/no-debug-non-zts-20230831/redis-6.0.2 deleted file mode 100755 index eb6c73b..0000000 --- a/extensions/no-debug-non-zts-20230831/redis-6.0.2 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.3.*, libraries/liblzf-*, libraries/lz4-*, libraries/zstd-*, extensions/no-debug-non-zts-20220829/igbinary-*, extensions/no-debug-non-zts-20220829/msgpack-* - -source $(dirname $0)/../no-debug-non-zts-20131226/redis diff --git a/extensions/no-debug-non-zts-20230831/relay-0.6.8 b/extensions/no-debug-non-zts-20230831/relay-0.6.8 deleted file mode 100755 index 67d0a92..0000000 --- a/extensions/no-debug-non-zts-20230831/relay-0.6.8 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.3.*, libraries/liblzf-*, libraries/lz4-*, libraries/zstd-*, extensions/no-debug-non-zts-20230831/igbinary-*, extensions/no-debug-non-zts-20230831/msgpack-* - -source $(dirname $0)/../no-debug-non-zts-20131226/relay diff --git a/extensions/no-debug-non-zts-20230831/swoole-5.1.1 b/extensions/no-debug-non-zts-20230831/swoole-5.1.1 deleted file mode 100755 index 2cef760..0000000 --- a/extensions/no-debug-non-zts-20230831/swoole-5.1.1 +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# Build Path: /app/.heroku/php -# Build Deps: php-8.3.* - -source $(dirname $0)/../no-debug-non-zts-20131226/swoole diff --git a/extensions/no-debug-non-zts-20131226/openswoole b/extensions/openswoole old mode 100755 new mode 100644 similarity index 66% rename from extensions/no-debug-non-zts-20131226/openswoole rename to extensions/openswoole index 6dc423c..e1a3ca1 --- a/extensions/no-debug-non-zts-20131226/openswoole +++ b/extensions/openswoole @@ -4,4 +4,4 @@ dep_name=$(basename $BASH_SOURCE) CONFIGURE_EXTRA="--enable-swoole-json --enable-swoole-curl --enable-http2 --enable-sockets --enable-mysqlnd --enable-openssl --with-postgres" -source $(dirname $BASH_SOURCE)/../../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl +source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl diff --git a/extensions/no-debug-non-zts-20131226/redis b/extensions/redis old mode 100755 new mode 100644 similarity index 85% rename from extensions/no-debug-non-zts-20131226/redis rename to extensions/redis index 0955a87..f0d35c1 --- a/extensions/no-debug-non-zts-20131226/redis +++ b/extensions/redis @@ -10,4 +10,4 @@ CONFIGURE_EXTRA="--enable-redis-igbinary --enable-redis-msgpack --enable-redis-l MANIFEST_REQUIRE="${MANIFEST_REQUIRE:-"{\"heroku-sys/php\":\"${series}.*\",\"heroku-sys/liblzf\":\"*\",\"heroku-sys/lz4\":\"*\",\"heroku-sys/zstd\":\"*\",\"heroku-sys/ext-json\":\"*\",\"heroku-sys/ext-igbinary\":\"*\",\"heroku-sys/ext-msgpack\":\"*\"}"}" -source $(dirname $BASH_SOURCE)/../../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl +source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl diff --git a/extensions/no-debug-non-zts-20131226/relay b/extensions/relay old mode 100755 new mode 100644 similarity index 79% rename from extensions/no-debug-non-zts-20131226/relay rename to extensions/relay index 27d1b7e..8bc2c7f --- a/extensions/no-debug-non-zts-20131226/relay +++ b/extensions/relay @@ -3,7 +3,7 @@ set -o pipefail set -eu -source $(dirname $BASH_SOURCE)/../../vendor/heroku/heroku-buildpack-php/support/build/_util/include/manifest.sh +source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/_util/include/manifest.sh OUT_PREFIX=$1 @@ -48,6 +48,6 @@ MANIFEST_REPLACE="${MANIFEST_REPLACE:-"{}"}" MANIFEST_PROVIDE="${MANIFEST_PROVIDE:-"{}"}" MANIFEST_EXTRA="${MANIFEST_EXTRA:-"{\"config\":\"etc/php/conf.d/relay.ini-dist\"}"}" -python $(dirname $BASH_SOURCE)/../../vendor/heroku/heroku-buildpack-php/support/build/_util/include/manifest.py "heroku-sys-php-extension" "heroku-sys/ext-${dep_name}" "$dep_version" "${dep_formula}.tar.gz" "$MANIFEST_REQUIRE" "$MANIFEST_CONFLICT" "$MANIFEST_REPLACE" "$MANIFEST_PROVIDE" "$MANIFEST_EXTRA" > $dep_manifest +python $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/_util/include/manifest.py "heroku-sys-php-extension" "heroku-sys/ext-${dep_name}" "$dep_version" "${dep_formula}.tar.gz" "$MANIFEST_REQUIRE" "$MANIFEST_CONFLICT" "$MANIFEST_REPLACE" "$MANIFEST_PROVIDE" "$MANIFEST_EXTRA" > $dep_manifest print_or_export_manifest_cmd "$(generate_manifest_cmd "$dep_manifest")" diff --git a/extensions/no-debug-non-zts-20131226/swoole b/extensions/swoole old mode 100755 new mode 100644 similarity index 64% rename from extensions/no-debug-non-zts-20131226/swoole rename to extensions/swoole index 8dcce52..dfa53dd --- a/extensions/no-debug-non-zts-20131226/swoole +++ b/extensions/swoole @@ -4,4 +4,4 @@ dep_name=$(basename $BASH_SOURCE) CONFIGURE_EXTRA="--enable-swoole-json --enable-swoole-curl --enable-http2 --enable-sockets --enable-mysqlnd --enable-openssl" -source $(dirname $BASH_SOURCE)/../../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl +source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl diff --git a/libraries/liblzf-3.6 b/libraries/liblzf-3.6 deleted file mode 100644 index 9661309..0000000 --- a/libraries/liblzf-3.6 +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -# Build Path: /app/.heroku/php/ - -source $(dirname $0)/liblzf \ No newline at end of file diff --git a/libraries/lz4-1.9.3 b/libraries/lz4-1.9.3 deleted file mode 100644 index 3e43035..0000000 --- a/libraries/lz4-1.9.3 +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -# Build Path: /app/.heroku/php/ - -source $(dirname $0)/lz4 \ No newline at end of file diff --git a/libraries/zstd b/libraries/zstd index 3e6aa74..0b37c5b 100644 --- a/libraries/zstd +++ b/libraries/zstd @@ -16,7 +16,7 @@ dep_formula=${0#$WORKSPACE_DIR/} dep_name=$(basename $BASH_SOURCE) dep_version=${dep_formula##*"/${dep_name}-"} dep_package=${dep_name}-${dep_version} -dep_url=https://github.com/facebook/zstd/archive/v${dep_version}.tar.gz +dep_url=https://github.com/facebook/zstd/releases/download/v${dep_version}/zstd-${dep_version}.tar.gz dep_manifest=${dep_package}.composer.json echo "-----> Building ${dep_package}..." diff --git a/libraries/zstd-1.4.9 b/libraries/zstd-1.4.9 deleted file mode 100644 index cd74c8d..0000000 --- a/libraries/zstd-1.4.9 +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -# Build Path: /app/.heroku/php/ - -source $(dirname $0)/zstd \ No newline at end of file diff --git a/scripts/build-dockerfile.sh b/scripts/build-dockerfile.sh new file mode 100755 index 0000000..093adb8 --- /dev/null +++ b/scripts/build-dockerfile.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) + +HEROKUSTACK="$1" # e.g. "heroku-24" + +docker build --pull --tag "$HEROKUSTACK" --file "docker/build/${HEROKUSTACK}.Dockerfile" ${SCRIPT_DIR}/.. \ No newline at end of file diff --git a/scripts/build-extension.sh b/scripts/build-extension.sh new file mode 100755 index 0000000..eb5205f --- /dev/null +++ b/scripts/build-extension.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) + +HEROKUSTACK="$1" # e.g. "heroku-22" +PHP_VERSION="$2" # e.g. "8.4" +PHP_APIVERSION="$3" # e.g. "20240924" +EXTENSION_NAME="$4" # e.g. "igbinary" +EXTENSION_VERSION="$5" # e.g. "3.2.15" +EXTENSION_DEPS="$6" # e.g. "php-$PHP_VERSION.*" +UPSTREAM_S3_PREFIX="$7" # e.g. "dist-heroku-24-amd64-stable/" +WITH_DEPLOY=${8:-"false"} # e.g. "true" or "false" + +if [ "$EXTENSION_VERSION" == "" ]; then + echo "No version was provided for $EXTENSION_NAME, skipping build." + exit 0 +fi + +echo "--- Building $EXTENSION_NAME $EXTENSION_VERSION ---" + +EXTENSION_FOLDER="$SCRIPT_DIR/../extensions/no-debug-non-zts-${PHP_APIVERSION}/" +EXTENSION_FILE="$EXTENSION_FOLDER${EXTENSION_NAME}-${EXTENSION_VERSION}" +# Create the extension build script +mkdir -p $EXTENSION_FOLDER +cat < "$EXTENSION_FILE" +#!/bin/bash +# Build Path: /app/.heroku/php/ +# Build Deps: $EXTENSION_DEPS +source \$(dirname \$0)/../$EXTENSION_NAME +EOF + +# Set the build command based on whether we want to deploy or not +COMMAND="bob build" +OVERWRITE_FLAG="" +ENV_FILE=".env" +if [ "$WITH_DEPLOY" = "true" ]; then + COMMAND="deploy.sh" + ENV_FILE="$SCRIPT_DIR/../vendor/heroku/heroku-buildpack-php/support/build/_docker/env.default" + OVERWRITE_FLAG="--overwrite" +fi + +set -x + +docker run --rm \ +-v ${SCRIPT_DIR}/../:/workspace \ +-w /workspace \ +--env UPSTREAM_S3_BUCKET=lang-php \ +--env UPSTREAM_S3_PREFIX=${UPSTREAM_S3_PREFIX} \ +--env-file="$ENV_FILE" \ +${HEROKUSTACK} ${COMMAND} \ +${OVERWRITE_FLAG} extensions/no-debug-non-zts-${PHP_APIVERSION}/${EXTENSION_NAME}-${EXTENSION_VERSION} + +set +x \ No newline at end of file diff --git a/scripts/build-lib.sh b/scripts/build-lib.sh new file mode 100755 index 0000000..6c3d4b4 --- /dev/null +++ b/scripts/build-lib.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) + +HEROKUSTACK=$1 # e.g. "heroku-24" +LIBNAME=$2 # e.g. "liblzf" +LIBVERSION=$3 # e.g. "3.6" +WITH_DEPLOY=${4:-"false"} # e.g. "true" or "false" + +if [ "$LIBVERSION" == "" ]; then + echo "No version was provided for $LIBNAME, skipping build." + exit 0 +fi + +echo "--- Building $LIBNAME $LIBVERSION ---" + +# Create the library build script +cat < "${SCRIPT_DIR}/../libraries/${LIBNAME}-${LIBVERSION}" +#!/bin/bash +# Build Path: /app/.heroku/php/ +source \$(dirname \$0)/$LIBNAME +EOF + +# Set the build command based on whether we want to deploy or not +COMMAND="bob build" +ENV_FILE=".env" +OVERWRITE_FLAG="" +if [ "$WITH_DEPLOY" = "true" ]; then + COMMAND="deploy.sh" + ENV_FILE="$SCRIPT_DIR/../vendor/heroku/heroku-buildpack-php/support/build/_docker/env.default" + OVERWRITE_FLAG="--overwrite" +fi + +set -x + +docker run --rm \ +-v ${SCRIPT_DIR}/../:/workspace \ +-w /workspace \ +--env-file="$ENV_FILE" \ +$HEROKUSTACK \ +${COMMAND} ${OVERWRITE_FLAG} libraries/${LIBNAME}-${LIBVERSION} + +set +x \ No newline at end of file diff --git a/scripts/create-dockerfile.sh b/scripts/create-dockerfile.sh new file mode 100755 index 0000000..c4c521d --- /dev/null +++ b/scripts/create-dockerfile.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +HEROKUSTACK="$1" +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) + +mkdir -p ${SCRIPT_DIR}/../docker/build/ +cat ${SCRIPT_DIR}/../vendor/heroku/heroku-buildpack-php/support/build/_docker/${HEROKUSTACK}.Dockerfile > ${SCRIPT_DIR}/../docker/build/${HEROKUSTACK}.Dockerfile + +cat <> "${SCRIPT_DIR}/../docker/build/${HEROKUSTACK}.Dockerfile" +ENV WORKSPACE_DIR=/workspace +ENV PATH=/app/vendor/heroku/heroku-buildpack-php/support/build/_util:\$PATH +EOF \ No newline at end of file diff --git a/scripts/setup-local.sh b/scripts/setup-local.sh new file mode 100755 index 0000000..6d25306 --- /dev/null +++ b/scripts/setup-local.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) + +# Install Composer dependencies +composer install --working-dir=${SCRIPT_DIR}/.. --prefer-dist --no-progress --no-suggest --ignore-platform-reqs + +# Copy Python requirements +cp ${SCRIPT_DIR}/../vendor/heroku/heroku-buildpack-php/requirements.txt . + +# Create environment file +cp ${SCRIPT_DIR}/../.env.example ${SCRIPT_DIR}/../.env \ No newline at end of file From 5ef97eb9bb2c9946ebb2baf31ff8e182fd0fa912 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 13:11:51 -0800 Subject: [PATCH 2/7] Extend v3.0.0 changelog (#35) Co-authored-by: tillkruss <665029+tillkruss@users.noreply.github.com> --- CHANGELOG.md | 45 +++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d21945d..11d7895 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,25 +9,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Replaced file based declaration approach with shell scripts (generate instead of declaration) +### Added +- Added `heroku-24` stack support +- Added PHP 8.4 and 8.5 support +- Added Swoole v5.1.8, v6.1.7 and v6.2.0RC1 +- Added OpenSwoole v22.1.2, v25.2.0 and v26.2.0 +- Added PhpRedis v5.3.7 and v6.3.0 +- Added [Relay](https://github.com/cachewerk) v0.20.0 +- Added igbinary v3.2.17RC1 +- Added build scripts for local development + +### Changed +- Replaced file-based extension declarations with shell scripts +- Overhauled build workflow for dynamic library versions and fork-friendly S3 configuration + +### Removed +- Dropped `heroku-20` stack support + ### heroku-22 stack -| PHP | igbinary | msgpack | redis | relay | swoole | openswoole | -| ----- | ----------- | ------- | --------------- | ---------------- | ------------------------ | ----------------------------------- | -| `8.1` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` | `4.8.13` `5.1.8` `6.1.7` | `4.12.1` `22.1.2` | +| PHP | igbinary | msgpack | redis | relay | swoole | openswoole | +| ----- | ----------- | ------- | --------------- | ---------------- | ------------------------- | ------------------------------------ | +| `8.1` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` | `4.8.13` `5.1.8` `6.1.7` | `4.12.1` `22.1.2` | | `8.2` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` | `4.8.13` `5.1.8` `6.1.7` | `4.12.1` `22.1.2` `25.2.0` `26.2.0` | -| `8.3` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` `0.20.0` | `5.1.8` `6.1.7` | `22.1.2` `25.2.0` `26.2.0` | -| `8.4` | `3.2.15` | `2.2.0` | `6.3.0` | `0.20.0` | `6.1.7` | `25.2.0` `26.2.0` | -| `8.5` | `3.2.17RC1` | `2.2.0` | `6.3.0` | `0.20.0` | `6.2.0RC1` | `26.2.0` | +| `8.3` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` `0.20.0` | `5.1.8` `6.1.7` | `22.1.2` `25.2.0` `26.2.0` | +| `8.4` | `3.2.15` | `2.2.0` | `6.3.0` | `0.20.0` | `6.1.7` | `25.2.0` `26.2.0` | +| `8.5` | `3.2.17RC1` | `2.2.0` | `6.3.0` | `0.20.0` | `6.2.0RC1` | `26.2.0` | ### heroku-24 stack -| PHP | igbinary | msgpack | redis | relay | swoole | openswoole | -| ----- | ----------- | ------- | --------------- | ---------------- | ------------------------ | -------------------------- | -| `8.2` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` | `4.8.13` `5.1.8` `6.1.7` | `22.1.2` `25.2.0` `26.2.0` | -| `8.3` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` `0.20.0` | `5.1.8` `6.1.7` | `22.1.2` `25.2.0` `26.2.0` | -| `8.4` | `3.2.15` | `2.2.0` | `6.3.0` | `0.20.0` | `6.1.7` | `25.2.0` `26.2.0` | -| `8.5` | `3.2.17RC1` | `2.2.0` | `6.3.0` | `0.20.0` | `6.2.0RC1` | `26.2.0` | - +| PHP | igbinary | msgpack | redis | relay | swoole | openswoole | +| ----- | ----------- | ------- | --------------- | ---------------- | ------------------------- | ------------------------------------ | +| `8.2` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` | `4.8.13` `5.1.8` `6.1.7` | `22.1.2` `25.2.0` `26.2.0` | +| `8.3` | `3.2.15` | `2.2.0` | `5.3.7` `6.3.0` | `0.6.8` `0.20.0` | `5.1.8` `6.1.7` | `22.1.2` `25.2.0` `26.2.0` | +| `8.4` | `3.2.15` | `2.2.0` | `6.3.0` | `0.20.0` | `6.1.7` | `25.2.0` `26.2.0` | +| `8.5` | `3.2.17RC1` | `2.2.0` | `6.3.0` | `0.20.0` | `6.2.0RC1` | `26.2.0` | ## [2.0.1] - 2023-12-15 - Fixed Relay build for heroku-22 @@ -99,7 +115,8 @@ Replaced file based declaration approach with shell scripts (generate instead of ### Added - Initial release -[Unreleased]: https://github.com/cachewerk/heroku-php-extensions/compare/v2.0.1...HEAD +[Unreleased]: https://github.com/cachewerk/heroku-php-extensions/compare/v3.0.0...HEAD +[3.0.0]: https://github.com/cachewerk/heroku-php-extensions/compare/v2.0.1...v3.0.0 [2.0.1]: https://github.com/cachewerk/heroku-php-extensions/compare/v2.0.0...v2.0.1 [2.0.0]: https://github.com/cachewerk/heroku-php-extensions/compare/v1.2.6...v2.0.0 [1.2.6]: https://github.com/cachewerk/heroku-php-extensions/compare/v1.2.5...v1.2.6 From 34da1e5363665341cd4215b532920373c7fab799 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 09:31:06 -0800 Subject: [PATCH 3/7] Convert flow-style matrix declarations to YAML block notation (#36) Co-authored-by: tillkruss <665029+tillkruss@users.noreply.github.com> --- .github/workflows/build.yml | 136 ++++++++++++++++++++++++++++++----- .github/workflows/mkrepo.yml | 15 +++- .github/workflows/pr.yml | 2 + .github/workflows/sync.yml | 17 +++-- 4 files changed, 145 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fa83fb5..8595a22 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,27 +26,127 @@ jobs: fail-fast: true matrix: stack: - - { name: "heroku-22", prefix: "dist-heroku-22-stable/", prefixdevelop: "dist-heroku-22-develop/", os: "ubuntu-latest" } - - { name: "heroku-24", prefix: "dist-heroku-24-amd64-stable/", prefixdevelop: "dist-heroku-24-amd64-develop/", os: "ubuntu-latest" } - - { name: "heroku-24", prefix: "dist-heroku-24-arm64-stable/", prefixdevelop: "dist-heroku-24-arm64-develop/", os: "ubuntu-24.04-arm" } + - name: "heroku-22" + prefix: "dist-heroku-22-stable/" + os: "ubuntu-latest" + - name: "heroku-24" + prefix: "dist-heroku-24-amd64-stable/" + os: "ubuntu-latest" + - name: "heroku-24" + prefix: "dist-heroku-24-arm64-stable/" + os: "ubuntu-24.04-arm" series: - - { version: 20210902, php: "8.1", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: "5.3.7 6.3.0", relay: "0.6.8", swoole: "4.8.13 5.1.8 6.1.7", openswoole: "4.12.1 22.1.2" } - - { version: 20220829, php: "8.2", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: "5.3.7 6.3.0", relay: "0.6.8", swoole: "4.8.13 5.1.8 6.1.7", openswoole: "22.1.2 25.2.0 26.2.0" } - - { version: 20230831, php: "8.3", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: "5.3.7 6.3.0", relay: "0.6.8 0.20.0", swoole: "5.1.8 6.1.7", openswoole: "22.1.2 25.2.0 26.2.0" } - - { version: 20240924, php: "8.4", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: "6.3.0", relay: "0.20.0", swoole: "6.1.7", openswoole: "25.2.0 26.2.0" } - - { version: 20250925, php: "8.5", liblzf: "3.6", lz4: "1.10.0", zstd: "1.5.7", igbinary: "3.2.17RC1", msgpack: "2.2.0", redis: "6.3.0", relay: "0.20.0", swoole: "6.2.0RC1", openswoole: "26.2.0" } + - version: 20210902 + php: "8.1" + liblzf: "3.6" + lz4: "1.9.3" + zstd: "1.4.9" + igbinary: "3.2.15" + msgpack: "2.2.0" + redis: + - "5.3.7" + - "6.3.0" + relay: + - "0.6.8" + swoole: + - "4.8.13" + - "5.1.8" + - "6.1.7" + openswoole: + - "4.12.1" + - "22.1.2" + - version: 20220829 + php: "8.2" + liblzf: "3.6" + lz4: "1.9.3" + zstd: "1.4.9" + igbinary: "3.2.15" + msgpack: "2.2.0" + redis: + - "5.3.7" + - "6.3.0" + relay: + - "0.6.8" + swoole: + - "4.8.13" + - "5.1.8" + - "6.1.7" + openswoole: + - "22.1.2" + - "25.2.0" + - "26.2.0" + - version: 20230831 + php: "8.3" + liblzf: "3.6" + lz4: "1.9.3" + zstd: "1.4.9" + igbinary: "3.2.15" + msgpack: "2.2.0" + redis: + - "5.3.7" + - "6.3.0" + relay: + - "0.6.8" + - "0.20.0" + swoole: + - "5.1.8" + - "6.1.7" + openswoole: + - "22.1.2" + - "25.2.0" + - "26.2.0" + - version: 20240924 + php: "8.4" + liblzf: "3.6" + lz4: "1.9.3" + zstd: "1.4.9" + igbinary: "3.2.15" + msgpack: "2.2.0" + redis: + - "6.3.0" + relay: + - "0.20.0" + swoole: + - "6.1.7" + openswoole: + - "25.2.0" + - "26.2.0" + - version: 20250925 + php: "8.5" + liblzf: "3.6" + lz4: "1.10.0" + zstd: "1.5.7" + igbinary: "3.2.17RC1" + msgpack: "2.2.0" + redis: + - "6.3.0" + relay: + - "0.20.0" + swoole: + - "6.2.0RC1" + openswoole: + - "26.2.0" exclude: # heroku-24 no longer supports php-8.1 - - { stack: { name: "heroku-24" }, series: { version: 20210902 } } + - stack: + name: "heroku-24" + series: + version: 20210902 include: # heroku-24 cannot compile openswoole 4.12.1 anymore, include for heroku-22 only - - { - stack: { name: "heroku-22", prefix: "dist-heroku-22-stable/", prefixdevelop: "dist-heroku-22-develop/", os: "ubuntu-latest" }, - series: { version: 20220829, php: "8.2", openswoole: "4.12.1" } - } + - stack: + name: "heroku-22" + prefix: "dist-heroku-22-stable/" + os: "ubuntu-latest" + series: + version: 20220829 + php: "8.2" + openswoole: + - "4.12.1" steps: - - uses: actions/checkout@v4 + - name: Checkout + uses: actions/checkout@v4 - name: Composer Install run: composer install --prefer-dist --no-progress --no-suggest --ignore-platform-reqs @@ -78,27 +178,27 @@ jobs: - name: Build redis extensions run: | set -e - for VERSION in ${{ matrix.series.redis }}; do + for VERSION in ${{ join(matrix.series.redis, ' ') }}; do ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} redis "$VERSION" "php-${{ matrix.series.php }}.*,libraries/liblzf-*,libraries/lz4-*,libraries/zstd-*,extensions/no-debug-non-zts-${{ matrix.series.version }}/igbinary-*,extensions/no-debug-non-zts-${{ matrix.series.version }}/msgpack-*" ${{ matrix.stack.prefix }} true done - name: Build relay extension run: | set -e - for VERSION in ${{ matrix.series.relay }}; do + for VERSION in ${{ join(matrix.series.relay, ' ') }}; do ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} relay "$VERSION" "php-${{ matrix.series.php }}.*,libraries/liblzf-*,libraries/lz4-*,libraries/zstd-*,extensions/no-debug-non-zts-${{ matrix.series.version }}/igbinary-*,extensions/no-debug-non-zts-${{ matrix.series.version }}/msgpack-*" ${{ matrix.stack.prefix }} true done - name: Build swoole extension run: | set -e - for VERSION in ${{ matrix.series.swoole }}; do + for VERSION in ${{ join(matrix.series.swoole, ' ') }}; do ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} swoole "$VERSION" "php-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true done - name: Build openswoole extension run: | set -e - for VERSION in ${{ matrix.series.openswoole }}; do + for VERSION in ${{ join(matrix.series.openswoole, ' ') }}; do ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} openswoole "$VERSION" "php-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true done \ No newline at end of file diff --git a/.github/workflows/mkrepo.yml b/.github/workflows/mkrepo.yml index 17735c2..8d01b54 100644 --- a/.github/workflows/mkrepo.yml +++ b/.github/workflows/mkrepo.yml @@ -27,9 +27,18 @@ jobs: strategy: matrix: stack: - - { name: "heroku-22", prefix: "dist-heroku-22-stable/", prefixdevelop: "dist-heroku-22-develop/", os: "ubuntu-latest" } - - { name: "heroku-24", prefix: "dist-heroku-24-amd64-stable/", prefixdevelop: "dist-heroku-24-amd64-develop/", os: "ubuntu-latest" } - - { name: "heroku-24", prefix: "dist-heroku-24-arm64-stable/", prefixdevelop: "dist-heroku-24-arm64-develop/", os: "ubuntu-24.04-arm" } + - name: "heroku-22" + stable: "dist-heroku-22-stable/" + develop: "dist-heroku-22-develop/" + os: "ubuntu-latest" + - name: "heroku-24" + stable: "dist-heroku-24-amd64-stable/" + develop: "dist-heroku-24-amd64-develop/" + os: "ubuntu-latest" + - name: "heroku-24" + stable: "dist-heroku-24-arm64-stable/" + develop: "dist-heroku-24-arm64-develop/" + os: "ubuntu-24.04-arm" env: S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 2618167..656c8db 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -5,11 +5,13 @@ on: pull_request jobs: call-build: + name: Build extensions uses: ./.github/workflows/build.yml with: S3_PREFIX: pull-requests/${{ github.event.number }}/ call-mkrepo: + name: Make repositories uses: ./.github/workflows/mkrepo.yml with: S3_PREFIX: pull-requests/${{ github.event.number }}/ diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index 38df7b2..df75b2b 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -16,9 +16,18 @@ jobs: strategy: matrix: stack: - - { name: "heroku-22", prefix: "dist-heroku-22-stable/", prefixdevelop: "dist-heroku-22-develop/", os: "ubuntu-latest" } - - { name: "heroku-24", prefix: "dist-heroku-24-amd64-stable/", prefixdevelop: "dist-heroku-24-amd64-develop/", os: "ubuntu-latest" } - - { name: "heroku-24", prefix: "dist-heroku-24-arm64-stable/", prefixdevelop: "dist-heroku-24-arm64-develop/", os: "ubuntu-24.04-arm" } + - name: "heroku-22" + stable: "dist-heroku-22-stable/" + develop: "dist-heroku-22-develop/" + os: "ubuntu-latest" + - name: "heroku-24" + stable: "dist-heroku-24-amd64-stable/" + develop: "dist-heroku-24-amd64-develop/" + os: "ubuntu-latest" + - name: "heroku-24" + stable: "dist-heroku-24-arm64-stable/" + develop: "dist-heroku-24-arm64-develop/" + os: "ubuntu-24.04-arm" env: S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }} @@ -49,4 +58,4 @@ jobs: run: | echo "yes" | docker run --rm -i \ --env-file=${BUILDPACK}/support/build/_docker/env.default \ - ${{ matrix.stack.name }} sync.sh $S3_BUCKET ${{ matrix.stack.prefix }} $S3_BUCKET ${{ matrix.stack.prefixdevelop }} + ${{ matrix.stack.name }} sync.sh $S3_BUCKET ${{ matrix.stack.stable }} $S3_BUCKET ${{ matrix.stack.develop }} From 8c2e377ed5593058f9c21ffb51653e2c0f68e41a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Till=20Kr=C3=BCss?= Date: Thu, 5 Mar 2026 09:35:32 -0800 Subject: [PATCH 4/7] Revise Heroku repository instructions and section title Updated instructions for Heroku PHP platform repositories and modified section heading for clarity. --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a49bd65..04c113a 100644 --- a/README.md +++ b/README.md @@ -24,14 +24,12 @@ heroku config:set HEROKU_PHP_PLATFORM_REPOSITORIES="https://relay.so/heroku/" If you prefer using the AWS S3 repositories, add the corresponding repository to your Heroku app: ```bash -# heroku-20 (archive only, not supported anymore) -heroku config:set HEROKU_PHP_PLATFORM_REPOSITORIES="https://heroku-php-extensions.s3.amazonaws.com/dist-heroku-20-stable/" - # heroku-22 heroku config:set HEROKU_PHP_PLATFORM_REPOSITORIES="https://heroku-php-extensions.s3.amazonaws.com/dist-heroku-22-stable/" # heroku-24 (amd64) heroku config:set HEROKU_PHP_PLATFORM_REPOSITORIES="https://heroku-php-extensions.s3.amazonaws.com/dist-heroku-24-amd64-stable/" + # heroku-24 (arm64) heroku config:set HEROKU_PHP_PLATFORM_REPOSITORIES="https://heroku-php-extensions.s3.amazonaws.com/dist-heroku-24-arm64-stable/" ``` @@ -113,6 +111,6 @@ Create a custom Dockerfile for `heroku-24`. # Build openswoole ./scripts/build-extension.sh heroku-24 8.4 20240924 openswoole 25.2.0 "php-8.4.*" "dist-heroku-24-amd64-stable/" ``` -### Adding new versions +### Versions -New versions can be added to [build.yml](./.github/workflows/build.yml) and will automatically be built and deployed by github actions \ No newline at end of file +Versions can be added and upgraded in [build.yml](./.github/workflows/build.yml) and will automatically be built and deployed by GitHub actions. From 0d36eac9a3ca928b6336132facc114189111ce9e Mon Sep 17 00:00:00 2001 From: Daniel Hobi Date: Thu, 5 Mar 2026 22:31:26 +0100 Subject: [PATCH 5/7] - Add manual workflow trigger (#37) - Remove feature branches from triggers - Fix S3 prefix for build artifacts to include stack name and "develop" instead of "stable" --- .github/workflows/build.yml | 13 +++++++------ .github/workflows/mkrepo.yml | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8595a22..7e25bca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,7 +2,8 @@ name: Build extensions on: push: - branches: [main, feature/*] + branches: [main] + workflow_dispatch: workflow_call: inputs: S3_PREFIX: @@ -17,7 +18,7 @@ jobs: env: S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }} S3_REGION: ${{ secrets.S3_REGION || '' }} - S3_PREFIX: ${{ inputs.S3_PREFIX || '' }} + S3_PREFIX: ${{ inputs.S3_PREFIX || matrix.stack.prefix }} BUILDPACK: ./vendor/heroku/heroku-buildpack-php AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} @@ -27,13 +28,13 @@ jobs: matrix: stack: - name: "heroku-22" - prefix: "dist-heroku-22-stable/" + prefix: "dist-heroku-22-develop/" os: "ubuntu-latest" - name: "heroku-24" - prefix: "dist-heroku-24-amd64-stable/" + prefix: "dist-heroku-24-amd64-develop/" os: "ubuntu-latest" - name: "heroku-24" - prefix: "dist-heroku-24-arm64-stable/" + prefix: "dist-heroku-24-arm64-develop/" os: "ubuntu-24.04-arm" series: - version: 20210902 @@ -136,7 +137,7 @@ jobs: # heroku-24 cannot compile openswoole 4.12.1 anymore, include for heroku-22 only - stack: name: "heroku-22" - prefix: "dist-heroku-22-stable/" + prefix: "dist-heroku-22-develop/" os: "ubuntu-latest" series: version: 20220829 diff --git a/.github/workflows/mkrepo.yml b/.github/workflows/mkrepo.yml index 8d01b54..fb5c69f 100644 --- a/.github/workflows/mkrepo.yml +++ b/.github/workflows/mkrepo.yml @@ -43,7 +43,7 @@ jobs: env: S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }} S3_REGION: ${{ secrets.S3_REGION || '' }} - S3_PREFIX: ${{ inputs.S3_PREFIX || '' }} + S3_PREFIX: ${{ inputs.S3_PREFIX || matrix.stack.develop }} BUILDPACK: ./vendor/heroku/heroku-buildpack-php steps: From 3a53cf0136cfe0cf3d49ee875093bda64b663d4e Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 13:45:45 -0800 Subject: [PATCH 6/7] Switch strategy.matrix.series to JSON flow notation (#40) Co-authored-by: tillkruss <665029+tillkruss@users.noreply.github.com> --- .github/workflows/build.yml | 95 ++----------------------------------- 1 file changed, 5 insertions(+), 90 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7e25bca..2e09eca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,96 +37,11 @@ jobs: prefix: "dist-heroku-24-arm64-develop/" os: "ubuntu-24.04-arm" series: - - version: 20210902 - php: "8.1" - liblzf: "3.6" - lz4: "1.9.3" - zstd: "1.4.9" - igbinary: "3.2.15" - msgpack: "2.2.0" - redis: - - "5.3.7" - - "6.3.0" - relay: - - "0.6.8" - swoole: - - "4.8.13" - - "5.1.8" - - "6.1.7" - openswoole: - - "4.12.1" - - "22.1.2" - - version: 20220829 - php: "8.2" - liblzf: "3.6" - lz4: "1.9.3" - zstd: "1.4.9" - igbinary: "3.2.15" - msgpack: "2.2.0" - redis: - - "5.3.7" - - "6.3.0" - relay: - - "0.6.8" - swoole: - - "4.8.13" - - "5.1.8" - - "6.1.7" - openswoole: - - "22.1.2" - - "25.2.0" - - "26.2.0" - - version: 20230831 - php: "8.3" - liblzf: "3.6" - lz4: "1.9.3" - zstd: "1.4.9" - igbinary: "3.2.15" - msgpack: "2.2.0" - redis: - - "5.3.7" - - "6.3.0" - relay: - - "0.6.8" - - "0.20.0" - swoole: - - "5.1.8" - - "6.1.7" - openswoole: - - "22.1.2" - - "25.2.0" - - "26.2.0" - - version: 20240924 - php: "8.4" - liblzf: "3.6" - lz4: "1.9.3" - zstd: "1.4.9" - igbinary: "3.2.15" - msgpack: "2.2.0" - redis: - - "6.3.0" - relay: - - "0.20.0" - swoole: - - "6.1.7" - openswoole: - - "25.2.0" - - "26.2.0" - - version: 20250925 - php: "8.5" - liblzf: "3.6" - lz4: "1.10.0" - zstd: "1.5.7" - igbinary: "3.2.17RC1" - msgpack: "2.2.0" - redis: - - "6.3.0" - relay: - - "0.20.0" - swoole: - - "6.2.0RC1" - openswoole: - - "26.2.0" + - {version: 20210902, php: "8.1", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: ["5.3.7", "6.3.0"], relay: ["0.6.8"], swoole: ["4.8.13", "5.1.8", "6.1.7"], openswoole: ["4.12.1", "22.1.2"]} + - {version: 20220829, php: "8.2", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: ["5.3.7", "6.3.0"], relay: ["0.6.8"], swoole: ["4.8.13", "5.1.8", "6.1.7"], openswoole: ["22.1.2", "25.2.0", "26.2.0"]} + - {version: 20230831, php: "8.3", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: ["5.3.7", "6.3.0"], relay: ["0.6.8", "0.20.0"], swoole: ["5.1.8", "6.1.7"], openswoole: ["22.1.2", "25.2.0", "26.2.0"]} + - {version: 20240924, php: "8.4", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: ["6.3.0"], relay: ["0.20.0"], swoole: ["6.1.7"], openswoole: ["25.2.0", "26.2.0"]} + - {version: 20250925, php: "8.5", liblzf: "3.6", lz4: "1.10.0", zstd: "1.5.7", igbinary: "3.2.17RC1", msgpack: "2.2.0", redis: ["6.3.0"], relay: ["0.20.0"], swoole: ["6.2.0RC1"], openswoole: ["26.2.0"]} exclude: # heroku-24 no longer supports php-8.1 - stack: From f4ebe7f2bd92e35fa30a09c46407f98c329bac88 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 13:53:40 -0800 Subject: [PATCH 7/7] Fix undefined array key warnings in openswoole/swoole card templates (#39) Co-authored-by: tillkruss <665029+tillkruss@users.noreply.github.com> --- web/card-openswoole.phtml | 14 +++++++------- web/card-swoole.phtml | 12 ++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/web/card-openswoole.phtml b/web/card-openswoole.phtml index 2e74601..b96c91a 100644 --- a/web/card-openswoole.phtml +++ b/web/card-openswoole.phtml @@ -35,7 +35,7 @@ JSON support
- (.+)/m", $openswoole, $json); echo $json[1]; ?> + (.+)/m", $openswoole, $json); echo $json[1] ?? 'disabled'; ?>
@@ -43,7 +43,7 @@ HTTP2 support
- (.+)/m", $openswoole, $http2); echo $http2[1]; ?> + (.+)/m", $openswoole, $http2); echo $http2[1] ?? 'disabled'; ?>
@@ -51,7 +51,7 @@ OpenSSL support
- (.+)/m", $openswoole, $openssl); echo $openssl[1]; ?> + (.+)/m", $openswoole, $openssl); echo $openssl[1] ?? 'disabled'; ?>
@@ -59,7 +59,7 @@ Native cURL support
- (.+)/m", $openswoole, $curl); echo $curl[1]; ?> + (.+)/m", $openswoole, $curl); echo $curl[1] ?? 'disabled'; ?>
@@ -67,7 +67,7 @@ mysqlnd support
- (.+)/m", $openswoole, $mysqlnd); echo $mysqlnd[1]; ?> + (.+)/m", $openswoole, $mysqlnd); echo $mysqlnd[1] ?? 'disabled'; ?>
@@ -75,7 +75,7 @@ sockets support
- (.+)/m", $openswoole, $sockets); echo $sockets[1]; ?> + (.+)/m", $openswoole, $sockets); echo $sockets[1] ?? 'disabled'; ?>
@@ -83,7 +83,7 @@ postgres support
- (.+)/m", $openswoole, $postgres); echo $postgres[1]; ?> + (.+)/m", $openswoole, $postgres); echo $postgres[1] ?? 'disabled'; ?>
diff --git a/web/card-swoole.phtml b/web/card-swoole.phtml index 3038af0..bf11934 100644 --- a/web/card-swoole.phtml +++ b/web/card-swoole.phtml @@ -35,7 +35,7 @@ JSON support
- (.+)/m", $swoole, $json); echo $json[1]; ?> + (.+)/m", $swoole, $json); echo $json[1] ?? 'disabled'; ?>
@@ -43,7 +43,7 @@ HTTP2 support
- (.+)/m", $swoole, $http2); echo $http2[1]; ?> + (.+)/m", $swoole, $http2); echo $http2[1] ?? 'disabled'; ?>
@@ -51,7 +51,7 @@ OpenSSL support
- (.+)/m", $swoole, $openssl); echo $openssl[1]; ?> + (.+)/m", $swoole, $openssl); echo $openssl[1] ?? 'disabled'; ?>
@@ -59,7 +59,7 @@ Native cURL support
- (.+)/m", $swoole, $curl); echo $curl[1]; ?> + (.+)/m", $swoole, $curl); echo $curl[1] ?? 'disabled'; ?>
@@ -67,7 +67,7 @@ mysqlnd support
- (.+)/m", $swoole, $mysqlnd); echo $mysqlnd[1]; ?> + (.+)/m", $swoole, $mysqlnd); echo $mysqlnd[1] ?? 'disabled'; ?>
@@ -75,7 +75,7 @@ sockets support
- (.+)/m", $swoole, $sockets); echo $sockets[1]; ?> + (.+)/m", $swoole, $sockets); echo $sockets[1] ?? 'disabled'; ?>