Ver código fonte

fix(action): enhance Makefile and parse-options.c fixes with additional checks and detailed summaries

TheWildJames 4 meses atrás
pai
commit
4e4a0ab6e3

+ 2 - 4
.github/actions/build-kernel/action.yml

@@ -27,10 +27,8 @@ runs:
       else
         cp "$GITHUB_WORKSPACE/wild_gki.fragment" common/arch/arm64/configs/wild_gki.fragment
         tools/bazel build \
-          --config=release \
-          --notrim \
+          --config=fast \
           --defconfig_fragment=//common:arch/arm64/configs/wild_gki.fragment \
-          --disk_cache=/home/runner/.ld_cache/ \
-          --cache_dir=/home/runner/.cache/bazel \
+          --disk_cache="$BAZEL_DISK_CACHE_DIR" \
           //common:kernel_aarch64
       fi

+ 72 - 17
.github/actions/kernel-fixes/action.yml

@@ -25,8 +25,20 @@ runs:
         GLIBC_VERSION="$(ldd --version 2>/dev/null | head -n 1 | awk '{print $NF}')"
         echo "[INFO] Detected GLIBC version: $GLIBC_VERSION"
         if [ "$(printf '%s\n' "2.38" "$GLIBC_VERSION" | sort -V | head -n 1)" = "2.38" ]; then
-          echo "[INFO] GLIBC >= 2.38, applying Makefile fix."
-          sed -i '/\$(Q)\$(MAKE) -C \$(SUBCMD_SRC) OUTPUT=\$(abspath \$(dir \$@))\/ \$(abspath \$@)/s//$(Q)$(MAKE) -C $(SUBCMD_SRC) EXTRA_CFLAGS="$(CFLAGS)" OUTPUT=$(abspath $(dir $@))\/ $(abspath $@)/' tools/bpf/resolve_btfids/Makefile 2>/dev/null || true
+          echo "[INFO] GLIBC >= 2.38, attempting Makefile fix."
+          # Check if the pattern that needs fixing actually exists
+          if grep -q '\$(Q)\$(MAKE) -C \$(SUBCMD_SRC) OUTPUT=\$(abspath \$(dir \$@))\/ \$(abspath \$@)' tools/bpf/resolve_btfids/Makefile; then
+            echo "[INFO] Found pattern to fix, applying sed."
+            sed -i '/\$(Q)\$(MAKE) -C \$(SUBCMD_SRC) OUTPUT=\$(abspath \$(dir \$@))\/ \$(abspath \$@)/s//$(Q)$(MAKE) -C $(SUBCMD_SRC) EXTRA_CFLAGS="$(CFLAGS)" OUTPUT=$(abspath $(dir $@))\/ $(abspath $@)/' tools/bpf/resolve_btfids/Makefile
+            MAKEFILE_FIXED="true"
+          elif grep -q 'EXTRA_CFLAGS' tools/bpf/resolve_btfids/Makefile; then
+            echo "[INFO] EXTRA_CFLAGS already present, no fix needed."
+            MAKEFILE_FIXED="already_fixed"
+          else
+            echo "[WARN] Neither pattern found in Makefile."
+            MAKEFILE_FIXED="false"
+          fi
+          echo "MAKEFILE_FIXED=$MAKEFILE_FIXED" >> $GITHUB_ENV
           if [[ "${{ inputs.android_version }}" == "android13" && "${{ inputs.kernel_version }}" == "5.10" && "${{ inputs.sublevel }}" -le 186 ]] || \
              [[ "${{ inputs.android_version }}" == "android13" && "${{ inputs.kernel_version }}" == "5.15" && "${{ inputs.sublevel }}" -le 119 ]] || \
              [[ "${{ inputs.android_version }}" == "android14" && "${{ inputs.kernel_version }}" == "5.15" && "${{ inputs.sublevel }}" -le 110 ]]; then
