Skip to content

Commit 3570916

Browse files
committed
ayufan: add CI support with dev.mk
1 parent 0cc8484 commit 3570916

File tree

5 files changed

+167
-1
lines changed

5 files changed

+167
-1
lines changed

.github/workflows/build.yaml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
on: [push]
2+
3+
env:
4+
RELEASE_START: 1150 # 1150, as this is latest build by GitLab CI
5+
6+
jobs:
7+
build:
8+
runs-on: ubuntu-24.04-arm
9+
container: ayufan/rock64-dockerfiles:bookworm
10+
steps:
11+
- name: Checkout
12+
uses: actions/checkout@v3
13+
- name: Install Docker binary
14+
run: |
15+
apt-get -y update
16+
apt-get -y install docker.io
17+
- name: Set up QEMU
18+
uses: docker/setup-qemu-action@v2
19+
- name: Configure ccache
20+
run: |
21+
echo "CCACHE_DIR=$PWD/out/ccache" >> $GITHUB_ENV
22+
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
23+
- name: Cache Primes
24+
id: cache-ccache
25+
uses: actions/cache@v4
26+
with:
27+
path: out/ccache
28+
key: ${{ runner.os }}-ccache
29+
- name: Reset ccache statistics
30+
run: ccache -M 0 -F 0
31+
- name: Build package
32+
run: |
33+
export RELEASE=$(($RELEASE_START+$GITHUB_RUN_NUMBER))
34+
./dev-make kernel-package
35+
- name: Release package
36+
env:
37+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38+
run: |
39+
set -x
40+
41+
export RELEASE=$(($RELEASE_START+$GITHUB_RUN_NUMBER))
42+
export RELEASE_NAME="$(./dev-make version)"
43+
export RELEASE_TITLE="$(./dev-make version)"
44+
export DESCRIPTION="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID"
45+
46+
github-release release \
47+
--tag "${RELEASE_NAME}" \
48+
--name "${RELEASE_TITLE}" \
49+
--user "${GITHUB_REPOSITORY%/*}" \
50+
--repo "${GITHUB_REPOSITORY#*/}" \
51+
--description "${DESCRIPTION}" \
52+
--target "${GITHUB_SHA}" \
53+
--draft
54+
55+
sleep 3s # allow to update release
56+
57+
for i in ../*$(./dev-make info)*.deb; do
58+
github-release upload \
59+
--tag "${RELEASE_NAME}" \
60+
--name "$(basename "${i}")" \
61+
--user "${GITHUB_REPOSITORY%/*}" \
62+
--repo "${GITHUB_REPOSITORY#*/}" \
63+
--file "${i}"
64+
done
65+
66+
github-release edit \
67+
--tag "${RELEASE_NAME}" \
68+
--name "${RELEASE_TITLE}" \
69+
--user "${GITHUB_REPOSITORY%/*}" \
70+
--repo "${GITHUB_REPOSITORY#*/}" \
71+
--description "${DESCRIPTION}"
72+
73+
rm ../*$(./dev-make info)*.deb

dev-make

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/bash
2+
3+
exec make -f dev.mk "$@"

dev-shell

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/bash
2+
3+
CURDIR="$PWD"
4+
5+
exec docker run \
6+
--rm \
7+
-it \
8+
-e HOME -v "${HOME}:${HOME}" \
9+
-e USER \
10+
-u "$(id -u):$(id -g)" \
11+
$(id -Gz | xargs -0 -n1 -I{} echo "--group-add={}") \
12+
-v /etc/passwd:/etc/passwd:ro \
13+
-v /dev/bus/usb:/dev/bus/usb \
14+
-v "${SSH_AUTH_SOCK}:${SSH_AUTH_SOCK}" \
15+
-e SSH_AUTH_SOCK \
16+
--privileged \
17+
-h rock64-build-env \
18+
-v "${CURDIR}:${CURDIR}" \
19+
-w "${CURDIR}" \
20+
ayufan/rock64-dockerfiles:bookworm \
21+
"$@"

dev.mk

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
RELEASE ?=
2+
KERNEL_DEFCONFIG ?= rockchip_linux_defconfig
3+
KERNEL_VERSION ?= $(shell $(KERNEL_MAKE) -s kernelversion)
4+
KERNEL_RELEASE ?= $(shell $(KERNEL_MAKE) -s kernelrelease)
5+
KDEB_PKGVERSION ?= $(KERNEL_VERSION)-$(RELEASE)-rockchip-ayufan
6+
7+
KERNEL_MAKE ?= make \
8+
ARCH=arm64 \
9+
HOSTCC=aarch64-linux-gnu-gcc \
10+
CROSS_COMPILE="ccache aarch64-linux-gnu-"
11+
12+
.PHONY: .scmversion
13+
.scmversion:
14+
ifneq (,$(RELEASE))
15+
@echo "-$(RELEASE)-rockchip-ayufan-g$$(git rev-parse --short HEAD)" > .scmversion
16+
else
17+
@echo "-rockchip-dev" > .scmversion
18+
endif
19+
20+
.config: arch/arm64/configs/$(KERNEL_DEFCONFIG)
21+
$(KERNEL_MAKE) $(KERNEL_DEFCONFIG)
22+
23+
version:
24+
@echo "$(KDEB_PKGVERSION)"
25+
26+
.PHONY: info
27+
info: .config .scmversion
28+
@echo $(KERNEL_RELEASE)
29+
30+
.PHONY: kernel-menuconfig
31+
kernel-menuconfig:
32+
$(KERNEL_MAKE) $(KERNEL_DEFCONFIG)
33+
$(KERNEL_MAKE) HOSTCC=gcc menuconfig
34+
$(KERNEL_MAKE) savedefconfig
35+
mv defconfig arch/arm64/configs/$(KERNEL_DEFCONFIG)
36+
37+
.PHONY: kernel-image
38+
kernel-image: .config .scmversion
39+
$(KERNEL_MAKE) Image dtbs -j$$(nproc)
40+
41+
.PHONY: kernel-modules
42+
kernel-image-and-modules: .config .scmversion
43+
$(KERNEL_MAKE) Image modules dtbs -j$$(nproc)
44+
$(KERNEL_MAKE) modules_install INSTALL_MOD_PATH=$(CURDIR)/out/linux_modules
45+
46+
.PHONY: kernel-package
47+
kernel-package: .config .scmversion
48+
KDEB_PKGVERSION=$(KDEB_PKGVERSION) $(KERNEL_MAKE) bindeb-pkg -j$$(nproc)
49+
50+
REMOTE_DIR ?= root@$(REMOTE_HOST):
51+
52+
.PHONY: kernel-update-modules
53+
kernel-update-modules: .config
54+
$(KERNEL_MAKE) modules -j$$(nproc)
55+
$(KERNEL_MAKE) modules_install INSTALL_MOD_PATH=$(CURDIR)/out/linux_modules
56+
rsync --partial --checksum -av out/linux_modules/lib/modules/$(KERNEL_RELEASE) $(REMOTE_DIR)/lib/modules
57+
58+
.PHONY: kernel-update-dts
59+
kernel-update-dts: .config .scmversion
60+
$(KERNEL_MAKE) dtbs -j$$(nproc)
61+
rsync --partial --checksum --include="*.dtb" -rv arch/arm64/boot/dts/rockchip root@$(REMOTE_HOST):$(REMOTE_DIR)/boot/dtbs/$(KERNEL_RELEASE)
62+
63+
.PHONY: kernel-update
64+
kernel-update-image: .scmversion
65+
rsync --partial --checksum -rv arch/arm64/boot/Image root@$(REMOTE_HOST):$(REMOTE_DIR)/boot/vmlinuz-$(KERNEL_RELEASE)
66+
rsync --partial --checksum --include="*.dtb" -rv arch/arm64/boot/dts/rockchip root@$(REMOTE_HOST):$(REMOTE_DIR)/boot/dtbs/$(KERNEL_RELEASE)
67+
rsync --partial --checksum --delete -av out/linux_modules/lib/modules/$(KERNEL_RELEASE) root@$(REMOTE_HOST):$(REMOTE_DIR)/lib/modules/

scripts/package/mkdebian

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,14 +179,15 @@ Build-Depends: bc, rsync, kmod, cpio, bison, flex | flex:native $extra_build_dep
179179
Homepage: https://www.kernel.org/
180180
181181
Package: $packagename-$version
182+
Provides: linux-rockchip-image
182183
Architecture: $debarch
183184
Description: Linux kernel, version $version
184185
This package contains the Linux kernel, modules and corresponding other
185186
files, version: $version.
186187
187188
Package: linux-libc-dev
188189
Section: devel
189-
Provides: linux-kernel-headers
190+
Provides: linux-rockchip-headers
190191
Architecture: $debarch
191192
Description: Linux support headers for userspace development
192193
This package provides userspaces headers from the Linux kernel. These headers
@@ -211,6 +212,7 @@ cat <<EOF >> debian/control
211212
212213
Package: linux-image-$version-dbg
213214
Section: debug
215+
Provides: linux-rockchip-image-dbg
214216
Architecture: $debarch
215217
Description: Linux kernel debugging symbols for $version
216218
This package will come in handy if you need to debug the kernel. It provides

0 commit comments

Comments
 (0)