simp-rake-helpers 3.0.2 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/simp/rake/build/auto.rb +673 -253
- data/lib/simp/rake/build/build.rb +63 -27
- data/lib/simp/rake/build/clean.rb +5 -1
- data/lib/simp/rake/build/code.rb +24 -24
- data/lib/simp/rake/build/constants.rb +94 -15
- data/lib/simp/rake/build/deps.rb +2 -0
- data/lib/simp/rake/build/helpers.rb +1 -1
- data/lib/simp/rake/build/iso.rb +34 -13
- data/lib/simp/rake/build/pkg.rb +162 -141
- data/lib/simp/rake/build/spec.rb +13 -6
- data/lib/simp/rake/build/tar.rb +62 -21
- data/lib/simp/rake/build/unpack.rb +5 -4
- data/lib/simp/rake/build/upload.rb +11 -5
- data/lib/simp/rake/helpers/version.rb +1 -1
- data/lib/simp/rake/pkg.rb +135 -60
- data/lib/simp/rpm.rb +16 -3
- metadata +65 -65
data/lib/simp/rake/build/auto.rb
CHANGED
@@ -2,9 +2,11 @@
|
|
2
2
|
|
3
3
|
require 'simp/rake'
|
4
4
|
require 'json'
|
5
|
+
require 'simp/rake/build/constants'
|
6
|
+
|
5
7
|
include Simp::Rake
|
6
8
|
|
7
|
-
class SIMPBuildException <
|
9
|
+
class SIMPBuildException < StandardError
|
8
10
|
end
|
9
11
|
|
10
12
|
require 'simp/build/release_mapper'
|
@@ -12,313 +14,730 @@ module Simp; end
|
|
12
14
|
module Simp::Rake; end
|
13
15
|
module Simp::Rake::Build
|
14
16
|
class Auto < ::Rake::TaskLib
|
17
|
+
include Simp::Rake::Build::Constants
|
18
|
+
|
15
19
|
def initialize( run_dir )
|
16
|
-
|
20
|
+
init_member_vars(run_dir)
|
21
|
+
|
17
22
|
define
|
18
23
|
end
|
19
24
|
|
20
25
|
# define rake tasks
|
21
26
|
def define
|
22
27
|
namespace :build do
|
23
|
-
desc <<-EOM
|
24
|
-
Automatically detect and build a SIMP ISO for a target SIMP release.
|
25
|
-
|
26
|
-
This task runs all other build tasks
|
27
|
-
|
28
|
-
Arguments:
|
29
|
-
* :release => SIMP release to build (e.g., '5.1.X')
|
30
|
-
- :iso_paths => path to source ISO(s) and/or directories [Default: '.']
|
31
|
-
NOTE: colon-delimited list
|
32
|
-
- :tarball => SIMP build tarball file; if given, skips tar build. [Default: 'false']
|
33
|
-
- :output_dir => path to write SIMP ISO. [Default: './SIMP_ISO']
|
34
|
-
- :do_checksum => Use sha256sum checksum to compare each ISO. [Default: 'false']
|
35
|
-
- :key_name => Key name to sign packages [Default: 'dev']
|
36
|
-
|
37
|
-
ENV vars:
|
38
|
-
- SIMP_BUILD_staging_dir => Path to stage big build assets
|
39
|
-
[Default: './SIMP_ISO_STAGING']
|
40
|
-
- SIMP_BUILD_rm_staging_dir => 'yes' forcibly removes the staging dir before starting
|
41
|
-
- SIMP_BUILD_force_dirty => 'yes' tries to checks out subrepos even if dirty
|
42
|
-
- SIMP_BUILD_docs => 'yes' builds & includes documentation
|
43
|
-
- SIMP_BUILD_checkout => 'no' will skip the git repo checkouts
|
44
|
-
- SIMP_BUILD_bundle => 'no' skips running bundle in each subrepo
|
45
|
-
- SIMP_BUILD_unpack => 'no' skips the unpack section
|
46
|
-
- SIMP_BUILD_unpack_merge => 'no' prevents auto-merging the unpacked DVD
|
47
|
-
- SIMP_BUILD_prune => 'no' passes :prune=>false to iso:build
|
48
|
-
- SIMP_BUILD_iso_name => Renames the output ISO filename [Default: false]
|
49
|
-
- SIMP_BUILD_iso_tag => Appended to the output ISO's filename [Default: false]
|
50
|
-
- SIMP_BUILD_verbose => 'yes' enables verbose reporting. [Default: 'no']
|
51
|
-
- SIMP_BUILD_packer_vars => Write a packer vars.json to go with this ISO [Default: 'yes']
|
52
|
-
|
53
|
-
Notes:
|
54
|
-
- To skip `tar:build` (including `pkg:build`), use the `tarball` argument
|
55
|
-
EOM
|
56
|
-
|
57
|
-
task :auto, [:release,
|
58
|
-
:iso_paths,
|
59
|
-
:tarball,
|
60
|
-
:output_dir,
|
61
|
-
:do_checksum,
|
62
|
-
:key_name,
|
63
|
-
:packer_vars,
|
64
|
-
] do |t, args|
|
65
|
-
# set up data
|
66
|
-
# --------------------------------------------------------------------------
|
67
|
-
|
68
|
-
args.with_defaults(
|
69
|
-
:iso_paths => Dir.pwd,
|
70
|
-
:tarball => 'false',
|
71
|
-
:output_dir => '',
|
72
|
-
:do_checksum => 'false',
|
73
|
-
:key_name => 'dev',
|
74
|
-
)
|
75
|
-
|
76
|
-
# locals
|
77
|
-
target_release = args[:release]
|
78
|
-
iso_paths = File.expand_path(args[:iso_paths])
|
79
|
-
tarball = (args.tarball =~ /^(false|)$/ ? false : args.tarball)
|
80
|
-
output_dir = args[:output_dir].sub(/^$/, File.expand_path( 'SIMP_ISO', Dir.pwd ))
|
81
|
-
do_checksum = (args.do_checksum =~ /^$/ ? 'false' : args.do_checksum)
|
82
|
-
key_name = args[:key_name]
|
83
|
-
staging_dir = ENV.fetch('SIMP_BUILD_staging_dir',
|
84
|
-
File.expand_path( 'SIMP_ISO_STAGING', Dir.pwd ))
|
85
|
-
do_packer_vars = ENV.fetch('SIMP_BUILD_packer_vars', 'yes') == 'yes'
|
86
|
-
verbose = ENV.fetch('SIMP_BUILD_verbose', 'no') == 'yes'
|
87
|
-
|
88
|
-
yaml_file = File.expand_path('build/release_mappings.yaml', @base_dir)
|
89
|
-
pwd = Dir.pwd
|
90
|
-
repo_root_dir = File.expand_path( @base_dir )
|
91
|
-
method = ENV.fetch('SIMP_BUILD_puppetfile','tracking')
|
92
|
-
do_rm_staging = ENV['SIMP_BUILD_rm_staging_dir'] == 'yes'
|
93
|
-
do_docs = ENV['SIMP_BUILD_docs'] == 'yes' ? 'true' : 'false'
|
94
|
-
do_merge = ENV['SIMP_BUILD_unpack_merge'] != 'no'
|
95
|
-
do_prune = ENV['SIMP_BUILD_prune'] != 'no' ? 'true' : 'false'
|
96
|
-
do_checkout = ENV['SIMP_BUILD_checkout'] != 'no'
|
97
|
-
do_bundle = ENV['SIMP_BUILD_bundle'] == 'yes' ? true : false
|
98
|
-
do_unpack = ENV['SIMP_BUILD_unpack'] != 'no'
|
99
|
-
full_iso_name = ENV.fetch('SIMP_BUILD_iso_name', false)
|
100
|
-
iso_name_tag = ENV.fetch('SIMP_BUILD_iso_tag', false)
|
101
|
-
|
102
|
-
# Skip a bunch of unnecessary stuff if we're passed a tarball
|
103
|
-
if tarball
|
104
|
-
do_docs = false
|
105
|
-
do_checkout = false
|
106
|
-
do_bundle = false
|
107
|
-
end
|
108
28
|
|
109
|
-
|
110
|
-
|
29
|
+
# SIMP 6 Style
|
30
|
+
if @os_build_metadata
|
31
|
+
desc <<-EOM
|
32
|
+
Automatically detect and build a SIMP ISO for a target SIMP release.
|
33
|
+
|
34
|
+
This task runs all other build tasks
|
35
|
+
|
36
|
+
Arguments:
|
37
|
+
* :iso_paths => Path to source ISO(s) and/or directories [Default: '.']
|
38
|
+
NOTE: colon-delimited list
|
39
|
+
If not set, will build all enabled distributions
|
40
|
+
* :release => SIMP release to build (e.g., '6.X')
|
41
|
+
The Full list can be found in '#{File.join(@build_dir, 'release_mappings.yaml')}'
|
42
|
+
Default: #{[@simp_version.split('.').first, 'X'].join('.')}
|
43
|
+
* :output_dir => path to write SIMP ISO. [Default: './SIMP_ISO']
|
44
|
+
* :do_checksum => Use sha256sum checksum to compare each ISO. [Default: 'false']
|
45
|
+
* :key_name => Key name to sign packages [Default: 'dev']
|
46
|
+
|
47
|
+
ENV vars:
|
48
|
+
- SIMP_BUILD_isos => Path to the base OS ISO images
|
49
|
+
- SIMP_BUILD_distro => Distribution to build
|
50
|
+
See '#{File.join(@distro_build_dir, 'build_metadata.yaml')}'}
|
51
|
+
- SIMP_BUILD_prompt => 'no' disables asking questions.
|
52
|
+
Will default to a full build and *will* erase existing artifacts.
|
53
|
+
- SIMP_BUILD_staging_dir => Path to stage big build assets
|
54
|
+
[Default: './SIMP_ISO_STAGING']
|
55
|
+
- SIMP_BUILD_rm_staging_dir => 'yes' forcibly removes the staging dir before starting
|
56
|
+
- SIMP_BUILD_force_dirty => 'yes' tries to checks out subrepos even if dirty
|
57
|
+
- SIMP_BUILD_docs => 'yes' builds & includes documentation
|
58
|
+
- SIMP_BUILD_checkout => 'no' will skip the git repo checkouts
|
59
|
+
- SIMP_BUILD_bundle => 'no' skips running bundle in each subrepo
|
60
|
+
- SIMP_BUILD_unpack => 'no' skips the unpack section
|
61
|
+
- SIMP_BUILD_unpack_merge => 'no' prevents auto-merging the unpacked DVD
|
62
|
+
- SIMP_BUILD_prune => 'no' passes :prune=>false to iso:build
|
63
|
+
- SIMP_BUILD_iso_name => Renames the output ISO filename [Default: false]
|
64
|
+
- SIMP_BUILD_iso_tag => Appended to the output ISO's filename [Default: false]
|
65
|
+
- SIMP_BUILD_verbose => 'yes' enables verbose reporting. [Default: 'no']
|
66
|
+
- SIMP_BUILD_packer_vars => Write a packer vars.json to go with this ISO [Default: 'yes']
|
67
|
+
- SIMP_BUILD_signing_key => The name of the GPG key to use to sign packages. [Default: 'dev']
|
68
|
+
EOM
|
69
|
+
|
70
|
+
task :auto, [:iso_paths,
|
71
|
+
:release,
|
72
|
+
:output_dir,
|
73
|
+
:do_checksum,
|
74
|
+
:key_name
|
75
|
+
] do |t, args|
|
76
|
+
|
77
|
+
args.with_defaults(
|
78
|
+
:iso_paths => ENV['SIMP_BUILD_isos'] || Dir.pwd,
|
79
|
+
:distribution => 'ALL',
|
80
|
+
:release => [@simp_version.split('.').first, 'X'].join('.'),
|
81
|
+
:output_dir => '',
|
82
|
+
:do_checksum => 'false',
|
83
|
+
:key_name => ENV['SIMP_BUILD_signing_key'] || 'dev'
|
84
|
+
)
|
85
|
+
|
86
|
+
iso_paths = File.expand_path(args[:iso_paths])
|
87
|
+
target_release = args[:release]
|
88
|
+
do_checksum = (args.do_checksum = ~ /^$/ ? 'false' : args.do_checksum)
|
89
|
+
key_name = args[:key_name]
|
90
|
+
do_packer_vars = ENV.fetch('SIMP_BUILD_packer_vars', 'yes') == 'yes'
|
91
|
+
verbose = ENV.fetch('SIMP_BUILD_verbose', 'no') == 'yes'
|
92
|
+
prompt = ENV.fetch('SIMP_BUILD_prompt', 'yes') != 'no'
|
93
|
+
pwd = Dir.pwd
|
94
|
+
repo_root_dir = File.expand_path( @base_dir )
|
95
|
+
method = ENV.fetch('SIMP_BUILD_puppetfile','tracking')
|
96
|
+
do_rm_staging = ENV['SIMP_BUILD_rm_staging_dir'] == 'yes'
|
97
|
+
do_docs = ENV['SIMP_BUILD_docs'] == 'yes' ? 'true' : 'false'
|
98
|
+
do_merge = ENV['SIMP_BUILD_unpack_merge'] != 'no'
|
99
|
+
do_prune = ENV['SIMP_BUILD_prune'] != 'no' ? 'true' : 'false'
|
100
|
+
do_checkout = ENV['SIMP_BUILD_checkout'] != 'no'
|
101
|
+
do_bundle = ENV['SIMP_BUILD_bundle'] == 'yes' ? true : false
|
102
|
+
do_unpack = ENV['SIMP_BUILD_unpack'] != 'no'
|
103
|
+
full_iso_name = ENV.fetch('SIMP_BUILD_iso_name', false)
|
104
|
+
iso_name_tag = ENV.fetch('SIMP_BUILD_iso_tag', false)
|
105
|
+
tarball = false
|
106
|
+
|
107
|
+
iso_status = {}
|
108
|
+
|
109
|
+
@os_build_metadata['distributions'].keys.sort.each do |distro|
|
110
|
+
@os_build_metadata['distributions'][distro].keys.sort.each do |version|
|
111
|
+
unless @os_build_metadata['distributions'][distro][version]['build']
|
112
|
+
if verbose
|
113
|
+
$stderr.puts("Skipping build for #{distro} #{version}")
|
114
|
+
end
|
115
|
+
|
116
|
+
next
|
117
|
+
end
|
118
|
+
|
119
|
+
@os_build_metadata['distributions'][distro][version]['arch'].sort.each do |arch|
|
120
|
+
begin
|
121
|
+
distro_build_dir = File.join(@distro_build_dir, distro, version, arch)
|
122
|
+
|
123
|
+
# For subtask mangling
|
124
|
+
$simp6_build_dir = distro_build_dir
|
125
|
+
$simp6_build_metadata = {
|
126
|
+
:distro => distro,
|
127
|
+
:version => version,
|
128
|
+
:arch => arch
|
129
|
+
}
|
130
|
+
|
131
|
+
output_dir = args[:output_dir].sub(/^$/, File.expand_path( 'SIMP_ISO', distro_build_dir ))
|
132
|
+
|
133
|
+
staging_dir = ENV.fetch('SIMP_BUILD_staging_dir', File.expand_path( 'SIMP_ISO_STAGING', distro_build_dir ))
|
134
|
+
|
135
|
+
yaml_file = File.expand_path('release_mappings.yaml', distro_build_dir)
|
136
|
+
|
137
|
+
tar_file = File.join(distro_build_dir, 'DVD_Overlay', "SIMP-#{@simp_version}-#{distro}-#{version}-#{arch}.tar.gz")
|
138
|
+
|
139
|
+
if File.exist?(tar_file)
|
140
|
+
if prompt
|
141
|
+
valid_entry = false
|
142
|
+
while !valid_entry do
|
143
|
+
puts("Existing tar file found at #{tar_file}")
|
144
|
+
print("Do you want to overwrite it? (y|N): ")
|
145
|
+
|
146
|
+
resp = $stdin.gets.chomp
|
147
|
+
|
148
|
+
if resp.empty? || (resp =~ /^(n|N)/)
|
149
|
+
tarball = tar_file
|
150
|
+
valid_entry = true
|
151
|
+
elsif resp =~ /^(y|Y)/
|
152
|
+
tarball = false
|
153
|
+
valid_entry = true
|
154
|
+
|
155
|
+
if verbose
|
156
|
+
$stderr.puts("Notice: Overwriting existing tarball at #{tar_file}")
|
157
|
+
$stderr.puts("Notice: PRESS CTRL-C WITHIN 5 SECONDS TO CANCEL")
|
158
|
+
end
|
159
|
+
|
160
|
+
sleep(5)
|
161
|
+
else
|
162
|
+
puts("Invalid input: '#{resp}', please try again")
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
if tarball
|
169
|
+
do_docs = false
|
170
|
+
do_checkout = false
|
171
|
+
do_bundle = false
|
172
|
+
end
|
173
|
+
|
174
|
+
@dirty_repos = nil
|
175
|
+
@simp_output_iso = nil
|
176
|
+
|
177
|
+
# Build environment sanity checks
|
178
|
+
# --------------------
|
179
|
+
if do_rm_staging && !do_unpack
|
180
|
+
fail SIMPBuildException, "ERROR: Mixing `SIMP_BUILD_rm_staging_dir=yes` and `SIMP_BUILD_unpack=no` is silly."
|
181
|
+
end
|
182
|
+
|
183
|
+
if File.exists?(output_dir) && !File.directory?(output_dir)
|
184
|
+
fail SIMPBuildException, "ERROR: ISO output dir exists but is not a directory:\n\n" +
|
185
|
+
" '#{output_dir}'\n\n"
|
186
|
+
end
|
187
|
+
|
188
|
+
# Look up ISOs against known build assets
|
189
|
+
# --------------------
|
190
|
+
target_data = get_target_data(target_release, iso_paths, yaml_file, do_checksum, verbose )
|
191
|
+
|
192
|
+
simp6_mock_cfg = File.join($simp6_build_dir, 'mock.cfg')
|
193
|
+
|
194
|
+
if File.exist?(simp6_mock_cfg)
|
195
|
+
target_data['mock'] = simp6_mock_cfg
|
196
|
+
|
197
|
+
if verbose
|
198
|
+
$stderr.puts("Notice: Using mock config at #{simp6_mock_cfg}")
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
# check out subrepos
|
203
|
+
# --------------------
|
204
|
+
if do_checkout && !tarball
|
205
|
+
puts
|
206
|
+
puts '='*80
|
207
|
+
puts "## Checking out subrepositories"
|
208
|
+
puts
|
209
|
+
puts " (skip with `SIMP_BUILD_checkout=no`)"
|
210
|
+
puts '='*80
|
211
|
+
Dir.chdir repo_root_dir
|
212
|
+
Rake::Task['deps:status'].invoke
|
213
|
+
if @dirty_repos && !ENV['SIMP_BUILD_force_dirty'] == 'yes'
|
214
|
+
raise SIMPBuildException, "ERROR: Dirty repos detected! I refuse to destroy uncommitted work."
|
215
|
+
else
|
216
|
+
puts
|
217
|
+
puts '-'*80
|
218
|
+
puts "#### Checking out subrepositories using method '#{method}'"
|
219
|
+
puts '-'*80
|
220
|
+
Rake::Task['deps:checkout'].invoke(method)
|
221
|
+
end
|
222
|
+
|
223
|
+
if do_bundle
|
224
|
+
puts
|
225
|
+
puts '-'*80
|
226
|
+
puts "#### Running bundler in all repos"
|
227
|
+
puts ' (Disable with `SIMP_BUILD_bundle=no`)'
|
228
|
+
puts '-'*80
|
229
|
+
Rake::Task['build:bundle'].invoke
|
230
|
+
else
|
231
|
+
puts
|
232
|
+
puts '-'*80
|
233
|
+
puts "#### SKIPPED: bundler in all repos"
|
234
|
+
puts ' (Force with `SIMP_BUILD_bundle=yes`)'
|
235
|
+
puts '-'*80
|
236
|
+
end
|
237
|
+
else
|
238
|
+
puts
|
239
|
+
puts '='*80
|
240
|
+
puts "#### skipping sub repository checkout (because `SIMP_BUILD_checkout=no`)"
|
241
|
+
puts
|
242
|
+
end
|
243
|
+
|
244
|
+
# build tarball
|
245
|
+
# --------------------
|
246
|
+
if tarball
|
247
|
+
puts
|
248
|
+
puts '-'*80
|
249
|
+
puts "#### Using pre-existing tarball:"
|
250
|
+
puts " '#{tarball}'"
|
251
|
+
puts
|
252
|
+
puts '-'*80
|
253
|
+
|
254
|
+
else
|
255
|
+
puts
|
256
|
+
puts '='*80
|
257
|
+
puts "#### Running tar:build"
|
258
|
+
puts '='*80
|
259
|
+
|
260
|
+
# Horrible state passing magic vars
|
261
|
+
$tarball_tgt = File.join(distro_build_dir, 'DVD_Overlay', "SIMP-#{@simp_version}-#{distro}-#{version}-#{arch}.tar.gz")
|
262
|
+
|
263
|
+
Rake::Task['tar:build'].invoke(target_data['mock'],key_name,do_docs)
|
264
|
+
|
265
|
+
tarball = $tarball_tgt
|
266
|
+
end
|
267
|
+
|
268
|
+
# yum sync
|
269
|
+
# --------------------
|
270
|
+
puts
|
271
|
+
puts '-'*80
|
272
|
+
puts "#### rake build:yum:sync[#{target_data['flavor']},#{target_data['os_version']}]"
|
273
|
+
puts '-'*80
|
274
|
+
Rake::Task['build:yum:sync'].invoke(target_data['flavor'],target_data['os_version'])
|
275
|
+
|
276
|
+
# If you have previously downloaded packages from yum, you may need to run
|
277
|
+
# $ rake build:yum:clean_cache
|
278
|
+
|
279
|
+
# Optionally, you may drop in custom packages you wish to have available during an install into build/yum_data/SIMP<simp_version>_<CentOS or RHEL><os_version>_<architecture>/packages
|
280
|
+
# TODO: ENV var for optional packages
|
281
|
+
|
282
|
+
prepare_staging_dir( staging_dir, do_rm_staging, repo_root_dir, verbose )
|
283
|
+
Dir.chdir staging_dir
|
284
|
+
|
285
|
+
#
|
286
|
+
# --------------------
|
287
|
+
if do_unpack
|
288
|
+
puts
|
289
|
+
puts '='*80
|
290
|
+
puts "#### unpack ISOs into staging directory"
|
291
|
+
puts " staging area: '#{staging_dir}'"
|
292
|
+
puts
|
293
|
+
puts " (skip with `SIMP_BUILD_unpack=no`)"
|
294
|
+
puts '='*80
|
295
|
+
puts
|
296
|
+
|
297
|
+
Dir.glob( File.join(staging_dir, "#{target_data['flavor']}*/") ).each do |f|
|
298
|
+
FileUtils.rm_f( f , :verbose => verbose )
|
299
|
+
end
|
300
|
+
|
301
|
+
target_data['isos'].each do |iso|
|
302
|
+
puts "---- rake unpack[#{iso},#{do_merge},#{Dir.pwd},isoinfo,#{target_data['os_version']}]"
|
303
|
+
Rake::Task['unpack'].reenable
|
304
|
+
Rake::Task['unpack'].invoke(iso,do_merge,Dir.pwd,'isoinfo',target_data['os_version'])
|
305
|
+
end
|
306
|
+
else
|
307
|
+
puts
|
308
|
+
puts '='*80
|
309
|
+
puts "#### skipping ISOs unpack (because `SIMP_BUILD_unpack=no`)"
|
310
|
+
puts
|
311
|
+
end
|
312
|
+
|
313
|
+
Dir.chdir repo_root_dir
|
314
|
+
|
315
|
+
puts
|
316
|
+
puts '='*80
|
317
|
+
puts "#### iso:build[#{tarball}]"
|
318
|
+
puts '='*80
|
319
|
+
puts
|
320
|
+
|
321
|
+
ENV['SIMP_ISO_verbose'] = 'yes' if verbose
|
322
|
+
ENV['SIMP_PKG_verbose'] = 'yes' if verbose
|
323
|
+
Rake::Task['iso:build'].invoke(tarball,staging_dir,do_prune)
|
324
|
+
|
325
|
+
_isos = Dir[ File.join(Dir.pwd,'SIMP-*.iso') ]
|
326
|
+
if _isos.size == 0
|
327
|
+
fail "ERROR: No SIMP ISOs found in '#{Dir.pwd}'"
|
328
|
+
elsif _isos.size > 1
|
329
|
+
warn "WARNING: More than one SIMP ISO found in '#{Dir.pwd}'"
|
330
|
+
_isos.each{ |i| warn i }
|
331
|
+
end
|
332
|
+
|
333
|
+
# NOTE: It is possible at this point (given the right
|
334
|
+
# `SIMP_BUILD_xxx=no` flags) that iso:build will not have set
|
335
|
+
# `@simp_output_iso`. In that case, look at the ISOs in the staging
|
336
|
+
# dir (there should only be one) and take our best guess.
|
337
|
+
if @simp_output_iso.nil?
|
338
|
+
@simp_output_iso = File.basename(_isos.first)
|
339
|
+
end
|
340
|
+
|
341
|
+
output_file = full_iso_name ? full_iso_name : @simp_output_iso
|
342
|
+
if iso_name_tag
|
343
|
+
output_file = output_file.sub(/\.iso$/i, "__#{iso_name_tag}.iso")
|
344
|
+
end
|
345
|
+
|
346
|
+
puts
|
347
|
+
puts '='*80
|
348
|
+
puts "#### Moving '#{@simp_output_iso}' into:"
|
349
|
+
puts " '#{output_dir}/#{output_file}'"
|
350
|
+
puts '='*80
|
351
|
+
puts
|
352
|
+
|
353
|
+
iso = File.join(output_dir,output_file)
|
354
|
+
FileUtils.mkdir_p File.dirname(iso), :verbose => verbose
|
355
|
+
FileUtils.mv(@simp_output_iso, iso, :verbose => verbose)
|
356
|
+
|
357
|
+
# write vars.json for packer build
|
358
|
+
# --------------------------------------
|
359
|
+
vars_file = iso.sub(/.iso$/, '.json')
|
360
|
+
puts
|
361
|
+
puts '='*80
|
362
|
+
puts "#### Checksumming #{iso}..."
|
363
|
+
puts '='*80
|
364
|
+
puts
|
365
|
+
|
366
|
+
sum = `sha256sum "#{iso}"`.split(/ +/).first
|
367
|
+
|
368
|
+
puts
|
369
|
+
puts '='*80
|
370
|
+
puts "#### Writing packer data to:"
|
371
|
+
puts " '#{vars_file}'"
|
372
|
+
puts '='*80
|
373
|
+
puts
|
374
|
+
box_distro_release = "SIMP-#{target_release}-#{File.basename(target_data['isos'].first).sub(/\.iso$/,'').sub(/-x86_64/,'')}"
|
375
|
+
packer_vars = {
|
376
|
+
'box_simp_release' => target_release,
|
377
|
+
'box_distro_release' => box_distro_release,
|
378
|
+
'iso_url' => iso,
|
379
|
+
'iso_checksum' => sum,
|
380
|
+
'iso_checksum_type' => 'sha256',
|
381
|
+
'new_password' => 'suP3rP@ssw0r!suP3rP@ssw0r!suP3rP@ssw0r!',
|
382
|
+
'output_directory' => './OUTPUT',
|
383
|
+
}
|
384
|
+
File.open(vars_file, 'w'){|f| f.puts packer_vars.to_json }
|
385
|
+
|
386
|
+
puts
|
387
|
+
puts '='*80
|
388
|
+
puts "#### FINIS!"
|
389
|
+
puts '='*80
|
390
|
+
puts
|
391
|
+
|
392
|
+
iso_status[[distro, version, arch].join(' ')] = {
|
393
|
+
'success' => true
|
394
|
+
}
|
395
|
+
|
396
|
+
rescue => e
|
397
|
+
iso_status[[distro, version, arch].join(' ')] = {
|
398
|
+
'success' => false,
|
399
|
+
'error' => e.to_s,
|
400
|
+
'backtrace' => e.backtrace
|
401
|
+
}
|
402
|
+
end
|
403
|
+
end
|
404
|
+
end
|
405
|
+
end
|
111
406
|
|
407
|
+
successful_isos = []
|
408
|
+
failed_isos = []
|
112
409
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
410
|
+
iso_status.keys.each do |iso|
|
411
|
+
if iso_status[iso]['success']
|
412
|
+
successful_isos << iso
|
413
|
+
else
|
414
|
+
failed_isos << iso
|
415
|
+
end
|
416
|
+
end
|
417
|
+
|
418
|
+
unless successful_isos.empty?
|
419
|
+
puts '='*80
|
420
|
+
puts("Successful ISOs:")
|
421
|
+
puts(%( * #{successful_isos.join("\n * ")}))
|
422
|
+
end
|
118
423
|
|
119
|
-
|
120
|
-
|
121
|
-
|
424
|
+
unless failed_isos.empty?
|
425
|
+
puts '='*80
|
426
|
+
puts("Failed ISOs:")
|
427
|
+
failed_isos.each do |iso|
|
428
|
+
puts(%( * #{iso}))
|
429
|
+
puts(%( * Error: #{iso_status[iso]['error']}))
|
430
|
+
|
431
|
+
if verbose
|
432
|
+
puts(%( * Backtrace: #{iso_status[iso]['backtrace'].join("\n")}))
|
433
|
+
else
|
434
|
+
puts(%( * Context: #{iso_status[iso]['backtrace'].first}))
|
435
|
+
end
|
436
|
+
end
|
437
|
+
end
|
122
438
|
end
|
439
|
+
else
|
440
|
+
# Legacy
|
441
|
+
desc <<-EOM
|
442
|
+
Automatically detect and build a SIMP ISO for a target SIMP release.
|
443
|
+
|
444
|
+
This task runs all other build tasks
|
445
|
+
|
446
|
+
Arguments:
|
447
|
+
* :release => SIMP release to build (e.g., '5.1.X')
|
448
|
+
- :iso_paths => path to source ISO(s) and/or directories [Default: '.']
|
449
|
+
NOTE: colon-delimited list
|
450
|
+
- :tarball => SIMP build tarball file; if given, skips tar build. [Default: 'false']
|
451
|
+
- :output_dir => path to write SIMP ISO. [Default: './SIMP_ISO']
|
452
|
+
- :do_checksum => Use sha256sum checksum to compare each ISO. [Default: 'false']
|
453
|
+
- :key_name => Key name to sign packages [Default: 'dev']
|
454
|
+
|
455
|
+
ENV vars:
|
456
|
+
- SIMP_BUILD_staging_dir => Path to stage big build assets
|
457
|
+
[Default: './SIMP_ISO_STAGING']
|
458
|
+
- SIMP_BUILD_rm_staging_dir => 'yes' forcibly removes the staging dir before starting
|
459
|
+
- SIMP_BUILD_force_dirty => 'yes' tries to checks out subrepos even if dirty
|
460
|
+
- SIMP_BUILD_docs => 'yes' builds & includes documentation
|
461
|
+
- SIMP_BUILD_checkout => 'no' will skip the git repo checkouts
|
462
|
+
- SIMP_BUILD_bundle => 'no' skips running bundle in each subrepo
|
463
|
+
- SIMP_BUILD_unpack => 'no' skips the unpack section
|
464
|
+
- SIMP_BUILD_unpack_merge => 'no' prevents auto-merging the unpacked DVD
|
465
|
+
- SIMP_BUILD_prune => 'no' passes :prune=>false to iso:build
|
466
|
+
- SIMP_BUILD_iso_name => Renames the output ISO filename [Default: false]
|
467
|
+
- SIMP_BUILD_iso_tag => Appended to the output ISO's filename [Default: false]
|
468
|
+
- SIMP_BUILD_verbose => 'yes' enables verbose reporting. [Default: 'no']
|
469
|
+
- SIMP_BUILD_packer_vars => Write a packer vars.json to go with this ISO [Default: 'yes']
|
470
|
+
|
471
|
+
Notes:
|
472
|
+
- To skip `tar:build` (including `pkg:build`), use the `tarball` argument
|
473
|
+
EOM
|
474
|
+
|
475
|
+
task :auto, [:release,
|
476
|
+
:iso_paths,
|
477
|
+
:tarball,
|
478
|
+
:output_dir,
|
479
|
+
:do_checksum,
|
480
|
+
:key_name,
|
481
|
+
:packer_vars,
|
482
|
+
] do |t, args|
|
483
|
+
# set up data
|
484
|
+
# --------------------------------------------------------------------------
|
485
|
+
|
486
|
+
args.with_defaults(
|
487
|
+
:release => [@simp_version.split('.').first, 'X'].join('.'),
|
488
|
+
:iso_paths => Dir.pwd,
|
489
|
+
:tarball => 'false',
|
490
|
+
:output_dir => '',
|
491
|
+
:do_checksum => 'false',
|
492
|
+
:key_name => 'dev',
|
493
|
+
)
|
494
|
+
|
495
|
+
# locals
|
496
|
+
target_release = args[:release]
|
497
|
+
iso_paths = File.expand_path(args[:iso_paths])
|
498
|
+
tarball = (args.tarball =~ /^(false|)$/ ? false : args.tarball)
|
499
|
+
output_dir = args[:output_dir].sub(/^$/, File.expand_path( 'SIMP_ISO', Dir.pwd ))
|
500
|
+
do_checksum = (args.do_checksum =~ /^$/ ? 'false' : args.do_checksum)
|
501
|
+
key_name = args[:key_name]
|
502
|
+
staging_dir = ENV.fetch('SIMP_BUILD_staging_dir',
|
503
|
+
File.expand_path( 'SIMP_ISO_STAGING', Dir.pwd ))
|
504
|
+
do_packer_vars = ENV.fetch('SIMP_BUILD_packer_vars', 'yes') == 'yes'
|
505
|
+
verbose = ENV.fetch('SIMP_BUILD_verbose', 'no') == 'yes'
|
506
|
+
|
507
|
+
yaml_file = File.expand_path('build/release_mappings.yaml', @base_dir)
|
508
|
+
pwd = Dir.pwd
|
509
|
+
repo_root_dir = File.expand_path( @base_dir )
|
510
|
+
method = ENV.fetch('SIMP_BUILD_puppetfile','tracking')
|
511
|
+
do_rm_staging = ENV['SIMP_BUILD_rm_staging_dir'] == 'yes'
|
512
|
+
do_docs = ENV['SIMP_BUILD_docs'] == 'yes' ? 'true' : 'false'
|
513
|
+
do_merge = ENV['SIMP_BUILD_unpack_merge'] != 'no'
|
514
|
+
do_prune = ENV['SIMP_BUILD_prune'] != 'no' ? 'true' : 'false'
|
515
|
+
do_checkout = ENV['SIMP_BUILD_checkout'] != 'no'
|
516
|
+
do_bundle = ENV['SIMP_BUILD_bundle'] == 'yes' ? true : false
|
517
|
+
do_unpack = ENV['SIMP_BUILD_unpack'] != 'no'
|
518
|
+
full_iso_name = ENV.fetch('SIMP_BUILD_iso_name', false)
|
519
|
+
iso_name_tag = ENV.fetch('SIMP_BUILD_iso_tag', false)
|
520
|
+
|
521
|
+
# Skip a bunch of unnecessary stuff if we're passed a tarball
|
522
|
+
if tarball
|
523
|
+
do_docs = false
|
524
|
+
do_checkout = false
|
525
|
+
do_bundle = false
|
526
|
+
end
|
527
|
+
|
528
|
+
@dirty_repos = nil
|
529
|
+
@simp_output_iso = nil
|
123
530
|
|
124
531
|
|
125
|
-
|
126
|
-
|
127
|
-
|
532
|
+
# Build environment sanity checks
|
533
|
+
# --------------------
|
534
|
+
if do_rm_staging && !do_unpack
|
535
|
+
fail SIMPBuildException, "ERROR: Mixing `SIMP_BUILD_rm_staging_dir=yes` and `SIMP_BUILD_unpack=no` is silly."
|
536
|
+
end
|
128
537
|
|
129
|
-
|
130
|
-
|
538
|
+
if File.exists?(output_dir) && !File.directory?(output_dir)
|
539
|
+
fail SIMPBuildException, "ERROR: ISO output dir exists but is not a directory:\n\n" +
|
540
|
+
" '#{output_dir}'\n\n"
|
541
|
+
end
|
131
542
|
|
132
|
-
# IDEA: check for prequisite build tools
|
133
543
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
if
|
146
|
-
|
544
|
+
# Look up ISOs against known build assets
|
545
|
+
# --------------------
|
546
|
+
target_data = get_target_data(target_release, iso_paths, yaml_file, do_checksum, verbose )
|
547
|
+
|
548
|
+
# Quick map to match the filenames in the build structures
|
549
|
+
target_data['flavor'] = 'RHEL' if target_data['flavor'] == 'RedHat'
|
550
|
+
|
551
|
+
# IDEA: check for prequisite build tools
|
552
|
+
|
553
|
+
# check out subrepos
|
554
|
+
# --------------------
|
555
|
+
if do_checkout && !tarball
|
556
|
+
puts
|
557
|
+
puts '='*80
|
558
|
+
puts "## Checking out subrepositories"
|
559
|
+
puts
|
560
|
+
puts " (skip with `SIMP_BUILD_checkout=no`)"
|
561
|
+
puts '='*80
|
562
|
+
Dir.chdir repo_root_dir
|
563
|
+
Rake::Task['deps:status'].invoke
|
564
|
+
if @dirty_repos && !ENV['SIMP_BUILD_force_dirty'] == 'yes'
|
565
|
+
raise SIMPBuildException, "ERROR: Dirty repos detected! I refuse to destroy uncommitted work."
|
566
|
+
else
|
567
|
+
puts
|
568
|
+
puts '-'*80
|
569
|
+
puts "#### Checking out subrepositories using method '#{method}'"
|
570
|
+
puts '-'*80
|
571
|
+
Rake::Task['deps:checkout'].invoke(method)
|
572
|
+
end
|
573
|
+
|
574
|
+
if do_bundle
|
575
|
+
puts
|
576
|
+
puts '-'*80
|
577
|
+
puts "#### Running bundler in all repos"
|
578
|
+
puts ' (Disable with `SIMP_BUILD_bundle=no`)'
|
579
|
+
puts '-'*80
|
580
|
+
Rake::Task['build:bundle'].invoke
|
581
|
+
else
|
582
|
+
puts
|
583
|
+
puts '-'*80
|
584
|
+
puts "#### SKIPPED: bundler in all repos"
|
585
|
+
puts ' (Force with `SIMP_BUILD_bundle=yes`)'
|
586
|
+
puts '-'*80
|
587
|
+
end
|
147
588
|
else
|
148
589
|
puts
|
149
|
-
puts '
|
150
|
-
puts "####
|
151
|
-
puts
|
152
|
-
Rake::Task['deps:checkout'].invoke(method)
|
590
|
+
puts '='*80
|
591
|
+
puts "#### skipping sub repository checkout (because `SIMP_BUILD_checkout=no`)"
|
592
|
+
puts
|
153
593
|
end
|
154
594
|
|
155
|
-
|
595
|
+
# build tarball
|
596
|
+
# --------------------
|
597
|
+
if tarball
|
156
598
|
puts
|
157
599
|
puts '-'*80
|
158
|
-
puts "####
|
159
|
-
puts '
|
600
|
+
puts "#### Using pre-existing tarball:"
|
601
|
+
puts " '#{tarball}'"
|
602
|
+
puts
|
160
603
|
puts '-'*80
|
161
|
-
|
604
|
+
|
162
605
|
else
|
163
606
|
puts
|
164
|
-
puts '
|
165
|
-
puts "####
|
166
|
-
puts '
|
167
|
-
|
607
|
+
puts '='*80
|
608
|
+
puts "#### Running tar:build"
|
609
|
+
puts '='*80
|
610
|
+
$simp_tarballs = {}
|
611
|
+
Rake::Task['tar:build'].invoke(target_data['mock'],key_name,do_docs)
|
612
|
+
tarball = $simp_tarballs.fetch(target_data['flavor'])
|
168
613
|
end
|
169
|
-
else
|
170
|
-
puts
|
171
|
-
puts '='*80
|
172
|
-
puts "#### skipping sub repository checkout (because `SIMP_BUILD_checkout=no`)"
|
173
|
-
puts
|
174
|
-
end
|
175
614
|
|
176
|
-
|
177
|
-
|
178
|
-
if tarball
|
615
|
+
# yum sync
|
616
|
+
# --------------------
|
179
617
|
puts
|
180
618
|
puts '-'*80
|
181
|
-
puts "####
|
182
|
-
puts " '#{tarball}'"
|
183
|
-
puts
|
619
|
+
puts "#### rake build:yum:sync[#{target_data['flavor']},#{target_data['os_version']}]"
|
184
620
|
puts '-'*80
|
621
|
+
Rake::Task['build:yum:sync'].invoke(target_data['flavor'],target_data['os_version'])
|
185
622
|
|
186
|
-
|
187
|
-
|
188
|
-
puts '='*80
|
189
|
-
puts "#### Running tar:build"
|
190
|
-
puts '='*80
|
191
|
-
$simp_tarballs = {}
|
192
|
-
Rake::Task['tar:build'].invoke(target_data['mock'],key_name,do_docs)
|
193
|
-
tarball = $simp_tarballs.fetch(target_data['flavor'])
|
194
|
-
end
|
623
|
+
# If you have previously downloaded packages from yum, you may need to run
|
624
|
+
# $ rake build:yum:clean_cache
|
195
625
|
|
196
|
-
|
197
|
-
|
198
|
-
puts
|
199
|
-
puts '-'*80
|
200
|
-
puts "#### rake build:yum:sync[#{target_data['flavor']},#{target_data['os_version']}]"
|
201
|
-
puts '-'*80
|
202
|
-
Rake::Task['build:yum:sync'].invoke(target_data['flavor'],target_data['os_version'])
|
626
|
+
# Optionally, you may drop in custom packages you wish to have available during an install into build/yum_data/SIMP<simp_version>_<CentOS or RHEL><os_version>_<architecture>/packages
|
627
|
+
# TODO: ENV var for optional packages
|
203
628
|
|
204
|
-
|
205
|
-
|
629
|
+
prepare_staging_dir( staging_dir, do_rm_staging, repo_root_dir, verbose )
|
630
|
+
Dir.chdir staging_dir
|
206
631
|
|
207
|
-
|
208
|
-
|
632
|
+
#
|
633
|
+
# --------------------
|
634
|
+
if do_unpack
|
635
|
+
puts
|
636
|
+
puts '='*80
|
637
|
+
puts "#### unpack ISOs into staging directory"
|
638
|
+
puts " staging area: '#{staging_dir}'"
|
639
|
+
puts
|
640
|
+
puts " (skip with `SIMP_BUILD_unpack=no`)"
|
641
|
+
puts '='*80
|
642
|
+
puts
|
209
643
|
|
210
|
-
|
211
|
-
|
644
|
+
Dir.glob( File.join(staging_dir, "#{target_data['flavor']}*/") ).each do |f|
|
645
|
+
FileUtils.rm_f( f , :verbose => verbose )
|
646
|
+
end
|
647
|
+
|
648
|
+
target_data['isos'].each do |iso|
|
649
|
+
puts "---- rake unpack[#{iso},#{do_merge},#{Dir.pwd},isoinfo,#{target_data['os_version']}]"
|
650
|
+
Rake::Task['unpack'].reenable
|
651
|
+
Rake::Task['unpack'].invoke(iso,do_merge,Dir.pwd,'isoinfo',target_data['os_version'])
|
652
|
+
end
|
653
|
+
else
|
654
|
+
puts
|
655
|
+
puts '='*80
|
656
|
+
puts "#### skipping ISOs unpack (because `SIMP_BUILD_unpack=no`)"
|
657
|
+
puts
|
658
|
+
end
|
659
|
+
|
660
|
+
Dir.chdir repo_root_dir
|
212
661
|
|
213
|
-
#
|
214
|
-
# --------------------
|
215
|
-
if do_unpack
|
216
662
|
puts
|
217
663
|
puts '='*80
|
218
|
-
puts "####
|
219
|
-
puts " staging area: '#{staging_dir}'"
|
220
|
-
puts
|
221
|
-
puts " (skip with `SIMP_BUILD_unpack=no`)"
|
664
|
+
puts "#### iso:build[#{tarball}]"
|
222
665
|
puts '='*80
|
223
666
|
puts
|
224
667
|
|
225
|
-
|
226
|
-
|
668
|
+
ENV['SIMP_ISO_verbose'] = 'yes' if verbose
|
669
|
+
ENV['SIMP_PKG_verbose'] = 'yes' if verbose
|
670
|
+
Rake::Task['iso:build'].invoke(tarball,staging_dir,do_prune)
|
671
|
+
|
672
|
+
|
673
|
+
_isos = Dir[ File.join(Dir.pwd,'SIMP-*.iso') ]
|
674
|
+
if _isos.size == 0
|
675
|
+
fail "ERROR: No SIMP ISOs found in '#{Dir.pwd}'"
|
676
|
+
elsif _isos.size > 1
|
677
|
+
warn "WARNING: More than one SIMP ISO found in '#{Dir.pwd}'"
|
678
|
+
_isos.each{ |i| warn i }
|
679
|
+
end
|
680
|
+
|
681
|
+
# NOTE: It is possible at this point (given the right
|
682
|
+
# `SIMP_BUILD_xxx=no` flags) that iso:build will not have set
|
683
|
+
# `@simp_output_iso`. In that case, look at the ISOs in the staging
|
684
|
+
# dir (there should only be one) and take our best guess.
|
685
|
+
if @simp_output_iso.nil?
|
686
|
+
@simp_output_iso = File.basename(_isos.first)
|
227
687
|
end
|
228
688
|
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
Rake::Task['unpack'].invoke(iso,do_merge,Dir.pwd,'isoinfo',target_data['os_version'])
|
689
|
+
output_file = full_iso_name ? full_iso_name : @simp_output_iso
|
690
|
+
if iso_name_tag
|
691
|
+
output_file = output_file.sub(/\.iso$/i, "__#{iso_name_tag}.iso")
|
233
692
|
end
|
234
|
-
|
693
|
+
|
235
694
|
puts
|
236
695
|
puts '='*80
|
237
|
-
puts "####
|
696
|
+
puts "#### Moving '#{@simp_output_iso}' into:"
|
697
|
+
puts " '#{output_dir}/#{output_file}'"
|
698
|
+
puts '='*80
|
238
699
|
puts
|
239
|
-
end
|
240
|
-
|
241
|
-
Dir.chdir repo_root_dir
|
242
|
-
|
243
|
-
puts
|
244
|
-
puts '='*80
|
245
|
-
puts "#### iso:build[#{tarball}]"
|
246
|
-
puts '='*80
|
247
|
-
puts
|
248
700
|
|
249
|
-
|
250
|
-
|
251
|
-
|
701
|
+
iso = File.join(output_dir,output_file)
|
702
|
+
FileUtils.mkdir_p File.dirname(iso), :verbose => verbose
|
703
|
+
FileUtils.mv(@simp_output_iso, iso, :verbose => verbose)
|
252
704
|
|
705
|
+
# write vars.json for packer build
|
706
|
+
# --------------------------------------
|
707
|
+
vars_file = iso.sub(/.iso$/, '.json')
|
708
|
+
puts
|
709
|
+
puts '='*80
|
710
|
+
puts "#### Checksumming #{iso}..."
|
711
|
+
puts '='*80
|
712
|
+
puts
|
253
713
|
|
254
|
-
|
255
|
-
if _isos.size == 0
|
256
|
-
fail "ERROR: No SIMP ISOs found in '#{Dir.pwd}'"
|
257
|
-
elsif _isos.size > 1
|
258
|
-
warn "WARNING: More than one SIMP ISO found in '#{Dir.pwd}'"
|
259
|
-
_isos.each{ |i| warn i }
|
260
|
-
end
|
714
|
+
sum = `sha256sum "#{iso}"`.split(/ +/).first
|
261
715
|
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
716
|
+
puts
|
717
|
+
puts '='*80
|
718
|
+
puts "#### Writing packer data to:"
|
719
|
+
puts " '#{vars_file}'"
|
720
|
+
puts '='*80
|
721
|
+
puts
|
722
|
+
box_distro_release = "SIMP-#{target_release}-#{File.basename(target_data['isos'].first).sub(/\.iso$/,'').sub(/-x86_64/,'')}"
|
723
|
+
packer_vars = {
|
724
|
+
'box_simp_release' => target_release,
|
725
|
+
'box_distro_release' => box_distro_release,
|
726
|
+
'iso_url' => iso,
|
727
|
+
'iso_checksum' => sum,
|
728
|
+
'iso_checksum_type' => 'sha256',
|
729
|
+
'new_password' => 'suP3rP@ssw0r!suP3rP@ssw0r!suP3rP@ssw0r!',
|
730
|
+
'output_directory' => './OUTPUT',
|
731
|
+
}
|
732
|
+
File.open(vars_file, 'w'){|f| f.puts packer_vars.to_json }
|
269
733
|
|
270
|
-
|
271
|
-
|
272
|
-
|
734
|
+
puts
|
735
|
+
puts '='*80
|
736
|
+
puts "#### FINIS!"
|
737
|
+
puts '='*80
|
738
|
+
puts
|
273
739
|
end
|
274
|
-
|
275
|
-
puts
|
276
|
-
puts '='*80
|
277
|
-
puts "#### Moving '#{@simp_output_iso}' into:"
|
278
|
-
puts " '#{output_dir}/#{output_file}'"
|
279
|
-
puts '='*80
|
280
|
-
puts
|
281
|
-
|
282
|
-
iso = File.join(output_dir,output_file)
|
283
|
-
FileUtils.mkdir_p File.dirname(iso), :verbose => verbose
|
284
|
-
FileUtils.mv(@simp_output_iso, iso, :verbose => verbose)
|
285
|
-
|
286
|
-
# write vars.json for packer build
|
287
|
-
# --------------------------------------
|
288
|
-
vars_file = iso.sub(/.iso$/, '.json')
|
289
|
-
puts
|
290
|
-
puts '='*80
|
291
|
-
puts "#### Checksumming #{iso}..."
|
292
|
-
puts '='*80
|
293
|
-
puts
|
294
|
-
|
295
|
-
sum = `sha256sum "#{iso}"`.split(/ +/).first
|
296
|
-
|
297
|
-
puts
|
298
|
-
puts '='*80
|
299
|
-
puts "#### Writing packer data to:"
|
300
|
-
puts " '#{vars_file}'"
|
301
|
-
puts '='*80
|
302
|
-
puts
|
303
|
-
box_distro_release = "SIMP-#{target_release}-#{File.basename(target_data['isos'].first).sub(/\.iso$/,'').sub(/-x86_64/,'')}"
|
304
|
-
packer_vars = {
|
305
|
-
'box_simp_release' => target_release,
|
306
|
-
'box_distro_release' => box_distro_release,
|
307
|
-
'iso_url' => iso,
|
308
|
-
'iso_checksum' => sum,
|
309
|
-
'iso_checksum_type' => 'sha256',
|
310
|
-
'new_password' => 'suP3rP@ssw0r!suP3rP@ssw0r!suP3rP@ssw0r!',
|
311
|
-
'output_directory' => './OUTPUT',
|
312
|
-
}
|
313
|
-
File.open(vars_file, 'w'){|f| f.puts packer_vars.to_json }
|
314
|
-
|
315
|
-
puts
|
316
|
-
puts '='*80
|
317
|
-
puts "#### FINIS!"
|
318
|
-
puts '='*80
|
319
|
-
puts
|
320
740
|
end
|
321
|
-
|
322
741
|
end
|
323
742
|
|
324
743
|
def get_target_data(target_release, iso_paths, yaml_file, do_checksum, verbose )
|
@@ -356,6 +775,7 @@ module Simp::Rake::Build
|
|
356
775
|
" '#{staging_dir}'\n\n" +
|
357
776
|
" Use SIMP_BUILD_staging_dir='path/to/staging/dir'\n\n"
|
358
777
|
end
|
778
|
+
|
359
779
|
if do_rm_staging
|
360
780
|
puts
|
361
781
|
puts '-'*80
|