@@ -35,6 +47,9 @@ runs:
             sed -i 's/for (int i = 0; subcommands\[i\]; i++) {/for (i = 0; subcommands[i]; i++) {/' tools/lib/subcmd/parse-options.c 2>/dev/null || true
             sed -i '/if (subcommands) {/a int i;' tools/lib/subcmd/parse-options.c 2>/dev/null || true
             sed -i 's/for (int i = 0; subcommands\[i\]; i++)/for (i = 0; subcommands[i]; i++)/' tools/lib/subcmd/parse-options.c 2>/dev/null || true
+            echo "PARSE_OPTIONS_FIXED=true" >> $GITHUB_ENV
+          else
+            echo "PARSE_OPTIONS_FIXED=false" >> $GITHUB_ENV
           fi
         else
           echo "[SKIP] GLIBC version < 2.38, skipping Makefile fix."
@@ -52,28 +67,67 @@ runs:
         echo "" >> $GITHUB_STEP_SUMMARY
         
         if [ "$(printf '%s\n' "2.38" "$GLIBC_VERSION" | sort -V | head -n 1)" = "2.38" ]; then
-          echo "### Changes Made" >> $GITHUB_STEP_SUMMARY
-          
-          # Check if Makefile was modified
-          if grep -q "EXTRA_CFLAGS" tools/bpf/resolve_btfids/Makefile; then
-            echo "✅ **Makefile Modified**: Added EXTRA_CFLAGS to MAKE command" >> $GITHUB_STEP_SUMMARY
-            echo '```' >> $GITHUB_STEP_SUMMARY
-            grep "EXTRA_CFLAGS" tools/bpf/resolve_btfids/Makefile | head -n 1 >> $GITHUB_STEP_SUMMARY
-            echo '```' >> $GITHUB_STEP_SUMMARY
+          echo "### Makefile Changes" >> $GITHUB_STEP_SUMMARY
+          if [ "$MAKEFILE_FIXED" = "true" ]; then
+            echo "✅ **Makefile Fixed**: Found and replaced pattern with EXTRA_CFLAGS" >> $GITHUB_STEP_SUMMARY
+          elif [ "$MAKEFILE_FIXED" = "already_fixed" ]; then
+            echo "ℹ️ **Makefile Already Fixed**: EXTRA_CFLAGS already present" >> $GITHUB_STEP_SUMMARY
           else
-            echo "⚠️ **Makefile Not Modified**: Pattern not found or sed failed" >> $GITHUB_STEP_SUMMARY
+            echo "❌ **Makefile Not Fixed**: Pattern not found (may not need fixing)" >> $GITHUB_STEP_SUMMARY
           fi
           echo "" >> $GITHUB_STEP_SUMMARY
           
-          # Check parse-options.c changes
-          if grep -q "^int i;" tools/lib/subcmd/parse-options.c; then
-            echo "✅ **parse-options.c Modified**: Added variable declarations and fixed loop syntax" >> $GITHUB_STEP_SUMMARY
+          # Check parse-options.c changes - only report if version conditions match
+          if [[ "${{ inputs.android_version }}" == "android13" && "${{ inputs.kernel_version }}" == "5.10" && "${{ inputs.sublevel }}" -le 186 ]] || \
+             [[ "${{ inputs.android_version }}" == "android13" && "${{ inputs.kernel_version }}" == "5.15" && "${{ inputs.sublevel }}" -le 119 ]] || \
+             [[ "${{ inputs.android_version }}" == "android14" && "${{ inputs.kernel_version }}" == "5.15" && "${{ inputs.sublevel }}" -le 110 ]]; then
+            echo "### parse-options.c Changes" >> $GITHUB_STEP_SUMMARY
+            echo "✅ Version ${{ inputs.android_version }} + kernel ${{ inputs.kernel_version }} (sublevel ${{ inputs.sublevel }}) matched conditions" >> $GITHUB_STEP_SUMMARY
+            echo "- Applied variable declarations and loop syntax fixes to parse-options.c" >> $GITHUB_STEP_SUMMARY
           else
