-
Notifications
You must be signed in to change notification settings - Fork 24
153 lines (136 loc) · 6.13 KB
/
PixelOS.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
name: Pixel OS
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/PixelOS-Devices/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
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=~/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 --depth=1
echo "TAG_NAME=PixelOS-v5.4.$(grep "^SUBLEVEL =" kernel/Makefile | awk '{print $3}')-$(date +"%Y%m%d")" >> $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 }}"
scripts/config --file "arch/arm64/configs/${{ github.event.inputs.KERNEL_DEFCONFIG }}" -e MODULES -e KPROBES -e HAVE_KPROBES -e KPROBE_EVENTS
- 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=~/clang
export PATH=${CLANG_PATH}/bin:${PATH}
export CLANG_TRIPLE=aarch64-linux-gnu-
export ARCH=arm64
export SUBARCH=arm64
echo "===================Setup Environment Again==================="
if [ ! -e "$CLANG_PATH/README.md" ]; then
git clone --depth=1 https://github.com/kdrag0n/proton-clang $CLANG_PATH
fi
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
# Disable LTO
if [[ $(echo "$(awk '/MemTotal/ {print $2}' /proc/meminfo) < 16000000" | bc -l) -eq 1 ]]; then
scripts/config --file out/.config -d LTO -d LTO_CLANG -d THINLTO -e LTO_NONE
fi
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
git clone https://gitlab.com/inferno0230/AnyKernel3 --depth=1 $KERNEL_PATH/AnyKernel3
if test -e $KERNEL_PATH/out/arch/arm64/boot/Image && test -d $KERNEL_PATH/AnyKernel3; then
zip_name="PixelOS-martini-${{ env.TAG_NAME }}.zip"
cd $KERNEL_PATH/AnyKernel3
cp $KERNEL_PATH/out/arch/arm64/boot/Image $KERNEL_PATH/AnyKernel3
zip -r ${zip_name} *
mv ${zip_name} $KERNEL_PATH/out/arch/arm64/boot
fi
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: PixelOS-martini-${{ env.TAG_NAME }}
path: |
kernel/AnyKernel3/*
- name: Upload to Release
if: github.event.inputs.RELEASE_CONFIG == 'true'
uses: ncipollo/release-action@v1
with:
artifacts: "kernel/out/arch/arm64/boot/PixelOS-martini-${{ env.TAG_NAME }}.zip"
tag: "PixelOS-martini-${{ env.TAG_NAME }}"
name: "PixelOS martini ${{ env.TAG_NAME }}"
allowUpdates: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}