max / audiofiles
1 file changed,
+72 insertions,
-0 deletions
| @@ -0,0 +1,72 @@ | |||
| 1 | + | # audiofiles — Build & Deploy | |
| 2 | + | ||
| 3 | + | See `_meta/docs/deploy.md` for shared infrastructure (machines, git remotes, collection layout, shared deps). | |
| 4 | + | ||
| 5 | + | ## Artifacts | |
| 6 | + | ||
| 7 | + | | Platform | Artifact | Machine | | |
| 8 | + | |----------|----------|---------| | |
| 9 | + | | macOS aarch64 | .dmg | local | | |
| 10 | + | | Linux aarch64 | Binary | astra | | |
| 11 | + | | Linux x86_64 | Binary | pop-os | | |
| 12 | + | | Windows x86_64 | standalone .exe | windows-x86 | | |
| 13 | + | ||
| 14 | + | ## Build Commands | |
| 15 | + | ||
| 16 | + | ```bash | |
| 17 | + | # macOS (local): | |
| 18 | + | cd ~/Code/Apps/audiofiles && cargo build --release -p audiofiles-app | |
| 19 | + | cp dist/AudioFiles_*_arm64.dmg ~/Dist/audiofiles/macos/ | |
| 20 | + | ||
| 21 | + | # Linux aarch64 (astra): | |
| 22 | + | ssh astra "source ~/.cargo/env && cd ~/Code/Apps/audiofiles && git pull && cargo build --release -p audiofiles-app" | |
| 23 | + | scp astra:~/Code/Apps/audiofiles/target/release/audiofiles-app ~/Dist/audiofiles/linux-aarch64/audiofiles_aarch64 | |
| 24 | + | ||
| 25 | + | # Linux x86_64 (pop-os): | |
| 26 | + | ssh pop-os "source ~/.cargo/env && cd ~/Code/Apps/audiofiles && git pull && cargo build --release -p audiofiles-app" | |
| 27 | + | scp pop-os:~/Code/Apps/audiofiles/target/release/audiofiles-app ~/Dist/audiofiles/linux-x86_64/audiofiles_x86_64 | |
| 28 | + | ||
| 29 | + | # Windows (windows-x86): | |
| 30 | + | ssh me@windows-x86 "cd C:\Users\me\Code\Apps\audiofiles; git pull; cargo build --release -p audiofiles-app" | |
| 31 | + | scp me@windows-x86:"C:/Users/me/Code/Apps/audiofiles/target/release/audiofiles-app.exe" ~/Dist/audiofiles/windows/ | |
| 32 | + | ``` | |
| 33 | + | ||
| 34 | + | ## Project-Specific Notes | |
| 35 | + | ||
| 36 | + | - Native egui app (not Tauri). No Tauri CLI, Node.js, or .msi installer needed. | |
| 37 | + | - No OTA updater — users download new versions from the MNW storefront. | |
| 38 | + | - License key activation at first launch via MNW API. | |
| 39 | + | - Version is in workspace root `Cargo.toml` under `[workspace.package]`. | |
| 40 | + | - AppImage packaging planned but not yet scripted. Currently ships as raw binary on Linux. | |
| 41 | + | - Requires `libxdo-dev` on Linux for keyboard shortcut handling. | |
| 42 | + | ||
| 43 | + | ## Troubleshooting | |
| 44 | + | ||
| 45 | + | ### Linker error: `libxdo` not found (Linux) | |
| 46 | + | ||
| 47 | + | AF uses `libxdo` for global hotkey support. Install on both Linux machines: | |
| 48 | + | ||
| 49 | + | ```bash | |
| 50 | + | sudo apt install libxdo-dev | |
| 51 | + | ``` | |
| 52 | + | ||
| 53 | + | ### Linker error: `libasound` not found (Linux) | |
| 54 | + | ||
| 55 | + | AF uses ALSA for audio playback. Install: | |
| 56 | + | ||
| 57 | + | ```bash | |
| 58 | + | sudo apt install libasound2-dev | |
| 59 | + | ``` | |
| 60 | + | ||
| 61 | + | ### Windows: `Win32_Storage_FileSystem` feature missing | |
| 62 | + | ||
| 63 | + | If the build fails with unresolved imports from the `windows` crate related to file system APIs, check that `Cargo.toml` enables the `Win32_Storage_FileSystem` feature on the `windows` dependency. This is a compile-time feature gate, not a missing system library. | |
| 64 | + | ||
| 65 | + | ### Windows: sccache interference | |
| 66 | + | ||
| 67 | + | Same as other projects — unset `RUSTC_WRAPPER` if sccache crashes: | |
| 68 | + | ||
| 69 | + | ```powershell | |
| 70 | + | $env:RUSTC_WRAPPER = '' | |
| 71 | + | cargo build --release -p audiofiles-app | |
| 72 | + | ``` |