-            echo "⚠️ **parse-options.c Not Modified**: Conditions not met or sed failed" >> $GITHUB_STEP_SUMMARY
+            echo "### parse-options.c Changes" >> $GITHUB_STEP_SUMMARY
+            echo "❌ Version ${{ inputs.android_version }} + kernel ${{ inputs.kernel_version }} (sublevel ${{ inputs.sublevel }}) did not match fix conditions" >> $GITHUB_STEP_SUMMARY
           fi
         else
-          echo "### No Changes" >> $GITHUB_STEP_SUMMARY
-          echo "- GLIBC < 2.38, skipping all fixes" >> $GITHUB_STEP_SUMMARY
+          echo "### No Changes Applied" >> $GITHUB_STEP_SUMMARY
+          echo "- GLIBC < 2.38 detected, skipping all fixes" >> $GITHUB_STEP_SUMMARY
+        fi
+
+    - name: 'Final Kernel Fixes Summary'
+      shell: bash
+      run: |
+        echo "## Final Kernel Fixes Summary" >> $GITHUB_STEP_SUMMARY
+        echo "" >> $GITHUB_STEP_SUMMARY
+        echo "**Kernel Version:** ${{ inputs.android_version }} + ${{ inputs.kernel_version }} (sublevel ${{ inputs.sublevel }})" >> $GITHUB_STEP_SUMMARY
+        echo "" >> $GITHUB_STEP_SUMMARY
+        
+        echo "### ✅ Fixes Applied/Matched" >> $GITHUB_STEP_SUMMARY
+        MATCHED_COUNT=0
+        if [ "$MAKEFILE_FIXED" = "true" ] || [ "$MAKEFILE_FIXED" = "already_fixed" ]; then
+          echo "- Makefile EXTRA_CFLAGS fix" >> $GITHUB_STEP_SUMMARY
+          MATCHED_COUNT=$((MATCHED_COUNT + 1))
+        fi
+        if [ "$PARSE_OPTIONS_FIXED" = "true" ]; then
+          echo "- parse-options.c variable declaration fixes" >> $GITHUB_STEP_SUMMARY
+          MATCHED_COUNT=$((MATCHED_COUNT + 1))
+        fi
+        if [ $MATCHED_COUNT -eq 0 ]; then
+          echo "- *None*" >> $GITHUB_STEP_SUMMARY
+        fi
+        echo "" >> $GITHUB_STEP_SUMMARY
+        
+        echo "### ❌ Fixes Not Applicable" >> $GITHUB_STEP_SUMMARY
+        NOT_MATCHED_COUNT=0
+        if [ "$MAKEFILE_FIXED" = "false" ]; then
+          echo "- Makefile EXTRA_CFLAGS fix (pattern not found)" >> $GITHUB_STEP_SUMMARY
+          NOT_MATCHED_COUNT=$((NOT_MATCHED_COUNT + 1))
+        fi
+        if [ "$PARSE_OPTIONS_FIXED" = "false" ]; then
+          echo "- parse-options.c fixes (version doesn't match conditions)" >> $GITHUB_STEP_SUMMARY
+          NOT_MATCHED_COUNT=$((NOT_MATCHED_COUNT + 1))
+        fi
+        if [ $NOT_MATCHED_COUNT -eq 0 ]; then
+          echo "- *None*" >> $GITHUB_STEP_SUMMARY
         fi
         
     - name: 'Apply mmap.c fix for specific versions'
@@ -98,4 +152,5 @@ runs:
       if: ${{ (inputs.kernel_version == '5.10' && inputs.android_version == 'android12' && inputs.sublevel == 226) || (inputs.kernel_version == '5.10' && inputs.android_version == 'android13' && inputs.sublevel == 223) || (inputs.kernel_version == '5.15' && inputs.android_version == 'android13' && inputs.sublevel == 167)  || (inputs.kernel_version == '5.10' && inputs.android_version == 'android13' && inputs.sublevel == 223) || (inputs.kernel_version == '5.15' && inputs.android_version == 'android14' && inputs.sublevel == 167) }}
       working-directory: ${{ github.workspace }}/kernel/common
       run: |
