Skip to content

Instantly share code, notes, and snippets.

@jwilger
Created February 14, 2009 20:24
Show Gist options
  • Save jwilger/64459 to your computer and use it in GitHub Desktop.
Save jwilger/64459 to your computer and use it in GitHub Desktop.
DEPS_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'deps'))
SRC_DIR = File.join(DEPS_DIR, 'src')
BIN_DIR = File.join(DEPS_DIR, 'bin')
GEM_DIR = File.join(DEPS_DIR, 'lib', 'ruby', 'gems', '1.8', 'gems')
desc 'Setup to run before working on project'
task :setup => :build do
exec "ADDPATH='#{BIN_DIR}' zsh"
end
desc 'Build software dev environment dependencies'
task :build => [DEPS_DIR, SRC_DIR, 'build:ruby', 'build:gems']
file DEPS_DIR do
sh "mkdir -pv '#{DEPS_DIR}'"
end
file SRC_DIR => DEPS_DIR do
sh "mkdir -pv '#{SRC_DIR}'"
end
namespace :build do
task :ruby => File.join(BIN_DIR, 'ruby')
task :gems => ['gems:gem', 'gems:rake', 'gems:sqlite3', 'gems:mongrel',
'gems:rack', 'gems:rspec', 'gems:cucumber', 'gems:webrat', 'gems:Selenium']
file File.join(BIN_DIR, 'ruby') => File.join(SRC_DIR, 'ruby-1.8.7-p72') do
sh "cd #{File.join(SRC_DIR, 'ruby-1.8.7-p72')} && " +
"./configure --enable-install-doc --prefix=#{DEPS_DIR} && " +
"make && make install"
end
file File.join(SRC_DIR, 'ruby-1.8.7-p72') => File.join(SRC_DIR, 'ruby-1.8.7-p72.tar.bz2') do
sh "cd #{SRC_DIR} && " +
"tar -jxvf ruby-1.8.7-p72.tar.bz2"
end
file File.join(SRC_DIR, 'ruby-1.8.7-p72.tar.bz2') do
sh "cd #{SRC_DIR} && " +
"curl ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.7-p72.tar.bz2 > ruby-1.8.7-p72.tar.bz2"
end
namespace :gems do
task :gem => GEM_DIR
file GEM_DIR => File.join(SRC_DIR, 'rubygems-1.3.1') do
sh "cd #{File.join(SRC_DIR, 'rubygems-1.3.1')} && " +
"#{File.join(BIN_DIR, 'ruby')} ./setup.rb && " +
"touch #{GEM_DIR}"
end
file File.join(SRC_DIR, 'rubygems-1.3.1') => File.join(SRC_DIR, 'rubygems-1.3.1.tgz') do
sh "cd #{SRC_DIR} && " +
"tar -zxvf rubygems-1.3.1.tgz"
end
file File.join(SRC_DIR, 'rubygems-1.3.1.tgz') do
sh "cd #{SRC_DIR} && " +
"curl -L http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz > rubygems-1.3.1.tgz"
end
task :rake => File.join(GEM_DIR, 'rake-0.8.3')
file File.join(GEM_DIR, 'rake-0.8.3') do
sh "#{BIN_DIR}/gem install rake -v 0.8.3"
end
task :sqlite3 => File.join(GEM_DIR, 'sqlite3-ruby-1.2.4')
file File.join(GEM_DIR, 'sqlite3-ruby-1.2.4') do
sh "#{BIN_DIR}/gem install sqlite3-ruby -v 1.2.4"
end
task :mongrel => File.join(GEM_DIR, 'mongrel-1.1.5')
file File.join(GEM_DIR, 'mongrel-1.1.5') do
sh "#{BIN_DIR}/gem install mongrel -v 1.1.5"
end
task :rspec => File.join(GEM_DIR, 'rspec-rails-1.1.12')
file File.join(GEM_DIR, 'rspec-rails-1.1.12') do
sh "#{BIN_DIR}/gem install rspec-rails -v 1.1.12"
end
task :cucumber => File.join(GEM_DIR, 'cucumber-0.1.16')
file File.join(GEM_DIR, 'cucumber-0.1.16') do
sh "#{BIN_DIR}/gem install cucumber -v 0.1.16"
end
task :webrat => File.join(GEM_DIR, 'webrat-0.4.1')
file File.join(GEM_DIR, 'webrat-0.4.1') do
sh "#{BIN_DIR}/gem install webrat -v 0.4.1"
end
task :Selenium => File.join(GEM_DIR, 'Selenium-1.1.14')
file File.join(GEM_DIR, 'Selenium-1.1.14') do
sh "#{BIN_DIR}/gem install Selenium -v 1.1.14"
end
task :rack => File.join(GEM_DIR, 'rack-0.9.1')
file File.join(GEM_DIR, 'rack-0.9.1') do
sh "#{BIN_DIR}/gem install rack -v 0.9.1"
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment