diff --git a/.github/scripts/ubuntu_setup.sh b/.github/scripts/ubuntu_setup.sh new file mode 100755 index 00000000..ea8f1cce --- /dev/null +++ b/.github/scripts/ubuntu_setup.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +# sudo needed for github runner, not available by default for cross images +if command -v sudo >/dev/null 2>&1; then + SUDO="sudo" +else + SUDO="" +fi + +# Needed for cross-compilation +if [ -n "$CROSS_DEB_ARCH" ]; then + $SUDO dpkg --add-architecture "$CROSS_DEB_ARCH" +fi + +# CROSS_DEB_ARCH is empty for native builds +$SUDO apt-get update && $SUDO apt-get install --assume-yes \ + libssl-dev${CROSS_DEB_ARCH:+:$CROSS_DEB_ARCH} \ + libgtk-3-dev${CROSS_DEB_ARCH:+:$CROSS_DEB_ARCH} \ + libgtk-layer-shell-dev${CROSS_DEB_ARCH:+:$CROSS_DEB_ARCH} \ + libpulse-dev${CROSS_DEB_ARCH:+:$CROSS_DEB_ARCH} diff --git a/.github/workflows/binary.yml b/.github/workflows/binary.yml new file mode 100644 index 00000000..ed7c53eb --- /dev/null +++ b/.github/workflows/binary.yml @@ -0,0 +1,39 @@ +# .github/workflows/binary.yml + +name: Binary +on: + release: + types: [created] +jobs: + build: + name: Build + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + platform: + - {target: x86_64-unknown-linux-gnu, zipext: ".tar.gz"} + - {target: aarch64-unknown-linux-gnu, zipext: ".tar.gz"} + steps: + - uses: actions/checkout@v4 + - uses: taiki-e/install-action@v2 + with: + tool: cross + + - name: Add OpenSSL crate (vendored) + run: cargo add openssl --features vendored + + - name: Cross Build Release + run: cross build --locked --release --target=${{ matrix.platform.target }} + + - name: Get name of Binary from metadata + run: echo "BINARY_NAME=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[].targets[] | select( .kind | map(. == "bin") | any ) | .name')" >> $GITHUB_ENV + + - name: Compress the built binary + if: ${{ matrix.platform.zipext == '.tar.gz' }} + run: tar -zcvf ${{env.BINARY_NAME}}-${{github.ref_name}}-${{matrix.platform.target}}.tar.gz -C target/${{matrix.platform.target}}/release ${{env.BINARY_NAME}} + + - name: Upload to release + run: gh release upload ${GITHUB_REF#refs/*/} ${{env.BINARY_NAME}}-${{github.ref_name}}-${{matrix.platform.target}}${{matrix.platform.zipext}} + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b02903c3..8f8b4ddd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,9 +32,7 @@ jobs: name: Cache dependencies - name: Install build deps - run: | - sudo apt-get update - sudo apt-get install libgtk-3-dev libgtk-layer-shell-dev libpulse-dev + run: ./.github/scripts/ubuntu_setup.sh - name: Clippy run: cargo clippy --no-default-features --features config+json @@ -53,9 +51,7 @@ jobs: name: Cache dependencies - name: Install build deps - run: | - sudo apt-get update - sudo apt-get install libgtk-3-dev libgtk-layer-shell-dev libpulse-dev + run: ./.github/scripts/ubuntu_setup.sh - name: Clippy run: cargo clippy --all-targets --all-features @@ -72,9 +68,7 @@ jobs: name: Cache dependencies - name: Install build deps - run: | - sudo apt-get update - sudo apt-get install libgtk-3-dev libgtk-layer-shell-dev libpulse-dev + run: ./.github/scripts/ubuntu_setup.sh - name: Build run: cargo build --verbose @@ -82,4 +76,4 @@ jobs: - name: Run tests uses: actions-rs/cargo@v1 with: - command: test \ No newline at end of file + command: test diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2d6e37b9..f8f68a1d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -18,9 +18,7 @@ jobs: override: true - name: Install build deps - run: | - sudo apt-get update - sudo apt-get install libgtk-3-dev libgtk-layer-shell-dev libpulse-dev + run: ./.github/scripts/ubuntu_setup.sh - name: Update CHANGELOG id: changelog @@ -48,4 +46,4 @@ jobs: - uses: katyo/publish-crates@v1 with: - registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }} \ No newline at end of file + registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }} diff --git a/Cross.toml b/Cross.toml new file mode 100644 index 00000000..660445ba --- /dev/null +++ b/Cross.toml @@ -0,0 +1,7 @@ +[build] +pre-build = "./.github/scripts/ubuntu_setup.sh" +[target.aarch64-unknown-linux-gnu] +image = "ghcr.io/cross-rs/aarch64-unknown-linux-gnu:main" + +[target.x86_64-unknown-linux-gnu] +image = "ghcr.io/cross-rs/x86_64-unknown-linux-gnu:main"