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)