A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
1name: macos-build
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 build:
15 runs-on: ${{ matrix.os }}
16 strategy:
17 matrix:
18 os: [macos-latest, macos-15-intel]
19 steps:
20 - uses: actions/checkout@v2
21 with:
22 submodules: true
23 - name: Setup Cache
24 uses: actions/cache@v3
25 with:
26 path: |
27 ~/.cargo/registry
28 ~/.cargo/git
29 zig/.zig-cache
30 target
31 key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
32 restore-keys: |
33 ${{ runner.os }}-cargo-
34 - name: Setup LLVM
35 run: |
36 brew install llvm gcc@15 zig sdl2 cmake protobuf
37 cp /opt/homebrew/opt/llvm/bin/llvm-objcopy /opt/homebrew/opt/llvm/bin/objcopy || cp /usr/local/opt/llvm/bin/llvm-objcopy /usr/local/opt/llvm/bin/objcopy
38 - uses: actions-rust-lang/setup-rust-toolchain@v1
39 - uses: denoland/setup-deno@v2
40 - name: Build Web UI
41 run: |
42 cd webui/rockbox
43 deno install
44 deno run build
45 - name: Build Rockbox Lib
46 run: |
47 export PATH="/opt/homebrew/opt/llvm/bin:/usr/local/opt/llvm/bin:$PATH"
48 mkdir -p build-lib
49 cd build-lib
50 ../tools/configure --target=sdlapp --type=N --lcdwidth=320 --lcdheight=240 --prefix=/usr/local && cp ../autoconf/autoconf.h .
51 make lib -j8
52 - name: Skip Rust Warnings
53 run: echo "RUSTFLAGS=-A warnings" >> $GITHUB_ENV
54 - name: Build Rust Libs
55 run: |
56 cargo build -p rockbox-cli --release
57 cargo build -p rockbox-server --release
58 cargo build -p rockbox --release
59 env:
60 TAG: ${{ inputs.tag || github.ref_name }}
61 - name: Build Rockbox Binary
62 run: zig build
63 working-directory: zig
64 env:
65 TAG: ${{ inputs.tag || github.ref_name }}
66 - name: Install Rockbox Libraries
67 run: sudo make install
68 working-directory: build-lib
69 - name: Install Rockbox Binaries
70 run: |
71 sudo cp target/release/rockbox /usr/local/bin/
72 sudo cp zig/zig-out/bin/rockboxd /usr/local/bin/
73 - name: Generate Package Installer
74 run: ./packaging/macos/build-pkg.sh
75 - name: Determine architecture
76 id: vars
77 run: |
78 if [ "${{ matrix.os }}" == "macos-latest" ]; then
79 echo "arch=aarch64" >> $GITHUB_OUTPUT
80 else
81 echo "arch=x86_64" >> $GITHUB_OUTPUT
82 fi
83 echo "version=${{ github.event.inputs.tag || github.ref_name }}" >> $GITHUB_OUTPUT
84 - name: Build DMG
85 run: |
86 xcodebuild -scheme Rockbox -configuration Release archive -archivePath ./build/Rockbox.xcarchive
87 xcodebuild -exportArchive -archivePath ./build/Rockbox.xcarchive -exportPath ./build -exportOptionsPlist ExportOptions.plist
88 mkdir dmg_temp
89 cp -r build/Rockbox.app dmg_temp
90 hdiutil create -volname "Rockbox" -srcfolder dmg_temp -ov -format UDZO Rockbox-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}.dmg
91 mv Rockbox-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}.dmg ..
92 working-directory: macos
93 - name: Show artifacts
94 run: |
95 ls rockbox-*.pkg
96 echo build-lib
97 ls -l build-lib
98 echo zig-out
99 ls -l zig/zig-out/bin
100 echo target
101 ls -l target/release
102 echo lib
103 ls -l /usr/local/lib/rockbox/*
104 echo share
105 ls -l /usr/local/share/rockbox
106 - name: Show Rockbox version
107 run: |
108 ./target/release/rockbox --version
109 ./zig/zig-out/bin/rockboxd --version
110 - name: Archive artifacts
111 run: |
112 VERSION="${{ steps.vars.outputs.version }}"
113 ARCH="${{ steps.vars.outputs.arch }}"
114 sudo bash -c """
115 cp target/release/rockbox .
116 cp zig/zig-out/bin/rockboxd .
117 tar czvf rockbox_${{ steps.vars.outputs.version }}_${{ steps.vars.outputs.arch }}-darwin.tar.gz rockbox
118 sha256 rockbox_${{ steps.vars.outputs.version }}_${{ steps.vars.outputs.arch }}-darwin.tar.gz > rockbox_${{ steps.vars.outputs.version }}_${{ steps.vars.outputs.arch }}-darwin.tar.gz.sha256
119 tar czvf rockboxd_${{ steps.vars.outputs.version }}_${{ steps.vars.outputs.arch }}-darwin.tar.gz rockboxd
120 sha256 rockboxd_${{ steps.vars.outputs.version }}_${{ steps.vars.outputs.arch }}-darwin.tar.gz > rockboxd_${{ steps.vars.outputs.version }}_${{ steps.vars.outputs.arch }}-darwin.tar.gz.sha256
121 cd /usr/local/lib/rockbox && tar czvf rockbox-codecs-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz *
122 cd /usr/local/lib/rockbox && shasum -a 256 rockbox-codecs-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz > rockbox-codecs-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz.sha256
123 cd /usr/local/share/rockbox && tar czvf rockbox-assets-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz *
124 cd /usr/local/share/rockbox && shasum -a 256 rockbox-assets-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz > rockbox-assets-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz.sha256
125 """
126 - name: Copy Archives
127 run: |
128 cp /usr/local/lib/rockbox/rockbox-codecs-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz .
129 cp /usr/local/lib/rockbox/rockbox-codecs-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz.sha256 .
130 cp /usr/local/share/rockbox/rockbox-assets-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz .
131 cp /usr/local/share/rockbox/rockbox-assets-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz.sha256 .
132 - name: Upload to GitHub Release
133 uses: softprops/action-gh-release@v1
134 with:
135 files: |
136 rockbox_${{ steps.vars.outputs.version }}_${{ steps.vars.outputs.arch }}-darwin.tar.gz
137 rockbox_${{ steps.vars.outputs.version }}_${{ steps.vars.outputs.arch }}-darwin.tar.gz.sha256
138 rockboxd_${{ steps.vars.outputs.version }}_${{ steps.vars.outputs.arch }}-darwin.tar.gz
139 rockboxd_${{ steps.vars.outputs.version }}_${{ steps.vars.outputs.arch }}-darwin.tar.gz.sha256
140 rockbox-codecs-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz
141 rockbox-codecs-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz.sha256
142 rockbox-assets-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz
143 rockbox-assets-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}-darwin.tar.gz.sha256
144 rockbox-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}.pkg
145 Rockbox-${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.arch }}.dmg
146 tag_name: ${{ steps.vars.outputs.version }}
147 env:
148 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}