| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- name: 'Build Kernel'
- description: 'Builds kernel using legacy build.sh or Bazel (kleaf)'
- inputs:
- bypass:
- description: 'Whether to add the bypass hack or not'
- required: true
- version:
- description: 'Kernel config version (e.g., android14-6.1)'
- required: true
- runs:
- using: composite
- steps:
- - name: 'Build Kernel'
- shell: bash
- working-directory: ${{ github.workspace }}/kernel
- run: |
- set -euo pipefail
- if [ "${{ inputs.bypass }}" = "true" ]; then
- if [[ ${{ inputs.version }} == "android14-6.1" || ${{ inputs.version }} == "android15-6.6" || ${{ inputs.version }} == "android16-6.12" ]]; then
- TARGET_FILE="${{ github.workspace }}/kernel/common/kernel/module/version.c"
- else
- TARGET_FILE="${{ github.workspace }}/kernel/common/kernel/module.c"
- fi
- sed -i '/bad_version:/{:a;n;/return 0;/{s/return 0;/return 1;/;b};ba}' "$TARGET_FILE"
- if ! grep -A 5 "bad_version:" "$TARGET_FILE" | grep -q "return 1;"; then
- echo "Patch failed! 'return 1;' not found at bad_version:"
- grep -A 10 "bad_version:" "$TARGET_FILE" || true
- exit 1
- fi
- else
- echo "Bypass hack not applied as per input parameter."
- fi
-
- rm -rf "out"
- GKI_KCONFIG_FRAGMENT_PATH="${{ github.workspace }}/wild_gki.fragment"
- GKI_DEFCONFIG_WRAPPER_PATH="${{ github.workspace }}/wild_gki.wrap.sh"
- cat > "${GKI_DEFCONFIG_WRAPPER_PATH}" <<EOF
- append_cmd POST_DEFCONFIG_CMDS 'if [ -f "${GKI_KCONFIG_FRAGMENT_PATH}" ]; then \${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -O \${OUT_DIR} \${OUT_DIR}/.config "${GKI_KCONFIG_FRAGMENT_PATH}"; fi && (cd \${KERNEL_DIR} && make O=\${OUT_DIR} olddefconfig)'
- EOF
- # Override expensive GKI build.sh artifact defaults we do not need in CI.
- GKI_BUILD_CONFIG_FRAGMENT_PATH="${{ github.workspace }}/gki_build_overrides.fragment"
- cat > "${GKI_BUILD_CONFIG_FRAGMENT_PATH}" <<'EOF'
- BUILD_GKI_ARTIFACTS=
- BUILD_GKI_CERTIFICATION_TOOLS=0
- BUILD_SYSTEM_DLKM=0
- # Skip heavy packaging steps we don't need in CI
- SKIP_VENDOR_BOOT=1
- SKIP_EXT_MODULES=1
- SKIP_CP_KERNEL_HDR=1
- SKIP_MRPROPER=1
- EOF
- mkdir -p /home/runner/out
- if [ -f "build/build.sh" ]; then
- #SKIP_MRPROPER=1
- OUT_DIR="/home/runner/out" \
- LTO=thin \
- GKI_DEFCONFIG_FRAGMENT="${GKI_DEFCONFIG_WRAPPER_PATH}" \
- GKI_BUILD_CONFIG_FRAGMENT="${GKI_BUILD_CONFIG_FRAGMENT_PATH}" \
- BUILD_CONFIG=common/build.config.gki.aarch64 \
- build/build.sh -j"$(nproc)" \
- CC="/usr/bin/ccache clang" \
- CXX="/usr/bin/ccache clang+" \
- HOSTCC="/usr/bin/ccache clang" \
- HOSTCXX="/usr/bin/ccache clang+" \
- LD="${{ github.workspace }}/kernel/common/ld-wrapper" \
- HOSTLD="${{ github.workspace }}/kernel/common/ld-wrapper"
- else
- tools/bazel info output_base
- cp "${{ github.workspace }}/wild_gki.fragment" common/arch/arm64/configs/wild_gki.fragment
- if [[ ${{ inputs.version }} == "android16-6.12" ]]; then
- tools/bazel run \
- --config=fast \
- --config=stamp \
- --lto=default \
- --defconfig_fragment=//common:arch/arm64/configs/wild_gki.fragment \
- --disk_cache=/home/runner/.cache/bazel \
- //common:kernel_aarch64_dist \
- -- --destdir=/home/runner/out
- else
- tools/bazel run \
- --config=fast \
- --config=stamp \
- --lto=default \
- --defconfig_fragment=//common:arch/arm64/configs/wild_gki.fragment \
- --disk_cache=/home/runner/.cache/bazel \
- //common:kernel_aarch64_dist \
- -- --dist_dir=/home/runner/out
- fi
- #CACHE=/home/runner/.cache/bazel
- #MAX_BYTES=$((12*1024*1024*1024))
- tools/bazel shutdown || true
- #while [ "$(du -sb "$CACHE" | cut -f1 || echo 0)" -gt "$MAX_BYTES" ]; do
- # OLDEST=$(find "$CACHE" -type f -printf '%T@ %p\n' | sort -n | head -n1 | cut -d' ' -f2-)
- # [ -z "$OLDEST" ] && break
- # rm -f "$OLDEST"
- #done
- fi
- echo "Contents of /home/runner/out"
- ls /home/runner/out
- - name: 'Gather Build Artifacts'
- shell: bash
- working-directory: ${{ github.workspace }}
- run: |
- set -euo pipefail
- if [ -f "/home/runner/out/dist/Image" ]; then
- echo "Found Image at /home/runner/out/dist/Image"
- if [[ ${{ inputs.bypass }} == "true" ]]; then
- cp "/home/runner/out/dist/Image" "${{ github.workspace }}/AnyKernel3/Bypass-Image"
- else
- cp "/home/runner/out/dist/Image" "${{ github.workspace }}/AnyKernel3/Image"
- fi
- exit 0
- fi
- if [ -f "/home/runner/out/Image" ]; then
- echo "Found Image at /home/runner/out/Image"
- if [[ ${{ inputs.bypass }} == "true" ]]; then
- cp "/home/runner/out/Image" "${{ github.workspace }}/AnyKernel3/Bypass-Image"
- else
- cp "/home/runner/out/Image" "${{ github.workspace }}/AnyKernel3/Image"
- fi
- exit 0
- fi
- exit 1
- - name: 'Patch AnyKernel3 for Bypass Hack'
- shell: bash
- if: ${{ inputs.bypass == 'true' }}
- working-directory: ${{ github.workspace }}/AnyKernel3
- run: |
- set -euo pipefail
- cp ${{ github.action_path }}/patches/bypass.patch "${{ github.workspace }}/AnyKernel3/bypass.patch"
- patch -p1 < bypass.patch
|