libc-rs/.travis.yml
gnzlbg 8f1acf4643 Build all platforms in CI
This commit adds a `ci/build.sh` script that checks that libc builds correctly
for some common configurations (`--no-default-features`, `default`,
`extra_traits`) on most targets supported by Rust since Rust 1.13.0 (the oldest
Rust version that libc supports).

The build matrix is refactored into two stages.

The first stage is called `tools-and-build-and-tier1` and it aims to discover
issues quickly by running the documentation and linter builds, as well as
checking that the library builds correctly on all targets in all supported
channels and "problematic" Rust versions; Rust versions adding major new
features like `repr(align)`, `union`, etc. This first stage also runs
libc-test for the tier-1 targets on linux and osx. These builds finish
quickly because no emulation is necessary.

The second stage is called `tier2` and it runs libc-test for all other targets
for which we are currently able to do so.

Closes #1229 .
2019-02-07 13:44:32 +01:00

193 lines
5.4 KiB
YAML

language: rust
rust: nightly
sudo: required
dist: xenial
services: docker
stages:
- tools-and-build-and-tier1
- tier2
matrix:
include:
# TOOLS
- name: "Documentation"
env: TARGET=x86_64-unknown-linux-gnu
script: sh ci/dox.sh
install: true
stage: tools-and-build-and-tier1
- name: "Shellcheck"
install: true
script:
- shellcheck --version
- shellcheck ci/*.sh
stage: tools-and-build-and-tier1
- name: "Style"
install: rustup component add rustfmt-preview
script:
- rustc ci/style.rs && ./style src
- cargo fmt --all -- --check
stage: tools-and-build-and-tier1
# BUILD stable, beta, nightly
- name: "Build Stable Rust"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: stable
- name: "Build Beta Rust"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: beta
- name: "Build Nightly Rust"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: nightly
- name: "Build Stable Rust"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: stable
os: osx
osx_image: xcode10
- name: "Build Beta Rust"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: beta
os: osx
osx_image: xcode10
- name: "Build Nightly Rust"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: nightly
os: osx
osx_image: xcode10
- name: "Build Stable Rust 1.13.0"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: 1.13.0
- name: "Build Stable Rust 1.19.0"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: 1.19.0
- name: "Build Stable Rust 1.24.0"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: 1.24.0
- name: "Build Stable Rust 1.25.0"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: 1.25.0
- name: "Build Stable Rust 1.30.0"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: 1.30.0
- name: "Build Stable Rust 1.13.0"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: 1.13.0
os: osx
osx_image: xcode10
- name: "Build Stable Rust 1.19.0"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: 1.19.0
os: osx
osx_image: xcode10
- name: "Build Stable Rust 1.24.0"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: 1.24.0
os: osx
osx_image: xcode10
- name: "Build Stable Rust 1.25.0"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: 1.25.0
os: osx
osx_image: xcode10
- name: "Build Stable Rust 1.30.0"
script: sh ci/build.sh
stage: tools-and-build-and-tier1
rust: 1.30.0
os: osx
osx_image: xcode10
- env: TARGET=i686-apple-darwin
os: osx
osx_image: xcode10
stage: tools-and-build-and-tier1
- env: TARGET=i686-unknown-linux-gnu
stage: tools-and-build-and-tier1
- env: TARGET=x86_64-apple-darwin
os: osx
osx_image: xcode10
stage: tools-and-build-and-tier1
- env: TARGET=x86_64-unknown-linux-gnu
stage: tools-and-build-and-tier1
# Tier 2 targets
- env: TARGET=aarch64-linux-android
stage: tier2
- env: TARGET=aarch64-unknown-linux-gnu
stage: tier2
- env: TARGET=aarch64-unknown-linux-musl
stage: tier2
- env: TARGET=arm-linux-androideabi
stage: tier2
- env: TARGET=arm-unknown-linux-gnueabihf
stage: tier2
- env: TARGET=arm-unknown-linux-musleabihf
stage: tier2
- env: TARGET=asmjs-unknown-emscripten
stage: tier2
- env: TARGET=i686-unknown-linux-musl
stage: tier2
- env: TARGET=mips-unknown-linux-gnu
stage: tier2
- env: TARGET=mips-unknown-linux-musl
stage: tier2
- env: TARGET=mips64-unknown-linux-gnuabi64
stage: tier2
- env: TARGET=mips64el-unknown-linux-gnuabi64
stage: tier2
- env: TARGET=mipsel-unknown-linux-musl
stage: tier2
- env: TARGET=powerpc-unknown-linux-gnu
stage: tier2
- env: TARGET=powerpc64-unknown-linux-gnu
stage: tier2
- env: TARGET=powerpc64le-unknown-linux-gnu
stage: tier2
- env: TARGET=s390x-unknown-linux-gnu
stage: tier2
- env: TARGET=sparc64-unknown-linux-gnu
stage: tier2
- env: TARGET=wasm32-unknown-emscripten
stage: tier2
- env: TARGET=x86_64-linux-android
stage: tier2
- env: TARGET=x86_64-unknown-linux-gnux32 OPT="--release"
stage: tier2
- env: TARGET=x86_64-unknown-linux-musl
stage: tier2
allow_failures:
# FIXME: https://github.com/rust-lang/libc/issues/1226
- env: TARGET=asmjs-unknown-emscripten
- env: TARGET=wasm32-unknown-emscripten
install: rustup target add $TARGET || true
script:
- cargo generate-lockfile --manifest-path libc-test/Cargo.toml
- if [[ $TRAVIS_OS_NAME = "linux" ]] && [[ $BUILD_ONLY != "1" ]]; then
sh ci/run-docker.sh $TARGET;
else
sh ci/run.sh $TARGET;
fi
env:
global:
secure: "e2/3QjgRN9atOuSHp22TrYG7QVKcYUWY48Hi9b60w+r1+BhPkTseIJLte7WefRhdXtqpjjUJTooKDhnurFOeHaCT+nmBgiv+FPU893sBl4bhesY4m0vgUJVbNZcs6lTImYekWVb+aqjGdgV/XAgCw7c3kPmrZV0MzGDWL64Xaps="
notifications:
email:
on_success: never