1- name : Build Kernel with KernelSU (Samsung A04 )
1+ name : Build Kernel with KernelSU (Samsung A04s )
22
33on :
44 workflow_dispatch :
55 inputs :
66 kernel_source :
77 description : ' Kernel source URL'
88 required : true
9- default : ' https://github.com/rsuntkOrgs/kernel_samsung_wingtech '
9+ default : ' https://github.com/SavedByLight/android_kernel_samsung_a04s '
1010 kernel_branch :
1111 description : ' Kernel branch'
1212 required : true
13- default : ' a045x '
13+ default : ' main '
1414 kernelsu_tag :
1515 description : ' KernelSU tag or "main" for latest'
1616 required : false
2020 required : false
2121 default : false
2222 type : boolean
23- push :
24- branches : [main]
25- paths :
26- - ' .github/workflows/build-kernel.yml'
2723
2824jobs :
2925 build :
@@ -56,14 +52,27 @@ jobs:
5652 -b ${{ github.event.inputs.kernel_branch }} \
5753 ${{ github.event.inputs.kernel_source }} \
5854 android-kernel
55+ echo "Kernel source cloned. Top-level files:"
56+ ls android-kernel/
5957
60- - name : Fetch KernelSU version info
58+ - name : Detect kernel version
59+ id : kver
60+ run : |
61+ VER=$(grep "^VERSION =" android-kernel/Makefile | awk '{print $3}')
62+ PATCH=$(grep "^PATCHLEVEL =" android-kernel/Makefile | awk '{print $3}')
63+ SUB=$(grep "^SUBLEVEL =" android-kernel/Makefile | awk '{print $3}')
64+ echo "Detected kernel version: $VER.$PATCH.$SUB"
65+ echo "version=$VER.$PATCH.$SUB" >> $GITHUB_OUTPUT
66+ echo "major=$VER.$PATCH" >> $GITHUB_OUTPUT
67+
68+ - name : Fetch latest KernelSU version
6169 id : ksu_info
6270 run : |
63- TAG=${{ github.event.inputs.kernelsu_tag }}
71+ TAG=" ${{ github.event.inputs.kernelsu_tag }}"
6472 if [ "$TAG" = "main" ] || [ -z "$TAG" ]; then
65- LATEST=$(curl -s https://api.github.com/repos/tiann/KernelSU/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
66- echo "KernelSU latest release: $LATEST"
73+ LATEST=$(curl -s https://api.github.com/repos/tiann/KernelSU/releases/latest \
74+ | grep '"tag_name"' | cut -d'"' -f4)
75+ echo "Latest KernelSU: $LATEST"
6776 echo "ksu_version=$LATEST" >> $GITHUB_OUTPUT
6877 else
6978 echo "ksu_version=$TAG" >> $GITHUB_OUTPUT
@@ -72,77 +81,76 @@ jobs:
7281 - name : Integrate KernelSU via setup.sh
7382 run : |
7483 cd android-kernel
75- KSU_TAG=${{ steps.ksu_info.outputs.ksu_version }}
76- echo "Integrating KernelSU $KSU_TAG ..."
84+ KSU_TAG=" ${{ steps.ksu_info.outputs.ksu_version }}"
85+ echo "Integrating KernelSU $KSU_TAG into kernel ${{ steps.kver.outputs.version }} ..."
7786 curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -s "$KSU_TAG"
78- # Verify
79- echo "KernelSU integrated:"
80- head -5 KernelSU/kernel/Makefile || head -5 drivers/kernelsu/Makefile
87+ echo "--- KernelSU Makefile header ---"
88+ head -5 KernelSU/kernel/Makefile 2>/dev/null || head -5 drivers/kernelsu/Makefile 2>/dev/null
8189
8290 - name : Setup Clang toolchain
8391 run : |
8492 mkdir -p $HOME/toolchain/clang
85- # Use a stable Clang from ZyCromerZ (proven for MT6765 / 4.19)
93+ echo "Downloading ZyCromerZ Clang 14..."
8694 wget -q --show-progress \
8795 https://github.com/ZyCromerZ/Clang/releases/download/14.0.6-20220902-full/Clang-14.0.6-x86_64.tar.gz \
88- -O /tmp/clang.tar.gz || {
89- echo "ZyCromerZ Clang download failed, falling back to system clang"
90- mkdir -p $HOME/toolchain /clang/bin
91- ln -sf /usr/bin/clang $HOME/toolchain/clang/bin/clang
92- ln -sf /usr/bin/ld.lld $HOME/toolchain/ clang/bin/ld.lld
93- for t in /usr/bin/llvm-*; do [ -f "$t" ] && ln -sf "$t" $ HOME/toolchain/clang/bin/; done
94- exit 0
95- }
96- tar -xzf /tmp/clang.tar.gz -C $ HOME/toolchain/clang/
97- rm /tmp/clang.tar.gz
96+ -O /tmp/clang.tar.gz && \
97+ tar -xzf /tmp/clang.tar.gz -C $HOME/toolchain/clang/ && \
98+ rm /tmp /clang.tar.gz && \
99+ echo "Clang ready." || {
100+ echo "Download failed — falling back to system clang"
101+ mkdir -p $ HOME/toolchain/clang/bin
102+ ln -sf /usr/bin/clang $HOME/toolchain/clang/bin/clang
103+ ln -sf /usr/bin/ld.lld $HOME/toolchain/clang/bin/ld.lld
104+ for t in /usr/bin/llvm-*; do [ -f "$t" ] && ln -sf "$t" $ HOME/toolchain/clang/bin/; done
105+ }
98106 echo "$HOME/toolchain/clang/bin" >> $GITHUB_PATH
99107
100108 - name : Apply GPU driver fix (MT6765)
101109 run : |
102110 cd android-kernel
103111 TARGET=$(find drivers/gpu -name "mtk_mfgsys.c" 2>/dev/null | head -n 1)
104112 if [ -n "$TARGET" ]; then
105- echo "Applying GPU fix to $TARGET"
113+ echo "Applying MT6765 GPU fix to $TARGET"
106114 sed -i 's/PVRSRVGetDevicePowerState(ui32RGXDevIdx,/PVRSRVGetDevicePowerState(MTKGetRGXDevNode(),/g' "$TARGET"
107115 sed -i 's/MTKWriteBackFreqToRGX(ui32RGXDevIdx,/MTKWriteBackFreqToRGX(MTKGetRGXDevNode(),/g' "$TARGET"
108116 sed -i 's/PVRSRVDevicePostClockSpeedChange(ui32RGXDevIdx,/PVRSRVDevicePostClockSpeedChange(MTKGetRGXDevNode(),/g' "$TARGET"
109117 sed -i 's/PVRSRVDevicePreClockSpeedChange(ui32RGXDevIdx,/PVRSRVDevicePreClockSpeedChange(MTKGetRGXDevNode(),/g' "$TARGET"
110118 echo "GPU fix applied."
111119 else
112- echo "mtk_mfgsys.c not found, skipping GPU fix."
120+ echo "mtk_mfgsys.c not found — skipping GPU fix."
113121 fi
114122
115123 - name : Configure kernel
116124 run : |
117125 cd android-kernel
118126 export PATH=$HOME/toolchain/clang/bin:$PATH
119127
120- # Find defconfig
121- DEFCONFIG=$(find arch/arm64/configs -name "a04*defconfig " -o -name "*a045* " 2>/dev/null | head -1 | xargs basename)
128+ # Auto-detect defconfig
129+ DEFCONFIG=$(find arch/arm64/configs -name "*a04s* " -o -name "*a04*defconfig " 2>/dev/null | head -1 | xargs basename 2>/dev/null )
122130 if [ -z "$DEFCONFIG" ]; then
123131 DEFCONFIG="a04_defconfig"
124132 fi
125133 echo "Using defconfig: $DEFCONFIG"
126134
127- make O=out ARCH=arm64 $DEFCONFIG
135+ make O=out ARCH=arm64 " $DEFCONFIG"
128136
129- # Disable Werror to avoid upstream warnings killing the build
137+ # Silence Werror — treats upstream warnings as errors and aborts build
130138 sed -i 's/CONFIG_WERROR=y/CONFIG_WERROR=n/g' out/.config
131139
132- # KernelSU — enable + keep KPROBES on for 4.19 non-GKI hook method
140+ # KernelSU — KPROBES required for non-GKI hook method on 4.x kernels
133141 scripts/config --file out/.config \
134142 -e CONFIG_KSU \
135143 -e CONFIG_KPROBES \
136144 -e CONFIG_HAVE_KPROBES \
137145 -e CONFIG_OVERLAY_FS \
138146 -e CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE
139147
140- # Build identity
148+ # Embed KSU version into kernel local version string
141149 scripts/config --file out/.config \
142150 --set-str CONFIG_LOCALVERSION "-KSU-${{ steps.ksu_info.outputs.ksu_version }}" \
143151 --disable CONFIG_LOCALVERSION_AUTO
144152
145- # Strip debug info to shrink image size
153+ # Strip debug info to keep Image size manageable
146154 scripts/config --file out/.config \
147155 --disable CONFIG_DEBUG_INFO \
148156 --disable CONFIG_DEBUG_INFO_SPLIT \
@@ -153,7 +161,7 @@ jobs:
153161 --enable CONFIG_STRIP_ASM_SYMS \
154162 --enable CONFIG_CC_OPTIMIZE_FOR_SIZE
155163
156- echo "Configuration done ."
164+ echo "Configuration complete ."
157165
158166 - name : Compile kernel
159167 run : |
@@ -175,12 +183,11 @@ jobs:
175183 Image 2>&1 | tee $GITHUB_WORKSPACE/compile.log
176184
177185 if [ ! -f out/arch/arm64/boot/Image ]; then
178- echo "::error::Kernel Image not found after build !"
186+ echo "::error::Build failed — kernel Image not found!"
179187 exit 1
180188 fi
181189
182- SIZE=$(du -h out/arch/arm64/boot/Image | cut -f1)
183- echo "Kernel Image size: $SIZE"
190+ echo "Build successful! Image size: $(du -h out/arch/arm64/boot/Image | cut -f1)"
184191
185192 - name : Package with AnyKernel3
186193 run : |
@@ -192,15 +199,15 @@ jobs:
192199
193200 cat > anykernel.sh << 'AKEOF'
194201 properties() {
195- kernel.string=Samsung A04 + KernelSU
202+ kernel.string=Samsung A04s + KernelSU
196203 do.devicecheck=1
197204 do.modules=0
198205 do.cleanup=1
199206 do.cleanuponabort=1
200- device.name1=a04
201- device.name2=a045f
202- device.name3=SM-A045F
203- device.name4=a045x
207+ device.name1=a04s
208+ device.name2=a047f
209+ device.name3=SM-A047F
210+ device.name4=a047x
204211 supported.versions=12-14
205212 }
206213
@@ -215,10 +222,9 @@ jobs:
215222
216223 BUILD_DATE=$(date +%Y%m%d-%H%M)
217224 KSU_VER=${{ steps.ksu_info.outputs.ksu_version }}
218- ZIP_NAME="SamsungA04 -KernelSU-${KSU_VER}-${BUILD_DATE}.zip"
225+ ZIP_NAME="SamsungA04s -KernelSU-${KSU_VER}-${BUILD_DATE}.zip"
219226
220227 zip -r9 $GITHUB_WORKSPACE/$ZIP_NAME . -x '.git*'
221-
222228 echo "ZIP_NAME=$ZIP_NAME" >> $GITHUB_ENV
223229 echo "Packaged: $ZIP_NAME ($(du -h $GITHUB_WORKSPACE/$ZIP_NAME | cut -f1))"
224230
@@ -241,14 +247,15 @@ jobs:
241247 uses : softprops/action-gh-release@v2
242248 with :
243249 tag_name : ksu-${{ steps.ksu_info.outputs.ksu_version }}-build${{ github.run_number }}
244- name : " KernelSU ${{ steps.ksu_info.outputs.ksu_version }} — Samsung A04 "
250+ name : " KernelSU ${{ steps.ksu_info.outputs.ksu_version }} — Samsung A04s "
245251 body : |
246- ## Samsung A04 (SM-A045F ) Kernel + KernelSU
252+ ## Samsung A04s (SM-A047F ) Kernel + KernelSU
247253
248254 | | |
249255 |---|---|
250256 | **KernelSU version** | `${{ steps.ksu_info.outputs.ksu_version }}` |
251- | **Kernel source** | `${{ github.event.inputs.kernel_source }}` |
257+ | **Kernel version** | `${{ steps.kver.outputs.version }}` |
258+ | **Kernel source** | [SavedByLight/android_kernel_samsung_a04s](https://github.com/SavedByLight/android_kernel_samsung_a04s) |
252259 | **Branch** | `${{ github.event.inputs.kernel_branch }}` |
253260 | **Build number** | `#${{ github.run_number }}` |
254261
0 commit comments