name: Rust on: push: branches: [ "main" ] pull_request: branches: [ "main" ] env: CARGO_TERM_COLOR: always jobs: build-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: install dependencies run: | sudo apt-get update sudo apt-get install libx11-dev libxtst-dev sudo apt-get install libadwaita-1-dev libgtk-4-dev - name: Build run: cargo build --verbose - name: Run tests run: cargo test --verbose - name: Check Formatting run: cargo fmt --check - name: Clippy run: cargo clippy --all-features --all-targets -- --deny warnings - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: lan-mouse path: target/debug/lan-mouse build-windows: runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.11' # needed for cache restore - name: create gtk dir run: mkdir C:\gtk-build\gtk\x64\release - uses: actions/cache@v3 id: cache with: path: c:/gtk-build/gtk/x64/release/** key: gtk-windows-build restore-keys: gtk-windows-build - name: Update path run: | echo "PKG_CONFIG=C:\gtk-build\gtk\x64\release\bin\pkgconf.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append echo "C:\pkg-config-lite-0.28-1\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append echo "C:\gtk-build\gtk\x64\release\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append echo $env:GITHUB_PATH echo $env:PATH - name: Install dependencies if: steps.cache.outputs.cache-hit != 'true' run: | # choco install msys2 # choco install visualstudio2022-workload-vctools # choco install pkgconfiglite py -m venv .venv .venv\Scripts\activate.ps1 py -m pip install gvsbuild # see https://github.com/wingtk/gvsbuild/pull/1004 Move-Item "C:\Program Files\Git\usr\bin" "C:\Program Files\Git\usr\notbin" Move-Item "C:\Program Files\Git\bin" "C:\Program Files\Git\notbin" gvsbuild build --msys-dir=C:\msys64 gtk4 libadwaita librsvg Move-Item "C:\Program Files\Git\usr\notbin" "C:\Program Files\Git\usr\bin" Move-Item "C:\Program Files\Git\notbin" "C:\Program Files\Git\bin" - name: Build run: cargo build --verbose - name: Run tests run: cargo test --verbose - name: Check Formatting run: cargo fmt --check - name: Clippy run: cargo clippy --all-features --all-targets -- --deny warnings - name: Copy Gtk Dlls run: Get-Childitem -Path "C:\\gtk-build\\gtk\\x64\\release\\bin\\*.dll" -File -Recurse | Copy-Item -Destination "target\\debug" - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: lan-mouse-windows path: | target/debug/lan-mouse.exe target/debug/*.dll build-macos: runs-on: macos-15-intel steps: - uses: actions/checkout@v4 - name: install dependencies run: brew install gtk4 libadwaita imagemagick - name: Build run: cargo build --verbose - name: Run tests run: cargo test --verbose - name: Check Formatting run: cargo fmt --check - name: Clippy run: cargo clippy --all-features --all-targets -- --deny warnings - name: Make icns run: scripts/makeicns.sh - name: Install cargo bundle run: cargo install cargo-bundle - name: Bundle run: | cargo bundle scripts/copy-macos-dylib.sh - name: Zip bundle run: | cd target/debug/bundle/osx zip -r "Lan Mouse macOS (Intel).zip" "Lan Mouse.app" - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: Lan Mouse macOS (Intel) path: target/debug/bundle/osx/Lan Mouse macOS (Intel).zip build-macos-aarch64: runs-on: macos-14 steps: - uses: actions/checkout@v4 - name: install dependencies run: brew install gtk4 libadwaita imagemagick - name: Build run: cargo build --verbose - name: Run tests run: cargo test --verbose - name: Check Formatting run: cargo fmt --check - name: Clippy run: cargo clippy --all-features --all-targets -- --deny warnings - name: Make icns run: scripts/makeicns.sh - name: Install cargo bundle run: cargo install cargo-bundle - name: Bundle run: | cargo bundle scripts/copy-macos-dylib.sh - name: Zip bundle run: | cd target/debug/bundle/osx zip -r "Lan Mouse macOS (ARM).zip" "Lan Mouse.app" - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: Lan Mouse macOS (ARM) path: target/debug/bundle/osx/Lan Mouse macOS (ARM).zip