Skip to content

Commit

Permalink
Update build-kernel-a12.yml
Browse files Browse the repository at this point in the history
  • Loading branch information
TheWildJames authored Jan 11, 2025
1 parent 856826e commit 8d0e08d
Showing 1 changed file with 36 additions and 168 deletions.
204 changes: 36 additions & 168 deletions .github/workflows/build-kernel-a12.yml
Original file line number Diff line number Diff line change
@@ -1,176 +1,44 @@
name: Build A12 Kernel
name: Build Android 12 GKI Kernels with KernelSU-Next & SUSFS

on:
workflow_call: # This workflow will be triggered by the release.yml
workflow_dispatch: # Manually triggered workflow

jobs:
build-kernel:
runs-on: ubuntu-latest # Change the runner if necessary
strategy:
matrix:
kernel_configs:
- sub_level: 198
os_patch_level: 2024-01
- sub_level: 205
os_patch_level: 2024-03
- sub_level: 209
os_patch_level: 2024-05
- sub_level: 218
os_patch_level: 2024-08
- sub_level: 226
os_patch_level: 2024-11
build-kernel-a12:
runs-on: ubuntu-latest

steps:
- name: Set up kernel build configuration
run: |
# Set static values for Android version and kernel version
ANDROID_VERSION="android12"
KERNEL_VERSION="5.10"
# Formatted branch name for each build (e.g., android12-5.10-2024-01)
FORMATTED_BRANCH="${ANDROID_VERSION}-${KERNEL_VERSION}-${{ matrix.kernel_configs.os_patch_level }}"
echo "Formatted branch name: $FORMATTED_BRANCH"
# Create a directory in the format android_version-kernel_version-sub_level-os_patch_level
BUILD_DIR="${ANDROID_VERSION}-${KERNEL_VERSION}-${{ matrix.kernel_configs.sub_level }}-${{ matrix.kernel_configs.os_patch_level }}"
mkdir -p "$BUILD_DIR"
echo "Directory created: $BUILD_DIR"
# Step 0: Maximize build space
- name: Maximize build space
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 8192
temp-reserve-mb: 2048
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
remove-codeql: 'true'

