Skip to content

Commit 28b78c1

Browse files
authored
Add build test for kernel 5.4, 5.10 (#66)
* Add build test for kernel 5.x * Fix gcc install error * Add quote to avoid error * Do not cancel CI jobs on fail * Update README in .test dir * Fix path error * Add kernel 5.4 + GCC 8.3 * Update README in .test dir * ci: Use .sh file * ci: Fix typo
1 parent 9fe6a27 commit 28b78c1

File tree

9 files changed

+14576
-25
lines changed

9 files changed

+14576
-25
lines changed

.github/workflows/driver-cross-build.yml

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,45 +16,47 @@ on:
1616
jobs:
1717
build:
1818
strategy:
19+
fail-fast: false
1920
matrix:
2021
env:
21-
- { RPI_LINUX_VER: rpi-4.1.y, CONFIG_FILE: config-4.1.21-v7+, RPI_LINUX_COMMIT_HASH: ff45bc0 }
22-
- { RPI_LINUX_VER: rpi-4.4.y, CONFIG_FILE: config-4.4.38-v7+, RPI_LINUX_COMMIT_HASH: c95b7f1 }
23-
- { RPI_LINUX_VER: rpi-4.14.y, CONFIG_FILE: config-4.14.34-v7+, RPI_LINUX_COMMIT_HASH: f70eae4 }
22+
- { RPI_LINUX_VER: rpi-4.1.y, CONFIG_FILE: config-4.1.21-v7+, RPI_LINUX_COMMIT_HASH: ff45bc0, GCC_VER: 4.8 }
23+
- { RPI_LINUX_VER: rpi-4.4.y, CONFIG_FILE: config-4.4.38-v7+, RPI_LINUX_COMMIT_HASH: c95b7f1, GCC_VER: 4.8 }
24+
- { RPI_LINUX_VER: rpi-4.14.y, CONFIG_FILE: config-4.14.34-v7+, RPI_LINUX_COMMIT_HASH: f70eae4, GCC_VER: 4.8 }
25+
- { RPI_LINUX_VER: rpi-5.4.y, CONFIG_FILE: config-5.4.83-v7+, RPI_LINUX_COMMIT_HASH: 76c49e6, GCC_VER: 6.3 }
26+
- { RPI_LINUX_VER: rpi-5.4.y, CONFIG_FILE: config-5.4.83-v7+, RPI_LINUX_COMMIT_HASH: 76c49e6, GCC_VER: 8.3 }
27+
- { RPI_LINUX_VER: rpi-5.10.y, CONFIG_FILE: config-5.10.11-v7+, RPI_LINUX_COMMIT_HASH: 6af8ae3, GCC_VER: 6.3 }
28+
- { RPI_LINUX_VER: rpi-5.10.y, CONFIG_FILE: config-5.10.11-v7+, RPI_LINUX_COMMIT_HASH: 6af8ae3, GCC_VER: 8.3 }
2429
runs-on: ubuntu-latest
2530
steps:
2631
- uses: actions/checkout@v2
2732

2833
- name: Install cross-build settings
34+
id: gcc
35+
env:
36+
GCC_VER: ${{ matrix.env.GCC_VER }}
37+
SRC_DIR: ${{ github.workspace }}
2938
run: |
30-
mkdir -p ${HOME}/repo/raspberrypi
31-
if [ -e ${HOME}/repo/raspberrypi/tools ]; then (cd ${HOME}/repo/raspberrypi/tools && git pull); else (cd ${HOME}/repo/raspberrypi && git clone --depth 1 https://github.com/raspberrypi/tools.git); fi
39+
source ./.test/step0.sh
40+
prepare_cross_compiler
41+
echo "::set-output name=path::${CROSS_COMPILE_PATH}"
3242
3343
- name: Install kernel headers
3444
env:
3545
RPI_LINUX_VER: ${{ matrix.env.RPI_LINUX_VER }}
3646
CONFIG_FILE: ${{ matrix.env.CONFIG_FILE }}
3747
RPI_LINUX_COMMIT_HASH: ${{ matrix.env.RPI_LINUX_COMMIT_HASH }}
48+
GCC_VER: ${{ matrix.env.GCC_VER }}
49+
CROSS_COMPILE_PATH: ${{ steps.gcc.outputs.path }}
50+
SRC_DIR: ${{ github.workspace }}
3851
run: |
39-
if [ -e ${HOME}/repo/raspberrypi/linux ]; then (cd ${HOME}/repo/raspberrypi/linux && git fetch origin && git checkout ${RPI_LINUX_VER} && git pull); else (cd ${HOME}/repo/raspberrypi && git clone -b ${RPI_LINUX_VER} https://github.com/raspberrypi/linux.git); fi
40-
cd ${HOME}/repo/raspberrypi/linux && make clean && git reset --hard HEAD && git checkout ${RPI_LINUX_COMMIT_HASH}
41-
cp "${GITHUB_WORKSPACE}/.test/${CONFIG_FILE}" ${HOME}/repo/raspberrypi/linux/.config
42-
make CROSS_COMPILE=${HOME}/repo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- ARCH=arm oldconfig
43-
make CROSS_COMPILE=${HOME}/repo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- ARCH=arm -j 8
52+
source ./.test/step1.sh
53+
install_kernel_headers
4454
4555
- name: Build kernel module
56+
env:
57+
CROSS_COMPILE_PATH: ${{ steps.gcc.outputs.path }}
58+
SRC_DIR: ${{ github.workspace }}
4659
run: |
47-
cd ${GITHUB_WORKSPACE}/src/drivers
48-
make -f ${GITHUB_WORKSPACE}/.test/Makefile.crosscompile
49-
50-
- name: Output kernel module info
51-
run: |
52-
uname -a
53-
echo ${{ matrix.env.RPI_LINUX_VER }} ${{ matrix.env.CONFIG_FILE }} ${{ matrix.env.RPI_LINUX_COMMIT_HASH }}
54-
cd ${GITHUB_WORKSPACE}/src/drivers
55-
modinfo rtmouse.ko
60+
source ./.test/step2.sh
61+
build_kernel_module
5662
57-
- name: Clean up kernel module
58-
run: |
59-
cd ${GITHUB_WORKSPACE}/src/drivers
60-
make -f ${GITHUB_WORKSPACE}/.test/Makefile.crosscompile clean

.test/Makefile.crosscompile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ obj-m := $(MODULES)
1010
all: $(MODULES:.o=.ko)
1111

1212
rtmouse.ko: rtmouse.c
13-
make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNEL_SRC) M=$(BUILD_DIR) V=1 modules
13+
make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNEL_SRC) M=$(BUILD_DIR) V=0 modules
1414

1515
clean:
16-
make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNEL_SRC) M=$(BUILD_DIR) V=1 clean
16+
make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNEL_SRC) M=$(BUILD_DIR) V=0 clean
1717

