Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

199 lines (175 sloc) 5.521 kB
# Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
# All contributing project authors may be found in the NOTICE file.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
require 'rake'
require 'rake/testtask'
require 'rubygems'
require 'rubygems/package_task'
require 'bundler/setup'
require 'java'
require 'jruby/compiler'
require 'ant'
Gem::PackageTask.new Gem::Specification.load('mirah.gemspec') do |pkg|
pkg.need_zip = true
pkg.need_tar = true
end
bitescript_lib_dir = File.dirname Gem.find_files('bitescript').first
task :gem => 'jar:bootstrap'
task :default => :test
def run_tests tests
results = tests.map do |name|
begin
Rake.application[name].invoke
rescue Exception
end
end
tests.zip(results).each do |name, passed|
unless passed
puts "Errors in #{name}"
end
end
fail if results.any?{|passed|!passed}
end
desc "run full test suite"
task :test do
run_tests [ 'test:core', 'test:plugins', 'test:jvm' ]
end
namespace :test do
desc "run the core tests"
Rake::TestTask.new :core do |t|
t.libs << 'test'
t.test_files = FileList["test/core/**/*test.rb"]
java.lang.System.set_property("jruby.duby.enabled", "true")
end
desc "run tests for plugins"
Rake::TestTask.new :plugins do |t|
t.libs << 'test'
t.test_files = FileList["test/plugins/**/*test.rb"]
java.lang.System.set_property("jruby.duby.enabled", "true")
end
desc "run jvm tests, both bytecode and java source"
task :jvm do
run_tests ["test:jvm:bytecode", "test:jvm:javac"]
end
namespace :jvm do
desc "run jvm tests compiling to bytecode"
Rake::TestTask.new :bytecode do |t|
t.libs << 'test' <<'test/jvm'
t.ruby_opts.concat ["-r", "bytecode_test_helper"]
t.test_files = FileList["test/jvm/**/*test.rb"]
java.lang.System.set_property("jruby.duby.enabled", "true")
end
desc "run jvm tests compiling to java source, then bytecode"
Rake::TestTask.new :javac do |t|
t.libs << 'test' <<'test/jvm'
t.ruby_opts.concat ["-r", "javac_test_helper"]
t.test_files = FileList["test/jvm/**/*test.rb"]
java.lang.System.set_property("jruby.duby.enabled", "true")
end
end
end
task :init do
mkdir_p 'dist'
mkdir_p 'build'
end
desc "clean up build artifacts"
task :clean do
ant.delete :quiet => true, :dir => 'build'
ant.delete :quiet => true, :dir => 'dist'
end
task :compile => :init do
require 'mirah'
# build the Ruby sources
puts "Compiling Ruby sources"
JRuby::Compiler.compile_argv([
'-t', 'build',
'--javac',
'src/org/mirah/mirah_command.rb'
])
# build the Mirah sources
puts "Compiling Mirah sources"
Dir.chdir 'src' do
classpath = Mirah::Env.encode_paths([
'javalib/jruby-complete.jar',
'javalib/JRubyParser.jar',
'build',
'/usr/share/ant/lib/ant.jar'
])
Mirah.compile(
'-c', classpath,
'-d', '../build',
'--jvm', '1.6',
'org/mirah',
'duby/lang',
'mirah'
)
end
# compile invokedynamic stuff
ant.javac :destdir => 'build', :srcdir => 'src',
:includes => 'org/mirah/DynalangBootstrap.java',
:classpath => 'javalib/dynalink-0.1.jar:javalib/jsr292-mock.jar',
:includeantruntime => false
end
desc "build basic jar for distribution"
task :jar => :compile do
ant.jar :jarfile => 'dist/mirah.jar' do
fileset :dir => 'lib'
fileset :dir => 'build'
fileset :dir => '.', :includes => 'bin/*'
fileset :dir => bitescript_lib_dir
manifest do
attribute :name => 'Main-Class', :value => 'org.mirah.MirahCommand'
end
end
end
namespace :jar do
desc "build self-contained, complete jar"
task :complete => :jar do
ant.jar :jarfile => 'dist/mirah-complete.jar' do
zipfileset :src => 'dist/mirah.jar'
zipfileset :src => 'javalib/jruby-complete.jar'
zipfileset :src => 'javalib/mirah-parser.jar'
zipfileset :src => 'javalib/dynalink-0.2.jar'
manifest do
attribute :name => 'Main-Class', :value => 'org.mirah.MirahCommand'
end
end
end
desc "build bootstrap jar used by the gem"
task :bootstrap => :compile do
ant.jar :jarfile => 'javalib/mirah-bootstrap.jar' do
fileset :dir => 'build'
end
end
end
desc "Build a distribution zip file"
task :zip => 'jar:complete' do
basedir = "tmp/mirah-#{Mirah::VERSION}"
mkdir_p "#{basedir}/lib"
mkdir_p "#{basedir}/bin"
cp 'dist/mirah-complete.jar', "#{basedir}/lib"
cp 'distbin/mirah.bash', "#{basedir}/bin/mirah"
cp 'distbin/mirahc.bash', "#{basedir}/bin/mirahc"
cp Dir['{distbin/*.bat}'], "#{basedir}/bin/"
cp_r 'examples', "#{basedir}/examples"
rm_rf "#{basedir}/examples/wiki"
cp 'README.txt', "#{basedir}"
cp 'NOTICE', "#{basedir}"
cp 'LICENSE', "#{basedir}"
cp 'History.txt', "#{basedir}"
sh "sh -c 'cd tmp ; zip -r ../dist/mirah-#{Mirah::VERSION}.zip mirah-#{Mirah::VERSION}/*'"
rm_rf 'tmp'
end
desc "Build all redistributable files"
task :dist => [:gem, :zip]
Jump to Line
Something went wrong with that request. Please try again.