Просмотр исходного кода

fix(action): update working directory and streamline cache setup for kernel build process

TheWildJames 4 месяцев назад
Родитель
Сommit
995599c5d9
1 измененных файлов с 48 добавлено и 20 удалено
  1. 48 20
      .github/actions/build-kernel/action.yml

+ 48 - 20
.github/actions/build-kernel/action.yml

@@ -5,7 +5,7 @@ runs:
   using: composite
   steps:
     - shell: bash
-      working-directory: ${{ github.workspace }}/kernel
+      working-directory: ${{ github.workspace }}
       run: |
         set -euo pipefail
         # Install ccache with ECS by cctv18
@@ -21,14 +21,31 @@ runs:
           exit 1
         fi
         echo "✅ ccache binary verified: $(/usr/bin/ccache --version | head -1)"
-        
-        export CCACHE_DIR="$GITHUB_WORKSPACE/kernel/.ccache"
-        export LDCACHE_DIR="$GITHUB_WORKSPACE/kernel/.ld_cache"
+
+    - name: 'Setup Cache Environment'
+      shell: bash
+      working-directory: ${{ github.workspace }}/kernel/common
+      run: |
+        set -euo pipefail
+        export CCACHE_DIR="$GITHUB_WORKSPACE/kernel/common/.ccache"
+        echo "CCACHE_DIR=$CCACHE_DIR" >> $GITHUB_ENV
+        export LDCACHE_DIR="$GITHUB_WORKSPACE/kernel/common/.ld_cache"
+        echo "LDCACHE_DIR=$LDCACHE_DIR" >> $GITHUB_ENV
+
+        cat > "$GITHUB_WORKSPACE/kernel/common/ld-wrapper" << 'EOF'
+        #!/bin/bash
+        ld.lld "$@" --thinlto-cache-dir="$LDCACHE_DIR" --thinlto-jobs="$(nproc --all)"
+        EOF
+
         export CC="ccache clang"
+        echo "CC=$CC" >> $GITHUB_ENV
         export CXX="ccache clang++"
+        echo "CXX=$CXX" >> $GITHUB_ENV
         export HOSTCC="clang"
+        echo "HOSTCC=$HOSTCC" >> $GITHUB_ENV
         export HOSTCXX="clang++"
-        export CCACHE_MAXSIZE=10G
+        echo "HOSTCXX=$HOSTCXX" >> $GITHUB_ENV
+        #export CCACHE_MAXSIZE=10G
         #export CCACHE_COMPILERCHECK=content
         #export CCACHE_BASEDIR="$GITHUB_WORKSPACE/kernel"
         #export CCACHE_NOHASHDIR=true
@@ -44,32 +61,43 @@ runs:
         #  export CCACHE_DEPEND=true
         #fi
         echo "✅ ccache environment variables set"
-        echo "   CC: $CC"
-        echo "   CXX: $CXX"
+        #echo "   CC: $CC"
+        #echo "   CXX: $CXX"
         echo "📁 Cache directories:"
         echo "   CCACHE_DIR: $CCACHE_DIR"
         echo "   LDCACHE_DIR: $LDCACHE_DIR"
         mkdir -p "$CCACHE_DIR" "$LDCACHE_DIR"
-        /usr/bin/ccache -p
+        ccache -M 100G
+        ccache -p
+        ccache -s
+        ccache -z
 
+    - name: 'Build Kernel'
+      shell: bash
+      working-directory: ${{ github.workspace }}/kernel/common
+      run: |
+        set -euo pipefail
         if [ -f "build/build.sh" ]; then
-          echo "🔨 Building with legacy build.sh (LTO caching to $LDCACHE_DIR)"
-          mkdir -p "$LDCACHE_DIR"
-          # Monitor ccache during build
-          /usr/bin/ccache -z  # Reset stats
-          SKIP_MRPROPER=1 LTO=thin SKIP_VENDOR_BOOT=1 SKIP_EXT_MODULES=1 SKIP_CP_KERNEL_HDR=1 GKI_DEFCONFIG_FRAGMENT="$GITHUB_WORKSPACE/wild_gki.fragment" BUILD_CONFIG=common/build.config.gki.aarch64 CC="ccache clang" CXX="ccache clang++" build/build.sh
-          echo "📊 ccache stats after build:"
-          /usr/bin/ccache -s || true
+          SKIP_MRPROPER=1 \
+          LTO=thin \
+          SKIP_VENDOR_BOOT=1 \
+          SKIP_EXT_MODULES=1 \
+          SKIP_CP_KERNEL_HDR=1 \
+          GKI_DEFCONFIG_FRAGMENT="$GITHUB_WORKSPACE/wild_gki.fragment" \
+          BUILD_CONFIG=common/build.config.gki.aarch64 \
+          CC="ccache clang" \
+          CXX="ccache clang++" \
+          build/build.sh -j"$(nproc)
         else
-          echo "🔨 Building with Bazel/kleaf (LTO caching to $LDCACHE_DIR)"
-          mkdir -p "$LDCACHE_DIR"
           cp "$GITHUB_WORKSPACE/wild_gki.fragment" common/arch/arm64/configs/wild_gki.fragment
-          /usr/bin/ccache -z  # Reset stats
           tools/bazel build --config=release --notrim --defconfig_fragment=//common:arch/arm64/configs/wild_gki.fragment --disk_cache=$LDCACHE_DIR --cache_dir=$GITHUB_WORKSPACE/kernel/.cache/bazel //common:kernel_aarch64
-          echo "📊 ccache stats after build:"
-          /usr/bin/ccache -s || true
         fi
         
+    - name: 'Report Cache Sizes'
+      shell: bash
+      working-directory: ${{ github.workspace }}/kernel/common
+      run: |
+        set -euo pipefail
         echo "📊 Cache sizes after build:"
         echo "   CCACHE usage:"
         du -sh "$CCACHE_DIR" || echo "   (no ccache directory)"