Skip to content

Build LineageOS OPlus SM8550 Kernel #12

Build LineageOS OPlus SM8550 Kernel

Build LineageOS OPlus SM8550 Kernel #12

name: Build LineageOS OPlus SM8550 Kernel
on:
workflow_dispatch:
env:
TZ: Asia/Shanghai
jobs:
build:
name: Build Kernel by ${{ github.actor }}
runs-on: ubuntu-latest
env:
CLANG_VERSION: clang-r547379
steps:
- uses: actions/checkout@v4
- name: Set swap to 10G
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 10
- name: Setup build kernel environment
run: |
echo "BUILD_TIME=$(TZ=Asia/Shanghai date "+%y%m%d")" >> $GITHUB_ENV
sudo apt-get update
sudo apt-get install git dwarves libelf-dev ccache automake flex bison build-essential zlib1g-dev libncurses5-dev libc6-dev-i386 bc device-tree-compiler python3 make
mkdir -p $GITHUB_WORKSPACE/kernel_workspace
- name: Cache Clang toolchain
id: cache-clang
uses: actions/cache@v4
with:
path: ${{ github.workspace }}/kernel_workspace/clang-aosp
key: ${{ env.CLANG_VERSION }}
- name: Download & extract Clang-aosp
if: steps.cache-clang.outputs.cache-hit != 'true'
run: |
cd $GITHUB_WORKSPACE/kernel_workspace
mkdir -p clang-aosp
wget -O ${CLANG_VERSION}.tar.gz \
https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+archive/refs/heads/main/${CLANG_VERSION}.tar.gz
tar -C clang-aosp -zxvf ${CLANG_VERSION}.tar.gz
- name: Download kernel source
run: |
cd $GITHUB_WORKSPACE/kernel_workspace
git clone --recursive https://github.com/LineageOS/android_kernel_oneplus_sm8550 -b lineage-23.0 android-kernel --depth=1
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel/scripts
sed -i 's/ -dirty//g' setlocalversion
cd $GITHUB_WORKSPACE/kernel_workspace
git clone --recursive https://github.com/LineageOS/android_kernel_oneplus_sm8550-modules -b lineage-23.0 sm8550-modules --depth=1
sed -i '$a CONFIG_SALAMI_DTB=y' $GITHUB_WORKSPACE/kernel_workspace/android-kernel/arch/arm64/configs/vendor/oplus/kalama_GKI.config
- name: Setup official KernelSU
run: |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -s main
KSU_VERSION=$(cd KernelSU && expr $(/usr/bin/git rev-list --count HEAD) + 20000)
echo "KSUVER=$KSU_VERSION" >> $GITHUB_ENV
- name: Build kernel
run: |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel
LTO=thin
export ARCH=arm64
export SUBARCH=arm64
export HEADER_ARCH=arm64
export PATH=$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/bin:$PATH
export KBUILD_BUILD_HOST=Github-Action
export KBUILD_BUILD_USER=$(echo ${{ github.actor }} | tr A-Z a-z)
AR_CMD="ARCH=${ARCH} SUBARCH=${SUBARCH} HEADER_ARCH=${HEADER_ARCH}"
BA_CMD="CC=clang CXX=clang++"
EX_CMD="LD=ld.lld AR=llvm-ar NM=llvm-nm OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump READELF=llvm-readelf OBJSIZE=llvm-size STRIP=llvm-strip LLVM=1 LLVM_IAS=1"
DEFCONFIG="gki_defconfig vendor/kalama_GKI.config vendor/oplus/kalama_GKI.config vendor/debugfs.config"
make O=out $AR_CMD $BA_CMD $EX_CMD $DEFCONFIG
scripts/config --file out/.config -e LTO_CLANG -d LTO_NONE -e LTO_CLANG_THIN -d LTO_CLANG_FULL -e THINLTO
make -j$(nproc --all) O=out $AR_CMD $BA_CMD $EX_CMD
- name: Check a kernel output files
run: |
cd $GITHUB_WORKSPACE/kernel_workspace
if [ -f android-kernel/out/arch/arm64/boot/Image ]; then
echo "CHECK_IMAGE=true" >> $GITHUB_ENV
else
echo "Kernel output file is empty"
exit 1
fi
- name: Make Anykernel3
if: env.CHECK_IMAGE == 'true'
run: |
cd $GITHUB_WORKSPACE/kernel_workspace
git clone https://github.com/Kernel-SU/AnyKernel3 --depth=1
rm -rf AnyKernel3/.git
cp android-kernel/out/arch/arm64/boot/Image AnyKernel3/
- name: Upload Image
if: env.CHECK_IMAGE == 'true'
uses: actions/upload-artifact@v4
with:
name: Image-Official-KSU_${{ env.KSUVER }}
path: kernel_workspace/android-kernel/out/arch/arm64/boot/Image
- name: Upload AnyKernel3
if: env.CHECK_IMAGE == 'true'
uses: actions/upload-artifact@v4
with:
name: AK3-LineageOS-23.0-Salami-Official-KSU_${{ env.KSUVER }}-${{ env.BUILD_TIME }}
path: kernel_workspace/AnyKernel3/*