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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3af5c2d69049d0ec9ed9f1457925e1d55810eaf0
4
- data.tar.gz: 9925c108a4385aced09a7b16256d5e6b2f8f5ea5
3
+ metadata.gz: 3dc63bb56b51334e5e5a31fa9a6d843889174561
4
+ data.tar.gz: 7eee12246c9f05e1c2af04ab158ee2c6bcb8e266
5
5
  SHA512:
6
- metadata.gz: 7b4f5665e1b0e4a5582dae97387d673801d96a559f26c9789da82bc2beded56a4a88e549efb6430e732fd99b94b5416e6ebd6a911cb7e0c941c933255975032f
7
- data.tar.gz: 61ce0762187cf81d2cdedec906da7a3fa31ca8f21a71318a675bb82952b3e042f27ab3bb005bba4e855af656eb2965cd46319bc64b3254d6e5639c5821da25c4
6
+ metadata.gz: fa82d78040ca5e394ef902e09552099810267729b4c285a464ce80c6f05b07031bcf20f6cabf5d6bb935c8f689ec01c7722410670bdaf2b796f255c05c4e3012
7
+ data.tar.gz: 1cb550b16bc737f5ee25e2fffd23b3fdedf466ce4b5e73f68275be40a47527c277c03417a03491573a21a7fa2cd7f2daaa032efc296ba27d202eeece057c6225
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ### 3.0.0 / 2016-09-22
2
+ * Updated the RPM spec template to handle the new SIMP 6 requirements
3
+
1
4
  ### 2.5.6 / 2016-09-22
2
5
  * Added thread safe failure checks
3
6
  * Will raise an error when building the modules if one or more fails
data/README.md CHANGED
@@ -131,7 +131,9 @@ specification.
131
131
  It is likely that you will want to declare your dependencies in your RPM. To do
132
132
  this, you can create a `build/rpm_metadata` directory at the root of your
133
133
  project. A file named `requires` in the `build/rpm_metadata` directory will be
134
- used to declare the dependencies of the RPM.
134
+ used to declare the dependencies of the RPM. A file named `release` in the
135
+ `build/rpm_metadata` directory will be used to declare the RPM release
136
+ number.
135
137
 
136
138
  The following directives may be declared in the `requires` file:
137
139
  * Provides
@@ -145,7 +145,7 @@ module Simp::Rake::Build
145
145
 
146
146
  # NOTE: RHEL7 discs claim [general] section is deprecated.
147
147
  if sections.include?('general')
148
- h = Hash[ ini.get_section('general').entries ]
148
+ h = Hash[ ini.get_section('general').entries.map{|k,v| [k,v]} ]
149
149
  arch = h.fetch('arch', arch).strip
150
150
  baseosver = h.fetch('version', baseosver).strip
151
151
  baseosver += '.0' if (baseosver.count('.') < 1)
@@ -153,7 +153,13 @@ module Simp::Rake::Build
153
153
  # ------------------------------------
154
154
 
155
155
  # Skip if SIMP version doesn't match target base OS version
156
- next unless vermap[simpver.split('.').first].eql?(baseosver.split('.').first)
156
+ unless Array(vermap[simpver.split('.').first]).include?(baseosver.split('.').first)
157
+ if verbose
158
+ warn("Could not find SIMP version mapping for #{simpver} for Base OS #{baseosver}")
159
+ end
160
+
161
+ next
162
+ end
157
163
 
158
164
  mkrepo = baseosver.split('.').first == '5' ? 'createrepo -s sha -p' : 'createrepo -p'
159
165
 
@@ -288,6 +294,9 @@ module Simp::Rake::Build
288
294
  system(mkisofs_cmd.join(' '))
289
295
  end
290
296
  end # End of tarfiles loop
297
+
298
+ # If we got here and didn't generate any ISOs, something went horribly wrong
299
+ fail('Error: No ISO was built!') unless @simp_output_iso
291
300
  end
292
301
 
293
302
  desc <<-EOM
