simp-rake-helpers 2.5.7 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/README.md +3 -1
  4. data/lib/simp/rake/build/iso.rb +11 -2
  5. data/lib/simp/rake/build/pkg.rb +60 -65
  6. data/lib/simp/rake/build/tar.rb +3 -0
  7. data/lib/simp/rake/build/vermap.yaml +1 -0
  8. data/lib/simp/rake/helpers/rpm_spec.rb +8 -370
  9. data/lib/simp/rake/helpers/rpm_spec/assets/simp4.spec +387 -0
  10. data/lib/simp/rake/helpers/rpm_spec/assets/simp5.spec +387 -0
  11. data/lib/simp/rake/helpers/rpm_spec/assets/simpdefault.spec +356 -0
  12. data/lib/simp/rake/helpers/version.rb +1 -1
  13. data/lib/simp/rake/pkg.rb +63 -60
  14. data/lib/simp/rpm.rb +52 -25
  15. data/spec/acceptance/files/simplib/CHANGELOG +2 -0
  16. data/spec/acceptance/files/simplib/Rakefile +3 -0
  17. data/spec/acceptance/files/simplib/build/rpm_metadata/requires +1 -0
  18. data/spec/acceptance/files/simplib/metadata.json +33 -0
  19. data/spec/acceptance/files/testpackage_missing_license/CHANGELOG +2 -0
  20. data/spec/acceptance/files/testpackage_missing_license/Rakefile +3 -0
  21. data/spec/acceptance/files/testpackage_missing_license/build/rpm_metadata/requires +1 -0
  22. data/spec/acceptance/files/testpackage_missing_license/metadata.json +32 -0
  23. data/spec/acceptance/files/testpackage_missing_metadata_file/CHANGELOG +2 -0
  24. data/spec/acceptance/files/testpackage_missing_metadata_file/Rakefile +3 -0
  25. data/spec/acceptance/files/testpackage_missing_metadata_file/build/rpm_metadata/requires +1 -0
  26. data/spec/acceptance/files/testpackage_missing_name/CHANGELOG +2 -0
  27. data/spec/acceptance/files/testpackage_missing_name/Rakefile +3 -0
  28. data/spec/acceptance/files/testpackage_missing_name/build/rpm_metadata/requires +1 -0
  29. data/spec/acceptance/files/testpackage_missing_name/metadata.json +32 -0
  30. data/spec/acceptance/files/testpackage_missing_source/CHANGELOG +2 -0
  31. data/spec/acceptance/files/testpackage_missing_source/Rakefile +3 -0
  32. data/spec/acceptance/files/testpackage_missing_source/build/rpm_metadata/requires +1 -0
  33. data/spec/acceptance/files/testpackage_missing_source/metadata.json +32 -0
  34. data/spec/acceptance/files/testpackage_missing_summary/CHANGELOG +2 -0
  35. data/spec/acceptance/files/testpackage_missing_summary/Rakefile +3 -0
  36. data/spec/acceptance/files/testpackage_missing_summary/build/rpm_metadata/requires +1 -0
  37. data/spec/acceptance/files/testpackage_missing_summary/metadata.json +32 -0
  38. data/spec/acceptance/files/testpackage_missing_version/CHANGELOG +2 -0
  39. data/spec/acceptance/files/testpackage_missing_version/Rakefile +3 -0
  40. data/spec/acceptance/files/testpackage_missing_version/build/rpm_metadata/requires +1 -0
  41. data/spec/acceptance/files/testpackage_missing_version/metadata.json +32 -0
  42. data/spec/acceptance/files/testpackage_with_bad_changelog_date/CHANGELOG +2 -0
  43. data/spec/acceptance/files/testpackage_with_bad_changelog_date/Rakefile +3 -0
  44. data/spec/acceptance/files/testpackage_with_bad_changelog_date/build/rpm_metadata/requires +1 -0
  45. data/spec/acceptance/files/testpackage_with_bad_changelog_date/metadata.json +33 -0
  46. data/spec/acceptance/files/testpackage_with_release/CHANGELOG +2 -0
  47. data/spec/acceptance/files/testpackage_with_release/Rakefile +3 -0
  48. data/spec/acceptance/files/testpackage_with_release/build/rpm_metadata/release +1 -0
  49. data/spec/acceptance/files/testpackage_with_release/build/rpm_metadata/requires +1 -0
  50. data/spec/acceptance/files/testpackage_with_release/metadata.json +33 -0
  51. data/spec/acceptance/files/testpackage_without_changelog/Rakefile +3 -0
  52. data/spec/acceptance/files/testpackage_without_changelog/build/rpm_metadata/requires +1 -0
  53. data/spec/acceptance/files/testpackage_without_changelog/metadata.json +33 -0
  54. data/spec/acceptance/pkg_rpm_spec.rb +215 -41
  55. metadata +44 -2
