3434 env :
3535 OUTDIR : out
3636 CLANG_DIR : clang
37- # make invocation string ( used in build step)
37+ # used in make invocation below
3838 KERNEL_CMDLINE : " ARCH=arm64 LLVM=1 LLVM_IAS=1 O=out CROSS_COMPILE=aarch64-linux-gnu- CLANG_TRIPLE=aarch64-linux-gnu-"
3939
4040 steps :
5353
5454 - name : Set inputs into environment
5555 run : |
56- # store inputs so later steps can use them safely
5756 echo "KERNEL_SOURCE_URL=${{ github.event.inputs.kernel_source_url }}" >> $GITHUB_ENV
5857 echo "KERNEL_BRANCH=${{ github.event.inputs.kernel_branch }}" >> $GITHUB_ENV
5958 echo "KERNEL_DEFCONFIG=${{ github.event.inputs.kernel_defconfig }}" >> $GITHUB_ENV
@@ -143,14 +142,15 @@ EOF
143142 fi
144143 echo "Using defconfig: $KCONF"
145144 make O=../${OUTDIR} ARCH=arm64 "${KCONF}"
145+ cd ..
146146
147147 - name : Merge novendor.defaults and save cleaned defconfig
148148 run : |
149149 set -euo pipefail
150150 cd kernel
151151 make O=../${OUTDIR} ARCH=arm64 olddefconfig KCONFIG_ALLCONFIG=../novendor.defaults
152- # Save final config for reproducibility if possible
153152 cp ../${OUTDIR}/.config arch/arm64/configs/oneplus_novendor_defconfig || true
153+ cd ..
154154
155155 - name : Blackhole vendor-heavy directories
156156 run : |
@@ -175,15 +175,20 @@ EOF
175175 echo "Blackholed: $d"
176176 fi
177177 done
178+ cd ..
178179
179180 - name : (optional) Apply KernelSU patch
180- if : ${{ github.event.inputs.apply_kernelsu == 'true' && github.event.inputs.kernelsu_patch_url != '' }}
181+ if : ${{ github.event.inputs.apply_kernelsu == 'true' }}
181182 run : |
182183 set -euo pipefail
183- cd kernel
184- echo "Applying KernelSU from ${{ github.event.inputs.kernelsu_patch_url }}"
185- curl -LSs "${{ github.event.inputs.kernelsu_patch_url }}" | bash -
186- cd ..
184+ if [ -n "${{ github.event.inputs.kernelsu_patch_url }}" ]; then
185+ cd kernel
186+ echo "Applying KernelSU from ${{ github.event.inputs.kernelsu_patch_url }}"
187+ curl -LSs "${{ github.event.inputs.kernelsu_patch_url }}" | bash -
188+ cd ..
189+ else
190+ echo "KernelSU flag set but no URL provided; skipping."
191+ fi
187192
188193 - name : Build kernel (no-vendor)
189194 run : |
192197 export PATH="${PWD}/../${CLANG_DIR}/bin:$PATH"
193198 export CC="clang-18"
194199 export LD="ld.lld-18"
195- # Try to use saved cleaned defconfig if it exists
196200 if [ -f arch/arm64/configs/oneplus_novendor_defconfig ]; then
197- make O=../${OUTDIR} ARCH=arm64 oneplus_novendo_
201+ make O=../${OUTDIR} ARCH=arm64 oneplus_novendor_defconfig || true
202+ fi
203+ make ${KERNEL_CMDLINE} -j$(nproc) CC="ccache clang-18" LD="ld.lld-18" V=1
204+ if [ -f ../${OUTDIR}/arch/arm64/boot/Image.gz-dtb ]; then
205+ echo "Built Image.gz-dtb"
206+ elif [ -f ../${OUTDIR}/arch/arm64/boot/Image ]; then
207+ echo "Built Image"
208+ else
209+ echo "Kernel image not found after build"
210+ ls -la ../${OUTDIR}/arch/arm64/boot || true
211+ exit 1
212+ fi
213+ cd ..
214+
215+ - name : Prepare AnyKernel3 and package zip
216+ run : |
217+ set -euo pipefail
218+ git clone --depth=1 https://github.com/khalidaboelmagd/AnyKernel3 AnyKernel3 || true
219+ rm -rf AnyKernel3/.git || true
220+ if [ -f out/arch/arm64/boot/Image.gz-dtb ]; then
221+ cp out/arch/arm64/boot/Image.gz-dtb AnyKernel3/zImage
222+ else
223+ cp out/arch/arm64/boot/Image AnyKernel3/zImage
224+ fi
225+ cd AnyKernel3
226+ sed -i 's|device.name1=.*|device.name1=guacamole|' anykernel.sh || true
227+ sed -i 's|device.name2=.*|device.name2=guacamoleb|' anykernel.sh || true
228+ sed -i 's|do.devicecheck=1|do.devicecheck=0|' anykernel.sh || true
229+ zip -r9 ../${{ env.OUTPUT_ZIP_NAME }}.zip ./*
230+
231+ - name : Build Wi-Fi module (qcacld-3.0) if present
232+ run : |
233+ set -euo pipefail
234+ cd kernel
235+ export PATH="${PWD}/../${CLANG_DIR}/bin:$PATH"
236+ make O=../${OUTDIR} ARCH=arm64 modules_prepare CC="ccache clang-18"
237+ if [ -d drivers/staging/qcacld-3.0 ]; then
238+ make ${KERNEL_CMDLINE} -j$(nproc) M=drivers/staging/qcacld-3.0 CC="ccache clang-18" LD="ld.lld-18"
239+ mkdir -p ../modules/vendor/lib/modules
240+ find ../${OUTDIR}/drivers/staging/qcacld-3.0 -name "*.ko" -exec cp -v {} ../modules/vendor/lib/modules/ \; || true
241+ sudo chown -R "$(id -u)":"$(id -g)" ../modules || true
242+ else
243+ echo "qcacld-3.0 not found; skipping Wi-Fi module build"
244+ fi
245+ cd ..
246+
247+ - name : Package Wi-Fi modules (if any)
248+ run : |
249+ set -euo pipefail
250+ if [ -d modules ]; then
251+ cd modules
252+ zip -r ../${{ env.OUTPUT_ZIP_NAME }}-modules.zip . || true
253+ cd ..
254+ else
255+ echo "No modules directory; skipping modules zip"
256+ fi
257+
258+ - name : Upload zips
259+ uses : actions/upload-artifact@v4
260+ with :
261+ name : outputs
262+ path : |
263+ ${{ env.OUTPUT_ZIP_NAME }}.zip
264+ ${{ env.OUTPUT_ZIP_NAME }}-modules.zip
265+ if-no-files-found : error
0 commit comments