Skip to content

Update Novendor.yml #12

Update Novendor.yml

Update Novendor.yml #12

Workflow file for this run

name: Build kernel (KSN) & WIFI A16 -- no vendor, no blobs
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-noVendor.zip"
apply_kernelsu:
description: "Apply KernelSU patch (true/false)"
required: true
default: "false"
kernelsu_patch_url:
description: "KernelSU patch/setup script URL (leave empty to skip)"
required: false
default: ""
jobs:
build:
runs-on: ubuntu-22.04
env:
OUTDIR: out
CLANG_DIR: clang
# make invocation string (used in build step)
KERNEL_CMDLINE: "ARCH=arm64 LLVM=1 LLVM_IAS=1 O=out CROSS_COMPILE=aarch64-linux-gnu- CLANG_TRIPLE=aarch64-linux-gnu-"
steps:
- name: Install base system dependencies (tar early)
run: |
sudo apt-get update -y
sudo apt-get install -y git wget curl tar gzip xz-utils unzip zip \
build-essential bc bison flex libssl-dev libncurses-dev libelf-dev \
clang-18 lld-18 llvm-18 gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu \
ccache python3 git-lfs
- name: Checkout workflow repository (full git)
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set inputs into environment
run: |
# store inputs so later steps can use them safely
echo "KERNEL_SOURCE_URL=${{ github.event.inputs.kernel_source_url }}" >> $GITHUB_ENV
echo "KERNEL_BRANCH=${{ github.event.inputs.kernel_branch }}" >> $GITHUB_ENV
echo "KERNEL_DEFCONFIG=${{ github.event.inputs.kernel_defconfig }}" >> $GITHUB_ENV
echo "OUTPUT_ZIP_NAME=${{ github.event.inputs.output_name }}" >> $GITHUB_ENV
echo "APPLY_KERNELSU=${{ github.event.inputs.apply_kernelsu }}" >> $GITHUB_ENV
echo "KERNELSU_PATCH_URL=${{ github.event.inputs.kernelsu_patch_url }}" >> $GITHUB_ENV
- name: Ensure Clang 18 available (download fallback)
run: |
if ! command -v clang-18 >/dev/null 2>&1; then
mkdir -p "${CLANG_DIR}"
CLANG_TGZ="clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-22.04.tar.xz"
wget -q "https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.8/${CLANG_TGZ}"
tar -xf "${CLANG_TGZ}" -C "${CLANG_DIR}" --strip-components=1
fi
echo "${PWD}/${CLANG_DIR}/bin" >> $GITHUB_PATH
- name: Clone kernel source
run: |
set -euo pipefail
: "${KERNEL_SOURCE_URL:=https://github.com/LineageOS/android_kernel_oneplus_sm8150}"
: "${KERNEL_BRANCH:=lineage-23.0}"
echo "Cloning kernel from $KERNEL_SOURCE_URL (branch $KERNEL_BRANCH)"
git clone --depth=1 --branch "$KERNEL_BRANCH" "$KERNEL_SOURCE_URL" kernel
cd kernel
git submodule update --init --recursive || true
cd ..
- name: Create novendor.defaults (safe heredoc)
run: |
set -euo pipefail
cat > novendor.defaults <<'EOF'
# Force localversion predictable
CONFIG_LOCALVERSION_AUTO=y

Check failure on line 90 in .github/workflows/Novendor.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/Novendor.yml

Invalid workflow file

