diff options
author | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2013-05-19 09:19:29 +0200 |
---|---|---|
committer | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2013-05-19 20:41:40 +0200 |
commit | d8c06cd99e2b46b00da53850570aed6b6d52da27 (patch) | |
tree | 25f2cebd86822b204484c640e81afa327f9cbdf5 | |
parent | b5f07e86b872564b7b0a934e1346f1ce0ed19c9f (diff) | |
download | mpv-d8c06cd99e2b46b00da53850570aed6b6d52da27.tar.bz2 mpv-d8c06cd99e2b46b00da53850570aed6b6d52da27.tar.xz |
add Travis-CI integration
Travis-CI [1] is a continous integration cloud service. It is free for
open-source projects and tigthly integrated tiwh GitHub so there is really
no reason for us not use it. :)
For now we are going to do a total of 4 builds, mainly to test ffmpeg/libav
API breakage:
* ffmpeg-stable, libass-stable
* ffmpeg-git, libass-stable
* libav-stable, libass-stable
* libav-git, libass-stable
The compiler that is currently used is clang for two reasons:
* running 8 build targets would be quite wasteful and take a long time
* clang is less tested and used during development than gcc (especially on
linux)
Currently Travis doesn't support OS X environments alongside Linux ones [2].
When it will, we will add a fifth build target to test OS X compilation
breakage.
README was moved to markdown to add the little build status image. I ran some
tests with my GitHub fork and couldn't get images to show up using ReStructured
Text.
[1]: https://github.com/travis-ci/travis-ci
[2]: travis-ci/travis-ci#216
-rw-r--r-- | .travis.yml | 29 | ||||
-rw-r--r-- | README.md (renamed from README.rst) | 40 | ||||
-rwxr-xr-x | travis-deps | 92 |
3 files changed, 142 insertions, 19 deletions
diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..cd5a9d4262 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,29 @@ +language: c + +env: + - LIBAV=libav-stable + - LIBAV=libav-git + - LIBAV=ffmpeg-stable + - LIBAV=ffmpeg-git +compiler: + - clang +branches: + only: + - master + +before_install: ./travis-deps libass-stable $LIBAV +script: ./configure && make + +notifications: + email: + recipients: + - mpv-team@googlegroups.com + email: + on_success: change + n_failure: always + irc: + channels: + - "irc.freenode.org#mpv-player-dev" + email: + on_success: change + n_failure: always diff --git a/README.rst b/README.md index d8a962282b..ba3fab5360 100644 --- a/README.rst +++ b/README.md @@ -1,24 +1,26 @@ mpv -### +=== + +[![Build Status](https://api.travis-ci.org/mpv-player/mpv.png)](https://travis-ci.org/mpv-player/mpv) Overview -======== +-------- **mpv** is a movie player based on MPlayer and mplayer2. It supports a wide variety of video file formats, audio and video codecs, and subtitle types. If you are wondering what's different from mplayer2 and MPlayer you can read -more about the changes_. +more about the [changes][changes]. Compilation -=========== +----------- Compiling with full features requires development files for several external libraries. Below is a list of some important requirements. For -more information see the output of ``./configure --help`` for a list of options, +more information see the output of `./configure --help` for a list of options, or look at the list of enabled and disabled features printed after running -``./configure``. If you think you have support for some feature installed -but configure fails to detect it, the file ``config.log`` may contain +`./configure`. If you think you have support for some feature installed +but configure fails to detect it, the file `config.log` may contain information about the reasons for the failure. Essential dependencies (incomplete list): @@ -37,33 +39,33 @@ Essential dependencies (incomplete list): Most of the above libraries are available in suitable versions on normal Linux distributions. However FFmpeg is an exception (distro versions may be too old to work at all or work well). For that reason you may want to use -the separately available build wrapper (mpv-build_) that first compiles FFmpeg +the separately available build wrapper ([mpv-build][mpv-build]) that first compiles FFmpeg libraries and libass, and then compiles the player statically linked against those. -If you are running Mac OSX and using homebrew we provide homebrew-mpv_, an up +If you are running Mac OSX and using homebrew we provide [homebrew-mpv][homebrew-mpv], an up to date formula that compiles mpv with sensible dependencies and defaults for OSX. Bug reports -=========== +----------- -Please use the `issues tracker`_ provided by GitHub to send us bug reports or -feature requests. +Please use the [issue tracker][issue tracker] provided by GitHub to send us bug +reports or feature requests. Contributing -============ +------------ For small changes you can just send us pull requests through GitHub. For bigger changes come and talk to us on IRC before you start working on them. It will make code review easier for both parties later on. Contacts -======== +-------- -You can find us on IRC in ``#mpv-player`` on ``irc.freenode.net`` +You can find us on IRC in `#mpv-player` on `irc.freenode.net` -.. _changes: https://github.com/mpv-player/mpv/blob/master/DOCS/man/en/changes.rst -.. _mpv-build: https://github.com/mpv-player/mpv-build -.. _homebrew-mpv: https://github.com/mpv-player/homebrew-mpv -.. _issues tracker: https://github.com/mpv-player/mpv/issues +[changes]: https://github.com/mpv-player/mpv/blob/master/DOCS/man/en/changes.rst +[mpv-build]: https://github.com/mpv-player/mpv-build +[homebrew-mpv]: https://github.com/mpv-player/homebrew-mpv +[issue tracker]: https://github.com/mpv-player/mpv/issues diff --git a/travis-deps b/travis-deps new file mode 100755 index 0000000000..029c0f3992 --- /dev/null +++ b/travis-deps @@ -0,0 +1,92 @@ +#!/usr/bin/ruby + +class TravisDepsBuilder + def self.make(name) + info = build_map[name] + raise "unrecognized dependency identifier '#{name}'" unless info + instance = new(name, info[:url], info[:action]) + instance.deps + instance.build + end + + attr_reader :name, :url, :action + + def initialize(name, url=nil, action=nil) + @name, @url, @action = name, url, action + end + + def build + send(@action) + end + + def deps; end + + private + def git + sh "git clone --depth=1 #{url} #{name}" + compile name + end + + def stable + filename = File.basename(url) + sh "wget #{url}" + sh "tar -xzvf #{filename}" + dirname = File.basename(url, ".tar.gz" ) + compile dirname + end + + def compile(dirname) + sh "cd #{dirname} && ./configure && make && sudo make install" + sh "cd $TRAVIS_BUILD_DIR" + end + + def sh(command) + `#{command}` + end +end + +class Libav < TravisDepsBuilder + def self.build_map + { + "libav-stable" => { + :action => :stable, + :url => 'http://libav.org/releases/libav-9.6.tar.gz' + }, + "libav-git" => { + :action => :git, + :url => "git://git.libav.org/libav.git" + }, + "ffmpeg-stable" => { + :action => :stable, + :url => 'http://www.ffmpeg.org/releases/ffmpeg-1.2.1.tar.gz' + }, + "ffmpeg-git" => { + :action => :git, + :url => "git://github.com/FFmpeg/FFmpeg.git" + } + } + end +end + +class Libass < TravisDepsBuilder + def self.build_map + { + "libass-stable" => { + :action => :stable, + :url => 'http://libass.googlecode.com/files/libass-0.10.1.tar.gz' + } + } + end +end + +class Dependencies < TravisDepsBuilder + def deps + sh "sudo apt-get update -y" + sh "sudo apt-get install pkg-config fontconfig libfribidi-dev yasm -y" + end +end + +Dependencies.new(:deps).deps + +Libass.make(ARGV[0]) +Libav.make(ARGV[1]) |