Skip to content

Build Nameless OPlus SM8550 Kernel #15

Build Nameless OPlus SM8550 Kernel

Build Nameless OPlus SM8550 Kernel #15

name: Build Nameless OPlus SM8550 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
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: 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 kernel source
run: |
cd $GITHUB_WORKSPACE/kernel_workspace
git clone --recursive https://github.com/chandu078/android_kernel_oneplus_sm8550 -b lineage-22.1 android-kernel --depth=1
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel/scripts
sed -i 's/ -dirty//g' setlocalversion
- name: Setup 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) + 10200)
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 vendor/oplus/salami.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-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-Nameless-Salami-KSU_${{ env.KSUVER }}-${{ env.BUILD_TIME }}
path: kernel_workspace/AnyKernel3/*
- name: Compress AnyKernel3 folder to zip
run: |
cd $GITHUB_WORKSPACE/kernel_workspace/AnyKernel3
zip -r $GITHUB_WORKSPACE/AK3-Nameless-Salami-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: |
caption="\
ROM:<blockquote><b>Nameless-CLO 15</b> - <a href=\"https://t.me/NamelessUpdates/192\">Dec 2024 update</a></blockquote>
Device:<blockquote>OnePlus 11 (Salami)</blockquote>
KernelSU:<blockquote>Official-${{ env.KSUVER }}</blockquote>
Build Time:<blockquote>${{ env.BUILD_TIME_1 }}</blockquote>
Change Log:<blockquote>Waiting for editing...</blockquote>
<a href=\"https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\">Github Action</a>"
media=$(jq -n \
--arg media "attach://file1" \
--arg caption "$caption" \
'{type: "document", media: $media, caption: $caption, parse_mode: "HTML"}')
curl -v "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMediaGroup?chat_id=$TELEGRAM_CHAT_ID" \
-F "media=[$media]" \
-F file1="@$GITHUB_WORKSPACE/AK3-Nameless-Salami-KSU_${{ env.KSUVER }}-${{ env.BUILD_TIME }}.zip"