@@ -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
+ }
@@ -2,5 +2,5 @@ module Simp; end
2
2
  module Simp::Rake; end
3
3
 
4
4
  class Simp::Rake::Helpers
5
- VERSION = '2.5.7'
5
+ VERSION = '3.0.0'
6
6
  end
data/lib/simp/rake/pkg.rb CHANGED
@@ -31,9 +31,6 @@ module Simp::Rake
31
31
  # array of items to additionally clean
32
32
  attr_accessor :clean_list
33
33
 
34
- # directory that contains all the mock chroots
35
- attr_accessor :mock_root_dir
36
-
37
34
  # array of items to ignore when checking if the tarball needs to be rebuilt
38
35
  attr_accessor :ignore_changes_list
39
36
 
@@ -48,7 +45,6 @@ module Simp::Rake
48
45
  @clean_list = []
49
46
  @ignore_changes_list = []
50
47
  @chroot_name = unique_name
51
- @mock_root_dir = ENV.fetch('SIMP_BUILD_MOCK_root','/var/lib/mock')
52
48
 
53
49
  local_spec = Dir.glob(File.join(@base_dir, 'build', '*.spec'))
54
50
  unless local_spec.empty?
@@ -57,7 +53,7 @@ module Simp::Rake
57
53
  FileUtils.mkdir_p(@pkg_tmp_dir) unless File.directory?(@pkg_tmp_dir)
58
54
 
59
55
  @spec_tempfile = File.open(File.join(@pkg_tmp_dir, "#{@pkg_name}.spec"), 'w')
60
- @spec_tempfile.write(Simp::Rake::Helpers::RPM_Spec.template)
56
+ @spec_tempfile.write(Simp::Rake::Helpers::RPMSpec.template)
61
57
 
62
58
  @spec_file = @spec_tempfile.path
63
59
 
@@ -149,8 +145,6 @@ module Simp::Rake
149
145
  if @tar_dest =~ /UNKNOWN/
150
146
  fail("Error: Could not determine package information from 'metadata.json'. Got '#{File.basename(@tar_dest)}'")
151
147
  end
152
-
153
- @variants = (ENV['SIMP_BUILD_VARIANTS'].to_s.split(',') + ['default'])
154
148
  end
155
149
  end
156
150
 
@@ -205,15 +199,27 @@ module Simp::Rake
205
199
  target_dir = File.basename(@base_dir)
206
200
 
