-
Notifications
You must be signed in to change notification settings - Fork 0
/
distruby.rb
59 lines (50 loc) · 1.37 KB
/
distruby.rb
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
56
57
58
#!./miniruby
if RUBY_PATCHLEVEL.zero?
dirname = sprintf 'ruby-%s', RUBY_VERSION
tagname = dirname.gsub /ruby-(\d)\.(\d)\.(\d)/, 'v\1_\2_\3'
else
dirname = sprintf 'ruby-%s-p%u', RUBY_VERSION, RUBY_PATCHLEVEL
tagname = dirname.gsub /ruby-(\d)\.(\d)\.(\d)-p/, 'v\1_\2_\3_'
end
tgzname = dirname + '.tar.gz'
tbzname = dirname + '.tar.bz2'
zipname = dirname + '.zip'
repos = 'http://svn.ruby-lang.org/repos/ruby/tags/' + tagname
STDERR.puts 'exporting sources...'
system 'svn', 'export', '-q', repos, dirname
Dir.chdir dirname do
STDERR.puts 'generating configure...'
system 'autoconf'
system 'rm', '-rf', 'autom4te.cache'
STDERR.puts 'generating parse.c...'
system 'bison', '-y', '-o', 'parse.c', 'parse.y'
end
STDERR.puts 'generating tarballs...'
ENV['GZIP'] = '-9'
system 'tar', 'chofzp', tgzname, dirname
system 'tar', 'chojfp', tbzname, dirname
system 'zip', '-q9r', zipname, dirname
require 'digest/md5'
require 'digest/sha2'
for name in [tgzname, tbzname, zipname] do
open name, 'rb' do |fp|
str = fp.read
md5 = Digest::MD5.hexdigest str
sha = Digest::SHA256.hexdigest str
printf "MD5(%s)= %s\nSHA256(%s)= %s\nSIZE(%s)= %s\n\n",
name, md5,
name, sha,
name, str.size
end
end
#
# Local Variables:
# mode: ruby
# code: utf-8
# indent-tabs-mode: t
# tab-width: 3
# ruby-indent-level: 3
# fill-column: 79
# default-justification: full
# End:
# vi: ts=3 sw=3