Skip to content

Commit 2c002df

Browse files
committed
Add kernel package build workflow
Signed-off-by: MichaIng <[email protected]>
1 parent 4ea0ab1 commit 2c002df

File tree

2 files changed

+105
-0
lines changed

2 files changed

+105
-0
lines changed

.github/workflows/visionfive2.yml

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
name: VisionFive 2 kernel build
2+
on: [workflow_dispatch, push]
3+
concurrency:
4+
group: ${{ github.workflow }}-${{ github.ref }}
5+
cancel-in-progress: true
6+
permissions: {}
7+
jobs:
8+
build:
9+
# https://github.com/actions/virtual-environments
10+
runs-on: ubuntu-22.04
11+
defaults:
12+
run:
13+
shell: sh
14+
env:
15+
# https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/?h=linux-5.15.y
16+
CROSS_COMPILE: 'riscv64-linux-gnu-'
17+
ARCH: 'riscv'
18+
steps:
19+
- name: Setup tmpfs
20+
run: sudo mount -t tmpfs -o "noatime,lazytime,uid=$(id -u),size=3G" tmpfs "$GITHUB_WORKSPACE"
21+
- uses: actions/checkout@v3
22+
- name: Build init
23+
run: |
24+
sudo apt-get -q update
25+
sudo DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends -qq install make gcc libc6-dev flex bison gcc-riscv64-linux-gnu bc libssl-dev
26+
rm -Rf linux-image-visionfive2
27+
mkdir -p linux-image-visionfive2/DEBIAN linux-image-visionfive2/boot/extlinux
28+
- name: Build Linux
29+
run: |
30+
> .scmversion # Avoid Git commit version suffix
31+
mv dietpi_visionfive2_defconfig arch/riscv/configs/
32+
make dietpi_visionfive2_defconfig
33+
make -j$(nproc)
34+
make install INSTALL_PATH='linux-image-visionfive2/boot'
35+
make dtbs_install INSTALL_DTBS_PATH='linux-image-visionfive2/usr/lib/linux-image-visionfive2'
36+
find linux-image-visionfive2/usr/lib/linux-image-visionfive2 -mindepth 1 -regextype egrep \( ! -regex '.*/(starfive|vf2-overlay.*|jh7110-visionfive-v2.*\.dtb)' -o -regex '.*/jh7110-visionfive-v2-A1[01].dtb' \) -exec rm -Rf {} +
37+
make modules_install INSTALL_MOD_PATH='linux-image-visionfive2'
38+
rm linux-image-visionfive2/lib/modules/*/build linux-image-visionfive2/lib/modules/*/source
39+
chmod -R 0644 linux-image-visionfive2
40+
find linux-image-visionfive2 -type d -exec chmod 0755 {} +
41+
- name: Build package
42+
run: |
43+
kernelversion=$(make kernelversion)
44+
curl -fO 'https://dietpi.com/downloads/binaries/linux-image-visionfive2.deb'
45+
version=$(dpkg-deb -f linux-image-visionfive2.deb Version)
46+
rm linux-image-visionfive2.deb
47+
suffix=${version#*-dietpi}
48+
if [ "$version" = "$kernelversion-dietpi$suffix" ]
49+
then
50+
version="$kernelversion-dietpi$((suffix+1))"
51+
else
52+
version="$kernelversion-dietpi1"
53+
fi
54+
cat << _EOF_ > linux-image-visionfive2/boot/extlinux/extlinux.conf
55+
label DietPi
56+
linux /boot/vmlinuz-$kernelversion
57+
fdt /usr/lib/linux-image-visionfive2/starfive/jh7110-visionfive-v2.dtb
58+
append root=/dev/mmcblk1p1 rootfstype=ext4 rootwait earlycon console=ttyS0,115200 console=tty0 consoleblank=0 net.ifnames=0
59+
_EOF_
60+
echo '/boot/extlinux/extlinux.conf' > linux-image-visionfive2/DEBIAN/conffiles
61+
cat << _EOF_ > linux-image-visionfive2/DEBIAN/postinst
62+
#!/bin/dash
63+
set -e
64+
export DEB_MAINT_PARAMS=\$* INITRD=Yes
65+
[ -d '/etc/kernel/postinst.d' ] && run-parts --arg='$kernelversion' --arg='/boot/vmlinuz-$kernelversion' /etc/kernel/postinst.d
66+
sed -Ei '/^[[:blank:]]*(linux|kernel)/c\linux /boot/vmlinuz-$kernelversion' /boot/extlinux/extlinux.conf
67+
exit 0
68+
_EOF_
69+
cp linux-image-visionfive2/DEBIAN/postinst linux-image-visionfive2/DEBIAN/preinst
70+
sed -i -e '/extlinux/d' -e 's/postinst/preinst/g' linux-image-visionfive2/DEBIAN/preinst
71+
cp linux-image-visionfive2/DEBIAN/postinst linux-image-visionfive2/DEBIAN/postrm
72+
sed -i -e '/extlinux/d' -e 's/postinst/postrm/g' linux-image-visionfive2/DEBIAN/postrm
73+
cp linux-image-visionfive2/DEBIAN/postinst linux-image-visionfive2/DEBIAN/prerm
74+
sed -i -e '/extlinux/d' -e 's/postinst/prerm/g' linux-image-visionfive2/DEBIAN/prerm
75+
chmod +x linux-image-visionfive2/DEBIAN/p*
76+
find linux-image-visionfive2 ! \( -path linux-image-visionfive2/DEBIAN -prune \) -type f -exec md5sum {} + | sed 's|linux-image-visionfive2/||' > linux-image-visionfive2/DEBIAN/md5sums
77+
cat << _EOF_ > linux-image-visionfive2/DEBIAN/control
78+
Package: linux-image-visionfive2
79+
Version: $version
80+
Architecture: riscv64
81+
Maintainer: MichaIng <[email protected]>
82+
Date: $(date -u '+%a, %d %b %Y %T %z')
83+
Standards-Version: 4.6.2.0
84+
Installed-Size: $(du -sk 'linux-image-visionfive2' | mawk '{print $1}')
85+
Section: kernel
86+
Priority: optional
87+
Homepage: https://github.com/MichaIng/linux
88+
Vcs-Git: https://github.com/MichaIng/linux.git
89+
Vcs-Browser: https://github.com/MichaIng/linux
90+
Description: Linux kernel for RISC-V StarFive VisionFive 2
91+
_EOF_
92+
sed -i "/^Installed-Size:/c\Installed-Size: $(du -sk 'linux-image-visionfive2' | mawk '{print $1}')" linux-image-visionfive2/DEBIAN/control
93+
sudo chown -R 0:0 linux-image-visionfive2
94+
dpkg-deb -b -Zxz -z9 -Sextreme linux-image-visionfive2
95+
sudo rm -R linux-image-visionfive2
96+
- name: Upload
97+
run: |
98+
[ -d ~/.ssh ] || mkdir ~/.ssh
99+
umask 377
100+
echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts
101+
echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519
102+
curl -T 'linux-image-visionfive2.deb' --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}all/'
103+
curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \
104+
--data '{"files":["https://dietpi.com/downloads/binaries/testing/","https://dietpi.com/downloads/binaries/testing/linux-image-visionfive2.deb"]}'

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ modules.order
9696
!.gitattributes
9797
!.gitignore
9898
!.mailmap
99+
!.github
99100

100101
#
101102
# Generated include files

0 commit comments

Comments
 (0)