+        echo "[INFO] Applying mmap.c fix for specific version combo."
         sed -i 's/\s*vm_flags_clear(new_vma, VM_PAD_MASK);/                new_vma->vm_flags \&= ~VM_PAD_MASK;/' mm/mmap.c

+ 2 - 2
.github/actions/susfs/action.yml

@@ -152,7 +152,7 @@ runs:
 
     - name: Apply Android 15 6.6 Fake Patches
       shell: bash
-      if: inputs.kernel_version == '6.6' && inputs.android_version == 'android15'
+      if: inputs.kernel_version == '6.6' && inputs.android_version == 'android15' && false
       working-directory: ${{ github.workspace }}/kernel/common
       run: |
         echo "Applying 6.6 SUSFS fixes"
@@ -258,7 +258,7 @@ runs:
 
     - name: Revert Android 15 6.6 Fake Patches
       shell: bash
-      if: inputs.kernel_version == '6.6' && inputs.android_version == 'android15'
+      if: inputs.kernel_version == '6.6' && inputs.android_version == 'android15' && false
       working-directory: ${{ github.workspace }}/kernel/common
       run: |
         echo "Reverting 6.6 Fake Patches"

+ 116 - 82
.github/workflows/build.yml

@@ -217,91 +217,99 @@ jobs:
     - name: 'Setup ccache and Build Environment'
       shell: bash
       if: true
-      working-directory: ${{ github.workspace }}
+      working-directory: ${{ github.workspace }}/kernel
       run: |
         set -euo pipefail
