Build Kernel #81
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build Kernel | |
on: | |
workflow_dispatch: | |
jobs: | |
build: | |
name: Build Kernel by ${{ github.actor }} | |
runs-on: ubuntu-latest | |
env: | |
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion" | |
CCACHE_NOHASHDIR: "true" | |
CCACHE_HARDLINK: "true" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Prepare Configuration | |
run: | | |
CONFIG_ENV=$(cat config.env | grep -w "CONFIG_ENV" | head -n 1 | cut -d "=" -f 2) | |
echo "KERNEL_SOURCE=$(cat $CONFIG_ENV | grep -w "KERNEL_SOURCE" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "KERNEL_SOURCE_BRANCH=$(cat $CONFIG_ENV | grep -w "KERNEL_SOURCE_BRANCH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "KERNEL_CONFIG=$(cat $CONFIG_ENV | grep -w "KERNEL_CONFIG" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "KERNEL_IMAGE_NAME=$(cat $CONFIG_ENV | grep -w "KERNEL_IMAGE_NAME" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "ARCH=$(cat $CONFIG_ENV | grep -w "ARCH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "ADD_LOCALVERSION_TO_FILENAME=$(cat $CONFIG_ENV | grep -w "ADD_LOCALVERSION_TO_FILENAME" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "EXTRA_CMDS=$(cat $CONFIG_ENV | grep -w "EXTRA_CMDS" | head -n 1 | cut -d ":" -f 2)" >> $GITHUB_ENV | |
echo "USE_CUSTOM_CLANG=$(cat $CONFIG_ENV | grep -w "USE_CUSTOM_CLANG" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUSTOM_CLANG_SOURCE=$(cat $CONFIG_ENV | grep -w "CUSTOM_CLANG_SOURCE" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUSTOM_CLANG_BRANCH=$(cat $CONFIG_ENV | grep -w "CUSTOM_CLANG_BRANCH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUSTOM_CMDS=$(cat $CONFIG_ENV | grep -w "CUSTOM_CMDS" | head -n 1 | cut -d ":" -f 2)" >> $GITHUB_ENV | |
echo "CLANG_BRANCH=$(cat $CONFIG_ENV | grep -w "CLANG_BRANCH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CLANG_VERSION=$(cat $CONFIG_ENV | grep -w "CLANG_VERSION" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "ENABLE_GCC_ARM64=$(cat $CONFIG_ENV | grep -w "ENABLE_GCC_ARM64" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "ENABLE_GCC_ARM32=$(cat $CONFIG_ENV | grep -w "ENABLE_GCC_ARM32" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "USE_CUSTOM_GCC_64=$(cat $CONFIG_ENV | grep -w "USE_CUSTOM_GCC_64" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUSTOM_GCC_64_SOURCE=$(cat $CONFIG_ENV | grep -w "CUSTOM_GCC_64_SOURCE" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUSTOM_GCC_64_BRANCH=$(cat $CONFIG_ENV | grep -w "CUSTOM_GCC_64_BRANCH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUSTOM_GCC_64_BIN=$(cat $CONFIG_ENV | grep -w "CUSTOM_GCC_64_BIN" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "USE_CUSTOM_GCC_32=$(cat $CONFIG_ENV | grep -w "USE_CUSTOM_GCC_32" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUSTOM_GCC_32_SOURCE=$(cat $CONFIG_ENV | grep -w "CUSTOM_GCC_32_SOURCE" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUSTOM_GCC_32_BRANCH=$(cat $CONFIG_ENV | grep -w "CUSTOM_GCC_32_BRANCH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUSTOM_GCC_32_BIN=$(cat $CONFIG_ENV | grep -w "CUSTOM_GCC_32_BIN" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "ENABLE_KERNELSU=$(cat $CONFIG_ENV | grep -w "ENABLE_KERNELSU" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "KERNELSU_TAG=$(cat $CONFIG_ENV | grep -w "KERNELSU_TAG" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "ADD_KPROBES_CONFIG=$(cat $CONFIG_ENV | grep -w "ADD_KPROBES_CONFIG" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "DISABLE-LTO=$(cat $CONFIG_ENV | grep -w "DISABLE-LTO" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "ADD_OVERLAYFS_CONFIG=$(cat $CONFIG_ENV | grep -w "ADD_OVERLAYFS_CONFIG" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "DISABLE_CC_WERROR=$(cat $CONFIG_ENV | grep -w "DISABLE_CC_WERROR" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "APPLY_KSU_PATCH=$(cat $CONFIG_ENV | grep -w "APPLY_KSU_PATCH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "USE_CUSTOM_ANYKERNEL3=$(cat $CONFIG_ENV | grep -w "USE_CUSTOM_ANYKERNEL3" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUSTOM_ANYKERNEL3_SOURCE=$(cat $CONFIG_ENV | grep -w "CUSTOM_ANYKERNEL3_SOURCE" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUSTOM_ANYKERNEL3_BRANCH=$(cat $CONFIG_ENV | grep -w "CUSTOM_ANYKERNEL3_BRANCH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "ENABLE_CCACHE=$(cat $CONFIG_ENV | grep -w "ENABLE_CCACHE" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "NEED_DTBO=$(cat $CONFIG_ENV | grep -w "NEED_DTBO" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "BUILD_BOOT_IMG=$(cat $CONFIG_ENV | grep -w "BUILD_BOOT_IMG" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "SOURCE_BOOT_IMAGE=$(cat $CONFIG_ENV | grep -w "SOURCE_BOOT_IMAGE" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "KSU_EXPECTED_SIZE=$(cat $CONFIG_ENV | grep -w "KSU_EXPECTED_SIZE" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "KSU_EXPECTED_HASH=$(cat $CONFIG_ENV | grep -w "KSU_EXPECTED_HASH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "REMOVE_UNUSED_PACKAGES=$(cat $CONFIG_ENV | grep -w "REMOVE_UNUSED_PACKAGES" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUT_PYTHON=$(cat $CONFIG_ENV | grep -w "CUT_PYTHON" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "KERNEL_DEPTH=$(cat $CONFIG_ENV | grep -w "KERNEL_DEPTH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "LXC_DOCKER=$(cat $CONFIG_ENV | grep -w "LXC_DOCKER" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "ENABLE_NETHUNTER=$(cat $CONFIG_ENV | grep -w "ENABLE_NETHUNTER" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "ENABLE_KVM=$(cat $CONFIG_ENV | grep -w "ENABLE_KVM" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "LXC_PATCH=$(cat $CONFIG_ENV | grep -w "LXC_PATCH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "MAKEFILE_PATCH=$(cat $CONFIG_ENV | grep -w "MAKEFILE_PATCH" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "CUSTOM_SCRIPT=$(cat $CONFIG_ENV | grep -w "CUSTOM_SCRIPT" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
echo "ANDROID_PARANOID_NETWORK_OFF=$(cat $CONFIG_ENV | grep -w "ANDROID_PARANOID_NETWORK_OFF" | head -n 1 | cut -d "=" -f 2)" >> $GITHUB_ENV | |
- name: Remove unused packages | |
if: env.REMOVE_UNUSED_PACKAGES == 'true' | |
uses: jlumbroso/free-disk-space@main | |
with: | |
tool-cache: ture | |
android: false | |
dotnet: true | |
haskell: true | |
large-packages: true | |
docker-images: true | |
swap-storage: false | |
- name: Set swap to 10G | |
uses: pierotofy/set-swap-space@master | |
with: | |
swap-size-gb: 10 | |
- name: Setup build kernel environment | |
run: | | |
echo "BUILD_TIME=$(TZ=Asia/Shanghai date "+%Y%m%d%H%M")" >> $GITHUB_ENV | |
echo "DEVICE=$(echo ${{ env.KERNEL_CONFIG }} | sed 's!vendor/!!;s/_defconfig//;s/_user//;s/-perf//')" >> $GITHUB_ENV | |
sudo apt-get update | |
sudo apt-get install git ccache automake flex lzop bison gperf build-essential zip curl zlib1g-dev g++-multilib libxml2-utils bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev squashfs-tools pngcrush schedtool dpkg-dev liblz4-tool make optipng maven libssl-dev pwgen libswitch-perl policycoreutils minicom libxml-sax-base-perl libxml-simple-perl bc libc6-dev-i386 lib32ncurses5-dev libx11-dev lib32z-dev libgl1-mesa-dev xsltproc unzip device-tree-compiler python2 python3 | |
mkdir -p $GITHUB_WORKSPACE/kernel_workspace | |
- name: Switch to python2.7 | |
if: env.CUT_PYTHON == 'true' | |
run: | | |
sudo ln -srf /bin/python2.7 /bin/python | |
- name: Download Clang-aosp | |
if: env.USE_CUSTOM_CLANG != 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace | |
mkdir clang-aosp | |
wget https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+archive/refs/heads/${{ env.CLANG_BRANCH }}/clang-${{ env.CLANG_VERSION }}.tar.gz | |
tar -C clang-aosp/ -zxvf clang-${{ env.CLANG_VERSION }}.tar.gz | |
- name: Download Custom-Clang | |
if: env.USE_CUSTOM_CLANG == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace | |
if [[ ${{ env.CUSTOM_CLANG_SOURCE }} =~ git ]]; then | |
if [[ ${{ env.CUSTOM_CLANG_SOURCE }} == *'.tar.gz' ]]; then | |
wget -O clang.tar.gz ${{ env.CUSTOM_CLANG_SOURCE }} | |
mkdir clang-aosp | |
tar -C clang-aosp/ -zxvf clang.tar.gz | |
elif [[ ${{ env.CUSTOM_CLANG_SOURCE }} == *'.tar.zst' ]]; then | |
wget -O clang.tar.zst ${{ env.CUSTOM_CLANG_SOURCE }} | |
mkdir clang-aosp | |
tar -C clang-aosp/ -I zstd -xf clang.tar.zst | |
else | |
git clone ${{ env.CUSTOM_CLANG_SOURCE }} -b ${{ env.CUSTOM_CLANG_BRANCH }} clang-aosp --depth=1 | |
fi | |
else | |
wget -O clang.zip ${{ env.CUSTOM_CLANG_SOURCE }} | |
mkdir clang-aosp | |
unzip clang.zip -d clang-aosp/ | |
fi | |
- name: Download Gcc-aosp | |
if: env.USE_CUSTOM_GCC_64 != 'true' || env.USE_CUSTOM_GCC_32 != 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace | |
if [ ${{ env.ENABLE_GCC_ARM64 }} = true ]; then | |
mkdir gcc-64 | |
wget -O gcc-aarch64.tar.gz https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/+archive/refs/tags/android-12.1.0_r27.tar.gz | |
tar -C gcc-64/ -zxvf gcc-aarch64.tar.gz | |
echo "GCC_64=CROSS_COMPILE=$GITHUB_WORKSPACE/kernel_workspace/gcc-64/bin/aarch64-linux-android-" >> $GITHUB_ENV | |
fi | |
if [ ${{ env.ENABLE_GCC_ARM32 }} = true ]; then | |
mkdir gcc-32 | |
wget -O gcc-arm.tar.gz https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/+archive/refs/tags/android-12.1.0_r27.tar.gz | |
tar -C gcc-32/ -zxvf gcc-arm.tar.gz | |
echo "GCC_32=CROSS_COMPILE_ARM32=$GITHUB_WORKSPACE/kernel_workspace/gcc-32/bin/arm-linux-androideabi-" >> $GITHUB_ENV | |
fi | |
- name: Download Custom-Gcc | |
if: env.USE_CUSTOM_GCC_64 == 'true' || env.USE_CUSTOM_GCC_32 == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace | |
if [ ${{ env.USE_CUSTOM_GCC_64 }} = true ]; then | |
if [[ ${{ env.CUSTOM_GCC_64_SOURCE }} =~ git ]]; then | |
if [[ ${{ env.CUSTOM_GCC_64_SOURCE }} == *'.tar.gz' ]]; then | |
wget -O gcc-64.tar.gz ${{ env.CUSTOM_CLANG_SOURCE }} | |
mkdir gcc-64 | |
tar -C gcc-64/ -zxvf gcc-64.tar.gz | |
else | |
git clone ${{ env.CUSTOM_GCC_64_SOURCE }} -b ${{ env.CUSTOM_GCC_64_BRANCH }} gcc-64 --depth=1 | |
fi | |
else | |
wget -O gcc-64.zip ${{ env.CUSTOM_GCC_64_SOURCE }} | |
mkdir gcc-64 | |
unzip gcc-64.zip -d gcc-64/ | |
fi | |
echo "GCC_64=CROSS_COMPILE=$GITHUB_WORKSPACE/kernel_workspace/gcc-64/bin/${{ env.CUSTOM_GCC_64_BIN }}" >> $GITHUB_ENV | |
fi | |
if [ ${{ env.USE_CUSTOM_GCC_32 }} = true ]; then | |
if [[ ${{ env.CUSTOM_GCC_32_SOURCE }} =~ git ]]; then | |
if [[ ${{ env.CUSTOM_GCC_32_SOURCE }} == *'.tar.gz' ]]; then | |
wget -O gcc-32.tar.gz ${{ env.CUSTOM_CLANG_SOURCE }} | |
mkdir gcc-32 | |
tar -C gcc-32/ -zxvf gcc-32.tar.gz | |
else | |
git clone ${{ env.CUSTOM_GCC_32_SOURCE }} -b ${{ env.CUSTOM_GCC_32_BRANCH }} gcc-32 --depth=1 | |
fi | |
else | |
wget -O gcc-32.zip ${{ env.CUSTOM_GCC_32_SOURCE }} | |
mkdir gcc-32 | |
unzip gcc-32.zip -d gcc-32/ | |
fi | |
echo "GCC_32=CROSS_COMPILE=$GITHUB_WORKSPACE/kernel_workspace/gcc-32/bin/${{ env.CUSTOM_GCC_32_BIN }}" >> $GITHUB_ENV | |
fi | |
- name: Download mkbootimg tools | |
if: env.BUILD_BOOT_IMG == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace | |
git clone https://android.googlesource.com/platform/system/tools/mkbootimg tools -b master-kernel-build-2022 --depth=1 | |
- name: Download kernel source | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace | |
if (( ${{ env.KERNEL_DEPTH }} > 0 )) ;then | |
git clone ${{ env.KERNEL_SOURCE }} -b ${{ env.KERNEL_SOURCE_BRANCH }} android-kernel --depth=${{ env.KERNEL_DEPTH }} | |
else | |
git clone ${{ env.KERNEL_SOURCE }} -b ${{ env.KERNEL_SOURCE_BRANCH }} android-kernel | |
fi | |
cd android-kernel | |
git submodule update --init --recursive | |
if [[ ${{ env.ADD_LOCALVERSION_TO_FILENAME }} == 'true' ]]; then | |
echo "LOCALVERSION=$(cat android-kernel/localversion)" >> $GITHUB_ENV | |
else | |
echo "LOCALVERSION=" >> $GITHUB_ENV | |
fi | |
- name: Download source boot image | |
if: env.BUILD_BOOT_IMG == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace | |
wget -O boot-source.img ${{ env.SOURCE_BOOT_IMAGE }} | |
if [ -f boot-source.img ]; then | |
echo "FORMAT_MKBOOTING=$(echo `tools/unpack_bootimg.py --boot_img=boot-source.img --format mkbootimg`)" >> $GITHUB_ENV | |
echo "HAVE_SOURCE_BOOT_IMAGE=true" >> $GITHUB_ENV | |
fi | |
- name: Setup Configuration for KVM | |
if: env.ENABLE_KVM == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | |
scripts/config --file arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} --enable CONFIG_VIRTUALIZATION | |
scripts/config --file arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} --enable CONFIG_KVM | |
scripts/config --file arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} --enable CONFIG_VHOST_NET | |
scripts/config --file arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} --enable CONFIG_VHOST_CROSS_ENDIAN_LEGACY | |
- name: Setup Configuration for LXC/Docker | |
if: env.LXC_DOCKER == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | |
bash $GITHUB_WORKSPACE/scripts/check-kernel-config/LXC-DOCKER-OPEN-CONFIG.sh arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} -w | |
- name: Insert LXC patch | |
if: env.LXC_PATCH == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | |
export LXC_PATCHES=$GITHUB_WORKSPACE/patches/lxc-docker | |
bash $GITHUB_WORKSPACE/scripts/patch/lxc-docker.sh | |
- name: Disable ANDROID_PARANOID_NETWORK | |
if: env.ANDROID_PARANOID_NETWORK_OFF == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | |
scripts/config --file arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} --disable ANDROID_PARANOID_NETWORK | |
- name: Setup Kali-Nethunter | |
if: env.ENABLE_NETHUNTER == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | |
bash $GITHUB_WORKSPACE/scripts/patch/kali-nethunter-kernel.sh | |
bash $GITHUB_WORKSPACE/scripts/check-kernel-config/Kali-defconfig-checker.sh arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} -w | |
- name: Insert Makefile patch | |
if: env.MAKEFILE_PATCH == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | |
patch -p1 < $GITHUB_WORKSPACE/patches/Makefile.patch | |
- name: Run customize script | |
if: env.CUSTOM_SCRIPT == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | |
bash $GITHUB_WORKSPACE/scripts/customize.sh arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
- name: Setup KernelSU | |
if: env.ENABLE_KERNELSU == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | |
rm -rf KernelSU drivers/kernelsu | |
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -s ${{ env.KERNELSU_TAG }} | |
KSU_VERSION=$(cd KernelSU && expr $(/usr/bin/git rev-list --count HEAD) + 10200) | |
echo "UPLOADNAME=-KernelSU_$KSU_VERSION" >> $GITHUB_ENV | |
- name: Setup Configuration for Kernel | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | |
if [ ${{ env.APPLY_KSU_PATCH }} = true ]; then | |
bash $GITHUB_WORKSPACE/patches/patches.sh | |
if grep -q "CONFIG_KSU" arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }}; then | |
sed -i 's/# CONFIG_KSU is not set/CONFIG_KSU=y/g' arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
sed -i 's/CONFIG_KSU=n/CONFIG_KSU=y/g' arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
else | |
echo "CONFIG_KSU=y" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
fi | |
fi | |
if [ ${{ env.ADD_KPROBES_CONFIG }} = true -a ${{ env.APPLY_KSU_PATCH }} != true ]; then | |
echo "CONFIG_MODULES=y" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
echo "CONFIG_KPROBES=y" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
echo "CONFIG_HAVE_KPROBES=y" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
echo "CONFIG_KPROBE_EVENTS=y" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
fi | |
if [ ${{ env.ADD_OVERLAYFS_CONFIG }} = true ]; then | |
echo "CONFIG_OVERLAY_FS=y" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
fi | |
if [ ${{ env.DISABLE-LTO }} = true ]; then | |
sed -i 's/CONFIG_LTO=y/CONFIG_LTO=n/' arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
sed -i 's/CONFIG_LTO_CLANG=y/CONFIG_LTO_CLANG=n/' arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
sed -i 's/CONFIG_THINLTO=y/CONFIG_THINLTO=n/' arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
echo "CONFIG_LTO_NONE=y" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
fi | |
if [ ${{ env.DISABLE_CC_WERROR }} = true ]; then | |
echo "CONFIG_CC_WERROR=n" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | |
fi | |
- name: Setup ccache | |
if: env.ENABLE_CCACHE == 'true' | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: build-kernel-${{ env.DEVICE }}${{ env.LOCALVERSION }}${{ env.UPLOADNAME }} | |
max-size: 2G | |
- name: Build kernel | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | |
export PATH=$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/bin:$PATH | |
export KBUILD_BUILD_HOST=Github-Action | |
export KBUILD_BUILD_USER=$(echo ${{ github.actor }} | tr A-Z a-z) | |
if [ ! -z ${{ env.KSU_EXPECTED_SIZE }} ] && [ ! -z ${{ env.KSU_EXPECTED_HASH }} ]; then | |
export KSU_EXPECTED_SIZE=${{ env.KSU_EXPECTED_SIZE }} | |
export KSU_EXPECTED_HASH=${{ env.KSU_EXPECTED_HASH }} | |
fi | |
make -j$(nproc --all) CC=clang O=out ARCH=${{ env.ARCH }} ${{ env.CUSTOM_CMDS }} ${{ env.EXTRA_CMDS }} ${{ env.GCC_64 }} ${{ env.GCC_32 }} ${{ env.KERNEL_CONFIG }} | |
if [ ${{ env.ENABLE_CCACHE }} = true ]; then | |
make -j$(nproc --all) CC="ccache clang" O=out ARCH=${{ env.ARCH }} ${{ env.CUSTOM_CMDS }} ${{ env.EXTRA_CMDS }} ${{ env.GCC_64 }} ${{ env.GCC_32 }} | |
else | |
make -j$(nproc --all) CC=clang O=out ARCH=${{ env.ARCH }} ${{ env.CUSTOM_CMDS }} ${{ env.EXTRA_CMDS }} ${{ env.GCC_64 }} ${{ env.GCC_32 }} | |
fi | |
- name: Check a kernel output files | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace | |
if [ -f android-kernel/out/arch/${{ env.ARCH }}/boot/${{ env.KERNEL_IMAGE_NAME }} ]; then | |
echo "CHECK_FILE_IS_OK=true" >> $GITHUB_ENV | |
else | |
echo "Kernel output file is empty" | |
exit 1 | |
fi | |
if [ ${{ env.NEED_DTBO }} = true ]; then | |
if [ -f android-kernel/out/arch/${{ env.ARCH }}/boot/dtbo.img ]; then | |
echo "CHECK_DTBO_IS_OK=true" >> $GITHUB_ENV | |
else | |
echo "DTBO image is empty" | |
exit 1 | |
fi | |
fi | |
- name: Make Anykernel3 | |
if: env.CHECK_FILE_IS_OK == 'true' && env.USE_CUSTOM_ANYKERNEL3 != 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace | |
git clone https://github.com/osm0sis/AnyKernel3 --depth=1 AnyKernel3 | |
sed -i 's/do.devicecheck=1/do.devicecheck=0/g' AnyKernel3/anykernel.sh | |
sed -i 's!block=/dev/block/platform/omap/omap_hsmmc.0/by-name/boot;!block=auto;!g' AnyKernel3/anykernel.sh | |
sed -i 's/is_slot_device=0;/is_slot_device=auto;/g' AnyKernel3/anykernel.sh | |
cp android-kernel/out/arch/${{ env.ARCH }}/boot/${{ env.KERNEL_IMAGE_NAME }} AnyKernel3/ | |
if [ ${{ env.CHECK_DTBO_IS_OK }} = true ]; then | |
cp android-kernel/out/arch/${{ env.ARCH }}/boot/dtbo.img AnyKernel3/ | |
fi | |
rm -rf AnyKernel3/.git* AnyKernel3/README.md | |
- name: Make Custom-Anykernel3 | |
if: env.CHECK_FILE_IS_OK == 'true' && env.USE_CUSTOM_ANYKERNEL3 == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace | |
if [[ ${{ env.CUSTOM_ANYKERNEL3_SOURCE }} =~ git ]]; then | |
if [[ ${{ env.CUSTOM_ANYKERNEL3_SOURCE }} == *'.tar.gz' ]]; then | |
wget -O AnyKernel3.tar.gz ${{ env.CUSTOM_ANYKERNEL3_SOURCE }} | |
mkdir AnyKernel3 | |
tar -C AnyKernel3/ -zxvf AnyKernel3.tar.gz | |
else | |
git clone ${{ env.CUSTOM_ANYKERNEL3_SOURCE }} -b ${{ env.CUSTOM_ANYKERNEL3_BRANCH }} --depth=1 AnyKernel3 | |
fi | |
else | |
wget -O AnyKernel3.zip ${{ env.CUSTOM_ANYKERNEL3_SOURCE }} | |
mkdir AnyKernel3 | |
unzip AnyKernel3.zip -d AnyKernel3/ | |
fi | |
cp android-kernel/out/arch/${{ env.ARCH }}/boot/${{ env.KERNEL_IMAGE_NAME }} AnyKernel3/ | |
if [ ${{ env.CHECK_DTBO_IS_OK }} = true ]; then | |
cp android-kernel/out/arch/${{ env.ARCH }}/boot/dtbo.img AnyKernel3/ | |
fi | |
rm -rf AnyKernel3/.git* AnyKernel3/README.md | |
- name: Extract ikconfig | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | |
scripts/extract-ikconfig out/arch/${{ env.ARCH }}/boot/${{ env.KERNEL_IMAGE_NAME }} | tee ../AnyKernel3/.config | |
- name: Make boot image | |
if: env.HAVE_SOURCE_BOOT_IMAGE == 'true' && env.CHECK_FILE_IS_OK == 'true' | |
run: | | |
cd $GITHUB_WORKSPACE/kernel_workspace | |
tools/unpack_bootimg.py --boot_img boot-source.img | |
cp android-kernel/out/arch/${{ env.ARCH }}/boot/${{ env.KERNEL_IMAGE_NAME }} out/kernel | |
tools/mkbootimg.py ${{ env.FORMAT_MKBOOTING }} -o boot.img | |
if [ -f boot.img ]; then | |
echo "MAKE_BOOT_IMAGE_IS_OK=true" >> $GITHUB_ENV | |
else | |
echo "Boot image is empty" | |
exit 1 | |
fi | |
- name: Upload ${{ env.KERNEL_IMAGE_NAME }} | |
if: env.CHECK_FILE_IS_OK == 'true' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.KERNEL_IMAGE_NAME }}${{ env.LOCALVERSION }}${{ env.UPLOADNAME }}-${{ env.DEVICE }}-${{ env.BUILD_TIME }} | |
path: kernel_workspace/android-kernel/out/arch/${{ env.ARCH }}/boot/${{ env.KERNEL_IMAGE_NAME }} | |
- name: Upload AnyKernel3 | |
if: env.CHECK_FILE_IS_OK == 'true' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: AnyKernel3${{ env.LOCALVERSION }}${{ env.UPLOADNAME }}-${{ env.DEVICE }}-${{ env.BUILD_TIME }} | |
path: kernel_workspace/AnyKernel3/* | |
- name: Upload DTBO image | |
if: env.CHECK_DTBO_IS_OK == 'true' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dtbo-${{ env.DEVICE }}-${{ env.BUILD_TIME }} | |
path: kernel_workspace/android-kernel/out/arch/${{ env.ARCH }}/boot/dtbo.img | |
- name: Upload boot image | |
if: env.MAKE_BOOT_IMAGE_IS_OK == 'true' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: boot${{ env.LOCALVERSION }}${{ env.UPLOADNAME }}-${{ env.DEVICE }}-${{ env.BUILD_TIME }} | |
path: kernel_workspace/boot.img |