simp-rake-helpers 3.0.1 → 3.0.2
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 +5 -0
- data/lib/simp/rake/build/auto.rb +1 -1
- data/lib/simp/rake/build/build.rb +15 -15
- data/lib/simp/rake/build/deps.rb +55 -25
- data/lib/simp/rake/build/pkg.rb +159 -92
- data/lib/simp/rake/helpers/assets/Gemfile +11 -0
- data/lib/simp/rake/helpers/{rpm_spec/assets → assets/rpm_spec}/simp4.spec +0 -0
- data/lib/simp/rake/helpers/{rpm_spec/assets → assets/rpm_spec}/simp5.spec +0 -0
- data/lib/simp/rake/helpers/{rpm_spec/assets/simpdefault.spec → assets/rpm_spec/simp6.spec} +0 -0
- data/lib/simp/rake/helpers/assets/rpm_spec/simpdefault.spec +356 -0
- data/lib/simp/rake/helpers/rpm_spec.rb +3 -3
- data/lib/simp/rake/helpers/version.rb +1 -1
- data/lib/simp/rake/pkg.rb +41 -54
- metadata +68 -66
@@ -0,0 +1,11 @@
|
|
1
|
+
# ------------------------------------------------------------------------------
|
2
|
+
# Environment variables:
|
3
|
+
# SIMP_GEM_SERVERS | a space/comma delimited list of rubygem servers
|
4
|
+
# ------------------------------------------------------------------------------
|
5
|
+
# NOTE: SIMP Puppet rake tasks support ruby 2.0 and ruby 2.1
|
6
|
+
# ------------------------------------------------------------------------------
|
7
|
+
gem_sources = ENV.key?('SIMP_GEM_SERVERS') ? ENV['SIMP_GEM_SERVERS'].split(/[, ]+/) : ['https://rubygems.org']
|
8
|
+
|
9
|
+
gem_sources.each { |gem_source| source gem_source }
|
10
|
+
|
11
|
+
gem 'simp-rake-helpers', '~> 3.0'
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,356 @@
|
|
1
|
+
%{lua:
|
2
|
+
|
3
|
+
--
|
4
|
+
-- When you build you must to pass this along so that we know how
|
5
|
+
-- to get the preliminary information.
|
6
|
+
-- This directory should hold the following items:
|
7
|
+
-- * 'build/rpm_metadata/requires' <- optional list of 'Requires', 'Provides',
|
8
|
+
-- and 'Obsoletes' to supplement those auto-generated in this spec file
|
9
|
+
-- * 'build/rpm_metadata/release' <- optional RPM release number to use in
|
10
|
+
-- lieu of number hard-coded in this spec file
|
11
|
+
-- * 'CHANGELOG' <- optional RPM formatted Changelog to use in lieu of minimal,
|
12
|
+
-- changelog entry auto-generated in this spec file
|
13
|
+
-- * 'metadata.json' <- required file that must contain the following metadata:
|
14
|
+
-- - 'name' - package name
|
15
|
+
-- - 'version' - package version
|
16
|
+
-- - 'license' - package license
|
17
|
+
-- - 'summary' - package summary
|
18
|
+
-- - 'source' - package source
|
19
|
+
--
|
20
|
+
-- Example:
|
21
|
+
-- rpmbuild -D 'pup_module_info_dir /home/user/project/puppet_module' -ba SPECS/specfile.spec
|
22
|
+
--
|
23
|
+
-- If this is not found, we will look in %{_sourcedir} for the files and fall
|
24
|
+
-- back to the current directory
|
25
|
+
--
|
26
|
+
|
27
|
+
src_dir = rpm.expand('%{pup_module_info_dir}')
|
28
|
+
|
29
|
+
if string.match(src_dir, '^%%') or (posix.stat(src_dir, 'type') ~= 'directory') then
|
30
|
+
src_dir = rpm.expand('%{_sourcedir}')
|
31
|
+
|
32
|
+
if (posix.stat((src_dir .. "/metadata.json"), 'type') ~= 'regular') then
|
33
|
+
src_dir = './'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
-- These UNKNOWN entries should break the build if something bad happens
|
38
|
+
|
39
|
+
package_name = "UNKNOWN"
|
40
|
+
package_version = "UNKNOWN"
|
41
|
+
module_license = "UNKNOWN"
|
42
|
+
|
43
|
+
--
|
44
|
+
-- Default to 2016
|
45
|
+
-- This was done due to the change in naming scheme across all of the modules.
|
46
|
+
-- The '.1' bump is there for the SIMP 6 path changes
|
47
|
+
--
|
48
|
+
|
49
|
+
package_release = '2016.1'
|
50
|
+
|
51
|
+
}
|
52
|
+
|
53
|
+
%{lua:
|
54
|
+
-- Pull the Relevant Metadata out of the Puppet module metadata.json.
|
55
|
+
|
56
|
+
metadata = ''
|
57
|
+
metadata_file = io.open(src_dir .. "/metadata.json","r")
|
58
|
+
if metadata_file then
|
59
|
+
metadata = metadata_file:read("*all")
|
60
|
+
|
61
|
+
-- Ignore the first curly brace
|
62
|
+
metadata = metadata:gsub("{}?", '|', 1)
|
63
|
+
|
64
|
+
-- Ignore all keys that are below the first level
|
65
|
+
metadata = metadata:gsub("{.-}", '')
|
66
|
+
metadata = metadata:gsub("%[.-%]", '')
|
67
|
+
else
|
68
|
+
error("Could not open 'metadata.json'", 0)
|
69
|
+
end
|
70
|
+
|
71
|
+
-- This starts as an empty string so that we can build it later
|
72
|
+
module_requires = ''
|
73
|
+
|
74
|
+
}
|
75
|
+
|
76
|
+
%{lua:
|
77
|
+
|
78
|
+
-- Get the Module Name and put it in the correct format
|
79
|
+
|
80
|
+
local name_match = string.match(metadata, '"name":%s+"(.-)"%s*,')
|
81
|
+
|
82
|
+
module_author = ''
|
83
|
+
module_name = ''
|
84
|
+
|
85
|
+
if name_match then
|
86
|
+
package_name = ('pupmod-' .. name_match)
|
87
|
+
|
88
|
+
local i = 0
|
89
|
+
for str in string.gmatch(name_match,'[^-]+') do
|
90
|
+
if i == 0 then
|
91
|
+
module_author = str
|
92
|
+
else
|
93
|
+
if module_name == '' then
|
94
|
+
module_name = str
|
95
|
+
else
|
96
|
+
module_name = (module_name .. '-' .. str)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
i = i+1
|
101
|
+
end
|
102
|
+
else
|
103
|
+
error("Could not find valid package name in 'metadata.json'", 0)
|
104
|
+
end
|
105
|
+
|
106
|
+
}
|
107
|
+
|
108
|
+
%{lua:
|
109
|
+
|
110
|
+
-- Get the Module Version
|
111
|
+
|
112
|
+
local version_match = string.match(metadata, '"version":%s+"(.-)"%s*,')
|
113
|
+
|
114
|
+
if version_match then
|
115
|
+
package_version = version_match
|
116
|
+
else
|
117
|
+
error("Could not find valid package version in 'metadata.json'", 0)
|
118
|
+
end
|
119
|
+
|
120
|
+
}
|
121
|
+
|
122
|
+
%{lua:
|
123
|
+
|
124
|
+
-- Get the Module License
|
125
|
+
|
126
|
+
local license_match = string.match(metadata, '"license":%s+"(.-)"%s*,')
|
127
|
+
|
128
|
+
if license_match then
|
129
|
+
module_license = license_match
|
130
|
+
else
|
131
|
+
error("Could not find valid package license in 'metadata.json'", 0)
|
132
|
+
end
|
133
|
+
|
134
|
+
}
|
135
|
+
|
136
|
+
%{lua:
|
137
|
+
|
138
|
+
-- Get the Module Summary
|
139
|
+
|
140
|
+
local summary_match = string.match(metadata, '"summary":%s+"(.-)"%s*,')
|
141
|
+
|
142
|
+
if summary_match then
|
143
|
+
module_summary = summary_match
|
144
|
+
else
|
145
|
+
error("Could not find valid package summary in 'metadata.json'", 0)
|
146
|
+
end
|
147
|
+
|
148
|
+
}
|
149
|
+
|
150
|
+
%{lua:
|
151
|
+
|
152
|
+
-- Get the Module Source line for the URL string
|
153
|
+
|
154
|
+
local source_match = string.match(metadata, '"source":%s+"(.-)"%s*,')
|
155
|
+
|
156
|
+
if source_match then
|
157
|
+
module_source = source_match
|
158
|
+
else
|
159
|
+
error("Could not find valid package source in 'metadata.json'", 0)
|
160
|
+
end
|
161
|
+
|
162
|
+
}
|
163
|
+
|
164
|
+
%{lua:
|
165
|
+
|
166
|
+
-- Snag the RPM-specific items out of the 'build/rpm_metadata' directory
|
167
|
+
|
168
|
+
-- First, the Release Number
|
169
|
+
|
170
|
+
rel_file = io.open(src_dir .. "/build/rpm_metadata/release", "r")
|
171
|
+
|
172
|
+
if not rel_file then
|
173
|
+
-- Need this for the SRPM case
|
174
|
+
rel_file = io.open(src_dir .. "/release", "r")
|
175
|
+
end
|
176
|
+
|
177
|
+
if rel_file then
|
178
|
+
for line in rel_file:lines() do
|
179
|
+
is_comment = string.match(line, "^%s*#")
|
180
|
+
is_blank = string.match(line, "^%s*$")
|
181
|
+
|
182
|
+
if not (is_comment or is_blank) then
|
183
|
+
package_release = line
|
184
|
+
break
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
}
|
190
|
+
|
191
|
+
%{lua:
|
192
|
+
|
193
|
+
-- Next, the Requirements
|
194
|
+
req_file = io.open(src_dir .. "/build/rpm_metadata/requires", "r")
|
195
|
+
|
196
|
+
if not req_file then
|
197
|
+
-- Need this for the SRPM case
|
198
|
+
req_file = io.open(src_dir .. "/requires", "r")
|
199
|
+
end
|
200
|
+
|
201
|
+
if req_file then
|
202
|
+
for line in req_file:lines() do
|
203
|
+
valid_line = (string.match(line, "^Requires: ") or string.match(line, "^Obsoletes: ") or string.match(line, "^Provides: "))
|
204
|
+
|
205
|
+
if valid_line then
|
206
|
+
module_requires = (module_requires .. "\n" .. line)
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
210
|
+
}
|
211
|
+
|
212
|
+
%define module_name %{lua: print(module_name)}
|
213
|
+
%define package_name %{lua: print(package_name)}
|
214
|
+
|
215
|
+
Summary: %{module_name} Puppet Module
|
216
|
+
Name: %{package_name}
|
217
|
+
|
218
|
+
Version: %{lua: print(package_version)}
|
219
|
+
Release: %{lua: print(package_release)}
|
220
|
+
License: %{lua: print(module_license)}
|
221
|
+
Group: Applications/System
|
222
|
+
Source0: %{package_name}-%{version}-%{release}.tar.gz
|
223
|
+
Source1: %{lua: print("metadata.json")}
|
224
|
+
%{lua:
|
225
|
+
-- Include our sources as appropriate
|
226
|
+
changelog = io.open(src_dir .. "/CHANGELOG","r")
|
227
|
+
if changelog then
|
228
|
+
print("Source2: " .. "CHANGELOG\n")
|
229
|
+
end
|
230
|
+
|
231
|
+
if rel_file then
|
232
|
+
print("Source3: " .. "release\n")
|
233
|
+
end
|
234
|
+
if req_file then
|
235
|
+
print("Source4: " .. "requires\n")
|
236
|
+
end
|
237
|
+
}
|
238
|
+
URL: %{lua: print(module_source)}
|
239
|
+
BuildRoot: %{_tmppath}/%{package_name}-%{version}-%{release}-buildroot
|
240
|
+
BuildArch: noarch
|
241
|
+
|
242
|
+
Requires(pre,preun,post,postun): simp-adapter >= 0.0.1
|
243
|
+
|
244
|
+
%if ("%{package_name}" != "pupmod-simp-simplib") && ("%{package_name}" != "pupmod-puppetlabs-stdlib")
|
245
|
+
Requires: pupmod-simp-simplib >= 1.2.6
|
246
|
+
%endif
|
247
|
+
|
248
|
+
%if "%{package_name}" != "pupmod-puppetlabs-stdlib"
|
249
|
+
Requires: pupmod-puppetlabs-stdlib >= 4.9.0
|
250
|
+
Requires: pupmod-puppetlabs-stdlib < 6.0.0
|
251
|
+
%endif
|
252
|
+
|
253
|
+
%{lua: print(module_requires)}
|
254
|
+
|
255
|
+
Provides: pupmod-%{lua: print(module_name)} = %{lua: print(package_version .. "-" .. package_release)}
|
256
|
+
Obsoletes: pupmod-%{lua: print(module_name)} < %{lua: print(package_version .. "-" .. package_release)}
|
257
|
+
|
258
|
+
%{lua:
|
259
|
+
|
260
|
+
-- This is a workaround for the 'simp-rsync' real RPM conflict but is
|
261
|
+
-- required by some external modules.
|
262
|
+
-- This should be removed when SIMP 6 is stable
|
263
|
+
|
264
|
+
author_rpm_name = module_author .. "-" .. module_name
|
265
|
+
|
266
|
+
if author_rpm_name ~= 'simp-rsync' then
|
267
|
+
print("Provides: " .. author_rpm_name .. " = " .. package_version .. "-" .. package_release .. "\n")
|
268
|
+
print("Obsoletes: " .. author_rpm_name .. " < " .. package_version .. "-" .. package_release .. "\n")
|
269
|
+
end
|
270
|
+
}
|
271
|
+
|
272
|
+
Prefix: /usr/share/simp/modules
|
273
|
+
|
274
|
+
%description
|
275
|
+
%{lua: print(module_summary)}
|
276
|
+
|
277
|
+
%prep
|
278
|
+
%setup -q -n %{package_name}-%{version}
|
279
|
+
|
280
|
+
%build
|
281
|
+
|
282
|
+
%install
|
283
|
+
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
|
284
|
+
|
285
|
+
mkdir -p %{buildroot}/%{prefix}
|
286
|
+
|
287
|
+
curdir=`pwd`
|
288
|
+
dirname=`basename $curdir`
|
289
|
+
cp -r ../$dirname %{buildroot}/%{prefix}/%{module_name}
|
290
|
+
rm -rf %{buildroot}/%{prefix}/%{module_name}/.git
|
291
|
+
rm -f %{buildroot}/%{prefix}/*.lock
|
292
|
+
rm -rf %{buildroot}/%{prefix}/spec/fixtures/modules
|
293
|
+
rm -rf %{buildroot}/%{prefix}/dist
|
294
|
+
rm -rf %{buildroot}/%{prefix}/junit
|
295
|
+
rm -rf %{buildroot}/%{prefix}/log
|
296
|
+
|
297
|
+
%clean
|
298
|
+
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
|
299
|
+
|
300
|
+
mkdir -p %{buildroot}/%{prefix}
|
301
|
+
|
302
|
+
%files
|
303
|
+
%defattr(0640,root,root,0750)
|
304
|
+
%{prefix}/%{module_name}
|
305
|
+
|
306
|
+
# when $1 = 1, this is an install
|
307
|
+
# when $1 = 2, this is an upgrade
|
308
|
+
%pre
|
309
|
+
/usr/local/sbin/simp_rpm_helper --rpm_dir=%{prefix}/%{module_name} --rpm_section='pre' --rpm_status=$1
|
310
|
+
|
311
|
+
# when $1 = 1, this is an install
|
312
|
+
# when $1 = 2, this is an upgrade
|
313
|
+
%post
|
314
|
+
/usr/local/sbin/simp_rpm_helper --rpm_dir=%{prefix}/%{module_name} --rpm_section='post' --rpm_status=$1
|
315
|
+
|
316
|
+
# when $1 = 1, this is the uninstall of the previous version during an upgrade
|
317
|
+
# when $1 = 0, this is the uninstall of the only version during an erase
|
318
|
+
%preun
|
319
|
+
/usr/local/sbin/simp_rpm_helper --rpm_dir=%{prefix}/%{module_name} --rpm_section='preun' --rpm_status=$1
|
320
|
+
|
321
|
+
# when $1 = 1, this is the uninstall of the previous version during an upgrade
|
322
|
+
# when $1 = 0, this is the uninstall of the only version during an erase
|
323
|
+
%postun
|
324
|
+
/usr/local/sbin/simp_rpm_helper --rpm_dir=%{prefix}/%{module_name} --rpm_section='postun' --rpm_status=$1
|
325
|
+
|
326
|
+
%changelog
|
327
|
+
%{lua:
|
328
|
+
-- Finally, the CHANGELOG
|
329
|
+
|
330
|
+
-- A default CHANGELOG in case we cannot find a real one
|
331
|
+
|
332
|
+
default_changelog = [===[
|
333
|
+
* $date Auto Changelog <auto@no.body> - $version-$release
|
334
|
+
- Latest release of $name
|
335
|
+
]===]
|
336
|
+
|
337
|
+
default_lookup_table = {
|
338
|
+
date = os.date("%a %b %d %Y"),
|
339
|
+
version = package_version,
|
340
|
+
release = package_release,
|
341
|
+
name = package_name
|
342
|
+
}
|
343
|
+
|
344
|
+
changelog = io.open(src_dir .. "/CHANGELOG","r")
|
345
|
+
if changelog then
|
346
|
+
first_line = changelog:read()
|
347
|
+
if string.match(first_line, "^*%s+%a%a%a%s+%a%a%a%s+%d%d?%s+%d%d%d%d%s+.+") then
|
348
|
+
changelog:seek("set",0)
|
349
|
+
print(changelog:read("*all"))
|
350
|
+
else
|
351
|
+
print((default_changelog:gsub('$(%w+)', default_lookup_table)))
|
352
|
+
end
|
353
|
+
else
|
354
|
+
print((default_changelog:gsub('$(%w+)', default_lookup_table)))
|
355
|
+
end
|
356
|
+
}
|
@@ -6,8 +6,8 @@ class Simp::Rake::Helpers
|
|
6
6
|
|
7
7
|
include Simp::Rake::Build::Constants
|
8
8
|
|
9
|
-
def
|
10
|
-
simp_version = ENV.fetch('SIMP_BUILD_version',
|
9
|
+
def rpm_template(simp_version=nil)
|
10
|
+
simp_version = ENV.fetch('SIMP_BUILD_version', simp_version)
|
11
11
|
|
12
12
|
if simp_version
|
13
13
|
simp_main_version = simp_version.split('.').first
|
@@ -15,7 +15,7 @@ class Simp::Rake::Helpers
|
|
15
15
|
simp_main_version = 'default'
|
16
16
|
end
|
17
17
|
|
18
|
-
template_file = File.join(File.dirname(__FILE__), '
|
18
|
+
template_file = File.join(File.dirname(__FILE__), 'assets', 'rpm_spec', "simp#{simp_main_version}.spec")
|
19
19
|
|
20
20
|
raise "Error: Could not find template for SIMP version #{simp_version}" unless File.exist?(template_file)
|
21
21
|
|
data/lib/simp/rake/pkg.rb
CHANGED
@@ -13,6 +13,8 @@ module Simp; end
|
|
13
13
|
module Simp::Rake
|
14
14
|
class Pkg < ::Rake::TaskLib
|
15
15
|
|
16
|
+
include Simp::Rake::Helpers::RPMSpec
|
17
|
+
|
16
18
|
# path to the project's directory. Usually `File.dirname(__FILE__)`
|
17
19
|
attr_accessor :base_dir
|
18
20
|
|
@@ -36,7 +38,7 @@ module Simp::Rake
|
|
36
38
|
|
37
39
|
attr_reader :spec_info
|
38
40
|
|
39
|
-
def initialize( base_dir, unique_name=nil )
|
41
|
+
def initialize( base_dir, unique_name=nil, unique_namespace=nil, simp_version=nil )
|
40
42
|
@base_dir = base_dir
|
41
43
|
@pkg_name = File.basename(@base_dir)
|
42
44
|
@pkg_dir = File.join(@base_dir, 'dist')
|
@@ -53,7 +55,7 @@ module Simp::Rake
|
|
53
55
|
FileUtils.mkdir_p(@pkg_tmp_dir) unless File.directory?(@pkg_tmp_dir)
|
54
56
|
|
55
57
|
@spec_tempfile = File.open(File.join(@pkg_tmp_dir, "#{@pkg_name}.spec"), 'w')
|
56
|
-
@spec_tempfile.write(
|
58
|
+
@spec_tempfile.write(rpm_template(simp_version))
|
57
59
|
|
58
60
|
@spec_file = @spec_tempfile.path
|
59
61
|
|
@@ -79,7 +81,13 @@ module Simp::Rake
|
|
79
81
|
|
80
82
|
::CLEAN.include( @clean_list )
|
81
83
|
|
82
|
-
|
84
|
+
if unique_namespace
|
85
|
+
namespace unique_namespace.to_sym do
|
86
|
+
define
|
87
|
+
end
|
88
|
+
else
|
89
|
+
define
|
90
|
+
end
|
83
91
|
end
|
84
92
|
|
85
93
|
def define
|
@@ -109,7 +117,13 @@ module Simp::Rake
|
|
109
117
|
|
110
118
|
if chroot
|
111
119
|
@chroot_name = @chroot_name || "#{@spec_info[:name]}__#{ENV.fetch( 'USER', 'USER' )}"
|
120
|
+
|
121
|
+
if ENV['SIMP_PKG_rand_name'] && (ENV['SIMP_PKG_rand_name'] != 'no')
|
122
|
+
@chroot_name = @chroot_name + '__' + Time.now.strftime('%s%L')
|
123
|
+
end
|
124
|
+
|
112
125
|
mock_cmd = mock_pre_check( chroot, @chroot_name, unique ) + " --root #{chroot}"
|
126
|
+
|
113
127
|
# Need to do this in case there is already a directory in /tmp
|
114
128
|
rand_dirname = (0...10).map { ('a'..'z').to_a[rand(26)] }.join
|
115
129
|
rand_tmpdir = %(/tmp/#{rand_dirname}_tmp)
|
@@ -174,7 +188,7 @@ module Simp::Rake
|
|
174
188
|
args.with_defaults(:chroot => nil)
|
175
189
|
args.with_defaults(:unique => false)
|
176
190
|
|
177
|
-
initialize_spec_info(args
|
191
|
+
initialize_spec_info(args[:chroot], args[:unique])
|
178
192
|
end
|
179
193
|
|
180
194
|
# :pkg:tar
|
@@ -186,12 +200,12 @@ module Simp::Rake
|
|
186
200
|
this to work.
|
187
201
|
EOM
|
188
202
|
task :tar,[:chroot,:unique,:snapshot_release] => [:initialize_spec_info] do |t,args|
|
189
|
-
args.with_defaults(:snapshot_release => false)
|
203
|
+
args.with_defaults(:snapshot_release => 'false')
|
190
204
|
args.with_defaults(:chroot => nil)
|
191
|
-
args.with_defaults(:unique => false)
|
205
|
+
args.with_defaults(:unique => 'false')
|
192
206
|
|
193
207
|
l_date = ''
|
194
|
-
if args
|
208
|
+
if args[:snapshot_release] == 'true'
|
195
209
|
l_date = '.' + "#{TIMESTAMP}"
|
196
210
|
@tar_dest = "#{@pkg_dir}/#{@full_pkg_name}#{l_date}.tar.gz"
|
197
211
|
end
|
@@ -236,34 +250,22 @@ module Simp::Rake
|
|
236
250
|
This can be very useful for parallel builds of all modules.
|
237
251
|
* :snapshot_release - Add snapshot_release (date and time) to rpm version.
|
238
252
|
Rpm spec file must have macro for this to work.
|
239
|
-
EOM
|
240
|
-
=begin
|
241
|
-
This functionality has been (temporarily?) removed.
|
242
|
-
Environment Variables
|
243
|
-
SIMP_BUILD_VARIANTS - A comma delimted list of the target versions of Puppet/PE to build toward.
|
244
|
-
|
245
|
-
Currently supported are 'pe', 'p4', 'pe-2015'.
|
246
253
|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
Anything after a dash '-' will be considered a VERSION.
|
251
|
-
|
252
|
-
NOTE: Different RPM spec files may have different
|
253
|
-
behaviors based on the value passed.
|
254
|
-
=end
|
254
|
+
By default, the package will be built to support a SIMP-6.X file structure.
|
255
|
+
To build the package for a different version of SIMP, export SIMP_BUILD_version=<5.X,4.X>
|
256
|
+
EOM
|
255
257
|
task :srpm,[:chroot,:unique,:snapshot_release] => [:tar] do |t,args|
|
256
|
-
args.with_defaults(:unique => false)
|
257
|
-
args.with_defaults(:snapshot_release => false)
|
258
|
+
args.with_defaults(:unique => 'false')
|
259
|
+
args.with_defaults(:snapshot_release => 'false')
|
258
260
|
|
259
261
|
l_date = ''
|
260
|
-
if args
|
262
|
+
if args[:snapshot_release] == 'true'
|
261
263
|
l_date = '.' + "#{TIMESTAMP}"
|
262
264
|
mocksnap = "-D 'snapshot_release #{l_date}'"
|
263
265
|
@tar_dest = "#{@pkg_dir}/#{@full_pkg_name}#{l_date}.tar.gz"
|
264
266
|
end
|
265
267
|
|
266
|
-
mock_cmd = mock_pre_check( args
|
268
|
+
mock_cmd = mock_pre_check( args[:chroot], @chroot_name, args[:unique] )
|
267
269
|
|
268
270
|
srpms = Dir.glob(%(#{@pkg_dir}/#{@spec_info[:name]}-#{@spec_info[:version]}-#{@spec_info[:release]}#{l_date}.*src.rpm))
|
269
271
|
|
@@ -281,7 +283,7 @@ module Simp::Rake
|
|
281
283
|
end
|
282
284
|
end
|
283
285
|
|
284
|
-
cmd = %Q(#{mock_cmd} --root #{args
|
286
|
+
cmd = %Q(#{mock_cmd} --root #{args[:chroot]} #{mocksnap} --buildsrpm --spec #{@spec_file} --sources #{@pkg_dir})
|
285
287
|
|
286
288
|
sh cmd
|
287
289
|
end
|
@@ -300,36 +302,21 @@ module Simp::Rake
|
|
300
302
|
* :snapshot_release - Add snapshot_release (date and time) to rpm version.
|
301
303
|
Rpm spec file must have macro for this to work.
|
302
304
|
|
305
|
+
By default, the package will be built to support a SIMP-6.X file structure.
|
306
|
+
To build the package for a different version of SIMP, export SIMP_BUILD_version=<5.X,4.X>
|
303
307
|
EOM
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
SIMP_BUILD_VARIANTS - A comma delimted list of the target versions of Puppet/PE to build toward.
|
308
|
-
|
309
|
-
Currently supported are 'pe', 'p4', 'pe-2015'.
|
310
|
-
|
311
|
-
These will build for Puppet Enterprise, Puppet 4, and
|
312
|
-
Puppet Enterprise 2015+ respectively.
|
313
|
-
|
314
|
-
Anything after a dash '-' will be considered a VERSION.
|
315
|
-
|
316
|
-
NOTE: Different RPM spec files may have different
|
317
|
-
behaviors based on the value passed.
|
318
|
-
=end
|
319
|
-
task :rpm,[:chroot,:unique,:snapshot_release] do |t,args|
|
320
|
-
args.with_defaults(:unique => false)
|
321
|
-
args.with_defaults(:snapshot_release => false)
|
308
|
+
task :rpm,[:chroot,:unique,:snapshot_release] => [:srpm] do |t,args|
|
309
|
+
args.with_defaults(:unique => 'false')
|
310
|
+
args.with_defaults(:snapshot_release => 'false')
|
322
311
|
|
323
312
|
l_date = ''
|
324
|
-
if args
|
313
|
+
if args[:snapshot_release] == 'true'
|
325
314
|
l_date = '.' + "#{TIMESTAMP}"
|
326
315
|
mocksnap = "-D 'snapshot_release #{l_date}'"
|
327
316
|
@tar_dest = "#{@pkg_dir}/#{@full_pkg_name}#{l_date}.tar.gz"
|
328
317
|
end
|
329
318
|
|
330
|
-
|
331
|
-
|
332
|
-
mock_cmd = mock_pre_check(args.chroot, @chroot_name, args.unique)
|
319
|
+
mock_cmd = mock_pre_check(args[:chroot], @chroot_name, args[:unique])
|
333
320
|
|
334
321
|
rpms = Dir.glob(%(#{@pkg_dir}/#{@spec_info[:name]}-#{@spec_info[:version]}-#{@spec_info[:release]}#{l_date}.*rpm))
|
335
322
|
srpms = rpms.select{|x| x =~ /src\.rpm$/}
|
@@ -340,7 +327,7 @@ module Simp::Rake
|
|
340
327
|
basename = File.basename(srpm,'.src.rpm')
|
341
328
|
rpm = File.join(dirname, basename, 'rpm')
|
342
329
|
if require_rebuild?(rpm, srpm)
|
343
|
-
cmd = %Q(#{mock_cmd} --root #{args
|
330
|
+
cmd = %Q(#{mock_cmd} --root #{args[:chroot]} #{mocksnap} #{srpm})
|
344
331
|
|
345
332
|
sh cmd
|
346
333
|
end
|
@@ -348,7 +335,7 @@ module Simp::Rake
|
|
348
335
|
|
349
336
|
# remote chroot unless told not to (saves LOTS of space during ISO builds)
|
350
337
|
unless ENV['SIMP_RAKE_MOCK_cleanup'] == 'no'
|
351
|
-
cmd = %Q(#{mock_cmd} --root #{args
|
338
|
+
cmd = %Q(#{mock_cmd} --root #{args[:chroot]} --clean)
|
352
339
|
sh cmd
|
353
340
|
end
|
354
341
|
end
|
@@ -365,7 +352,7 @@ module Simp::Rake
|
|
365
352
|
task :scrub,[:chroot,:unique] do |t,args|
|
366
353
|
args.with_defaults(:unique => false)
|
367
354
|
|
368
|
-
mock_cmd = mock_pre_check( args
|
355
|
+
mock_cmd = mock_pre_check( args[:chroot], @chroot_name, args[:unique], false )
|
369
356
|
cmd = %Q(#{mock_cmd} --scrub=all)
|
370
357
|
sh cmd
|
371
358
|
end
|
@@ -422,18 +409,18 @@ module Simp::Rake
|
|
422
409
|
"Error: No mock chroot provided. Your choices are:\n #{mock_configs.join("\n ")}"
|
423
410
|
)
|
424
411
|
end
|
412
|
+
|
425
413
|
unless mock_configs.include?(chroot)
|
426
414
|
raise(Exception,
|
427
415
|
"Error: Invalid mock chroot provided. Your choices are:\n #{mock_configs.join("\n ")}"
|
428
416
|
)
|
429
417
|
end
|
430
418
|
|
431
|
-
raise %Q(unique_ext must be a String ("#{unique_ext}" = #{unique_ext.class})) unless unique_ext.is_a?
|
419
|
+
raise %Q(unique_ext must be a String ("#{unique_ext}" = #{unique_ext.class})) unless unique_ext.is_a?(String)
|
432
420
|
|
433
421
|
# if true, restrict yum to the chroot's local yum cache (defaults to false)
|
434
422
|
mock_offline = ENV.fetch( 'SIMP_RAKE_MOCK_OFFLINE', 'N' ).chomp.index( %r{^(1|Y|true|yes)$} ) || false
|
435
423
|
|
436
|
-
#mock_cmd = "#{mock} -D 'pup_module_info_dir #{@spec_info_dir}' --quiet"
|
437
424
|
mock_cmd = "#{mock} --quiet"
|
438
425
|
mock_cmd += " --uniqueext=#{unique_ext}" if unique
|
439
426
|
mock_cmd += ' --offline' if mock_offline
|