Rakefile in ruby-vpi-7.3.0 vs Rakefile in ruby-vpi-8.0.0

- old
+ new

@@ -18,10 +18,11 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. =end require 'rake/clean' require 'rake/rdoctask' +require 'rake/gempackagetask' require 'tempfile' require 'rbconfig' $:.unshift File.join(File.dirname(__FILE__), 'lib') @@ -33,43 +34,33 @@ PROJECT_URL = "http://#{PROJECT_ID}.rubyforge.org" PROJECT_SUMMARY = "Ruby interface to Verilog VPI." PROJECT_DETAIL = "#{PROJECT_NAME} is a #{PROJECT_SUMMARY}. It lets you create complex Verilog test benches easily and wholly in Ruby." PROJECT_SSH_URL = "snk@rubyforge.org:/var/www/gforge-projects/#{PROJECT_ID}" +File.read('HISTORY') =~ /Version\s+([\d\.]+)\s*\((.*?)\)/ +PROJECT_VERSION = $1 +PROJECT_BIRTHDAY = $2 # Returns a temporary, unique path ready for use. No file exists at the returned path. def generate_temp_path rm_f path = Tempfile.new($$).path path end -# uploads the given sources without their SVN meta-data to the given destination URL -def upload_without_svn aDestUrl, *aSources - tmpDir = generate_temp_path - mkdir tmpDir - - tmpSources = aSources.map do |src| - cp_r src, tmpDir, :preserve => true - File.join(tmpDir, File.basename(src)) - end - - # remove SVN meta-data from sources - sh "find #{tmpDir} -name .svn | xargs rm -rf" - - # upload sources - sh 'scp', '-Cr', *(tmpSources + [aDestUrl]) - - rm_rf tmpDir +# uploads the given sources to the given destination URL +def upload aDestUrl, *aSources + sh 'scp', '-Cr', aSources, aDestUrl end task :default => :build task :clobber do |t| - files = FileList['**/Rakefile'].reject {|f| File.expand_path(f) == __FILE__} + files = FileList['**/Rakefile'].exclude('_darcs') + files.shift # avoid infinite loop on _this_ file files.each do |f| cd File.dirname(f) do sh 'rake', t.name end @@ -206,83 +197,65 @@ end end desc 'Publish documentation to website.' -task :web => [:web_dist, :web_ref, :web_doc] +task :web => [:web_info, :web_ref, :web_doc] desc "Publish distribution info." -task :web_dist => ['style.css', *distDocs] do |t| - upload_without_svn PROJECT_SSH_URL, *t.prerequisites +task :web_info => ['style.css', *distDocs] do |t| + upload PROJECT_SSH_URL, *t.prerequisites end desc "Publish reference documentation." task :web_ref => 'ref' do |t| - upload_without_svn PROJECT_SSH_URL, *t.prerequisites + upload PROJECT_SSH_URL, *t.prerequisites end desc "Publish user documentation." task :web_doc => :doc do |t| - upload_without_svn "#{PROJECT_SSH_URL}/doc/", *FileList['doc/xhtml/*'] + upload PROJECT_SSH_URL, *t.prerequisites end desc 'Connect to website FTP.' task :ftp do sh 'lftp', "sftp://#{PROJECT_SSH_URL}" end desc "Generate release packages." -task :pkg => ['HISTORY', 'gem_extconf.rb'] do |t| - # determine release version - File.read(t.prerequisites[0]) =~ /Version\s+([\d\.]+)/ - releaseVersion = $1 - puts "release version is: #{releaseVersion}" +task :release => [:clobber, :dist] do + sh 'rake package' +end - mkdir tmpDir = generate_temp_path - cp_r '.', tmpDir +spec = Gem::Specification.new do |s| + s.name = s.rubyforge_project = PROJECT_ID + s.summary = PROJECT_SUMMARY + s.description = PROJECT_DETAIL + s.homepage = PROJECT_URL + s.version = PROJECT_VERSION - cd tmpDir do - # clean up - sh "svn st | awk '/^\\?/ {print $2}' | xargs rm -rf" - sh "svn up" - sh "find -name .svn | xargs rm -rf" + s.add_dependency 'rspec', '>= 0.5.4' + s.add_dependency 'rake', '>= 0.7.0' + s.add_dependency 'rcov', '>= 0.7.0' - sh "rake dist" + s.requirements << "POSIX threads library" + s.requirements << "C language compiler" - # make gem package - spec = Gem::Specification.new do |s| - s.name = s.rubyforge_project = PROJECT_ID - s.summary = PROJECT_SUMMARY - s.description = PROJECT_DETAIL - s.homepage = PROJECT_URL - s.version = releaseVersion + s.files = FileList['**/*'].exclude('_darcs') + s.autorequire = PROJECT_ID + s.executables = FileList['bin/*'].select {|f| File.executable?( f ) && File.file?( f )}.map {|f| File.basename f} + s.extensions << 'gem_extconf.rb' +end - s.add_dependency 'rspec', '>= 0.5.4' - s.add_dependency 'rake', '>= 0.7.0' - s.add_dependency 'rcov', '>= 0.7.0' - - s.requirements << "POSIX threads library" - s.requirements << "C language compiler" - - s.files = FileList['**/*'] - s.autorequire = PROJECT_ID - s.executables = FileList['bin/*'].select {|f| File.executable?( f ) && File.file?( f )}.map {|f| File.basename f} - s.extensions << t.prerequisites[1] - end - - Gem::manage_gems - Gem::Builder.new(spec).build - - mv *(FileList['*.gem'] << File.dirname(__FILE__)) - end - - rm_r tmpDir +Rake::GemPackageTask.new(spec) do |pkg| + pkg.need_zip = true + pkg.need_tar = true end desc "Configures the gem during installation." -task :config_gem_install => 'readme.html' do |t| +task :gem_config_inst => 'readme.html' do |t| # make documentation available to gem_server gemDir = File.dirname(__FILE__) gemName = File.basename(gemDir) docDir = File.join('..', '..', 'doc', gemName)