-
Notifications
You must be signed in to change notification settings - Fork 39
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update build-kernel_by_clang383902b.yml
- Loading branch information
Showing
1 changed file
with
13 additions
and
183 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,7 +8,7 @@ on: | |
jobs: | ||
build: | ||
name: Build Kernel by ${{ github.actor }} | ||
runs-on: ubuntu-20.04 | ||
runs-on: ubuntu-22.04-arm | ||
if: github.event.repository.owner.id == github.event.sender.id | ||
env: | ||
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion" | ||
|
@@ -50,215 +50,45 @@ jobs: | |
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 install -y curl python2 llvm lld wget vim git ccache automake flex lzop bison gperf build-essential zip 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 x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev xsltproc unzip device-tree-compiler kmod python3 python3-pip | ||
sudo apt install -y docker.io curl python2 llvm lld wget vim git ccache automake flex lzop bison gperf build-essential zip 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 x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev xsltproc unzip device-tree-compiler kmod python3 python3-pip | ||
mkdir -p $GITHUB_WORKSPACE/kernel_workspace | ||
|
||
- name: Download clang-383902b | ||
run: | | ||
cd $GITHUB_WORKSPACE/kernel_workspace | ||
mkdir clang-aosp | ||
git clone https://github.com/tomxi1997/Toolchain.git clang-aosp --depth=1 | ||
git clone https://github.com/moby/moby.git | ||
cd moby | ||
git checkout 1a79695 | ||
docker buildx build -t tomxi/buider1 -o type=docker . | ||
- name: Download kernel source | ||
run: | | ||
cd $GITHUB_WORKSPACE/kernel_workspace | ||
git clone ${{ env.KERNEL_SOURCE }} -b ${{ env.KERNEL_SOURCE_BRANCH }} android-kernel --depth=1 | ||
- 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 "HAVE_SOURCE_BOOT_IMAGE=true" >> $GITHUB_ENV | ||
fi | ||
- name: Setup KernelSU-Next | ||
if: env.ENABLE_KERNELSU == 'true' | ||
run: | | ||
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | ||
curl -LSs "https://raw.githubusercontent.com/rifsxd/KernelSU-Next/next/kernel/setup.sh" | bash -s next | ||
- name: Setup Configuration for Kernel | ||
run: | | ||
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | ||
echo "CONFIG_MODULES=y" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | ||
echo "CONFIG_KSU=y" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | ||
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 | ||
if [ ${{ env.DISABLE_FST }} = true ]; then | ||
sed -i "s/CONFIG_CC_STACKPROTECTOR_STRONG=y/# CONFIG_CC_STACKPROTECTOR_STRONG is not set/g" arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | ||
fi | ||
- name: Setup LXC | ||
if: env.ENABLE_LXC == 'true' | ||
run: | | ||
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | ||
rm -rf utils | ||
git clone https://github.com/tomxi1997/lxc-docker-support-for-android.git utils | ||
echo 'source "utils/Kconfig"' >> "Kconfig" | ||
echo "CONFIG_DOCKER=y" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | ||
echo "CONFIG_BINFMT_MISC=y" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | ||
sed -i '/CONFIG_ANDROID_PARANOID_NETWORK/d' arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | ||
echo "# CONFIG_ANDROID_PARANOID_NETWORK is not set" >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | ||
#sed -i '/CONFIG_LOCALVERSION/d' arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | ||
#echo 'CONFIG_LOCALVERSION="-LXC-KernelSU-support_Pdx"' >> arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} | ||
chmod +x $GITHUB_WORKSPACE/kernel_workspace/android-kernel/utils/runcpatch.sh | ||
if [ -f $GITHUB_WORKSPACE/kernel_workspace/android-kernel/kernel/cgroup/cgroup.c ]; then | ||
sh $GITHUB_WORKSPACE/kernel_workspace/android-kernel/utils/runcpatch.sh $GITHUB_WORKSPACE/kernel_workspace/android-kernel/kernel/cgroup/cgroup.c | ||
fi | ||
if [ -f $GITHUB_WORKSPACE/kernel_workspace/android-kernel/kernel/cgroup.c ]; then | ||
sh $GITHUB_WORKSPACE/kernel_workspace/android-kernel/utils/runcpatch.sh $GITHUB_WORKSPACE/kernel_workspace/android-kernel/kernel/cgroup.c | ||
fi | ||
if [ -f $GITHUB_WORKSPACE/kernel_workspace/android-kernel/net/netfilter/xt_qtaguid.c ]; then | ||
patch -p0 < $GITHUB_WORKSPACE/kernel_workspace/android-kernel/utils/xt_qtaguid.patch | ||
fi | ||
- name: Setup Kali-Nethunter | ||
if: env.ENABLE_NETHUNTER == 'true' | ||
run: | | ||
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | ||
git clone https://github.com/tomxi1997/kali-nethunter_patches.git | ||
patch -p1 < kali-nethunter_patches/add-rtl88xxau-5.6.4.2-drivers.patch | ||
patch -p1 < kali-nethunter_patches/add-wifi-injection-4.14.patch | ||
#patch -p1 < kali-nethunter_patches/add-wifi-injection.patch | ||
patch -p1 < kali-nethunter_patches/fix-ath9k-naming-conflict.patch | ||
git clone https://github.com/Biohazardousrom/Kali-defconfig-checker.git kali | ||
cd kali | ||
chmod +x *.sh | ||
chmod +x check-kernel-config | ||
./check-kernel-config $GITHUB_WORKSPACE/kernel_workspace/android-kernel/arch/${{ env.ARCH }}/configs/${{ env.KERNEL_CONFIG }} -w | ||
- name: Setup ccache | ||
if: env.ENABLE_CCACHE == 'true' | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: build-kernel-${{ env.DEVICE }}${{ env.UPLOADNAME }} | ||
max-size: 2G | ||
|
||
- name: Build kernel | ||
run: | | ||
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel | ||
export KBUILD_BUILD_HOST=Github-Action | ||
export KBUILD_BUILD_USER=$(echo ${{ github.actor }} | tr A-Z a-z) | ||
if [ ${{ env.USE_GCC }} = true ]; then | ||
echo "ENABLE_CCACHE=flase" >> $GITHUB_ENV | ||
export PATH=$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/google_gcc/aarch64-linux-android-4.9/bin:$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/google_gcc/arm-linux-androideabi-4.9/bin:$PATH | ||
make -j$(nproc --all) O=out ARCH=${{ env.ARCH }} ${{ env.EXTRA_CMDS }} CROSS_COMPILE=aarch64-linux-android- CROSS_COMPILE_ARM32=arm-linux-androideabi- ${{ env.KERNEL_CONFIG }} | ||
make -j$(nproc --all) O=out ARCH=${{ env.ARCH }} ${{ env.EXTRA_CMDS }} CROSS_COMPILE=aarch64-linux-android- CROSS_COMPILE_ARM32=arm-linux-androideabi- | ||
fi | ||
if [ ${{ env.ENABLE_CCACHE }} = true ]; then | ||
export PATH=$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/google_clang/clang-r383902b-11.0.2/bin:$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/google_gcc/aarch64-linux-android-4.9/bin:$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/google_gcc/arm-linux-androideabi-4.9/bin:$PATH | ||
make -j$(nproc --all) CC="ccache clang" O=out ARCH=${{ env.ARCH }} ${{ env.CUSTOM_CMDS }} ${{ env.EXTRA_CMDS }} CROSS_COMPILE=aarch64-linux-android- CROSS_COMPILE_ARM32=arm-linux-androideabi- ${{ env.KERNEL_CONFIG }} | ||
make -j$(nproc --all) CC="ccache clang" O=out ARCH=${{ env.ARCH }} ${{ env.CUSTOM_CMDS }} ${{ env.EXTRA_CMDS }} CROSS_COMPILE=aarch64-linux-android- CROSS_COMPILE_ARM32=arm-linux-androideabi- | ||
else | ||
export PATH=$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/google_clang/clang-r383902b-11.0.2/bin:$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/google_gcc/aarch64-linux-android-4.9/bin:$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/google_gcc/arm-linux-androideabi-4.9/bin:$PATH | ||
make -j$(nproc --all) CC=clang O=out ARCH=${{ env.ARCH }} ${{ env.CUSTOM_CMDS }} ${{ env.EXTRA_CMDS }} CROSS_COMPILE=aarch64-linux-android- CROSS_COMPILE_ARM32=arm-linux-androideabi- ${{ env.KERNEL_CONFIG }} | ||
make -j$(nproc --all) CC=clang O=out ARCH=${{ env.ARCH }} ${{ env.CUSTOM_CMDS }} ${{ env.EXTRA_CMDS }} CROSS_COMPILE=aarch64-linux-android- CROSS_COMPILE_ARM32=arm-linux-androideabi- | ||
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' | ||
run: | | ||
cd $GITHUB_WORKSPACE/kernel_workspace | ||
git clone https://github.com/tomxi1997/AnyKernel3.git | ||
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 boot image with magiskboot | ||
if: env.HAVE_SOURCE_BOOT_IMAGE == 'true' && env.CHECK_FILE_IS_OK == 'true' && env.BUILD_BOOT_IMG == 'true' | ||
run: | | ||
cd $GITHUB_WORKSPACE/kernel_workspace | ||
wget -O magisk.tar.xz https://github.com/tomxi1997/KernelSU-Next-Action/releases/download/v1/magiskboot.tar.xz | ||
tar -xf magisk.tar.xz | ||
sudo chmod +x magiskboot | ||
mkdir -p ./tmp | ||
cp magiskboot ./tmp | ||
cp boot-source.img ./tmp/boot.img | ||
cd ./tmp | ||
./magiskboot unpack boot.img | ||
rm kernel | ||
cp ../android-kernel/out/arch/${{ env.ARCH }}/boot/${{ env.KERNEL_IMAGE_NAME }} ./kernel | ||
./magiskboot repack boot.img | ||
cp new-boot.img $GITHUB_WORKSPACE/kernel_workspace/boot.img | ||
cd .. | ||
if [ -f boot.img ]; then | ||
echo "MAKE_BOOT_IMAGE_IS_OK=true" >> $GITHUB_ENV | ||
else | ||
echo "Boot image is empty" | ||
exit 1 | ||
fi | ||
key: build- | ||
- 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.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.UPLOADNAME }}-${{ env.DEVICE }}-${{ env.BUILD_TIME }} | ||
path: kernel_workspace/AnyKernel3/* | ||
|
||
- name: Upload DTBO image | ||
if: env.CHECK_DTBO_IS_OK == 'true' | ||
- name: Upload docker img | ||
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: docker-arm64 | ||
path: kernel_workspace/moby/*.tar | ||
|
||
- name: Upload boot image | ||
if: env.MAKE_BOOT_IMAGE_IS_OK == 'true' | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: boot${{ env.UPLOADNAME }}-${{ env.DEVICE }}-${{ env.BUILD_TIME }} | ||
path: kernel_workspace/boot.img | ||
|