diff options
author | zedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9> | 2006-03-06 05:31:39 +0000 |
---|---|---|
committer | zedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9> | 2006-03-06 05:31:39 +0000 |
commit | bbaf6bb51edf0402faad07191cc042d5297ed2fc (patch) | |
tree | 205f3077cd32a81443a7627bba778e70ac7de32c /projects/gem_plugin/tools/rakehelp.rb | |
parent | a4a2f19a0c94e72641d3b43c66d7817d2b9c30a9 (diff) | |
download | unicorn-bbaf6bb51edf0402faad07191cc042d5297ed2fc.tar.gz |
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@83 19e92222-5c0b-0410-8929-a290d50e31e9
Diffstat (limited to 'projects/gem_plugin/tools/rakehelp.rb')
-rw-r--r-- | projects/gem_plugin/tools/rakehelp.rb | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/projects/gem_plugin/tools/rakehelp.rb b/projects/gem_plugin/tools/rakehelp.rb new file mode 100644 index 0000000..eb72873 --- /dev/null +++ b/projects/gem_plugin/tools/rakehelp.rb @@ -0,0 +1,111 @@ + +def make(makedir) + Dir.chdir(makedir) do + sh(PLATFORM =~ /win32/ ? 'nmake' : 'make') + end +end + + +def extconf(dir) + Dir.chdir(dir) do ruby "extconf.rb" end +end + + +def setup_tests + Rake::TestTask.new do |t| + t.libs << "test" + t.test_files = FileList['test/test*.rb'] + t.verbose = true + end +end + + +def setup_clean otherfiles + files = ['build/*', '**/*.o', '**/*.so', '**/*.a', 'lib/*-*', '**/*.log'] + otherfiles + CLEAN.include(files) +end + + +def setup_rdoc files + Rake::RDocTask.new do |rdoc| + rdoc.rdoc_dir = 'doc/rdoc' + rdoc.options << '--line-numbers' + rdoc.rdoc_files.add(files) + end +end + + +def setup_extension(dir, extension) + ext = "ext/#{dir}" + ext_so = "#{ext}/#{extension}.#{Config::CONFIG['DLEXT']}" + ext_files = FileList[ + "#{ext}/*.c", + "#{ext}/*.h", + "#{ext}/extconf.rb", + "#{ext}/Makefile", + "lib" + ] + + task "lib" do + directory "lib" + end + + desc "Builds just the #{extension} extension" + task extension.to_sym => ["#{ext}/Makefile", ext_so ] + + file "#{ext}/Makefile" => ["#{ext}/extconf.rb"] do + extconf "#{ext}" + end + + file ext_so => ext_files do + make "#{ext}" + cp ext_so, "lib" + end +end + + +def base_gem_spec(pkg_name, pkg_version, author, summary, executables, test_file) + pkg_version = pkg_version + pkg_name = pkg_name + pkg_file_name = "#{pkg_name}-#{pkg_version}" + Gem::Specification.new do |s| + s.name = pkg_name + s.version = pkg_version + s.required_ruby_version = '>= 1.8.3' + s.platform = Gem::Platform::RUBY + s.author = author + s.summary = summary + s.test_file = test_file + s.has_rdoc = true + s.extra_rdoc_files = [ "README" ] + + s.files = %w(COPYING LICENSE README Rakefile) + + Dir.glob("{bin,doc/rdoc,test,lib}/**/*") + + Dir.glob("ext/**/*.{h,c,rb}") + + Dir.glob("examples/**/*.rb") + + Dir.glob("tools/*.rb") + + s.require_path = "lib" + s.extensions = FileList["ext/**/extconf.rb"].to_a + + s.executables = executables + s.bindir = "bin" + end +end + +def setup_gem(pkg_name, pkg_version, author, summary, executables, test_file) + spec = base_gem_spec(pkg_name, pkg_version, author, summary, executables, test_file) + yield spec if block_given? + + Rake::GemPackageTask.new(spec) do |p| + p.gem_spec = spec + p.need_tar = true + end +end + +def setup_win32_gem(pkg_name, pkg_version, author, summary, executables, test_file) + spec = base_gem_spec(pkg_name, pkg_version, author, summary, executables, test_file) + yield spec if block_given? + + Gem::Builder.new(spec).build +end |