@@ -39,15 +39,19 @@ module Simp::Rake::Build
39
39
  :modules => get_module_dirs(args[:method]),
40
40
  :aux => [
41
41
  "#{@build_dir}/GPGKEYS",
42
- "#{@src_dir}/puppet/bootstrap",
43
42
  "#{@src_dir}/rsync",
44
- "#{@src_dir}/utils"
43
+ # Anything in here gets built!
44
+ "#{@src_dir}/assets/*"
45
45
  ],
46
46
  :doc => "#{@src_dir}/doc",
47
47
  :simp_cli => "#{@src_dir}/rubygems/simp_cli",
48
48
  :simp => "#{@src_dir}",
49
49
  }
50
50
 
51
+ @build_dirs[:aux].map!{|dir| dir = Dir.glob(dir)}
52
+ @build_dirs[:aux].flatten!
53
+ @build_dirs[:aux].delete_if{|f| !File.directory?(f)}
54
+
51
55
  @pkg_dirs = {
52
56
  :simp => "#{@build_dir}/SIMP",
53
57
  :ext => "#{@build_dir}/Ext_*"
@@ -86,7 +90,7 @@ module Simp::Rake::Build
86
90
  Dir.chdir(dir) do
87
91
  begin
88
92
  rake_flags = Rake.application.options.trace ? '--trace' : ''
89
- sh %{rake clean[#{args.chroot}] #{rake_flags}}
93
+ %x{rake clean[#{args.chroot}] #{rake_flags}}
90
94
  clean_failures_lock.synchronize do
91
95
  clean_failures << dir unless $?.success?
92
96
  end
@@ -292,12 +296,12 @@ module Simp::Rake::Build
292
296
 
293
297
  check_dvd_env
294
298
 
295
- Rake::Task['pkg:modules'].invoke(args.chroot)
299
+ Rake::Task['pkg:simp_cli'].invoke(args.chroot)
296
300
  Rake::Task['pkg:aux'].invoke(args.chroot)
297
301
  if "#{args.docs}" == 'true'
298
302
  Rake::Task['pkg:doc'].invoke(args.chroot)
299
303
  end
300
- Rake::Task['pkg:simp_cli'].invoke(args.chroot)
304
+ Rake::Task['pkg:modules'].invoke(args.chroot)
301
305
 
302
306
  # The main SIMP RPM must be built last!
303
307
  Rake::Task['pkg:simp'].invoke(args.chroot,args.snapshot_release)
@@ -326,8 +330,8 @@ module Simp::Rake::Build
326
330
  out_dir = "#{output_dir}/SRPMS"
327
331
  mkdir_p(out_dir, :verbose => _verbose) unless File.directory?(out_dir)
328
332
 
329
- if not uptodate?("#{out_dir}/#{File.basename(srpm)}",[srpm])
330
- cp(srpm,out_dir, :verbose => _verbose)
333
+ unless uptodate?("#{out_dir}/#{File.basename(srpm)}",[srpm])
334
+ cp(srpm, out_dir, :verbose => _verbose)
331
335
  end
332
336
  end
333
337
 
@@ -335,8 +339,8 @@ module Simp::Rake::Build
335
339
  out_dir = "#{output_dir}/RPMS/#{rpm.split('.')[-2]}"
336
340
  mkdir_p(out_dir, :verbose => _verbose) unless File.directory?(out_dir)
337
341
 
338
- if not uptodate?("#{out_dir}/#{File.basename(rpm)}",[rpm])
339
- cp(rpm,out_dir, :verbose => _verbose)
342
+ unless uptodate?("#{out_dir}/#{File.basename(rpm)}",[rpm])
343
+ cp(rpm, out_dir, :verbose => _verbose)
340
344
  end
341
345
  end
342
346
  end
@@ -516,6 +520,7 @@ module Simp::Rake::Build
516
520
 
517
521
  ENV vars:
518
522
  - Set `SIMP_PKG_verbose=yes` to report file operations as they happen.
523
+ - Set `SIMP_PKG_repoclose_pe=yes` to enable repoclosure on PE-related RPMs.
519
524
 
520
525
  EOM
521
526
  task :repoclosure,[:target_dir,:aux_dir] => [:prep] do |t,args|
@@ -528,6 +533,7 @@ module Simp::Rake::Build
528
533
  end
529
534
 
530
535
  _verbose = ENV.fetch('SIMP_PKG_verbose','no') == 'yes'
536
+ _repoclose_pe = ENV.fetch('SIMP_PKG_repoclose_pe','no') == 'yes'
531
537
 
532
538
  yum_conf_template = <<-EOF
533
539
  [main]
@@ -537,6 +543,9 @@ obsoletes=1
537
543
  gpgcheck=0
538
544
  plugins=1
539
545
  installonly_limit=5
546
+ <% unless #{_repoclose_pe} -%>
547
+ exclude=*-pe-*
548
+ <% end -%>
540
549
 
541
550
  <% repo_files.each do |repo| -%>
542
551
  include=file://<%= repo %>
@@ -641,76 +650,62 @@ protect=1
641
650
  # Default package metadata for reference
642
651
  default_metadata = YAML.load(File.read("#{@src_dir}/build/package_metadata_defaults.yaml"))
643
652
 
644
- failures = {}
645
-
646
653
  metadata = Parallel.map(
654
+ # Allow for shell globs
647
655
  Array(dirs),
648
656
  :in_processes => get_cpu_limit,
649
657
  :progress => task.name
650
658
  ) do |dir|
651
659
  result = []
652
660
 
653
- begin
654
- build_attempt = 0
655
- try_build = true
656
- while(try_build) do
661
+ fail("Could not find directory #{dir}") unless Dir.exist?(dir)
662
+
663
+ Dir.chdir(dir) do
664
+ if File.exist?('Rakefile')
665
+
666
+ unique_build = (get_cpu_limit != 1)
667
+
668
+ rake_flags = Rake.application.options.trace ? '--trace' : ''
669
+ cmd = %{rake pkg:rpm[#{chroot},unique_build,#{snapshot_release}] #{rake_flags} 2>&1}
657
670
  begin
671
+ if _verbose
672
+ $stderr.puts("Running 'rake pkg:rpm'")
673
+ end
658
674
 
659
- fail("Could not find directory #{dir}") unless Dir.exist?(dir)
660
-
661
- Dir.chdir(dir) do
662
- if File.exist?('Rakefile')
663
- unique_build = (get_cpu_limit != 1)
664
- rake_flags = Rake.application.options.trace ? '--trace' : ''
665
- output = %x{rake pkg:rpm[#{chroot},unique_build,#{snapshot_release}] #{rake_flags} 2>&1}
666
- raise(output) unless $?.success?
667
-
668
- # Glob all generated rpms, and add their metadata to a result array.
669
- pkginfo = Hash.new
670
- Dir.glob('dist/*.rpm') do |rpm|
671
- if not rpm =~ /.*.src.rpm/ then
672
- # get_info from each generated rpm, not the spec file, so macros in the
673
- # metadata have already been resolved in the mock chroot.
674
- result << Simp::RPM.get_info(rpm)
675
- end
676
- end
677
- else
678
- puts "Warning: Could not find Rakefile in '#{dir}'"
679
- end
675
+ ::Bundler.with_clean_env do
676
+ %x{#{cmd}}
680
677
  end
681
- rescue Exception => e
682
- if build_attempt == 0
683
- # Run 'bundle' and try again
684
- ::Bundler.with_clean_env do
685
- out = %x(bundle install 2>&1)
686
- status = $?.success?
687
- puts out if _verbose
688
- end
689
- else
690
- build_attempt += 1
691
- try_build = false
692
- failures[dir] = e.to_s
693
- if _verbose
694
- stderr.puts(e.to_s)
695
- else
696
- stderr.puts("Error found in: #{File.basename(dir)}")
697
- end
678
+ rescue
679
+ if _verbose
680
+ $stderr.puts("First 'rake pkg:rpm' attempt failed, running bundle and trying again.")
681
+ end
682
+
683
+ ::Bundler.with_clean_env do
684
+ %x{bundle install}
685
+ %x{#{cmd}}
698
686
  end
699
687
  end
700
688
 
701
- try_build = false
702
- end
689
+ tarballs = Dir.glob('dist/*.tar.gz')
690
+ srpms = Dir.glob('dist/*.src.rpm')
691
+ rpms = (Dir.glob('dist/*.rpm') - srpms)
703
692
 
704
- result
705
- ensure
706
- unless failures.empty?
707
- errmsg = ['Error: Failures found during module build']
708
- failures.keys.each do |dir|
709
- errmsg << ('* ' + dir)
710
- errmsg << (failures[dir].lines.map{|ln| ln = " #{ln}}"})
693
+ # Not all items generate tarballs
694
+ tarballs.each do |pkg|
695
+ raise("Empty Tarball '#{pkg}' generated for #{dir}") if (File.stat(pkg).size == 0)
711
696
  end
712
-
713
- raise errmsg
697
+ raise("No SRPMs generated for #{dir}") if srpms.empty?
698
+ raise("No RPMs generated for #{dir}") if rpms.empty?
699
+
700
+ # Glob all generated rpms, and add their metadata to a result array.
701
+ pkginfo = Hash.new
702
+ rpms.each do |rpm|
703
+ # get_info from each generated rpm, not the spec file, so macros in the
704
+ # metadata have already been resolved in the mock chroot.
705
+ result << Simp::RPM.get_info(rpm)
706
+ end
707
+ else
708
+ puts "Warning: Could not find Rakefile in '#{dir}'"
714
709
  end
715
710
  end
716
711
  end
@@ -719,7 +714,7 @@ protect=1
719
714
  # Each module could generate multiple rpms, each with its own metadata.
720
715
  # Iterate over them to add all built rpms to autorequires.
721
716
  mod.each do |module_pkginfo|
722
- next unless (module_pkginfo)
717
+ next unless (module_pkginfo && module_pkginfo.is_a?(Hash))
723
718
 
724
719
  # Set up the autorequires
725
720
  if add_to_autoreq
@@ -25,6 +25,9 @@ module Simp::Rake::Build
25
25
  fail("Could not find simp main RPM in output directory!") unless simp_rpm
26
26
  simp_version = File.basename(simp_rpm).gsub(".noarch.rpm","").gsub("simp-","")
27
27
 
28
+ # For picking up the correct RPM template
29
+ ENV['SIMP_BUILD_version'] ||= simp_version
30
+
28
31
  return simp_version
29
32
  end
30
33
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ "6": ["6","7"]
2
3
  "5": "7"
3
4
  "4": "6"
4
5
  "2": "5"
@@ -1,382 +1,20 @@
1
1
  module Simp; end
2
2
  module Simp::Rake; end
3
3
  class Simp::Rake::Helpers
4
- module Simp::Rake::Helpers::RPM_Spec
5
-
4
+ module Simp::Rake::Helpers::RPMSpec
6
5
  def self.template
7
- return <<-EOF
8
- %{lua:
9
-
10
- --
11
- -- When you build you must to pass this along so that we know how
12
- -- to get the preliminary information.
13
- -- This directory should hold the following items:
14
- -- * 'build' directory
15
- -- * 'CHANGELOG' <- The RPM formatted Changelog
16
- -- * 'metadata.json'
17
- --
18
- -- Example:
19
- -- rpmbuild -D 'pup_module_info_dir /home/user/project/puppet_module' -ba SPECS/specfile.spec
20
- --
21
- -- If this is not found, we will look in %{_sourcedir} for the files and fall
22
- -- back to the current directory
23
- --
24
-
25
- src_dir = rpm.expand('%{pup_module_info_dir}')
26
-
27
- if string.match(src_dir, '^%%') or (posix.stat(src_dir, 'type') ~= 'directory') then
28
- src_dir = rpm.expand('%{_sourcedir}')
29
-
30
- if (posix.stat((src_dir .. "/metadata.json"), 'type') ~= 'regular') then
31
- src_dir = './'
32
- end
33
- end
34
-
35
- -- These UNKNOWN entries should break the build if something bad happens
36
-
37
- package_name = "UNKNOWN"
38
- package_version = "UNKNOWN"
39
- module_license = "UNKNOWN"
40
-
41
- --
42
- -- Default to 2016
43
- -- This was done due to the change in naming scheme across all of the modules.
44
- --
45
-
46
- package_release = '2016'
47
-
48
- }
49
-
50
- %{lua:
51
- -- Pull the Relevant Metadata out of the Puppet module metadata.json.
52
-
53
- metadata = ''
54
- metadata_file = io.open(src_dir .. "/metadata.json","r")
55
- if metadata_file then
56
- metadata = metadata_file:read("*all")
57
-
58
- -- Ignore the first curly brace
59
- metadata = metadata:gsub("{}?", '|', 1)
60
-
61
- -- Ignore all keys that are below the first level
62
- metadata = metadata:gsub("{.-}", '')
63
- metadata = metadata:gsub("%[.-%]", '')
64
- end
65
-
66
- -- This starts as an empty string so that we can build it later
67
- module_requires = ''
68
-
69
- }
70
-
71
- %{lua:
72
-
73
- -- Get the Module Name and put it in the correct format
74
-
75
- local name_match = string.match(metadata, '"name":%s+"(.-)"%s*,')
76
-
77
- module_author = ''
78
- module_name = ''
79
-
80
- if name_match then
81
- package_name = ('pupmod-' .. name_match)
82
-
83
- local i = 0
84
- for str in string.gmatch(name_match,'[^-]+') do
85
- if i == 0 then
86
- module_author = str
87
- else
88
- if module_name == '' then
89
- module_name = str
6
+ simp_version = ENV.fetch('SIMP_BUILD_version', @simp_version)
7
+ if simp_version
8
+ simp_main_version = simp_version.split('.').first
90
9
  else
91
- module_name = (module_name .. '-' .. str)
10
+ simp_main_version = 'default'
92
11
  end
93
- end
94
-
95
- i = i+1
96
- end
97
- else
98
- print("Error: Could not find valid package name in 'metadata.json'")
99
- end
100
-
101
- }
102
-
103
- %{lua:
104
-
105
- -- Get the Module Version
106
- -- This will not be processed at all
107
-
108
- local version_match = string.match(metadata, '"version":%s+"(.-)"%s*,')
109
-
110
- if version_match then
111
- package_version = version_match
112
- end
113
-
114
- }
115
-
116
- %{lua:
117
-
118
- -- Get the Module License
119
- -- This will not be processed at all
120
-
121
- local license_match = string.match(metadata, '"license":%s+"(.-)"%s*,')
122
-
123
- if license_match then
124
- module_license = license_match
125
- end
126
-
127
- }
128
-
129
- %{lua:
130
-
131
- -- Get the Module Summary
132
- -- This will not be processed at all
133
-
134
- local summary_match = string.match(metadata, '"summary":%s+"(.-)"%s*,')
135
-
136
- if summary_match then
137
- module_summary = summary_match
138
- end
139
-
140
- }
141
-
142
- %{lua:
143
-
144
- -- Get the Module Source line for the URL string
145
- -- This will not be processed at all
146
-
147
- local source_match = string.match(metadata, '"source":%s+"(.-)"%s*,')
148
-
149
- if source_match then
150
- module_source = source_match
151
- end
152
-
153
- }
154
-
155
- %{lua:
156
-
157
- -- Snag the RPM-specific items out of the 'build/rpm_metadata' directory
158
-
159
- -- First, the Release Number
160
-
161
- rel_file = io.open(src_dir .. "/build/rpm_metadata/release", "r")
162
-
163
- if not rel_file then
164
- -- Need this for the SRPM case
165
- rel_file = io.open(src_dir .. "/release", "r")
166
- end
167
12
 
168
- if rel_file then
169
- for line in rel_file:lines() do
170
- is_comment = string.match(line, "^%s*#")
171
- is_blank = string.match(line, "^%s*$")
13
+ template_file = File.join(File.dirname(__FILE__), 'rpm_spec', 'assets', "simp#{simp_main_version}.spec")
172
14
 
173
- if not (is_comment or is_blank) then
174
- package_release = line
175
- break
176
- end
177
- end
178
- end
179
-
180
- }
181
-
182
- %{lua:
183
-
184
- -- Next, the Requirements
185
- req_file = io.open(src_dir .. "/build/rpm_metadata/requires", "r")
186
-
187
- if not req_file then
188
- -- Need this for the SRPM case
189
- req_file = io.open(src_dir .. "/requires", "r")
190
- end
191
-
192
- if req_file then
193
- for line in req_file:lines() do
194
- valid_line = (string.match(line, "^Requires: ") or string.match(line, "^Obsoletes: ") or string.match(line, "^Provides: "))
195
-
196
- if valid_line then
197
- module_requires = (module_requires .. "\\n" .. line)
198
- end
199
- end
200
- end
201
- }
202
-
203
- %define module_name %{lua: print(module_name)}
204
- %define base_name %{lua: print(package_name)}
205
-
206
- %{lua:
207
- -- Determine which Variant we are going to build
208
-
209
- local variant = rpm.expand("%{_variant}")
210
- local variant_version = nil
211
-
212
- local foo = ""
213
-
214
- local i = 0
215
- for str in string.gmatch(variant,'[^-]+') do
216
- if i == 0 then
217
- variant = str
218
- elseif i == 1 then
219
- variant_version = str
220
- else
221
- break
222
- end
223
-
224
- i = i+1
225
- end
226
-
227
- rpm.define("variant " .. variant)
228
-
229
- if variant == "pe" then
230
- rpm.define("puppet_user pe-puppet")
231
- else
232
- rpm.define("puppet_user puppet")
233
- end
234
-
235
- if variant == "pe" then
236
- if variant_version and ( rpm.vercmp(variant_version,'4') >= 0 ) then
237
- rpm.define("_sysconfdir /etc/puppetlabs/code")
238
- else
239
- rpm.define("_sysconfdir /etc/puppetlabs/puppet")
240
- end
241
- elseif variant == "p4" then
242
- rpm.define("_sysconfdir /etc/puppetlabs/code")
243
- else
244
- rpm.define("_sysconfdir /etc/puppet")
245
- end
246
- }
247
-
248
- Summary: %{module_name} Puppet Module
249
- %if 0%{?_variant:1}
250
- Name: %{base_name}-%{variant}
251
- %else
252
- Name: %{base_name}
253
- %endif
254
-
255
- Version: %{lua: print(package_version)}
256
- Release: %{lua: print(package_release)}
257
- License: %{lua: print(module_license)}
258
- Group: Applications/System
259
- Source0: %{base_name}-%{version}-%{release}.tar.gz
260
- Source1: %{lua: print("metadata.json")}
261
- %{lua:
262
- -- Include our sources as appropriate
263
- changelog = io.open(src_dir .. "/CHANGELOG","r")
264
- if changelog then
265
- print("Source2: " .. "CHANGELOG\\n")
266
- end
15
+ raise "Error: Could not find template for SIMP version #{simp_version}" unless File.exist?(template_file)
267
16
 
268
- if rel_file then
269
- print("Source3: " .. "release\\n")
270
- end
271
- if req_file then
272
- print("Source4: " .. "requires\\n")
273
- end
274
- }
275
- URL: %{lua: print(module_source)}
276
- BuildRoot: %{_tmppath}/%{base_name}-%{version}-%{release}-buildroot
277
- BuildArch: noarch
278
-
279
- %if "%{variant}" == "pe"
280
- Requires: pe-puppet >= 3.8.6
281
- %else
282
- Requires: puppet >= 3.8.6
283
- %endif
284
-
285
- %if ("%{base_name}" != "pupmod-simp-simplib") && ("%{base_name}" != "pupmod-puppetlabs-stdlib")
286
- Requires: pupmod-simp-simplib >= 1.2.6
287
- %endif
288
-
289
- %if "%{base_name}" != "pupmod-puppetlabs-stdlib"
290
- Requires: pupmod-puppetlabs-stdlib >= 4.9.0
291
- Requires: pupmod-puppetlabs-stdlib < 6.0.0
292
- %endif
293
-
294
- %{lua: print(module_requires)}
295
-
296
- Provides: pupmod-%{lua: print(module_name)} = %{lua: print(package_version .. "-" .. package_release)}
297
- Obsoletes: pupmod-%{lua: print(module_name)} < %{lua: print(package_version .. "-" .. package_release)}
298
-
299
- %{lua:
300
-
301
- -- This is a workaround for the 'simp-rsync' real RPM conflict but is
302
- -- required by some external modules.
303
- -- This should be removed when SIMP 6 is stable
304
-
305
- author_rpm_name = module_author .. "-" .. module_name
306
-
307
- if author_rpm_name ~= 'simp-rsync' then
308
- print("Provides: " .. author_rpm_name .. " = " .. package_version .. "-" .. package_release .. "\\n")
309
- print("Obsoletes: " .. author_rpm_name .. " < " .. package_version .. "-" .. package_release .. "\\n")
310
- end
311
- }
312
-
313
- Prefix: %{_sysconfdir}/environments/simp/modules
314
-
315
- %description
316
- %{lua: print(module_summary)}
317
-
318
- %prep
319
- %setup -q -n %{base_name}-%{version}
320
-
321
- %build
322
-
323
- %install
324
- [ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
325
-
326
- mkdir -p %{buildroot}/%{prefix}
327
-
328
- rm -rf .git
329
- rm -f *.lock
330
- rm -rf spec/fixtures/modules
331
- rm -rf dist
332
- rm -rf junit
333
- rm -rf log
334
-
335
- curdir=`pwd`
336
- dirname=`basename $curdir`
337
- cp -r ../$dirname %{buildroot}/%{prefix}/%{module_name}
338
-
339
- %clean
340
- [ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
341
-
342
- mkdir -p %{buildroot}/%{prefix}
343
-
344
- %files
345
- %defattr(0640,root,%{puppet_user},0750)
346
- %{prefix}/%{module_name}
347
-
348
- %changelog
349
- %{lua:
350
- -- Finally, the CHANGELOG
351
-
352
- -- A default CHANGELOG in case we cannot find a real one
353
-
354
- default_changelog = [===[
355
- * $date Auto Changelog <auto@no.body> - $version-$release
356
- - Latest release of $name
357
- ]===]
358
-
359
- default_lookup_table = {
360
- date = os.date("%a %b %d %Y"),
361
- version = package_version,
362
- release = package_release,
363
- name = package_name
364
- }
365
-
366
- changelog = io.open(src_dir .. "/CHANGELOG","r")
367
- if changelog then
368
- first_line = changelog:read()
369
- if string.match(first_line, "^*%s+%a%a%a%s+%a%a%a%s+%d%d?%s+%d%d%d%d%s+.+") then
370
- changelog:seek("set",0)
371
- print(changelog:read("*all"))
372
- else
373
- print((default_changelog:gsub('$(%w+)', default_lookup_table)))
374
- end
375
- else
376
- print((default_changelog:gsub('$(%w+)', default_lookup_table)))
377
- end
378
- }
379
- EOF
17
+ return File.read(template_file)
380
18
  end
381
19
  end
382
20
  end