You have an error in your yaml syntax on line 90
# Vendor / proprietary modules
CONFIG_VENDOR_EDIT=n
CONFIG_OPLUS_DEVICE_INFO=n
CONFIG_OPLUS_PROJECT_INFO=n
CONFIG_OPLUS_ARCH_EXTENDS=n
CONFIG_OPLUS_FEATURE_CHG_BASIC=n
CONFIG_OPLUS_FEATURE_SENSOR=n
CONFIG_MSM_CAMERA=n
CONFIG_QCOM_CAMERA=n
CONFIG_SPECTRA_CAMERA=n
CONFIG_SPECTRA_EEPROM=n
CONFIG_DRM_MSM_OPLUS=n
CONFIG_TOUCHSCREEN_OPLUS=n
CONFIG_SOUND_OPLUS=n
# Wireless stacks that usually need blobs
CONFIG_MAC80211=n
CONFIG_CFG80211=n
CONFIG_WLAN=n
# Netfilter / iptables / conntrack disables
CONFIG_NETFILTER=n
CONFIG_NETFILTER_XTABLES=n
CONFIG_NF_CONNTRACK=n
CONFIG_NF_CONNTRACK_IPV4=n
CONFIG_NF_CONNTRACK_IPV6=n
CONFIG_IP_NF_IPTABLES=n
CONFIG_IP_NF_FILTER=n
CONFIG_IP_NF_NAT=n
CONFIG_IP_NF_TARGET_MASQUERADE=n
CONFIG_IP6_NF_IPTABLES=n
CONFIG_IP6_NF_FILTER=n
CONFIG_BRIDGE_NETFILTER=n
CONFIG_NF_TABLES=n
CONFIG_NF_TABLES_IPV4=n
CONFIG_NF_TABLES_IPV6=n
# Reduce debug for smaller kernel (optional)
CONFIG_DEBUG_INFO=n
CONFIG_DEBUG_KERNEL=n
EOF
- name: Prepare kernel out and seed defconfig
run: |
set -euo pipefail
cd kernel
mkdir -p ../${OUTDIR}
if [ -z "${KERNEL_DEFCONFIG:-}" ]; then
KCONF="vendor/sm8150_defconfig"
else
KCONF="${KERNEL_DEFCONFIG}"
fi
echo "Using defconfig: $KCONF"
make O=../${OUTDIR} ARCH=arm64 "${KCONF}"
- name: Merge novendor.defaults and save cleaned defconfig
run: |
set -euo pipefail
cd kernel
make O=../${OUTDIR} ARCH=arm64 olddefconfig KCONFIG_ALLCONFIG=../novendor.defaults
# Save final config for reproducibility if possible
cp ../${OUTDIR}/.config arch/arm64/configs/oneplus_novendor_defconfig || true
- name: Blackhole vendor-heavy directories
run: |
set -euo pipefail
cd kernel
for d in \
drivers/gpu/drm/msm/oplus \
drivers/misc/oplus* \
drivers/soc/oplus \
drivers/input/oplus* \
drivers/oneplus* \
drivers/staging/qcacld-3.0 \
drivers/media/platform/msm/camera \
drivers/thermal/qcom \
sound/soc/oplus* \
net/netfilter \
net/ipv6/netfilter \
net/bridge/netfilter; do
if [ -d "$d" ]; then
echo -e "# blackholed for no-vendor build\nobj-y :=\nobj-m :=" > "$d/Makefile"
chmod 644 "$d/Makefile"
echo "Blackholed: $d"
fi
done
- name: (optional) Apply KernelSU patch
if: ${{ github.event.inputs.apply_kernelsu == 'true' && github.event.inputs.kernelsu_patch_url != '' }}
run: |
set -euo pipefail
cd kernel
echo "Applying KernelSU from ${{ github.event.inputs.kernelsu_patch_url }}"
curl -LSs "${{ github.event.inputs.kernelsu_patch_url }}" | bash -
cd ..
- name: Build kernel (no-vendor)
run: |
set -euo pipefail
cd kernel
export PATH="${PWD}/../${CLANG_DIR}/bin:$PATH"
export CC="clang-18"
export LD="ld.lld-18"
# Try to use saved cleaned defconfig if it exists
if [ -f arch/arm64/configs/oneplus_novendor_defconfig ]; then
make O=../${OUTDIR} ARCH=arm64 oneplus_novendo_