action.yml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. name: 'Build Kernel'
  2. description: 'Builds kernel using legacy build.sh or Bazel (kleaf)'
  3. inputs:
  4. bypass:
  5. description: 'Whether to add the bypass hack or not'
  6. required: true
  7. version:
  8. description: 'Kernel config version (e.g., android14-6.1)'
  9. required: true
  10. runs:
  11. using: composite
  12. steps:
  13. - name: 'Activate Bypass'
  14. shell: bash
  15. working-directory: ${{ github.workspace }}/kernel
  16. run: |
  17. set -euo pipefail
  18. if [ "${{ inputs.bypass }}" = "true" ]; then
  19. if [[ ${{ inputs.version }} == "android14-6.1" || ${{ inputs.version }} == "android15-6.6" || ${{ inputs.version }} == "android16-6.12" ]]; then
  20. TARGET_FILE="${{ github.workspace }}/kernel/common/kernel/module/version.c"
  21. else
  22. TARGET_FILE="${{ github.workspace }}/kernel/common/kernel/module.c"
  23. fi
  24. sed -i '/bad_version:/{:a;n;/return 0;/{s/return 0;/return 1;/;b};ba}' "$TARGET_FILE"
  25. if ! grep -A 5 "bad_version:" "$TARGET_FILE" | grep -q "return 1;"; then
  26. echo "Patch failed! 'return 1;' not found at bad_version:"
  27. grep -A 10 "bad_version:" "$TARGET_FILE" || true
  28. exit 1
  29. fi
  30. else
  31. echo "Bypass hack not applied as per input parameter."
  32. fi
  33. - name: Setup Kernel Configs
  34. if: false
  35. uses: ./.github/actions/set-kernel-config
  36. - name: 'Build Kernel'
  37. shell: bash
  38. working-directory: ${{ github.workspace }}/kernel
  39. run: |
  40. sed -i 's/check_defconfig//' ./common/build.config.gki
  41. if [ -f "build/build.sh" ]; then
  42. BUILD_GKI_ARTIFACTS="" \
  43. BUILD_GKI_CERTIFICATION_TOOLS=0 \
  44. BUILD_SYSTEM_DLKM=0 \
  45. SKIP_VENDOR_BOOT=1 \
  46. SKIP_EXT_MODULES=1 \
  47. SKIP_CP_KERNEL_HDR=1 \
  48. OUT_DIR="/home/runner/out" \
  49. LTO=thin \
  50. BUILD_CONFIG=common/build.config.gki.aarch64 \
  51. build/build.sh -j"$(nproc)" \
  52. CC="/usr/bin/ccache clang" \
  53. CXX="/usr/bin/ccache clang+" \
  54. HOSTCC="/usr/bin/ccache clang" \
  55. HOSTCXX="/usr/bin/ccache clang+"
  56. else
  57. if [ "${{ inputs.bypass }}" = "false" ]; then
  58. sed -i '/name = "kernel_aarch64",/a\ check_defconfig = "disabled",' common/BUILD.bazel
  59. fi
  60. tools/bazel build \
  61. --config=fast \
  62. --config=stamp \
  63. --disk_cache=/home/runner/.cache/bazel \
  64. //common:kernel_aarch64/Image
  65. fi
  66. - name: 'Gather Build Artifacts'
  67. shell: bash
  68. working-directory: ${{ github.workspace }}/kernel
  69. run: |
  70. set -euo pipefail
  71. if [ -f "bazel-bin/common/kernel_aarch64/Image" ]; then
  72. echo "Found Image at bazel-bin/common/kernel_aarch64/Image"
  73. if [[ ${{ inputs.bypass }} == "true" ]]; then
  74. cp "bazel-bin/common/kernel_aarch64/Image" "${{ github.workspace }}/AnyKernel3/Bypass-Image"
  75. else
  76. cp "bazel-bin/common/kernel_aarch64/Image" "${{ github.workspace }}/AnyKernel3/Image"
  77. fi
  78. exit 0
  79. fi
  80. if [ -f "/home/runner/out/dist/Image" ]; then
  81. echo "Found Image at /home/runner/out/dist/Image"
  82. if [[ ${{ inputs.bypass }} == "true" ]]; then
  83. cp "/home/runner/out/dist/Image" "${{ github.workspace }}/AnyKernel3/Bypass-Image"
  84. else
  85. cp "/home/runner/out/dist/Image" "${{ github.workspace }}/AnyKernel3/Image"
  86. fi
  87. exit 0
  88. fi
  89. exit 1
  90. - name: 'Patch AnyKernel3 for Bypass Hack'
  91. shell: bash
  92. if: ${{ inputs.bypass == 'true' }}
  93. working-directory: ${{ github.workspace }}/AnyKernel3
  94. run: |
  95. set -euo pipefail
  96. cp ${{ github.action_path }}/patches/bypass.patch "${{ github.workspace }}/AnyKernel3/bypass.patch"
  97. patch -p1 < bypass.patch