153 lines
4.9 KiB
YAML
153 lines
4.9 KiB
YAML
name: GKI Kernel Build
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
version:
|
|
required: true
|
|
type: string
|
|
description: >
|
|
Output directory of gki,
|
|
for example: android12-5.10
|
|
version_name:
|
|
required: true
|
|
type: string
|
|
description: >
|
|
With SUBLEVEL of kernel,
|
|
for example: android12-5.10.66
|
|
tag:
|
|
required: true
|
|
type: string
|
|
description: >
|
|
Part of branch name of common kernel manifest,
|
|
for example: android12-5.10-2021-11
|
|
os_patch_level:
|
|
required: false
|
|
type: string
|
|
description: >
|
|
Patch level of common kernel manifest,
|
|
for example: 2021-11
|
|
default: 2022-05
|
|
patch_path:
|
|
required: true
|
|
type: string
|
|
description: >
|
|
Directory name of .github/patches/<patch_path>
|
|
for example: 5.10
|
|
use_cache:
|
|
required: false
|
|
type: boolean
|
|
default: true
|
|
embed_ksud:
|
|
required: false
|
|
type: string
|
|
default: ksud-aarch64-linux-android
|
|
description: >
|
|
Artifact name of prebuilt ksud to be embedded
|
|
for example: ksud-aarch64-linux-android
|
|
secrets:
|
|
BOOT_SIGN_KEY:
|
|
required: false
|
|
CHAT_ID:
|
|
required: false
|
|
CACHE_CHAT_ID:
|
|
required: false
|
|
BOT_TOKEN:
|
|
required: false
|
|
MESSAGE_THREAD_ID:
|
|
required: false
|
|
|
|
jobs:
|
|
build:
|
|
name: Build ${{ inputs.version_name }}
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion"
|
|
CCACHE_NOHASHDIR: "true"
|
|
CCACHE_HARDLINK: "true"
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
path: KernelSU
|
|
fetch-depth: 0
|
|
|
|
- name: Setup need_upload
|
|
id: need_upload
|
|
run: |
|
|
if [ ! -z "${{ secrets.BOT_TOKEN }}" ]; then
|
|
echo "UPLOAD=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "UPLOAD=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- 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-${{ inputs.tag }}
|
|
../git-repo/repo sync -j$(nproc --all)
|
|
|
|
- name: Setup KernelSU
|
|
env:
|
|
PATCH_PATH: ${{ inputs.patch_path }}
|
|
run: |
|
|
cd $GITHUB_WORKSPACE/android-kernel
|
|
echo "[+] KernelSU setup"
|
|
GKI_ROOT=$(pwd)
|
|
echo "[+] GKI_ROOT: $GKI_ROOT"
|
|
echo "[+] Copy KernelSU driver to $GKI_ROOT/common/drivers"
|
|
ln -sf $GITHUB_WORKSPACE/KernelSU/kernel $GKI_ROOT/common/drivers/kernelsu
|
|
echo "[+] Add KernelSU 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
|
|
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: Settup ccache
|
|
if: inputs.use_cache == true
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
with:
|
|
key: gki-kernel-aarch64-${{ inputs.version_name }}
|
|
max-size: 2G
|
|
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
|
|
|
|
- name: Build boot.img
|
|
working-directory: android-kernel
|
|
run: CCACHE="/usr/bin/ccache" LTO=thin BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
|
|
|
|
- name: Prepare artifacts
|
|
id: prepareArtifacts
|
|
run: |
|
|
OUTDIR=android-kernel/out/${{ inputs.version }}/dist
|
|
mkdir output
|
|
cp $OUTDIR/Image ./output/
|
|
cp $OUTDIR/Image.lz4 ./output/
|
|
git clone https://github.com/Kernel-SU/AnyKernel3
|
|
rm -rf ./AnyKernel3/.git
|
|
cp $OUTDIR/Image ./AnyKernel3/
|
|
|
|
- name: Upload Image and Image.gz
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Image-${{ inputs.version_name }}_${{ inputs.os_patch_level }}
|
|
path: ./output/*
|
|
|
|
- name: Upload AnyKernel3
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: AnyKernel3-${{ inputs.version_name }}_${{ inputs.os_patch_level }}
|
|
path: ./AnyKernel3/*
|