name: Build Kernel 5.10 on: push: branches: [ "main" ] paths: - '.github/workflows/build-kernel-5.10.yml' - 'kernel/**' pull_request: branches: [ "main" ] paths: - 'kernel/**' jobs: build: strategy: matrix: include: - version: android12-5.10-66 tag: android12-5.10-2021-11 os_version: 12.0.0 os_patch_level: 2021-11 - version: android12-5.10-81 tag: android12-5.10-2022-03 os_version: 12.0.0 os_patch_level: 2022-03 - version: android12-5.10-101 tag: android12-5.10-2022-05 os_version: 12.0.0 os_patch_level: 2022-05 - version: android12-5.10-110 tag: android12-5.10-2022-07 os_version: 12.0.0 os_patch_level: 2022-07 - version: android12-5.10-136 tag: android12-5.10-2022-11 os_version: 12.0.0 os_patch_level: 2022-11 name: Build aarch64-${{ matrix.version }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: path: KernelSU fetch-depth: 0 - name: Setup kernel source run: | cd $GITHUB_WORKSPACE git clone https://gerrit.googlesource.com/git-repo mkdir android-kernel && cd android-kernel ../git-repo/repo init --depth=1 --u https://android.googlesource.com/kernel/manifest -b common-${{ matrix.tag }} ../git-repo/repo sync -j$(nproc --all) curl -Lo gki-kernel.zip https://dl.google.com/android/gki/gki-certified-boot-${{ matrix.tag }}_r1.zip unzip gki-kernel.zip tools/mkbootimg/unpack_bootimg.py --boot_img=$(find . -maxdepth 1 -name "*.img") - name: Setup KernelSU env: PATCH_PATH: "5.10" run: | cd $GITHUB_WORKSPACE/android-kernel echo "[+] KernelSU setup" GKI_ROOT=$(pwd) echo "[+] GKI_ROOT: $GKI_ROOT" echo "[+] Copy kernel su driver to $GKI_ROOT/common/drivers" ln -sf $GITHUB_WORKSPACE/KernelSU/kernel $GKI_ROOT/common/drivers/kernelsu echo "[+] Add kernel su driver to Makefile" DRIVER_MAKEFILE=$GKI_ROOT/common/drivers/Makefile grep -q "kernelsu" $DRIVER_MAKEFILE || echo "obj-y += kernelsu/" >> $DRIVER_MAKEFILE echo "[+] Apply KernelSU patches" cd $GKI_ROOT/common/ && git apply $GITHUB_WORKSPACE/KernelSU/.github/patches/$PATCH_PATH/*.patch cd - echo "[+] KernelSU setup Done." - name: Symbol magic run: | echo "[+] Export all symbol from abi_gki_aarch64.xml" COMMON_ROOT=$GITHUB_WORKSPACE/android-kernel/common KSU_ROOT=$GITHUB_WORKSPACE/KernelSU ABI_XML=$COMMON_ROOT/android/abi_gki_aarch64.xml SYMBOL_LIST=$COMMON_ROOT/android/abi_gki_aarch64 # python3 $KSU_ROOT/scripts/abi_gki_all.py $ABI_XML > $SYMBOL_LIST echo "[+] Add KernelSU symbols" cat $KSU_ROOT/kernel/export_symbol.txt | awk '{sub("[ \t]+","");print " "$0}' >> $SYMBOL_LIST - name: Build boot.img working-directory: android-kernel run: BUILD_BOOT_IMG=1 SKIP_VENDOR_BOOT=1 KERNEL_BINARY=Image GKI_RAMDISK_PREBUILT_BINARY=out/ramdisk AVB_SIGN_BOOT_IMG=1 AVB_BOOT_PARTITION_SIZE=$((64*1024*1024)) AVB_BOOT_ALGORITHM=SHA256_RSA2048 AVB_BOOT_KEY=prebuilts/kernel-build-tools/linux-x86/share/avb/testkey_rsa2048.pem BOOT_IMAGE_HEADER_VERSION=4 LTO=thin BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh - name: Build boot-lz4.img working-directory: android-kernel run: | tools/mkbootimg/mkbootimg.py --header_version 4 --kernel ./out/android12-5.10/dist/Image.lz4 --ramdisk out/ramdisk --output ./out/android12-5.10/dist/boot-lz4.img --os_version ${{ matrix.os_version }} --os_patch_level ${{ matrix.os_patch_level }} ./build/build-tools/path/linux-x86/avbtool add_hash_footer --partition_name boot --partition_size $((64*1024*1024)) --image out/android12-5.10/dist/boot-lz4.img --algorithm SHA256_RSA2048 --key ./prebuilts/kernel-build-tools/linux-x86/share/avb/testkey_rsa2048.pem - name: Build boot-gz.img working-directory: android-kernel run: | cat out/android12-5.10/dist/Image | ./prebuilts/build-tools/path/linux-x86/gzip -n -f -9 > out/android12-5.10/dist/Image.gz tools/mkbootimg/mkbootimg.py --header_version 4 --kernel ./out/android12-5.10/dist/Image.gz --ramdisk out/ramdisk --output ./out/android12-5.10/dist/boot-gz.img --os_version ${{ matrix.os_version }} --os_patch_level ${{ matrix.os_patch_level }} ./build/build-tools/path/linux-x86/avbtool add_hash_footer --partition_name boot --partition_size $((64*1024*1024)) --image out/android12-5.10/dist/boot-gz.img --algorithm SHA256_RSA2048 --key ./prebuilts/kernel-build-tools/linux-x86/share/avb/testkey_rsa2048.pem - name: Upload Image.gz uses: actions/upload-artifact@v3 with: name: kernel-aarch64-${{ matrix.version }}-Image.gz path: android-kernel/out/android12-5.10/dist/Image.gz - name: Upload boot.img uses: actions/upload-artifact@v3 with: name: kernel-aarch64-${{ matrix.version }}-boot.img path: android-kernel/out/android12-5.10/dist/boot.img - name: Upload boot-lz4.img uses: actions/upload-artifact@v3 with: name: kernel-aarch64-${{ matrix.version }}-boot-lz4.img path: android-kernel/out/android12-5.10/dist/boot-lz4.img - name: Upload boot-gz.img uses: actions/upload-artifact@v3 with: name: kernel-aarch64-${{ matrix.version }}-boot-gz.img path: android-kernel/out/android12-5.10/dist/boot-gz.img - name: Setup mutex for uploading if: github.event_name != 'pull_request' uses: ben-z/gh-action-mutex@v1.0-alpha-7 - name: Upload to telegram if: github.event_name != 'pull_request' env: CHAT_ID: ${{ secrets.CHAT_ID }} CACHE_CHAT_ID: ${{ secrets.CACHE_CHAT_ID }} BOT_TOKEN: ${{ secrets.BOT_TOKEN }} MESSAGE_THREAD_ID: ${{ secrets.MESSAGE_THREAD_ID }} COMMIT_MESSAGE: ${{ github.event.head_commit.message }} COMMIT_URL: ${{ github.event.head_commit.url }} RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} TITLE: kernel-aarch64-${{ matrix.version }} run: | if [ ! -z "${{ secrets.BOT_TOKEN }}" ]; then cd $GITHUB_WORKSPACE/KernelSU export VERSION=$(git rev-list --count HEAD) cd - OUTDIR=android-kernel/out/android12-5.10/dist IMAGE_GZ=${{ matrix.version }}-Image.gz BOOT=${{ matrix.version }}-boot.img.zip BOOT_LZ4=${{ matrix.version }}-boot-lz4.img.zip BOOT_GZ=${{ matrix.version }}-boot-gz.img.zip mv $OUTDIR/Image.gz $IMAGE_GZ zip $BOOT -j -r $OUTDIR/boot.img zip $BOOT_LZ4 -j -r $OUTDIR/boot-lz4.img zip $BOOT_GZ -j -r $OUTDIR/boot-gz.img pip3 install python-telegram-bot python3 $GITHUB_WORKSPACE/KernelSU/scripts/ksubot.py $IMAGE_GZ $BOOT $BOOT_LZ4 $BOOT_GZ fi