From 1468bb99f0d367c6473f8fc46a500d50654684d8 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 14 Jun 2025 02:06:12 +0800 Subject: [PATCH 01/16] Add commit tests {craft} extensions: curl,ast sapi: cli,micro {/craft} --- .github/workflows/commit-tests.yml | 128 +++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 .github/workflows/commit-tests.yml diff --git a/.github/workflows/commit-tests.yml b/.github/workflows/commit-tests.yml new file mode 100644 index 00000000..a99d8631 --- /dev/null +++ b/.github/workflows/commit-tests.yml @@ -0,0 +1,128 @@ +name: Single Test +on: + push: + +permissions: read-all + +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: + parse-commit: + runs-on: ubuntu-latest + outputs: + skip_craft: ${{ steps.parse_commit.outputs.skip_craft }} + craft: ${{ steps.parse_commit.outputs.craft }} + skip_bash: ${{ steps.parse_commit.outputs.skip_bash }} + bash: ${{ steps.parse_commit.outputs.bash }} + build_os: ${{ steps.parse_commit.outputs.build_os }} + spc_prefix: ${{ steps.parse_commit.outputs.spc_prefix }} + steps: + - name: "Parse commit message" + id: parse_commit + run: | + # parse the commit message, see if it has {craft} and {/craft} tags + COMMIT_MESSAGE=$(git log -1 --pretty=%B) + # judge it, it it's not exist, then skip this test + if [[ "$COMMIT_MESSAGE" != *"{craft}"* ]] || [[ "$COMMIT_MESSAGE" != *"{/craft}"* ]]; then + echo "No {craft} tags found in commit message. Skipping test." + echo "skip_craft=yes" >> $GITHUB_OUTPUT + exit 0 + else + echo "\e[32mCraft tags found in commit message.\e[0m" + # get the craft content + CRAFT_CONTENT=$(echo "$COMMIT_MESSAGE" | sed -nz 's/.*{craft}\(.*\){\/craft}.*/\1/p') + echo "Craft content: $CRAFT_CONTENT" + # set the output variable + echo "craft=$CRAFT_CONTENT" >> $GITHUB_OUTPUT + fi + + # parse the bash test script from the commit message + if [[ "$COMMIT_MESSAGE" != *"{bash}"* ]] || [[ "$COMMIT_MESSAGE" != *"{/bash}"* ]]; then + echo "No {bash} tags found in commit message. Skipping bash test." + echo "skip_bash=yes" >> $GITHUB_OUTPUT + else + echo "\e[32mBash tags found in commit message.\e[0m" + # get the bash content + BASH_CONTENT=$(echo "$COMMIT_MESSAGE" | sed -nz 's/.*{bash}\(.*\){\/bash}.*/\1/p') + echo "Bash content: $BASH_CONTENT" + # set the output variable + echo "bash=$BASH_CONTENT" >> $GITHUB_OUTPUT + fi + + # parse spc_prefix from commit message, e.g. [spc_prefix:bin/spc-gnu-docker], default: bin/spc + if [[ "$COMMIT_MESSAGE" =~ \[spc_prefix:([^\]]+)\] ]]; then + SPC_PREFIX=${BASH_REMATCH[1]} + echo "SPC prefix found: $SPC_PREFIX" + else + SPC_PREFIX="bin/spc" + echo "No SPC prefix found, using default: $SPC_PREFIX" + fi + echo "spc_prefix=$SPC_PREFIX" >> $GITHUB_OUTPUT + + # parse build_os from commit message, e.g. [build_os:ubuntu-latest], default: ubuntu-latest + if [[ "$COMMIT_MESSAGE" =~ \[build_os:([^\]]+)\] ]]; then + BUILD_OS=${BASH_REMATCH[1]} + echo "Build OS found: $BUILD_OS" + else + BUILD_OS="ubuntu-latest" + echo "No Build OS found, using default: $BUILD_OS" + fi + echo "build_os=$BUILD_OS" >> $GITHUB_OUTPUT + + craft-test: + needs: parse-commit + if: needs.parse-commit.outputs.skip_craft != 'yes' + runs-on: ${{ needs.parse-commit.outputs.build_os }} + steps: + - name: "Checkout" + uses: actions/checkout@v4 + + - name: "Setup PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: '8.4' + extensions: curl, openssl, mbstring + ini-values: memory_limit=-1 + tools: composer + + - name: "Install Dependencies" + run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + + - name: "Doctor" + run: ${{ needs.parse-commit.outputs.spc_prefix }} doctor --auto-fix --debug + + - name: "Run Craft Test" + run: | + echo "Running craft test with content:" + echo "${{ needs.parse-commit.outputs.craft }}" + echo "${{ needs.parse-commit.outputs.craft }}" > craft.yml + ${{ needs.parse-commit.outputs.spc_prefix }} craft --debug + + bash-test: + needs: parse-commit + if: needs.parse-commit.outputs.skip_bash != 'yes' + runs-on: ${{ needs.parse-commit.outputs.build_os }} + steps: + - name: "Checkout" + uses: actions/checkout@v4 + + - name: "Setup PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: '8.4' + extensions: curl, openssl, mbstring + ini-values: memory_limit=-1 + tools: composer + + - name: "Install Dependencies" + run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + + - name: "Doctor" + run: ${{ needs.parse-commit.outputs.spc_prefix }} doctor --auto-fix --debug + + - name: "Run Bash Test" + run: | + echo "Running bash test with content:" + echo "${{ needs.parse-commit.outputs.bash }}" + echo "${{ needs.parse-commit.outputs.bash }}" | bash From 45ec0cef242a8baea6fbd7564596b9446e1bc426 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 14 Jun 2025 02:20:52 +0800 Subject: [PATCH 02/16] Add checkout {craft} extensions: curl,ast sapi: cli,micro {/craft} --- .github/workflows/commit-tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/commit-tests.yml b/.github/workflows/commit-tests.yml index a99d8631..45a5c391 100644 --- a/.github/workflows/commit-tests.yml +++ b/.github/workflows/commit-tests.yml @@ -18,6 +18,9 @@ jobs: build_os: ${{ steps.parse_commit.outputs.build_os }} spc_prefix: ${{ steps.parse_commit.outputs.spc_prefix }} steps: + - name: "Checkout" + uses: actions/checkout@v4 + - name: "Parse commit message" id: parse_commit run: | From 3a0d21eb44d2a9a79fd81fe44eec4d55f204f51c Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 14 Jun 2025 02:27:48 +0800 Subject: [PATCH 03/16] Support multi-line {craft} extensions: curl,ast sapi: cli,micro {/craft} --- .github/workflows/commit-tests.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/commit-tests.yml b/.github/workflows/commit-tests.yml index 45a5c391..8878fac1 100644 --- a/.github/workflows/commit-tests.yml +++ b/.github/workflows/commit-tests.yml @@ -32,12 +32,14 @@ jobs: echo "skip_craft=yes" >> $GITHUB_OUTPUT exit 0 else - echo "\e[32mCraft tags found in commit message.\e[0m" + echo -e "\e[32mCraft tags found in commit message.\e[0m" # get the craft content CRAFT_CONTENT=$(echo "$COMMIT_MESSAGE" | sed -nz 's/.*{craft}\(.*\){\/craft}.*/\1/p') echo "Craft content: $CRAFT_CONTENT" # set the output variable - echo "craft=$CRAFT_CONTENT" >> $GITHUB_OUTPUT + echo "craft<> $GITHUB_OUTPUT + echo "$CRAFT_CONTENT" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT fi # parse the bash test script from the commit message @@ -45,12 +47,14 @@ jobs: echo "No {bash} tags found in commit message. Skipping bash test." echo "skip_bash=yes" >> $GITHUB_OUTPUT else - echo "\e[32mBash tags found in commit message.\e[0m" + echo -e "\e[32mBash tags found in commit message.\e[0m" # get the bash content BASH_CONTENT=$(echo "$COMMIT_MESSAGE" | sed -nz 's/.*{bash}\(.*\){\/bash}.*/\1/p') echo "Bash content: $BASH_CONTENT" # set the output variable - echo "bash=$BASH_CONTENT" >> $GITHUB_OUTPUT + echo "bash<> $GITHUB_OUTPUT + echo "$BASH_CONTENT" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT fi # parse spc_prefix from commit message, e.g. [spc_prefix:bin/spc-gnu-docker], default: bin/spc From fe455bf9013a69566113b0dde62c1b9054c22d31 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 14 Jun 2025 02:30:00 +0800 Subject: [PATCH 04/16] Fix shared-extensions as optional {craft} extensions: curl,ast sapi: cli,micro {/craft} --- src/SPC/command/CraftCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SPC/command/CraftCommand.php b/src/SPC/command/CraftCommand.php index 8d3cc2be..9a2ac441 100644 --- a/src/SPC/command/CraftCommand.php +++ b/src/SPC/command/CraftCommand.php @@ -49,7 +49,7 @@ class CraftCommand extends BaseCommand } $static_extensions = implode(',', $craft['extensions']); - $shared_extensions = implode(',', $craft['shared-extensions']); + $shared_extensions = implode(',', $craft['shared-extensions'] ?? []); $libs = implode(',', $craft['libs']); // init log From 6253b7a912d2fef9cc679cbea098f56dd754eb4a Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 14 Jun 2025 02:35:37 +0800 Subject: [PATCH 05/16] Next pr, I won't run --- docs/deps-craft-yml.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/deps-craft-yml.md b/docs/deps-craft-yml.md index 9e660be8..1b824e0b 100644 --- a/docs/deps-craft-yml.md +++ b/docs/deps-craft-yml.md @@ -42,6 +42,9 @@ build-options: # Set micro SAPI as win32 mode, without this, micro SAPI will be compiled as a console application (only for Windows, default: false) enable-micro-win32: false +# Build options for shared extensions (same as `build-shared` command options, all options are optional) +shared-extensions: [ ] + # Download options download-options: # Use custom url for specified sources, format: "{source-name}:{url}" (e.g. "php-src:https://example.com/php-8.4.0.tar.gz") From e5cd3adf97ccf74983dc925e367a3dd096553364 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 14 Jun 2025 02:36:47 +0800 Subject: [PATCH 06/16] Next pr, I won't run --- .github/workflows/commit-tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/commit-tests.yml b/.github/workflows/commit-tests.yml index 8878fac1..3b5dbcc7 100644 --- a/.github/workflows/commit-tests.yml +++ b/.github/workflows/commit-tests.yml @@ -10,6 +10,8 @@ env: jobs: parse-commit: runs-on: ubuntu-latest + # if the commit message does not contain {craft} or {bash} tags, then skip the craft-test and bash-test jobs + if: github.event_name == 'push' && (contains(github.event.head_commit.message, '{craft}') || contains(github.event.head_commit.message, '{bash}')) outputs: skip_craft: ${{ steps.parse_commit.outputs.skip_craft }} craft: ${{ steps.parse_commit.outputs.craft }} From 0e88cdb25876b6a274ebaa2a0ff9fe47c768b707 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 14 Jun 2025 13:49:29 +0800 Subject: [PATCH 07/16] Add shared extension parser {craft} extensions: bcmath shared-extensions: xdebug,swoole sapi: cli {/craft} [spc_prefix:bin/spc-gnu-docker] --- docs/deps-craft-yml.md | 2 +- src/SPC/util/ConfigValidator.php | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/deps-craft-yml.md b/docs/deps-craft-yml.md index 1b824e0b..0ee0e11d 100644 --- a/docs/deps-craft-yml.md +++ b/docs/deps-craft-yml.md @@ -42,7 +42,7 @@ build-options: # Set micro SAPI as win32 mode, without this, micro SAPI will be compiled as a console application (only for Windows, default: false) enable-micro-win32: false -# Build options for shared extensions (same as `build-shared` command options, all options are optional) +# Build options for shared extensions (list or comma-separated are both accepted) shared-extensions: [ ] # Download options diff --git a/src/SPC/util/ConfigValidator.php b/src/SPC/util/ConfigValidator.php index eae2ef2b..dbc8ce23 100644 --- a/src/SPC/util/ConfigValidator.php +++ b/src/SPC/util/ConfigValidator.php @@ -164,6 +164,12 @@ class ConfigValidator if (is_string($craft['extensions'])) { $craft['extensions'] = array_filter(array_map(fn ($x) => trim($x), explode(',', $craft['extensions']))); } + if (!isset($craft['shared-extensions'])) { + $craft['shared-extensions'] = []; + } + if (is_string($craft['shared-extensions'] ?? [])) { + $craft['shared-extensions'] = array_filter(array_map(fn ($x) => trim($x), explode(',', $craft['shared-extensions']))); + } // check libs if (isset($craft['libs']) && is_string($craft['libs'])) { $craft['libs'] = array_filter(array_map(fn ($x) => trim($x), explode(',', $craft['libs']))); From 3a64feefd0ade9c3ce611055add2282fe3f99c48 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 18 Jun 2025 11:34:51 +0800 Subject: [PATCH 08/16] Change test strategy for commit tests --- .github/pull_request_template.md | 12 ++- .github/workflows/commit-tests.yml | 137 ------------------------- .github/workflows/ext-matrix-tests.yml | 21 +++- 3 files changed, 24 insertions(+), 146 deletions(-) delete mode 100644 .github/workflows/commit-tests.yml diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index a7166ec2..07e7017b 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -7,7 +7,11 @@ > If your PR involves the changes mentioned below and completed the action, please tick the corresponding option. > If a modification is not involved, please skip it directly. -- [ ] If you modified `*.php`, run `composer cs-fix` at local machine. -- [ ] If it's an extension or dependency update, make sure adding related extensions in `src/global/test-extensions.php`. -- [ ] If you changed the behavior of static-php-cli, update docs in `./docs/`. -- [ ] If you updated `config/xxx.json` content, run `bin/spc dev:sort-config xxx`. +- If you modified `*.php` or `*.json`, run them locally to ensure your changes are valid: + - [ ] `PHP_CS_FIXER_IGNORE_ENV=1 composer cs-fix` + - [ ] `composer analyse` + - [ ] `composer test` + - [ ] `bin/spc dev:sort-config` +- If it's an extension or dependency update, please ensure the following: + - [ ] Add your test combination to `src/globals/test-extensions.php`. + - [ ] If adding new or fixing bugs, add commit message containing `fix` or `test` to trigger full test suite. diff --git a/.github/workflows/commit-tests.yml b/.github/workflows/commit-tests.yml deleted file mode 100644 index 3b5dbcc7..00000000 --- a/.github/workflows/commit-tests.yml +++ /dev/null @@ -1,137 +0,0 @@ -name: Single Test -on: - push: - -permissions: read-all - -env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - -jobs: - parse-commit: - runs-on: ubuntu-latest - # if the commit message does not contain {craft} or {bash} tags, then skip the craft-test and bash-test jobs - if: github.event_name == 'push' && (contains(github.event.head_commit.message, '{craft}') || contains(github.event.head_commit.message, '{bash}')) - outputs: - skip_craft: ${{ steps.parse_commit.outputs.skip_craft }} - craft: ${{ steps.parse_commit.outputs.craft }} - skip_bash: ${{ steps.parse_commit.outputs.skip_bash }} - bash: ${{ steps.parse_commit.outputs.bash }} - build_os: ${{ steps.parse_commit.outputs.build_os }} - spc_prefix: ${{ steps.parse_commit.outputs.spc_prefix }} - steps: - - name: "Checkout" - uses: actions/checkout@v4 - - - name: "Parse commit message" - id: parse_commit - run: | - # parse the commit message, see if it has {craft} and {/craft} tags - COMMIT_MESSAGE=$(git log -1 --pretty=%B) - # judge it, it it's not exist, then skip this test - if [[ "$COMMIT_MESSAGE" != *"{craft}"* ]] || [[ "$COMMIT_MESSAGE" != *"{/craft}"* ]]; then - echo "No {craft} tags found in commit message. Skipping test." - echo "skip_craft=yes" >> $GITHUB_OUTPUT - exit 0 - else - echo -e "\e[32mCraft tags found in commit message.\e[0m" - # get the craft content - CRAFT_CONTENT=$(echo "$COMMIT_MESSAGE" | sed -nz 's/.*{craft}\(.*\){\/craft}.*/\1/p') - echo "Craft content: $CRAFT_CONTENT" - # set the output variable - echo "craft<> $GITHUB_OUTPUT - echo "$CRAFT_CONTENT" >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT - fi - - # parse the bash test script from the commit message - if [[ "$COMMIT_MESSAGE" != *"{bash}"* ]] || [[ "$COMMIT_MESSAGE" != *"{/bash}"* ]]; then - echo "No {bash} tags found in commit message. Skipping bash test." - echo "skip_bash=yes" >> $GITHUB_OUTPUT - else - echo -e "\e[32mBash tags found in commit message.\e[0m" - # get the bash content - BASH_CONTENT=$(echo "$COMMIT_MESSAGE" | sed -nz 's/.*{bash}\(.*\){\/bash}.*/\1/p') - echo "Bash content: $BASH_CONTENT" - # set the output variable - echo "bash<> $GITHUB_OUTPUT - echo "$BASH_CONTENT" >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT - fi - - # parse spc_prefix from commit message, e.g. [spc_prefix:bin/spc-gnu-docker], default: bin/spc - if [[ "$COMMIT_MESSAGE" =~ \[spc_prefix:([^\]]+)\] ]]; then - SPC_PREFIX=${BASH_REMATCH[1]} - echo "SPC prefix found: $SPC_PREFIX" - else - SPC_PREFIX="bin/spc" - echo "No SPC prefix found, using default: $SPC_PREFIX" - fi - echo "spc_prefix=$SPC_PREFIX" >> $GITHUB_OUTPUT - - # parse build_os from commit message, e.g. [build_os:ubuntu-latest], default: ubuntu-latest - if [[ "$COMMIT_MESSAGE" =~ \[build_os:([^\]]+)\] ]]; then - BUILD_OS=${BASH_REMATCH[1]} - echo "Build OS found: $BUILD_OS" - else - BUILD_OS="ubuntu-latest" - echo "No Build OS found, using default: $BUILD_OS" - fi - echo "build_os=$BUILD_OS" >> $GITHUB_OUTPUT - - craft-test: - needs: parse-commit - if: needs.parse-commit.outputs.skip_craft != 'yes' - runs-on: ${{ needs.parse-commit.outputs.build_os }} - steps: - - name: "Checkout" - uses: actions/checkout@v4 - - - name: "Setup PHP" - uses: shivammathur/setup-php@v2 - with: - php-version: '8.4' - extensions: curl, openssl, mbstring - ini-values: memory_limit=-1 - tools: composer - - - name: "Install Dependencies" - run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - - - name: "Doctor" - run: ${{ needs.parse-commit.outputs.spc_prefix }} doctor --auto-fix --debug - - - name: "Run Craft Test" - run: | - echo "Running craft test with content:" - echo "${{ needs.parse-commit.outputs.craft }}" - echo "${{ needs.parse-commit.outputs.craft }}" > craft.yml - ${{ needs.parse-commit.outputs.spc_prefix }} craft --debug - - bash-test: - needs: parse-commit - if: needs.parse-commit.outputs.skip_bash != 'yes' - runs-on: ${{ needs.parse-commit.outputs.build_os }} - steps: - - name: "Checkout" - uses: actions/checkout@v4 - - - name: "Setup PHP" - uses: shivammathur/setup-php@v2 - with: - php-version: '8.4' - extensions: curl, openssl, mbstring - ini-values: memory_limit=-1 - tools: composer - - - name: "Install Dependencies" - run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - - - name: "Doctor" - run: ${{ needs.parse-commit.outputs.spc_prefix }} doctor --auto-fix --debug - - - name: "Run Bash Test" - run: | - echo "Running bash test with content:" - echo "${{ needs.parse-commit.outputs.bash }}" - echo "${{ needs.parse-commit.outputs.bash }}" | bash diff --git a/.github/workflows/ext-matrix-tests.yml b/.github/workflows/ext-matrix-tests.yml index da30d008..dc5de0d9 100644 --- a/.github/workflows/ext-matrix-tests.yml +++ b/.github/workflows/ext-matrix-tests.yml @@ -1,16 +1,27 @@ name: "Extension matrix tests" + +# Only run if: +# - the workflow is manually triggered +# - or a pull request is made to the main branch that modifies this workflow file or commit message contains "fix" or "test" on: - workflow_dispatch: - pull_request: - branches: [ "main" ] - paths: - - '.github/workflows/ext-matrix-tests.yml' + workflow_dispatch: + pull_request: + branches: [ "main" ] + paths: + - '.github/workflows/ext-matrix-tests.yml' + - 'src/**' + - 'config/**' + - 'bin/**' + - 'composer.json' + - 'box.json' + - '.php-cs-fixer.php' jobs: test: name: "${{ matrix.extension }} (PHP ${{ matrix.php-version }} on ${{ matrix.operating-system }})" runs-on: ${{ matrix.operating-system }} + if: contains(github.event.head_commit.message, 'fix') || contains(github.event.head_commit.message, 'test') strategy: fail-fast: false matrix: From 68548cf248ac2f4011c9da0fbe0afbfe3eab7dd0 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 18 Jun 2025 11:42:32 +0800 Subject: [PATCH 09/16] Wrap it to test test test --- .github/workflows/ext-matrix-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ext-matrix-tests.yml b/.github/workflows/ext-matrix-tests.yml index dc5de0d9..ae7388a9 100644 --- a/.github/workflows/ext-matrix-tests.yml +++ b/.github/workflows/ext-matrix-tests.yml @@ -21,7 +21,7 @@ jobs: test: name: "${{ matrix.extension }} (PHP ${{ matrix.php-version }} on ${{ matrix.operating-system }})" runs-on: ${{ matrix.operating-system }} - if: contains(github.event.head_commit.message, 'fix') || contains(github.event.head_commit.message, 'test') + if: ${{ contains(github.event.head_commit.message, 'fix') || contains(github.event.head_commit.message, 'test') }} strategy: fail-fast: false matrix: From 2bfc8e92ef5a5805cadaf0e8d9109b3bb6a39235 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 18 Jun 2025 11:49:42 +0800 Subject: [PATCH 10/16] Test test --- .github/workflows/ext-matrix-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ext-matrix-tests.yml b/.github/workflows/ext-matrix-tests.yml index ae7388a9..7efb6e3b 100644 --- a/.github/workflows/ext-matrix-tests.yml +++ b/.github/workflows/ext-matrix-tests.yml @@ -21,7 +21,7 @@ jobs: test: name: "${{ matrix.extension }} (PHP ${{ matrix.php-version }} on ${{ matrix.operating-system }})" runs-on: ${{ matrix.operating-system }} - if: ${{ contains(github.event.head_commit.message, 'fix') || contains(github.event.head_commit.message, 'test') }} + if: github.event_name == 'push' && (contains(github.event.head_commit.message, 'fix') || contains(github.event.head_commit.message, 'test')) strategy: fail-fast: false matrix: From 5cb107b844322de5cf1b953cf6ab230900dcdf5c Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 18 Jun 2025 11:53:17 +0800 Subject: [PATCH 11/16] Test test --- .github/workflows/ext-matrix-tests.yml | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ext-matrix-tests.yml b/.github/workflows/ext-matrix-tests.yml index 7efb6e3b..ae164094 100644 --- a/.github/workflows/ext-matrix-tests.yml +++ b/.github/workflows/ext-matrix-tests.yml @@ -1,27 +1,14 @@ name: "Extension matrix tests" - -# Only run if: -# - the workflow is manually triggered -# - or a pull request is made to the main branch that modifies this workflow file or commit message contains "fix" or "test" on: - workflow_dispatch: - pull_request: - branches: [ "main" ] - paths: - - '.github/workflows/ext-matrix-tests.yml' - - 'src/**' - - 'config/**' - - 'bin/**' - - 'composer.json' - - 'box.json' - - '.php-cs-fixer.php' + workflow_dispatch: + push: jobs: test: name: "${{ matrix.extension }} (PHP ${{ matrix.php-version }} on ${{ matrix.operating-system }})" runs-on: ${{ matrix.operating-system }} - if: github.event_name == 'push' && (contains(github.event.head_commit.message, 'fix') || contains(github.event.head_commit.message, 'test')) + if: contains(github.event.head_commit.message, 'extension test') strategy: fail-fast: false matrix: From 7057a135cf7db382b225fd2139ecb8a64912622d Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 18 Jun 2025 11:54:10 +0800 Subject: [PATCH 12/16] Trigger extension test --- .github/workflows/ext-matrix-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ext-matrix-tests.yml b/.github/workflows/ext-matrix-tests.yml index ae164094..265c8b2e 100644 --- a/.github/workflows/ext-matrix-tests.yml +++ b/.github/workflows/ext-matrix-tests.yml @@ -1,4 +1,4 @@ -name: "Extension matrix tests" +name: "Extension Matrix Tests" on: workflow_dispatch: From 71783088c05335e58249079f23cf49d19ed90f90 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 18 Jun 2025 11:55:13 +0800 Subject: [PATCH 13/16] Use new trigger test message --- .github/pull_request_template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 07e7017b..c1d4eb16 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -14,4 +14,4 @@ - [ ] `bin/spc dev:sort-config` - If it's an extension or dependency update, please ensure the following: - [ ] Add your test combination to `src/globals/test-extensions.php`. - - [ ] If adding new or fixing bugs, add commit message containing `fix` or `test` to trigger full test suite. + - [ ] If adding new or fixing bugs, add commit message containing `extension test` to trigger full test suite. From 8c6a708764912a7897607a82021f046b23e8725c Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Wed, 18 Jun 2025 12:46:05 +0700 Subject: [PATCH 14/16] ah, the infamous arm64 bug with -fpic vs -fPIC it's a bit slower, but oh well --- config/env.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/env.ini b/config/env.ini index ba8652d5..d6217f5f 100644 --- a/config/env.ini +++ b/config/env.ini @@ -68,8 +68,8 @@ CXX=${SPC_LINUX_DEFAULT_CXX} AR=${SPC_LINUX_DEFAULT_AR} LD=ld.gold ; default compiler flags, used in CMake toolchain file, openssl and pkg-config build -SPC_DEFAULT_C_FLAGS="-fpic -Os" -SPC_DEFAULT_CXX_FLAGS="-fpic -Os" +SPC_DEFAULT_C_FLAGS="-fPIC -Os" +SPC_DEFAULT_CXX_FLAGS="-fPIC -Os" ; extra libs for building php executable, used in `make` command for building php (this value may changed by extension build process, space separated) SPC_EXTRA_LIBS= ; upx executable path @@ -89,7 +89,7 @@ SPC_CMD_VAR_PHP_EMBED_TYPE="static" ; *** default build vars for building php *** ; CFLAGS for configuring php -SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS="${SPC_DEFAULT_C_FLAGS} -fpie" +SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS="${SPC_DEFAULT_C_FLAGS} -fPIE" ; CPPFLAGS for configuring php SPC_CMD_VAR_PHP_CONFIGURE_CPPFLAGS="-I${BUILD_INCLUDE_PATH}" ; LDFLAGS for configuring php @@ -97,7 +97,7 @@ SPC_CMD_VAR_PHP_CONFIGURE_LDFLAGS="-L${BUILD_LIB_PATH}" ; LIBS for configuring php SPC_CMD_VAR_PHP_CONFIGURE_LIBS="-ldl -lpthread -lm" ; EXTRA_CFLAGS for `make` php -SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS="-g -fstack-protector-strong -fno-ident -fpie ${SPC_DEFAULT_C_FLAGS}" +SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS="-g -fstack-protector-strong -fno-ident -fPIE ${SPC_DEFAULT_C_FLAGS}" ; EXTRA_LIBS for `make` php SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBS="-ldl -lpthread -lm" ; EXTRA_LDFLAGS for `make` php, can use -release to set a soname for libphp.so From b4168d09b562e33138b82f3f9a5a6929b0993c27 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 18 Jun 2025 14:06:36 +0800 Subject: [PATCH 15/16] Add test extensions as trigger --- .github/workflows/ext-matrix-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ext-matrix-tests.yml b/.github/workflows/ext-matrix-tests.yml index 265c8b2e..1c04f5c9 100644 --- a/.github/workflows/ext-matrix-tests.yml +++ b/.github/workflows/ext-matrix-tests.yml @@ -8,7 +8,7 @@ jobs: test: name: "${{ matrix.extension }} (PHP ${{ matrix.php-version }} on ${{ matrix.operating-system }})" runs-on: ${{ matrix.operating-system }} - if: contains(github.event.head_commit.message, 'extension test') + if: contains(github.event.head_commit.message, 'extension test') || contains(github.event.head_commit.message, 'test extensions') strategy: fail-fast: false matrix: From f7a3f80689ce39906f50d021fce62be0260b36ee Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 18 Jun 2025 14:06:59 +0800 Subject: [PATCH 16/16] Add test extensions as trigger --- .github/pull_request_template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index c1d4eb16..13441a81 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -14,4 +14,4 @@ - [ ] `bin/spc dev:sort-config` - If it's an extension or dependency update, please ensure the following: - [ ] Add your test combination to `src/globals/test-extensions.php`. - - [ ] If adding new or fixing bugs, add commit message containing `extension test` to trigger full test suite. + - [ ] If adding new or fixing bugs, add commit message containing `extension test` or `test extensions` to trigger full test suite.