Skip to content

Commit

Permalink
Add target aarch64-linux-android to ci
Browse files Browse the repository at this point in the history
Use `cross` for building target `aarch64-linux-android`. In the `ci`
workflow the matrix branch of `os` `ubuntu-latest` is used because the
matrix organization is host os centric instead of target.

Releases are build with `cross` for target `aarch64-linux-android`.

Install `cross` if needed for a run. At the time of writing the latest
release of `cross` can't build binaries for target
`aarch64-linux-android` and it's common sense that the latest git tag or
`master` shall be used [1].

[1] cross-rs/cross#1222
  • Loading branch information
flxoacn committed Apr 2, 2024
1 parent f647d6a commit fdb0136
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 2 deletions.
21 changes: 20 additions & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,25 @@ jobs:
toolchain: ${{ matrix.rust }}
components: rustfmt, clippy

- name: Install Cross on Ubuntu
if: matrix.os == 'ubuntu-latest'
# The latest realese of `cross` is not able to build/link for `aarch64-linux-android`
# See: https://github.com/cross-rs/cross/issues/1222
# This is fixed on `main` but not yet released. To avoid a breakage somewhen in the future
# pin the cross revision used to the latest HEAD at 04/2024.
# Remove the git source and revision once cross 0.3 is released.
run: cargo install --git https://github.com/cross-rs/cross.git --rev 085092c cross

- name: Check formatting
run: cargo fmt --all -- --check

- name: Build
id: build
run: cargo build --verbose

- name: Build target aarch64-linux-android
if: matrix.os == 'ubuntu-latest'
run: cross build --target aarch64-linux-android --verbose

# This is useful for debugging problems when the expected build artifacts
# (like shell completions and man pages) aren't generated.
- name: Show build.rs stderr
Expand Down Expand Up @@ -103,6 +115,13 @@ jobs:
name: ${{ matrix.os }}-${{ matrix.rust }}-failed_snapshots
path: '**/*.snap.new'

- name: Upload android binary
if: ${{ matrix.os == 'ubuntu-latest' && ( success() || steps.build.outcome == 'success' ) }}
uses: actions/upload-artifact@v3
with:
name: aarch64-linux-android-${{ matrix.rust }}
path: target/aarch64-linux-android/debug/bandwhich

- name: Upload unix binary
if: ${{ matrix.os != 'windows-latest' && ( success() || steps.build.outcome == 'success' ) }}
uses: actions/upload-artifact@v3
Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,17 @@ jobs:
strategy:
matrix:
build:
- aarch64-linux-android
- linux-x64-gnu
- linux-x64-musl
- macos-x64
- windows-x64-msvc
include:
- cargo: cargo # default; overwrite with `cross` if necessary
- build: aarch64-linux-android
os: ubuntu-latest
target: aarch64-linux-android
cargo: cross
- build: linux-x64-gnu
os: ubuntu-latest
target: x86_64-unknown-linux-gnu
Expand Down Expand Up @@ -84,13 +90,17 @@ jobs:
if: matrix.target == 'x86_64-unknown-linux-musl'
run: sudo apt-get install -y --no-install-recommends musl-tools

- name: Install cross
if: matrix.cargo == 'cross'
run: cargo install --git https://github.com/cross-rs/cross.git --rev 085092c cross

- name: Build release binary
shell: bash
env:
RUSTFLAGS: "-C strip=symbols"
run: |
mkdir -p "$BANDWHICH_GEN_DIR"
cargo build --verbose --release --target ${{ matrix.target }}
${{ matrix.cargo }} build --verbose --release --target ${{ matrix.target }}
- name: Collect build artifacts
shell: bash
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
## [Unreleased]

## Fixed

* Remove redundant imports #377 - @cyqsimon
* CI: use GitHub API to exempt dependabot from changelog requirement #378 - @cyqsimon
* Remove unnecessary logging synchronisation #381 - @cyqsimon
Expand All @@ -15,10 +16,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
* Support build for `target_os`` `android` #384 - @flxo

## Added

* CI: include generated assets in release archive #359 - @cyqsimon
* Add PID column to the process table #379 - @notjedi
* CI: add builds for target `aarch64-linux-android` #384 - @flxo

## Changed

* CI: strip release binaries for all targets #358 - @cyqsimon
* Bump MSRV to 1.74 (required by clap 4.5; see #373)
* CI: Configure dependabot grouping #395 - @cyqsimon
Expand Down

0 comments on commit fdb0136

Please sign in to comment.