A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
1name: ci
2on:
3 push:
4 tags:
5 - "*"
6 workflow_dispatch:
7 inputs:
8 tag:
9 description: "The existing tag to publish"
10 type: "string"
11 required: true
12
13jobs:
14 publish:
15 runs-on: ${{ matrix.os }}
16 strategy:
17 matrix:
18 os: [ubuntu-latest]
19 permissions:
20 contents: write
21 packages: write
22 steps:
23 - uses: actions/checkout@v4
24 with:
25 submodules: true
26 - name: Install dependencies
27 run: |
28 sudo apt-get update
29 sudo apt-get install -y build-essential libsdl2-dev \
30 libfreetype6-dev \
31 libunwind-dev \
32 curl \
33 wget \
34 zip \
35 unzip \
36 protobuf-compiler \
37 cmake
38 curl -Ssf https://pkgx.sh | sh
39 pkgm install zig@0.15.1 buf
40 - name: Install Rust toolchain
41 uses: actions-rs/toolchain@v1
42 with:
43 profile: minimal
44 toolchain: 1.91.0
45 override: true
46 - name: Setup Deno
47 uses: denoland/setup-deno@v2
48 with:
49 deno-version: v2.x
50 - name: Setup Fluent CI
51 uses: fluentci-io/setup-fluentci@v5
52 env:
53 GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
54 - name: Skip Rust Warnings
55 run: echo "RUSTFLAGS=-A warnings" >> $GITHUB_ENV
56 - name: Build Rockbox
57 run: |
58 export PATH=$HOME/.local/bin:$PATH
59 cd webui/rockbox
60 deno install
61 deno run build
62 cd ../.. && mkdir build-lib && cd build-lib
63 ../tools/configure --target=sdlapp --type=N --lcdwidth=320 --lcdheight=240 --prefix=/usr/local && cp ../autoconf/autoconf.h .
64 make lib -j$(nproc)
65 cd ..
66 cargo build -p rockbox-cli --release
67 cargo build -p rockbox-server --release
68 cargo build -p rockbox --release
69 cd zig && zig build
70 cd ../build-lib
71 sudo make install
72 cd ..
73 sudo mkdir -p /usr/local/bin /usr/local/share/rockbox
74 sudo cp zig/zig-out/bin/rockboxd /usr/local/bin
75 sudo cp target/release/rockbox /usr/local/bin
76 sudo cp -r assets/* /usr/local/share/rockbox
77 sudo chown -R $(whoami):$(whoami) /usr/local
78 fluentci run --wasm . release
79 env:
80 GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
81 GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
82 TAG: ${{ inputs.tag || github.ref_name }}