docs: document ptr type casting in CONVENTIONS.md #100
Workflow file for this run
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
name: CI | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened] | |
push: | |
branches: | |
- master | |
merge_group: | |
types: [checks_requested] | |
permissions: | |
contents: read | |
env: | |
MSRV: 1.69.0 | |
jobs: | |
macos: | |
runs-on: macos-13 | |
env: | |
TARGET: x86_64-apple-darwin | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: setup Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: '${{ env.MSRV }}' | |
components: clippy | |
- name: build | |
uses: ./.github/actions/build | |
with: | |
TARGET: '${{ env.TARGET }}' | |
- name: test | |
uses: ./.github/actions/test | |
with: | |
TARGET: '${{ env.TARGET }}' | |
- name: before_cache_script | |
run: rm -rf $CARGO_HOME/registry/index | |
# Use cross for QEMU-based testing | |
# cross needs to execute Docker, GitHub Action already has it installed | |
cross: | |
runs-on: ubuntu-20.04 | |
needs: [rustfmt, minver, macos, linux_native_builds, rust_stable] | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [ | |
arm-unknown-linux-gnueabi, | |
armv7-unknown-linux-gnueabihf, | |
i686-unknown-linux-gnu, | |
i686-unknown-linux-musl, | |
mips-unknown-linux-gnu, | |
mips64-unknown-linux-gnuabi64, | |
mips64el-unknown-linux-gnuabi64, | |
mipsel-unknown-linux-gnu, | |
powerpc64le-unknown-linux-gnu, | |
] | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: setup Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: '${{ env.MSRV }}' | |
components: clippy | |
# cross relies on docker or podman, GitHub Acton already has it installed. | |
- name: Set up cross | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: [email protected] | |
- name: build | |
uses: ./.github/actions/build | |
with: | |
TARGET: '${{ matrix.target }}' | |
TOOL: cross | |
RUSTFLAGS: --cfg qemu -D warnings | |
- name: test | |
uses: ./.github/actions/test | |
with: | |
TARGET: '${{ matrix.target }}' | |
TOOL: cross | |
RUSTFLAGS: --cfg qemu -D warnings | |
- name: before_cache_script | |
run: rm -rf $CARGO_HOME/registry/index | |
# Tasks for Linux native builds | |
# Only test x86_64 targets on GitHub Action, leave aarch64 one in Cirrus CI. | |
linux_native_builds: | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [ | |
x86_64-unknown-linux-gnu, | |
x86_64-unknown-linux-musl, | |
] | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: setup Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: '${{ env.MSRV }}' | |
components: clippy | |
- name: install targets | |
run: rustup target add ${{ matrix.target }} | |
- name: build | |
uses: ./.github/actions/build | |
with: | |
TARGET: '${{ matrix.TARGET }}' | |
- name: test | |
uses: ./.github/actions/test | |
with: | |
TARGET: '${{ matrix.TARGET }}' | |
- name: before_cache_script | |
run: rm -rf $CARGO_HOME/registry/index | |
rust_stable: | |
runs-on: ubuntu-20.04 | |
env: | |
TARGET: x86_64-unknown-linux-gnu | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: setup Rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: clippy | |
- name: build | |
uses: ./.github/actions/build | |
with: | |
TARGET: '${{ env.TARGET }}' | |
- name: test | |
uses: ./.github/actions/test | |
with: | |
TARGET: '${{ env.TARGET }}' | |
- name: before_cache_script | |
run: rm -rf $CARGO_HOME/registry/index | |
# Tasks for cross-compiling, but no testing | |
cross_compiling: | |
runs-on: ubuntu-20.04 | |
needs: [rustfmt, minver, macos, linux_native_builds, rust_stable] | |
env: | |
BUILD: check | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# Cross claims to support Android, but when it tries to run Nix's tests it | |
# reports undefined symbol references. | |
- target: aarch64-linux-android | |
- target: arm-linux-androideabi | |
- target: armv7-linux-androideabi | |
- target: i686-linux-android | |
- target: x86_64-linux-android | |
- target: arm-unknown-linux-musleabi | |
- target: x86_64-unknown-fuchsia | |
- target: x86_64-unknown-illumos | |
# Cross claims to support running tests on iOS, but it actually doesn't. | |
# https://github.com/rust-embedded/cross/issues/535 | |
- target: aarch64-apple-ios | |
# cargo hack tries to invoke the iphonesimulator SDK for iOS | |
NOHACK: true | |
# Cross claims to support Linux powerpc64, but it really doesn't. | |
# https://github.com/rust-embedded/cross/issues/441 | |
- target: powerpc64-unknown-linux-gnu | |
- target: s390x-unknown-linux-gnu | |
- target: x86_64-unknown-linux-gnux32 | |
- target: x86_64-unknown-netbsd | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: setup Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: '${{ env.MSRV }}' | |
components: clippy | |
- name: install targets | |
run: rustup target add ${{ matrix.target }} | |
- name: build | |
uses: ./.github/actions/build | |
with: | |
TARGET: '${{ matrix.target }}' | |
BUILD: '${{ env.BUILD }}' | |
NOHACK: '${{ matrix.NOHACK }}' | |
- name: before_cache_script | |
run: rm -rf $CARGO_HOME/registry/index | |
redox: | |
runs-on: ubuntu-20.04 | |
needs: [rustfmt, minver, macos, linux_native_builds, rust_stable] | |
env: | |
TARGET: x86_64-unknown-redox | |
CLIPPYFLAGS: -D warnings | |
BUILD: check | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: setup Rust | |
# Redox's MSRV policy is unclear. Until they define it, use nightly. | |
uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: clippy | |
- name: install targets | |
run: rustup target add ${{ env.TARGET }} | |
- name: build | |
uses: ./.github/actions/build | |
with: | |
TARGET: '${{ env.TARGET }}' | |
BUILD: '${{ env.BUILD }}' | |
CLIPPYFLAGS: '${{ env.CLIPPYFLAGS }}' | |
- name: before_cache_script | |
run: rm -rf $CARGO_HOME/registry/index | |
# Rust Tier 3 targets can't use Rustup | |
tier3: | |
runs-on: ubuntu-20.04 | |
env: | |
BUILD: check | |
ZFLAGS: -Zbuild-std | |
CLIPPYFLAGS: -D warnings | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- target: x86_64-unknown-dragonfly | |
- target: x86_64-unknown-openbsd | |
- target: armv7-unknown-linux-uclibceabihf | |
- target: x86_64-unknown-haiku | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: setup Rust | |
uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: clippy | |
- name: install src | |
run: rustup component add rust-src | |
- name: build | |
uses: ./.github/actions/build | |
with: | |
TARGET: '${{ matrix.target }}' | |
BUILD: '${{ env.BUILD }}' | |
ZFLAGS: '${{ env.ZFLAGS }}' | |
CLIPPYFLAGS: '${{ env.CLIPPYFLAGS }}' | |
- name: before_cache_script | |
run: rm -rf $CARGO_HOME/registry/index | |
# Test that we can build with the lowest version of all dependencies. | |
# "cargo test" doesn't work because some of our dev-dependencies, like | |
# rand, can't build with their own minimal dependencies. | |
minver: | |
runs-on: ubuntu-20.04 | |
env: | |
TARGET: x86_64-unknown-linux-gnu | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: setup Rust | |
uses: dtolnay/rust-toolchain@nightly | |
- name: setup | |
run: cargo update -Zminimal-versions | |
- name: check | |
run: cargo check | |
- name: before_cache_script | |
run: rm -rf $CARGO_HOME/registry/index | |
# Tasks that checks if the code is formatted right using `cargo fmt` tool | |
rustfmt: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- name: Check format | |
run: cargo fmt --all -- --check **/*.rs | |
- name: before_cache_script | |
run: rm -rf $CARGO_HOME/registry/index | |