diff --git a/Rakefile b/Rakefile index 8d1934ab..8b6350ba 100644 --- a/Rakefile +++ b/Rakefile @@ -1,4 +1,5 @@ # Rakefile to build a project using HUDSON +RAKE_ROOT = File.expand_path(File.dirname(__FILE__)) begin require 'rdoc/task' @@ -26,6 +27,11 @@ ENV["DEB_DISTRIBUTION"] ? PKG_DEB_DISTRIBUTION = ENV["DEB_DISTRIBUTION"] : PKG_D CLEAN.include(["build", "doc"]) +begin + load File.join(RAKE_ROOT, 'ext', 'packaging.rake') +rescue LoadError +end + def announce(msg='') STDERR.puts "================" STDERR.puts msg diff --git a/ext/packaging.rake b/ext/packaging.rake new file mode 100644 index 00000000..3adb3409 --- /dev/null +++ b/ext/packaging.rake @@ -0,0 +1,36 @@ +build_defs_file = File.join(RAKE_ROOT, 'ext', 'build_defaults.yaml') +if File.exist?(build_defs_file) + begin + require 'yaml' + @build_defaults ||= YAML.load_file(build_defs_file) + rescue Exception => e + STDERR.puts "Unable to load yaml from #{build_defs_file}:" + raise e + end + @packaging_url = @build_defaults['packaging_url'] + @packaging_repo = @build_defaults['packaging_repo'] + raise "Could not find packaging url in #{build_defs_file}" if @packaging_url.nil? + raise "Could not find packaging repo in #{build_defs_file}" if @packaging_repo.nil? + + namespace :package do + desc "Bootstrap packaging automation, e.g. clone into packaging repo" + task :bootstrap do + if File.exist?(File.join(RAKE_ROOT, "ext", @packaging_repo)) + puts "It looks like you already have ext/#{@packaging_repo}. If you don't like it, blow it away with package:implode." + else + cd File.join(RAKE_ROOT, 'ext') do + %x{git clone #{@packaging_url}} + end + end + end + desc "Remove all cloned packaging automation" + task :implode do + rm_rf File.join(RAKE_ROOT, "ext", @packaging_repo) + end + end +end + +begin + load File.join(RAKE_ROOT, 'ext', 'packaging', 'packaging.rake') +rescue LoadError +end