Skip to content

Pixel OS Inline

Pixel OS Inline #6

name: Pixel OS Inline
on:
workflow_dispatch:
inputs:
RELEASE_CONFIG:
description: 'Upload to Releases'
required: true
default: true
type: boolean
KERNEL_SOURCE:
description: 'Kernel Source'
required: true
default: "https://github.com/Delphox/kernel_oneplus_sm8350.git"
type: string
KERNEL_SOURCE_BRANCH:
description: 'kernel Branch'
required: true
default: "fourteen"
type: string
KERNEL_DEFCONFIG:
description: 'Kernel Config'
required: true
default: "vendor/lahaina-qgki_defconfig"
type: string
ANYKERNEL3_SOURCE:
description: 'Anykernel3 Source'
required: true
default: "https://github.com/Delphox/AnyKernel3-op9rt.git"
type: string
ANYKERNEL3_SOURCE_BRANCH:
description: 'Anykernel3 Branch'
required: true
default: "martini"
type: string
KERNELSU_CONFIG:
description: 'Compile KernelSU'
required: true
default: true
type: boolean
CCACHE_CONFIG:
description: 'Use Ccache'
required: true
default: true
type: boolean
KERNELSU_TAG:
description: 'Choose KernelSU branch or tag'
required: false
default: main
type: string
jobs:
build:
runs-on: ubuntu-latest
env:
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion"
CCACHE_NOHASHDIR: "true"
CCACHE_MAXSIZE: "2G"
CCACHE_HARDLINK: "true"
steps:
- uses: actions/checkout@v3
- name: Ccache
if: github.event.inputs.CCACHE_CONFIG == 'true'
uses: hendrikmuhs/[email protected]
with:
key: PixelOS-inline
- name: Setup Environment
run: |
export CLANG_PATH=~/proton-clang
git clone --depth=1 https://github.com/kdrag0n/proton-clang $CLANG_PATH
sh -c "$(curl -sSL https://raw.githubusercontent.com/akhilnarang/scripts/master/setup/android_build_env.sh)"
sudo apt install --fix-missing
export LLVM_VERSION=13
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh $LLVM_VERSION
rm ./llvm.sh
sudo apt install --fix-missing
sudo ln -s --force /usr/bin/clang-$LLVM_VERSION /usr/bin/clang
sudo ln -s --force /usr/bin/ld.lld-$LLVM_VERSION /usr/bin/ld.lld
sudo ln -s --force /usr/bin/llvm-objdump-$LLVM_VERSION /usr/bin/llvm-objdump
sudo ln -s --force /usr/bin/llvm-ar-$LLVM_VERSION /usr/bin/llvm-ar
sudo ln -s --force /usr/bin/llvm-nm-$LLVM_VERSION /usr/bin/llvm-nm
sudo ln -s --force /usr/bin/llvm-strip-$LLVM_VERSION /usr/bin/llvm-strip
sudo ln -s --force /usr/bin/llvm-objcopy-$LLVM_VERSION /usr/bin/llvm-objcopy
sudo ln -s --force /usr/bin/llvm-readelf-$LLVM_VERSION /usr/bin/llvm-readelf
sudo ln -s --force /usr/bin/clang++-$LLVM_VERSION /usr/bin/clang++
- name: Git kernel
run: |
git clone "${{ github.event.inputs.KERNEL_SOURCE }}" -b "${{ github.event.inputs.KERNEL_SOURCE_BRANCH }}" kernel
echo "TAG_NAME=$(date -u +%d%m%Y%I%M)" >> $GITHUB_ENV
- name: Setup KernelSU
if: github.event.inputs.KERNELSU_CONFIG == 'true'
run: |
cd $GITHUB_WORKSPACE/kernel
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -s "${{ github.event.inputs.KERNELSU_TAG }}"
grep -q "CONFIG_MODULES=y" "arch/arm64/configs/${{ github.event.inputs.KERNEL_DEFCONFIG }}" || echo "CONFIG_MODULES=y" >> "arch/arm64/configs/${{ github.event.inputs.KERNEL_DEFCONFIG }}"
grep -q "CONFIG_KPROBES=y" "arch/arm64/configs/${{ github.event.inputs.KERNEL_DEFCONFIG }}" || echo "CONFIG_KPROBES=y" >> "arch/arm64/configs/${{ github.event.inputs.KERNEL_DEFCONFIG }}"
grep -q "CONFIG_HAVE_KPROBES=y" "arch/arm64/configs/${{ github.event.inputs.KERNEL_DEFCONFIG }}" || echo "CONFIG_HAVE_KPROBES=y" >> "arch/arm64/configs/${{ github.event.inputs.KERNEL_DEFCONFIG }}"
grep -q "CONFIG_KPROBE_EVENTS=y" "arch/arm64/configs/${{ github.event.inputs.KERNEL_DEFCONFIG }}" || echo "CONFIG_KPROBE_EVENTS=y" >> "arch/arm64/configs/${{ github.event.inputs.KERNEL_DEFCONFIG }}"
- name: Make kernel
run: |
cd $GITHUB_WORKSPACE/kernel
export KERNEL_DEFCONFIG=${{ github.event.inputs.KERNEL_DEFCONFIG }}
echo "===================Setup Export========================="
export KERNEL_PATH=$PWD
export CLANG_PATH=~/proton-clang
export PATH=${CLANG_PATH}/bin:${PATH}
export CLANG_TRIPLE=aarch64-linux-gnu-
export ARCH=arm64
export SUBARCH=arm64
echo "===================Setup Environment Again==================="
test -e "$CLANG_PATH/README.md" || git clone --depth=1 https://github.com/kdrag0n/proton-clang $CLANG_PATH
sudo apt install --fix-missing
echo "=========================Make=========================="
make O=out CC="ccache clang" CXX="ccache clang++" ARCH=arm64 CROSS_COMPILE=$CLANG_PATH/bin/aarch64-linux-gnu- CROSS_COMPILE_ARM32=$CLANG_PATH/bin/arm-linux-gnueabi- LD=ld.lld $KERNEL_DEFCONFIG
sed -i 's/CONFIG_LTO=y/CONFIG_LTO=n/' out/.config
sed -i 's/CONFIG_LTO_CLANG=y/CONFIG_LTO_CLANG=n/' out/.config
sed -i 's/CONFIG_THINLTO=y/CONFIG_THINLTO=n/' out/.config
echo "CONFIG_LTO_NONE=y" >> out/.config
make O=out CC="ccache clang" CXX="ccache clang++" ARCH=arm64 -j`nproc` CROSS_COMPILE=$CLANG_PATH/bin/aarch64-linux-gnu- CROSS_COMPILE_ARM32=$CLANG_PATH/bin/arm-linux-gnueabi- LD=ld.lld 2>&1 | tee kernel.log
- name: Create Anykernel3 file
run: |
cd $GITHUB_WORKSPACE/kernel
export KERNEL_PATH=$PWD
export ANYKERNEL3_SOURCE=${{ github.event.inputs.ANYKERNEL3_SOURCE }}
export ANYKERNEL3_SOURCE_BRANCH=${{ github.event.inputs.ANYKERNEL3_SOURCE_BRANCH }}
git clone -b $ANYKERNEL3_SOURCE_BRANCH $ANYKERNEL3_SOURCE AnyKernel3
mv $KERNEL_PATH/out/arch/arm64/boot/Image $KERNEL_PATH/AnyKernel3
cd $KERNEL_PATH/AnyKernel3
if test -e ./Image; then
zip -r Kernel.zip *
test -e ./tools/zipsigner.jar || wget -O ./tools/zipsigner.jar https://forum.xda-developers.com/attachments/zipsigner-3-0-jar.4586999/
java -jar ./tools/zipsigner.jar ./Kernel.zip ./PixelOS-Inline-martini-${{ env.TAG_NAME }}.zip
fi
- name: Upload Artifact
if: github.event.inputs.RELEASE_CONFIG == 'false'
uses: actions/upload-artifact@v3
with:
name: PixelOS-Inline-martini-${{ env.TAG_NAME }}
path: |
kernel/AnyKernel3/PixelOS-Inline-martini-${{ env.TAG_NAME }}.zip
kernel/repacker/vendor_dlkm.img
- name: Upload to Release
if: github.event.inputs.RELEASE_CONFIG == 'true'
uses: ncipollo/release-action@v1
with:
artifacts: "kernel/AnyKernel3/PixelOS-Inline-martini-${{ env.TAG_NAME }}.zip,kernel/repacker/vendor_dlkm.img"
tag: "PixelOS-Inline-martini-${{ env.TAG_NAME }}"
name: "PixelOS-Inline-martini-${{ env.TAG_NAME }}"
allowUpdates: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}