-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRakefile
More file actions
120 lines (105 loc) · 3.7 KB
/
Rakefile
File metadata and controls
120 lines (105 loc) · 3.7 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
require 'rubygems'
require 'bundler/setup'
require 'rake/clean'
distro = nil
fpm_opts = ""
if File.exist?('/etc/system-release') && File.read('/etc/redhat-release') =~ /centos|redhat|fedora|amazon/i
distro = 'rpm'
fpm_opts << " --rpm-user root --rpm-group root "
elsif File.exist?('/etc/os-release') && File.read('/etc/os-release') =~ /ubuntu|debian/i
distro = 'deb'
fpm_opts << " --deb-user root --deb-group root "
end
unless distro
$stderr.puts "Don't know what distro I'm running on -- not sure if I can build!"
end
CLEAN.include("downloads")
CLEAN.include("jailed-root")
CLEAN.include("log")
CLEAN.include("pkg")
CLEAN.include("tmp")
{
'1.6' => {
:url => 'http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin',
:checksum => '40c1a87563c5c6a90a0ed6994615befe',
:exclude => [
'./man/', # man pages
'./db/', # derby
'./src.zip', # the jdk sources
'./lib/visualvm', # visualvm
]
},
'1.7' => {
:url => 'http://download.oracle.com/otn-pub/java/jdk/7u80-b15/jdk-7u80-linux-x64.tar.gz',
:checksum => '6152f8a7561acf795ca4701daa10a965',
:exclude => [
'./man/', # man pages
'./db/', # derby
'./src.zip', # the jdk sources
'./lib/visualvm', # visualvm
]
},
'1.8' => {
:url => 'http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.tar.gz',
:checksum => '2d48badebe05c848cc3b4d6e0c53a457',
:exclude => [
'./man/', # man pages
'./db/', # derby
'./src.zip', # the jdk sources
'./lib/visualvm', # visualvm
'./lib/missioncontrol', # missioncontrol
]
}
}.each do |version, description|
namespace version do
prefix = File.join("/opt/local/java", version)
java_jailed_root = File.join("jailed-root", prefix)
url = description[:url]
checksum = description[:checksum]
excludes = description[:exclude]
java_source = File.basename(url)
task :init do
mkdir_p 'log'
mkdir_p 'pkg'
mkdir_p 'downloads'
mkdir_p 'jailed-root'
end
task :download do
cd 'downloads' do
sh("curl --fail --location --cookie 'oraclelicense=accept-securebackup-cookie' #{url} > #{java_source} 2>/dev/null")
sh("echo '#{checksum} #{java_source}' > #{java_source}.md5")
sh("md5sum --check --status #{java_source}.md5")
end
end
task :unpack do
rm_rf 'jailed-root'
mkdir_p java_jailed_root
if java_source =~ /\.tar\.gz/
sh("tar -zxf downloads/#{java_source} -C #{java_jailed_root} --strip-components=1")
elsif java_source =~ /\.bin/
sh("mkdir tmp; cd tmp; bash ../downloads/#{java_source}")
sh("mv tmp/jdk*/* #{java_jailed_root}")
end
cd java_jailed_root do
excludes.each do |exclude|
rm_rf Dir[exclude]
end
end
end
task :fpm do
mkdir_p 'pkg'
description_string = %Q{The Java development tools.}
release = Time.now.utc.strftime('%Y%m%d%H%M%S')
cd 'pkg' do
sh(%Q{
bundle exec fpm -s dir -t #{distro} --name sun-java-#{version} -a x86_64 --version "#{version}" -C ../jailed-root --directories #{prefix} --verbose #{fpm_opts} --maintainer snap-ci@thoughtworks.com --vendor snap-ci@thoughtworks.com --url http://snap-ci.com --description "#{description_string}" --iteration #{release} --license 'Oracle Binary Code License Agreement' .
})
end
end
desc "build and package java-#{version}"
task :all => [:clean, :init, :download, :unpack, :fpm]
end
task :default => "#{version}:all"
end
desc 'build all java versions'
task :default