A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 148 lines 7.4 kB view raw
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 }}