Skip to content

Commit

Permalink
CI: Enable more cross-compiled builds (#401)
Browse files Browse the repository at this point in the history
* CI: Enable more aarch64 builds

* Use cross for linux-aarch64-* builds

* Use `macos-14` explicitly for now

- https://github.com/orgs/community/discussions/116911
- https://github.blog/changelog/2024-04-01-macos-14-sonoma-is-generally-available-and-the-latest-macos-runner-image/

* Add targets in release.yaml

* Write changelog

* Fix typo

* Passthrough `BANDWHICH_GEN_DIR` into cross container

* Add armv7 targets
  • Loading branch information
cyqsimon authored Apr 16, 2024
1 parent d9fa089 commit 3f64959
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 13 deletions.
26 changes: 24 additions & 2 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,13 @@ jobs:
matrix:
build:
- android-aarch64
- linux-aarch64-gnu
- linux-aarch64-musl
- linux-armv7-gnueabihf
- linux-armv7-musleabihf
- linux-x64-gnu
- linux-x64-musl
- macos-aarch64
- macos-x64
- windows-x64-msvc
rust:
Expand All @@ -72,12 +77,29 @@ jobs:
- build: android-aarch64
target: aarch64-linux-android
cargo: cross
- build: linux-aarch64-gnu
target: aarch64-unknown-linux-gnu
cargo: cross
- build: linux-aarch64-musl
target: aarch64-unknown-linux-musl
cargo: cross
- build: linux-armv7-gnueabihf
target: armv7-unknown-linux-gnueabihf
cargo: cross
- build: linux-armv7-musleabihf
target: armv7-unknown-linux-musleabihf
cargo: cross
- build: linux-x64-gnu
target: x86_64-unknown-linux-gnu
- build: linux-x64-musl
target: x86_64-unknown-linux-musl
- build: macos-aarch64
# Go back ot `macos-latest` after migration is complete
# See https://github.blog/changelog/2024-04-01-macos-14-sonoma-is-generally-available-and-the-latest-macos-runner-image/.
os: macos-14
target: aarch64-apple-darwin
- build: macos-x64
os: macos-latest
os: macos-14
target: x86_64-apple-darwin
- build: windows-x64-msvc
os: windows-latest
Expand All @@ -95,7 +117,7 @@ jobs:

- name: Install cross
if: matrix.cargo == 'cross'
# The latest realese of `cross` is not able to build/link for `aarch64-linux-android`
# The latest release 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.
Expand Down
47 changes: 36 additions & 11 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,25 +52,45 @@ jobs:
strategy:
matrix:
build:
- aarch64-linux-android
- android-aarch64
- linux-aarch64-gnu
- linux-aarch64-musl
- linux-armv7-gnueabihf
- linux-armv7-musleabihf
- linux-x64-gnu
- linux-x64-musl
- macos-aarch64
- macos-x64
- windows-x64-msvc
include:
- os: ubuntu-latest # default
- cargo: cargo # default; overwrite with `cross` if necessary
- build: aarch64-linux-android
os: ubuntu-latest
- build: android-aarch64
target: aarch64-linux-android
cargo: cross
- build: linux-aarch64-gnu
target: aarch64-unknown-linux-gnu
cargo: cross
- build: linux-aarch64-musl
target: aarch64-unknown-linux-musl
cargo: cross
- build: linux-armv7-gnueabihf
target: armv7-unknown-linux-gnueabihf
cargo: cross
- build: linux-armv7-musleabihf
target: armv7-unknown-linux-musleabihf
cargo: cross
- build: linux-x64-gnu
os: ubuntu-latest
target: x86_64-unknown-linux-gnu
- build: linux-x64-musl
os: ubuntu-latest
target: x86_64-unknown-linux-musl
- build: macos-aarch64
# Go back ot `macos-latest` after migration is complete
# See https://github.blog/changelog/2024-04-01-macos-14-sonoma-is-generally-available-and-the-latest-macos-runner-image/.
os: macos-14
target: aarch64-apple-darwin
- build: macos-x64
os: macos-latest
os: macos-14
target: x86_64-apple-darwin
- build: windows-x64-msvc
os: windows-latest
Expand All @@ -86,13 +106,18 @@ jobs:
toolchain: stable
targets: ${{ matrix.target }}

- name: Install musl-tools
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
# The latest release 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.
# Go back to taiki-e/install-action once cross 0.3 is released.
uses: taiki-e/cache-cargo-install-action@v1
with:
tool: cross
git: https://github.com/cross-rs/cross.git
rev: 085092c

- name: Build release binary
shell: bash
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
* Add PID column to the process table #379 - @notjedi
* CI: add builds for target `aarch64-linux-android` #384 - @flxo
* CI: Keep GitHub Actions up to date with GitHub's Dependabot #403 - @cclauss
* CI: Enable more cross-compiled builds #401 - @cyqsimon

## Changed

Expand Down
2 changes: 2 additions & 0 deletions Cross.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[build.env]
passthrough = ["BANDWHICH_GEN_DIR"]

0 comments on commit 3f64959

Please sign in to comment.