forked from mirrors/gstreamer-rs
ea367bac14
And ignore some common warnings we don't care about in general, while also making clippy errors fail the build.
148 lines
4.7 KiB
YAML
148 lines
4.7 KiB
YAML
stages:
|
|
- "lint"
|
|
- "test"
|
|
- "extras"
|
|
|
|
.tarball_setup:
|
|
variables:
|
|
# Only stuff inside the repo directory can be cached
|
|
# Override the CARGO_HOME variable to force its location
|
|
CARGO_HOME: "${CI_PROJECT_DIR}/.cargo_home"
|
|
DEPENDENCIES: |
|
|
curl
|
|
libssl-dev
|
|
liborc-0.4-dev
|
|
libglib2.0-dev
|
|
libxml2-dev
|
|
libgtk-3-dev
|
|
libegl1-mesa
|
|
libgles2-mesa
|
|
libgl1-mesa-dri
|
|
libgl1-mesa-glx
|
|
libwayland-egl1-mesa
|
|
before_script:
|
|
- apt-get update -yqq
|
|
- apt-get install -yqq --no-install-recommends $DEPENDENCIES
|
|
|
|
- mkdir -p precompiled-gst && cd precompiled-gst
|
|
|
|
- curl -L https://people.freedesktop.org/~slomo/gstreamer-1.16.0.tar.gz | tar xz
|
|
- sed -i "s;prefix=/root/gstreamer;prefix=$PWD/gstreamer;g" $PWD/gstreamer/lib/x86_64-linux-gnu/pkgconfig/*.pc
|
|
- export PKG_CONFIG_PATH=$PWD/gstreamer/lib/x86_64-linux-gnu/pkgconfig
|
|
- export GST_PLUGIN_SYSTEM_PATH=$PWD/gstreamer/lib/x86_64-linux-gnu/gstreamer-1.0
|
|
- export GST_PLUGIN_SCANNER=$PWD/gstreamer/libexec/gstreamer-1.0/gst-plugin-scanner
|
|
- export PATH=$PATH:$PWD/gstreamer/bin
|
|
- export LD_LIBRARY_PATH=$PWD/gstreamer/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
|
|
|
|
- cd "${CI_PROJECT_DIR}"
|
|
cache:
|
|
key: "gst"
|
|
paths:
|
|
- "${CARGO_HOME}"
|
|
|
|
.cargo test:
|
|
extends: '.tarball_setup'
|
|
stage: "test"
|
|
script:
|
|
- rustc --version
|
|
# First build and test all the crates with their relevant features
|
|
# Keep features in sync with below
|
|
- |
|
|
for crate in gstreamer*; do
|
|
if [ -n "$ALL_FEATURES" ]; then
|
|
if [ $crate = "gstreamer" ]; then
|
|
FEATURES=subclassing,futures,ser_de,v1_16
|
|
elif [ $crate = "gstreamer-base" -o $crate = "gstreamer-video" ]; then
|
|
FEATURES=subclassing,v1_16
|
|
elif [ $crate = "gstreamer-gl" ]; then
|
|
FEATURES=egl,x11,wayland,v1_16
|
|
else
|
|
FEATURES=v1_16
|
|
fi
|
|
|
|
cargo build --color=always --manifest-path $crate/Cargo.toml --features=$FEATURES
|
|
G_DEBUG=fatal_warnings cargo test --color=always --manifest-path $crate/Cargo.toml --features=$FEATURES
|
|
else
|
|
cargo build --color=always --manifest-path $crate/Cargo.toml
|
|
G_DEBUG=fatal_warnings cargo test --color=always --manifest-path $crate/Cargo.toml
|
|
fi
|
|
done
|
|
|
|
# If we do a build with all features then also build the
|
|
# tutorials/examples with all features
|
|
- |
|
|
if [ -n "$ALL_FEATURES" ]; then
|
|
cargo build --color=always --manifest-path examples/Cargo.toml --bins --examples --all-features
|
|
cargo build --color=always --manifest-path tutorials/Cargo.toml --bins --examples --all-features
|
|
fi
|
|
|
|
test 1.36:
|
|
# 1.36 img
|
|
# https://hub.docker.com/_/rust/
|
|
image: "rust:1.36-slim"
|
|
extends: '.cargo test'
|
|
|
|
test stable:
|
|
# Stable img
|
|
# https://hub.docker.com/_/rust/
|
|
image: "rust:slim"
|
|
extends: '.cargo test'
|
|
|
|
test stable all-features:
|
|
# Stable img
|
|
# https://hub.docker.com/_/rust/
|
|
image: "rust:slim"
|
|
variables:
|
|
ALL_FEATURES: 'yes'
|
|
extends: '.cargo test'
|
|
|
|
test nightly:
|
|
# Nightly
|
|
# https://hub.docker.com/r/rustlang/rust/
|
|
image: "rustlang/rust:nightly-slim"
|
|
allow_failure: true
|
|
extends: '.cargo test'
|
|
|
|
test nightly all-features:
|
|
# Nightly
|
|
# https://hub.docker.com/r/rustlang/rust/
|
|
image: "rustlang/rust:nightly-slim"
|
|
allow_failure: true
|
|
variables:
|
|
ALL_FEATURES: 'yes'
|
|
extends: '.cargo test'
|
|
|
|
rustfmt:
|
|
image: "rust:slim"
|
|
stage: "lint"
|
|
script:
|
|
- rustup component add rustfmt
|
|
- cargo fmt --version
|
|
- cargo fmt -- --color=always --check
|
|
|
|
clippy:
|
|
extends: '.tarball_setup'
|
|
image: "rust:slim"
|
|
stage: 'extras'
|
|
script:
|
|
- rustup component add clippy-preview
|
|
- cargo clippy --version
|
|
# Keep features in sync with above
|
|
- |
|
|
for crate in gstreamer*; do
|
|
if [ $crate = "gstreamer" ]; then
|
|
FEATURES=subclassing,futures,ser_de,v1_16
|
|
elif [ $crate = "gstreamer-base" -o $crate = "gstreamer-video" ]; then
|
|
FEATURES=subclassing,v1_16
|
|
elif [ $crate = "gstreamer-gl" ]; then
|
|
FEATURES=egl,x11,wayland,v1_16
|
|
else
|
|
FEATURES=v1_16
|
|
fi
|
|
|
|
cargo clippy --color=always --manifest-path $crate/Cargo.toml --features=$FEATURES -- -A clippy::redundant_pattern_matching -A clippy::single_match -A clippy::cast_lossless
|
|
done
|
|
# And also run over all the examples/tutorials
|
|
- |
|
|
cargo clippy --color=always --manifest-path examples/Cargo.toml --bins --examples --all-features -- -A clippy::redundant_pattern_matching -A clippy::single_match -A clippy::cast_lossless
|
|
cargo clippy --color=always --manifest-path tutorials/Cargo.toml --bins --examples --all-features -- -A clippy::redundant_pattern_matching -A clippy::single_match -A clippy::cast_lossless
|