|
|
@@ -56,9 +56,26 @@ jobs:
|
|
|
echo "CONFIG set to: $CONFIG"
|
|
|
|
|
|
- name: Install dependencies
|
|
|
- if: ${{ inputs.use_make == true }}
|
|
|
run: sudo apt update && sudo apt install -y libelf-dev libssl-dev build-essential
|
|
|
|
|
|
+ - name: Download toolchain
|
|
|
+ run: |
|
|
|
+ AOSP_MIRROR=https://android.googlesource.com
|
|
|
+ BRANCH=main-kernel-build-2024
|
|
|
+ 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
|
|
|
+
|
|
|
+ - name: Set environment variables
|
|
|
+ run: |
|
|
|
+ echo "AVBTOOL=$GITHUB_WORKSPACE/kernel-build-tools/linux-x86/bin/avbtool" >> $GITHUB_ENV
|
|
|
+ echo "MKBOOTIMG=$GITHUB_WORKSPACE/mkbootimg/mkbootimg.py" >> $GITHUB_ENV
|
|
|
+ echo "UNPACK_BOOTIMG=$GITHUB_WORKSPACE/mkbootimg/unpack_bootimg.py" >> $GITHUB_ENV
|
|
|
+
|
|
|
+ - name: Set boot sign key
|
|
|
+ run: |
|
|
|
+ echo "BOOT_SIGN_KEY is not set. Using AOSP sign key..."
|
|
|
+ echo "BOOT_SIGN_KEY_PATH=$GITHUB_WORKSPACE/kernel-build-tools/linux-x86/share/avb/testkey_rsa2048.pem" >> $GITHUB_ENV
|
|
|
+
|
|
|
- name: Install Repo
|
|
|
run: |
|
|
|
mkdir -p ./git-repo
|
|
|
@@ -302,48 +319,11 @@ jobs:
|
|
|
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_OPEN_REDIRECT=y" >> ./common/arch/arm64/configs/gki_defconfig
|
|
|
+
|
|
|
echo "CONFIG_KSU_SUSFS_SUS_SU=n" >> ./common/arch/arm64/configs/gki_defconfig
|
|
|
|
|
|
- name: Change Kernel Name
|
|
|
- if: ${{ inputs.use_make == false }}
|
|
|
- run: |
|
|
|
- cd "$CONFIG"
|
|
|
- if [ -f "build/build.sh" ]; then
|
|
|
- perl -pi -e 's/-dirty//' ./common/scripts/setlocalversion
|
|
|
- perl -0777 -pi -e 's/(echo "\$res")(?!.*echo "\$res")/echo "\$res-WKSU-\$KSUVER-SUSFS-v1.5.9-Wild"/s' ./common/scripts/setlocalversion
|
|
|
- perl -pi -e 's{UTS_VERSION="\$\(echo \$UTS_VERSION \$CONFIG_FLAGS \$TIMESTAMP \| cut -b -\$UTS_LEN\)"}{UTS_VERSION="#1 SMP PREEMPT Sun Apr 20 04:20:00 UTC 2025"}' ./common/scripts/mkcompile_h
|
|
|
- else
|
|
|
- #Remove -maybe-dirty
|
|
|
- perl -pi -e 's/-maybe-dirty//g' ./build/kernel/kleaf/impl/stamp.bzl
|
|
|
-
|
|
|
- #Set Kernel Name
|
|
|
- echo "CONFIG_LOCALVERSION=\"-WKSU-$KSUVER-SUSFS-v1.5.9-Wild\"" >> ./common/arch/arm64/configs/gki_defconfig
|
|
|
-
|
|
|
- #Set Kernel Timestamp
|
|
|
- perl -pi -e 's/build-timestamp = \$\(or \$\(KBUILD_BUILD_TIMESTAMP\), \$\(build-timestamp-auto\)\)/build-timestamp = "Sun Apr 20 04:20:00 UTC 2025"/' ./common/init/Makefile
|
|
|
-
|
|
|
- #Remove Abi Exports and Error
|
|
|
- rm -rf ./common/android/abi_gki_protected_exports_*
|
|
|
- perl -pi -e 's/^\s*"protected_exports_list"\s*:\s*"android\/abi_gki_protected_exports_aarch64",\s*$//;' ./common/BUILD.bazel
|
|
|
- fi
|
|
|
-
|
|
|
- - name: Build
|
|
|
- if: ${{ inputs.use_make == false }}
|
|
|
- run : |
|
|
|
- set -e
|
|
|
- set -x
|
|
|
- cd "$CONFIG"
|
|
|
- echo "Building the kernel..."
|
|
|
- if [ -f "build/build.sh" ]; then
|
|
|
- LTO=thin BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh || exit 1
|
|
|
- else
|
|
|
- tools/bazel build --config=fast --lto=thin //common:kernel_aarch64_dist || exit 1
|
|
|
- fi
|
|
|
-
|
|
|
- - name: Change Kernel Name
|
|
|
- if: ${{ inputs.use_make == true }}
|
|
|
run: |
|
|
|
cd "$CONFIG"
|
|
|
perl -pi -e 's/-dirty//' ./common/scripts/setlocalversion
|
|
|
@@ -366,7 +346,6 @@ jobs:
|
|
|
perl -pi -e 's/^\s*"protected_exports_list"\s*:\s*"android\/abi_gki_protected_exports_aarch64",\s*$//;' ./common/BUILD.bazel
|
|
|
|
|
|
- name: Add Build based configs
|
|
|
- if: ${{ inputs.use_make == true }}
|
|
|
run: |
|
|
|
echo "Changing to configuration directory: $CONFIG..."
|
|
|
cd "$CONFIG"
|
|
|
@@ -376,8 +355,6 @@ jobs:
|
|
|
echo "CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=n" >> "./common/arch/arm64/configs/gki_defconfig"
|
|
|
|
|
|
- name: Detect Clang Version from Configs
|
|
|
- if: ${{ inputs.use_make == true }}
|
|
|
- shell: bash
|
|
|
run: |
|
|
|
KERNEL_PATH="$GITHUB_WORKSPACE/$CONFIG"
|
|
|
DEFCONFIG="$KERNEL_PATH/common/arch/arm64/configs/gki_defconfig"
|
|
|
@@ -474,21 +451,9 @@ jobs:
|
|
|
- name: Create Kernel ZIP
|
|
|
run: |
|
|
|
echo "Creating kernel ZIP..."
|
|
|
-
|
|
|
- if [ ${{ inputs.use_make }} == true ]; then
|
|
|
- # Copy Image for make=true builds
|
|
|
- cp $CONFIG/common/out/arch/arm64/boot/Image AnyKernel3/Image
|
|
|
- else
|
|
|
- # Copy Image for make=false builds based on Android version
|
|
|
- if [ "${{ inputs.android_version }}" = "android12" ] || [ "${{ inputs.android_version }}" = "android13" ]; then
|
|
|
- echo "Copying images for Android 12/13..."
|
|
|
- cp ./$CONFIG/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image AnyKernel3/Image
|
|
|
- elif [ "${{ inputs.android_version }}" = "android14" ] || [ "${{ inputs.android_version }}" = "android15" ]; then
|
|
|
- echo "Copying images for Android 14/15..."
|
|
|
- cp ./$CONFIG/bazel-bin/common/kernel_aarch64/Image AnyKernel3/Image
|
|
|
- fi
|
|
|
- fi
|
|
|
-
|
|
|
+
|
|
|
+ cp $CONFIG/common/out/arch/arm64/boot/Image AnyKernel3/Image
|
|
|
+
|
|
|
# Create ZIP file
|
|
|
cd AnyKernel3
|
|
|
# Use actual sublevel for LTS builds if available
|
|
|
@@ -499,7 +464,91 @@ jobs:
|
|
|
ZIP_NAME="WKSU-$KSUVER-${{ inputs.android_version }}-${{ inputs.kernel_version }}.$SUBLEVEL_FOR_NAME-${{ inputs.os_patch_level }}-AnyKernel3.zip"
|
|
|
echo "Creating zip file: $ZIP_NAME..."
|
|
|
zip -r "../$ZIP_NAME" ./*
|
|
|
-
|
|
|
+
|
|
|
+ - name: Create Bootimgs Folder and Copy Images
|
|
|
+ run: |
|
|
|
+ mkdir bootimgs
|
|
|
+
|
|
|
+ echo "Creating bootimgs folder and copying images..."
|
|
|
+ cp $CONFIG/common/out/arch/arm64/boot/Image ./bootimgs
|
|
|
+ cp $CONFIG/common/out/arch/arm64/boot/Image.lz4 ./bootimgs
|
|
|
+
|
|
|
+ # Create gzip of the Image file
|
|
|
+ gzip -n -k -f -9 ./bootimgs/Image
|
|
|
+
|
|
|
+ - name: Android 12 boot image build script
|
|
|
+ if: ${{ inputs.android_version == 'android12' }}
|
|
|
+ run: |
|
|
|
+ echo "Changing to configuration directory: $CONFIG..."
|
|
|
+ cd bootimgs
|
|
|
+
|
|
|
+ GKI_URL=https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-"${{ inputs.os_patch_level }}"_"${{ inputs.revision }}".zip
|
|
|
+ FALLBACK_URL=https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-2023-01_r1.zip
|
|
|
+
|
|
|
+ # Check if the GKI URL is available
|
|
|
+ echo "Checking if GKI kernel URL is reachable: $GKI_URL"
|
|
|
+ status=$(curl -sL -w "%{http_code}" "$GKI_URL" -o /dev/null)
|
|
|
+
|
|
|
+ if [ "$status" = "200" ]; then
|
|
|
+ echo "[+] Downloading from GKI_URL"
|
|
|
+ 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 the downloaded kernel and remove the zip
|
|
|
+ echo "Unzipping the downloaded kernel..."
|
|
|
+ unzip gki-kernel.zip && rm gki-kernel.zip
|
|
|
+
|
|
|
+ echo "Unpacking boot.img..."
|
|
|
+ FULL_PATH=$(pwd)/boot-5.10.img
|
|
|
+ echo "Unpacking using: $FULL_PATH"
|
|
|
+
|
|
|
+ echo "Running unpack_bootimg.py..."
|
|
|
+ $UNPACK_BOOTIMG --boot_img="$FULL_PATH"
|
|
|
+
|
|
|
+ # Create gzip of the Image file
|
|
|
+ gzip -n -k -f -9 ./Image > ./Image.gz
|
|
|
+
|
|
|
+ echo "Building boot.img"
|
|
|
+ $MKBOOTIMG --header_version 4 --kernel Image --output boot.img --ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level "${{ inputs.os_patch_level }}"
|
|
|
+ $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
|
|
|
+ cp ./boot.img ../${{ inputs.kernelsu_variant }}-$KSUVER-${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-boot.img
|
|
|
+
|
|
|
+ echo "Building boot-gz.img"
|
|
|
+ $MKBOOTIMG --header_version 4 --kernel Image.gz --output boot-gz.img --ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level "${{ inputs.os_patch_level }}"
|
|
|
+ $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot-gz.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
|
|
|
+ cp ./boot-gz.img ../${{ inputs.kernelsu_variant }}-$KSUVER-${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-boot-gz.img
|
|
|
+
|
|
|
+ echo "Building boot-lz4.img"
|
|
|
+ $MKBOOTIMG --header_version 4 --kernel Image.lz4 --output boot-lz4.img --ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level "${{ inputs.os_patch_level }}"
|
|
|
+ $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot-lz4.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
|
|
|
+ cp ./boot-lz4.img ../${{ inputs.kernelsu_variant }}-$KSUVER-${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-boot-lz4.img
|
|
|
+
|
|
|
+ - name: Android 13/14/15 boot image build script
|
|
|
+ if: ${{ inputs.android_version == 'android13' || inputs.android_version == 'android14' || inputs.android_version == 'android15' }}
|
|
|
+ run: |
|
|
|
+ cd bootimgs
|
|
|
+
|
|
|
+ # Create gzip of the Image file
|
|
|
+ gzip -n -k -f -9 ./Image > ./Image.gz
|
|
|
+
|
|
|
+ echo "Building boot.img"
|
|
|
+ $MKBOOTIMG --header_version 4 --kernel Image --output boot.img
|
|
|
+ $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
|
|
|
+ cp ./boot.img ../${{ inputs.kernelsu_variant }}-$KSUVER-${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-boot.img
|
|
|
+
|
|
|
+ echo "Building boot-gz.img"
|
|
|
+ $MKBOOTIMG --header_version 4 --kernel Image.gz --output boot-gz.img
|
|
|
+ $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot-gz.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
|
|
|
+ cp ./boot-gz.img ../${{ inputs.kernelsu_variant }}-$KSUVER-${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-boot-gz.img
|
|
|
+
|
|
|
+ echo "Building boot-lz4.img"
|
|
|
+ $MKBOOTIMG --header_version 4 --kernel Image.lz4 --output boot-lz4.img
|
|
|
+ $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot-lz4.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
|
|
|
+ cp ./boot-lz4.img ../${{ inputs.kernelsu_variant }}-$KSUVER-${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-boot-lz4.img
|
|
|
+
|
|
|
- name: Upload Build Artifacts
|
|
|
uses: actions/upload-artifact@v4
|
|
|
with:
|