2006-01-28 19:03:53 +00:00
|
|
|
|
2007-10-11 18:14:26 +00:00
|
|
|
require 'rubygems'
|
|
|
|
gem 'echoe', '>=2.6.4'
|
2007-09-23 03:09:56 +00:00
|
|
|
require 'echoe'
|
|
|
|
|
|
|
|
Echoe.new("mongrel") do |p|
|
|
|
|
p.summary = "A small fast HTTP library and server that runs Rails, Camping, Nitro and Iowa apps."
|
|
|
|
p.author ="Zed A. Shaw"
|
|
|
|
p.clean_pattern = ["ext/http11/*.{bundle,so,o,obj,pdb,lib,def,exp}", "ext/http11/Makefile", "pkg", "lib/*.bundle", "*.gem", "doc/site/output", ".config"]
|
|
|
|
p.rdoc_pattern = ['README', 'LICENSE', 'COPYING', 'lib/**/*.rb', 'doc/**/*.rdoc', 'ext/http11/http11.c']
|
2007-09-25 21:42:39 +00:00
|
|
|
p.ignore_pattern = /^(pkg|site|projects|doc|log)|CVS|\.log/
|
2007-09-23 03:09:56 +00:00
|
|
|
p.ruby_version = '>= 1.8.4'
|
2007-10-11 07:00:43 +00:00
|
|
|
p.dependencies = ['gem_plugin >=0.2.3', 'cgi_multipart_eof_fix >=2.4']
|
2007-09-23 03:09:56 +00:00
|
|
|
|
|
|
|
p.need_tar_gz = false
|
|
|
|
p.need_tgz = true
|
|
|
|
p.require_signed = true
|
|
|
|
|
2007-10-17 00:39:25 +00:00
|
|
|
case RUBY_PLATFORM
|
2007-10-17 03:27:51 +00:00
|
|
|
when /mswin/
|
|
|
|
p.certificate_chain = ['~/gem_certificates/mongrel-public_cert.pem',
|
|
|
|
'~/gem_certificates/luislavena-mongrel-public_cert.pem']
|
2007-10-17 05:17:17 +00:00
|
|
|
when /java/
|
|
|
|
p.clean_pattern += ["lib/http11.jar"]
|
2007-10-17 03:27:51 +00:00
|
|
|
else
|
|
|
|
p.certificate_chain = ['~/p/configuration/gem_certificates/mongrel/mongrel-public_cert.pem',
|
|
|
|
'~/p/configuration/gem_certificates/evan_weaver-mongrel-public_cert.pem']
|
2007-09-26 00:17:31 +00:00
|
|
|
end
|
|
|
|
|
2007-09-23 03:09:56 +00:00
|
|
|
p.eval = proc do
|
2007-10-17 00:39:25 +00:00
|
|
|
case RUBY_PLATFORM
|
2007-10-17 03:27:51 +00:00
|
|
|
when /mswin/
|
|
|
|
extensions.clear
|
|
|
|
self.files += ['lib/http11.so']
|
|
|
|
self.platform = Gem::Platform::WIN32
|
2007-10-17 05:17:17 +00:00
|
|
|
when /java/
|
2007-10-17 03:27:51 +00:00
|
|
|
extensions.clear
|
|
|
|
self.files += ['lib/http11.jar']
|
2007-10-17 05:17:17 +00:00
|
|
|
self.platform = 'jruby'
|
2007-10-17 03:27:51 +00:00
|
|
|
else
|
|
|
|
add_dependency('daemons', '>= 1.0.3')
|
|
|
|
add_dependency('fastthread', '>= 1.0.1')
|
|
|
|
end
|
2007-09-23 03:09:56 +00:00
|
|
|
end
|
2007-10-17 03:27:51 +00:00
|
|
|
|
2007-09-23 03:09:56 +00:00
|
|
|
end
|
2006-01-28 19:03:53 +00:00
|
|
|
|
2007-10-17 03:27:51 +00:00
|
|
|
#### A hack around RubyGems and Echoe for pre-compiled extensions.
|
2007-09-25 23:09:51 +00:00
|
|
|
|
2007-10-17 00:39:25 +00:00
|
|
|
def move_extensions
|
2007-10-17 03:34:09 +00:00
|
|
|
Dir["ext/**/*.#{Config::CONFIG['DLEXT']}"].each { |file| cp file, "lib/" }
|
2007-10-17 03:27:51 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
case RUBY_PLATFORM
|
|
|
|
when /mswin/
|
|
|
|
filename = "lib/http11.so"
|
|
|
|
file filename do
|
2007-10-17 03:34:09 +00:00
|
|
|
Dir.chdir("ext/http11") do
|
2007-10-17 03:27:51 +00:00
|
|
|
ruby File.basename(extension)
|
|
|
|
system(PLATFORM =~ /win32/ ? 'nmake' : 'make')
|
|
|
|
end
|
|
|
|
move_extensions
|
|
|
|
end
|
|
|
|
task :compile => [filename]
|
|
|
|
|
2007-10-17 05:17:17 +00:00
|
|
|
when /java/
|
2007-10-17 03:27:51 +00:00
|
|
|
filename = "lib/http11.jar"
|
2007-10-17 05:17:17 +00:00
|
|
|
def java_classpath_arg # myriad of ways to discover JRuby classpath
|
|
|
|
begin
|
|
|
|
require 'java' # already running in a JRuby JVM
|
|
|
|
jruby_cpath = Java::java.lang.System.getProperty('java.class.path')
|
|
|
|
rescue LoadError
|
|
|
|
end
|
|
|
|
unless jruby_cpath
|
|
|
|
jruby_cpath = ENV['JRUBY_PARENT_CLASSPATH'] || ENV['JRUBY_HOME'] &&
|
|
|
|
FileList["#{ENV['JRUBY_HOME']}/lib/*.jar"].join(File::PATH_SEPARATOR)
|
|
|
|
end
|
|
|
|
cpath_arg = jruby_cpath ? "-cp #{jruby_cpath}" : ""
|
|
|
|
end
|
2007-10-17 03:27:51 +00:00
|
|
|
file filename do
|
2007-10-17 05:17:17 +00:00
|
|
|
mkdir_p "pkg/classes"
|
|
|
|
sh "javac -target 1.4 -source 1.4 -d pkg/classes #{java_classpath_arg} #{FileList['ext/http11_java//**/*.java'].join(' ')}"
|
|
|
|
sh "jar cf lib/http11.jar -C pkg/classes/ ."
|
2007-10-17 03:27:51 +00:00
|
|
|
move_extensions
|
|
|
|
end
|
|
|
|
task :compile => [filename]
|
2007-10-17 05:17:17 +00:00
|
|
|
|
2007-10-17 00:39:25 +00:00
|
|
|
end
|
2006-05-21 14:46:42 +00:00
|
|
|
|
2007-09-23 03:09:56 +00:00
|
|
|
#### Project-wide install and uninstall tasks
|
2006-03-10 06:46:45 +00:00
|
|
|
|
2007-09-23 03:09:56 +00:00
|
|
|
def sub_project(project, *targets)
|
|
|
|
targets.each do |target|
|
|
|
|
Dir.chdir "projects/#{project}" do
|
|
|
|
sh %{rake --trace #{target.to_s} }
|
|
|
|
end
|
2006-02-15 23:17:23 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2007-10-15 19:11:37 +00:00
|
|
|
task :package_all => [:package] do
|
2007-10-15 18:57:59 +00:00
|
|
|
sub_project("gem_plugin", :clean, :package)
|
|
|
|
sub_project("cgi_multipart_eof_fix", :clean, :package)
|
|
|
|
sub_project("fastthread", :clean, :package)
|
|
|
|
sub_project("mongrel_status", :clean, :package)
|
|
|
|
sub_project("mongrel_upload_progress", :clean, :package)
|
|
|
|
sub_project("mongrel_console", :clean, :package)
|
|
|
|
sub_project("mongrel_cluster", :clean, :package)
|
|
|
|
if RUBY_PLATFORM =~ /mswin/
|
|
|
|
sub_project("mongrel_service", :clean, :package)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
2007-09-23 03:09:56 +00:00
|
|
|
task :install_requirements do
|
|
|
|
# These run before Mongrel is installed
|
2006-03-11 16:35:53 +00:00
|
|
|
sub_project("gem_plugin", :install)
|
2007-09-23 03:09:56 +00:00
|
|
|
sub_project("cgi_multipart_eof_fix", :install)
|
2006-11-20 16:52:46 +00:00
|
|
|
sub_project("fastthread", :install)
|
2007-09-23 03:09:56 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
task :install => [:install_requirements] do
|
|
|
|
# These run after Mongrel is installed
|
2006-03-11 16:35:53 +00:00
|
|
|
sub_project("mongrel_status", :install)
|
2006-06-25 14:49:46 +00:00
|
|
|
sub_project("mongrel_upload_progress", :install)
|
2006-03-19 05:18:11 +00:00
|
|
|
sub_project("mongrel_console", :install)
|
2006-08-16 21:51:38 +00:00
|
|
|
sub_project("mongrel_cluster", :install)
|
2006-06-16 21:01:12 +00:00
|
|
|
if RUBY_PLATFORM =~ /mswin/
|
|
|
|
sub_project("mongrel_service", :install)
|
|
|
|
end
|
2006-03-11 16:35:53 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
task :uninstall => [:clean] do
|
|
|
|
sub_project("mongrel_status", :uninstall)
|
2007-09-23 03:09:56 +00:00
|
|
|
sub_project("cgi_multipart_eof_fix", :uninstall)
|
2006-06-25 14:49:46 +00:00
|
|
|
sub_project("mongrel_upload_progress", :uninstall)
|
2006-03-19 05:18:11 +00:00
|
|
|
sub_project("mongrel_console", :uninstall)
|
2006-03-11 16:35:53 +00:00
|
|
|
sub_project("gem_plugin", :uninstall)
|
2006-11-20 16:52:46 +00:00
|
|
|
sub_project("fastthread", :uninstall)
|
2006-06-16 21:01:12 +00:00
|
|
|
if RUBY_PLATFORM =~ /mswin/
|
|
|
|
sub_project("mongrel_service", :install)
|
|
|
|
end
|
2006-03-11 16:35:53 +00:00
|
|
|
end
|
2006-03-12 19:40:35 +00:00
|
|
|
|
2007-10-15 19:11:37 +00:00
|
|
|
#### Extra upload tasks
|
2006-03-12 19:40:35 +00:00
|
|
|
|
2007-10-15 18:57:59 +00:00
|
|
|
task :gem_source => [:package_all] do
|
|
|
|
rm_rf "pkg/gems"
|
|
|
|
rm_rf "pkg/tars"
|
2006-03-12 19:40:35 +00:00
|
|
|
mkdir_p "pkg/gems"
|
2007-10-15 18:57:59 +00:00
|
|
|
mkdir_p "pkg/tars"
|
2006-06-10 07:02:19 +00:00
|
|
|
|
2006-03-12 19:40:35 +00:00
|
|
|
FileList["**/*.gem"].each { |gem| mv gem, "pkg/gems" }
|
2007-10-15 19:11:37 +00:00
|
|
|
FileList["**/*.tgz"].each {|tgz| mv tgz, "pkg/tars" }
|
|
|
|
|
|
|
|
# XXX Hack
|
2007-10-17 03:34:09 +00:00
|
|
|
sh "cp ~/Downloads/mongrel-1.0.2-mswin32.gem pkg/gems/"
|
|
|
|
sh "cp ~/Downloads/mongrel_service-0.3.3-mswin32.gem pkg/gems/"
|
|
|
|
sh "rm -rf pkg/mongrel*"
|
|
|
|
sh "index_gem_repository.rb -d pkg"
|
|
|
|
sh "scp -r CHANGELOG pkg/* rubyforge.org:/var/www/gforge-projects/mongrel/releases/"
|
|
|
|
sh "svn log -v > SVN_LOG"
|
|
|
|
sh "scp -r SVN_LOG pkg/* rubyforge.org:/var/www/gforge-projects/mongrel/releases/"
|
|
|
|
rm "SVN_LOG"
|
2006-03-12 19:40:35 +00:00
|
|
|
end
|
2007-09-23 03:09:56 +00:00
|
|
|
|
|
|
|
task :ragel do
|
2007-10-17 03:34:09 +00:00
|
|
|
sh "ragel ext/http11/http11_parser.rl | rlgen-cd -G2 -o ext/http11/http11_parser.c"
|
2007-09-23 03:09:56 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
task :site_webgen do
|
2007-10-17 03:34:09 +00:00
|
|
|
sh "pushd site; webgen; ruby atom.rb > output/feed.atom; rsync -azv output/* rubyforge.org:/var/www/gforge-projects/mongrel/; popd"
|
2007-09-23 03:09:56 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
task :site_rdoc => [:redoc] do
|
2007-10-17 03:34:09 +00:00
|
|
|
sh "rsync -azv doc/* rubyforge.org:/var/www/gforge-projects/mongrel/rdoc/"
|
2007-09-23 03:09:56 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
task :site_coverage => [:rcov] do
|
2007-10-17 03:34:09 +00:00
|
|
|
sh "rsync -azv test/coverage/* rubyforge.org:/var/www/gforge-projects/mongrel/coverage/"
|
2007-09-23 03:09:56 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
task :site_projects_rdoc do
|
2007-10-17 03:34:09 +00:00
|
|
|
sh "cd projects/gem_plugin; rake site"
|
2007-09-23 03:09:56 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
task :site => [:site_webgen, :site_rdoc, :site_coverage, :site_projects_rdoc]
|