|
@@ -409,155 +409,118 @@ jobs:
|
|
|
perl -pi -e 's/^\s*"protected_exports_list"\s*:\s*"android\/abi_gki_protected_exports_aarch64",\s*$//;' ./common/BUILD.bazel
|
|
perl -pi -e 's/^\s*"protected_exports_list"\s*:\s*"android\/abi_gki_protected_exports_aarch64",\s*$//;' ./common/BUILD.bazel
|
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
- - name: Build
|
|
|
|
|
- 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 CC="/usr/bin/ccache clang" || exit 1
|
|
|
|
|
|
|
+ - name: Detect Clang Version from Configs
|
|
|
|
|
+ shell: bash
|
|
|
|
|
+ run: |
|
|
|
|
|
+ KERNEL_PATH="$GITHUB_WORKSPACE/$CONFIG"
|
|
|
|
|
+ DEFCONFIG="$KERNEL_PATH/common/arch/arm64/configs/gki_defconfig"
|
|
|
|
|
+ BUILDCONFIG="$KERNEL_PATH/common/build.config.gki"
|
|
|
|
|
+ CONSTANTSCONFIG="$KERNEL_PATH/common/build.config.constants"
|
|
|
|
|
+ CLANG_VERSION=""
|
|
|
|
|
+ CLANG_BIN_PATH=""
|
|
|
|
|
+ if grep -q '^CONFIG_CLANG_VERSION=' "$DEFCONFIG" 2>/dev/null; then
|
|
|
|
|
+ CLANG_VERSION=$(grep '^CONFIG_CLANG_VERSION=' "$DEFCONFIG" 2>/dev/null | head -n1 | cut -d'=' -f2 | tr -d '"' | xargs)
|
|
|
|
|
+ elif grep -q '^CLANG_VERSION=' "$BUILDCONFIG" 2>/dev/null; then
|
|
|
|
|
+ CLANG_VERSION=$(grep '^CLANG_VERSION=' "$BUILDCONFIG" 2>/dev/null | head -n1 | cut -d'=' -f2 | xargs)
|
|
|
|
|
+ elif grep -q '^CLANG_VERSION=' "$CONSTANTSCONFIG" 2>/dev/null; then
|
|
|
|
|
+ CLANG_VERSION=$(grep '^CLANG_VERSION=' "$CONSTANTSCONFIG" 2>/dev/null | head -n1 | cut -d'=' -f2 | xargs)
|
|
|
|
|
+ CLANG_VERSION="clang-$CLANG_VERSION"
|
|
|
else
|
|
else
|
|
|
- tools/bazel build --disk_cache=/home/runner/.cache/bazel --config=fast --lto=thin //common:kernel_aarch64_dist || exit 1
|
|
|
|
|
|
|
+ echo "No clang version found in config, will auto-detect in prebuilts."
|
|
|
fi
|
|
fi
|
|
|
- ccache --show-stats
|
|
|
|
|
-
|
|
|
|
|
- - name: Create Bootimgs Folder and Copy Images for Android 12/13
|
|
|
|
|
- if: ${{ inputs.android_version == 'android12' || inputs.android_version == 'android13' }}
|
|
|
|
|
- run: |
|
|
|
|
|
- mkdir bootimgs
|
|
|
|
|
-
|
|
|
|
|
- echo "Creating bootimgs folder and copying images..."
|
|
|
|
|
- cp ./$CONFIG/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image ./bootimgs
|
|
|
|
|
- cp ./$CONFIG/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image.lz4 ./bootimgs
|
|
|
|
|
- cp ./$CONFIG/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image ./
|
|
|
|
|
- cp ./$CONFIG/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image.lz4 ./
|
|
|
|
|
-
|
|
|
|
|
- # Create gzip of the Image file
|
|
|
|
|
- gzip -n -k -f -9 ./Image > ./Image.gz
|
|
|
|
|
-
|
|
|
|
|
- - name: Create Bootimgs Folder and Copy Images for Android 14/15
|
|
|
|
|
- if: ${{ inputs.android_version == 'android14' || inputs.android_version == 'android15' }}
|
|
|
|
|
- run: |
|
|
|
|
|
- mkdir bootimgs
|
|
|
|
|
-
|
|
|
|
|
- echo "Creating bootimgs folder and copying images..."
|
|
|
|
|
- cp ./$CONFIG/bazel-bin/common/kernel_aarch64/Image ./bootimgs
|
|
|
|
|
- cp ./$CONFIG/bazel-bin/common/kernel_aarch64/Image.lz4 ./bootimgs
|
|
|
|
|
- cp ./$CONFIG/bazel-bin/common/kernel_aarch64/Image ./
|
|
|
|
|
- cp ./$CONFIG/bazel-bin/common/kernel_aarch64/Image.lz4 ./
|
|
|
|
|
-
|
|
|
|
|
- # Create gzip of the Image file
|
|
|
|
|
- gzip -n -k -f -9 ./Image > ./Image.gz
|
|
|
|
|
|
|
+ if [ -z "$CLANG_VERSION" ]; then
|
|
|
|
|
+ if [ -d "$KERNEL_PATH/prebuilts/clang/host/linux-x86" ]; then
|
|
|
|
|
+ CLANG_VERSION=$(ls -d "$KERNEL_PATH"/prebuilts/clang/host/linux-x86/clang-r*/ | tail -n 1 | xargs basename)
|
|
|
|
|
+ CLANG_BIN_PATH="$KERNEL_PATH/prebuilts/clang/host/linux-x86/$CLANG_VERSION/bin"
|
|
|
|
|
+ elif [ -d "$KERNEL_PATH/prebuilts-master/clang/host/linux-x86" ]; then
|
|
|
|
|
+ CLANG_VERSION=$(ls -d "$KERNEL_PATH"/prebuilts-master/clang/host/linux-x86/clang-r*/ | tail -n 1 | xargs basename)
|
|
|
|
|
+ CLANG_BIN_PATH="$KERNEL_PATH/prebuilts-master/clang/host/linux-x86/$CLANG_VERSION/bin"
|
|
|
|
|
+ else
|
|
|
|
|
+ CLANG_VERSION="clang"
|
|
|
|
|
+ CLANG_BIN_PATH="$KERNEL_PATH/prebuilts/clang/host/linux-x86/$CLANG_VERSION/bin" # dummy
|
|
|
|
|
+ fi
|
|
|
|
|
+ else
|
|
|
|
|
+ if [ -d "$KERNEL_PATH/prebuilts/clang/host/linux-x86" ]; then
|
|
|
|
|
+ CLANG_BIN_PATH="$KERNEL_PATH/prebuilts/clang/host/linux-x86/$CLANG_VERSION/bin"
|
|
|
|
|
+ else
|
|
|
|
|
+ CLANG_BIN_PATH="$KERNEL_PATH/prebuilts-master/clang/host/linux-x86/$CLANG_VERSION/bin"
|
|
|
|
|
+ fi
|
|
|
|
|
+ fi
|
|
|
|
|
+ echo "Detected CLANG_VERSION: $CLANG_VERSION"
|
|
|
|
|
+ echo "CLANG_VERSION=$CLANG_VERSION" >> $GITHUB_ENV
|
|
|
|
|
+ echo "CLANG_BIN_PATH=$CLANG_BIN_PATH" >> $GITHUB_ENV
|
|
|
|
|
|
|
|
- - name: Create ZIP Files for Different Formats
|
|
|
|
|
- run: |
|
|
|
|
|
- echo "Creating zip files for all formats..."
|
|
|
|
|
- cd ./AnyKernel3
|
|
|
|
|
-
|
|
|
|
|
- # Create and upload zip for each format
|
|
|
|
|
- ZIP_NAME="${{ inputs.kernelsu_variant }}-$KSUVER-${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-AnyKernel3.zip"
|
|
|
|
|
- echo "Creating zip file: $ZIP_NAME..."
|
|
|
|
|
- mv ../Image ./Image
|
|
|
|
|
- zip -r "../$ZIP_NAME" ./*
|
|
|
|
|
- rm ./Image
|
|
|
|
|
-
|
|
|
|
|
- ZIP_NAME="${{ inputs.kernelsu_variant }}-$KSUVER-${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-AnyKernel3-lz4.zip"
|
|
|
|
|
- echo "Creating zip file: $ZIP_NAME..."
|
|
|
|
|
- mv ../Image.lz4 ./Image.lz4
|
|
|
|
|
- zip -r "../$ZIP_NAME" ./*
|
|
|
|
|
- rm ./Image.lz4
|
|
|
|
|
-
|
|
|
|
|
- ZIP_NAME="${{ inputs.kernelsu_variant }}-$KSUVER-${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-AnyKernel3-gz.zip"
|
|
|
|
|
- echo "Creating zip file: $ZIP_NAME..."
|
|
|
|
|
- mv ../Image.gz ./Image.gz
|
|
|
|
|
- zip -r "../$ZIP_NAME" ./*
|
|
|
|
|
- rm ./Image.gz
|
|
|
|
|
-
|
|
|
|
|
- - name: Android 12 boot image build script
|
|
|
|
|
- if: ${{ inputs.android_version == 'android12' }}
|
|
|
|
|
|
|
+ - name: Build Kernel
|
|
|
|
|
+ shell: bash
|
|
|
run: |
|
|
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"
|
|
|
|
|
|
|
+ KERNEL_PATH="$GITHUB_WORKSPACE/$CONFIG"
|
|
|
|
|
+ CLANG_BIN_PATH="${{ env.CLANG_BIN_PATH }}"
|
|
|
|
|
+ CLANG_VERSION="${{ env.CLANG_VERSION }}"
|
|
|
|
|
+ if [ -d "$CLANG_BIN_PATH" ] && [ -x "$CLANG_BIN_PATH/clang" ]; then
|
|
|
|
|
+ echo "Adding Clang to PATH: $CLANG_BIN_PATH"
|
|
|
|
|
+ export PATH="$CLANG_BIN_PATH:$PATH"
|
|
|
|
|
+ SELECTED_CLANG="$CLANG_BIN_PATH/clang"
|
|
|
|
|
+ elif command -v clang >/dev/null 2>&1; then
|
|
|
|
|
+ SELECTED_CLANG="$(command -v clang)"
|
|
|
|
|
+ echo "Using system Clang: $SELECTED_CLANG"
|
|
|
|
|
+ exit 1
|
|
|
else
|
|
else
|
|
|
- echo "[+] $GKI_URL not found, using $FALLBACK_URL"
|
|
|
|
|
- curl -Lo gki-kernel.zip "$FALLBACK_URL"
|
|
|
|
|
|
|
+ echo "Error: No valid Clang binary found"
|
|
|
|
|
+ exit 1
|
|
|
|
|
+ fi
|
|
|
|
|
+ echo "Using Clang version: $($SELECTED_CLANG --version | head -n1)"
|
|
|
|
|
+ LLVM_TOOLS="clang ld.lld llvm-ar llvm-objcopy llvm-objdump llvm-nm"
|
|
|
|
|
+ MISSING_TOOLS=""
|
|
|
|
|
+ for tool in $LLVM_TOOLS; do
|
|
|
|
|
+ if ! command -v $tool >/dev/null 2>&1; then
|
|
|
|
|
+ MISSING_TOOLS="$MISSING_TOOLS $tool"
|
|
|
|
|
+ fi
|
|
|
|
|
+ done
|
|
|
|
|
+ if [ -n "$MISSING_TOOLS" ]; then
|
|
|
|
|
+ echo "Installing missing LLVM tools:$MISSING_TOOLS"
|
|
|
|
|
+ sudo apt-get update
|
|
|
|
|
+ sudo apt-get install -yq --no-install-recommends llvm
|
|
|
|
|
+ for tool in $MISSING_TOOLS; do
|
|
|
|
|
+ if ! command -v $tool >/dev/null 2>&1; then
|
|
|
|
|
+ echo "Error: Failed to install $tool"
|
|
|
|
|
+ exit 1
|
|
|
|
|
+ fi
|
|
|
|
|
+ done
|
|
|
|
|
+ fi
|
|
|
|
|
+ KERNEL_VERSION="${{ inputs.kernel_version }}"
|
|
|
|
|
+ if [[ "$KERNEL_VERSION" == "5.10" ]]; then
|
|
|
|
|
+ USE_LLVM_IAS=true
|
|
|
|
|
+ fi
|
|
|
|
|
+ cd "$KERNEL_PATH/common" || exit 1
|
|
|
|
|
+ MAKE_ARGS="LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- \
|
|
|
|
|
+ RUSTC=$KERNEL_PATH/prebuilts/rust/linux-x86/1.73.0b/bin/rustc \
|
|
|
|
|
+ PAHOLE=$KERNEL_PATH/prebuilts/kernel-build-tools/linux-x86/bin/pahole \
|
|
|
|
|
+ LD=ld.lld HOSTLD=ld.lld"
|
|
|
|
|
+ if [[ -v USE_LLVM_IAS ]]; then
|
|
|
|
|
+ MAKE_ARGS="LLVM_IAS=1 $MAKE_ARGS"
|
|
|
fi
|
|
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
|
|
|
|
|
|
|
+ make -j$(nproc --all) O=out $MAKE_ARGS KCFLAGS+="-Wno-error -O2 -flto=thin -fno-stack-protector" gki_defconfig || exit 1
|
|
|
|
|
+ make -j$(nproc --all) O=out $MAKE_ARGS KCFLAGS+="-Wno-error -O2 -flto=thin -fno-stack-protector" || exit 1
|
|
|
|
|
|
|
|
- - name: Android 13/14/15 boot image build script
|
|
|
|
|
- if: ${{ inputs.android_version == 'android13' || inputs.android_version == 'android14' || inputs.android_version == 'android15' }}
|
|
|
|
|
|
|
+ - name: Create Kernel ZIP
|
|
|
|
|
+ id: create_zip
|
|
|
|
|
+ shell: bash
|
|
|
run: |
|
|
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: Compress all img files with gzip
|
|
|
|
|
- run: |
|
|
|
|
|
- for image in *.img; do
|
|
|
|
|
- gzip -vnf9 "$image"
|
|
|
|
|
- done
|
|
|
|
|
|
|
+ CONFIG_DIR="$GITHUB_WORKSPACE/$CONFIG"
|
|
|
|
|
+ KERNEL_PATH="$CONFIG_DIR"
|
|
|
|
|
+ cp "$KERNEL_PATH/common/out/arch/arm64/boot/Image" "$GITHUB_WORKSPACE/AnyKernel3/Image"
|
|
|
|
|
+ cd "$GITHUB_WORKSPACE/AnyKernel3"
|
|
|
|
|
+ ZIP_NAME="${{ inputs.kernelsu_variant }}-$KSUVER-${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-AnyKernel3.zip"
|
|
|
|
|
+ ARTIFACTS_DIR="$CONFIG_DIR/artifacts"
|
|
|
|
|
+ echo "Creating zip file $ZIP_NAME in $ARTIFACTS_DIR..."
|
|
|
|
|
+ zip -r "$ARTIFACTS_DIR/$ZIP_NAME" ./*
|
|
|
|
|
|
|
|
- name: Upload Build Artifacts
|
|
- name: Upload Build Artifacts
|
|
|
uses: actions/upload-artifact@v4
|
|
uses: actions/upload-artifact@v4
|
|
|
with:
|
|
with:
|
|
|
name: ${{ inputs.kernelsu_variant }}-kernel-${{ env.CONFIG }}
|
|
name: ${{ inputs.kernelsu_variant }}-kernel-${{ env.CONFIG }}
|
|
|
path: |
|
|
path: |
|
|
|
- *.zip
|
|
|
|
|
|
|
+ $CONFIG/artifacts/*
|
|
|
*.img.gz
|
|
*.img.gz
|
|
|
*Image*
|
|
*Image*
|