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..2e09eca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,37 +1,68 @@ - name: Build extensions on: push: - branches: - - main + branches: [main] + workflow_dispatch: + 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 || 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 }} strategy: + fail-fast: true matrix: stack: - - heroku-20 - - heroku-22 + - name: "heroku-22" + prefix: "dist-heroku-22-develop/" + os: "ubuntu-latest" + - name: "heroku-24" + prefix: "dist-heroku-24-amd64-develop/" + os: "ubuntu-latest" + - name: "heroku-24" + prefix: "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-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 +71,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 ${{ 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 - 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 ${{ 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: | - 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 ${{ 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: | - 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 ${{ 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 e379855..fb5c69f 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,28 @@ jobs: strategy: matrix: stack: - - heroku-20 - - heroku-22 + - 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: heroku-php-extensions + S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }} + S3_REGION: ${{ secrets.S3_REGION || '' }} + S3_PREFIX: ${{ inputs.S3_PREFIX || matrix.stack.develop }} 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 +57,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..656c8db 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -3,178 +3,15 @@ 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: + 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 d7d69d2..df75b2b 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -16,16 +16,27 @@ jobs: strategy: matrix: stack: - - heroku-20 - - heroku-22 + - 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: 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 +45,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 +58,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.stable }} $S3_BUCKET ${{ matrix.stack.develop }} 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..11d7895 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,46 @@ 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) + +### 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` | +| `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 @@ -75,7 +115,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### 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 diff --git a/README.md b/README.md index 62c6676..04c113a 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,14 @@ 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 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 +60,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 +76,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/" ``` +### Versions + +Versions can be added and upgraded in [build.yml](./.github/workflows/build.yml) and will automatically be built and deployed by GitHub actions. 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 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'; ?>