Skip to content

CI refactor

CI refactor #625

Workflow file for this run

on:
pull_request:
push:
branches:
- master
jobs:
build:
strategy:
matrix:
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
name: Tests on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Configure cache
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ matrix.os }}-cargo-${{ hashFiles('./Cargo.lock') }}
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: rustfmt clippy rust-src
targets: armv7-unknown-linux-gnueabihf
- name: Check formatting
run: cargo fmt --all --check
- name: Clippy
run: cargo clippy -- -D clippy::disallowed_macros
- name: Build all the things
run: cargo build --all-features --all-targets
- name: Run unit tests
run: cargo test --all-features
- name: copy branch executable (non-windows)
shell: bash
if: ${{ matrix.os != 'windows-latest' }}
run: mv ./target/debug/cargo-asm ./branch-asm
- name: copy branch executable (windows)
shell: bash
if: ${{ matrix.os == 'windows-latest' }}
run: mv ./target/debug/cargo-asm.exe ./branch-asm.exe
- name: Checkout master
uses: actions/checkout@v4
if: ${{ github.ref != 'refs/heads/master' }}
with:
clean: false
ref: "0.2.40"
- name: Compile master
if: ${{ github.ref != 'refs/heads/master' }}
run: cargo build --all-features --bin cargo-asm
- name: copy master executable (non windows)
shell: bash
if: ${{ github.ref != 'refs/heads/master' && matrix.os != 'windows-latest' }}
run: mv ./target/debug/cargo-asm ./master-asm
- name: copy master executable (windows)
shell: bash
if: ${{ github.ref != 'refs/heads/master' && matrix.os == 'windows-latest' }}
run: mv ./target/debug/cargo-asm.exe ./master-asm.exe
- name: Upload binaries (non windows)
if: ${{ matrix.os != 'windows-latest' && github.ref != 'refs/heads/master' }}
uses: actions/upload-artifact@v4
with:
name: binaries-${{ matrix.os }}
path: |
master-asm
branch-asm
- name: Upload binaries (windows)
if: ${{ matrix.os == 'windows-latest' && github.ref != 'refs/heads/master' }}
uses: actions/upload-artifact@v4
with:
name: binaries-${{ matrix.os }}
path: |
master-asm.exe
branch-asm.exe
compare:
needs: build
if: ${{ github.ref != 'refs/heads/master' }}
strategy:
matrix:
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
fail-fast: false # failure doesn't mean results are bad, it means they are different
# and I still want to see the difference for all the OSes
name: ${{ matrix.os }} difference vs master
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: rustfmt clippy rust-src
targets: armv7-unknown-linux-gnueabihf
- name: Download prebuilt binaries
uses: actions/download-artifact@v4
with:
name: binaries-${{ matrix.os }}
- name: set executable bit
shell: bash
if: ${{ matrix.os != 'windows-latest' }}
run: |
chmod +x ./branch-asm
chmod +x ./master-asm
- name: disassembler on a binary
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample/Cargo.toml --bin sample sample::main 0 --disasm
- name: disassembler on a library
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample/Cargo.toml --lib sample::main 0 --disasm
- name: run disassembler directly on a file
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --file sample/target/release/sample sample::main 0
- name: Native version of cargo-show-asm (Intel ASM)
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample/Cargo.toml --lib --intel sample::main --rust
- name: Native version of cargo-show-asm (Intel ASM) + native CPU
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample/Cargo.toml --lib --native --intel sample::main --rust
- name: Native version of cargo-show-asm (Intel ASM) + native CPU + no default features
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh -vvv --manifest-path sample/Cargo.toml --lib --native --intel sample::main --rust --no-default-features
- name: Native version of cargo-show-asm (Intel ASM) + atom
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample/Cargo.toml --lib --target-cpu atom --intel sample::main --rust
- name: Native version of cargo-show-asm with symbol mangling (Intel ASM)
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample/Cargo.toml --lib --intel sample::main --rust --keep-mangled
- name: Native version of cargo-show-asm (LLVM)
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample/Cargo.toml --lib --llvm sample::main
- name: Native version of cargo-show-asm with symbol mangling (LLVM)
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample/Cargo.toml --lib --llvm --keep-mangled sample::main
- name: Native version of cargo-show-asm (LLVM Input)
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample/Cargo.toml --lib --llvm-input sample::main
- name: Native version of cargo-show-asm (MIR)
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample/Cargo.toml --lib --mir "main()"
- name: Crosscompiled version of cargo-show-asm (Intel ASM)
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample/Cargo.toml --lib --intel sample::main --target armv7-unknown-linux-gnueabihf
- name: Rlib project, AT&T asm
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample_rlib/Cargo.toml --att
- name: cdylib project
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample_cdylib/Cargo.toml add
- name: cdylib project, underscore prefix
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample_cdylib/Cargo.toml _mul
- name: merged functions real
shell: bash
if: ${{ !cancelled() && matrix.os != 'macos-latest' }} # uses x86 primops
run: ./.github/check.sh --manifest-path sample_merged/Cargo.toml sample_merged::merged_0
- name: merged functions merged
shell: bash
if: ${{ !cancelled() && matrix.os != 'macos-latest' }} # uses x86 primops
run: ./.github/check.sh --manifest-path sample_merged/Cargo.toml sample_merged::merged_1
- name: merged functions real
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample_merged/Cargo.toml sample_merged::one_num
- name: merged functions merged
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample_merged/Cargo.toml sample_merged::one_plus_one
- name: merged functions real
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample_merged/Cargo.toml sample_merged::two_num
- name: merged functions merged
shell: bash
if: ${{ !cancelled() }}
run: ./.github/check.sh --manifest-path sample_merged/Cargo.toml sample_merged::two_minus_one
# jobs:
# linux:
# name: Tests on Linux
# runs-on: ubuntu-latest
# steps:
# - name: Checkout repo
# uses: actions/checkout@v3
#
# - name: Install rust toolchain
# uses: dtolnay/rust-toolchain@stable
# with:
# toolchain: stable
# components: rustfmt clippy rust-src
# targets: armv7-unknown-linux-gnueabihf
#
# - name: Build all the things
# run: cargo build --tests
#
# - name: Run unit tests
# run: cargo test --all-features
#
# - name: Clippy
# run: cargo clippy -- -D clippy::disallowed_macros
#
# - name: Check formatting
# run: cargo fmt --all --check
#
# - name: run disassembler on a binary
# run: cargo run --features disasm -- --manifest-path sample/Cargo.toml --bin sample sample::main 0 --disasm
#
# - name: run disassembler on a library
# run: cargo run --features disasm -- --manifest-path sample/Cargo.toml --lib sample::main 0 --disasm
#
# - name: run disassembler directly on a file
# run: cargo run --features disasm -- --file sample/target/release/sample sample::main 0
#
# - name: Native version of cargo-show-asm (Intel ASM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --intel sample::main --rust
#
# - name: Native version of cargo-show-asm (Intel ASM) + native CPU
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --native --intel sample::main --rust
#
# - name: Native version of cargo-show-asm (Intel ASM) + native CPU + no default features
# run: cargo run -- -vvv --manifest-path sample/Cargo.toml --lib --native --intel sample::main --rust --no-default-features
#
# - name: Native version of cargo-show-asm (Intel ASM) + atom
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --target-cpu atom --intel sample::main --rust
#
# - name: Native version of cargo-show-asm with symbol mangling (Intel ASM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --intel sample::main --rust --keep-mangled
#
# - name: Native version of cargo-show-asm (LLVM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --llvm sample::main
#
# - name: Native version of cargo-show-asm with symbol mangling (LLVM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --llvm --keep-mangled sample::main
#
# - name: Native version of cargo-show-asm (LLVM Input)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --llvm-input sample::main
#
# - name: Native version of cargo-show-asm (MIR)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --mir "main()"
#
# - name: Crosscompiled version of cargo-show-asm (Intel ASM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --intel sample::main --target armv7-unknown-linux-gnueabihf
#
# - name: Rlib project, AT&T asm
# run: cargo run -- --manifest-path sample_rlib/Cargo.toml --att
#
# - name: cdylib project
# run: cargo run -- --manifest-path sample_cdylib/Cargo.toml add
#
# - name: cdylib project, underscore prefix
# run: cargo run -- --manifest-path sample_cdylib/Cargo.toml _mul
#
# - name: merged functions
# run: |
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::merged_0
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::merged_1
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::one_num
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::one_plus_one
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::two_num
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::two_minus_one
#
# windows:
# runs-on: windows-latest
# name: Tests on windows
# steps:
# - name: Checkout repo
# uses: actions/checkout@v3
#
# - name: Install rust toolchain
# uses: dtolnay/rust-toolchain@stable
# with:
# toolchain: stable
# components: rustfmt clippy rust-src
# targets: armv7-unknown-linux-gnueabihf
#
# - name: Build all the things
# run: cargo build --tests
#
# - name: Run unit tests
# run: cargo test --all-features
#
# - name: Clippy
# run: cargo clippy -- -D clippy::disallowed_macros
#
# - name: Check formatting
# run: cargo fmt --all --check
#
# - name: Native version of cargo-show-asm (Intel ASM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --intel sample::main --rust
#
# - name: Native version of cargo-show-asm (Intel ASM) + native CPU
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --native --intel sample::main --rust
#
# - name: Native version of cargo-show-asm (Intel ASM) + native CPU + no default features
# run: cargo run -- -vvv --manifest-path sample/Cargo.toml --lib --native --intel sample::main --rust --no-default-features
#
# - name: Native version of cargo-show-asm (Intel ASM) + atom
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --target-cpu atom --intel sample::main --rust
#
# - name: Native version of cargo-show-asm with symbol mangling (Intel ASM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --intel sample::main --rust --keep-mangled
#
# - name: Native version of cargo-show-asm (LLVM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --llvm sample::main
#
# - name: Native version of cargo-show-asm with symbol mangling (LLVM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --llvm --keep-mangled sample::main
#
# - name: Native version of cargo-show-asm (LLVM Input)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --llvm-input sample::main
#
# - name: Native version of cargo-show-asm (MIR)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --mir "main()"
#
# - name: Crosscompiled version of cargo-show-asm (Intel ASM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --intel sample::main --target armv7-unknown-linux-gnueabihf
#
# - name: Rlib project, AT&T asm
# run: cargo run -- --manifest-path sample_rlib/Cargo.toml --att
#
# - name: cdylib project, everything
# run: cargo run -- --manifest-path sample_cdylib/Cargo.toml --everything
#
# - name: cdylib project
# run: cargo run -- --manifest-path sample_cdylib/Cargo.toml add
#
# - name: cdylib project, underscore prefix
# run: cargo run -- --manifest-path sample_cdylib/Cargo.toml _mul
#
# - name: merged functions
# run: |
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::merged_0
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::merged_1
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::one_num
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::one_plus_one
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::two_num
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::two_minus_one
#
# macos:
# runs-on: macos-latest
# name: Tests on MacOS
# steps:
# - name: Checkout repo
# uses: actions/checkout@v3
#
# - name: Install rust toolchain
# uses: dtolnay/rust-toolchain@stable
# with:
# toolchain: stable
# components: rustfmt clippy rust-src
# targets: armv7-unknown-linux-gnueabihf
#
# - name: Build all the things
# run: cargo build --tests
#
# - name: Run unit tests
# run: cargo test --all-features
#
# - name: Clippy
# run: cargo clippy -- -D clippy::disallowed_macros
#
# - name: Check formatting
# run: cargo fmt --all --check
#
# - name: Native version of cargo-show-asm (Intel ASM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --intel sample::main --rust
#
# - name: Native version of cargo-show-asm (Intel ASM) + native CPU
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --native --intel sample::main --rust
#
# - name: Native version of cargo-show-asm (Intel ASM) + native CPU + no default features
# run: cargo run -- -vvv --manifest-path sample/Cargo.toml --lib --native --intel sample::main --rust --no-default-features
#
# - name: Native version of cargo-show-asm (Intel ASM) + atom
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --target-cpu atom --intel sample::main --rust
#
# - name: Native version of cargo-show-asm with symbol mangling (Intel ASM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --intel sample::main --rust --keep-mangled
#
# - name: Native version of cargo-show-asm (LLVM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --llvm sample::main
#
# - name: Native version of cargo-show-asm with symbol mangling (LLVM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --llvm --keep-mangled sample::main
#
# - name: Native version of cargo-show-asm (LLVM Input)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --llvm-input sample::main
#
# - name: Native version of cargo-show-asm (MIR)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --mir "main()"
#
# - name: Crosscompiled version of cargo-show-asm (Intel ASM)
# run: cargo run -- --manifest-path sample/Cargo.toml --lib --intel sample::main --target armv7-unknown-linux-gnueabihf
#
# - name: Rlib project, AT&T asm
# run: cargo run -- --manifest-path sample_rlib/Cargo.toml --att
#
# - name: cdylib project
# run: cargo run -- --manifest-path sample_cdylib/Cargo.toml add
#
# - name: cdylib project, underscore prefix
# run: cargo run -- --manifest-path sample_cdylib/Cargo.toml _mul
#
# - name: merged functions
# run: |
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::one_num
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::one_plus_one
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::two_num
# cargo run -- --manifest-path sample_merged/Cargo.toml sample_merged::two_minus_one