diff --git a/sys/.travis.yml b/sys/.travis.yml new file mode 100644 index 0000000..32c86c9 --- /dev/null +++ b/sys/.travis.yml @@ -0,0 +1,38 @@ +sudo: required +dist: trusty + +language: rust +rust: + - stable + - beta + - nightly +matrix: + allow_failures: + - rust: nightly +addons: + apt: + packages: + - build-essential +before_install: + - sudo apt-get update -q + # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu + - sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev + - sudo apt-get install yasm + - pushd ~ + - git clone https://github.com/FFmpeg/FFmpeg.git + - cd FFmpeg + - git checkout release/2.8 + - mkdir ~/FFmpeg-build + - cd ~/FFmpeg-build + - ../FFmpeg/configure --disable-ffprobe --disable-ffserver --disable-doc --enable-avresample + - make -j + - sudo make install + - make distclean + - popd + +script: + # Current Travis Ubuntu version uses libav which doesn't come with libswresample + - cargo build --verbose --no-default-features --features "avcodec avfilter avformat avresample swscale" + - cargo test --verbose --no-default-features --features "avcodec avfilter avformat avresample swscale" +after_failure: + - find /usr -type f 2>/dev/null | grep -E 'lib(avcodec/version|avcodec/avcodec).h$' | xargs -I THEFILE -- sh -c 'echo "=== THEFILE ==="; cat THEFILE' diff --git a/sys/tests/data/ffmpeg-structs.c b/sys/tests/data/ffmpeg-structs.c index 09e3e68..6e014e6 100644 --- a/sys/tests/data/ffmpeg-structs.c +++ b/sys/tests/data/ffmpeg-structs.c @@ -1,3 +1,5 @@ +#include + #include int main() diff --git a/sys/tests/lib.rs b/sys/tests/lib.rs index ef64c0c..d1e6475 100644 --- a/sys/tests/lib.rs +++ b/sys/tests/lib.rs @@ -2,10 +2,10 @@ extern crate libc; extern crate ffmpeg_sys; use std::env; -use std::fs::{create_dir, File}; +use std::fs::{create_dir, File, symlink_metadata}; use std::io::Write; use std::mem; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; use std::process::Command; use std::str; @@ -14,8 +14,11 @@ use libc::c_void; use ffmpeg_sys::AVCodecContext; fn output() -> PathBuf { - let ret = PathBuf::from("tmp"); - create_dir(&ret).ok(); + let mut ret = std::env::current_dir().unwrap(); + ret.push(&Path::new("tmp")); + if symlink_metadata(&ret).is_err() { + create_dir(&ret).expect("Failed to create temporary output dir"); + } ret }