Skip to content

Build kernel (KSN) & WIFI A16 for LineageOS 23.0 with vendor module disables #35

Build kernel (KSN) & WIFI A16 for LineageOS 23.0 with vendor module disables

Build kernel (KSN) & WIFI A16 for LineageOS 23.0 with vendor module disables #35

Workflow file for this run

name: Build kernel (KSN) & WIFI A16 for LineageOS 23.0
on:
workflow_dispatch:
inputs:
kernel_source_url:
description: "URL of the kernel source repository"
required: true
default: "https://github.com/LineageOS/android_kernel_oneplus_sm8150"
kernel_branch:
description: "Branch of the kernel source"
required: true
default: "lineage-23.0"
kernel_defconfig:
description: "defconfig file to use"
required: true
default: "vendor/sm8150_defconfig"
output_name:
description: "Name of the output.zip"
required: false
default: "OP7_KSN_wifi-LOS-A16.zip"
jobs:
build:
runs-on: ubuntu-latest
env:
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion"
CCACHE_NOHASHDIR: "true"
CCACHE_MAXSIZE: "2G"
KERNEL_CMDLINE: "ARCH=arm64 LLVM=1 LLVM_IAS=1 O=out CROSS_COMPILE=aarch64-linux-gnu- CLANG_TRIPLE=aarch64-linux-gnu-"
KERNEL_DEFCONFIG: ${{ github.event.inputs.kernel_defconfig || 'vendor/sm8150_defconfig' }}
KERNEL_SOURCE_URL: ${{ github.event.inputs.kernel_source_url || 'https://github.com/LineageOS/android_kernel_oneplus_sm8150' }}
KERNEL_BRANCH: ${{ github.event.inputs.kernel_branch || 'lineage-23.0' }}
OUTPUT_ZIP_NAME: ${{ github.event.inputs.output_name || 'OP7_KSN_wifi-LOS-A16.zip' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Checkout Kernel Source
run: |
set -euo pipefail
git clone --depth=1 --branch "${KERNEL_BRANCH}" "${KERNEL_SOURCE_URL}" kernel
cd kernel
git submodule update --init --recursive
cd ..
- name: Set up ccache
uses: hendrikmuhs/ccache-action@v1.2
- name: Cleanup space
run: |
set -euo pipefail
sudo rm -rf /opt/ghc /usr/local/share/boost /usr/share/dotnet "$AGENT_TOOLSDIRECTORY" || true
- name: Install dependencies
run: |
set -euo pipefail
sudo apt-get update -y
sudo apt-get install -y \
clang-18 llvm-18 lld-18 gcc-aarch64-linux-gnu \
binutils-aarch64-linux-gnu binutils make python3 libssl-dev \
build-essential bc bison flex unzip git git-lfs
git clone https://github.com/khalidaboelmagd/AnyKernel3
rm -rf AnyKernel3/.git
- name: KernelSU-Next setup
working-directory: kernel
run: |
set -euo pipefail
export PATH="/usr/lib/llvm-18/bin:$PATH"
curl -LSs "https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/next/kernel/setup.sh" | bash -
- name: Prepare kernel config
working-directory: kernel
run: |
set -euo pipefail
export PATH="/usr/lib/llvm-18/bin:$PATH"
mkdir -p out
make O=out ARCH=arm64 ${KERNEL_DEFCONFIG}
# Use a minimal set of overrides. Add more only if needed.
cat > ../ci.defaults <<'EOF'
CONFIG_LOCALVERSION_AUTO=y
EOF
make O=out ARCH=arm64 olddefconfig KCONFIG_ALLCONFIG=../ci.defaults
- name: Build kernel
working-directory: kernel
env:
KBUILD_OUTPUT: out
run: |
set -euo pipefail
export PATH="/usr/lib/llvm-18/bin:$PATH"
export LD_LIBRARY_PATH="/usr/lib/llvm-18/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export DTC_EXT="dtc"
export HOSTCC="clang-18"
export HOSTCXX="clang++-18"
make ${KERNEL_CMDLINE} CC="ccache clang-18" LD="ld.lld-18" AR="llvm-ar-18" NM="llvm-nm-18" OBJCOPY="llvm-objcopy-18" OBJDUMP="llvm-objdump-18" STRIP="llvm-strip-18" -j$(nproc)
test -f out/arch/arm64/boot/Image
cp out/arch/arm64/boot/Image ../AnyKernel3
- name: Build Wi-Fi Module (qca_cld3)
working-directory: kernel
run: |
set -euo pipefail
export PATH="/usr/lib/llvm-18/bin:$PATH"
export LD_LIBRARY_PATH="/usr/lib/llvm-18/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export HOSTCC="clang-18"
export HOSTCXX="clang++-18"
make ${KERNEL_CMDLINE} modules_prepare CC="ccache clang-18"
make ${KERNEL_CMDLINE} CC="ccache clang-18" LD="ld.lld-18" AR="llvm-ar-18" NM="llvm-nm-18" \
OBJCOPY="llvm-objcopy-18" OBJDUMP="llvm-objdump-18" STRIP="llvm-strip-18" \
-j$(nproc) M=drivers/staging/qcacld-3.0 modules
sudo mkdir -p ../modules/vendor/lib/modules
sudo find out/drivers/staging/qcacld-3.0 -name "*.ko" -exec cp -v {} ../modules/vendor/lib/modules/ \;
sudo chown -R "$(id -u)":"$(id -g)" ../modules
- name: Package Kernel and Wi-Fi Modules
run: |
set -euo pipefail
cd AnyKernel3
zip -r ../${OUTPUT_ZIP_NAME}.zip *
cd ../modules
zip -r ../${OUTPUT_ZIP_NAME}-modules.zip *
cd ..
- name: Upload zips
uses: actions/upload-artifact@v4
with:
name: outputs
path: |
${{ env.OUTPUT_ZIP_NAME }}.zip
${{ env.OUTPUT_ZIP_NAME }}-modules.zip
if-no-files-found: error