@@ -15,275 +15,123 @@ jobs:
1515 build-kernelsu-susfs :
1616 runs-on : ubuntu-latest
1717 env :
18- CCACHE_COMPILERCHECK : " %compiler% -dumpmachine; %compiler% -dumpversion"
19- CCACHE_NOHASHDIR : " true"
18+ # General Build Environment
2019 CCACHE_MAXSIZE : " 2G"
21- CCACHE_HARDLINK : " true"
22- KERNEL_CMDLINE : " ARCH=arm64 CLANG_TRIPLE=aarch64-linux-gnu- CROSS_COMPILE=aarch64-linux-androidkernel- CROSS_COMPILE_ARM32=arm-linux-gnueabi- LLVM=1 LLVM_IAS=1 O=out"
23- CONFIG : " ${{ inputs.repo }}"
24- KERNEL_DEFCONFIG : " lineage_sm8150_defconfig"
25- DEVICE_NAME : " oneplus7pro"
26- DEVICE_CODENAME : " glucamole"
27- KERNEL_SOURCE : " https://github.com/LineageOS/android_kernel_oneplus_sm8150"
28- KERNEL_BRANCH : " lineage-23.0"
29- DEFCONFIG_NAME : " defconfig"
30- KERNELSU_SOURCE : " https://github.com/rsuntk/KernelSU.git"
31- KERNELSU_BRANCH : " susfs-v1.5.7"
32- KERNELSU_NAME : " KernelSU"
20+ GITHUB_TOKEN : ${{ secrets.GH_PAT }}
21+
22+ # Kernel & Device Configuration
23+ KERNEL_SOURCE : " https://github.com/LineageOS/${{ inputs.repo }}"
24+ KERNEL_BRANCH : " lineage-23.0" # NOTE: lineage-23.0 branch does not exist. Use 21.0 or 22.0.
25+ KERNEL_VERSION : " 4.14" # Required for sm8150 patches
26+ KERNEL_DEFCONFIG : " defconfig"
27+ DEVICE_CODENAME : " guacamole" # Correct codename for OnePlus 7 Pro
28+ KERNEL_DIR : " device_kernel" # Define a consistent kernel directory
29+
30+ # KernelSU Configuration
31+ KERNELSU_SOURCE : " https://github.com/tiann/KernelSU.git"
32+ KERNELSU_BRANCH : " main" # Use the main branch for the latest version
33+ HOOK_METHOD : " syscall" # 'normal' or 'syscall' - choose your preferred hook method
34+
35+ # SUSFS Configuration
3336 SUSFS_ENABLE : " true"
34- SUSFS_FIXED : " true"
35- SUSFS_UPDATE : " true"
37+ SUSFS_SOURCE : " https://gitlab.com/simonpunk/susfs4ksu.git"
38+ SUSFS_BRANCH : " kernel-${{ env.KERNEL_VERSION }}"
39+
40+ # AnyKernel3 Configuration
3641 AK3_SOURCE : " https://github.com/ayuschatterjee/AnyKernel3"
3742 AK3_BRANCH : " master"
38- ROM_TEXT : " based_aosp_a16"
3943
4044 steps :
41- - name : Installing dependencies
45+ - name : Install Dependencies
4246 run : |
43- sudo apt update -y
44- sudo apt install -y gcc-aarch64-linux-gnu gcc-arm-linux-gnueabi clang-14 llvm-14 lld-14 binutils-aarch64-linux-gnu binutils make python3 libssl-dev build-essential bc bison flex unzip libssl-dev ca-certificates xz-utils mkbootimg cpio device-tree-compiler git git-lfs curl
45- sudo rm -rf /opt/ghc
46- sudo rm -rf "/usr/local/share/boost"
47- sudo rm -rf /usr/share/dotnet
48- sudo rm -rf "$AGENT_TOOLSDIRECTORY"
49- lsb_release -a
50- UBUNTU_VERSION=$(lsb_release -sr)
51- sudo apt-get update
47+ sudo apt-get update -y
48+ sudo apt-get install -y --no-install-recommends \
49+ bc bison build-essential ccache cpio curl flex git git-lfs \
50+ gcc-aarch64-linux-gnu gcc-arm-linux-gnueabi libssl-dev libelf-dev \
51+ clang llvm lld device-tree-compiler python3 unzip xz-utils zlib1g-dev
5252
53- if [ $UBUNTU_VERSION == "22.04" ]; then
54- 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
55- sudo apt-get install p7zip p7zip-full -y
56- else
57- 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 make optipng maven libssl-dev pwgen libswitch-perl policycoreutils minicom libxml-sax-base-perl libxml-simple-perl bc libc6-dev-i386 libx11-dev lib32z-dev libgl1-mesa-dev xsltproc unzip device-tree-compiler python3
58- sudo apt-get install zstd libc6 binutils libc6-dev-i386 gcc g++ p7zip p7zip-full -y
59- fi
60-
6153 - name : Setup ccache
6254 uses : hendrikmuhs/ccache-action@v1.2
6355 with :
64- key : build-kernel-${{ env.DEVICE_NAME }}${{ env.UPLOADNAME }}
65- max-size : 2G
56+ key : build-kernel-${{ env.DEVICE_CODENAME }}
57+ max-size : ${{ env.CCACHE_MAXSIZE }}
6658
67- - name : Clone AnyKernel3 and Other Dependencies
59+ - name : Clone Kernel Source and Dependencies
6860 run : |
69- echo "Cloning AnyKernel3 and other dependencies..."
61+ # Clone Kernel Source into the defined directory
62+ git clone --depth=1 --branch ${{ env.KERNEL_BRANCH }} ${{ env.KERNEL_SOURCE }} ${{ env.KERNEL_DIR }}
7063
71- ANYKERNEL_BRANCH="master"
72- SUSFS_BRANCH="kernel-4.14"
73-
74- # Clone repositories using the branch names
75- git clone https://github.com/ayuschatterjee/AnyKernel3.git -b "$ANYKERNEL_BRANCH"
76- git clone --depth=1 --single-branch https://gitlab.com/simonpunk/susfs4ksu.git -b "$SUSFS_BRANCH"
77- #cd susfs4ksu
78- #git checkout b5c3ada461a61c6ad033693b7a00494ead3a28fd
79- #cd ..
80- git clone https://github.com/TheWildJames/kernel_patches.git
81- git clone --depth=1 --single-branch --branch lineage-22.1 https://github.com/LineageOS/${{ inputs.repo }}
64+ # Clone other dependencies
65+ git clone --depth=1 --branch ${{ env.AK3_BRANCH }} ${{ env.AK3_SOURCE }} AnyKernel3
66+ git clone --depth=1 --branch ${{ env.KERNELSU_BRANCH }} ${{ env.KERNELSU_SOURCE }} KernelSU
67+ if [[ "${{ env.SUSFS_ENABLE }}" == "true" ]]; then
68+ git clone --depth=1 --branch ${{ env.SUSFS_BRANCH }} ${{ env.SUSFS_SOURCE }} susfs4ksu
69+ git clone --depth=1 https://github.com/TheWildJames/kernel_patches.git
70+ fi
8271
83- - name : Set KSU and SUSFS for DEFCONFIG
72+ - name : Integrate KernelSU and SUSFS
73+ working-directory : ./${{ env.KERNEL_DIR }}
8474 run : |
85- cd $GITHUB_WORKSPACE/device_kernel
86- echo "CONFIG_KSU=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
87- if [[ ${{ env.SUSFS_ENABLE }} == "true" ]]; then
88- echo "CONFIG_KSU_SUSFS=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
89- echo "CONFIG_KSU_SUSFS_HAS_MAGIC_MOUNT=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
90- echo "CONFIG_KSU_SUSFS_SUS_PATH=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
91- echo "CONFIG_KSU_SUSFS_SUS_MOUNT=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
92- echo "CONFIG_KSU_SUSFS_AUTO_ADD_SUS_KSU_DEFAULT_MOUNT=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
93- echo "CONFIG_KSU_SUSFS_AUTO_ADD_SUS_BIND_MOUNT=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
94- echo "CONFIG_KSU_SUSFS_SUS_KSTAT=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
95- echo "# CONFIG_KSU_SUSFS_SUS_OVERLAYFS is not set" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
96- echo "CONFIG_KSU_SUSFS_TRY_UMOUNT=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
97- echo "CONFIG_KSU_SUSFS_AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
98- echo "CONFIG_KSU_SUSFS_SPOOF_UNAME=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
99- echo "CONFIG_KSU_SUSFS_ENABLE_LOG=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
100- echo "CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
101- echo "CONFIG_KSU_SUSFS_SPOOF_CMDLINE_OR_BOOTCONFIG=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
102- echo "CONFIG_KSU_SUSFS_OPEN_REDIRECT=y" >> ./arch/arm64/configs/${{ env.DEFCONFIG_NAME }}
75+ # Integrate KernelSU
76+ ln -sf ../KernelSU/kernel ./drivers/kernelsu
77+ echo "obj-\$(CONFIG_KSU) += kernelsu/" >> drivers/Makefile
78+ sed -i '/endmenu/i\source "drivers/kernelsu/Kconfig"' drivers/Kconfig
79+ echo "KernelSU integrated."
80+
81+ # Add KSU and SUSFS options to defconfig
82+ echo "CONFIG_KSU=y" >> arch/arm64/configs/${{ env.KERNEL_DEFCONFIG }}
83+ if [[ "${{ env.SUSFS_ENABLE }}" == "true" ]]; then
84+ echo "CONFIG_KSU_SUSFS=y" >> arch/arm64/configs/${{ env.KERNEL_DEFCONFIG }}
10385 fi
86+ echo "Defconfig updated."
10487
105- - name : Set Anykernel3 and Others
106- run : |
107- cd $GITHUB_WORKSPACE/device_kernel
108-
109- # Variable
110- SUSFS_SOURCE=https://gitlab.com/simonpunk/susfs4ksu.git
111- SUSFS_BRANCH=kernel-${{ env.KERNEL_VERSION }}
112- KERNEL_PATCHES=https://github.com/JackA1ltman/NonGKI_Kernel_Patches.git
113- KERNEL_LOCATION=$(pwd)
114-
115- # Set Anykernel3
116- git clone ${{ env.AK3_SOURCE }} -b ${{ env.AK3_BRANCH }} Anykernel3 --depth=1
117-
118- # Set KernelSU(Manual)
119- git clone ${{ env.KERNELSU_SOURCE }} -b ${{ env.KERNELSU_BRANCH }} ${{ env.KERNELSU_NAME }}
120- mkdir -p "$KERNEL_LOCATION/drivers/kernelsu" && git clone --depth=1 --filter=blob:none --sparse -b 15.0 https://github.com/SOVIET-ANDROID/kernel_xiaomi_raphael tmp_ksu && cd tmp_ksu && git sparse-checkout set drivers/kernelsu && cp -r drivers/kernelsu/* "$KERNEL_LOCATION/drivers/kernelsu/" && cd .. && rm -rf tmp_ksu
121- ln -sf "$(realpath --relative-to="$KERNEL_LOCATION/drivers" "$KERNEL_LOCATION/${{ env.KERNELSU_NAME }}/kernel")" "kernelsu"
122- grep -q "kernelsu" "$KERNEL_LOCATION/drivers/Makefile" || printf "\nobj-\$(CONFIG_KSU) += kernelsu/\n" >> $KERNEL_LOCATION/drivers/Makefile
123- grep -q "source \"drivers/kernelsu/Kconfig\"" "$KERNEL_LOCATION/drivers/Kconfig" || sed -i "/endmenu/i\source \"drivers/kernelsu/Kconfig\"" "$KERNEL_LOCATION/drivers/Kconfig"
124- echo "KernelSU Settings done."
125- KSU_VERSION=$(cd ${{ env.KERNELSU_NAME }} && expr $(/usr/bin/git rev-list --count HEAD) + 10200)
126- echo "UPLOADNAME=-${{ env.KERNELSU_NAME }}_$KSU_VERSION" >> $GITHUB_ENV
127-
128- # Set SUSFS
129- git clone $SUSFS_SOURCE -b $SUSFS_BRANCH susfs4ksu --depth=1
130- git clone https://github.com/JackA1ltman/NonGKI_Kernel_Patches.git -b mi_kernel NonGKI_Kernel_Patches --depth=1
131- cp susfs4ksu/kernel_patches/fs/* fs/
132- cp susfs4ksu/kernel_patches/include/linux/* include/linux/
133-
134- - name : Patch Kernel for no-kprobe
135- run : |
136- cd $GITHUB_WORKSPACE
137- if grep -q "CONFIG_KSU" "device_kernel/fs/exec.c"; then
138- echo "Your kernel source code appears to have been manually patched, so this step is skipped."
139- else
140- if [[ ${{ env.HOOK_METHOD }} == "normal" ]]; then
141- if [[ -f "/tmp/Patches/normal_patches.sh" ]]; then
142- cp /tmp/Patches/normal_patches.sh device_kernel/
143- cd device_kernel
144- bash normal_patches.sh
145- echo "execuated patch successfully."
146- if [[ "${{ env.KERNELSU_NAME }}" != "KernelSU-Next" ]]; then
147- cp /tmp/Patches/backport_patches_early.sh ./
148- bash backport_patches_early.sh
149- echo "execuated backport patch early successfully. "
150- else
151- echo "your kernel needn't backport patch."
152- fi
153- else
154- echo "Cannot found normal_patches.sh in build project , please check u file existed in build project !"
155- false
156- fi
157- elif [[ ${{ env.HOOK_METHOD }} == "syscall" ]]; then
158- if [[ -f "/tmp/Patches/syscall_hook_patches_older.sh" ]] && [[ "${{ env.HOOK_OLDER }}" == "true" ]]; then
159- cp /tmp/Patches/syscall_hook_patches_older.sh device_kernel/
160- cd device_kernel
161- bash syscall_hook_patches_older.sh
162- echo "execuated syscall patch older successfully."
163- if [[ "${{ env.KERNELSU_NAME }}" != "KernelSU-Next" ]]; then
164- cp /tmp/Patches/backport_patches.sh ./
165- bash backport_patches.sh
166- if [ "${{ env.FIRST_VERSION }}" -lt 5 ] && [ "${{ env.SECOND_VERSION }}" -lt 10 ]; then
167- cp /tmp/Patches/Patch/backport_kernel_read_and_kernel_write_to_ksu.patch ./
168- patch -p1 < backport_kernel_read_and_kernel_write_to_ksu.patch || true
169- echo "execuated backport patch kernel_read and kernel_read successfully. If you current kernel version < 4.14, then u maybe manual fixed it."
170- fi
171- echo "execuated backport patch successfully. "
172- else
173- echo "your kernel needn't backport patch."
174- fi
175- elif [[ -f "/tmp/Patches/syscall_hook_patches.sh" ]]; then
176- cp /tmp/Patches/syscall_hook_patches.sh device_kernel/
177- cd device_kernel
178- bash syscall_hook_patches.sh
179- echo "execuated syscall patch successfully."
180- if [[ "${{ env.KERNELSU_NAME }}" != "KernelSU-Next" ]]; then
181- cp /tmp/Patches/backport_patches.sh ./
182- bash backport_patches.sh
183- if [ "${{ env.FIRST_VERSION }}" -lt 5 ] && [ "${{ env.SECOND_VERSION }}" -lt 10 ]; then
184- cp /tmp/Patches/Patch/backport_kernel_read_and_kernel_write_to_ksu.patch ./
185- patch -p1 < backport_kernel_read_and_kernel_write_to_ksu.patch || true
186- echo "execuated backport patch kernel_read and kernel_read successfully. If you current kernel version < 4.14, then u maybe manual fixed it."
187- fi
188- echo "execuated backport patch successfully."
189- fi
190- else
191- echo "Cannot found syscall_hook_patches.sh in build project , please check u file existed in build project !"
192- false
193- fi
194- else
195- echo "please input vaild option!"
196- false
197- fi
198- fi
199-
200- - name : Patch Kernel of SUSFS
88+ - name : Apply SUSFS Patches
20189 if : env.SUSFS_ENABLE == 'true'
90+ working-directory : ./${{ env.KERNEL_DIR }}
20291 run : |
203- cd $GITHUB_WORKSPACE/device_kernel/
204- cp susfs4ksu/kernel_patches/50_add_susfs_in_kernel-${{ env.KERNEL_VERSION }}.patch ./
92+ # Copy patches from the cloned susfs4ksu repo
93+ cp ../susfs4ksu/kernel_patches/fs/* fs/
94+ cp ../susfs4ksu/kernel_patches/include/linux/* include/linux/
20595
96+ # Apply the main SUSFS patch
97+ cp ../susfs4ksu/kernel_patches/50_add_susfs_in_kernel-${{ env.KERNEL_VERSION }}.patch ./
20698 patch -p1 < 50_add_susfs_in_kernel-${{ env.KERNEL_VERSION }}.patch || true
207-
208-
209- if [[ "${{ env.KERNELSU_NAME }}" == "KernelSU-Next" ]]; then
210- if [[ "${{ env.KERNELSU_SOURCE }}" =~ ".sh" && "${{ env.KERNELSU_BRANCH }}" =~ "susfs" ]]; then
211- echo "KernelSU-Next SuSFS Branch detected!"
212- elif [[ "${{ env.KERNELSU_SOURCE }}" =~ ".sh" ]]; then
213- git clone ${{ env.KERNELSU_SOURCE }} -b ${{ env.KERNELSU_BRANCH }}-susfs susfs_fixed
214- rsync -av --exclude='.git' susfs_fixed/kernel/ KernelSU-Next/kernel/
215- fi
216- elif [[ "${{ env.KERNELSU_SUS_PATCH }}" == "true" ]]; then
217- cp susfs4ksu/kernel_patches/KernelSU/10_enable_susfs_for_ksu.patch ./${{ env.KERNELSU_NAME }}
218- cd ${{ env.KERNELSU_NAME }}
219- patch -p1 < 10_enable_susfs_for_ksu.patch || true
220- fi
221-
222- - name : Updated SUSFS Version
223- if : env.SUSFS_UPDATE == 'true'
224- run : |
225- cd $GITHUB_WORKSPACE/device_kernel/
226-
227- # Upgrade 1.5.7
228- cp /tmp/Patches/Patch/susfs_upgrade_to_157.patch ./
229-
230- patch -p1 < susfs_upgrade_to_157.patch || true
231-
232- # Upgrade 1.5.8
233- cp /tmp/Patches/Patch/susfs_upgrade_to_158_${{ env.KERNEL_VERSION }}.patch ./
234-
235- patch -p1 < susfs_upgrade_to_158_${{ env.KERNEL_VERSION }}.patch || true
236-
237- # Extra SUSFS Patch
238- # cp NonGKI_Kernel_Patches/[patch_folder]/[patch_file].patch ./
239-
240- # patch -p1 < [patch_file].patch || true
241-
242- - name : Fixed Kernel Patch
243- if : env.SUSFS_ENABLE == 'true' && env.SUSFS_FIXED == 'true'
244- run : |
245- cd $GITHUB_WORKSPACE/device_kernel/
246- cp NonGKI_Kernel_Patches/k20p_aosp_sovietstar_a15/susfs_fixed.patch ./
247-
248- patch -p1 < susfs_fixed.patch || true
249-
250- # Upgrade SUSFS Version
251- cp /tmp/Patches/Patch/susfs_upgrade_to_157.patch ./
252-
253- patch -p1 < susfs_upgrade_to_157.patch || true
99+
100+ # Apply the patch to KernelSU itself to enable SUSFS support
101+ cp ../susfs4ksu/kernel_patches/KernelSU/10_enable_susfs_for_ksu.patch ../KernelSU/
102+ cd ../KernelSU/
103+ patch -p1 < 10_enable_susfs_for_ksu.patch || true
104+ echo "SUSFS patches applied."
254105
255106 - name : Build the Kernel
107+ working-directory : ./${{ env.KERNEL_DIR }}
256108 run : |
257- echo "Changing to configuration directory: $CONFIG..."
258- cd "$CONFIG"
259- export DTC_EXT=dtc
260- export PATH=$(pwd)/aarch64/bin:/usr/lib/llvm-14/bin:$PATH
109+ # Set Build Variables
261110 export ARCH=arm64
262- export LD=ld.lld
263- echo "Building the kernel..."
111+ export CLANG_TRIPLE=aarch64-linux-gnu-
112+ export CROSS_COMPILE=aarch64-linux-gnu-
113+ export CROSS_COMPILE_ARM32=arm-linux-gnueabi-
114+ export LLVM=1
115+ export LLVM_IAS=1
116+
117+ # Start Build
118+ make O=out ${{ env.KERNEL_DEFCONFIG }} CC="ccache clang"
119+ make O=out -j$(nproc --all) CC="ccache clang" LD=ld.lld
264120
265- make $KERNEL_CMDLINE $KERNEL_DEFCONFIG CC="ccache clang-14"
266- make $KERNEL_CMDLINE scripts CC="ccache clang-14"
267- make $KERNEL_CMDLINE prepare CC="ccache clang-14"
268- make $KERNEL_CMDLINE CC="ccache clang-14" LD="ld.lld" -j$(nproc --all)
269- cp out/arch/arm64/boot/Image ../AnyKernel3
270- cd ..
271- ls -la AnyKernel3/
121+ # Copy Image to AnyKernel3
122+ cp out/arch/arm64/boot/Image ../AnyKernel3/
123+ echo "Kernel build complete."
272124
273- - name : Package Kernel
125+ - name : Package Kernel into Flashable Zip
126+ working-directory : ./AnyKernel3
274127 run : |
275- echo "Packaging kernel from: $(pwd)"
276- ls -la AnyKernel3/
277- cd AnyKernel3
278- zip -r ../OP7_KSUN.zip *
279- echo "Created kernel zip:"
280- ls -l ../*.zip
281- cd ..
128+ KSU_VER=$(cd ../KernelSU && git rev-parse --short HEAD)
129+ ZIP_NAME="Kernel-sm8150-KSU-${KSU_VER}-$(date +%Y%m%d).zip"
130+ zip -r9 "../${ZIP_NAME}" *
131+ echo "OUTPUT_ZIP=${ZIP_NAME}" >> $GITHUB_ENV
132+ echo "Created kernel zip: ${ZIP_NAME}"
282133
283134 - name : Upload to Release
284135 uses : softprops/action-gh-release@v2
285136 with :
286- files : |
287- OP7_KSUN.zip
288- env :
289- GITHUB_TOKEN : ${{ secrets.GH_PAT }}
137+ files : ${{ env.OUTPUT_ZIP }}
0 commit comments