diff --git a/.github/scripts/ubuntu_setup.sh b/.github/scripts/ubuntu_setup.sh new file mode 100755 index 0000000..ea8f1cc --- /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 index 14e4c97..ed7c53e 100644 --- a/.github/workflows/binary.yml +++ b/.github/workflows/binary.yml @@ -19,14 +19,21 @@ jobs: - uses: taiki-e/install-action@v2 with: tool: cross - - run: cargo add openssl --features vendored - - run: cross build --locked --release --target=${{ matrix.platform.target }} - - run: echo "BINARY_NAME=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[].targets[] | select( .kind | map(. == "bin") | any ) | .name')" >> $GITHUB_ENV - - if: ${{ matrix.platform.zipext == '.tar.gz' }} + - 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: Release + - 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 b02903c..8f8b4dd 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 2d6e37b..f8f68a1 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 index 5b2cc4c..660445b 100644 --- a/Cross.toml +++ b/Cross.toml @@ -1,8 +1,5 @@ [build] -pre-build = [ - "dpkg --add-architecture $CROSS_DEB_ARCH", - "apt-get update && apt-get install --assume-yes libssl-dev:$CROSS_DEB_ARCH libgtk-3-dev:$CROSS_DEB_ARCH libgtk-layer-shell-dev:$CROSS_DEB_ARCH libpulse-dev:$CROSS_DEB_ARCH", -] +pre-build = "./.github/scripts/ubuntu_setup.sh" [target.aarch64-unknown-linux-gnu] image = "ghcr.io/cross-rs/aarch64-unknown-linux-gnu:main"