diff -r 09d0d209d06d -r 0c24586f579a Rakefile --- a/Rakefile Fri Aug 15 16:23:03 2008 +0000 +++ b/Rakefile Thu Oct 16 02:43:08 2008 +0000 @@ -7,7 +7,7 @@ # Copyright (c) 2008 The FaerieMUD Consortium # # Authors: -# * Michae Granger and Mahlon Smith +# * Michael Granger and Mahlon Smith # BEGIN { @@ -21,9 +21,10 @@ $LOAD_PATH.unshift( extdir.to_s ) unless $LOAD_PATH.include?( extdir.to_s ) } +require 'rubygems' +gem 'rake', '>= 0.8.3' require 'rbconfig' -require 'rubygems' require 'rake' require 'rake/rdoctask' require 'rake/testtask' @@ -34,26 +35,33 @@ ### Config constants BASEDIR = Pathname.new( __FILE__ ).dirname.relative_path_from( Pathname.getwd ) +BINDIR = BASEDIR + 'bin' LIBDIR = BASEDIR + 'lib' EXTDIR = BASEDIR + 'ext' DOCSDIR = BASEDIR + 'docs' PKGDIR = BASEDIR + 'pkg' +DATADIR = BASEDIR + 'data' -PKG_NAME = 'jparallel' +PROJECT_NAME = 'jparallel' +PKG_NAME = PROJECT_NAME.downcase PKG_SUMMARY = 'A "parallel jail shell" written in Ruby' VERSION_FILE = LIBDIR + 'jparallel.rb' -PKG_VERSION = VERSION_FILE.read[ /VERSION = '(\d+\.\d+\.\d+)'/, 1 ] +PKG_VERSION = VERSION_FILE.read[ /VERSION\s*=\s*'(\d+\.\d+\.\d+)'/, 1 ] PKG_FILE_NAME = "#{PKG_NAME.downcase}-#{PKG_VERSION}" GEM_FILE_NAME = "#{PKG_FILE_NAME}.gem" ARTIFACTS_DIR = Pathname.new( ENV['CC_BUILD_ARTIFACTS'] || 'artifacts' ) TEXT_FILES = %w( Rakefile ChangeLog README LICENSE ).collect {|filename| BASEDIR + filename } +BIN_FILES = Pathname.glob( BINDIR + '*' ).delete_if {|item| item =~ /\.svn/ } LIB_FILES = Pathname.glob( LIBDIR + '**/*.rb' ).delete_if {|item| item =~ /\.svn/ } EXT_FILES = Pathname.glob( EXTDIR + '**/*.{c,h,rb}' ).delete_if {|item| item =~ /\.svn/ } +DATA_FILES = Pathname.glob( DATADIR + '**/*' ).delete_if {|item| item =~ /\.svn/ } SPECDIR = BASEDIR + 'spec' -SPEC_FILES = Pathname.glob( SPECDIR + '**/*_spec.rb' ).delete_if {|item| item =~ /\.svn/ } +SPECLIBDIR = SPECDIR + 'lib' +SPEC_FILES = Pathname.glob( SPECDIR + '**/*_spec.rb' ).delete_if {|item| item =~ /\.svn/ } + + Pathname.glob( SPECLIBDIR + '**/*.rb' ).delete_if {|item| item =~ /\.svn/ } TESTDIR = BASEDIR + 'tests' TEST_FILES = Pathname.glob( TESTDIR + '**/*.tests.rb' ).delete_if {|item| item =~ /\.svn/ } @@ -64,13 +72,15 @@ LOCAL_RAKEFILE = BASEDIR + 'Rakefile.local' EXTRA_PKGFILES = [] -EXTRA_PKGFILES += Pathname.glob( BASEDIR + 'examples/*.{c,rb}' ).delete_if {|item| item =~ /\.svn/ } +EXTRA_PKGFILES.concat Pathname.glob( BASEDIR + 'examples/*.{c,rb}' ).delete_if {|item| item =~ /\.svn/ } RELEASE_FILES = TEXT_FILES + SPEC_FILES + TEST_FILES + + BIN_FILES + LIB_FILES + EXT_FILES + + DATA_FILES + RAKE_TASKLIBS + EXTRA_PKGFILES @@ -108,6 +118,7 @@ SNAPSHOT_GEM_NAME = "#{SNAPSHOT_PKG_NAME}.gem" # Documentation constants +RDOCDIR = DOCSDIR + 'api' RDOC_OPTIONS = [ '-w', '4', '-SHN', @@ -124,7 +135,8 @@ PROJECT_HOST = 'deveiate.org' PROJECT_PUBDIR = "/usr/local/www/public/code" PROJECT_DOCDIR = "#{PROJECT_PUBDIR}/#{PKG_NAME}" -PROJECT_SCPURL = "#{PROJECT_HOST}:#{PROJECT_DOCDIR}" +PROJECT_SCPPUBURL = "#{PROJECT_HOST}:#{PROJECT_PUBDIR}" +PROJECT_SCPDOCURL = "#{PROJECT_HOST}:#{PROJECT_DOCDIR}" # Rubyforge stuff RUBYFORGE_GROUP = 'deveiate' @@ -134,9 +146,25 @@ DEPENDENCIES = { } +# Developer Gem dependencies: gemname => version +DEVELOPMENT_DEPENDENCIES = { + 'amatch' => '>= 0.2.3', + 'rake' => '>= 0.8.1', + 'rcodetools' => '>= 0.7.0.0', + 'rcov' => '>= 0', + 'RedCloth' => '>= 4.0.3', + 'rspec' => '>= 0', + 'rubyforge' => '>= 0', + 'termios' => '>= 0', + 'text-format' => '>= 1.0.0', + 'tmail' => '>= 1.2.3.1', + 'ultraviolet' => '>= 0.10.2', + 'libxml-ruby' => '>= 0.8.3', +} + # Non-gem requirements: packagename => version REQUIREMENTS = { - 'FreeBSD' => '>= 7.0', + 'FreeBSD' => '>= 5.0', } # RubyGem specification @@ -147,11 +175,10 @@ gem.summary = PKG_SUMMARY gem.description = <<-EOD This is shell that can be used to interact with multiple FreeBSD jail instances - simultaneously. It includes a Ruby binding to the FreeBSD jail(2) functions. EOD - gem.authors = 'Michae Granger and Mahlon Smith' + gem.authors = 'Michael Granger and Mahlon Smith' gem.email = 'ged@FaerieMUD.org, mahlon@martini.nu' gem.homepage = 'http://deveiate.org/projects/Jparallel/' gem.rubyforge_project = RUBYFORGE_PROJECT @@ -159,6 +186,9 @@ gem.has_rdoc = true gem.rdoc_options = RDOC_OPTIONS + gem.bindir = BINDIR.relative_path_from(BASEDIR).to_s + + gem.files = RELEASE_FILES. collect {|f| f.relative_path_from(BASEDIR).to_s } gem.test_files = SPEC_FILES. @@ -166,7 +196,15 @@ DEPENDENCIES.each do |name, version| version = '>= 0' if version.length.zero? - gem.add_dependency( name, version ) + gem.add_runtime_dependency( name, version ) + end + + # Developmental dependencies don't work as of RubyGems 1.2.0 + unless Gem::Version.new( Gem::RubyGemsVersion ) <= Gem::Version.new( "1.2.0" ) + DEVELOPMENT_DEPENDENCIES.each do |name, version| + version = '>= 0' if version.length.zero? + gem.add_development_dependency( name, version ) + end end REQUIREMENTS.each do |name, version| @@ -174,6 +212,9 @@ end end +# Manual-generation config +MANUALDIR = DOCSDIR + 'manual' + $trace = Rake.application.options.trace ? true : false $dryrun = Rake.application.options.dryrun ? true : false @@ -203,7 +244,10 @@ ##################################################################### ### Default task -task :default => [:clean, :spec, :rdoc, :package] +task :default => [:clean, :local, :spec, :rdoc, :package] + +### Task the local Rakefile can append to -- no-op by default +task :local ### Task: clean @@ -226,13 +270,16 @@ ### Task: cruise (Cruisecontrol task) desc "Cruisecontrol build" -task :cruise => [:clean, :spec, :package] do |task| +task :cruise => [:clean, 'spec:quiet', :package] do |task| raise "Artifacts dir not set." if ARTIFACTS_DIR.to_s.empty? artifact_dir = ARTIFACTS_DIR.cleanpath artifact_dir.mkpath - $stderr.puts "Copying coverage stats..." - FileUtils.cp_r( 'coverage', artifact_dir ) + coverage = BASEDIR + 'coverage' + if coverage.exist? && coverage.directory? + $stderr.puts "Copying coverage stats..." + FileUtils.cp_r( 'coverage', artifact_dir ) + end $stderr.puts "Copying packages..." FileUtils.cp_r( FileList['pkg/*'].to_a, artifact_dir )