Skip to content

Commit

Permalink
Showing 3 changed files with 44 additions and 19 deletions.
42 changes: 29 additions & 13 deletions lib/pom.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
MORE_QUIET = ENV['JRUBY_BUILD_MORE_QUIET']

if MORE_QUIET
class Gem::Installer
def say(message)
if message != spec.post_install_message || !MORE_QUIET
super
end
end
end
end

def log(message=nil)
puts message unless MORE_QUIET
end

class ImportedGem
attr_reader :name, :version, :default_spec

@@ -83,7 +99,7 @@ def initialize( name, version, default_spec = true )
execute :install_gems, :'initialize' do |ctx|
require 'fileutils'

puts "using jruby #{JRUBY_VERSION}"
log "using jruby #{JRUBY_VERSION}"

target = ctx.project.build.directory.to_pathname
gem_home = File.join( target, 'rubygems' )
@@ -117,14 +133,14 @@ def initialize( name, version, default_spec = true )
require 'rubygems/installer'
require 'rubygems/package'

puts 'install gems unless already installed'
log 'install gems unless already installed'
ENV_JAVA['jars.skip'] = 'true'
ctx.project.artifacts.select do |a|
a.group_id == 'rubygems' || a.group_id == 'org.jruby.gems'
end.each do |a|
ghome = default_gemnames.member?( a.artifact_id ) ? gem_home : jruby_gems
if Dir[ File.join( ghome, 'cache', File.basename( a.file.to_pathname ).sub( /.gem/, '*.gem' ) ) ].empty?
puts a.file.to_pathname
log a.file.to_pathname
installer = Gem::Installer.new( a.file.to_pathname,
:wrappers => true,
:ignore_dependencies => true,
@@ -141,19 +157,19 @@ def installer.ensure_required_ruby_version_met; end
# install the gem unless already installed
if Dir[ File.join( default_specs, "#{g.name}-#{version}*.gemspec" ) ].empty?

puts
puts "--- gem #{g.name}-#{version} ---"
log
log "--- gem #{g.name}-#{version} ---"

# copy the gem content to stdlib

puts "copy gem content to #{stdlib_dir}"
log "copy gem content to #{stdlib_dir}"
# assume default require_path
require_base = File.join( gems, "#{g.name}-#{version}*", 'lib' )
require_files = File.join( require_base, '*' )

# copy in new ones and mark writable for future updates (e.g. minitest)
stdlib_locs = Dir[ require_files ].map do |f|
puts " copying: #{f} to #{stdlib_dir}" if $VERBOSE
log " copying: #{f} to #{stdlib_dir}" if $VERBOSE
FileUtils.cp_r( f, stdlib_dir )

stdlib_loc = f.sub( File.dirname(f), stdlib_dir )
@@ -164,7 +180,7 @@ def installer.ensure_required_ruby_version_met; end
# fix permissions on copied files
stdlib_locs.each do |f|
next if File.writable? f
puts " fixing permissions: #{f}" if $VERBOSE
log " fixing permissions: #{f}" if $VERBOSE
# TODO: better way to just set it writable without changing all modes?
FileUtils.chmod_R(0644, f)
end
@@ -173,7 +189,7 @@ def installer.ensure_required_ruby_version_met; end
bin = File.join( gems, "#{g.name}-#{version}", 'bin' )
if File.exists? bin
Dir[ File.join( bin, '*' ) ].each do |f|
puts "copy to bin: #{File.basename( f )}"
log "copy to bin: #{File.basename( f )}"
target = File.join( bin_stubs, f.sub( /#{gems}/, '' ) )
FileUtils.mkdir_p( File.dirname( target ) )
FileUtils.cp_r( f, target )
@@ -189,7 +205,7 @@ def installer.ensure_required_ruby_version_met; end
end

specname = File.basename( specfile )
puts "copy to specifications/default: #{specname}"
log "copy to specifications/default: #{specname}"

spec = Gem::Package.new( Dir[ File.join( cache, "#{g.name}-#{version}*.gem" ) ].first ).spec
File.open( File.join( default_specs, specname ), 'w' ) do |f|
@@ -217,7 +233,7 @@ def installer.ensure_required_ruby_version_met; end
execute( 'fix shebang on gem bin files and add *.bat files',
'generate-resources' ) do |ctx|

puts 'fix the gem stub files'
log 'fix the gem stub files'
jruby_home = ctx.project.basedir.to_pathname + '/../'
bindir = File.join( jruby_home, 'lib', 'ruby', 'gems', 'shared', 'bin' )
Dir[ File.join( bindir, '*' ) ].each do |f|
@@ -227,7 +243,7 @@ def installer.ensure_required_ruby_version_met; end
File.open( f, "w" ) { |file| file.print( new_content ) }
end

puts 'generating missing .bat files'
log 'generating missing .bat files'
Dir[File.join( jruby_home, 'bin', '*' )].each do |fn|
next unless File.file?(fn)
next if fn =~ /.bat$/
@@ -236,7 +252,7 @@ def installer.ensure_required_ruby_version_met; end
line = io.readline rescue ""
line =~ /^#!.*ruby/
end
puts " generating #{File.basename(fn)}.bat" if $VERBOSE
log " generating #{File.basename(fn)}.bat" if $VERBOSE
File.open("#{fn}.bat", "wb") do |f|
f.print "@ECHO OFF\r\n"
f.print "@\"%~dp0jruby.exe\" -S #{File.basename(fn)} %*\r\n"
8 changes: 5 additions & 3 deletions mx.jruby/mx_jruby.py
Original file line number Diff line number Diff line change
@@ -105,16 +105,18 @@ def build(self):
open(os.path.join(rubyDir, 'VERSION'), 'w').write('graal-vm\n')

# Build jruby-truffle

env = {'JRUBY_BUILD_MORE_QUIET': 'true'}

mx.run_maven(['--version', maven_repo_arg], nonZeroIsFatal=False, cwd=rubyDir)
mx.run_maven(['--version', maven_repo_arg], nonZeroIsFatal=False, cwd=rubyDir, env=env)

mx.log('Building without tests')

mx.run_maven(['-DskipTests', maven_version_arg, maven_repo_arg], cwd=rubyDir)
mx.run_maven(['-DskipTests', maven_version_arg, maven_repo_arg], cwd=rubyDir, env=env)

mx.log('Building complete version')

mx.run_maven(['-Pcomplete', '-DskipTests', maven_version_arg, maven_repo_arg], cwd=rubyDir)
mx.run_maven(['-Pcomplete', '-DskipTests', maven_version_arg, maven_repo_arg], cwd=rubyDir, env=env)
mx.run(['zip', '-d', 'maven/jruby-complete/target/jruby-complete-graal-vm.jar', 'META-INF/jruby.home/lib/*'], cwd=rubyDir)
mx.run(['bin/jruby', 'bin/gem', 'install', 'bundler', '-v', '1.10.6'], cwd=rubyDir)
mx.log('...finished build of {}'.format(self.subject))
13 changes: 10 additions & 3 deletions tool/jt.rb
Original file line number Diff line number Diff line change
@@ -292,7 +292,13 @@ def sh(*args)
end

def mvn(*args)
sh './mvnw', *(['-q'] + args)
if args.first.is_a? Hash
options = [args.shift]
else
options = []
end

sh *options, './mvnw', *(['-q'] + args)
end

def maven_options(*options)
@@ -408,11 +414,12 @@ def bootstrap(*options)
def build(*options)
maven_options, other_options = maven_options(*options)
project = other_options.first
env = {'JRUBY_BUILD_MORE_QUIET' => 'true'}
case project
when 'truffle'
mvn *maven_options, '-pl', 'truffle', 'package'
mvn env, *maven_options, '-pl', 'truffle', 'package'
when nil
mvn *maven_options, 'package'
mvn env, *maven_options, 'package'
else
raise ArgumentError, project
end

0 comments on commit a37c753

Please sign in to comment.