forked from TommHeaven/linux_raspberrypi
-
Notifications
You must be signed in to change notification settings - Fork 0
129 lines (111 loc) · 3.87 KB
/
kernel-build.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
name: Pi kernel build tests
on:
pull_request:
paths-ignore:
- '.github/**'
branches: [ "rpi-*" ]
push:
paths-ignore:
- '.github/**'
branches: [ "rpi-*" ]
workflow_dispatch:
env:
NUM_JOBS: 3
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- name: bcm2711_arm64_rust
arch: arm64
defconfig: bcm2711_rust_defconfig
kernel: kernel8
target: aarch64-unknown-linux-gnu
# - name: bcm2835
# arch: arm
# defconfig: bcm2835_defconfig
# kernel: kernel
# - name: arm64
# arch: arm64
# defconfig: defconfig
# kernel: kernel8
# - name: bcmrpi
# arch: arm
# defconfig: bcmrpi_defconfig
# kernel: kernel
# - name: bcm2709
# arch: arm
# defconfig: bcm2709_defconfig
# kernel: kernel7
# - name: bcm2711
# arch: arm
# defconfig: bcm2711_defconfig
# kernel: kernel7l
# - name: bcm2711_arm64
# arch: arm64
# defconfig: bcm2711_defconfig
# kernel: kernel8
# - name: bcm2712
# arch: arm64
# defconfig: bcm2712_defconfig
# kernel: kernel_2712
steps:
- name: Update install
run:
sudo apt-get update
- name: Install toolchain
run:
if [[ "${{matrix.arch}}" == "arm64" ]]; then
sudo apt-get install gcc-aarch64-linux-gnu;
else
sudo apt-get install gcc-arm-linux-gnueabihf;
fi
timeout-minutes: 5
- name: Setup LLVM
uses: ZhongRuoyu/setup-llvm@v0
with:
llvm-version: 17
- name: Install rust
uses: dtolnay/rust-toolchain@stable
with:
target: ${{matrix.target}}
- uses: actions/checkout@v4
with:
fetch-depth: 1
clean: true
- name: Build kernel ${{matrix.name}}
run: |
rustup override set $(${{github.workspace}}/scripts/min-tool-version.sh rustc)
rustup component add rust-src rustfmt clippy
cargo install --locked --version $(${{github.workspace}}/scripts/min-tool-version.sh bindgen) bindgen-cli
export LLVM=1
make rustavailable
mkdir ${{github.workspace}}/build
export ARCH=${{matrix.arch}}
if [[ "$ARCH" == "arm64" ]]; then
export CROSS_COMPILE=aarch64-linux-gnu-
export DTS_SUBDIR=broadcom
export IMAGE=Image.gz
else
export CROSS_COMPILE=arm-linux-gnueabihf-
export DTS_SUBDIR=broadcom
export IMAGE=zImage
fi
make O=${{github.workspace}}/build ${{matrix.defconfig}}
# scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y
make O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} $IMAGE modules dtbs
mkdir -p ${{github.workspace}}/install/boot/overlays
make O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install
# cp ${{github.workspace}}/build/arch/${ARCH}/boot/dts/${DTS_SUBDIR}/*.dtb ${{github.workspace}}/install/boot/
# cp ${{github.workspace}}/build/arch/${ARCH}/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/
# cp ${{github.workspace}}/arch/${ARCH}/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/
# cp ${{github.workspace}}/build/arch/${ARCH}/boot/$IMAGE ${{github.workspace}}/install/boot/${{matrix.kernel}}.img
# - name: Tar build
# run: tar -cvf ${{matrix.name}}_build.tar -C ${{github.workspace}}/install .
# - name: Upload results
# uses: actions/upload-artifact@v4
# with:
# name: ${{matrix.name}}_build
# path: ${{matrix.name}}_build.tar
# retention-days: 90