Skip to content

Commit dec03d4

Browse files
committed
add workflow
1 parent 50fe5e2 commit dec03d4

File tree

5 files changed

+155
-0
lines changed

5 files changed

+155
-0
lines changed

.github/workflows/build.yml

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
name: Build
2+
on:
3+
push:
4+
branches:
5+
- master
6+
schedule:
7+
- cron: '0 1 * * *' # UTC
8+
9+
jobs:
10+
build:
11+
name: Build pt3_drv deb package
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Clone m-tsudo/pt3
17+
run: git clone --depth=5 https://github.com/m-tsudo/pt3.git
18+
19+
- name: Get pt3 repo status
20+
working-directory: pt3
21+
run: |
22+
echo COMMIT_HASH=$(git rev-parse --short HEAD) >> $GITHUB_ENV
23+
echo TAG_NAME=v$(grep PACKAGE_VERSION dkms.conf | cut -d'"' -f2) >> $GITHUB_ENV
24+
25+
- name: Get last release info
26+
id: last_release
27+
uses: cardinalby/git-get-release-action@v1
28+
env:
29+
GITHUB_TOKEN: ${{ github.token }}
30+
with:
31+
latest: true
32+
33+
- name: Check updates
34+
run: |
35+
LAST_HASH=$(echo "${{ steps.last_release.outputs.name }}" | cut -d'-' -f2)
36+
if [ "${COMMIT_HASH}" != "${LAST_HASH}" ]; then
37+
echo RUN_BUILD=yes >> $GITHUB_ENV
38+
fi
39+
echo "COMMIT_HASH: ${LAST_HASH} => ${COMMIT_HASH}"
40+
41+
- name: Setup apt packages
42+
if: env.RUN_BUILD == 'yes'
43+
run: sudo apt-get install -y debhelper devscripts dh-exec dkms dpkg
44+
45+
- name: Copy files
46+
if: env.RUN_BUILD == 'yes'
47+
run: |
48+
cp post_install.sh post_remove.sh pt3/
49+
cp blacklist-dvb-pt3.conf pt3/etc/
50+
51+
- name: Modify dkms.conf
52+
if: env.RUN_BUILD == 'yes'
53+
working-directory: pt3
54+
run: |
55+
sed -i 's/ dkms"/ pt3_drv.ko"/' dkms.conf
56+
echo 'POST_INSTALL="post_install.sh"' >> dkms.conf
57+
echo 'POST_REMOVE="post_remove.sh"' >> dkms.conf
58+
59+
- name: Fix mkdeb
60+
if: env.RUN_BUILD == 'yes'
61+
working-directory: pt3
62+
run: |
63+
cp -r /etc/dkms/template-dkms-mkdeb pt3_drv-dkms-mkdeb
64+
sed -i 's/chmod 644 -R/#chmod 644 -R/' pt3_drv-dkms-mkdeb/Makefile
65+
66+
- name: Build deb package
67+
if: env.RUN_BUILD == 'yes'
68+
working-directory: pt3
69+
run: dkms mkdeb --source-only
70+
71+
- name: Generate Release Notes
72+
if: env.RUN_BUILD == 'yes'
73+
working-directory: pt3
74+
run: |
75+
echo '### The latest five updates are:' >> ../ReleaseNotes.md
76+
git log -"5" --format="- [\`%h\`](https://github.com/m-tsudo/pt3/commit/%H) %s" >> ../ReleaseNotes.md
77+
78+
- name: Publish GitHub Release
79+
if: env.RUN_BUILD == 'yes'
80+
uses: ncipollo/release-action@v1.14.0
81+
with:
82+
name: ${{ env.TAG_NAME }}-${{ env.COMMIT_HASH }}
83+
bodyFile: ReleaseNotes.md
84+
artifacts: ./*.deb
85+
tag: ${{ env.TAG_NAME }}-${{ env.COMMIT_HASH }}
86+
token: ${{ secrets.GITHUB_TOKEN }}
87+
88+
- name: Discord notification
89+
uses: sarisia/actions-status-discord@v1
90+
if: env.RUN_BUILD == 'yes'
91+
with:
92+
webhook: ${{ secrets.DISCORD_WEBHOOK }}
93+
content: |
94+
A new pt3 deb package has been built. See below.
95+
- https://github.com/b00t0x/pt3-deb-builder/releases
96+
- https://github.com/m-tsudo/pt3

README.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,38 @@
11
# pt3-deb-builder
2+
[chardev 版 PT3 ドライバ](https://github.com/m-tsudo/pt3) の deb パッケージをビルドするリポジトリ
3+
4+
このリポジトリ自体には deb 化に必要な資材しか含まれておらず、本家リポジトリからソースを pull してきてビルドします。
5+
日次で本家リポジトリをチェックし、更新があったら自動的に deb パッケージがアップロードされます(多分)。
6+
7+
## ダウンロード
8+
[Releases](https://github.com/b00t0x/pt3-deb-builder/Releases) から pt3-drv-dkms_x.y.z_all.deb をダウンロードしてください。
9+
10+
## インストール
11+
```
12+
sudo apt install ./pt3-drv-dkms_*.deb
13+
```
14+
15+
### スクリプト用
16+
```
17+
deb_url=$(wget -qO - https://api.github.com/repos/b00t0x/pt3-deb-builder/releases/latest | grep browser_download_url.*deb | cut -d'"' -f4)
18+
wget -qO ./pt3-drv-dkms.deb ${deb_url}
19+
sudo apt install -y ./pt3-drv-dkms.deb
20+
rm ./pt3-drv-dkms.deb
21+
```
22+
23+
## アンインストール
24+
```
25+
sudo apt purge pt3-drv-dkms
26+
```
27+
28+
## workflow
29+
deb の作成方法は [tsukumijima/px4_drv](https://github.com/tsukumijima/px4_drv) を参考にしています。
30+
* 以下のファイルを追加 ( `Copy files` )
31+
* [post_install.sh](./post_install.sh)
32+
* [post_remove.sh](./post_remove.sh)
33+
* [blacklist-dvb-pt3.conf](./blacklist-dvb-pt3.conf)
34+
* dvb ドライバがロードされないよう post_install.sh にて導入
35+
* [dkms.conf](./dkms.conf) を修正 ( `Modify dkms.conf` )
36+
* [99-pt3.rules](https://github.com/m-tsudo/pt3/blob/master/etc/99-pt3.rules) の配置は post_install.sh で行うため、make のターゲットを `dkms` から `pt3_drv.ko` に変更
37+
* プリセットの設定だと post_(install|remove).sh が 644 になってしまうので、対策した pt3_drv-dkms-mkdeb を配置 ( `Fix mkdeb` )
38+
* 参考: https://github.com/tsukumijima/px4_drv/commit/c6afab65efa4f58804d4d630da8cd2d853180abd

blacklist-dvb-pt3.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
blacklist earth_pt3

post_install.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/sh
2+
3+
# Unload previous driver
4+
KVER=`uname -r`
5+
if [ `grep -e '^pt3_drv' /proc/modules | wc -l` -ne 0 ]; then
6+
modprobe -r pt3_drv
7+
fi
8+
9+
install -D -v -m 644 ./etc/99-pt3.rules /etc/udev/rules.d/99-pt3.rules
10+
install -D -v -m 644 ./etc/blacklist-dvb-pt3.conf /etc/modprobe.d/blacklist-dvb-pt3.conf

post_remove.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/sh
2+
3+
# Unload previous driver
4+
KVER=`uname -r`
5+
if [ `grep -e '^pt3_drv' /proc/modules | wc -l` -ne 0 ]; then
6+
modprobe -r pt3_drv
7+
fi
8+
9+
if [ `find /lib/modules/ -name pt3_drv.ko | wc -l` -eq 0 ]; then
10+
rm -fv /etc/udev/rules.d/99-pt3.rules /etc/modprobe.d/blacklist-dvb-pt3.conf
11+
fi

0 commit comments

Comments
 (0)