variables:
APT_CACHE_DIR: apt-cache
PKG_CONFIG_ALLOW_CROSS: 1
cache:
key: "$CI_JOB_NAME"
untracked: true
paths:
- apt-cache/
- cargo/
- target/
stages:
- build
- lint
.build_template: &build
image: "rust:latest"
stage: build
before_script:
- mkdir -pv $APT_CACHE_DIR
- apt-get -qq update
- apt-get -o dir::cache::archives="$APT_CACHE_DIR" -qq -y install build-essential curl git pkg-config $EXTRA_PACKAGES
- export PATH="/root/.cargo/bin:$PATH"
- rustup target add $TARGET || true - cargo update
script:
- cargo build --target=$TARGET
- if [[ -z $DISABLE_EXTRA_BUILDS ]]; then cargo build --examples --target=$TARGET; fi
- if [[ -z $DISABLE_EXTRA_BUILDS ]]; then cargo build --tests --target=$TARGET; fi
- if [[ -z $DISABLE_TESTS ]]; then cargo test --no-fail-fast --target=$TARGET; fi
x86_64-unknown-linux-gnu-1.36.0:
<<: *build
image: "rust:1.36.0"
variables:
EXTRA_PACKAGES: "libudev-dev"
TARGET: x86_64-unknown-linux-gnu
aarch64-unknown-linux-gnu:
<<: *build
variables:
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
EXTRA_PACKAGES: "libudev-dev gcc-aarch64-linux-gnu libc6-dev-arm64-cross"
TARGET: aarch64-unknown-linux-gnu
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
arm-unknown-linux-gnueabi:
<<: *build
variables:
CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABI_LINKER: arm-linux-gnueabi-gcc
EXTRA_PACKAGES: "libudev-dev gcc-arm-linux-gnueabi libc6-dev-armel-cross"
TARGET: arm-unknown-linux-gnueabi
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
arm-unknown-linux-gnueabihf:
<<: *build
variables:
CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-gcc
EXTRA_PACKAGES: "libudev-dev gcc-arm-linux-gnueabihf libc6-dev-armel-cross"
TARGET: arm-unknown-linux-gnueabihf
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
armv5te-unknown-linux-gnueabi:
<<: *build
variables:
CARGO_TARGET_ARMV5TE_UNKNOWN_LINUX_GNUEABI_LINKER: arm-linux-gnueabi-gcc
EXTRA_PACKAGES: "libudev-dev gcc-arm-linux-gnueabi libc6-dev-armel-cross"
TARGET: armv5te-unknown-linux-gnueabi
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
armv7-unknown-linux-gnueabihf:
<<: *build
variables:
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-gcc
EXTRA_PACKAGES: "libudev-dev gcc-arm-linux-gnueabihf libc6-dev-armhf-cross"
TARGET: armv7-unknown-linux-gnueabihf
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
i586-unknown-linux-gnu:
<<: *build
variables:
EXTRA_PACKAGES: "libudev-dev gcc-multilib"
TARGET: i586-unknown-linux-gnu
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
i686-unknown-linux-gnu:
<<: *build
variables:
EXTRA_PACKAGES: "libudev-dev gcc-multilib"
TARGET: i686-unknown-linux-gnu
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
mips-unknown-linux-gnu:
<<: *build
variables:
CARGO_TARGET_MIPS_UNKNOWN_LINUX_GNU_LINKER: mips-linux-gnu-gcc
EXTRA_PACKAGES: "libudev-dev gcc-mips-linux-gnu libc6-dev-mips-cross"
TARGET: mips-unknown-linux-gnu
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
mips64-unknown-linux-gnuabi64:
<<: *build
variables:
CARGO_TARGET_MIPS64_UNKNOWN_LINUX_GNUABI64_LINKER: mips64-linux-gnuabi64-gcc
EXTRA_PACKAGES: "libudev-dev gcc-mips64-linux-gnuabi64 libc6-dev-mips64-cross"
TARGET: mips64-unknown-linux-gnuabi64
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
mips64el-unknown-linux-gnuabi64:
<<: *build
variables:
CARGO_TARGET_MIPS64EL_UNKNOWN_LINUX_GNUABI64_LINKER: mips64el-linux-gnuabi64-gcc
EXTRA_PACKAGES: "libudev-dev gcc-mips64el-linux-gnuabi64 libc6-dev-mips64el-cross"
TARGET: mips64el-unknown-linux-gnuabi64
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
mipsel-unknown-linux-gnu:
<<: *build
variables:
CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_GNU_LINKER: mipsel-linux-gnu-gcc
EXTRA_PACKAGES: "libudev-dev gcc-mipsel-linux-gnu libc6-dev-mipsel-cross"
TARGET: mipsel-unknown-linux-gnu
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
powerpc-unknown-linux-gnu:
<<: *build
variables:
CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_LINKER: powerpc-linux-gnu-gcc
EXTRA_PACKAGES: "libudev-dev gcc-powerpc-linux-gnu libc6-dev-powerpc-cross"
TARGET: powerpc-unknown-linux-gnu
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
powerpc64-unknown-linux-gnu:
<<: *build
variables:
CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_LINKER: powerpc64-linux-gnu-gcc
EXTRA_PACKAGES: "libudev-dev gcc-powerpc64-linux-gnu libc6-dev-ppc64-cross"
TARGET: powerpc64-unknown-linux-gnu
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
powerpc64le-unknown-linux-gnu:
<<: *build
variables:
CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_LINKER: powerpc64le-linux-gnu-gcc
EXTRA_PACKAGES: "libudev-dev gcc-powerpc64le-linux-gnu libc6-dev-ppc64el-cross"
TARGET: powerpc64le-unknown-linux-gnu
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
s390x-unknown-linux-gnu:
<<: *build
variables:
CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_LINKER: s390x-linux-gnu-gcc
EXTRA_PACKAGES: "libudev-dev gcc-s390x-linux-gnu libc6-dev-s390x-cross"
TARGET: s390x-unknown-linux-gnu
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
sparc64-unknown-linux-gnu:
<<: *build
variables:
EXTRA_PACKAGES: libudev-dev
TARGET: sparc64-unknown-linux-gnu
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
x86_64-unknown-linux-gnu:
<<: *build
variables:
EXTRA_PACKAGES: libudev-dev
TARGET: x86_64-unknown-linux-gnu
aarch64-linux-android:
<<: *build
variables:
TARGET: aarch64-linux-android
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
arm-linux-androideabi:
<<: *build
variables:
TARGET: arm-linux-androideabi
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
armv7-linux-androideabi:
<<: *build
variables:
TARGET: armv7-linux-androideabi
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
i686-linux-android:
<<: *build
variables:
TARGET: i686-linux-android
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
x86_64-linux-android:
<<: *build
variables:
TARGET: x86_64-linux-android
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
i686-unknown-freebsd:
<<: *build
variables:
TARGET: i686-unknown-freebsd
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
x86_64-unknown-freebsd:
<<: *build
variables:
TARGET: x86_64-unknown-freebsd
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
x86_64-unknown-netbsd:
<<: *build
variables:
TARGET: x86_64-unknown-netbsd
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
arm-unknown-linux-musleabi:
<<: *build
variables:
CARGO_TARGET_ARM_UNKNOWN_LINUX_MUSLEABI_LINKER: arm-linux-gnueabi-gcc
EXTRA_PACKAGES: "gcc-arm-linux-gnueabi"
TARGET: arm-unknown-linux-musleabi
DISABLE_TESTS: 1
armv5te-unknown-linux-musleabi:
<<: *build
variables:
CARGO_TARGET_ARMV5TE_UNKNOWN_LINUX_MUSLEABI_LINKER: arm-linux-gnueabi-gcc
EXTRA_PACKAGES: "gcc-arm-linux-gnueabi"
TARGET: armv5te-unknown-linux-musleabi
DISABLE_TESTS: 1
armv7-unknown-linux-musleabihf:
<<: *build
variables:
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_MUSLEABIHF_LINKER: arm-linux-gnueabihf-gcc
EXTRA_PACKAGES: "gcc-arm-linux-gnueabihf"
TARGET: armv7-unknown-linux-musleabihf
DISABLE_TESTS: 1
aarch64-unknown-linux-musl:
<<: *build
variables:
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER: aarch64-linux-gnu-gcc
EXTRA_PACKAGES: "gcc-aarch64-linux-gnu"
TARGET: aarch64-unknown-linux-musl
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
i586-unknown-linux-musl:
<<: *build
variables:
TARGET: i586-unknown-linux-musl
mips-unknown-linux-musl:
<<: *build
variables:
CARGO_TARGET_MIPS_UNKNOWN_LINUX_MUSL_LINKER: mips-linux-gnu-gcc
EXTRA_PACKAGES: "gcc-mips-linux-gnu"
TARGET: mips-unknown-linux-musl
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
mipsel-unknown-linux-musl:
<<: *build
variables:
CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_LINKER: mipsel-linux-gnu-gcc
EXTRA_PACKAGES: "gcc-mipsel-linux-gnu"
TARGET: mipsel-unknown-linux-musl
DISABLE_TESTS: 1
DISABLE_EXTRA_BUILDS: 1
i686-unknown-linux-musl:
<<: *build
variables:
TARGET: i686-unknown-linux-musl
x86_64-unknown-linux-musl:
<<: *build
variables:
TARGET: x86_64-unknown-linux-musl
rustfmt:
image: "rust:latest"
stage: lint
script:
- rustup component add rustfmt
- cargo fmt -- --check
clippy:
<<: *build
image: "rust:latest"
variables:
EXTRA_PACKAGES: "libudev-dev"
TARGET: x86_64-unknown-linux-gnu
stage: lint
script:
- rustup component add clippy
- cargo clippy --all-targets --all-features
minimal-deps:
<<: *build
image: "rustlang/rust:nightly"
variables:
TARGET: x86_64-unknown-linux-gnu
stage: lint
allow_failure: true
script:
- cargo generate-lockfile -Z minimal-versions
- cargo build --verbose