# Step 1: Download prebuilt toolchain from AOSP
- name: Download prebuilt toolchain
run: |
AOSP_MIRROR=https://android.googlesource.com
BRANCH=main-kernel-build-2024 # Updated branch name
git clone $AOSP_MIRROR/platform/prebuilts/build-tools -b $BRANCH --depth 1 build-tools
git clone $AOSP_MIRROR/kernel/prebuilts/build-tools -b $BRANCH --depth 1 kernel-build-tools
git clone $AOSP_MIRROR/platform/system/tools/mkbootimg -b $BRANCH --depth 1 mkbootimg
# Step 2: Set environment variables for boot image build
- name: Build boot images
run: |
export AVBTOOL=$GITHUB_WORKSPACE/kernel-build-tools/linux-x86/bin/avbtool
export GZIP=$GITHUB_WORKSPACE/build-tools/path/linux-x86/gzip
export LZ4=$GITHUB_WORKSPACE/build-tools/path/linux-x86/lz4
export MKBOOTIMG=$GITHUB_WORKSPACE/mkbootimg/mkbootimg.py
export UNPACK_BOOTIMG=$GITHUB_WORKSPACE/mkbootimg/unpack_bootimg.py
# Change into the newly created directory
cd "$BUILD_DIR"
echo "Now in directory: $(pwd)"
- name: Clone AnyKernel3 repository
run: |
echo "Cloning AnyKernel3 repository..."
git clone https://github.com/TheWildJames/AnyKernel3.git -b "${ANDROID_VERSION}-${KERNEL_VERSION}"
- name: Clone susfs4ksu repository
run: |
echo "Cloning susfs4ksu repository..."
git clone https://gitlab.com/simonpunk/susfs4ksu.git -b "gki-${ANDROID_VERSION}-${KERNEL_VERSION}"
- name: Clone kernel_patches repository
run: |
echo "Cloning kernel_patches repository..."
git clone https://github.com/TheWildJames/kernel_patches.git
- name: Initialize and sync kernel source
run: |
echo "Initializing and syncing kernel source..."
# Initialize repo
repo init --depth=1 --u https://android.googlesource.com/kernel/manifest -b common-${FORMATTED_BRANCH}
# Get remote branch details
REMOTE_BRANCH=$(git ls-remote https://android.googlesource.com/kernel/common ${FORMATTED_BRANCH})
DEFAULT_MANIFEST_PATH=.repo/manifests/default.xml
# Check if the branch is deprecated and adjust the manifest
if grep -q deprecated <<< $REMOTE_BRANCH; then
echo "Found deprecated branch: $FORMATTED_BRANCH"
sed -i "s/\"${FORMATTED_BRANCH}\"/\"deprecated\/${FORMATTED_BRANCH}\"/g" $DEFAULT_MANIFEST_PATH
fi
# Verify repo version and sync the kernel source
repo --version
repo --trace sync -c -j$(nproc --all) --no-tags --fail-fast
- name: Set up KernelSU-Next
run: |
echo "Setting up KernelSU-Next..."
curl -LSs "https://raw.githubusercontent.com/rifsxd/KernelSU-Next/next/kernel/setup.sh" | bash -
- name: Apply SUSFS patches
run: |
echo "Applying SUSFS patches..."
# Copy the necessary patches to the appropriate directories
cp ../susfs4ksu/kernel_patches/KernelSU/10_enable_susfs_for_ksu.patch ./KernelSU-Next/
cp ../susfs4ksu/kernel_patches/50_add_susfs_in_gki-${ANDROID_VERSION}-${KERNEL_VERSION}.patch ./common/
cp ../susfs4ksu/kernel_patches/fs/* ./common/fs/
cp ../susfs4ksu/kernel_patches/include/linux/* ./common/include/linux/
# Apply the patches
cd ./KernelSU-Next
patch -p1 --forward < 10_enable_susfs_for_ksu.patch || true
cd ../common
patch -p1 < 50_add_susfs_in_gki-${ANDROID_VERSION}-${KERNEL_VERSION}.patch || true
- name: Apply Custom Patches
run: |
echo "Applying custom patches..."
# Copy the custom patches and apply them
cp ../../kernel_patches/69_hide_stuff.patch ./
patch -p1 -F 3 < 69_hide_stuff.patch
cd ..
cp ../kernel_patches/apk_sign.c_fix.patch ./
patch -p1 -F 3 < apk_sign.c_fix.patch
cp ../kernel_patches/core_hook.c_fix.patch ./
patch -p1 --fuzz=3 < ./core_hook.c_fix.patch
cp ../kernel_patches/selinux.c_fix.patch ./
patch -p1 -F 3 < selinux.c_fix.patch
- name: Add SUSFS configuration settings
run: |
echo "Adding configuration settings to gki_defconfig..."
echo "CONFIG_KSU=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_HAS_MAGIC_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_PATH=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_AUTO_ADD_SUS_KSU_DEFAULT_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_AUTO_ADD_SUS_BIND_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_KSTAT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_OVERLAYFS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_TRY_UMOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SPOOF_UNAME=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_ENABLE_LOG=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SPOOF_CMDLINE_OR_BOOTCONFIG=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_OPEN_REDIRECT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_SU=y" >> ./common/arch/arm64/configs/gki_defconfig
- name: Final build steps (Apply final fixes and build kernel)
run: |
# Apply final edits to config files and build kernel image
ed -i '2s/check_defconfig//' ./common/build.config.gki
sed -i "s/dirty/'Wild+'/g" ./common/scripts/setlocalversion
LTO=full BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
- name: Copy kernel image to AnyKernel3
# Step 3: Install repo tool via apt
- name: Install repo tool via apt
run: |
echo "Copying Image.lz4 to $CONFIG/AnyKernel3..."
# Check if the boot.img file exists
if [ "$ANDROID_VERSION" = "android12" ]; then
mkdir bootimgs
cp ./out/${ANDROID_VERSION}-${KERNEL_VERSION}/dist/Image ./bootimgs
cp ./out/${ANDROID_VERSION}-${KERNEL_VERSION}/dist/Image.lz4 ./bootimgs
cp ./out/${ANDROID_VERSION}-${KERNEL_VERSION}/dist/Image ../
cp ./out/${ANDROID_VERSION}-${KERNEL_VERSION}/dist/Image.lz4 ../
gzip -n -k -f -9 ../Image >../Image.gz
cd ./bootimgs
GKI_URL=https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-"${DATE}"_r1.zip
FALLBACK_URL=https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-2023-01_r1.zip
status=$(curl -sL -w "%{http_code}" "$GKI_URL" -o /dev/null)
if [ "$status" = "200" ]; then
curl -Lo gki-kernel.zip "$GKI_URL"
else
echo "[+] $GKI_URL not found, using $FALLBACK_URL"
curl -Lo gki-kernel.zip "$FALLBACK_URL"
fi
unzip gki-kernel.zip && rm gki-kernel.zip
echo 'Unpack prebuilt boot.img'
unpack_bootimg.py --boot_img="./boot-5.10.img"
echo 'Building Image.gz'
gzip -n -k -f -9 Image >Image.gz
echo 'Building boot.img'
mkbootimg.py --header_version 4 --kernel Image --output boot.img --ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level "${DATE}"
sudo apt-get update
sudo apt-get install -y repo

0 comments on commit 8d0e08d

Please sign in to comment.