rm dead deps, bum rust to 1.80, chg build strategy #25
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json | |
on: [push, pull_request, workflow_dispatch] | |
name: CI Rust | |
# env: | |
# RUSTFLAGS: -D warnings | |
# RUSTDOCFLAGS: -D warnings | |
jobs: | |
check: | |
name: Check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: --all-features | |
check_wasm: | |
name: Check wasm32 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
target: wasm32-unknown-unknown | |
override: true | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: --all-features --lib --target wasm32-unknown-unknown | |
test: | |
name: Test Suite | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- run: sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --lib | |
fmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: rustfmt | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: clippy | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: -- -D warnings | |
trunk: | |
name: trunk | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: 1.80.0 | |
target: wasm32-unknown-unknown | |
override: true | |
- name: Download and install Trunk binary | |
run: wget -qO- https://github.com/thedodd/trunk/releases/latest/download/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf- | |
- name: Build | |
run: ./trunk build | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: macos-latest | |
TARGET: aarch64-apple-darwin | |
- os: ubuntu-latest | |
TARGET: aarch64-unknown-linux-gnu | |
# wasmtime doesn't support armv7 | |
# - os: ubuntu-latest | |
# TARGET: armv7-unknown-linux-gnueabihf | |
- os: ubuntu-latest | |
TARGET: x86_64-unknown-linux-gnu | |
- os: windows-latest | |
TARGET: x86_64-pc-windows-msvc | |
EXTENSION: .exe | |
steps: | |
- name: Building ${{ matrix.TARGET }} | |
run: echo "${{ matrix.TARGET }}" | |
- uses: actions/checkout@master | |
- name: Install build dependencies - Rustup | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain nightly --profile default --target ${{ matrix.TARGET }} -y | |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
# For linux, it's necessary to use cross from the git repository to avoid glibc problems | |
# Ref: https://github.com/cross-rs/cross/issues/1510 | |
- name: Install cross for linux | |
if: contains(matrix.TARGET, 'linux') | |
run: | | |
cargo install cross --git https://github.com/cross-rs/cross --rev 1b8cf50d20180c1a394099e608141480f934b7f7 | |
- name: Install cross for mac and windows | |
if: ${{ !contains(matrix.TARGET, 'linux') }} | |
run: | | |
cargo install cross | |
- name: Install dependencies for x86_64 | |
if: matrix.TARGET == 'x86_64-unknown-linux-gnu' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libglib2.0-dev pkg-config | |
- name: Set PKG_CONFIG_PATH for x86_64 | |
if: matrix.TARGET == 'x86_64-unknown-linux-gnu' | |
run: echo "PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig" >> $GITHUB_ENV | |
- name: Install dependencies for aarch64-unknown-linux-gnu | |
if: matrix.TARGET == 'aarch64-unknown-linux-gnu' | |
uses: uraimo/run-on-arch-action@v2 | |
with: | |
arch: aarch64 | |
distro: ubuntu_latest | |
run: | | |
apt-get update | |
apt-get install -y libglib2.0-dev pkg-config gcc g++ | |
- name: Set PKG_CONFIG_PATH for aarch64-unknown-linux-gnu | |
if: matrix.TARGET == 'aarch64-unknown-linux-gnu' | |
run: echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV | |
# if matrix contains x86_64, then just build release without cross | |
- name: Build x86_64 | |
if: matrix.TARGET == 'x86_64-unknown-linux-gnu' | |
run: cargo build --verbose --release --target=${{ matrix.TARGET }} | |
# use uraimo/run-on-arch-action@v2 for aarch64 linux builds | |
- name: Build aarch64 | |
if: matrix.TARGET == 'aarch64-unknown-linux-gnu' | |
uses: uraimo/run-on-arch-action@v2 | |
with: | |
arch: aarch64 | |
distro: ubuntu_latest | |
run: cargo build --verbose --release --target=${{ matrix.TARGET }} | |
- name: Build everything else | |
if: ${{ !contains(matrix.TARGET, 'x86_64') && !contains(matrix.TARGET, 'aarch64') }} | |
run: | | |
cross --version | |
cross build --verbose --release --target=${{ matrix.TARGET }} | |
env: | |
PKG_CONFIG_ALLOW_CROSS: 1 | |
PKG_CONFIG_PATH: ${{ env.PKG_CONFIG_PATH }} | |
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc | |
CC_aarch64_unknown_linux_gnu: aarch64-linux-gnu-gcc | |
CXX_aarch64_unknown_linux_gnu: aarch64-linux-gnu-g++ | |
- name: Rename | |
run: cp target/${{ matrix.TARGET }}/release/egui-multinode${{ matrix.EXTENSION }} egui-multinode-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
- uses: actions/upload-artifact@master | |
with: | |
name: egui-multinode-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
path: egui-multinode-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
- uses: svenstaro/upload-release-action@v2 | |
name: Upload binaries to release | |
if: ${{ github.event_name == 'push' }} | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: egui-multinode-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
asset_name: egui-multinode-${{ matrix.TARGET }}${{ matrix.EXTENSION }} | |
tag: ${{ github.ref }} | |
prerelease: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
overwrite: true |