207
201
  Dir.chdir(%(#{@base_dir}/..)) do
208
- Find.find(target_dir) do |path|
209
- Find.prune if path =~ /^\.git/
210
- Find.prune if path == "#{@pkg_name}/#{File.basename(@pkg_dir)}"
211
- Find.prune if @ignore_changes_list.include?(path)
212
- next if File.directory?(path)
213
- unless uptodate?(@tar_dest,[path])
214
- sh %Q(tar --owner 0 --group 0 --exclude-vcs --exclude=#{@exclude_list.join(' --exclude=')} --transform='s/^#{@pkg_name}/#{@dir_name}/' -cpzf "#{@tar_dest}" #{@pkg_name})
215
- break
202
+ require_rebuild = false
203
+ if File.exist?(@tar_dest)
204
+ Find.find(target_dir) do |path|
205
+ filename = File.basename(path)
206
+ Find.prune if filename =~ /^\./
207
+ Find.prune if ((filename == File.basename(@pkg_dir)) && File.directory?(path))
208
+ Find.prune if ((filename == 'spec') && File.directory?(path))
209
+ Find.prune if @ignore_changes_list.include?(path)
210
+
211
+ next if File.directory?(path)
212
+ unless uptodate?(@tar_dest,[path])
213
+ require_rebuild = true
214
+ break
215
+ end
216
216
  end
217
+ else
218
+ require_rebuild = true
219
+ end
220
+
221
+ if require_rebuild
222
+ sh %Q(tar --owner 0 --group 0 --exclude-vcs --exclude=#{@exclude_list.join(' --exclude=')} --transform='s/^#{@pkg_name}/#{@dir_name}/' -cpzf "#{@tar_dest}" #{@pkg_name})
217
223
  end
218
224
  end
219
225
  end
@@ -230,7 +236,9 @@ module Simp::Rake
230
236
  This can be very useful for parallel builds of all modules.
231
237
  * :snapshot_release - Add snapshot_release (date and time) to rpm version.
232
238
  Rpm spec file must have macro for this to work.
233
-
239
+ EOM
240
+ =begin
241
+ This functionality has been (temporarily?) removed.
234
242
  Environment Variables
235
243
  SIMP_BUILD_VARIANTS - A comma delimted list of the target versions of Puppet/PE to build toward.
236
244
 
@@ -243,7 +251,7 @@ module Simp::Rake
243
251
 
244
252
  NOTE: Different RPM spec files may have different
245
253
  behaviors based on the value passed.
246
- EOM
254
+ =end
247
255
  task :srpm,[:chroot,:unique,:snapshot_release] => [:tar] do |t,args|
248
256
  args.with_defaults(:unique => false)
249
257
  args.with_defaults(:snapshot_release => false)
@@ -257,33 +265,25 @@ module Simp::Rake
257
265
 
258
266
  mock_cmd = mock_pre_check( args.chroot, @chroot_name, args.unique )
259
267
 
260
- @variants.each do |variant|
261
- if variant != 'default'
262
- suffix = "-#{variant}"
263
- end
264
-
265
- srpms = Dir.glob(%(#{@pkg_dir}/#{@spec_info[:name]}#{suffix}-#{@spec_info[:version]}-#{@spec_info[:release]}#{l_date}.*.src.rpm))
266
-
267
- if require_rebuild?(@tar_dest,srpms) || require_rebuild?("#{@base_dir}/metadata.json")
268
+ srpms = Dir.glob(%(#{@pkg_dir}/#{@spec_info[:name]}-#{@spec_info[:version]}-#{@spec_info[:release]}#{l_date}.*src.rpm))
268
269
 
269
- @puppet_module_info_files.each do |file|
270
- next unless File.exist?(file)
270
+ if require_rebuild?(srpms, @tar_dest)
271
271
 
272
- Find.find(file) do |path|
273
- next if File.directory?(path)
272
+ @puppet_module_info_files.each do |file|
273
+ next unless File.exist?(file)
274
274
 
275
- tgt_file = File.join(@pkg_dir, File.basename(path))
276
- FileUtils.rm_rf(tgt_file) if File.exist?(tgt_file)
277
- FileUtils.cp(path, @pkg_dir) if File.exist?(path)
278
- end
279
- end
275
+ Find.find(file) do |path|
276
+ next if File.directory?(path)
280
277
 
281
- cmd = %Q(#{mock_cmd} --root #{args.chroot} #{mocksnap} --buildsrpm --spec #{@spec_file} --sources #{@pkg_dir})
282
- if suffix
283
- cmd += %( -D "_variant #{variant}")
278
+ tgt_file = File.join(@pkg_dir, File.basename(path))
279
+ FileUtils.rm_rf(tgt_file) if File.exist?(tgt_file)
280
+ FileUtils.cp(path, @pkg_dir) if File.exist?(path)
284
281
  end
285
- sh cmd
286
282
  end
283
+
284
+ cmd = %Q(#{mock_cmd} --root #{args.chroot} #{mocksnap} --buildsrpm --spec #{@spec_file} --sources #{@pkg_dir})
285
+
286
+ sh cmd
287
287
  end
288
288
  end
289
289
  end
@@ -300,6 +300,9 @@ module Simp::Rake
300
300
  * :snapshot_release - Add snapshot_release (date and time) to rpm version.
301
301
  Rpm spec file must have macro for this to work.
302
302
 
303
+ EOM
304
+ =begin
305
+ This functionality has been (temporarily?) removed.
303
306
  Environment Variables
304
307
  SIMP_BUILD_VARIANTS - A comma delimted list of the target versions of Puppet/PE to build toward.
305
308
 
@@ -312,7 +315,7 @@ module Simp::Rake
312
315
 
313
316
  NOTE: Different RPM spec files may have different
314
317
  behaviors based on the value passed.
315
- EOM
318
+ =end
316
319
  task :rpm,[:chroot,:unique,:snapshot_release] do |t,args|
317
320
  args.with_defaults(:unique => false)
318
321
  args.with_defaults(:snapshot_release => false)
@@ -328,23 +331,18 @@ module Simp::Rake
328
331
 
329
332
  mock_cmd = mock_pre_check(args.chroot, @chroot_name, args.unique)
330
333
 
331
- @variants.each do |variant|
332
- if variant != 'default'
333
- suffix = "-#{variant}"
334
- end
334
+ rpms = Dir.glob(%(#{@pkg_dir}/#{@spec_info[:name]}-#{@spec_info[:version]}-#{@spec_info[:release]}#{l_date}.*rpm))
335
+ srpms = rpms.select{|x| x =~ /src\.rpm$/}
336
+ rpms = (rpms - srpms)
335
337
 
336
- rpms = Dir.glob(%(#{@pkg_dir}/#{@spec_info[:name]}#{suffix}-#{@spec_info[:version]}-#{@spec_info[:release]}#{l_date}.*.rpm))
337
- srpms = rpms.select{|x| x =~ /src\.rpm$/}
338
- rpms = (rpms - srpms)
338
+ srpms.each do |srpm|
339
+ dirname = File.dirname(srpm)
340
+ basename = File.basename(srpm,'.src.rpm')
341
+ rpm = File.join(dirname, basename, 'rpm')
342
+ if require_rebuild?(rpm, srpm)
343
+ cmd = %Q(#{mock_cmd} --root #{args.chroot} #{mocksnap} #{srpm})
339
344
 
340
- srpms.each do |srpm|
341
- if require_rebuild?(srpm,rpms)
342
- cmd = %Q(#{mock_cmd} --root #{args.chroot} #{mocksnap} #{srpm})
343
- if suffix
344
- cmd += %( -D "_variant #{variant}")
345
- end
346
- sh cmd
347
- end
345
+ sh cmd
348
346
  end
349
347
  end
350
348
 
@@ -384,20 +382,25 @@ module Simp::Rake
384
382
  Dir.glob('/etc/mock/*.cfg').sort.map{ |x| x = File.basename(x,'.cfg')}
385
383
  end
386
384
 
387
- # Return True if any of the 'output_files' are older than the 'src_file'
388
- def require_rebuild?(src_file,output_files)
385
+ # Return True if any of the 'old' Array are newer than the 'new' Array
386
+ def require_rebuild?(new, old)
389
387
  require_rebuild = false
390
- require_rebuild = true if output_files.empty?
388
+ require_rebuild = true if ( Array(old).empty? || Array(new).empty?)
391
389
  unless require_rebuild
392
- output_files.each do |outfile|
393
- unless uptodate?(outfile,Array(src_file))
390
+ Array(new).each do |new_file|
391
+ unless File.exist?(new_file)
392
+ require_rebuild = true
393
+ break
394
+ end
395
+
396
+ unless uptodate?(new_file, Array(old))
394
397
  require_rebuild = true
395
398
  break
396
399
  end
397
400
  end
398
401
  end
399
402
 
400
- require_rebuild
403
+ return require_rebuild
401
404
  end
402
405
 
403
406
  # Run some pre-checks to make sure that mock will work properly.