File: installer.rake

package info (click to toggle)
jruby 9.4.8.0%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 89,244 kB
  • sloc: ruby: 548,574; java: 276,189; yacc: 25,873; ansic: 6,178; xml: 6,111; sh: 1,855; sed: 94; makefile: 78; jsp: 48; tcl: 40; exp: 12
file content (55 lines) | stat: -rw-r--r-- 1,777 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
require 'erb'
require 'fileutils'
require 'rbconfig'

include FileUtils

INSTALL4J_CONFIG_FILE = File.join(File.dirname(__FILE__), '..', 'install', 'jruby.install4j')

task :installer => [:windows_installer]

task :windows_installer => :init_release do
  version = jruby_version
  unpacked_dir = unpack_binary_distribution(version)
  
  install_windows_gems(unpacked_dir)

  if File.executable?(INSTALL4J_EXECUTABLE)
    root_dir = Dir.pwd
    Dir.chdir(unpacked_dir) do
      sh %Q^"#{INSTALL4J_EXECUTABLE}" -m windows -D jruby.dist.location=#{root_dir},jruby.location=#{unpacked_dir},ruby.version=#{VERSION_RUBY},jruby.version=#{version},ruby.patchlevel=0,ruby.buildplatform=i386-mingw32 #{INSTALL4J_CONFIG_FILE}^ do |ok, result|
        $stderr.puts "** Something went wrong: #{result}" unless ok
      end
      mv Dir[File.join(root_dir, 'install', '*.exe')], File.join(root_dir, RELEASE_DIR)
      Dir[File.join(RELEASE_DIR, '*.exe')].each do |file|
        md5_checksum file
        sha1_checksum file
      end
    end
  else
    puts "Skipping windows installers since install4j is not available"
  end
end

task :init_release do
  mkdir_p RELEASE_DIR
end

def unpack_binary_distribution(jruby_version)
  require 'tmpdir'
  dist_file = Dir[File.join(DIST_FILES_DIR, "jruby-dist-*-bin.zip")][0]

  unless File.exist?(dist_file)
    raise ArgumentError.new "No binary distribution file: '#{dist_file}'."
  end

  dir = Dir.mktmpdir
  sh "unzip -q -o #{dist_file} -d #{dir}"
  puts "unziped into #{File.join dir, "jruby-#{jruby_version}"}"
  puts "sh ls #{File.join dir, "jruby-#{jruby_version}"}"
  File.join dir, "jruby-#{jruby_version}"
end

def install_windows_gems(unpacked_dir)
  sh "#{File.join(unpacked_dir, 'bin', 'jruby')} -S gem install #{INSTALLER_GEMS}"
end