193 lines
4.5 KiB
Text
193 lines
4.5 KiB
Text
|
require 'rubygems'
|
||
|
require 'rake'
|
||
|
require 'rake/testtask'
|
||
|
require 'rake/rdoctask'
|
||
|
require 'rake/contrib/sshpublisher'
|
||
|
|
||
|
require "./lib/sqlite3/version"
|
||
|
|
||
|
PACKAGE_NAME = "sqlite3-ruby"
|
||
|
PACKAGE_VERSION = SQLite3::Version::STRING
|
||
|
|
||
|
puts "name : #{PACKAGE_NAME}"
|
||
|
puts "version: #{PACKAGE_VERSION}"
|
||
|
|
||
|
SOURCE_FILES = FileList.new do |fl|
|
||
|
[ "ext", "lib", "test" ].each do |dir|
|
||
|
fl.include "#{dir}/**/*"
|
||
|
end
|
||
|
fl.include "Rakefile"
|
||
|
end
|
||
|
|
||
|
PACKAGE_FILES = FileList.new do |fl|
|
||
|
[ "api", "doc" ].each do |dir|
|
||
|
fl.include "#{dir}/**/*"
|
||
|
end
|
||
|
fl.include "CHANGELOG.rdoc", "README.rdoc", "LICENSE", "#{PACKAGE_NAME}.gemspec", "setup.rb"
|
||
|
fl.include SOURCE_FILES
|
||
|
end
|
||
|
|
||
|
Gem.manage_gems
|
||
|
|
||
|
def can_require( file )
|
||
|
begin
|
||
|
require file
|
||
|
return true
|
||
|
rescue LoadError
|
||
|
return false
|
||
|
end
|
||
|
end
|
||
|
|
||
|
desc "Default task"
|
||
|
task :default => [ :test ]
|
||
|
|
||
|
desc "Clean generated files"
|
||
|
task :clean do
|
||
|
rm_rf "ChangeLog"
|
||
|
rm_rf "pkg"
|
||
|
rm_rf "api"
|
||
|
rm_f "doc/faq/faq.html"
|
||
|
|
||
|
native_files = [ "Makefile", "mkmf.log", "sqlite3_api.so",
|
||
|
"sqlite3_api.bundle", "sqlite3_api_wrap.o" ]
|
||
|
native_files.each { |f| rm_f "ext/sqlite3_api/#{f}" }
|
||
|
end
|
||
|
|
||
|
desc "Run benchmarks vs. sqlite-ruby"
|
||
|
task :benchmark do
|
||
|
ruby "test/bm.rb"
|
||
|
end
|
||
|
|
||
|
desc "Run benchmarks dl vs. native"
|
||
|
task :benchmark2 do
|
||
|
ruby "test/native-vs-dl.rb"
|
||
|
end
|
||
|
|
||
|
desc "Generate the FAQ document"
|
||
|
task :faq => "doc/faq/faq.html"
|
||
|
|
||
|
file "doc/faq/faq.html" => [ "doc/faq/faq.rb", "doc/faq/faq.yml" ] do
|
||
|
cd( "doc/faq" ) { ruby "faq.rb > faq.html" }
|
||
|
end
|
||
|
|
||
|
Rake::TestTask.new do |t|
|
||
|
t.test_files = [ "test/tests.rb" ]
|
||
|
t.verbose = true
|
||
|
end
|
||
|
|
||
|
desc "Build all packages"
|
||
|
task :package
|
||
|
|
||
|
package_name = "#{PACKAGE_NAME}-#{PACKAGE_VERSION}"
|
||
|
package_dir = "pkg"
|
||
|
package_dir_path = "#{package_dir}/#{package_name}"
|
||
|
|
||
|
gz_file = "#{package_name}.tar.gz"
|
||
|
bz2_file = "#{package_name}.tar.bz2"
|
||
|
zip_file = "#{package_name}.zip"
|
||
|
gem_file = "#{package_name}.gem"
|
||
|
|
||
|
task :gzip => SOURCE_FILES + [ :faq, :rdoc, "#{package_dir}/#{gz_file}" ]
|
||
|
task :bzip => SOURCE_FILES + [ :faq, :rdoc, "#{package_dir}/#{bz2_file}" ]
|
||
|
task :zip => SOURCE_FILES + [ :faq, :rdoc, "#{package_dir}/#{zip_file}" ]
|
||
|
task :gem => SOURCE_FILES + [ :faq, "#{package_dir}/#{gem_file}" ]
|
||
|
|
||
|
task :package => [ :gzip, :bzip, :zip, :gem ]
|
||
|
|
||
|
directory package_dir
|
||
|
|
||
|
file package_dir_path do
|
||
|
mkdir_p package_dir_path rescue nil
|
||
|
PACKAGE_FILES.each do |fn|
|
||
|
f = File.join( package_dir_path, fn )
|
||
|
if File.directory?( fn )
|
||
|
mkdir_p f unless File.exist?( f )
|
||
|
else
|
||
|
dir = File.dirname( f )
|
||
|
mkdir_p dir unless File.exist?( dir )
|
||
|
rm_f f
|
||
|
safe_ln fn, f
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
file "#{package_dir}/#{zip_file}" => package_dir_path do
|
||
|
rm_f "#{package_dir}/#{zip_file}"
|
||
|
chdir package_dir do
|
||
|
sh %{zip -r #{zip_file} #{package_name}}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
file "#{package_dir}/#{gz_file}" => package_dir_path do
|
||
|
rm_f "#{package_dir}/#{gz_file}"
|
||
|
chdir package_dir do
|
||
|
sh %{tar czvf #{gz_file} #{package_name}}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
file "#{package_dir}/#{bz2_file}" => package_dir_path do
|
||
|
rm_f "#{package_dir}/#{bz2_file}"
|
||
|
chdir package_dir do
|
||
|
sh %{tar cjvf #{bz2_file} #{package_name}}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
file "#{package_dir}/#{gem_file}" => package_dir do
|
||
|
spec = eval(File.read(PACKAGE_NAME+".gemspec"))
|
||
|
Gem::Builder.new(spec).build
|
||
|
mv gem_file, "#{package_dir}/#{gem_file}"
|
||
|
end
|
||
|
|
||
|
Rake::RDocTask.new do |rdoc|
|
||
|
rdoc.rdoc_dir = 'api'
|
||
|
rdoc.title = "SQLite3/Ruby"
|
||
|
rdoc.options += %w(--line-numbers --inline-source --main README.rdoc)
|
||
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
||
|
|
||
|
if can_require( "rdoc/generators/template/html/jamis" )
|
||
|
rdoc.template = "jamis"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
desc "Publish the API documentation"
|
||
|
task :pubrdoc => [ :rdoc ] do
|
||
|
Rake::SshDirPublisher.new(
|
||
|
"minam@rubyforge.org",
|
||
|
"/var/www/gforge-projects/sqlite-ruby/sqlite3/",
|
||
|
"api" ).upload
|
||
|
end
|
||
|
|
||
|
desc "Publish the FAQ"
|
||
|
task :pubfaq => [ :faq ] do
|
||
|
Rake::SshFilePublisher.new(
|
||
|
"minam@rubyforge.org",
|
||
|
"/var/www/gforge-projects/sqlite-ruby/sqlite3",
|
||
|
"doc/faq",
|
||
|
"faq.html" ).upload
|
||
|
end
|
||
|
|
||
|
desc "Publish the documentation"
|
||
|
task :pubdoc => [:pubrdoc, :pubfaq]
|
||
|
|
||
|
desc "Build the Native extension"
|
||
|
task :build do
|
||
|
cd 'ext/sqlite3_api' do
|
||
|
ruby 'extconf.rb'
|
||
|
system 'make'
|
||
|
end
|
||
|
end
|
||
|
|
||
|
desc "Package a beta release"
|
||
|
task :beta do
|
||
|
require 'yaml'
|
||
|
system 'svn up'
|
||
|
rev = YAML.load(`svn info`)["Revision"]
|
||
|
version = File.read("lib/sqlite3/version.rb")
|
||
|
version.gsub!(/#:beta-tag:/, %(STRING << ".#{rev}"))
|
||
|
File.open("lib/sqlite3/version.rb", "w") { |f| f.write(version) }
|
||
|
|
||
|
system "rake gem"
|
||
|
|
||
|
system "svn revert lib/sqlite3/version.rb"
|
||
|
end
|