2006-01-28 14:03:53 -05:00
|
|
|
|
2007-10-11 14:14:26 -04:00
|
|
|
require 'rubygems'
|
2007-12-15 03:19:19 -05:00
|
|
|
gem 'echoe', '>=2.7.5'
|
2007-09-22 23:09:56 -04:00
|
|
|
require 'echoe'
|
|
|
|
|
2007-10-17 04:21:58 -04:00
|
|
|
e = Echoe.new("mongrel") do |p|
|
2007-09-22 23:09:56 -04:00
|
|
|
p.summary = "A small fast HTTP library and server that runs Rails, Camping, Nitro and Iowa apps."
|
|
|
|
p.author ="Zed A. Shaw"
|
2008-02-23 14:45:25 -05:00
|
|
|
p.clean_pattern = ['ext/http11/*.{bundle,so,o,obj,pdb,lib,def,exp}', 'lib/*.{bundle,so,o,obj,pdb,lib,def,exp}', 'ext/http11/Makefile', 'pkg', 'lib/*.bundle', '*.gem', 'site/output', '.config', 'lib/http11.jar', 'ext/http11_java/classes', 'coverage', 'doc']
|
2007-12-31 12:34:46 -05:00
|
|
|
p.url = "http://mongrel.rubyforge.org"
|
2007-11-01 02:52:12 -04:00
|
|
|
p.rdoc_pattern = ['README', 'LICENSE', 'CHANGELOG', 'COPYING', 'lib/**/*.rb', 'doc/**/*.rdoc']
|
2008-02-13 00:32:51 -05:00
|
|
|
p.docs_host = 'mongrel.cloudbur.st:/home/eweaver/www/mongrel/htdocs/web'
|
2007-09-25 17:42:39 -04:00
|
|
|
p.ignore_pattern = /^(pkg|site|projects|doc|log)|CVS|\.log/
|
2007-12-29 01:01:22 -05:00
|
|
|
p.ruby_version = '>=1.8.4'
|
2007-12-15 03:19:19 -05:00
|
|
|
p.dependencies = ['gem_plugin >=0.2.3']
|
|
|
|
p.extension_pattern = nil
|
2007-12-31 12:34:46 -05:00
|
|
|
|
|
|
|
p.certificate_chain = case ENV['USER']
|
|
|
|
when 'eweaver'
|
|
|
|
['~/p/configuration/gem_certificates/mongrel/mongrel-public_cert.pem',
|
|
|
|
'~/p/configuration/gem_certificates/evan_weaver-mongrel-public_cert.pem']
|
|
|
|
when 'luislavena'
|
|
|
|
['~/gem_certificates/mongrel-public_cert.pem',
|
|
|
|
'~/gem_certificates/luislavena-mongrel-public_cert.pem']
|
|
|
|
end
|
2007-12-15 03:19:19 -05:00
|
|
|
|
2007-09-22 23:09:56 -04:00
|
|
|
p.need_tar_gz = false
|
|
|
|
p.need_tgz = true
|
|
|
|
|
2007-12-31 12:34:46 -05:00
|
|
|
if RUBY_PLATFORM !~ /mswin|java/
|
|
|
|
p.extension_pattern = ["ext/**/extconf.rb"]
|
|
|
|
end
|
|
|
|
|
|
|
|
p.eval = proc do
|
|
|
|
case RUBY_PLATFORM
|
2007-12-15 03:19:19 -05:00
|
|
|
when /mswin/
|
2007-12-31 12:34:46 -05:00
|
|
|
self.files += ['lib/http11.so']
|
2008-02-29 14:23:12 -05:00
|
|
|
self.platform = Gem::Platform::CURRENT
|
2007-12-31 12:34:46 -05:00
|
|
|
add_dependency('cgi_multipart_eof_fix', '>= 2.4')
|
2007-12-15 03:19:19 -05:00
|
|
|
when /java/
|
2007-12-31 12:34:46 -05:00
|
|
|
self.files += ['lib/http11.jar']
|
|
|
|
self.platform = 'jruby' # XXX Is this right?
|
2007-12-15 03:19:19 -05:00
|
|
|
else
|
2007-12-31 12:34:46 -05:00
|
|
|
add_dependency('daemons', '>= 1.0.3')
|
|
|
|
add_dependency('fastthread', '>= 1.0.1')
|
|
|
|
add_dependency('cgi_multipart_eof_fix', '>= 2.4')
|
2007-10-16 23:27:51 -04:00
|
|
|
end
|
2007-09-22 23:09:56 -04:00
|
|
|
end
|
2007-12-31 12:34:46 -05:00
|
|
|
|
2007-09-22 23:09:56 -04:00
|
|
|
end
|
2006-01-28 14:03:53 -05:00
|
|
|
|
2007-10-17 02:57:40 -04:00
|
|
|
#### Ragel builder
|
|
|
|
|
2007-10-21 00:39:13 -04:00
|
|
|
desc "Rebuild the Ragel sources"
|
2007-10-17 02:57:40 -04:00
|
|
|
task :ragel do
|
|
|
|
Dir.chdir "ext/http11" do
|
|
|
|
target = "http11_parser.c"
|
|
|
|
File.unlink target if File.exist? target
|
|
|
|
sh "ragel http11_parser.rl | rlgen-cd -G2 -o #{target}"
|
|
|
|
raise "Failed to build C source" unless File.exist? target
|
|
|
|
end
|
2007-10-25 23:07:30 -04:00
|
|
|
Dir.chdir "ext/http11" do
|
|
|
|
target = "../../ext/http11_java/org/jruby/mongrel/Http11Parser.java"
|
|
|
|
File.unlink target if File.exist? target
|
|
|
|
sh "ragel -J http11_parser.java.rl | rlgen-java -o #{target}"
|
|
|
|
raise "Failed to build Java source" unless File.exist? target
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2007-12-15 03:19:19 -05:00
|
|
|
#### Pre-compiled extensions for alternative platforms
|
2007-09-25 19:09:51 -04:00
|
|
|
|
2007-10-16 20:39:25 -04:00
|
|
|
def move_extensions
|
2007-11-01 00:10:17 -04:00
|
|
|
Dir["ext/**/*.#{Config::CONFIG['DLEXT']}"].each { |file| mv file, "lib/" }
|
2007-10-16 23:27:51 -04:00
|
|
|
end
|
|
|
|
|
2007-11-01 03:26:10 -04:00
|
|
|
def java_classpath_arg
|
2007-10-25 23:07:30 -04:00
|
|
|
# A myriad of ways to discover the JRuby classpath
|
|
|
|
classpath = begin
|
2007-11-01 03:26:10 -04:00
|
|
|
require 'java'
|
2007-10-25 23:07:30 -04:00
|
|
|
# Already running in a JRuby JVM
|
|
|
|
Java::java.lang.System.getProperty('java.class.path')
|
|
|
|
rescue LoadError
|
|
|
|
ENV['JRUBY_PARENT_CLASSPATH'] || ENV['JRUBY_HOME'] && FileList["#{ENV['JRUBY_HOME']}/lib/*.jar"].join(File::PATH_SEPARATOR)
|
|
|
|
end
|
|
|
|
classpath ? "-cp #{classpath}" : ""
|
|
|
|
end
|
|
|
|
|
2007-10-16 23:27:51 -04:00
|
|
|
case RUBY_PLATFORM
|
|
|
|
when /mswin/
|
|
|
|
filename = "lib/http11.so"
|
|
|
|
file filename do
|
2007-11-01 03:26:10 -04:00
|
|
|
Dir.chdir("ext/http11") do
|
2007-10-18 21:35:32 -04:00
|
|
|
ruby "extconf.rb"
|
2007-10-18 21:37:35 -04:00
|
|
|
system(PLATFORM =~ /mswin/ ? 'nmake' : 'make')
|
2007-10-16 23:27:51 -04:00
|
|
|
end
|
|
|
|
move_extensions
|
2007-11-01 03:26:10 -04:00
|
|
|
end
|
2007-10-16 23:27:51 -04:00
|
|
|
task :compile => [filename]
|
2007-10-25 23:07:30 -04:00
|
|
|
|
|
|
|
when /java/
|
2007-12-15 03:19:19 -05:00
|
|
|
|
|
|
|
# Avoid JRuby in-process launching problem
|
|
|
|
begin
|
|
|
|
require 'jruby'
|
|
|
|
JRuby.runtime.instance_config.run_ruby_in_process = false
|
|
|
|
rescue LoadError
|
|
|
|
end
|
|
|
|
|
2007-10-25 23:07:30 -04:00
|
|
|
filename = "lib/http11.jar"
|
|
|
|
file filename do
|
|
|
|
build_dir = "ext/http11_java/classes"
|
|
|
|
mkdir_p build_dir
|
|
|
|
sources = FileList['ext/http11_java/**/*.java'].join(' ')
|
|
|
|
sh "javac -target 1.4 -source 1.4 -d #{build_dir} #{java_classpath_arg} #{sources}"
|
|
|
|
sh "jar cf lib/http11.jar -C #{build_dir} ."
|
2007-11-01 03:26:10 -04:00
|
|
|
move_extensions
|
|
|
|
end
|
2007-10-25 23:07:30 -04:00
|
|
|
task :compile => [filename]
|
|
|
|
|
2007-10-16 20:39:25 -04:00
|
|
|
end
|
2006-05-21 10:46:42 -04:00
|
|
|
|
2007-09-22 23:09:56 -04:00
|
|
|
#### Project-wide install and uninstall tasks
|
2006-03-10 01:46:45 -05:00
|
|
|
|
2007-09-22 23:09:56 -04:00
|
|
|
def sub_project(project, *targets)
|
|
|
|
targets.each do |target|
|
|
|
|
Dir.chdir "projects/#{project}" do
|
2007-11-01 00:21:02 -04:00
|
|
|
unless RUBY_PLATFORM =~ /mswin/
|
2007-11-12 15:32:35 -05:00
|
|
|
sh("rake #{target.to_s}") # --trace
|
2007-11-01 00:21:02 -04:00
|
|
|
end
|
2007-09-22 23:09:56 -04:00
|
|
|
end
|
2006-02-15 18:17:23 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2007-10-21 00:39:13 -04:00
|
|
|
desc "Package Mongrel and all subprojects"
|
2007-10-15 15:11:37 -04:00
|
|
|
task :package_all => [:package] do
|
2007-10-22 04:27:42 -04:00
|
|
|
sub_project("gem_plugin", :package)
|
|
|
|
sub_project("cgi_multipart_eof_fix", :package)
|
|
|
|
sub_project("fastthread", :package)
|
|
|
|
sub_project("mongrel_status", :package)
|
|
|
|
sub_project("mongrel_upload_progress", :package)
|
|
|
|
sub_project("mongrel_console", :package)
|
|
|
|
sub_project("mongrel_cluster", :package)
|
2007-10-31 22:11:54 -04:00
|
|
|
sub_project("mongrel_experimental", :package)
|
2007-12-15 03:19:19 -05:00
|
|
|
|
2007-10-25 23:07:30 -04:00
|
|
|
sh("rake java package") unless RUBY_PLATFORM =~ /java/
|
2007-12-15 03:19:19 -05:00
|
|
|
|
|
|
|
# XXX Broken by RubyGems 0.9.5
|
|
|
|
# sub_project("mongrel_service", :package) if RUBY_PLATFORM =~ /mswin/
|
2007-10-29 05:41:06 -04:00
|
|
|
# sh("rake mswin package") unless RUBY_PLATFORM =~ /mswin/
|
2007-10-15 14:57:59 -04:00
|
|
|
end
|
|
|
|
|
2007-09-22 23:09:56 -04:00
|
|
|
task :install_requirements do
|
|
|
|
# These run before Mongrel is installed
|
2006-03-11 11:35:53 -05:00
|
|
|
sub_project("gem_plugin", :install)
|
2007-09-22 23:09:56 -04:00
|
|
|
sub_project("cgi_multipart_eof_fix", :install)
|
2006-11-20 11:52:46 -05:00
|
|
|
sub_project("fastthread", :install)
|
2007-09-22 23:09:56 -04:00
|
|
|
end
|
|
|
|
|
2007-10-21 00:39:13 -04:00
|
|
|
desc "for Mongrel and all subprojects"
|
2007-09-22 23:09:56 -04:00
|
|
|
task :install => [:install_requirements] do
|
|
|
|
# These run after Mongrel is installed
|
2006-03-11 11:35:53 -05:00
|
|
|
sub_project("mongrel_status", :install)
|
2006-06-25 10:49:46 -04:00
|
|
|
sub_project("mongrel_upload_progress", :install)
|
2006-03-19 00:18:11 -05:00
|
|
|
sub_project("mongrel_console", :install)
|
2007-11-01 03:26:10 -04:00
|
|
|
sub_project("mongrel_cluster", :install)
|
2007-11-12 15:32:35 -05:00
|
|
|
# sub_project("mongrel_experimental", :install)
|
2007-10-22 04:36:10 -04:00
|
|
|
sub_project("mongrel_service", :install) if RUBY_PLATFORM =~ /mswin/
|
2006-03-11 11:35:53 -05:00
|
|
|
end
|
|
|
|
|
2007-10-21 00:39:13 -04:00
|
|
|
desc "for Mongrel and all its subprojects"
|
2006-03-11 11:35:53 -05:00
|
|
|
task :uninstall => [:clean] do
|
|
|
|
sub_project("mongrel_status", :uninstall)
|
2007-09-22 23:09:56 -04:00
|
|
|
sub_project("cgi_multipart_eof_fix", :uninstall)
|
2006-06-25 10:49:46 -04:00
|
|
|
sub_project("mongrel_upload_progress", :uninstall)
|
2006-03-19 00:18:11 -05:00
|
|
|
sub_project("mongrel_console", :uninstall)
|
2006-03-11 11:35:53 -05:00
|
|
|
sub_project("gem_plugin", :uninstall)
|
2007-11-01 03:26:10 -04:00
|
|
|
sub_project("fastthread", :uninstall)
|
2007-11-12 15:32:35 -05:00
|
|
|
# sub_project("mongrel_experimental", :uninstall)
|
2007-10-29 03:16:22 -04:00
|
|
|
sub_project("mongrel_service", :uninstall) if RUBY_PLATFORM =~ /mswin/
|
2006-03-11 11:35:53 -05:00
|
|
|
end
|
2006-03-12 14:40:35 -05:00
|
|
|
|
2007-10-22 04:27:42 -04:00
|
|
|
desc "for Mongrel and all its subprojects"
|
|
|
|
task :clean do
|
|
|
|
sub_project("gem_plugin", :clean)
|
|
|
|
sub_project("cgi_multipart_eof_fix", :clean)
|
|
|
|
sub_project("fastthread", :clean)
|
|
|
|
sub_project("mongrel_status", :clean)
|
|
|
|
sub_project("mongrel_upload_progress", :clean)
|
|
|
|
sub_project("mongrel_console", :clean)
|
2007-11-01 03:26:10 -04:00
|
|
|
sub_project("mongrel_cluster", :clean)
|
|
|
|
sub_project("mongrel_experimental", :clean)
|
2007-10-22 04:36:10 -04:00
|
|
|
sub_project("mongrel_service", :clean) if RUBY_PLATFORM =~ /mswin/
|
2007-10-22 04:27:42 -04:00
|
|
|
end
|
|
|
|
|
2007-10-21 00:39:13 -04:00
|
|
|
#### Site upload tasks
|
|
|
|
|
|
|
|
namespace :site do
|
|
|
|
desc "Upload the coverage report"
|
|
|
|
task :coverage => [:rcov] do
|
2008-02-13 00:32:51 -05:00
|
|
|
sh "rsync -azv --no-perms --no-times test/coverage/* mongrel.cloudbur.st:/home/eweaver/www/mongrel/htdocs/web/coverage" rescue nil
|
2007-10-21 00:39:13 -04:00
|
|
|
end
|
2007-09-22 23:09:56 -04:00
|
|
|
end
|