Rakefile in linecache-0.2 vs Rakefile in linecache-0.3

- old
+ new

@@ -3,10 +3,12 @@ require 'rubygems' require 'rake/gempackagetask' require 'rake/rdoctask' require 'rake/testtask' +SO_NAME = "trace_nums.so" + # ------- Default Package ---------- PACKAGE_VERSION = open(File.join(File.dirname(__FILE__), 'VERSION')) do |f| f.readlines[0].chomp end @@ -16,30 +18,39 @@ 'ChangeLog', 'NEWS', 'README', 'Rakefile', 'VERSION', + 'ext/trace_nums.*', + 'ext/extconf.rb', 'lib/*.rb', 'test/*.rb', 'test/short-file' ] desc "Test everything." test_task = task :test => :lib do Rake::TestTask.new(:test) do |t| - t.libs << ['./lib'] t.pattern = 'test/test-*.rb' t.verbose = true end end +desc "Create the core ruby-debug shared library extension" +task :lib do + Dir.chdir("ext") do + system("#{Gem.ruby} extconf.rb && make") + end +end + + desc "Test everything - same as test." task :check => :test desc "Create a GNU-style ChangeLog via svn2cl" task :ChangeLog do - system("svn2cl") + system("svn2cl --authors=svn2cl_usermap") end # Base GEM Specification default_spec = Gem::Specification.new do |spec| spec.name = "linecache" @@ -63,41 +74,76 @@ spec.date = Time.now spec.rubyforge_project = 'rocky-hacks' # rdoc spec.has_rdoc = true - spec.extra_rdoc_files = ['README', 'lib/linecache.rb'] + spec.extra_rdoc_files = ['README', 'lib/linecache.rb', 'lib/tracelines.rb'] end # Rake task to build the default package Rake::GemPackageTask.new(default_spec) do |pkg| pkg.need_tar = true end task :default => [:test] +# Windows specification +win_spec = default_spec.clone +win_spec.extensions = [] +win_spec.platform = Gem::Platform::WIN32 +win_spec.files += ["lib/#{SO_NAME}"] + +desc "Create Windows Gem" +task :win32_gem do + # Copy the win32 extension the top level directory. + current_dir = File.expand_path(File.dirname(__FILE__)) + source = File.join(current_dir, "ext", "win32", SO_NAME) + target = File.join(current_dir, "lib", SO_NAME) + cp(source, target) + + # Create the gem, then move it to pkg. + Gem::Builder.new(win_spec).build + gem_file = "#{win_spec.name}-#{win_spec.version}-#{win_spec.platform}.gem" + mv(gem_file, "pkg/#{gem_file}") + + # Remove win extension from top level directory. + rm(target) +end + desc "Publish linecache to RubyForge." task :publish do require 'rake/contrib/sshpublisher' - # Get ruby-debug path + # Get ruby-debug path. ruby_debug_path = File.expand_path(File.dirname(__FILE__)) publisher = Rake::SshDirPublisher.new("rockyb@rubyforge.org", "/var/www/gforge-projects/rocky-hacks/linecache", ruby_debug_path) end desc "Remove built files" -task :clean => [:clobber_package, :clobber_rdoc] +task :clean => [:clobber_package, :clobber_rdoc] do + cd "ext" do + if File.exists?("Makefile") + sh "make clean" + rm "Makefile" + end + derived_files = Dir.glob(".o") + Dir.glob("*.so") + rm derived_files unless derived_files.empty? + end +end # --------- RDoc Documentation ------ desc "Generate rdoc documentation" Rake::RDocTask.new("rdoc") do |rdoc| rdoc.rdoc_dir = 'doc' rdoc.title = "linecache" # 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' - rdoc.rdoc_files.include('lib/*.rb', 'README', 'COPYING') + rdoc.rdoc_files.include('ext/**/*.c', + 'lib/*.rb', + 'README', + 'COPYING') end