Skip to content

Commit 735d357

Browse files
authored
Refactor KernelSU patch application and comments
Refactor KernelSU patch application logic and improve comments.
1 parent 4ce0a2d commit 735d357

File tree

1 file changed

+78
-10
lines changed

1 file changed

+78
-10
lines changed

.github/workflows/Novendor.yml

Lines changed: 78 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
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:
@@ -53,7 +53,6 @@ jobs:
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: |
@@ -192,6 +197,69 @@ EOF
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

Comments
 (0)