mirror of
https://gitee.com/openharmony/third_party_rust_nix
synced 2024-11-23 15:30:45 +00:00
4a83f8b8b5
And promote aarch64-unknown-darwin to Tier 1. Because that's what Cirrus CI is doing. Fixes #1904
319 lines
9.5 KiB
YAML
319 lines
9.5 KiB
YAML
cargo_cache:
|
|
folder: $CARGO_HOME/registry
|
|
fingerprint_script: cat Cargo.lock || echo ""
|
|
|
|
env:
|
|
# Build by default; don't just check
|
|
BUILD: build
|
|
RUSTFLAGS: -D warnings
|
|
RUSTDOCFLAGS: -D warnings
|
|
TOOL: cargo
|
|
# The MSRV
|
|
TOOLCHAIN: 1.56.1
|
|
ZFLAGS:
|
|
|
|
# Tests that don't require executing the build binaries
|
|
build: &BUILD
|
|
build_script:
|
|
- . $HOME/.cargo/env || true
|
|
- $TOOL +$TOOLCHAIN -Vv
|
|
- rustc +$TOOLCHAIN -Vv
|
|
- $TOOL +$TOOLCHAIN $BUILD $ZFLAGS --target $TARGET --all-targets
|
|
- $TOOL +$TOOLCHAIN doc $ZFLAGS --no-deps --target $TARGET
|
|
- $TOOL +$TOOLCHAIN clippy $ZFLAGS --target $TARGET --all-targets -- -D warnings
|
|
- if [ -z "$NOHACK" ]; then mkdir -p $HOME/.cargo/bin; export PATH=$HOME/.cargo/bin:$PATH; fi
|
|
- if [ -z "$NOHACK" ]; then curl -LsSf https://github.com/taiki-e/cargo-hack/releases/latest/download/cargo-hack-${HOST:-$TARGET}.tar.gz | tar xzf - -C ~/.cargo/bin; fi
|
|
- if [ -z "$NOHACK" ]; then $TOOL +$TOOLCHAIN hack $ZFLAGS check --target $TARGET --each-feature; fi
|
|
|
|
# Tests that do require executing the binaries
|
|
test: &TEST
|
|
<< : *BUILD
|
|
test_script:
|
|
- . $HOME/.cargo/env || true
|
|
- $TOOL +$TOOLCHAIN test --target $TARGET
|
|
|
|
# Test FreeBSD in a full VM. Test the i686 target too, in the
|
|
# same VM. The binary will be built in 32-bit mode, but will execute on a
|
|
# 64-bit kernel and in a 64-bit environment. Our tests don't execute any of
|
|
# the system's binaries, so the environment shouldn't matter.
|
|
task:
|
|
env:
|
|
TARGET: x86_64-unknown-freebsd
|
|
matrix:
|
|
- name: FreeBSD 12 amd64 & i686
|
|
freebsd_instance:
|
|
image: freebsd-12-3-release-amd64
|
|
- name: FreeBSD 14 amd64 & i686
|
|
freebsd_instance:
|
|
image_family: freebsd-14-0-snap
|
|
# Enable tests that would fail on FreeBSD 12
|
|
RUSTFLAGS: --cfg fbsd14 -D warnings
|
|
RUSTDOCFLAGS: --cfg fbsd14
|
|
setup_script:
|
|
- kldload mqueuefs
|
|
- fetch https://sh.rustup.rs -o rustup.sh
|
|
- sh rustup.sh -y --profile=minimal --default-toolchain $TOOLCHAIN
|
|
- . $HOME/.cargo/env
|
|
- rustup target add i686-unknown-freebsd
|
|
- rustup component add --toolchain $TOOLCHAIN clippy
|
|
<< : *TEST
|
|
i386_test_script:
|
|
- . $HOME/.cargo/env
|
|
- cargo build --target i686-unknown-freebsd
|
|
- cargo doc --no-deps --target i686-unknown-freebsd
|
|
- cargo test --target i686-unknown-freebsd
|
|
i386_feature_script:
|
|
- . $HOME/.cargo/env
|
|
- if [ -z "$NOHACK" ]; then cargo hack check --each-feature --target i686-unknown-freebsd; fi
|
|
before_cache_script: rm -rf $CARGO_HOME/registry/index
|
|
|
|
# Test macOS aarch64 in a full VM
|
|
task:
|
|
name: macOS aarch64
|
|
env:
|
|
TARGET: aarch64-apple-darwin
|
|
macos_instance:
|
|
image: ghcr.io/cirruslabs/macos-ventura-base:latest
|
|
setup_script:
|
|
- curl --proto '=https' --tlsv1.2 -sSf -o rustup.sh https://sh.rustup.rs
|
|
- sh rustup.sh -y --profile=minimal --default-toolchain $TOOLCHAIN
|
|
- . $HOME/.cargo/env
|
|
- rustup component add --toolchain $TOOLCHAIN clippy
|
|
<< : *TEST
|
|
before_cache_script: rm -rf $CARGO_HOME/registry/index
|
|
|
|
# Use cross for QEMU-based testing
|
|
# cross needs to execute Docker, so we must use Cirrus's Docker Builder task.
|
|
task:
|
|
env:
|
|
RUST_TEST_THREADS: 1 # QEMU works best with 1 thread
|
|
HOME: /tmp/home
|
|
HOST: x86_64-unknown-linux-gnu
|
|
PATH: $HOME/.cargo/bin:$PATH
|
|
RUSTFLAGS: --cfg qemu -D warnings
|
|
TOOL: cross
|
|
matrix:
|
|
- name: Linux arm gnueabi
|
|
env:
|
|
TARGET: arm-unknown-linux-gnueabi
|
|
- name: Linux armv7 gnueabihf
|
|
env:
|
|
TARGET: armv7-unknown-linux-gnueabihf
|
|
- name: Linux i686
|
|
env:
|
|
TARGET: i686-unknown-linux-gnu
|
|
- name: Linux i686 musl
|
|
env:
|
|
TARGET: i686-unknown-linux-musl
|
|
- name: Linux MIPS
|
|
env:
|
|
TARGET: mips-unknown-linux-gnu
|
|
- name: Linux MIPS64
|
|
env:
|
|
TARGET: mips64-unknown-linux-gnuabi64
|
|
- name: Linux MIPS64 el
|
|
env:
|
|
TARGET: mips64el-unknown-linux-gnuabi64
|
|
- name: Linux mipsel
|
|
env:
|
|
TARGET: mipsel-unknown-linux-gnu
|
|
- name: Linux powerpc64le
|
|
env:
|
|
TARGET: powerpc64le-unknown-linux-gnu
|
|
compute_engine_instance:
|
|
image_project: cirrus-images
|
|
image: family/docker-builder
|
|
platform: linux
|
|
cpu: 1 # Since QEMU will only use 1 thread
|
|
memory: 4G
|
|
setup_script:
|
|
- mkdir /tmp/home
|
|
- curl --proto '=https' --tlsv1.2 -sSf -o rustup.sh https://sh.rustup.rs
|
|
- sh rustup.sh -y --profile=minimal --default-toolchain $TOOLCHAIN
|
|
- . $HOME/.cargo/env
|
|
- cargo install cross --version 0.2.1 # cross 0.2.2 bumped the MSRV to 1.58.1
|
|
<< : *TEST
|
|
before_cache_script: rm -rf $CARGO_HOME/registry/index
|
|
|
|
# Tasks for Linux native builds
|
|
task:
|
|
matrix:
|
|
- name: Linux aarch64
|
|
arm_container:
|
|
image: rust:1.56
|
|
env:
|
|
RUSTFLAGS: --cfg graviton -D warnings
|
|
TARGET: aarch64-unknown-linux-gnu
|
|
- name: Linux x86_64
|
|
container:
|
|
image: rust:1.56
|
|
env:
|
|
TARGET: x86_64-unknown-linux-gnu
|
|
- name: Linux x86_64 musl
|
|
container:
|
|
image: rust:1.56
|
|
env:
|
|
TARGET: x86_64-unknown-linux-musl
|
|
setup_script:
|
|
- rustup target add $TARGET
|
|
- rustup component add clippy
|
|
<< : *TEST
|
|
before_cache_script: rm -rf $CARGO_HOME/registry/index
|
|
|
|
task:
|
|
name: Rust Stable
|
|
container:
|
|
image: rust:latest
|
|
env:
|
|
TARGET: x86_64-unknown-linux-gnu
|
|
TOOLCHAIN:
|
|
setup_script:
|
|
- rustup target add $TARGET
|
|
- rustup component add clippy
|
|
<< : *TEST
|
|
before_cache_script: rm -rf $CARGO_HOME/registry/index
|
|
|
|
# Tasks for cross-compiling, but no testing
|
|
task:
|
|
container:
|
|
image: rust:1.56
|
|
env:
|
|
BUILD: check
|
|
HOST: x86_64-unknown-linux-gnu
|
|
matrix:
|
|
# Cross claims to support Android, but when it tries to run Nix's tests it
|
|
# reports undefined symbol references.
|
|
- name: Android aarch64
|
|
env:
|
|
TARGET: aarch64-linux-android
|
|
- name: Android arm
|
|
env:
|
|
TARGET: arm-linux-androideabi
|
|
- name: Android armv7
|
|
env:
|
|
TARGET: armv7-linux-androideabi
|
|
- name: Android i686
|
|
env:
|
|
TARGET: i686-linux-android
|
|
- name: Android x86_64
|
|
env:
|
|
TARGET: x86_64-linux-android
|
|
- name: Linux arm-musleabi
|
|
env:
|
|
TARGET: arm-unknown-linux-musleabi
|
|
- name: Fuchsia x86_64
|
|
env:
|
|
TARGET: x86_64-fuchsia
|
|
- name: Illumos
|
|
env:
|
|
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
|
|
- name: iOS aarch64
|
|
env:
|
|
# cargo hack tries to invoke the iphonesimulator SDK for iOS
|
|
NOHACK: 1
|
|
TARGET: aarch64-apple-ios
|
|
- name: iOS x86_64
|
|
env:
|
|
# cargo hack tries to invoke the iphonesimulator SDK for iOS
|
|
NOHACK: 1
|
|
TARGET: x86_64-apple-ios
|
|
# Cross testing on powerpc fails with "undefined reference to renameat2".
|
|
# Perhaps cross is using too-old a version?
|
|
- name: Linux powerpc
|
|
env:
|
|
TARGET: powerpc-unknown-linux-gnu
|
|
# Cross claims to support Linux powerpc64, but it really doesn't.
|
|
# https://github.com/rust-embedded/cross/issues/441
|
|
- name: Linux powerpc64
|
|
env:
|
|
TARGET: powerpc64-unknown-linux-gnu
|
|
- name: Linux s390x
|
|
env:
|
|
TARGET: s390x-unknown-linux-gnu
|
|
- name: Linux x32
|
|
env:
|
|
TARGET: x86_64-unknown-linux-gnux32
|
|
- name: macOS x86_64
|
|
env:
|
|
TARGET: x86_64-apple-darwin
|
|
- name: NetBSD x86_64
|
|
env:
|
|
TARGET: x86_64-unknown-netbsd
|
|
setup_script:
|
|
- rustup target add $TARGET
|
|
- rustup toolchain install $TOOLCHAIN --profile minimal --target $TARGET
|
|
- rustup component add --toolchain $TOOLCHAIN clippy
|
|
<< : *BUILD
|
|
before_cache_script: rm -rf $CARGO_HOME/registry/index
|
|
|
|
task:
|
|
container:
|
|
image: rust:1.56
|
|
env:
|
|
BUILD: check
|
|
name: Redox x86_64
|
|
env:
|
|
HOST: x86_64-unknown-linux-gnu
|
|
TARGET: x86_64-unknown-redox
|
|
# Redox's MSRV policy is unclear. Until they define it, use nightly.
|
|
TOOLCHAIN: nightly
|
|
setup_script:
|
|
- rustup target add $TARGET
|
|
- rustup toolchain install $TOOLCHAIN --profile minimal --target $TARGET
|
|
- rustup component add --toolchain $TOOLCHAIN clippy
|
|
<< : *BUILD
|
|
before_cache_script: rm -rf $CARGO_HOME/registry/index
|
|
|
|
# Rust Tier 3 targets can't use Rustup
|
|
task:
|
|
container:
|
|
image: rustlang/rust:nightly
|
|
env:
|
|
BUILD: check
|
|
HOST: x86_64-unknown-linux-gnu
|
|
TOOLCHAIN: nightly
|
|
ZFLAGS: -Zbuild-std
|
|
matrix:
|
|
- name: DragonFly BSD x86_64
|
|
env:
|
|
TARGET: x86_64-unknown-dragonfly
|
|
- name: OpenBSD x86_64
|
|
env:
|
|
TARGET: x86_64-unknown-openbsd
|
|
- name: Linux armv7 uclibceabihf
|
|
env:
|
|
TARGET: armv7-unknown-linux-uclibceabihf
|
|
- name: Haiku x86_64
|
|
env:
|
|
TARGET: x86_64-unknown-haiku
|
|
setup_script:
|
|
- rustup component add rust-src
|
|
<< : *BUILD
|
|
before_cache_script: 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.
|
|
task:
|
|
name: Minver
|
|
env:
|
|
HOST: x86_64-unknown-linux-gnu
|
|
TOOLCHAIN: nightly
|
|
container:
|
|
image: rustlang/rust:nightly
|
|
setup_script:
|
|
- cargo update -Zminimal-versions
|
|
check_script:
|
|
- cargo check
|
|
before_cache_script: rm -rf $CARGO_HOME/registry/index
|
|
|
|
# Tasks that checks if the code is formatted right using `cargo fmt` tool
|
|
task:
|
|
name: Rust Formatter
|
|
container:
|
|
image: rust:latest
|
|
setup_script: rustup +$TOOLCHAIN component add rustfmt
|
|
test_script: $TOOL +$TOOLCHAIN fmt --all -- --check **/*.rs
|