-        
-        # Download and install ccache
-        echo "Installing ccache..."
-        curl -LfsS --retry 5 --retry-delay 5 --retry-all-errors --connect-timeout 30 --tcp-fastopen -H "User-Agent: Mozilla/5.0" "https://github.com/WildKernels/kernel_patches/raw/refs/heads/main/ccache/ccache-x86-64" -o ccache || { echo "❌ Failed to download ccache"; exit 1; }
-        sudo cp -f ./ccache /usr/bin/ccache || { echo "❌ Failed to install ccache"; exit 1; }
-        sudo chmod +x /usr/bin/ccache
-        rm -f ./ccache
-        
-        # Verify ccache
-        if ! /usr/bin/ccache --version > /dev/null 2>&1; then
-          echo "❌ ccache installation failed or binary is corrupted"
-          exit 1
-        fi
-        echo "✅ ccache binary verified: $(/usr/bin/ccache --version | head -1)"
-        
-        # Setup cache directories
-        export CCACHE_DIR="/home/runner/.ccache"
-        echo "CCACHE_DIR=$CCACHE_DIR" >> $GITHUB_ENV
-        export LDCACHE_DIR="/home/runner/.ld_cache"
-        echo "LDCACHE_DIR=$LDCACHE_DIR" >> $GITHUB_ENV
-        mkdir -p "$CCACHE_DIR" "$LDCACHE_DIR"
-        
-        # Create LD wrapper for thin-LTO caching
-        cat > "$GITHUB_WORKSPACE/kernel/common/ld-wrapper" << 'EOF'
-        #!/bin/bash
-        ld.lld "$@" --thinlto-cache-dir="$LDCACHE_DIR" --thinlto-jobs="$(nproc --all)"
-        EOF
-        chmod +x "$GITHUB_WORKSPACE/kernel/common/ld-wrapper"
-        
-        echo "CC=/usr/bin/ccache clang" >> "$GITHUB_ENV"
-        echo "CXX=/usr/bin/ccache clang++" >> "$GITHUB_ENV"
-        echo "HOSTCC=/usr/bin/ccache clang" >> "$GITHUB_ENV"
-        echo "HOSTCXX=/usr/bin/ccache clang++" >> "$GITHUB_ENV"
-        echo "LD=$GITHUB_WORKSPACE/kernel/common/ld-wrapper" >> "$GITHUB_ENV"
-        echo "HOSTLD=$GITHUB_WORKSPACE/kernel/common/ld-wrapper" >> "$GITHUB_ENV"
-
-        export CCACHE_MAXSIZE="12G"
-        echo CCACHE_MAXSIZE="$CCACHE_MAXSIZE" >> $GITHUB_ENV
-        export CCACHE_COMPILERCHECK="%compiler% -dumpmachine; %compiler% -dumpversion"
-        echo CCACHE_COMPILERCHECK="$CCACHE_COMPILERCHECK" >> $GITHUB_ENV
-        export CCACHE_BASEDIR="${GITHUB_WORKSPACE}"
-        echo CCACHE_BASEDIR="${GITHUB_WORKSPACE}" >> $GITHUB_ENV
-        export CCACHE_NOHASHDIR="true"
-        echo CCACHE_NOHASHDIR="true" >> $GITHUB_ENV
-        export CCACHE_IGNOREOPTIONS="--sysroot*"
-        echo CCACHE_IGNOREOPTIONS="--sysroot*" >> $GITHUB_ENV
-        export CCACHE_COMPRESSION="true"
-        echo CCACHE_COMPRESSION="true" >> $GITHUB_ENV
-        export CCACHE_COMPRESSLEVEL="9"
-        echo CCACHE_COMPRESSION_LEVEL="9" >> $GITHUB_ENV
-        # Temporarily disabled for cache hit testing
-        # export CCACHE_DIRECT="true"
-        # echo CCACHE_DIRECT="true" >> "$GITHUB_ENV"
-        # Temporarily disabled for cache hit testing
-        # export CCACHE_FILE_CLONE="true"
-        # echo CCACHE_FILE_CLONE="true" >> "$GITHUB_ENV"
-        # Temporarily disabled for cache hit testing
-        # export CCACHE_INODE_CACHE="true"
-        # echo CCACHE_INODE_CACHE="true" >> "$GITHUB_ENV"
-        export CCACHE_IS_KERNEL_COMPILING="true"
-        echo CCACHE_IS_KERNEL_COMPILING="true" >> $GITHUB_ENV
-        export CCACHE_UMASK="002"
-        echo CCACHE_UMASK="002" >> $GITHUB_ENV
-        export CCACHE_SLOPPINESS="file_macro,time_macros,include_file_mtime,include_file_ctime,pch_defines,system_headers,locale"
-        echo CCACHE_SLOPPINESS="file_macro,time_macros,include_file_mtime,include_file_ctime,pch_defines,system_headers,locale" >> $GITHUB_ENV
-        #export CCACHE_HARDLINK="true"
-        #echo CCACHE_HARDLINK="$CCACHE_HARDLINK" >> $GITHUB_ENV
-
-        if ccache --help 2>&1 | grep -q 'depend_mode'; then
-          export CCACHE_DEPEND=true
-          echo "CCACHE_DEPEND=true" >> "$GITHUB_ENV"
+        if [ -f "build/build.sh" ]; then
+          # Download and install ccache
+          echo "Installing ccache..."
+          curl -LfsS --retry 5 --retry-delay 5 --retry-all-errors --connect-timeout 30 --tcp-fastopen -H "User-Agent: Mozilla/5.0" "https://github.com/WildKernels/kernel_patches/raw/refs/heads/main/ccache/ccache-x86-64" -o ccache || { echo "❌ Failed to download ccache"; exit 1; }
+          sudo cp -f ./ccache /usr/bin/ccache || { echo "❌ Failed to install ccache"; exit 1; }
+          sudo chmod +x /usr/bin/ccache
+          rm -f ./ccache
+          
+          # Verify ccache
+          if ! /usr/bin/ccache --version > /dev/null 2>&1; then
+            echo "❌ ccache installation failed or binary is corrupted"
+            exit 1
+          fi
+          echo "✅ ccache binary verified: $(/usr/bin/ccache --version | head -1)"
+          
+          # Setup cache directories
+          export CCACHE_DIR="/home/runner/.ccache"
+          echo "CCACHE_DIR=$CCACHE_DIR" >> $GITHUB_ENV
+          export LDCACHE_DIR="/home/runner/.ld_cache"
+          echo "LDCACHE_DIR=$LDCACHE_DIR" >> $GITHUB_ENV
+          mkdir -p "$CCACHE_DIR" "$LDCACHE_DIR"
+          
+          # Create LD wrapper for thin-LTO caching
+          cat > "$GITHUB_WORKSPACE/kernel/common/ld-wrapper" << 'EOF'
+          #!/bin/bash
+          ld.lld "$@" --thinlto-cache-dir="$LDCACHE_DIR" --thinlto-jobs="$(nproc --all)"
+          EOF
+          chmod +x "$GITHUB_WORKSPACE/kernel/common/ld-wrapper"
+          
+          echo "CC=/usr/bin/ccache clang" >> "$GITHUB_ENV"
+          echo "CXX=/usr/bin/ccache clang++" >> "$GITHUB_ENV"
+          echo "HOSTCC=/usr/bin/ccache clang" >> "$GITHUB_ENV"
+          echo "HOSTCXX=/usr/bin/ccache clang++" >> "$GITHUB_ENV"
+          echo "LD=$GITHUB_WORKSPACE/kernel/common/ld-wrapper" >> "$GITHUB_ENV"
+          echo "HOSTLD=$GITHUB_WORKSPACE/kernel/common/ld-wrapper" >> "$GITHUB_ENV"
+
+          export CCACHE_MAXSIZE="12G"
+          echo CCACHE_MAXSIZE="$CCACHE_MAXSIZE" >> $GITHUB_ENV
+          export CCACHE_COMPILERCHECK="%compiler% -dumpmachine; %compiler% -dumpversion"
+          echo CCACHE_COMPILERCHECK="$CCACHE_COMPILERCHECK" >> $GITHUB_ENV
+          export CCACHE_BASEDIR="${GITHUB_WORKSPACE}"
+          echo CCACHE_BASEDIR="${GITHUB_WORKSPACE}" >> $GITHUB_ENV
+          export CCACHE_NOHASHDIR="true"
+          echo CCACHE_NOHASHDIR="true" >> $GITHUB_ENV
+          export CCACHE_IGNOREOPTIONS="--sysroot*"
+          echo CCACHE_IGNOREOPTIONS="--sysroot*" >> $GITHUB_ENV
+          export CCACHE_COMPRESSION="true"
+          echo CCACHE_COMPRESSION="true" >> $GITHUB_ENV
+          export CCACHE_COMPRESSLEVEL="9"
+          echo CCACHE_COMPRESSION_LEVEL="9" >> $GITHUB_ENV
+          # Temporarily disabled for cache hit testing
+          # export CCACHE_DIRECT="true"
+          # echo CCACHE_DIRECT="true" >> "$GITHUB_ENV"
+          # Temporarily disabled for cache hit testing
+          # export CCACHE_FILE_CLONE="true"
+          # echo CCACHE_FILE_CLONE="true" >> "$GITHUB_ENV"
+          # Temporarily disabled for cache hit testing
+          # export CCACHE_INODE_CACHE="true"
+          # echo CCACHE_INODE_CACHE="true" >> "$GITHUB_ENV"
+          export CCACHE_IS_KERNEL_COMPILING="true"
+          echo CCACHE_IS_KERNEL_COMPILING="true" >> $GITHUB_ENV
+          export CCACHE_UMASK="002"
+          echo CCACHE_UMASK="002" >> $GITHUB_ENV
+          export CCACHE_SLOPPINESS="file_macro,time_macros,include_file_mtime,include_file_ctime,pch_defines,system_headers,locale"
+          echo CCACHE_SLOPPINESS="file_macro,time_macros,include_file_mtime,include_file_ctime,pch_defines,system_headers,locale" >> $GITHUB_ENV
+          #export CCACHE_HARDLINK="true"
+          #echo CCACHE_HARDLINK="$CCACHE_HARDLINK" >> $GITHUB_ENV
+
+          if ccache --help 2>&1 | grep -q 'depend_mode'; then
+            export CCACHE_DEPEND=true
+            echo "CCACHE_DEPEND=true" >> "$GITHUB_ENV"
+          fi
+          
+          # Initialize ccache
+          #ccache -M 100G
+          ccache -p
+          ccache -s
+          ccache -z
+          
+          echo "✅ Build environment ready"
+          echo "   CCACHE_DIR: $CCACHE_DIR"
+          echo "   LDCACHE_DIR: $LDCACHE_DIR"
+        else
+          export BAZEL_DISK_CACHE_DIR="/home/runner/.bazel_disk_cache"
+          echo "BAZEL_DISK_CACHE_DIR=$BAZEL_DISK_CACHE_DIR" >> $GITHUB_ENV
+          mkdir -p "$BAZEL_DISK_CACHE_DIR"
+
+          echo "✅ Build environment ready"
+          echo "BAZEL_DISK_CACHE_DIR: $BAZEL_DISK_CACHE_DIR"
         fi
