Skip to content

Commit 10bede4

Browse files
committed
fix: switch kernel source to SavedByLight/android_kernel_samsung_a04s
1 parent 17a54b5 commit 10bede4

1 file changed

Lines changed: 57 additions & 50 deletions

File tree

.github/workflows/build-kernel.yml

Lines changed: 57 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
name: Build Kernel with KernelSU (Samsung A04)
1+
name: Build Kernel with KernelSU (Samsung A04s)
22

33
on:
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
@@ -20,10 +20,6 @@ on:
2020
required: false
2121
default: false
2222
type: boolean
23-
push:
24-
branches: [main]
25-
paths:
26-
- '.github/workflows/build-kernel.yml'
2723

2824
jobs:
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

Comments
 (0)