Skip to content

Commit 8d0e08d

Browse files
authored
Update build-kernel-a12.yml
1 parent 856826e commit 8d0e08d

File tree

1 file changed

+36
-168
lines changed

1 file changed

+36
-168
lines changed
Lines changed: 36 additions & 168 deletions
Original file line numberDiff line numberDiff line change
@@ -1,176 +1,44 @@
1-
name: Build A12 Kernel
1+
name: Build Android 12 GKI Kernels with KernelSU-Next & SUSFS
22

33
on:
4-
workflow_call: # This workflow will be triggered by the release.yml
4+
workflow_dispatch: # Manually triggered workflow
55

66
jobs:
7-
build-kernel:
8-
runs-on: ubuntu-latest # Change the runner if necessary
9-
strategy:
10-
matrix:
11-
kernel_configs:
12-
- sub_level: 198
13-
os_patch_level: 2024-01
14-
- sub_level: 205
15-
os_patch_level: 2024-03
16-
- sub_level: 209
17-
os_patch_level: 2024-05
18-
- sub_level: 218
19-
os_patch_level: 2024-08
20-
- sub_level: 226
21-
os_patch_level: 2024-11
7+
build-kernel-a12:
8+
runs-on: ubuntu-latest
229

2310
steps:
24-
- name: Set up kernel build configuration
25-
run: |
26-
# Set static values for Android version and kernel version
27-
ANDROID_VERSION="android12"
28-
KERNEL_VERSION="5.10"
29-
30-
# Formatted branch name for each build (e.g., android12-5.10-2024-01)
31-
FORMATTED_BRANCH="${ANDROID_VERSION}-${KERNEL_VERSION}-${{ matrix.kernel_configs.os_patch_level }}"
32-
echo "Formatted branch name: $FORMATTED_BRANCH"
33-
34-
# Create a directory in the format android_version-kernel_version-sub_level-os_patch_level
35-
BUILD_DIR="${ANDROID_VERSION}-${KERNEL_VERSION}-${{ matrix.kernel_configs.sub_level }}-${{ matrix.kernel_configs.os_patch_level }}"
36-
mkdir -p "$BUILD_DIR"
37-
echo "Directory created: $BUILD_DIR"
11+
# Step 0: Maximize build space
12+
- name: Maximize build space
13+
uses: easimon/maximize-build-space@master
14+
with:
15+
root-reserve-mb: 8192
16+
temp-reserve-mb: 2048
17+
remove-dotnet: 'true'
18+
remove-android: 'true'
19+
remove-haskell: 'true'
20+
remove-codeql: 'true'
21+
22+
# Step 1: Download prebuilt toolchain from AOSP
23+
- name: Download prebuilt toolchain
24+
run: |
25+
AOSP_MIRROR=https://android.googlesource.com
26+
BRANCH=main-kernel-build-2024 # Updated branch name
27+
git clone $AOSP_MIRROR/platform/prebuilts/build-tools -b $BRANCH --depth 1 build-tools
28+
git clone $AOSP_MIRROR/kernel/prebuilts/build-tools -b $BRANCH --depth 1 kernel-build-tools
29+
git clone $AOSP_MIRROR/platform/system/tools/mkbootimg -b $BRANCH --depth 1 mkbootimg
30+
31+
# Step 2: Set environment variables for boot image build
32+
- name: Build boot images
33+
run: |
34+
export AVBTOOL=$GITHUB_WORKSPACE/kernel-build-tools/linux-x86/bin/avbtool
35+
export GZIP=$GITHUB_WORKSPACE/build-tools/path/linux-x86/gzip
36+
export LZ4=$GITHUB_WORKSPACE/build-tools/path/linux-x86/lz4
37+
export MKBOOTIMG=$GITHUB_WORKSPACE/mkbootimg/mkbootimg.py
38+
export UNPACK_BOOTIMG=$GITHUB_WORKSPACE/mkbootimg/unpack_bootimg.py
3839
39-
# Change into the newly created directory
40-
cd "$BUILD_DIR"
41-
echo "Now in directory: $(pwd)"
42-
43-
- name: Clone AnyKernel3 repository
44-
run: |
45-
echo "Cloning AnyKernel3 repository..."
46-
git clone https://github.com/TheWildJames/AnyKernel3.git -b "${ANDROID_VERSION}-${KERNEL_VERSION}"
47-
48-
- name: Clone susfs4ksu repository
49-
run: |
50-
echo "Cloning susfs4ksu repository..."
51-
git clone https://gitlab.com/simonpunk/susfs4ksu.git -b "gki-${ANDROID_VERSION}-${KERNEL_VERSION}"
52-
53-
- name: Clone kernel_patches repository
54-
run: |
55-
echo "Cloning kernel_patches repository..."
56-
git clone https://github.com/TheWildJames/kernel_patches.git
57-
58-
- name: Initialize and sync kernel source
59-
run: |
60-
echo "Initializing and syncing kernel source..."
61-
# Initialize repo
62-
repo init --depth=1 --u https://android.googlesource.com/kernel/manifest -b common-${FORMATTED_BRANCH}
63-
64-
# Get remote branch details
65-
REMOTE_BRANCH=$(git ls-remote https://android.googlesource.com/kernel/common ${FORMATTED_BRANCH})
66-
DEFAULT_MANIFEST_PATH=.repo/manifests/default.xml
67-
68-
# Check if the branch is deprecated and adjust the manifest
69-
if grep -q deprecated <<< $REMOTE_BRANCH; then
70-
echo "Found deprecated branch: $FORMATTED_BRANCH"
71-
sed -i "s/\"${FORMATTED_BRANCH}\"/\"deprecated\/${FORMATTED_BRANCH}\"/g" $DEFAULT_MANIFEST_PATH
72-
fi
73-
74-
# Verify repo version and sync the kernel source
75-
repo --version
76-
repo --trace sync -c -j$(nproc --all) --no-tags --fail-fast
77-
78-
- name: Set up KernelSU-Next
79-
run: |
80-
echo "Setting up KernelSU-Next..."
81-
curl -LSs "https://raw.githubusercontent.com/rifsxd/KernelSU-Next/next/kernel/setup.sh" | bash -
82-
83-
- name: Apply SUSFS patches
84-
run: |
85-
echo "Applying SUSFS patches..."
86-
# Copy the necessary patches to the appropriate directories
87-
cp ../susfs4ksu/kernel_patches/KernelSU/10_enable_susfs_for_ksu.patch ./KernelSU-Next/
88-
cp ../susfs4ksu/kernel_patches/50_add_susfs_in_gki-${ANDROID_VERSION}-${KERNEL_VERSION}.patch ./common/
89-
cp ../susfs4ksu/kernel_patches/fs/* ./common/fs/
90-
cp ../susfs4ksu/kernel_patches/include/linux/* ./common/include/linux/
91-
92-
# Apply the patches
93-
cd ./KernelSU-Next
94-
patch -p1 --forward < 10_enable_susfs_for_ksu.patch || true
95-
cd ../common
96-
patch -p1 < 50_add_susfs_in_gki-${ANDROID_VERSION}-${KERNEL_VERSION}.patch || true
97-
98-
- name: Apply Custom Patches
99-
run: |
100-
echo "Applying custom patches..."
101-
102-
# Copy the custom patches and apply them
103-
cp ../../kernel_patches/69_hide_stuff.patch ./
104-
patch -p1 -F 3 < 69_hide_stuff.patch
105-
cd ..
106-
107-
cp ../kernel_patches/apk_sign.c_fix.patch ./
108-
patch -p1 -F 3 < apk_sign.c_fix.patch
109-
110-
cp ../kernel_patches/core_hook.c_fix.patch ./
111-
patch -p1 --fuzz=3 < ./core_hook.c_fix.patch
112-
113-
cp ../kernel_patches/selinux.c_fix.patch ./
114-
patch -p1 -F 3 < selinux.c_fix.patch
115-
116-
- name: Add SUSFS configuration settings
117-
run: |
118-
echo "Adding configuration settings to gki_defconfig..."
119-
echo "CONFIG_KSU=y" >> ./common/arch/arm64/configs/gki_defconfig
120-
echo "CONFIG_KSU_SUSFS=y" >> ./common/arch/arm64/configs/gki_defconfig
121-
echo "CONFIG_KSU_SUSFS_HAS_MAGIC_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
122-
echo "CONFIG_KSU_SUSFS_SUS_PATH=y" >> ./common/arch/arm64/configs/gki_defconfig
123-
echo "CONFIG_KSU_SUSFS_SUS_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
124-
echo "CONFIG_KSU_SUSFS_AUTO_ADD_SUS_KSU_DEFAULT_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
125-
echo "CONFIG_KSU_SUSFS_AUTO_ADD_SUS_BIND_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
126-
echo "CONFIG_KSU_SUSFS_SUS_KSTAT=y" >> ./common/arch/arm64/configs/gki_defconfig
127-
echo "CONFIG_KSU_SUSFS_SUS_OVERLAYFS=y" >> ./common/arch/arm64/configs/gki_defconfig
128-
echo "CONFIG_KSU_SUSFS_TRY_UMOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
129-
echo "CONFIG_KSU_SUSFS_AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
130-
echo "CONFIG_KSU_SUSFS_SPOOF_UNAME=y" >> ./common/arch/arm64/configs/gki_defconfig
131-
echo "CONFIG_KSU_SUSFS_ENABLE_LOG=y" >> ./common/arch/arm64/configs/gki_defconfig
132-
echo "CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS=y" >> ./common/arch/arm64/configs/gki_defconfig
133-
echo "CONFIG_KSU_SUSFS_SPOOF_CMDLINE_OR_BOOTCONFIG=y" >> ./common/arch/arm64/configs/gki_defconfig
134-
echo "CONFIG_KSU_SUSFS_OPEN_REDIRECT=y" >> ./common/arch/arm64/configs/gki_defconfig
135-
echo "CONFIG_KSU_SUSFS_SUS_SU=y" >> ./common/arch/arm64/configs/gki_defconfig
136-
137-
- name: Final build steps (Apply final fixes and build kernel)
138-
run: |
139-
# Apply final edits to config files and build kernel image
140-
ed -i '2s/check_defconfig//' ./common/build.config.gki
141-
sed -i "s/dirty/'Wild+'/g" ./common/scripts/setlocalversion
142-
LTO=full BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
143-
144-
- name: Copy kernel image to AnyKernel3
40+
# Step 3: Install repo tool via apt
41+
- name: Install repo tool via apt
14542
run: |
146-
echo "Copying Image.lz4 to $CONFIG/AnyKernel3..."
147-
# Check if the boot.img file exists
148-
if [ "$ANDROID_VERSION" = "android12" ]; then
149-
mkdir bootimgs
150-
cp ./out/${ANDROID_VERSION}-${KERNEL_VERSION}/dist/Image ./bootimgs
151-
cp ./out/${ANDROID_VERSION}-${KERNEL_VERSION}/dist/Image.lz4 ./bootimgs
152-
cp ./out/${ANDROID_VERSION}-${KERNEL_VERSION}/dist/Image ../
153-
cp ./out/${ANDROID_VERSION}-${KERNEL_VERSION}/dist/Image.lz4 ../
154-
gzip -n -k -f -9 ../Image >../Image.gz
155-
cd ./bootimgs
156-
157-
GKI_URL=https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-"${DATE}"_r1.zip
158-
FALLBACK_URL=https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-2023-01_r1.zip
159-
status=$(curl -sL -w "%{http_code}" "$GKI_URL" -o /dev/null)
160-
161-
if [ "$status" = "200" ]; then
162-
curl -Lo gki-kernel.zip "$GKI_URL"
163-
else
164-
echo "[+] $GKI_URL not found, using $FALLBACK_URL"
165-
curl -Lo gki-kernel.zip "$FALLBACK_URL"
166-
fi
167-
168-
unzip gki-kernel.zip && rm gki-kernel.zip
169-
echo 'Unpack prebuilt boot.img'
170-
unpack_bootimg.py --boot_img="./boot-5.10.img"
171-
172-
echo 'Building Image.gz'
173-
gzip -n -k -f -9 Image >Image.gz
174-
175-
echo 'Building boot.img'
176-
mkbootimg.py --header_version 4 --kernel Image --output boot.img --ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level "${DATE}"
43+
sudo apt-get update
44+
sudo apt-get install -y repo

0 commit comments

Comments
 (0)