Skip to content

Build LineageOS OPlus SM8150 Kernel #9

Build LineageOS OPlus SM8150 Kernel

Build LineageOS OPlus SM8150 Kernel #9

name: Build LineageOS OPlus SM8150 Kernel
on:
workflow_dispatch:
env:
TZ: Asia/Shanghai
jobs:
build:
name: Build Kernel by ${{ github.actor }}
runs-on: ubuntu-latest
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
echo "BUILD_TIME_1=$(TZ=Asia/Shanghai date "+%Y-%m-%d")" >> $GITHUB_ENV
sudo apt-get update
sudo apt-get install git ccache automake flex lzop bison gperf build-essential zip curl zlib1g-dev g++-multilib bzip2 libbz2-dev liblz4-tool make squashfs-tools dpkg-dev libssl-dev python3 device-tree-compiler bc libc6-dev-i386 libncurses5-dev
mkdir -p $GITHUB_WORKSPACE/kernel_workspace
- name: Download Clang-aosp
run: |
cd $GITHUB_WORKSPACE/kernel_workspace
mkdir clang-aosp
wget https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+archive/refs/heads/main/clang-r522817.tar.gz
tar -C clang-aosp/ -zxvf clang-r522817.tar.gz
- name: Download Gcc-aosp
run: |
cd $GITHUB_WORKSPACE/kernel_workspace
mkdir gcc-64
wget -O gcc-aarch64.tar.gz https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/+archive/refs/tags/android-12.1.0_r27.tar.gz
tar -C gcc-64/ -zxvf gcc-aarch64.tar.gz
- name: Download kernel source
run: |
cd $GITHUB_WORKSPACE/kernel_workspace
git clone --recursive https://github.com/Codecity001/android_kernel_oneplus_sm8150 -b 15-c-ksu android-kernel --depth=1
- name: Build kernel with rsuntk KernelSU
run: |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel
export ARCH=arm64
export SUBARCH=arm64
export BRAND_SHOW_FLAG=oneplus
export PATH=$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/bin:$GITHUB_WORKSPACE/kernel_workspace/gcc-64/bin:$PATH
export KBUILD_BUILD_HOST=Github-Action
export KBUILD_BUILD_USER=$(echo ${{ github.actor }} | tr A-Z a-z)
BA_CMD="CLANG_TRIPLE=aarch64-linux-gnu- CROSS_COMPILE=aarch64-linux-android-"
EX_CMD="LD=ld.lld LLVM=1 LLVM_IAS=1"
DEFCONFIG="lineage_sm8150_defconfig"
make O=out ARCH=arm64 CC=clang $BA_CMD $EX_CMD $DEFCONFIG
make -j$(nproc --all) O=out ARCH=arm64 CC=clang $BA_CMD $EX_CMD
- name: Check a kernel output files with rsuntk KernelSU
run: |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel/out
if [ -f arch/arm64/boot/Image ]; then
echo "CHECK_IMAGE=true" >> $GITHUB_ENV
KERNEL_VERSION=$(cat include/config/kernel.release)
echo "KERNEL_VERSION=$KERNEL_VERSION" >> $GITHUB_ENV
else
echo "Kernel output file is empty"
exit 1
fi
- name: Make AnyKernel3 with rsuntk KernelSU
if: ${{ env.CHECK_IMAGE == 'true' }}
run: |
cd $GITHUB_WORKSPACE/kernel_workspace
git clone https://github.com/osm0sis/AnyKernel3 --depth=1 AnyKernel3
sed -i 's/do.devicecheck=1/do.devicecheck=0/g' AnyKernel3/anykernel.sh
sed -i 's!BLOCK=/dev/block/platform/omap/omap_hsmmc.0/by-name/boot;!BLOCK=auto;!g' AnyKernel3/anykernel.sh
sed -i 's/IS_SLOT_DEVICE=0;/IS_SLOT_DEVICE=auto;/g' AnyKernel3/anykernel.sh
cp android-kernel/out/arch/arm64/boot/Image AnyKernel3/
rm -rf AnyKernel3/.git* AnyKernel3/README.md
- name: Compress AnyKernel3 with official KernelSU folder to zip
if: ${{ env.CHECK_IMAGE == 'true' }}
run: |
cd $GITHUB_WORKSPACE/kernel_workspace/AnyKernel3
zip -r $GITHUB_WORKSPACE/AK3-LineageOS-OPlus-SM8150-Official-KSU_${{ env.KSUVER }}-${{ env.BUILD_TIME }}.zip ./*
- name: Upload Image
if: ${{ env.CHECK_IMAGE == 'true' }}
uses: actions/upload-artifact@v4
with:
name: Image
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_22-OPlus-SM1250-KSU_${{ env.KSUVER }}-${{ env.BUILD_TIME }}
path: kernel_workspace/AnyKernel3/*
- name: Zip files
run: |
zip -r Image.zip $GITHUB_WORKSPACE/kernel_workspace/android-kernel/out/arch/arm64/boot/Image
cd $GITHUB_WORKSPACE/kernel_workspace/AnyKernel3
zip -r $GITHUB_WORKSPACE/AK3-LineageOS_22-OPlus-SM8150-KSU_${{ env.KSUVER }}-${{ env.BUILD_TIME }}.zip ./*
- name: Send AnyKernel3 to Telegram
env:
TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHANNEL_ID }}
run: |
caption2="\
<blockquote><a href=\"https://github.com/rsuntk/KernelSU\"><b>Unofficial KernelSU (rsuntk)</b> - ${{ env.KSUVER }}</a></blockquote>
ROM:<blockquote><b>LineageOS 22</b></blockquote>
Device:<blockquote>OnePlus 8 | OnePlus 8 Pro | OnePlus 8T | OnePlus 9R</blockquote>
Kernel Version:<blockquote>${{ env.KERNEL_VERSION }}</blockquote>
Build Time:<blockquote>${{ env.BUILD_TIME_1 }}</blockquote>
Special Note:
<blockquote>The unofficial version is recommended to install an <a href=\"https://github.com/rsuntk/KernelSU/releases\">unofficial manager</a></blockquote>
Change Log:<blockquote>Test only.</blockquote>
<a href=\"https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\">Github Action</a>"
media=$(jq -n \
--arg media1 "attach://anykernel3" \
--arg media2 "attach://Image" \
--arg caption2 "$caption2" \
'[{type: "document", media: $media1, parse_mode: "HTML"},
{type: "document", media: $media2, caption: $caption2, parse_mode: "HTML"}]')
curl "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMediaGroup?chat_id=$TELEGRAM_CHAT_ID" \
-F "media=$media" \
-F anykernel3="@$GITHUB_WORKSPACE/AK3-LineageOS_22-OPlus-SM8150-KSU_${{ env.KSUVER }}-${{ env.BUILD_TIME }}.zip" \
-F Image="@$GITHUB_WORKSPACE/Image.zip"