From ee85473d4a6e1eb737a6f086b49bde21701159b4 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 12 May 2016 21:24:32 +0200 Subject: travis: move travis-deps script to TOOLS Don't let it clutter the top level directory. --- .travis.yml | 2 +- TOOLS/travis-deps | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ travis-deps | 147 ------------------------------------------------------ 3 files changed, 148 insertions(+), 148 deletions(-) create mode 100755 TOOLS/travis-deps delete mode 100755 travis-deps diff --git a/.travis.yml b/.travis.yml index d7f7e6fdfd..30cb73e091 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,7 +37,7 @@ matrix: - os: linux compiler: clang -before_install: ./travis-deps libass-stable $LIBAV +before_install: TOOLS/travis-deps libass-stable $LIBAV script: - ./bootstrap.py - ./waf configure diff --git a/TOOLS/travis-deps b/TOOLS/travis-deps new file mode 100755 index 0000000000..194f183d1d --- /dev/null +++ b/TOOLS/travis-deps @@ -0,0 +1,147 @@ +#!/usr/bin/ruby + +class TravisDepsBuilder + def self.make(name) + instance = klass.new(name) + instance.fill_data + instance.deps + instance.build + end + + def self.klass + Module.const_get([self.name, self.os.capitalize].join) + rescue NameError + self + end + + def self.os + ENV['TRAVIS_OS_NAME'] + end + + attr_reader :name, :url, :action, :os + + def initialize(name) + @name, @os = name, self.class.os + end + + def fill_data + data = build_map.fetch(name) + @url, @action = data[:url], data[:action] + end + + def build + send(action) + end + + def deps; end + + private + def package_manager_update + # yes class variable, you wanna update only once across all instances + @@updated ||= false + return if @@updated + sh({'linux' => 'sudo apt-get update -y', 'osx' => 'brew update'}[os]) + @@updated = true + end + + def package_install(*packages) + cmd = { + 'linux' => 'sudo apt-get install %s -y', + 'osx' => 'brew install %s' + }[os] % [packages.join(" ")] + + sh cmd + end + + 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 package + package_install(url) + end + + def compile(dirname) + sh "cd #{dirname} && #{configure} && make && sudo make install" + sh "cd $TRAVIS_BUILD_DIR" + end + + def configure + "./configure" + end + + def sh(command) + `#{command}` + end +end + +class Libav < TravisDepsBuilder + def build_map + { + "libav-stable" => { + :action => :stable, + :url => 'http://libav.org/releases/libav-11.tar.gz' + }, + "libav-git" => { + :action => :git, + :url => "git://git.libav.org/libav.git" + }, + "ffmpeg-stable" => { + :action => :stable, + :url => 'http://www.ffmpeg.org/releases/ffmpeg-2.4.tar.gz' + }, + "ffmpeg-git" => { + :action => :git, + :url => "git://github.com/FFmpeg/FFmpeg.git" + } + } + end + + def configure + [super, "--cc=#{ENV['CC']}"].join(" ") + end +end + +class LibavOsx < Libav + def build_map + { + "ffmpeg-stable" => { :action => :package, :url => 'ffmpeg' }, + } + end +end + +class Libass < TravisDepsBuilder + def build_map + { + "libass-stable" => { + :action => :stable, + :url => 'https://github.com/libass/libass/releases/download/0.12.1/libass-0.12.1.tar.gz' + } + } + end +end + +class Dependencies < TravisDepsBuilder + def deps + packages = { + 'linux' => 'pkg-config fontconfig libfribidi-dev yasm', + 'osx' => 'pkg-config fontconfig freetype fribidi yasm' + } + package_manager_update + package_install(packages.fetch(os)) + end +end + +Dependencies.new(:deps).deps + +Libass.make(ARGV[0]) +Libav.make(ARGV[1]) diff --git a/travis-deps b/travis-deps deleted file mode 100755 index 194f183d1d..0000000000 --- a/travis-deps +++ /dev/null @@ -1,147 +0,0 @@ -#!/usr/bin/ruby - -class TravisDepsBuilder - def self.make(name) - instance = klass.new(name) - instance.fill_data - instance.deps - instance.build - end - - def self.klass - Module.const_get([self.name, self.os.capitalize].join) - rescue NameError - self - end - - def self.os - ENV['TRAVIS_OS_NAME'] - end - - attr_reader :name, :url, :action, :os - - def initialize(name) - @name, @os = name, self.class.os - end - - def fill_data - data = build_map.fetch(name) - @url, @action = data[:url], data[:action] - end - - def build - send(action) - end - - def deps; end - - private - def package_manager_update - # yes class variable, you wanna update only once across all instances - @@updated ||= false - return if @@updated - sh({'linux' => 'sudo apt-get update -y', 'osx' => 'brew update'}[os]) - @@updated = true - end - - def package_install(*packages) - cmd = { - 'linux' => 'sudo apt-get install %s -y', - 'osx' => 'brew install %s' - }[os] % [packages.join(" ")] - - sh cmd - end - - 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 package - package_install(url) - end - - def compile(dirname) - sh "cd #{dirname} && #{configure} && make && sudo make install" - sh "cd $TRAVIS_BUILD_DIR" - end - - def configure - "./configure" - end - - def sh(command) - `#{command}` - end -end - -class Libav < TravisDepsBuilder - def build_map - { - "libav-stable" => { - :action => :stable, - :url => 'http://libav.org/releases/libav-11.tar.gz' - }, - "libav-git" => { - :action => :git, - :url => "git://git.libav.org/libav.git" - }, - "ffmpeg-stable" => { - :action => :stable, - :url => 'http://www.ffmpeg.org/releases/ffmpeg-2.4.tar.gz' - }, - "ffmpeg-git" => { - :action => :git, - :url => "git://github.com/FFmpeg/FFmpeg.git" - } - } - end - - def configure - [super, "--cc=#{ENV['CC']}"].join(" ") - end -end - -class LibavOsx < Libav - def build_map - { - "ffmpeg-stable" => { :action => :package, :url => 'ffmpeg' }, - } - end -end - -class Libass < TravisDepsBuilder - def build_map - { - "libass-stable" => { - :action => :stable, - :url => 'https://github.com/libass/libass/releases/download/0.12.1/libass-0.12.1.tar.gz' - } - } - end -end - -class Dependencies < TravisDepsBuilder - def deps - packages = { - 'linux' => 'pkg-config fontconfig libfribidi-dev yasm', - 'osx' => 'pkg-config fontconfig freetype fribidi yasm' - } - package_manager_update - package_install(packages.fetch(os)) - end -end - -Dependencies.new(:deps).deps - -Libass.make(ARGV[0]) -Libav.make(ARGV[1]) -- cgit v1.2.3