action.yml 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. name: 'Setup Cache'
  2. description: 'Sets up ccache and Bazel remote cache configuration for the build environment'
  3. inputs:
  4. version:
  5. description: 'Kernel config version (e.g., android14-6.1)'
  6. required: true
  7. kernel_version:
  8. description: 'Kernel version (e.g., 6.1)'
  9. required: true
  10. android_version:
  11. description: 'Android version (e.g., android14)'
  12. required: true
  13. sublevel:
  14. description: 'Sublevel of kernel version (e.g., 1)'
  15. required: true
  16. runs:
  17. using: 'composite'
  18. steps:
  19. - name: Setup ccache
  20. shell: bash
  21. if: |
  22. inputs.version == 'android12-5.10' ||
  23. inputs.version == 'android13-5.10' ||
  24. inputs.version == 'android13-5.15'
  25. working-directory: ${{ github.workspace }}
  26. run: |
  27. set -euo pipefail
  28. echo "๐Ÿ” DEBUG: cache-setup action started"
  29. echo "๐Ÿ” DEBUG: inputs.version=${{ inputs.version }}"
  30. echo "๐Ÿ” DEBUG: inputs.kernel_version=${{ inputs.kernel_version }}"
  31. echo "๐Ÿ” DEBUG: inputs.android_version=${{ inputs.android_version }}"
  32. echo "๐Ÿ” DEBUG: inputs.sublevel=${{ inputs.sublevel }}"
  33. echo "๐Ÿ” DEBUG: github.workspace=${{ github.workspace }}"
  34. # Install ccache from shared artifact (downloaded once by prepare-ccache job)
  35. echo "๐Ÿ” DEBUG: Starting ccache installation"
  36. echo "Installing ccache..."
  37. echo "๐Ÿ” DEBUG: Checking for shared ccache artifact at ${{ github.workspace }}/ccache-dl/ccache"
  38. if [ -s "${{ github.workspace }}/ccache-dl/ccache" ]; then
  39. echo "๐Ÿ” DEBUG: Shared ccache artifact found, installing from artifact"
  40. sudo cp -f "${{ github.workspace }}/ccache-dl/ccache" /usr/bin/ccache || { echo "โŒ Failed to install ccache"; exit 1; }
  41. sudo chmod +x /usr/bin/ccache
  42. rm -rf "${{ github.workspace }}/ccache-dl"
  43. echo "โœ… installed custom ccache from shared artifact"
  44. echo "๐Ÿ” DEBUG: Installed ccache from shared artifact"
  45. else
  46. # Fallback: download directly (prepare-ccache may have failed)
  47. echo "๐Ÿ” DEBUG: Shared ccache artifact NOT found, downloading directly"
  48. echo "โš ๏ธ shared ccache artifact unavailable; downloading directly..."
  49. echo "๐Ÿ” DEBUG: Downloading ccache from https://github.com/WildKernels/kernel_patches/raw/refs/heads/main/ccache/ccache-x86-64"
  50. 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; }
  51. echo "๐Ÿ” DEBUG: ccache downloaded successfully"
  52. sudo cp -f ./ccache /usr/bin/ccache || { echo "โŒ Failed to install ccache"; exit 1; }
  53. sudo chmod +x /usr/bin/ccache
  54. rm -f ./ccache
  55. echo "๐Ÿ” DEBUG: Installed ccache from download"
  56. fi
  57. # Verify ccache
  58. echo "๐Ÿ” DEBUG: Verifying ccache installation"
  59. if ! /usr/bin/ccache --version > /dev/null 2>&1; then
  60. echo "๐Ÿ” DEBUG: ccache version check FAILED"
  61. echo "โŒ ccache installation failed or binary is corrupted"
  62. exit 1
  63. fi
  64. echo "๐Ÿ” DEBUG: ccache binary verified successfully"
  65. echo "โœ… ccache binary verified: $(/usr/bin/ccache --version | head -1)"
  66. # Setup cache directories
  67. echo "๐Ÿ” DEBUG: Setting up ccache directories and environment"
  68. export CCACHE_DIR="/home/runner/.ccache"
  69. echo "๐Ÿ” DEBUG: CCACHE_DIR=$CCACHE_DIR"
  70. echo "CCACHE_DIR=$CCACHE_DIR" >> $GITHUB_ENV
  71. mkdir -p "$CCACHE_DIR"
  72. echo "๐Ÿ” DEBUG: Created CCACHE_DIR directory"
  73. echo "๐Ÿ” DEBUG: CCACHE_DIR contents: $(ls -la $CCACHE_DIR 2>/dev/null | head -5 || echo 'empty')"
  74. export CCACHE_MAXSIZE="12G"
  75. echo "๐Ÿ” DEBUG: CCACHE_MAXSIZE=$CCACHE_MAXSIZE"
  76. echo CCACHE_MAXSIZE="$CCACHE_MAXSIZE" >> $GITHUB_ENV
  77. export CCACHE_COMPILERCHECK="content"
  78. echo "๐Ÿ” DEBUG: CCACHE_COMPILERCHECK=$CCACHE_COMPILERCHECK"
  79. echo CCACHE_COMPILERCHECK="$CCACHE_COMPILERCHECK" >> $GITHUB_ENV
  80. export CCACHE_BASEDIR="${{ github.workspace }}"
  81. echo "๐Ÿ” DEBUG: CCACHE_BASEDIR=$CCACHE_BASEDIR"
  82. echo CCACHE_BASEDIR="${{ github.workspace }}" >> $GITHUB_ENV
  83. export CCACHE_NOHASHDIR="true"
  84. echo "๐Ÿ” DEBUG: CCACHE_NOHASHDIR=$CCACHE_NOHASHDIR"
  85. echo CCACHE_NOHASHDIR="true" >> $GITHUB_ENV
  86. export CCACHE_IGNOREOPTIONS="--sysroot*"
  87. echo "๐Ÿ” DEBUG: CCACHE_IGNOREOPTIONS=$CCACHE_IGNOREOPTIONS"
  88. echo CCACHE_IGNOREOPTIONS="--sysroot*" >> $GITHUB_ENV
  89. export CCACHE_COMPRESSION="true"
  90. echo "๐Ÿ” DEBUG: CCACHE_COMPRESSION=$CCACHE_COMPRESSION"
  91. echo CCACHE_COMPRESSION="true" >> $GITHUB_ENV
  92. export CCACHE_COMPRESSLEVEL="3"
  93. echo "๐Ÿ” DEBUG: CCACHE_COMPRESSLEVEL=$CCACHE_COMPRESSLEVEL"
  94. echo CCACHE_COMPRESSION_LEVEL="3" >> $GITHUB_ENV
  95. export CCACHE_DIRECT="true"
  96. echo "๐Ÿ” DEBUG: CCACHE_DIRECT=$CCACHE_DIRECT"
  97. echo CCACHE_DIRECT="true" >> "$GITHUB_ENV"
  98. export CCACHE_FILE_CLONE="true"
  99. echo "๐Ÿ” DEBUG: CCACHE_FILE_CLONE=$CCACHE_FILE_CLONE"
  100. echo CCACHE_FILE_CLONE="true" >> "$GITHUB_ENV"
  101. export CCACHE_INODE_CACHE="true"
  102. echo "๐Ÿ” DEBUG: CCACHE_INODE_CACHE=$CCACHE_INODE_CACHE"
  103. echo CCACHE_INODE_CACHE="true" >> "$GITHUB_ENV"
  104. export CCACHE_IS_KERNEL_COMPILING="true"
  105. echo "๐Ÿ” DEBUG: CCACHE_IS_KERNEL_COMPILING=$CCACHE_IS_KERNEL_COMPILING"
  106. echo CCACHE_IS_KERNEL_COMPILING="true" >> $GITHUB_ENV
  107. export CCACHE_UMASK="002"
  108. echo "๐Ÿ” DEBUG: CCACHE_UMASK=$CCACHE_UMASK"
  109. echo CCACHE_UMASK="002" >> $GITHUB_ENV
  110. export CCACHE_SLOPPINESS="file_macro,time_macros,include_file_mtime,include_file_ctime,pch_defines,system_headers,locale"
  111. echo "๐Ÿ” DEBUG: CCACHE_SLOPPINESS=$CCACHE_SLOPPINESS"
  112. echo CCACHE_SLOPPINESS="file_macro,time_macros,include_file_mtime,include_file_ctime,pch_defines,system_headers,locale" >> $GITHUB_ENV
  113. #export CCACHE_HARDLINK="true"
  114. #echo CCACHE_HARDLINK="$CCACHE_HARDLINK" >> $GITHUB_ENV
  115. echo "๐Ÿ” DEBUG: Checking if depend_mode is available"
  116. if ccache --help 2>&1 | grep -q 'depend_mode'; then
  117. export CCACHE_DEPEND=true
  118. echo "๐Ÿ” DEBUG: depend_mode available, setting CCACHE_DEPEND=true"
  119. echo "CCACHE_DEPEND=true" >> "$GITHUB_ENV"
  120. else
  121. echo "๐Ÿ” DEBUG: depend_mode NOT available"
  122. fi
  123. echo "๐Ÿ” DEBUG: Displaying ccache configuration"
  124. echo "=== ccache config ==="
  125. echo "====================="
  126. ccache -p
  127. echo "====================="
  128. echo "๐Ÿ” DEBUG: ccache config displayed successfully"
  129. echo "โœ… ccache ready"
  130. echo "๐Ÿ” DEBUG: CCACHE_DIR=$CCACHE_DIR"
  131. echo "CCACHE_DIR: $CCACHE_DIR"
  132. echo "๐Ÿ” DEBUG: cache-setup ccache step complete"
  133. - name: Setup Bazel Cache
  134. shell: bash
  135. if: |
  136. inputs.version == 'android14-5.15' ||
  137. inputs.version == 'android14-6.1' ||
  138. inputs.version == 'android15-6.6' ||
  139. inputs.version == 'android16-6.12'
  140. working-directory: ${{ github.workspace }}
  141. run: |
  142. set -euo pipefail
  143. echo "๐Ÿ” DEBUG: Setup Bazel Cache started"
  144. export BAZEL_CACHE_DIR="/home/runner/.cache/bazel"
  145. echo "๐Ÿ” DEBUG: BAZEL_CACHE_DIR=$BAZEL_CACHE_DIR"
  146. mkdir -p "$BAZEL_CACHE_DIR"
  147. echo "๐Ÿ” DEBUG: Created Bazel cache directory"
  148. echo "๐Ÿ” DEBUG: Bazel cache directory contents: $(ls -la $BAZEL_CACHE_DIR 2>/dev/null | head -5 || echo 'empty')"
  149. # Set bazel disk cache size limit to 8GB
  150. #export BAZEL_DISK_CACHE_SIZE="8589934592"
  151. #echo "BAZEL_DISK_CACHE_SIZE=$BAZEL_DISK_CACHE_SIZE" >> $GITHUB_ENV
  152. #echo "โœ… Bazel Cache ready (max 8GB)"
  153. echo "BAZEL_CACHE_DIR: $BAZEL_CACHE_DIR"
  154. echo "๐Ÿ” DEBUG: Setup Bazel Cache complete"
  155. - name: Setup ld cache
  156. shell: bash
  157. working-directory: ${{ github.workspace }}
  158. run: |
  159. set -euo pipefail
  160. echo "๐Ÿ” DEBUG: Setup ld cache started"
  161. export LDCACHE_DIR="/home/runner/.ld_cache"
  162. echo "๐Ÿ” DEBUG: LDCACHE_DIR=$LDCACHE_DIR"
  163. echo "LDCACHE_DIR=$LDCACHE_DIR" >> $GITHUB_ENV
  164. mkdir -p "$LDCACHE_DIR"
  165. echo "๐Ÿ” DEBUG: Created ld cache directory"
  166. echo "๐Ÿ” DEBUG: LDCACHE_DIR contents: $(ls -la $LDCACHE_DIR 2>/dev/null | head -5 || echo 'empty')"
  167. # Create LD wrapper for thin-LTO caching
  168. echo "๐Ÿ” DEBUG: Creating LD wrapper script at ${{ github.workspace }}/kernel/common/ld-wrapper"
  169. cat > "${{ github.workspace }}/kernel/common/ld-wrapper" << 'EOF'
  170. #!/bin/bash
  171. ld.lld "$@" --thinlto-cache-dir="$LDCACHE_DIR" --thinlto-jobs="$(nproc --all)"
  172. EOF
  173. chmod +x "${{ github.workspace }}/kernel/common/ld-wrapper"
  174. echo "๐Ÿ” DEBUG: LD wrapper created and made executable"
  175. # Verify LD wrapper exists
  176. if [ -f "${{ github.workspace }}/kernel/common/ld-wrapper" ]; then
  177. echo "๐Ÿ” DEBUG: LD wrapper verified at ${{ github.workspace }}/kernel/common/ld-wrapper"
  178. echo "๐Ÿ” DEBUG: LD wrapper contents:"
  179. cat "${{ github.workspace }}/kernel/common/ld-wrapper"
  180. else
  181. echo "๐Ÿ” DEBUG: WARNING - LD wrapper not found after creation!"
  182. fi
  183. # Set size limit via environment (4GB)
  184. echo "LDCACHE_MAX_SIZE=4294967296" >> "$GITHUB_ENV"
  185. echo "๐Ÿ” DEBUG: LDCACHE_MAX_SIZE=4294967296 set"
  186. echo "โœ… LD Cache ready (max 4GB)"
  187. echo "๐Ÿ” DEBUG: LDCACHE_DIR=$LDCACHE_DIR"
  188. echo "LDCACHE_DIR: $LDCACHE_DIR"
  189. echo "๐Ÿ” DEBUG: Setup ld cache complete"