Show
Ignore:
Timestamp:
09/05/08 11:49:25 (4 months ago)
Author:
deveiant
Message:
  • Updated build system and license
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/rakefile-work/Rakefile

    r94 r95  
    3535### Config constants 
    3636BASEDIR       = Pathname.new( __FILE__ ).dirname.relative_path_from( Pathname.getwd ) 
     37BINDIR        = BASEDIR + 'bin' 
    3738LIBDIR        = BASEDIR + 'lib' 
    3839EXTDIR        = BASEDIR + 'ext' 
    3940DOCSDIR       = BASEDIR + 'docs' 
    4041PKGDIR        = BASEDIR + 'pkg' 
    41 RAKE_TASKDIR  = BASEDIR + 'rake' 
    42  
    43 PKG_NAME      = 'wordnet' 
    44 PKG_SUMMARY   = '' 
     42 
     43PROJECT_NAME  = 'WordNet' 
     44PKG_NAME      = PROJECT_NAME.downcase 
     45PKG_SUMMARY   = 'a Ruby interface to the WordNet Lexical Database' 
    4546VERSION_FILE  = LIBDIR + 'wordnet.rb' 
    4647PKG_VERSION   = VERSION_FILE.read[ /VERSION = '(\d+\.\d+\.\d+)'/, 1 ] 
     
    4849GEM_FILE_NAME = "#{PKG_FILE_NAME}.gem" 
    4950 
    50 RELEASE_NAME  = "RELEASE_#{PKG_VERSION.gsub(/\./, '_')}" 
    51  
    5251ARTIFACTS_DIR = Pathname.new( ENV['CC_BUILD_ARTIFACTS'] || 'artifacts' ) 
    5352 
    5453TEXT_FILES    = %w( Rakefile ChangeLog README LICENSE ).collect {|filename| BASEDIR + filename } 
     54BIN_FILES     = Pathname.glob( BINDIR + '*' ).delete_if {|item| item =~ /\.svn/ } 
    5555LIB_FILES     = Pathname.glob( LIBDIR + '**/*.rb' ).delete_if {|item| item =~ /\.svn/ } 
    5656EXT_FILES     = Pathname.glob( EXTDIR + '**/*.{c,h,rb}' ).delete_if {|item| item =~ /\.svn/ } 
     
    6262TEST_FILES    = Pathname.glob( TESTDIR + '**/*.tests.rb' ).delete_if {|item| item =~ /\.svn/ } 
    6363 
    64 RELEASE_FILES = FileList[ TEXT_FILES + SPEC_FILES + TEST_FILES + LIB_FILES + EXT_FILES ] 
     64RAKE_TASKDIR  = BASEDIR + 'rake' 
     65RAKE_TASKLIBS = Pathname.glob( RAKE_TASKDIR + '*.rb' ) 
     66 
     67LOCAL_RAKEFILE = BASEDIR + 'Rakefile.local' 
     68 
     69EXTRA_PKGFILES = [] 
     70EXTRA_PKGFILES.concat Pathname.glob( BASEDIR + 'covertdb.rb' ).delete_if {|item| item =~ /\.svn/ }  
     71EXTRA_PKGFILES.concat Pathname.glob( BASEDIR + 'utils.rb' ).delete_if {|item| item =~ /\.svn/ }  
     72EXTRA_PKGFILES.concat Pathname.glob( BASEDIR + 'examples/*.rb' ).delete_if {|item| item =~ /\.svn/ }  
     73 
     74RELEASE_FILES = TEXT_FILES +  
     75    SPEC_FILES +  
     76    TEST_FILES +  
     77    BIN_FILES + 
     78    LIB_FILES +  
     79    EXT_FILES +  
     80    RAKE_TASKLIBS + 
     81    EXTRA_PKGFILES 
     82 
     83RELEASE_FILES << LOCAL_RAKEFILE if LOCAL_RAKEFILE.exist? 
    6584 
    6685COVERAGE_MINIMUM = ENV['COVERAGE_MINIMUM'] ? Float( ENV['COVERAGE_MINIMUM'] ) : 85.0 
     
    81100SVN_TAGS_DIR     = 'tags' 
    82101 
     102SVN_DOTDIR       = BASEDIR + '.svn' 
     103SVN_ENTRIES      = SVN_DOTDIR + 'entries' 
     104 
     105 
    83106### Load some task libraries that need to be loaded early 
    84107require RAKE_TASKDIR + 'helpers.rb' 
     
    92115 
    93116# Documentation constants 
     117RDOCDIR = DOCSDIR + 'api' 
    94118RDOC_OPTIONS = [ 
    95119    '-w', '4', 
     
    108132PROJECT_PUBDIR = "/usr/local/www/public/code" 
    109133PROJECT_DOCDIR = "#{PROJECT_PUBDIR}/#{PKG_NAME}" 
    110 PROJECT_SCPURL = "#{PROJECT_HOST}:#{PROJECT_DOCDIR}" 
     134PROJECT_SCPPUBURL = "#{PROJECT_HOST}:#{PROJECT_PUBDIR}" 
     135PROJECT_SCPDOCURL = "#{PROJECT_HOST}:#{PROJECT_DOCDIR}" 
     136 
     137# Rubyforge stuff 
     138RUBYFORGE_GROUP = 'deveiate' 
     139RUBYFORGE_PROJECT = 'wordnet' 
    111140 
    112141# Gem dependencies: gemname => version 
    113142DEPENDENCIES = { 
     143} 
     144 
     145# Developer Gem dependencies: gemname => version 
     146DEVELOPMENT_DEPENDENCIES = { 
     147    'amatch'      => '>= 0.2.3', 
     148    'rake'        => '>= 0.8.1', 
     149    'rcodetools'  => '>= 0.7.0.0', 
     150    'rcov'        => '>= 0', 
     151    'RedCloth'    => '>= 4.0.3', 
     152    'rspec'       => '>= 0', 
     153    'rubyforge'   => '>= 0', 
     154    'termios'     => '>= 0', 
     155    'text-format' => '>= 1.0.0', 
     156    'tmail'       => '>= 1.2.3.1', 
     157    'ultraviolet' => '>= 0.10.2', 
     158    'libxml-ruby' => '>= 0.8.3', 
    114159} 
    115160 
     
    126171    gem.summary           = PKG_SUMMARY 
    127172    gem.description       = <<-EOD 
    128     A Ruby implementation of the WordNet lexical dictionary 
     173    A Ruby implementation of the WordNet lexical dictionary an online lexical reference system whose 
     174    design is inspired by current psycholinguistic theories of human lexical memory. 
    129175    EOD 
    130176 
     
    132178    gem.email             = 'ged@FaerieMUD.org' 
    133179    gem.homepage          = 'http://deveiate.org/projects/Ruby-WordNet' 
    134     gem.rubyforge_project = 'deveiate' 
     180    gem.rubyforge_project = RUBYFORGE_PROJECT 
    135181 
    136182    gem.has_rdoc          = true 
    137183    gem.rdoc_options      = RDOC_OPTIONS 
     184 
     185    gem.bindir            = BINDIR.relative_path_from(BASEDIR).to_s 
     186     
    138187 
    139188    gem.files             = RELEASE_FILES. 
     
    144193    DEPENDENCIES.each do |name, version| 
    145194        version = '>= 0' if version.length.zero? 
    146         gem.add_dependency( name, version ) 
     195        gem.add_runtime_dependency( name, version ) 
     196    end 
     197     
     198    DEVELOPMENT_DEPENDENCIES.each do |name, version| 
     199        version = '>= 0' if version.length.zero? 
     200        gem.add_development_dependency( name, version ) 
    147201    end 
    148202     
     
    152206end 
    153207 
     208# Manual-generation config 
     209MANUALDIR = DOCSDIR + 'manual' 
     210 
     211$trace = Rake.application.options.trace ? true : false 
     212$dryrun = Rake.application.options.dryrun ? true : false 
     213 
    154214 
    155215# Load any remaining task libraries 
    156 Pathname.glob( RAKE_TASKDIR + '*.rb' ).each do |tasklib| 
    157     RELEASE_FILES.include( tasklib ) 
    158  
     216RAKE_TASKLIBS.each do |tasklib| 
    159217    next if tasklib =~ %r{/(helpers|svn|verifytask)\.rb$} 
    160218    begin 
     
    171229end 
    172230 
    173 $trace = Rake.application.options.trace ? true : false 
    174 $dryrun = Rake.application.options.dryrun ? true : false 
    175  
    176231# Load any project-specific rules defined in 'Rakefile.local' if it exists 
    177 LOCAL_RAKEFILE = BASEDIR + 'Rakefile.local' 
    178 if LOCAL_RAKEFILE.exist? 
    179     import LOCAL_RAKEFILE  
    180     RELEASE_FILES.include( LOCAL_RAKEFILE.to_s ) 
    181 end 
     232import LOCAL_RAKEFILE if LOCAL_RAKEFILE.exist? 
    182233 
    183234 
     
    187238 
    188239### Default task 
    189 task :default  => [:clean, :spec, :rdoc, :package] 
     240task :default  => [:clean, :local, :spec, :rdoc, :package] 
     241 
     242### Task the local Rakefile can append to -- no-op by default 
     243task :local 
    190244 
    191245 
     
    194248CLOBBER.include 'artifacts', 'coverage.info', PKGDIR 
    195249 
    196  
    197 ### Cruisecontrol task 
     250# Target to hinge on ChangeLog updates 
     251file SVN_ENTRIES 
     252 
     253### Task: changelog 
     254file 'ChangeLog' => SVN_ENTRIES.to_s do |task| 
     255    log "Updating #{task.name}" 
     256 
     257    changelog = make_svn_changelog() 
     258    File.open( task.name, 'w' ) do |fh| 
     259        fh.print( changelog ) 
     260    end 
     261end 
     262 
     263 
     264### Task: cruise (Cruisecontrol task) 
    198265desc "Cruisecontrol build" 
    199266task :cruise => [:clean, :spec, :package] do |task| 
     
    202269    artifact_dir.mkpath 
    203270     
    204     $stderr.puts "Copying coverage stats..." 
    205     FileUtils.cp_r( 'coverage', artifact_dir ) 
     271    coverage = BASEDIR + 'coverage' 
     272    if coverage.exist? && coverage.directory? 
     273        $stderr.puts "Copying coverage stats..." 
     274        FileUtils.cp_r( 'coverage', artifact_dir ) 
     275    end 
    206276     
    207277    $stderr.puts "Copying packages..." 
     
    210280 
    211281 
     282desc "Update the build system to the latest version" 
     283task :update_build do 
     284    log "Updating the build system" 
     285    sh 'svn', 'up', RAKE_TASKDIR 
     286    log "Updating the Rakefile" 
     287    sh 'rake', '-f', RAKE_TASKDIR + 'Metarakefile' 
     288end 
     289