.test/README.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
This directory stores configuration files and scripts for build test.
2+
3+
To run build test on your local machine, modify config in `test.sh` and execute `./test.sh`.
4+
5+
# Appendix
6+
7+
## Dump kernel config file
8+
9+
Run the following commands in Raspberry Pi OS to dump the kernel config file.
10+
11+
```
12+
sudo modprobe configs
13+
zcat /proc/config.gz > config-$(uname -r)
14+
```
15+
16+
## GCC Versions
17+
18+
### https://github.com/raspberrypi/tools
19+
20+
GCC 4.8 or 4.9
21+
22+
23+
```
24+
$ ./tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc --version
25+
arm-linux-gnueabihf-gcc (crosstool-NG crosstool-ng-1.22.0-88-g8460611) 4.9.3
26+
Copyright (C) 2015 Free Software Foundation, Inc.
27+
This is free software; see the source for copying conditions. There is NO
28+
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
29+
```
30+
31+
```
32+
$ ./tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc --version
33+
arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) 4.8.3 20140303 (prerelease)
34+
Copyright (C) 2013 Free Software Foundation, Inc.
35+
This is free software; see the source for copying conditions. There is NO
36+
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
37+
```
38+
39+
### Raspbian Stretch
40+
41+
GCC 6.3
42+
43+
### Raspbian Buster
44+
45+
GCC 8.3
46+
47+
```
48+
$ lsb_release -a
49+
No LSB modules are available.
50+
Distributor ID: Raspbian
51+
Description: Raspbian GNU/Linux 10 (buster)
52+
Release: 10
53+
Codename: buster
54+
$ gcc --version
55+
gcc (Raspbian 8.3.0-6+rpi1) 8.3.0
56+
Copyright (C) 2018 Free Software Foundation, Inc.
57+
This is free software; see the source for copying conditions. There is NO
58+
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
59+
```
60+
61+
## REF
62+
63+
https://gcc.gnu.org/gcc-4.9/changes.html
64+
65+
https://github.com/abhiTronix/raspberry-pi-cross-compilers

0 commit comments

Comments
 (0)