-        
-        # Initialize ccache
-        #ccache -M 100G
-        ccache -p
-        ccache -s
-        ccache -z
-        
-        echo "✅ Build environment ready"
-        echo "   CCACHE_DIR: $CCACHE_DIR"
-        echo "   LDCACHE_DIR: $LDCACHE_DIR"
 
     - name: Restore build caches (ccache)
       id: restore-ccache
@@ -325,6 +333,17 @@ jobs:
         restore_keys: |
           buildcache-
 
+    - name: Restore build caches (bazel disk cache)
+      id: restore-bazel-disk-cache
+      uses: ./.github/actions/restore-cache
+      with:
+        cache_path: /home/runner/.bazel_disk_cache
+        cache_key: buildcache-${{ inputs.kernel_version }}
+        cache_bucket: "bazel-disk-cache"
+        compression_level: 9
+        restore_keys: |
+          buildcache-
+
     - name: Restore build caches (LTO/ld_cache)
       id: restore-ldcache
       uses: ./.github/actions/restore-cache
@@ -369,6 +388,9 @@ jobs:
         echo "=== .ld_cache ==="
         du -sh /home/runner/.ld_cache || true
         ls -l /home/runner/.ld_cache || true
+        echo "=== .bazel_disk_cache ==="
+        du -sh /home/runner/.bazel_disk_cache || true
+        ls -l /home/runner/.bazel_disk_cache || true
 
     - name: Display system disk usage
       run: |
@@ -432,6 +454,9 @@ jobs:
         echo "=== .ld_cache ==="
         du -sh /home/runner/.ld_cache || true
         ls -l /home/runner/.ld_cache || true
+        echo "=== .bazel_disk_cache ==="
+        du -sh /home/runner/.bazel_disk_cache || true
+        ls -l /home/runner/.bazel_disk_cache || true
 
     - name: Save ccache cache
       uses: ./.github/actions/save-cache
@@ -451,6 +476,15 @@ jobs:
         compression_level: 9
         github_token: ${{ secrets.GITHUB_TOKEN }}
 
+    - name: Save bazel disk cache
+      uses: ./.github/actions/save-cache
+      with:
+        cache_path: /home/runner/.bazel_disk_cache
+        cache_key: buildcache-${{ inputs.kernel_version }}
+        cache_bucket: "bazel-disk-cache"
+        compression_level: 9
+        github_token: ${{ secrets.GITHUB_TOKEN }}
+
     - name: Save LTO LD cache
       uses: ./.github/actions/save-cache
       with: