Commit 7a4da1040b2 for php.net

commit 7a4da1040b207c3022b4a5767a87b40e3bc1c2e4
Author: Ilija Tovilo <ilija.tovilo@me.com>
Date:   Thu Feb 19 17:04:34 2026 +0100

    [CI] Fix ineffective ccache

    Cache on GHA is immutable. For this reason, hendrikmuhs/ccache-action creates a
    new cache entry for each push, each with an appended timestamp, which fills the
    cache very quickly. In an attempt to fix this, we've disabled the
    append-timestamp option and appended a hash of php_version.h. Hence, we'll only
    get a new cache file once this file is touched.

    However, since this file rarely ever updates for master, we're relying on an
    extremely outdated cache. To fix this, append the current year+week to rebuild
    the cache each week instead, as suggested by Tim. Also use major.minor.release
    version instead of the has of php_version.h for readability.

    Fixes GH-14154
    Closes GH-21258

diff --git a/.github/actions/ccache/action.yml b/.github/actions/ccache/action.yml
index fbd8691c927..4b06bc90871 100644
--- a/.github/actions/ccache/action.yml
+++ b/.github/actions/ccache/action.yml
@@ -5,9 +5,26 @@ inputs:
 runs:
   using: composite
   steps:
+    - name: Get cache key
+      shell: bash
+      id: cache_key
+      run: |
+        major=$(cat main/php_version.h | sed -En 's/^#define PHP_MAJOR_VERSION ([0-9]+)/\1/p')
+        minor=$(cat main/php_version.h | sed -En 's/^#define PHP_MINOR_VERSION ([0-9]+)/\1/p')
+        release=$(cat main/php_version.h | sed -En 's/^#define PHP_RELEASE_VERSION ([0-9]+)/\1/p')
+        week=$(date +"%Y-%W")
+        prefix="${{ inputs.name }}-$major.$minor.$release"
+        echo "key=$prefix-$week" >> $GITHUB_OUTPUT
+        echo "prefix=$prefix-" >> $GITHUB_OUTPUT
     - name: ccache
       uses: hendrikmuhs/ccache-action@v1.2
       with:
-        key: "${{ inputs.name }}-${{ hashFiles('main/php_version.h') }}"
+        key: "${{ steps.cache_key.outputs.key }}"
         append-timestamp: false
+        restore-keys: "${{ steps.cache_key.outputs.prefix }}"
         save: ${{ github.event_name != 'pull_request' }}
+    - name: Export CC/CXX
+      shell: bash
+      run: |
+        echo "CC=ccache gcc" >> $GITHUB_ENV
+        echo "CXX=ccache g++" >> $GITHUB_ENV
diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml
index 97d28253f54..c206ba4220b 100644
--- a/.github/workflows/test-suite.yml
+++ b/.github/workflows/test-suite.yml
@@ -72,6 +72,10 @@ jobs:
           echo "::group::Show installed package versions"
           apk list
           echo "::endgroup::"
+      - name: ccache
+        uses: ./.github/actions/ccache
+        with:
+          name: "${{ github.job }}"
       - name: ./configure
         uses: ./.github/actions/configure-alpine
         with:
@@ -392,6 +396,10 @@ jobs:
         uses: ./.github/actions/apt-x64
       - name: Install gcovr
         run: sudo -H pip install gcovr
+      - name: ccache
+        uses: ./.github/actions/ccache
+        with:
+          name: "${{ github.job }}"
       - name: ./configure
         uses: ./.github/actions/configure-x64
         with:
@@ -433,6 +441,10 @@ jobs:
           ref: ${{ fromJson(inputs.branch).ref }}
       - name: apt
         uses: ./.github/actions/apt-x64
+      - name: ccache
+        uses: ./.github/actions/ccache
+        with:
+          name: "COMMUNITY_${{ matrix.type }}"
       - name: ./configure
         uses: ./.github/actions/configure-x64
         with:
@@ -635,6 +647,10 @@ jobs:
         uses: ./.github/actions/setup-mssql
       - name: apt
         uses: ./.github/actions/apt-x64
+      - name: ccache
+        uses: ./.github/actions/ccache
+        with:
+          name: "${{ github.job }}"
       - name: ./configure
         uses: ./.github/actions/configure-x64
         with:
@@ -692,6 +708,10 @@ jobs:
           ref: ${{ fromJson(inputs.branch).ref }}
       - name: apt
         uses: ./.github/actions/apt-x64
+      - name: ccache
+        uses: ./.github/actions/ccache
+        with:
+          name: "${{ github.job }}"
       - name: ./configure
         run: |
           export CC=clang
@@ -806,9 +826,6 @@ jobs:
   PECL:
     if: ${{ fromJson(inputs.branch).jobs.PECL }}
     runs-on: ubuntu-24.04
-    env:
-      CC: ccache gcc
-      CXX: ccache g++
     steps:
       - name: git checkout PHP
         uses: actions/checkout@v6
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 0970975df19..b08d0031aa1 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -29,9 +29,6 @@ permissions:
 concurrency:
   group: ${{ github.workflow }}-${{ github.event.pull_request.url || github.run_id }}
   cancel-in-progress: true
-env:
-  CC: ccache gcc
-  CXX: ccache g++
 jobs:
   GENERATE_MATRIX:
     name: Generate Matrix