102 lines
2.1 KiB
Ruby
102 lines
2.1 KiB
Ruby
require 'rubygems'
|
|
require 'rake/gempackagetask'
|
|
require 'rake/testtask'
|
|
|
|
#so we can: ssh host rake -f $hudson_workspace/sigar/Rakefile
|
|
Dir.chdir(File.dirname(__FILE__))
|
|
|
|
props = {}
|
|
File.open("version.properties").each { |line|
|
|
next if line =~ /^#/
|
|
line.chomp!
|
|
line.strip!
|
|
next if line.empty?
|
|
key,val = line.split('=')
|
|
props[key] = val
|
|
}
|
|
|
|
GEM = props['project.name']
|
|
MAKE = (/mswin/ =~ RUBY_PLATFORM) ? 'nmake' : 'make'
|
|
|
|
spec = Gem::Specification.new do |s|
|
|
s.name = GEM
|
|
# s.version = props['version.major'] + '.' + props['version.minor'] + '.' + props['version.maint']
|
|
# '0.7.x' until the sigar-1.7.0 release
|
|
s.version = '0' + '.' + props['version.minor'] + '.' + '0'
|
|
s.summary = props['project.summary']
|
|
s.description = s.summary
|
|
s.author = props['project.author']
|
|
s.email = props['project.email']
|
|
s.homepage = props['project.homepage']
|
|
s.platform = Gem::Platform::RUBY
|
|
s.has_rdoc = false
|
|
s.extensions = 'bindings/ruby/extconf.rb'
|
|
s.files =
|
|
%w(COPYING EXCEPTIONS README Rakefile version.properties) +
|
|
%w(bindings/SigarWrapper.pm) +
|
|
Dir.glob("bindings/ruby/**/*") +
|
|
Dir.glob("include/*.h") +
|
|
Dir.glob("src/**/*.[ch]")
|
|
end
|
|
|
|
Rake::GemPackageTask.new(spec) do |pkg|
|
|
pkg.gem_spec = spec
|
|
end
|
|
|
|
task :default => :test
|
|
|
|
task :make_spec do
|
|
File.open("#{GEM}.gemspec", "w") do |file|
|
|
file.puts spec.to_ruby
|
|
end
|
|
end
|
|
|
|
def in_ext()
|
|
ext = 'bindings/ruby'
|
|
Dir.chdir(ext) if File.directory? ext
|
|
end
|
|
|
|
desc 'Build sigar extension'
|
|
task :build do
|
|
in_ext();
|
|
unless File.exists? "Makefile"
|
|
unless system("ruby extconf.rb")
|
|
STDERR.puts "Failed to configure"
|
|
break
|
|
end
|
|
end
|
|
unless system(MAKE)
|
|
STDERR.puts 'Failed to ' + MAKE
|
|
break
|
|
end
|
|
end
|
|
|
|
Rake::TestTask.new do |t|
|
|
in_ext()
|
|
t.pattern = 'test/*_test.rb'
|
|
end
|
|
|
|
task :test => [:build]
|
|
|
|
desc 'Clean sigar extension'
|
|
task :clean do
|
|
in_ext()
|
|
system(MAKE + ' clean')
|
|
end
|
|
|
|
desc 'Dist Clean sigar extension'
|
|
task :distclean do
|
|
in_ext()
|
|
system(MAKE + ' distclean')
|
|
end
|
|
|
|
desc 'Run sigar examples (test)'
|
|
task :examples => [:build] do
|
|
in_ext()
|
|
Dir["examples/*.rb"].each do |file|
|
|
cmd = "ruby #{file}"
|
|
print cmd + "\n"
|
|
system(cmd)
|
|
end
|
|
end
|