Rakefile in rb-threadframe-0.32 vs Rakefile in rb-threadframe-0.33

- old
+ new

@@ -1,43 +1,48 @@ #!/usr/bin/env rake # -*- Ruby -*- require 'rubygems' -require 'rake' -require 'rake/gempackagetask' -require 'rake/rdoctask' -require 'rake/testtask' +require 'fileutils' -rake_dir = File.dirname(__FILE__) +ROOT_DIR = File.dirname(__FILE__) require 'rbconfig' RUBY_PATH = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']) -SO_NAME = 'thread_frame.so' +def gemspec + @gemspec ||= eval(File.read('.gemspec'), binding, '.gemspec') +end -PACKAGE_VERSION = open("ext/thread_frame.c") do |f| - f.grep(/^#define THREADFRAME_VERSION/).first[/"(.+)"/,1] +require 'rake/gempackagetask' +desc "Build the gem" +task :package=>:gem +task :gem=>:gemspec do + Dir.chdir(ROOT_DIR) do + sh "gem build .gemspec" + FileUtils.mkdir_p 'pkg' + FileUtils.mv "#{gemspec.name}-#{gemspec.version}.gem", 'pkg' + end end -EXT_FILES = FileList[%w(ext/*.c ext/*.h)] -INCLUDE_FILES = FileList['include/*.h'] -LIB_FILES = FileList['lib/*.rb'] -TEST_FILES = FileList['test/**/*.rb'] -COMMON_FILES = FileList[%w(README.md Rakefile LICENSE NEWS)] -ALL_FILES = COMMON_FILES + INCLUDE_FILES + LIB_FILES + EXT_FILES + - TEST_FILES +desc "Install the gem locally" +task :install => :gem do + Dir.chdir(ROOT_DIR) do + sh %{gem install --local pkg/#{gemspec.name}-#{gemspec.version}} + end +end desc 'Create the core thread-frame shared library extension' task :ext do Dir.chdir('ext') do system("#{Gem.ruby} extconf.rb && make") end end desc 'Remove built files' task :clean do - cd 'ext' do + Dir.chdir File.join(ROOT_DIR, 'ext') do if File.exist?('Makefile') sh 'make clean' rm 'Makefile' end derived_files = Dir.glob('.o') + Dir.glob('*.so') @@ -60,10 +65,11 @@ system("git log --pretty --numstat --summary | git2cl > ChangeLog") end task :default => [:test] +require 'rake/testtask' desc 'Test units - the smaller tests' task :'test:unit' => [:ext] do |t| Rake::TestTask.new(:'test:unit') do |t| t.libs << './ext' t.test_files = FileList['test/unit/**/*.rb'] @@ -85,78 +91,41 @@ exceptions.each {|e| puts e;puts e.backtrace } raise "Test failures" unless exceptions.empty? end -desc "Test everything - same as test." - +desc "test in isolation." task :'check' do - run_standalone_ruby_file(File.join(%W(#{rake_dir} test unit))) + run_standalone_ruby_file(File.join(%W(#{ROOT_DIR} test unit))) end +desc "Generate the gemspec" +task :generate do + puts gemspec.to_ruby +end + +desc "Validate the gemspec" +task :gemspec do + gemspec.validate +end + # --------- RDoc Documentation ------ +require 'rake/rdoctask' desc 'Generate rdoc documentation' Rake::RDocTask.new('rdoc') do |rdoc| - rdoc.rdoc_dir = 'doc/rdoc' + rdoc.rdoc_dir = 'doc' rdoc.title = 'rb-threadframe' - # Show source inline with line numbers - rdoc.options << '--inline-source' << '--line-numbers' # Make the readme file the start page for the generated html - rdoc.options << '--main' << 'README.md' + rdoc.options += %w(--main README.md) rdoc.rdoc_files.include('ext/**/*.c', 'README.md') end +desc "Same as rdoc" +task :doc => :rdoc -# Base GEM Specification -spec = Gem::Specification.new do |spec| - spec.name = "rb-threadframe" - - spec.homepage = "http://github.com/rocky/rb-threadframe/tree/master" - spec.summary = "Frame introspection" - spec.description = <<-EOF - -rb-threadframe gives introspection access for frames of a thread. -EOF - - spec.version = PACKAGE_VERSION - spec.require_path = 'lib' - spec.extensions = ["ext/extconf.rb"] - - spec.author = "R. Bernstein" - spec.email = "rocky@gnu.org" - spec.platform = Gem::Platform::RUBY - spec.files = ALL_FILES.to_a - - spec.required_ruby_version = '>= 1.9.2' - spec.date = Time.now - # spec.rubyforge_project = 'rocky-hacks' - - # rdoc - spec.has_rdoc = true - spec.extra_rdoc_files = ['README.md', 'threadframe.rd'] + - FileList['ext/*.c'] +task :clobber_package do + FileUtils.rm_rf File.join(ROOT_DIR, 'pkg') end -# Rake task to build the default package -Rake::GemPackageTask.new(spec) do |pkg| - pkg.need_tar = true +task :clobber_rdoc do + FileUtils.rm_rf File.join(ROOT_DIR, 'doc') end - -def install(spec, *opts) - args = ['gem', 'install', "pkg/#{spec.name}-#{spec.version}.gem"] + opts - system(*args) -end - -desc 'Install locally' -task :install => :package do - Dir.chdir(File::dirname(__FILE__)) do - # ri and rdoc take lots of time - install(spec, '--no-ri', '--no-rdoc') - end -end - -task :install_full => :package do - Dir.chdir(File::dirname(__FILE__)) do - install(spec) - end -end -