Build kernel (KSN) & WIFI A16 for LineageOS 23.0 with vendor module disables #27
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build kernel (KSN) & WIFI A16 | |
| 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-22.1" | |
| kernel_defconfig: | |
| description: "defconfig file to use" | |
| required: true | |
| default: "lineage_sm8150_defconfig" | |
| output_name: | |
| description: "Name of the output.zip" | |
| required: false | |
| default: "OP7_KSN_wifi" | |
| push: | |
| branches: | |
| - oneplus/OOS_SM8150_11.0 | |
| pull_request: | |
| branches: | |
| - oneplus/OOS_SM8150_11.0 | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| env: | |
| CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion" | |
| CCACHE_NOHASHDIR: "true" | |
| CCACHE_MAXSIZE: "2G" | |
| CCACHE_HARDLINK: "true" | |
| KERNEL_CMDLINE: "ARCH=arm64 LLVM=1 LLVM_IAS=1 O=out CROSS_COMPILE=aarch64-linux-gnu- CROSS_COMPILE_ARM32=arm-linux-gnueabi- CLANG_TRIPLE=aarch64-linux-gnu-" | |
| KERNEL_DEFCONFIG: ${{ github.event.inputs.kernel_defconfig || 'lineage_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-22.1' }} | |
| OUTPUT_ZIP_NAME: ${{ github.event.inputs.output_name || 'OP7_KSN_wifi' }} | |
| 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 || true | |
| sudo rm -rf "/usr/local/share/boost" || true | |
| sudo rm -rf /usr/share/dotnet || true | |
| sudo rm -rf "$AGENT_TOOLSDIRECTORY" || true | |
| - name: Install dependencies (LLVM 18 + cross-binutils) | |
| run: | | |
| set -euo pipefail | |
| sudo apt-get update -y | |
| sudo apt-get install -y \ | |
| clang-18 llvm-18 lld-18 \ | |
| gcc-aarch64-linux-gnu gcc-arm-linux-gnueabi \ | |
| binutils-aarch64-linux-gnu binutils \ | |
| make python3 libssl-dev build-essential bc bison flex unzip \ | |
| ca-certificates xz-utils mkbootimg cpio device-tree-compiler git git-lfs | |
| git clone https://github.com/khalidaboelmagd/AnyKernel3 | |
| rm -rf AnyKernel3/.git | |
| - name: Get Version | |
| id: get_version | |
| run: | | |
| set -euo pipefail | |
| cd kernel | |
| git fetch --unshallow || true | |
| COUNT="$(git rev-list --count HEAD || echo 0)" | |
| echo "VERSION=$((COUNT + 10200))" >> "$GITHUB_OUTPUT" | |
| cd .. | |
| - 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 - | |
| # MM fixes for hugetlb/THP | |
| - name: Apply hugetlbpage fix patch | |
| working-directory: kernel | |
| run: | | |
| set -euo pipefail | |
| if ! grep -q 'pte_t \*ptep' arch/arm64/mm/hugetlbpage.c; then | |
| sed -i '/pte_t \*pte = NULL;/a \ pte_t *ptep = NULL;' arch/arm64/mm/hugetlbpage.c || true | |
| fi | |
| sed -i 's/ptep = huge_pmd_share(mm, vma, addr, pud);/if (!ptep) ptep = huge_pmd_share(mm, vma, addr, pud);/' arch/arm64/mm/hugetlbpage.c | |
| - name: Apply huge_memory try_to_unmap shim | |
| working-directory: kernel | |
| run: | | |
| set -euo pipefail | |
| sed -i 's/try_to_unmap(page, ttu_flags);/try_to_unmap(page, ttu_flags, NULL);/g' mm/huge_memory.c 2>/dev/null || true | |
| sed -i 's/try_to_unmap(\s*page\s*,\s*ttu_flags\s*)/try_to_unmap(page, ttu_flags, NULL)/g' mm/huge_memory.c 2>/dev/null || true | |
| - name: Fix split_huge_pmd call order | |
| working-directory: kernel | |
| run: | | |
| set -euo pipefail | |
| sed -Ei 's/split_huge_pmd\(([[:space:]]*)vma([[:space:]]*),([[:space:]]*)addr([[:space:]]*),([[:space:]]*)pmd([[:space:]]*)\);/split_huge_pmd(vma, pmd, addr);/g' fs/proc/task_mmu.c || true | |
| - name: Neutralize mm->nr_ptes in khugepaged | |
| working-directory: kernel | |
| run: | | |
| set -euo pipefail | |
| sed -i 's/atomic_long_dec(&mm->nr_ptes);/\/\* compat: mm->nr_ptes removed \*\/ do {} while (0);/' mm/khugepaged.c || true | |
| # Blackhole unwanted Kbuild and Makefile in important directories | |
| - name: Hard-blackhole unwanted Kbuild subtrees (CLK and NET) | |
| working-directory: kernel | |
| run: | | |
| set -euo pipefail | |
| disable_dir() { | |
| local d="$1" | |
| if [ -d "$d" ]; then | |
| if [ -f "$d/Makefile" ]; then | |
| mv -f "$d/Makefile" "$d/Makefile.bak" || true | |
| fi | |
| if [ -f "$d/Kbuild" ]; then | |
| mv -f "$d/Kbuild" "$d/Kbuild.bak" || true | |
| fi | |
| echo -e '# disabled in CI for sm8150\nobj-y :=\nobj-m :=' > "$d/Makefile" | |
| chmod 644 "$d/Makefile" | |
| echo "[CI] Blackholed $d" | |
| else | |
| echo "[CI WARNING] Directory $d not found" | |
| fi | |
| } | |
| disable_dir drivers/clk/bcm | |
| disable_dir drivers/clk/berlin | |
| disable_dir drivers/clk/hisilicon | |
| disable_dir net/ipv6 | |
| disable_dir net/bridge | |
| disable_dir net/8021q | |
| disable_dir net/bluetooth | |
| disable_dir net/9p | |
| disable_dir net/netfilter | |
| disable_dir net/mac80211 | |
| disable_dir net/llc | |
| - name: Defensive seg6 header shim (IPv6 off) | |
| working-directory: kernel | |
| run: | | |
| set -euo pipefail | |
| hdr="include/net/seg6.h" | |
| if [ -f "$hdr" ] && grep -q 'return net->ipv6.seg6_data;' "$hdr"; then | |
| sed -i 's|return net->ipv6.seg6_data;|#ifdef CONFIG_IPV6\nreturn net->ipv6.seg6_data;\n#else\nreturn NULL;\n#endif|' "$hdr" | |
| echo "[CI] Patched $hdr to tolerate CONFIG_IPV6=n" | |
| fi | |
| if [ -f net/core/filter.c ] && grep -q '^#include <net/seg6.h>' net/core/filter.c; then | |
| sed -i 's|#include <net/seg6.h>|#if IS_ENABLED(CONFIG_IPV6_SEG6_BPF)\n#include <net/seg6.h>\n#endif|' net/core/filter.c | |
| fi | |
| # Filter NFS/LOCKD/SUNRPC from fs | |
| - name: Filter NFS/LOCKD/SUNRPC from fs/Makefile | |
| working-directory: kernel | |
| run: | | |
| set -euo pipefail | |
| if ! grep -q 'CI filter: prevent NFS' fs/Makefile; then | |
| { | |
| echo '' | |
| echo '# CI filter: prevent NFS/LOCKD/SUNRPC from building regardless of Kconfig' | |
| echo 'subdir-y := $(filter-out nfs lockd nfs_common sunrpc,$(subdir-y))' | |
| echo 'subdir-m := $(filter-out nfs lockd nfs_common sunrpc,$(subdir-m))' | |
| } >> fs/Makefile | |
| fi | |
| # Filter ACPI dir from drivers/Makefile | |
| - name: Filter ACPI dir from drivers/Makefile | |
| working-directory: kernel | |
| run: | | |
| set -euo pipefail | |
| if ! grep -q 'CI filter: prevent ACPI' drivers/Makefile; then | |
| { | |
| echo '' | |
| echo '# CI filter: prevent ACPI from building on DT/arm64 Android' | |
| echo 'subdir-y := $(filter-out acpi,$(subdir-y))' | |
| echo 'subdir-m := $(filter-out acpi,$(subdir-m))' | |
| } >> drivers/Makefile | |
| fi | |
| # Prepare defconfig | |
| - name: Prepare kernel output directory (defconfig) | |
| working-directory: kernel | |
| run: | | |
| set -euo pipefail | |
| export PATH="/usr/lib/llvm-18/bin:$PATH" | |
| export HOSTCC="clang-18" | |
| export HOSTCXX="clang++-18" | |
| mkdir -p out | |
| make O=out ARCH=arm64 ${KERNEL_DEFCONFIG} | |
| # Non-interactive config finalize and enforcement | |
| - name: Finalize kernel config (non-interactive + enforce) | |
| working-directory: kernel | |
| run: | | |
| set -euo pipefail | |
| export PATH="/usr/lib/llvm-18/bin:$PATH" | |
| cat > ../ci.defaults <<'EOF' | |
| CONFIG_QTI_GVM=n | |
| CONFIG_NR_CPUS=8 | |
| CONFIG_HUGETLB_PAGE=n | |
| CONFIG_HUGETLBFS=n | |
| CONFIG_TRANSPARENT_HUGEPAGE=n | |
| CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=n | |
| CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=n | |
| CONFIG_KSM=n | |
| CONFIG_BTRFS_FS=n | |
| CONFIG_BTRFS_FS_POSIX_ACL=n | |
| CONFIG_TASKSTATS=n | |
| CONFIG_TASK_DELAY_ACCT=n | |
| CONFIG_TASK_XACCT=n | |
| CONFIG_TASK_IO_ACCOUNTING=n | |
| CONFIG_NFS_FS=n | |
| CONFIG_NFS_V4=n | |
| CONFIG_LOCKD=n | |
| CONFIG_SUNRPC=n | |
| CONFIG_IPV6=n | |
| CONFIG_IPV6_SEG6_LWTUNNEL=n | |
| CONFIG_IPV6_SEG6_BPF=n | |
| CONFIG_BPF_SYSCALL=n | |
| CONFIG_BPF_JIT=n | |
| CONFIG_NETFILTER=n | |
| CONFIG_NETFILTER_ADVANCED=n | |
| CONFIG_NETFILTER_XTABLES=n | |
| CONFIG_XDP_SOCKETS=n | |
| CONFIG_NET_CLS_BPF=n | |
| CONFIG_NET_ACT_BPF=n | |
| CONFIG_MAC80211=n | |
| CONFIG_BT=n | |
| CONFIG_VLAN_8021Q=n | |
| CONFIG_NET_9P=n | |
| CONFIG_9P_FS=n | |
| CONFIG_COMMON_CLK_BCM=n | |
| CONFIG_CLK_BCM_IPROC=n | |
| CONFIG_CLK_BCM2835=n | |
| CONFIG_COMMON_CLK_HI3660=n | |
| CONFIG_COMMON_CLK_HI3670=n | |
| CONFIG_COMMON_CLK_HI6220=n | |
| CONFIG_ACPI=n | |
| CONFIG_ACPI_EC=n | |
| CONFIG_ACPI_LPSS=n | |
| CONFIG_ACPI_APEI=n | |
| CONFIG_ACPI_APD=n | |
| CONFIG_ACPI_PCI_SLOT=n | |
| CONFIG_ACPI_PCI_ROOT=n | |
| CONFIG_PCI_QUIRKS=n | |
| CONFIG_PCIEAER=n | |
| CONFIG_PCIEPORTBUS=n | |
| CONFIG_COMPILE_TEST=n | |
| CONFIG_LOCALVERSION="" | |
| CONFIG_LOCALVERSION_AUTO=y | |
| CONFIG_KERNEL_GZIP=y | |
| CONFIG_KERNEL_BZIP2=n | |
| CONFIG_KERNEL_LZMA=n | |
| CONFIG_KERNEL_XZ=n | |
| CONFIG_KERNEL_LZO=n | |
| CONFIG_KERNEL_LZ4=n | |
| CONFIG_CROSS_COMPILE="aarch64-linux-gnu-" | |
| EOF | |
| make O=out ARCH=arm64 olddefconfig KCONFIG_ALLCONFIG=../ci.defaults | |
| if [ -x scripts/config ]; then | |
| ./scripts/config --file out/.config \ | |
| --disable CONFIG_QTI_GVM --set-val CONFIG_NR_CPUS 8 \ | |
| --disable CONFIG_HUGETLB_PAGE --disable CONFIG_HUGETLBFS \ | |
| --disable CONFIG_TRANSPARENT_HUGEPAGE --disable CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS --disable CONFIG_TRANSPARENT_HUGEPAGE_MADVISE \ | |
| --disable CONFIG_KSM \ | |
| --disable CONFIG_BTRFS_FS --disable CONFIG_BTRFS_FS_POSIX_ACL \ | |
| --disable CONFIG_TASKSTATS --disable CONFIG_TASK_DELAY_ACCT --disable CONFIG_TASK_XACCT --disable CONFIG_TASK_IO_ACCOUNTING \ | |
| --disable CONFIG_NFS_FS --disable CONFIG_NFS_V4 --disable CONFIG_LOCKD --disable CONFIG_SUNRPC \ | |
| --disable CONFIG_IPV6 --disable CONFIG_IPV6_SEG6_LWTUNNEL --disable CONFIG_IPV6_SEG6_BPF \ | |
| --disable CONFIG_BPF_SYSCALL --disable CONFIG_BPF_JIT \ | |
| --disable CONFIG_NETFILTER --disable CONFIG_NETFILTER_ADVANCED --disable CONFIG_NETFILTER_XTABLES \ | |
| --disable CONFIG_XDP_SOCKETS --disable CONFIG_NET_CLS_BPF --disable CONFIG_NET_ACT_BPF \ | |
| --disable CONFIG_MAC80211 --disable CONFIG_BT --disable CONFIG_VLAN_8021Q \ | |
| --disable CONFIG_NET_9P --disable CONFIG_9P_FS \ | |
| --disable CONFIG_COMMON_CLK_BCM --disable CONFIG_CLK_BCM_IPROC --disable CONFIG_CLK_BCM2835 \ | |
| --disable CONFIG_COMMON_CLK_HI3660 --disable CONFIG_COMMON_CLK_HI3670 --disable CONFIG_COMMON_CLK_HI6220 \ | |
| --disable CONFIG_ACPI --disable CONFIG_ACPI_EC --disable CONFIG_ACPI_LPSS --disable CONFIG_ACPI_APEI --disable CONFIG_ACPI_APD --disable CONFIG_ACPI_PCI_SLOT --disable CONFIG_ACPI_PCI_ROOT \ | |
| --disable CONFIG_PCI_QUIRKS --disable CONFIG_PCIEAER --disable CONFIG_PCIEPORTBUS \ | |
| --disable CONFIG_COMPILE_TEST \ | |
| --set-str CONFIG_LOCALVERSION "" --enable CONFIG_LOCALVERSION_AUTO \ | |
| --enable CONFIG_KERNEL_GZIP \ | |
| --disable CONFIG_KERNEL_BZIP2 --disable CONFIG_KERNEL_LZMA --disable CONFIG_KERNEL_XZ --disable CONFIG_KERNEL_LZO --disable CONFIG_KERNEL_LZ4 || true | |
| fi | |
| for s in CONFIG_BTRFS_FS CONFIG_BTRFS_FS_POSIX_ACL CONFIG_TASKSTATS CONFIG_TASK_DELAY_ACCT CONFIG_TASK_XACCT CONFIG_TASK_IO_ACCOUNTING \ | |
| CONFIG_NFS_FS CONFIG_NFS_V4 CONFIG_LOCKD CONFIG_SUNRPC \ | |
| CONFIG_HUGETLB_PAGE CONFIG_HUGETLBFS CONFIG_TRANSPARENT_HUGEPAGE CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS CONFIG_TRANSPARENT_HUGEPAGE_MADVISE CONFIG_KSM \ | |
| CONFIG_IPV6 CONFIG_IPV6_SEG6_LWTUNNEL CONFIG_IPV6_SEG6_BPF \ | |
| CONFIG_BPF_SYSCALL CONFIG_BPF_JIT CONFIG_NETFILTER CONFIG_NETFILTER_ADVANCED CONFIG_NETFILTER_XTABLES \ | |
| CONFIG_XDP_SOCKETS CONFIG_NET_CLS_BPF CONFIG_NET_ACT_BPF \ | |
| CONFIG_MAC80211 CONFIG_BT CONFIG_VLAN_8021Q CONFIG_NET_9P CONFIG_9P_FS \ | |
| CONFIG_COMMON_CLK_BCM CONFIG_CLK_BCM_IPROC CONFIG_CLK_BCM2835 CONFIG_COMMON_CLK_HI3660 CONFIG_COMMON_CLK_HI3670 CONFIG_COMMON_CLK_HI6220 \ | |
| CONFIG_ACPI CONFIG_ACPI_EC CONFIG_ACPI_LPSS CONFIG_ACPI_APEI CONFIG_ACPI_APD CONFIG_ACPI_PCI_SLOT CONFIG_ACPI_PCI_ROOT \ | |
| CONFIG_PCI_QUIRKS CONFIG_PCIEAER CONFIG_PCIEPORTBUS CONFIG_COMPILE_TEST; do | |
| sed -i "s/^${s}=.*/${s}=n/" out/.config | |
| done | |
| sed -i 's/^# CONFIG_NR_CPUS is not set$/CONFIG_NR_CPUS=8/' out/.config | |
| sed -i 's/^CONFIG_NR_CPUS=.*/CONFIG_NR_CPUS=8/' out/.config | |
| sed -i 's/^CONFIG_KERNEL_GZIP=.*/CONFIG_KERNEL_GZIP=y/' out/.config | |
| for c in CONFIG_KERNEL_BZIP2 CONFIG_KERNEL_LZMA CONFIG_KERNEL_XZ CONFIG_KERNEL_LZO CONFIG_KERNEL_LZ4; do | |
| sed -i "s/^${c}=.*/${c}=n/" out/.config | |
| done | |
| if ! grep -q '^CONFIG_CROSS_COMPILE=' out/.config; then | |
| echo 'CONFIG_CROSS_COMPILE="aarch64-linux-gnu-"' >> out/.config | |
| else | |
| sed -i 's/^CONFIG_CROSS_COMPILE=.*/CONFIG_CROSS_COMPILE="aarch64-linux-gnu-"/' out/.config | |
| fi | |
| make O=out ARCH=arm64 olddefconfig | |
| echo "==== Snapshot of critical toggles ====" | |
| egrep -E '^(CONFIG_NR_CPUS|CONFIG_IPV6|CONFIG_IPV6_SEG6_BPF|CONFIG_BPF_SYSCALL|CONFIG_NETFILTER|CONFIG_MAC80211|CONFIG_COMMON_CLK_BCM|CONFIG_COMMON_CLK_HI|CONFIG_ACPI|CONFIG_NFS|CONFIG_BTRFS|CONFIG_TASKSTATS|CONFIG_HUGETLB_PAGE|CONFIG_TRANSPARENT_HUGEPAGE|CONFIG_KERNEL_GZIP)=' out/.config || true | |
| - name: Prepare scripts and headers | |
| working-directory: kernel | |
| run: | | |
| set -euo pipefail | |
| export PATH="/usr/lib/llvm-18/bin:$PATH" | |
| export HOSTCC="clang-18" | |
| export HOSTCXX="clang++-18" | |
| make ${KERNEL_CMDLINE} scripts CC="ccache clang-18" | |
| make ${KERNEL_CMDLINE} prepare CC="ccache clang-18" | |
| - name: Verify critical toggles and blackholes | |
| working-directory: kernel | |
| run: | | |
| set -euo pipefail | |
| if ! grep -q '^CONFIG_NR_CPUS=8' out/.config; then | |
| echo "Error: NR_CPUS not 8" | |
| exit 1 | |
| fi | |
| for s in CONFIG_IPV6 CONFIG_IPV6_SEG6_LWTUNNEL CONFIG_IPV6_SEG6_BPF CONFIG_BPF_SYSCALL CONFIG_BPF_JIT \ | |
| CONFIG_NETFILTER CONFIG_NETFILTER_ADVANCED CONFIG_NETFILTER_XTABLES CONFIG_XDP_SOCKETS CONFIG_NET_CLS_BPF CONFIG_NET_ACT_BPF \ | |
| CONFIG_MAC80211 CONFIG_BT CONFIG_VLAN_8021Q CONFIG_NET_9P CONFIG_9P_FS \ | |
| CONFIG_COMMON_CLK_BCM CONFIG_CLK_BCM_IPROC CONFIG_CLK_BCM2835 CONFIG_COMMON_CLK_HI3660 CONFIG_COMMON_CLK_HI3670 CONFIG_COMMON_CLK_HI6220 \ | |
| CONFIG_ACPI CONFIG_NFS_FS CONFIG_BTRFS_FS CONFIG_TASKSTATS CONFIG_HUGETLB_PAGE CONFIG_TRANSPARENT_HUGEPAGE; do | |
| if grep -q "^${s}=[my]" out/.config; then | |
| echo "Error: ${s} still enabled" | |
| exit 1 | |
| fi | |
| done | |
| for d in drivers/clk/hisilicon drivers/clk/bcm drivers/clk/berlin net/ipv6 net/bridge net/8021q net/bluetooth net/9p net/netfilter net/mac80211 net/llc; do | |
| if [ -d "$d" ]; then | |
| if [ -f "$d/Makefile" ] && [ -s "$d/Makefile" ]; then | |
| echo "Error: $d Makefile not blackholed" | |
| exit 1 | |
| fi | |
| fi | |
| done | |
| - 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 O=out ARCH=arm64 olddefconfig | |
| 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 | |
| run: | | |
| set -euo pipefail | |
| cd AnyKernel3 | |
| zip -r ../${{ env.OUTPUT_ZIP_NAME }}.zip * | |
| cd .. | |
| - name: Package Wi-Fi Module | |
| run: | | |
| set -euo pipefail | |
| if [ ! -d "modules/vendor/lib/modules" ] || ! ls modules/vendor/lib/modules/*.ko >/dev/null 2>&1; then | |
| echo "Error: No Wi-Fi modules found to package!" | |
| exit 1 | |
| fi | |
| cd modules | |
| zip -r ../${{ env.OUTPUT_ZIP_NAME }}-modules.zip * | |
| cd .. | |
| - name: Upload kernel build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: kernel-out | |
| path: kernel/out | |
| if-no-files-found: warn | |
| - 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 |