Skip to content

Refactor OnePlus 7 Kernel build workflow #10

Refactor OnePlus 7 Kernel build workflow

Refactor OnePlus 7 Kernel build workflow #10

Workflow file for this run

name: Build OnePlus 7 Kernel (No Vendor Blobs)
on:
workflow_dispatch:
push:
branches:
- main
- lineage-21
- android-16
jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Setup build environment
run: |
sudo apt-get update
sudo apt-get install -y bc bison flex clang lld llvm lz4 \
make python3 git zip curl wget ccache \
libssl-dev rsync tar
- name: Download prebuilt Clang toolchain
run: |
mkdir -p clang
wget https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+archive/refs/heads/master/clang-r530567.tar.gz -O clang.tar.gz
tar -xf clang.tar.gz -C clang
echo "Clang toolchain extracted."
- name: Set derived env / defaults
run: |
echo "KERNEL_DEFCONFIG=${{ github.event.inputs.kernel_defconfig || 'vendor/sm8150_defconfig' }}" >> $GITHUB_ENV
echo "KERNEL_SOURCE_URL=${{ github.event.inputs.kernel_source_url || 'https://github.com/LineageOS/android_kernel_oneplus_sm8150' }}" >> $GITHUB_ENV
echo "KERNEL_BRANCH=${{ github.event.inputs.kernel_branch || 'lineage-23.0' }}" >> $GITHUB_ENV
echo "OUTPUT_ZIP_NAME=${{ github.event.inputs.output_name || 'OP7_KSN_wifi-LOS-noVendor.zip' }}" >> $GITHUB_ENV
- name: Configure environment variables
run: |
export ARCH=arm64
export SUBARCH=arm64
export PATH=$PWD/clang/bin:$PATH
export CC=clang
export CROSS_COMPILE=aarch64-linux-gnu-
export CROSS_COMPILE_ARM32=arm-linux-gnueabi-
mkdir -p out
- name: Write novendor.defaults and kernel config disables
working-directory: kernel
run: |
set -euo pipefail
cat > ../novendor.defaults <<'EOF'
# Force localversion predictable
CONFIG_LOCALVERSION_AUTO=y

Check failure on line 56 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 56
# 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: Disable vendor directories
working-directory: kernel
run: |
echo "🔧 Disabling vendor-related directories..."
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 "# disabled (no vendor blobs)" > "$d/Makefile"
echo "obj-y :=" >> "$d/Makefile"
echo "obj-m :=" >> "$d/Makefile"
fi
done
- name: Build Kernel
run: |
export ARCH=arm64
export SUBARCH=arm64
export PATH=$PWD/clang/bin:$PATH
make O=out ARCH=arm64 $KERNEL_DEFCONFIG
make O=out ARCH=arm64 -j$(nproc) \
CC=clang \
CROSS_COMPILE=aarch64-linux-gnu- \
CROSS_COMPILE_ARM32=arm-linux-gnueabi-
- name: Package Image
run: |
mkdir -p artifacts
cp out/arch/arm64/boot/Image.gz-dtb artifacts/ || true
cp out/arch/arm64/boot/Image artifacts/ || true
cd artifacts && zip -r kernel-build.zip .
- name: Upload Kernel Artifact
uses: actions/upload-artifact@v4
with:
name: oneplus7-kernel
path: artifacts/kernel-build.zip