root/Rakefile

Revision d9ed1b8e030638c4b92d3a7f271eec6b3cc03235, 4.5 kB (checked in by Mark Guzman <segfault@…>, 3 months ago)

making sure the rakefile pulls in the right fastxml_lib

  • Property mode set to 100644
Line 
1# encoding: utf-8
2require 'rubygems'
3require 'rake'
4require 'rake/rdoctask'
5require 'rake/packagetask'
6require 'rake/gempackagetask'
7require 'rake/contrib/sshpublisher'
8require 'spec/rake/spectask'
9require 'rake/clean'
10require 'rbconfig'
11require 'rubyforge'
12
13$: << './lib'
14$: << './ext'
15require 'fastxml/fastxml_lib'
16full_name = "FastXml"
17short_name = full_name.downcase
18
19extension = "fastxml"
20ext = "ext"
21ext_so = "#{ext}/#{extension}.#{Config::CONFIG['DLEXT']}"
22ext_files = FileList[
23  "#{ext}/*.c",
24  "#{ext}/*.h",
25  "#{ext}/extconf.rb",
26  "#{ext}/Makefile",
27  "lib"
28]
29
30
31CLEAN.include ["#{ext}/Makefile", "#{ext}/.o", "#{ext_so}", '*.gem']
32             
33# Many of these tasks were garnered from zenspider's Hoe
34# just forced to work my way
35
36desc 'Default: run unit tests.'
37task :default => ["#{extension}", :spec]
38
39spec = Gem::Specification.new do |s|
40  s.name = short_name
41  s.full_name
42  s.version = FastXml::VERSION
43  s.author = "Mark Guzman"
44  s.email = "segfault@hasno.info"
45  s.homepage = "http://rubyforge.org/fastxml"
46  s.platform = Gem::Platform::RUBY
47  s.summary = "Fast Xml Library"
48  s.rubyforge_project = short_name
49  s.description = "A simple ruby interface to libxml (with hpricot-like syntax)"
50  s.files = FileList["{bin,lib,ext,test_data}/**/*"].to_a
51  s.require_paths = %w[ ext lib ]
52  s.extensions = [ "ext/extconf.rb" ]
53  s.autorequire = short_name
54  s.test_files = FileList["{specs}/**/*spec.rb"].to_a
55  s.has_rdoc = true
56  s.extra_rdoc_files = %w[README LICENSE]
57  s.add_dependency("rspec", ">= 1.0.3")
58  s.add_dependency("rake", ">= #{RAKEVERSION}")
59  s.add_dependency("rubyforge", ">= #{::RubyForge::VERSION}")
60end
61
62desc "Builds just the #{extension} extension"
63task extension.to_sym => ["#{ext}/Makefile", ext_so ]
64
65file "#{ext}/Makefile" => ["#{ext}/extconf.rb"] do
66  Dir.chdir(ext) do ruby "extconf.rb" end
67end
68
69file ext_so => ext_files do
70  Dir.chdir(ext) do
71    sh(PLATFORM =~ /win32/ ? 'nmake' : 'make')
72  end
73  #mkdir_p ARCHLIB
74  #cp ext_so, ARCHLIB
75end
76
77desc "Task for cruise Control"
78task :cruise => ["clean", "#{extension}", "spec"] do
79  out = ENV['CC_BUILD_ARTIFACTS']
80  system "mv coverage #{out}" if out
81end
82
83Spec::Rake::SpecTask.new do |t|
84  t.rcov = true
85  t.spec_files = FileList[ 'specs/*spec.rb' ]
86end
87
88Rake::RDocTask.new do |rd|
89  rd.main = "README"
90  rd.rdoc_files.include("README", "LICENSE", "ext/*.c", "lib/**/*.rb")
91  rd.title = "%s (%s) Documentation" % [ full_name, spec.version ]
92  rd.rdoc_dir = 'doc'
93end
94
95
96Rake::GemPackageTask.new(spec) do |pkg|
97  pkg.need_tar = true
98end
99
100desc 'Clean up all the extras'
101task :clean => [ :clobber_rdoc, :clobber_package ] do
102  %w[*.gem ri coverage*].each do |pattern|
103    files = Dir[pattern]
104    rm_rf files unless files.empty?
105  end
106end
107
108desc 'Publish RDoc to RubyForge'
109task :publish_docs => [:clean, :rdoc] do
110  config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
111  host = "#{config["username"]}@rubyforge.org"
112  remote_dir = "/var/www/gforge-projects/#{spec.rubyforge_project}"
113  local_dir = 'doc'
114  sh %{rsync -av --delete #{local_dir}/ #{host}:#{remote_dir}}
115end
116
117desc 'Package and upload the release to rubyforge.'
118task :release => [:clean, :package] do |t|
119  v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
120  abort "Versions don't match '#{v}' vs '#{spec.version}'" if v != spec.version.to_s
121  pkg = "pkg/#{spec.name}-#{spec.version}"
122
123  if $DEBUG then
124    puts "release_id = rf.add_release #{spec.rubyforge_project.inspect}, #{spec.name.inspect}, #{version.inspect}, \"#{pkg}.tgz\""
125    puts "rf.add_file #{spec.rubyforge_project.inspect}, #{spec.name.inspect}, release_id, \"#{pkg}.gem\""
126  end
127
128  rf = RubyForge.new
129  puts "Logging in"
130  rf.login
131
132  changes = open("NOTES").readlines.join("") if File.exists?("NOTES")
133  c = rf.userconfig
134  c["release_notes"] = spec.description if spec.description
135  c["release_changes"] = changes if changes
136  c["preformatted"] = true
137
138  files = ["#{pkg}.tgz", "#{pkg}.gem"].compact
139
140  puts "Releasing #{spec.name} v. #{spec.version}"
141  rf.add_release spec.rubyforge_project, spec.name, spec.version.to_s, *files
142end
143
144desc 'Install the package as a gem'
145task :install_gem => [:clean, :package] do
146  sh "sudo gem install pkg/*.gem"
147end
148
149desc 'Run Benchmarks'
150namespace :bm do
151  desc 'simple speedtest (atom rss)'
152  task :speed => [ "#{extension}" ] do
153    sh 'ruby ./benchmarks/speedtest.rb'
154  end
155
156  desc 'large file test (1MB)'
157  task :largefile => [ "#{extension}" ] do
158    sh 'ruby ./benchmarks/largefile.rb'
159  end
160
161  desc 'unicode file'
162  task :unicode => [ "#{extension}" ] do
163    sh 'ruby ./benchmarks/unicode.rb'
164  end
165end
Note: See TracBrowser for help on using the browser.