mirror of
https://gitee.com/openharmony/third_party_rust_nix
synced 2024-10-06 21:23:38 +00:00
0df82ded47
libc::stat is deprecated on DragonflyBSD in libc. But there isn't any alternative yet, so Nix must simply suppress the warnings. It's used in too many places to suppress each one individually, so just suppress all deprecation warnings globally until it's properly fixed. https://github.com/rust-lang/libc/pull/2522
274 lines
8.1 KiB
YAML
274 lines
8.1 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.46.0
|
|
ZFLAGS:
|
|
|
|
# Tests that don't require executing the build binaries
|
|
build: &BUILD
|
|
build_script:
|
|
- . $HOME/.cargo/env || true
|
|
- $TOOL +$TOOLCHAIN $BUILD $ZFLAGS --target $TARGET --all-targets
|
|
- $TOOL +$TOOLCHAIN doc $ZFLAGS --no-deps --target $TARGET
|
|
- $TOOL +$TOOLCHAIN clippy $ZFLAGS --target $TARGET -- -D warnings
|
|
|
|
# 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:
|
|
name: FreeBSD amd64 & i686
|
|
env:
|
|
TARGET: x86_64-unknown-freebsd
|
|
freebsd_instance:
|
|
image: freebsd-12-2-release-amd64
|
|
setup_script:
|
|
- 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
|
|
before_cache_script: rm -rf $CARGO_HOME/registry/index
|
|
|
|
# Test OSX in a full VM
|
|
task:
|
|
matrix:
|
|
- name: OSX x86_64
|
|
env:
|
|
TARGET: x86_64-apple-darwin
|
|
osx_instance:
|
|
image: catalina-xcode
|
|
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
|
|
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
|
|
<< : *TEST
|
|
before_cache_script: rm -rf $CARGO_HOME/registry/index
|
|
|
|
# Tasks for Linux native builds
|
|
task:
|
|
matrix:
|
|
- name: Rust Stable
|
|
container:
|
|
image: rust:latest
|
|
env:
|
|
TARGET: x86_64-unknown-linux-gnu
|
|
TOOLCHAIN:
|
|
- name: Linux aarch64
|
|
arm_container:
|
|
image: rust:1.46
|
|
env:
|
|
RUSTFLAGS: --cfg graviton -D warnings
|
|
TARGET: aarch64-unknown-linux-gnu
|
|
- name: Linux x86_64
|
|
container:
|
|
image: rust:1.46
|
|
env:
|
|
TARGET: x86_64-unknown-linux-gnu
|
|
- name: Linux x86_64 musl
|
|
container:
|
|
image: rust:1.46
|
|
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
|
|
|
|
# Tasks for cross-compiling, but no testing
|
|
task:
|
|
container:
|
|
image: rust:1.46
|
|
env:
|
|
BUILD: check
|
|
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
|
|
# illumos toolchain isn't available via rustup until 1.50
|
|
TOOLCHAIN: 1.50.0
|
|
container:
|
|
image: rust:1.50
|
|
# 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:
|
|
TARGET: aarch64-apple-ios
|
|
# Rustup only supports cross-building from arbitrary hosts for iOS at
|
|
# 1.49.0 and above. Below that it's possible to cross-build from an OSX
|
|
# host, but OSX VMs are more expensive than Linux VMs.
|
|
TOOLCHAIN: 1.49.0
|
|
- name: iOS x86_64
|
|
env:
|
|
TARGET: x86_64-apple-ios
|
|
TOOLCHAIN: 1.49.0
|
|
# 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: NetBSD x86_64
|
|
env:
|
|
TARGET: x86_64-unknown-netbsd
|
|
- name: Redox x86_64
|
|
env:
|
|
TARGET: x86_64-unknown-redox
|
|
# Redox requires a nightly compiler.
|
|
# If stuff breaks, change nightly to the date at
|
|
# https://gitlab.redox-os.org/redox-os/redox/-/blob/master/rust-toolchain
|
|
TOOLCHAIN: nightly-2021-06-15
|
|
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
|
|
TOOLCHAIN: nightly
|
|
ZFLAGS: -Zbuild-std
|
|
matrix:
|
|
- name: DragonFly BSD x86_64
|
|
env:
|
|
TARGET: x86_64-unknown-dragonfly
|
|
# Temporarily allow deprecation on DragonflyBSD until an alternative is
|
|
# available.
|
|
#https://github.com/rust-lang/libc/pull/2522
|
|
RUSTFLAGS: -D warnings -A deprecated
|
|
- name: OpenBSD x86_64
|
|
env:
|
|
TARGET: x86_64-unknown-openbsd
|
|
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:
|
|
TOOLCHAIN: nightly
|
|
container:
|
|
image: rustlang/rust:nightly
|
|
setup_script:
|
|
- cargo update -Zminimal-versions
|
|
script:
|
|
- cargo check
|
|
before_cache_script: rm -rf $CARGO_HOME/registry/index
|