2 def write_md5_digest_file(filename)
5 digest_file = "#{filename}.md5"
6 File.open(digest_file, "w") do |f|
7 f.puts Digest::MD5.file(filename).hexdigest
10 puts "Computed MD5 to #{digest_file}"
13 def write_sha1_digest_file(filename)
16 digest_file = "#{filename}.sha1"
17 File.open(digest_file, "w") do |f|
18 f.puts Digest::SHA1.file(filename).hexdigest
21 puts "Computed SHA1 to #{digest_file}"
24 def write_sha512_digest_file(filename)
27 digest_file = "#{filename}.sha512"
28 File.open(digest_file, "w") do |f|
29 f.puts Digest::SHA512.file(filename).hexdigest
32 puts "Computed SHA512 to #{digest_file}"
36 release_revision.first
39 class RubiniusPackager
40 attr_writer :prefix, :root, :bin, :config, :archive, :package
42 def initialize(options={})
43 @prefix = options[:prefix]
44 @root = options[:root]
46 @config = options[:config]
47 @archive = options[:archive]
48 @package = options[:package]
51 # passed verbatim to --prefix
53 default = "/rubinius/#{rbx_version}"
57 # root directory of the build
59 @root ||= BUILD_CONFIG[:builddir][0...-BUILD_CONFIG[:prefixdir].size]
62 # path for a binary symlink
67 # any configure options
69 config = ["--prefix=#{prefix} --preserve-prefix"]
74 # "zip", "tar.gz", "tar.bz2"
79 # name of the final package file minus #archive
81 default = "rubinius-#{rbx_version}"
85 def create_archive(package_name)
86 name = "#{BUILD_CONFIG[:sourcedir]}/#{package_name}"
91 sh "zip --symlinks -r #{name} *"
93 sh "tar -c -f - * | gzip > #{name}"
95 sh "tar -c -f - * | bzip2 -9 > #{name}"
97 raise RuntimeError, "unknown archive format: #{archive}"
103 package_name = package + "." + archive
104 sh "rm -rf #{package_name}*"
107 sh "./configure #{config}"
113 sh "strip -S #{BUILD_CONFIG[:build_exe]}" unless BUILD_CONFIG[:debug_build]
116 sh "mkdir -p #{root}#{File.dirname(bin)}"
118 bin = "#{prefix}#{BUILD_CONFIG[:bindir]}"
119 bin_link = "#{root}#{bin}"
121 sh "ln -sf #{bin} #{bin_link}"
124 create_archive package_name
125 write_sha512_digest_file package_name
127 # Some rake versions swallow the backtrace, so we do it explicitly.
128 STDERR.puts e.message, e.backtrace