Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

183 lines (149 sloc) 4.727 kb
#!/usr/bin/env ruby
# Be sure to set ENV['RUBYFORGE_USERNAME'] to use publish.
require 'rubygems'
require 'rake/gempackagetask'
require 'rake/rdoctask'
require 'rake/testtask'
require 'date'
# ------- Default Package ----------
FILES = FileList[
'Rakefile',
'CHANGES',
'LICENSE',
'README',
'setup.rb',
'doc/**/*',
'ext/libxml/*',
'ext/mingw/Rakefile',
'ext/mingw/build.rake',
'ext/vc/*.sln',
'ext/vc/*.vcproj',
'lib/**/*',
'benchmark/**/*',
'test/**/*'
]
# Default GEM Specification
default_spec = Gem::Specification.new do |spec|
spec.name = "libxml-ruby"
spec.homepage = "http://libxml.rubyforge.org/"
spec.summary = "Ruby libxml bindings"
spec.description = <<-EOF
The Libxml-Ruby project provides Ruby language bindings for the GNOME
Libxml2 XML toolkit. It is free software, released under the MIT License.
Libxml-ruby's primary advantage over REXML is performance - if speed
is your need, these are good libraries to consider, as demonstrated
by the informal benchmark below.
EOF
# Determine the current version of the software
spec.version =
if File.read('ext/libxml/ruby_xml_version.h') =~ /\s*RUBY_LIBXML_VERSION\s*['"](\d.+)['"]/
CURRENT_VERSION = $1
else
CURRENT_VERSION = "0.0.0"
end
spec.author = "Charlie Savage"
spec.email = "libxml-devel@rubyforge.org"
spec.platform = Gem::Platform::RUBY
spec.require_paths = ["lib", "ext/libxml"]
spec.bindir = "bin"
spec.extensions = ["ext/libxml/extconf.rb"]
spec.files = FILES.to_a
spec.test_files = Dir.glob("test/tc_*.rb")
spec.required_ruby_version = '>= 1.8.4'
spec.date = DateTime.now
spec.rubyforge_project = 'libxml'
spec.has_rdoc = true
end
# Rake task to build the default package
Rake::GemPackageTask.new(default_spec) do |pkg|
pkg.package_dir = 'admin/pkg'
pkg.need_tar = true
end
# ------- Windows GEM ----------
if RUBY_PLATFORM.match(/win32/)
binaries = (FileList['ext/mingw/*.so',
'ext/mingw/*.dll*'])
# Windows specification
win_spec = default_spec.clone
win_spec.extensions = ['ext/mingw/Rakefile']
win_spec.platform = Gem::Platform::CURRENT
win_spec.files += binaries.to_a
# Rake task to build the windows package
Rake::GemPackageTask.new(win_spec) do |pkg|
pkg.package_dir = 'admin/pkg'
pkg.need_tar = false
end
end
# --------- RDoc Documentation ---------
desc "Generate rdoc documentation"
Rake::RDocTask.new("rdoc") do |rdoc|
rdoc.rdoc_dir = 'doc/rdoc'
rdoc.title = "LibXML"
# Show source inline with line numbers
rdoc.options << "--line-numbers"
# Make the readme file the start page for the generated html
rdoc.options << '--main' << 'README'
rdoc.rdoc_files.include('doc/*.rdoc',
'ext/**/libxml.c',
'ext/**/ruby_xml.c',
'ext/**/*.c',
'lib/**/*.rb',
'CHANGES',
'README',
'LICENSE')
end
Rake::TestTask.new do |t|
t.libs << "test"
t.libs << "lib"
t.libs << "ext/libxml"
end
if not RUBY_PLATFORM.match(/mswin32/i)
Rake::Task[:test].prerequisites << :extensions
end
task :default => :package
task :build => :extensions
task :extension => :build
ext = Config::CONFIG["DLEXT"]
task :extensions => ["ext/libxml/libxml_ruby.#{ext}"]
namespace :extensions do
task :clean do
Dir.chdir("ext/libxml") do
sh "rm -f Makefile"
sh "rm -f *.{o,so,bundle,log}"
end
end
end
# --------- Publish Website to Rubyforge ---------
desc "publish website (uses rsync)"
task :publish => [:publish_website, :publish_rdoc]
task :publish_website do
unixname = 'libxml'
username = ENV['RUBYFORGE_USERNAME']
dir = 'admin/web'
url = "#{username}@rubyforge.org:/var/www/gforge-projects/#{unixname}"
dir = dir.chomp('/') + '/'
# Using commandline filter options didn't seem to work, so
# I opted for creating an .rsync_filter file for all cases.
protect = %w{usage statcvs statsvn robot.txt wiki}
exclude = %w{.svn}
rsync_file = File.join(dir,'.rsync-filter')
unless File.file?(rsync_file)
File.open(rsync_file, 'w') do |f|
exclude.each{|e| f << "- #{e}\n"}
protect.each{|e| f << "P #{e}\n"}
end
end
# maybe -p ?
cmd = "rsync -rLvz --delete-after --filter='dir-merge #{rsync_file}' #{dir} #{url}"
sh cmd
end
task :publish_rdoc do
unixname = 'libxml'
username = ENV['RUBYFORGE_USERNAME']
dir = 'doc/rdoc'
url = "#{username}@rubyforge.org:/var/www/gforge-projects/#{unixname}/rdoc"
dir = dir.chomp('/') + '/'
# maybe -p ?
cmd = "rsync -rLvz --delete-after #{dir} #{url}"
sh cmd
end
Jump to Line
Something went wrong with that request. Please try again.