simp-rake-helpers 5.11.6 → 5.12.3

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.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +49 -0
  3. data/CONTRIBUTING.md +1 -1
  4. data/Gemfile +0 -3
  5. data/README.md +3 -38
  6. data/Rakefile +2 -3
  7. data/lib/simp/command_utils.rb +21 -0
  8. data/lib/simp/local_gpg_signing_key.rb +128 -79
  9. data/lib/simp/rake/build/auto.rb +4 -2
  10. data/lib/simp/rake/build/build.rb +5 -4
  11. data/lib/simp/rake/build/iso.rb +57 -31
  12. data/lib/simp/rake/build/pkg.rb +118 -56
  13. data/lib/simp/rake/build/spec.rb +1 -1
  14. data/lib/simp/rake/build/tar.rb +1 -1
  15. data/lib/simp/rake/build/unpack.rb +1 -1
  16. data/lib/simp/rake/build/upload.rb +1 -1
  17. data/lib/simp/rake/build/vermap.yaml +1 -1
  18. data/lib/simp/rake/helpers/assets/rpm_spec/simp6.spec +3 -3
  19. data/lib/simp/rake/helpers/assets/rpm_spec/simpdefault.spec +3 -3
  20. data/lib/simp/rake/helpers/version.rb +1 -1
  21. data/lib/simp/rake/helpers.rb +2 -2
  22. data/lib/simp/rake/pkg.rb +5 -1
  23. data/lib/simp/rake/pupmod/helpers.rb +2 -0
  24. data/lib/simp/rake/rubygem.rb +5 -1
  25. data/lib/simp/rake.rb +3 -17
  26. data/lib/simp/rpm.rb +10 -127
  27. data/lib/simp/rpm_signer.rb +321 -0
  28. data/spec/acceptance/nodesets/default.yml +0 -3
  29. data/spec/acceptance/{00_pkg_rpm_custom_scriptlets_spec.rb → suites/default/00_pkg_rpm_custom_scriptlets_spec.rb} +21 -22
  30. data/spec/acceptance/{10_pkg_rpm_spec.rb → suites/default/10_pkg_rpm_spec.rb} +50 -52
  31. data/spec/acceptance/{30_pkg_misc_spec.rb → suites/default/30_pkg_misc_spec.rb} +1 -1
  32. data/spec/acceptance/{50_local_gpg_signing_key_spec.rb → suites/default/50_local_gpg_signing_key_spec.rb} +7 -3
  33. data/spec/acceptance/suites/default/55_build_pkg_signing_spec.rb +391 -0
  34. data/spec/acceptance/{development → suites/default/development}/docker_env.sh +0 -0
  35. data/spec/acceptance/{development → suites/default/development}/rerun_acceptance_tests.sh +0 -0
  36. data/spec/acceptance/{development → suites/default/development}/vagrant_rsync.sh +0 -0
  37. data/spec/acceptance/{files → suites/default/files}/asset/Rakefile +0 -0
  38. data/spec/acceptance/{files → suites/default/files}/asset/build/asset.spec +0 -0
  39. data/spec/acceptance/{files → suites/default/files}/asset_with_misordered_entries/Rakefile +0 -0
  40. data/spec/acceptance/{files → suites/default/files}/asset_with_misordered_entries/build/asset_with_misordered_entries.spec +0 -0
  41. data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/RPM-GPG-KEY-SIMP-Dev +0 -0
  42. data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/gengpgkey +0 -0
  43. data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/pubring.gpg +0 -0
  44. data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/random_seed +0 -0
  45. data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/run_gpg_agent +0 -0
  46. data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/secring.gpg +0 -0
  47. data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/trustdb.gpg +0 -0
  48. data/spec/acceptance/{files → suites/default/files}/build/project_skeleton/Puppetfile.tracking +0 -0
  49. data/spec/acceptance/{files → suites/default/files}/build/project_skeleton/README.md +0 -0
  50. data/spec/acceptance/{files → suites/default/files}/build/project_skeleton/Rakefile +0 -0
  51. data/spec/acceptance/{files → suites/default/files}/build/project_skeleton/src/assets/simp/build/simp.spec +0 -0
  52. data/spec/acceptance/{files → suites/default/files}/module/CHANGELOG +0 -0
  53. data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-new-package-2.1 → suites/default/files/module}/Rakefile +0 -0
  54. data/spec/acceptance/{files → suites/default/files}/module/metadata.json +0 -0
  55. data/spec/acceptance/{files → suites/default/files}/module_with_misordered_entries/CHANGELOG +0 -0
  56. data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-new-package-3.0 → suites/default/files/module_with_misordered_entries}/Rakefile +0 -0
  57. data/spec/acceptance/{files → suites/default/files}/module_with_misordered_entries/metadata.json +0 -0
  58. data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-new-package-2.1 → suites/default/files/simplib}/CHANGELOG +0 -0
  59. data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-1.0 → suites/default/files/simplib}/Rakefile +0 -0
  60. data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-1.0 → suites/default/files/simplib}/build/rpm_metadata/requires +0 -0
  61. data/spec/acceptance/{files → suites/default/files}/simplib/metadata.json +0 -0
  62. data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-new-package-3.0 → suites/default/files/testpackage}/CHANGELOG +0 -0
  63. data/spec/acceptance/suites/default/files/testpackage/README +8 -0
  64. data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-2.0 → suites/default/files/testpackage}/Rakefile +0 -0
  65. data/spec/acceptance/{files/package_upgrades/pupmod-simp-testpackage-1.0 → suites/default/files/testpackage}/build/rpm_metadata/requires +0 -0
  66. data/spec/acceptance/{files → suites/default/files}/testpackage/metadata.json +0 -0
  67. data/spec/acceptance/suites/default/files/testpackage/spec/classes/init_spec.rb +1 -0
  68. data/spec/acceptance/suites/default/files/testpackage/spec/files/mock_something.rb +3 -0
  69. data/spec/acceptance/suites/default/files/testpackage/utils/convert_v1_to_v2.rb +3 -0
  70. data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-1.0 → suites/default/files/testpackage_custom_scriptlet}/CHANGELOG +0 -0
  71. data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-2.2 → suites/default/files/testpackage_custom_scriptlet}/Rakefile +0 -0
  72. data/spec/acceptance/{files → suites/default/files}/testpackage_custom_scriptlet/build/rpm_metadata/custom/overrides +0 -0
  73. data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-2.0 → suites/default/files/testpackage_custom_scriptlet}/build/rpm_metadata/requires +0 -0
  74. data/spec/acceptance/{files → suites/default/files}/testpackage_custom_scriptlet/metadata.json +0 -0
  75. data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-2.0 → suites/default/files/testpackage_missing_license}/CHANGELOG +0 -0
  76. data/spec/acceptance/{files/module → suites/default/files/testpackage_missing_license}/Rakefile +0 -0
  77. data/spec/acceptance/{files/simplib → suites/default/files/testpackage_missing_license}/build/rpm_metadata/requires +0 -0
  78. data/spec/acceptance/{files → suites/default/files}/testpackage_missing_license/metadata.json +0 -0
  79. data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-2.2 → suites/default/files/testpackage_missing_metadata_file}/CHANGELOG +0 -0
  80. data/spec/acceptance/{files/module_with_misordered_entries → suites/default/files/testpackage_missing_metadata_file}/Rakefile +0 -0
  81. data/spec/acceptance/{files/testpackage_custom_scriptlet → suites/default/files/testpackage_missing_metadata_file}/build/rpm_metadata/requires +0 -0
  82. data/spec/acceptance/{files/simplib → suites/default/files/testpackage_missing_name}/CHANGELOG +0 -0
  83. data/spec/acceptance/{files/package_upgrades/pupmod-simp-testpackage-1.0 → suites/default/files/testpackage_missing_name}/Rakefile +0 -0
  84. data/spec/acceptance/{files/testpackage_missing_license → suites/default/files/testpackage_missing_name}/build/rpm_metadata/requires +0 -0
  85. data/spec/acceptance/{files → suites/default/files}/testpackage_missing_name/metadata.json +0 -0
  86. data/spec/acceptance/{files/testpackage → suites/default/files/testpackage_missing_source}/CHANGELOG +0 -0
  87. data/spec/acceptance/{files/package_upgrades/pupmod-simp-testpackage-2.0 → suites/default/files/testpackage_missing_source}/Rakefile +0 -0
  88. data/spec/acceptance/{files/testpackage_missing_metadata_file → suites/default/files/testpackage_missing_source}/build/rpm_metadata/requires +0 -0
  89. data/spec/acceptance/{files → suites/default/files}/testpackage_missing_source/metadata.json +0 -0
  90. data/spec/acceptance/{files/testpackage_custom_scriptlet → suites/default/files/testpackage_missing_summary}/CHANGELOG +0 -0
  91. data/spec/acceptance/{files/simplib → suites/default/files/testpackage_missing_summary}/Rakefile +0 -0
  92. data/spec/acceptance/{files/testpackage_missing_name → suites/default/files/testpackage_missing_summary}/build/rpm_metadata/requires +0 -0
  93. data/spec/acceptance/{files → suites/default/files}/testpackage_missing_summary/metadata.json +0 -0
  94. data/spec/acceptance/{files/testpackage_missing_license → suites/default/files/testpackage_missing_version}/CHANGELOG +0 -0
  95. data/spec/acceptance/{files/testpackage → suites/default/files/testpackage_missing_version}/Rakefile +0 -0
  96. data/spec/acceptance/{files/testpackage_missing_source → suites/default/files/testpackage_missing_version}/build/rpm_metadata/requires +0 -0
  97. data/spec/acceptance/{files → suites/default/files}/testpackage_missing_version/metadata.json +0 -0
  98. data/spec/acceptance/{files → suites/default/files}/testpackage_with_bad_changelog_date/CHANGELOG +0 -0
  99. data/spec/acceptance/{files/testpackage_custom_scriptlet → suites/default/files/testpackage_with_bad_changelog_date}/Rakefile +0 -0
  100. data/spec/acceptance/{files/testpackage_missing_summary → suites/default/files/testpackage_with_bad_changelog_date}/build/rpm_metadata/requires +0 -0
  101. data/spec/acceptance/{files → suites/default/files}/testpackage_with_bad_changelog_date/metadata.json +0 -0
  102. data/spec/acceptance/{files/testpackage_missing_metadata_file → suites/default/files/testpackage_with_release}/CHANGELOG +0 -0
  103. data/spec/acceptance/{files/testpackage_missing_license → suites/default/files/testpackage_with_release}/Rakefile +0 -0
  104. data/spec/acceptance/{files → suites/default/files}/testpackage_with_release/build/rpm_metadata/release +0 -0
  105. data/spec/acceptance/{files/testpackage_missing_version → suites/default/files/testpackage_with_release}/build/rpm_metadata/requires +0 -0
  106. data/spec/acceptance/{files → suites/default/files}/testpackage_with_release/metadata.json +0 -0
  107. data/spec/acceptance/{files/testpackage_missing_metadata_file → suites/default/files/testpackage_without_changelog}/Rakefile +0 -0
  108. data/spec/acceptance/{files/testpackage_with_bad_changelog_date → suites/default/files/testpackage_without_changelog}/build/rpm_metadata/requires +0 -0
  109. data/spec/acceptance/{files → suites/default/files}/testpackage_without_changelog/metadata.json +0 -0
  110. data/spec/acceptance/{support → suites/default/support}/build_project_helpers.rb +33 -9
  111. data/spec/acceptance/{support → suites/default/support}/build_user_helpers.rb +0 -0
  112. data/spec/acceptance/{support → suites/default/support}/pkg_rpm_helpers.rb +0 -0
  113. data/spec/lib/simp/command_utils_spec.rb +29 -0
  114. data/spec/lib/simp/local_gpg_signing_key_spec.rb.beaker-only +115 -18
  115. data/spec/lib/simp/rake/pupmod/fixtures/simpmod/README.md +2 -2
  116. data/spec/lib/simp/rpm_signer_spec.rb +98 -0
  117. data/spec/lib/simp/rpm_spec.rb +0 -6
  118. data/spec/spec_helper_acceptance.rb +4 -0
  119. metadata +92 -149
  120. data/.travis.yml +0 -41
  121. data/lib/simp/rake/helpers/assets/rpm_spec/simp4.spec +0 -388
  122. data/lib/simp/rake/helpers/assets/rpm_spec/simp5.spec +0 -388
  123. data/spec/acceptance/20_pkg_rpm_upgrade_spec.rb +0 -236
  124. data/spec/acceptance/55_build_pkg_signing_spec.rb +0 -140
  125. data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-new-package-2.1/build/rpm_metadata/custom/overrides +0 -14
  126. data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-new-package-2.1/build/rpm_metadata/requires +0 -1
  127. data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-new-package-2.1/metadata.json +0 -33
  128. data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-new-package-3.0/build/rpm_metadata/custom/overrides +0 -14
  129. data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-new-package-3.0/build/rpm_metadata/requires +0 -1
  130. data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-new-package-3.0/metadata.json +0 -33
  131. data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-old-package-1.0/metadata.json +0 -33
  132. data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-old-package-2.0/metadata.json +0 -33
  133. data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-old-package-2.2/build/rpm_metadata/custom/overrides +0 -14
  134. data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-old-package-2.2/build/rpm_metadata/requires +0 -1
  135. data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-old-package-2.2/metadata.json +0 -33
  136. data/spec/acceptance/files/mock_packages/pupmod-puppetlabs-stdlib.spec +0 -32
  137. data/spec/acceptance/files/mock_packages/pupmod-simp-foo.spec +0 -32
  138. data/spec/acceptance/files/mock_packages/pupmod-simp-simplib.spec +0 -32
  139. data/spec/acceptance/files/mock_packages/rpmbuild.sh +0 -25
  140. data/spec/acceptance/files/mock_packages/simp-adapter/etc/simp/adapter_config.yaml +0 -3
  141. data/spec/acceptance/files/mock_packages/simp-adapter/usr/local/sbin/simp_rpm_helper +0 -495
  142. data/spec/acceptance/files/mock_packages/simp-adapter.spec +0 -43
  143. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/CHANGELOG +0 -2
  144. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/CentOS.yaml +0 -2
  145. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/RedHat.yaml +0 -2
  146. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/hiera.yaml +0 -14
  147. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/manifests/init.pp +0 -2
  148. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/metadata.json +0 -37
  149. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/CHANGELOG +0 -5
  150. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/build/rpm_metadata/requires +0 -2
  151. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/CentOS.yaml +0 -2
  152. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/RedHat.yaml +0 -2
  153. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/hiera.yaml +0 -14
  154. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/manifests/init.pp +0 -3
  155. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/metadata.json +0 -37
  156. data/spec/acceptance/files/testpackage/build/rpm_metadata/requires +0 -2
  157. data/spec/acceptance/files/testpackage_missing_name/CHANGELOG +0 -2
  158. data/spec/acceptance/files/testpackage_missing_name/Rakefile +0 -3
  159. data/spec/acceptance/files/testpackage_missing_source/CHANGELOG +0 -2
  160. data/spec/acceptance/files/testpackage_missing_source/Rakefile +0 -3
  161. data/spec/acceptance/files/testpackage_missing_summary/CHANGELOG +0 -2
  162. data/spec/acceptance/files/testpackage_missing_summary/Rakefile +0 -3
  163. data/spec/acceptance/files/testpackage_missing_version/CHANGELOG +0 -2
  164. data/spec/acceptance/files/testpackage_missing_version/Rakefile +0 -3
  165. data/spec/acceptance/files/testpackage_with_bad_changelog_date/Rakefile +0 -3
  166. data/spec/acceptance/files/testpackage_with_release/CHANGELOG +0 -2
  167. data/spec/acceptance/files/testpackage_with_release/Rakefile +0 -3
  168. data/spec/acceptance/files/testpackage_with_release/build/rpm_metadata/requires +0 -1
  169. data/spec/acceptance/files/testpackage_without_changelog/Rakefile +0 -3
  170. data/spec/acceptance/files/testpackage_without_changelog/build/rpm_metadata/requires +0 -1
  171. data/spec/lib/simp/ci/files/job_broken_link_nodeset/spec/acceptance/suites/default/nodesets +0 -1
  172. data/spec/lib/simp/ci/files/job_invalid_nodeset/spec/acceptance/suites/default/nodesets +0 -1
  173. data/spec/lib/simp/ci/files/job_invalid_suite/spec/acceptance/suites/default/nodesets +0 -1
  174. data/spec/lib/simp/ci/files/job_missing_nodeset/spec/acceptance/suites/default/nodesets +0 -1
  175. data/spec/lib/simp/ci/files/job_missing_suite_and_nodeset/spec/acceptance/suites/default/nodesets +0 -1
  176. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/default/nodesets +0 -1
  177. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/default/nodesets +0 -1
  178. data/spec/lib/simp/ci/files/no_gitlab_config_with_tests/spec/acceptance/suites/default/nodesets +0 -1
  179. data/spec/lib/simp/ci/files/no_gitlab_config_without_tests/spec/acceptance/suites/default/nodesets +0 -1
  180. data/spec/lib/simp/ci/files/suite_skeleton_only/spec/acceptance/nodesets/default.yml +0 -1
  181. data/spec/lib/simp/ci/files/suite_skeleton_only/spec/acceptance/suites/default/nodesets +0 -1
  182. data/spec/lib/simp/ci/files/valid_job_nodeset_dir_link/spec/acceptance/suites/default/nodesets +0 -1
  183. data/spec/lib/simp/ci/files/valid_job_nodeset_link/spec/acceptance/suites/default/nodesets/default.yml +0 -1
  184. data/spec/lib/simp/files/build/testpackage.spec +0 -1
  185. data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/acceptance/nodesets/default.yml +0 -1
  186. data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/acceptance/suites/default/nodesets +0 -1
@@ -26,7 +26,7 @@ module Simp::Rake::Build
26
26
  namespace :iso do
27
27
  task :prep do
28
28
  if $simp6
29
- @build_dir = $simp6_build_dir
29
+ @build_dir = $simp6_build_dir || @distro_build_dir
30
30
  end
31
31
  end
32
32
 
@@ -120,6 +120,9 @@ module Simp::Rake::Build
120
120
  end
121
121
  end
122
122
 
123
+ reposync_location = File.join(@build_dir,'yum_data','reposync')
124
+ reposync_active = !Dir.glob(File.join(reposync_location, '**', 'repomd.xml')).empty?
125
+
123
126
  tarfiles = File.directory?(tarball) ?
124
127
  Dir.glob("#{tarball}/*.tar.gz") : [tarball]
125
128
  vermap = YAML::load_file( File.join( File.dirname(__FILE__), 'vermap.yaml'))
@@ -171,6 +174,7 @@ module Simp::Rake::Build
171
174
  unless Array(vermap[simpver.split('.').first]).include?(baseosver.split('.').first)
172
175
  if verbose
173
176
  warn("Could not find SIMP version mapping for #{simpver} for Base OS #{baseosver}")
177
+ warn("Do you need to update vermap.yaml in the Gem?")
174
178
  end
175
179
 
176
180
  next
@@ -186,34 +190,53 @@ module Simp::Rake::Build
186
190
  end
187
191
  end
188
192
 
189
- # Prune unwanted packages
190
- begin
191
- system("tar --no-same-permissions -C #{dir} -xzf #{tball} *simp_pkglist.txt")
192
- rescue
193
- # Does not matter if the command fails
194
- end
193
+ # If we've pulled in reposync directories, we expect them to
194
+ # completely overwrite the directory of the same name in the
195
+ # target ISO so no pruning is required
196
+ #
197
+ # Note: CASE MATTERS on the directory names
198
+ if reposync_active
199
+ repos_to_overwrite = Dir.glob(File.join(reposync_location, '*'))
200
+ .delete_if{|x| !File.directory?(x)}
201
+ .map{|x| File.basename(x)}
202
+
203
+ repos_to_overwrite.each do |repo|
204
+ src = File.join(reposync_location, repo)
205
+ target = File.join(dir, repo)
206
+
207
+ rm_rf(target, :verbose => verbose) if File.directory?(target)
208
+ cp_r(src, dir, :verbose => verbose)
209
+ end
210
+ else
211
+ # Prune unwanted packages
212
+ begin
213
+ system("tar --no-same-permissions -C #{dir} -xzf #{tball} *simp_pkglist.txt")
214
+ rescue
215
+ # Does not matter if the command fails
216
+ end
195
217
 
196
- pkglist_file = ENV.fetch(
197
- 'SIMP_PKGLIST_FILE',
198
- File.join(dir,"#{baseosver.split('.').first}-simp_pkglist.txt")
199
- )
200
-
201
- puts
202
- puts '-'*80
203
- puts "### Pruning packages not in file '#{pkglist_file}'"
204
- puts
205
- puts ' (override this with `SIMP_PKGLIST_FILE=<file>`)'
206
- puts
207
- puts '-'*80
208
- puts
209
-
210
- if (args.prune.casecmp("false") != 0) && File.exist?(pkglist_file)
211
- exclude_pkgs = Array.new
212
- File.read(pkglist_file).each_line do |line|
213
- next if line =~ /^(\s+|#.*)$/
214
- exclude_pkgs.push(line.chomp)
218
+ pkglist_file = ENV.fetch(
219
+ 'SIMP_PKGLIST_FILE',
220
+ File.join(dir,"#{baseosver.split('.').first}-simp_pkglist.txt")
221
+ )
222
+
223
+ puts
224
+ puts '-'*80
225
+ puts "### Pruning packages not in file '#{pkglist_file}'"
226
+ puts
227
+ puts ' (override this with `SIMP_PKGLIST_FILE=<file>`)'
228
+ puts
229
+ puts '-'*80
230
+ puts
231
+
232
+ if (args.prune.casecmp("false") != 0) && File.exist?(pkglist_file)
233
+ exclude_pkgs = Array.new
234
+ File.read(pkglist_file).each_line do |line|
235
+ next if line =~ /^(\s+|#.*)$/
236
+ exclude_pkgs.push(line.chomp)
237
+ end
238
+ prune_packages(dir,['SIMP'],exclude_pkgs,mkrepo)
215
239
  end
216
- prune_packages(dir,['SIMP'],exclude_pkgs,mkrepo)
217
240
  end
218
241
 
219
242
  # Add the SIMP code
@@ -230,13 +253,14 @@ module Simp::Rake::Build
230
253
  yum_dep_location = File.join(@build_dir,'yum_data',simp_dep_src,'packages')
231
254
  end
232
255
 
256
+ yum_dep_rpms = Dir.glob(File.join(yum_dep_location,'*.rpm'))
257
+
233
258
  unless File.directory?(yum_dep_location)
234
- fail("Could not find dependency directory at #{yum_dep_location}")
259
+ fail("Could not find dependency directory at #{yum_dep_location}") unless reposync_active
235
260
  end
236
261
 
237
- yum_dep_rpms = Dir.glob(File.join(yum_dep_location,'*.rpm'))
238
262
  if yum_dep_rpms.empty?
239
- fail("Could not find any dependency RPMs at #{yum_dep_location}")
263
+ fail("Could not find any dependency RPMs at #{yum_dep_location}") unless reposync_active
240
264
  end
241
265
 
242
266
  # Add any one-off RPMs that you might want to add to your own build
@@ -261,7 +285,9 @@ module Simp::Rake::Build
261
285
  cp(rpm,rpm_arch, :verbose => verbose)
262
286
  end
263
287
 
264
- fail("Could not find architecture '#{arch}' in the SIMP distribution") unless File.directory?(arch)
288
+ ln_s('noarch', arch, :verbose => verbose) if (!File.directory?(arch) && File.directory?('noarch'))
289
+ fail("Could not find architecture '#{arch}' in the SIMP distribution") unless (File.directory?(arch) || File.symlink?(arch))
290
+
265
291
  # Get everything set up properly...
266
292
  Dir.chdir(arch) do
267
293
  Dir.glob('../*') do |rpm_dir|
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/rake -T
2
2
 
3
3
  require 'simp/yum'
4
- require 'simp/local_gpg_signing_key.rb'
5
4
  require 'simp/rake/pkg'
6
5
  require 'simp/rake/build/constants'
7
6
  require 'simp/rake/build/rpmdeps'
@@ -17,9 +16,18 @@ module Simp::Rake::Build
17
16
  def initialize( base_dir )
18
17
  init_member_vars( base_dir )
19
18
 
19
+ @cpu_limit = get_cpu_limit
20
20
  @verbose = ENV.fetch('SIMP_PKG_verbose','no') == 'yes'
21
21
  @rpm_build_metadata = 'last_rpm_build_metadata.yaml'
22
22
  @rpm_dependency_file = File.join(@base_dir, 'build', 'rpm', 'dependencies.yaml')
23
+ @build_keys_dir = ENV.fetch('SIMP_PKG_build_keys_dir', File.join(@base_dir, '.dev_gpgkeys'))
24
+ @long_gpg_socket_err_msg = <<~EOM
25
+ If the problem is 'socket name <xxx> is too long', use SIMP_PKG_build_keys_dir
26
+ to override
27
+ #{@build_keys_dir}
28
+ with a shorter path. The socket name must be < 108 characters.
29
+
30
+ EOM
23
31
 
24
32
  define_tasks
25
33
  end
@@ -35,7 +43,7 @@ module Simp::Rake::Build
35
43
 
36
44
  # This doesn't get caught for things like 'rake clean'
37
45
  if $simp6 && $simp6_build_dir
38
- @build_dir = $simp6_build_dir
46
+ @build_dir = $simp6_build_dir || @distro_build_dir
39
47
  @dvd_src = File.join(@build_dir, File.basename(@dvd_src))
40
48
  end
41
49
 
@@ -66,7 +74,7 @@ module Simp::Rake::Build
66
74
  @build_dirs.each_pair do |k,dirs|
67
75
  Parallel.map(
68
76
  Array(dirs),
69
- :in_processes => get_cpu_limit,
77
+ :in_processes => @cpu_limit,
70
78
  :progress => t.name
71
79
  ) do |dir|
72
80
  Dir.chdir(dir) do
@@ -95,7 +103,7 @@ module Simp::Rake::Build
95
103
  @build_dirs.each_pair do |k,dirs|
96
104
  Parallel.map(
97
105
  Array(dirs),
98
- :in_processes => get_cpu_limit,
106
+ :in_processes => @cpu_limit,
99
107
  :progress => t.name
100
108
  ) do |dir|
101
109
  Dir.chdir(dir) do
@@ -109,36 +117,49 @@ module Simp::Rake::Build
109
117
  desc <<-EOM
110
118
  Prepare a GPG signing key to sign build packages
111
119
 
112
- * :key - the name of the directory under build/build_keys to
113
- prepare (defaults to 'dev')
120
+ * :key - the name of the build keys subdirectory to prepare
121
+ (defaults to 'dev')
122
+
123
+ - The default build keys directory is
124
+ `#{@build_keys_dir}`
125
+
114
126
 
115
127
  When :key is `dev`, a temporary signing key is created, if needed:
116
128
 
117
- - A 14-day `dev` key will be created if none exists, including:
118
- - The `<build_dir>/build_keys/dev/` dir
119
- - gpgagent assets to create/update the key
129
+ * A 14-day `dev` key will be created if none exists or the existing
130
+ key has expired. This includes creating
131
+ - A `dev` directory in the build keys directory
132
+ - gpg-agent assets to create/update the key within that `dev`
133
+ directory
120
134
 
121
135
  When :key is *not* `dev`, the logic is much stricter:
122
136
 
123
- - You must already have create `<build_dir>/build_keys/<:key>/`
124
- directoy, and placed a valid GPG signing key inside
137
+ - You must already have created the `<:key>` subdirectory within
138
+ the build keys directory and placed a valid GPG signing key and
139
+ requisite gpg-agent assets to access the key within the directory.
125
140
  - If the directory or key are missing, the task will fail.
126
141
 
127
142
  ENV vars:
128
143
  - Set `SIMP_PKG_verbose=yes` to report file operations as they happen.
144
+ - Set `SIMP_PKG_build_keys_dir` to override the default build keys path.
129
145
  EOM
130
146
  task :key_prep,[:key] => [:prep] do |t,args|
131
147
  args.with_defaults(:key => 'dev')
132
148
  key = args.key
133
- build_keys_dir = File.join(@build_dir, 'build_keys')
134
- key_dir = File.join(build_keys_dir,key)
149
+ key_dir = File.join(@build_keys_dir,key)
135
150
  dvd_dir = @dvd_src
136
151
 
137
- FileUtils.mkdir_p build_keys_dir
152
+ FileUtils.mkdir_p @build_keys_dir
138
153
 
139
- Dir.chdir(build_keys_dir) do
154
+ Dir.chdir(@build_keys_dir) do
140
155
  if key == 'dev'
141
- Simp::LocalGpgSigningKey.new(key_dir,{verbose: @verbose}).ensure_key
156
+ require 'simp/local_gpg_signing_key'
157
+
158
+ begin
159
+ Simp::LocalGpgSigningKey.new(key_dir,{verbose: @verbose}).ensure_key
160
+ rescue Exception => e
161
+ raise("#{e.message}\n\n#{@long_gpg_socket_err_msg}")
162
+ end
142
163
  else
143
164
  unless File.directory?(key_dir)
144
165
  fail("Could not find GPG keydir '#{key_dir}' in '#{Dir.pwd}'")
@@ -356,41 +377,79 @@ module Simp::Rake::Build
356
377
  Sign a set of RPMs.
357
378
 
358
379
  Signs any unsigned RPMs in the specified directory
359
- * :key - The key directory to use under #{@build_dir}/build_keys
360
- * Defaults to #{File.join(File.dirname(@rpm_dir), '*RPMS')}
380
+ * :key - The key directory to use under the build keys directory
381
+ * key defaults to 'dev'
382
+ * build keys directory defaults to
383
+ `#{@build_keys_dir}`
361
384
  * :rpm_dir - A directory containing RPM files to sign. Will recurse!
362
- * Defaults to 'dev'
385
+ * Defaults to #{File.join(File.dirname(@rpm_dir), '*RPMS')}
363
386
  * :force - Force rpms that are already signed to be resigned
364
387
  * Defaults to 'false', can be enabled with 'true'
388
+ * :digest_algo - Digest algorithm to be used when signing the RPMs
389
+ * Defaults to 'sha256'
390
+
391
+ ENV vars:
392
+ * Set `SIMP_RPM_verbose=yes` to report RPM operations as they happen.
393
+ * Set `SIMP_PKG_build_keys_dir` to override the default build keys path.
394
+ * Set `SIMP_PKG_rpmsign_timeout` to override the maximum time in seconds
395
+ to wait for an individual RPM signing operation to complete.
396
+ - Defaults to 60 seconds.
365
397
  EOM
366
- task :signrpms,[:key,:rpm_dir,:force] => [:prep,:key_prep] do |t,args|
367
- which('rpmsign') || raise(StandardError, 'Could not find rpmsign on your system. Exiting.')
398
+ task :signrpms,[:key,:rpm_dir,:force,:digest_algo] => [:prep,:key_prep] do |t,args|
399
+ require 'simp/rpm_signer'
368
400
 
369
401
  args.with_defaults(:key => 'dev')
370
402
  args.with_defaults(:rpm_dir => File.join(File.dirname(@rpm_dir), '*RPMS'))
371
403
  args.with_defaults(:force => 'false')
404
+ args.with_defaults(:digest_algo => 'sha256')
372
405
 
373
406
  force = (args[:force].to_s == 'false' ? false : true)
407
+ timeout = ENV['SIMP_PKG_rpmsign_timeout'] ? ENV['SIMP_PKG_rpmsign_timeout'].to_i : 60
408
+
409
+ opts = {
410
+ :digest_algo => args[:digest_algo],
411
+ :force => force,
412
+ :max_concurrent => @cpu_limit,
413
+ :progress_bar_title => t.name,
414
+ :timeout_seconds => timeout,
415
+ :verbose => @verbose
416
+ }
374
417
 
375
- rpm_dirs = Dir.glob(args[:rpm_dir])
376
- to_sign = []
418
+ results = nil
419
+ begin
420
+ results = Simp::RpmSigner.sign_rpms(
421
+ args[:rpm_dir],
422
+ File.join(@build_keys_dir, args[:key]),
423
+ opts
424
+ )
425
+ rescue Exception => e
426
+ raise("#{e.message}\n\n#{@long_gpg_socket_err_msg}")
427
+ end
377
428
 
378
- rpm_dirs.each do |rpm_dir|
379
- Find.find(rpm_dir) do |rpm|
380
- next unless File.readable?(rpm)
381
- to_sign << rpm if rpm =~ /\.rpm$/
429
+ if results
430
+ successes = results.select { |rpm,status| status == :signed }
431
+ failures = results.select { |rpm,status| status == :unsigned }
432
+ already_signed = results.select { |rpm,status| status == :skipped_already_signed }
433
+
434
+ if opts[:verbose]
435
+ puts
436
+ puts 'Summary'
437
+ puts '======='
438
+ puts "# RPMs already signed: #{already_signed.size}"
439
+ puts "# RPMs successfully signed: #{successes.size}"
440
+ puts "# RPM signing failures: #{failures.size}"
441
+ puts
382
442
  end
383
- end
384
443
 
385
- Parallel.map(
386
- to_sign,
387
- :in_processes => get_cpu_limit,
388
- :progress => t.name
389
- ) do |rpm|
390
- rpm_info = Simp::RPM.new(rpm)
391
-
392
- if force || !rpm_info.signature
393
- Simp::RPM.signrpm(rpm, "#{@build_dir}/build_keys/#{args[:key]}")
444
+ if !failures.empty?
445
+ if ((results.size - already_signed.size) == (failures.size))
446
+ detail = already_signed.empty? ? '' : 'unsigned '
447
+ raise("ERROR: Failed to sign all #{detail}RPMs in #{args[:rpm_dir]}")
448
+ else
449
+ err_msg = "ERROR: Failed to sign some RPMs in #{args[:rpm_dir]}:\n"
450
+ err_msg += " #{failures.keys.join("\n ")}"
451
+ raise(err_msg)
452
+ end
394
453
  end
395
454
  end
396
455
  end
@@ -446,7 +505,9 @@ module Simp::Rake::Build
446
505
  $stderr.puts "pkg:checksig: Warning no GPG keys found in #{key_dirs_tried}"
447
506
  end
448
507
  end
449
- public_keys += Dir.glob(File.join(@build_dir, 'build_keys', '*', 'RPM-GPG-KEY*'))
508
+
509
+ # be sure to include any development keys packaged with the DVD
510
+ public_keys += Dir.glob(File.join(@dvd_src, 'RPM-GPG-KEY*'))
450
511
 
451
512
  # Only import thngs that look like GPG keys...
452
513
  public_keys.each do |key|
@@ -464,8 +525,9 @@ module Simp::Rake::Build
464
525
  rpm_dirs.each do |rpm_dir|
465
526
  Find.find(rpm_dir) do |path|
466
527
  if (path =~ /.*\.rpm$/)
467
- result = %x{#{rpm_cmd} --checksig #{path}}.strip
468
- if result !~ /:.*\(\S+\).* OK$/
528
+ %x{#{rpm_cmd} --checksig #{path}}.strip
529
+ result = $?
530
+ unless result && (result.exitstatus == 0)
469
531
  bad_rpms << path.split(/\s/).first
470
532
  end
471
533
  end
@@ -544,23 +606,19 @@ protect=1
544
606
  mkdir_p('repos/lookaside')
545
607
  mkdir_p('repodata')
546
608
 
547
- Dir.glob(args[:target_dir]).each do |base_dir|
548
- Find.find(base_dir) do |path|
549
- if (path =~ /.*\.rpm$/) and (path !~ /.*.src\.rpm$/)
550
- sym_path = "repos/base/#{File.basename(path)}"
551
- ln_s(path,sym_path, :verbose => @verbose) unless File.exists?(sym_path)
552
- end
553
- end
609
+ Dir.glob(File.join(args[:target_dir], '**', '*.rpm'))
610
+ .delete_if{|x| x =~ /\.src\.rpm$/}
611
+ .each do |path|
612
+ sym_path = "repos/base/#{File.basename(path)}"
613
+ ln_s(path,sym_path, :verbose => @verbose) unless File.exists?(sym_path)
554
614
  end
555
615
 
556
616
  if args[:aux_dir]
557
- Dir.glob(args[:aux_dir]).each do |aux_dir|
558
- Find.find(aux_dir) do |path|
559
- if (path =~ /.*\.rpm$/) and (path !~ /.*.src\.rpm$/)
560
- sym_path = "repos/lookaside/#{File.basename(path)}"
561
- ln_s(path,sym_path, :verbose => @verbose) unless File.exists?(sym_path)
562
- end
563
- end
617
+ Dir.glob(File.join(args[:aux_dir], '**', '*.rpm'))
618
+ .delete_if{|x| x =~ /\.src\.rpm$/}
619
+ .each do |path|
620
+ sym_path = "repos/lookaside/#{File.basename(path)}"
621
+ ln_s(path,sym_path, :verbose => @verbose) unless File.exists?(sym_path)
564
622
  end
565
623
  end
566
624
 
@@ -585,7 +643,11 @@ protect=1
585
643
  file.write(ERB.new(yum_conf_template,nil,'-').result(binding))
586
644
  end
587
645
 
588
- cmd = 'repoclosure -c repodata -n -t -r base -l lookaside -c yum.conf'
646
+ if which('dnf')
647
+ cmd = 'repoclosure -c base.conf --disablerepo=* --enablerepo=base'
648
+ else
649
+ cmd = 'repoclosure -c repodata -n -t -r base -l lookaside -c yum.conf'
650
+ end
589
651
 
590
652
  if ENV['SIMP_BUILD_verbose'] == 'yes'
591
653
  puts
@@ -862,7 +924,7 @@ protect=1
862
924
  Parallel.map(
863
925
  # Allow for shell globs
864
926
  Array(dirs),
865
- :in_processes => get_cpu_limit,
927
+ :in_processes => @cpu_limit,
866
928
  :progress => task.name
867
929
  ) do |dir|
868
930
  fail("Could not find directory #{dir}") unless Dir.exist?(dir)
@@ -17,7 +17,7 @@ module Simp::Rake::Build
17
17
  namespace :spec do
18
18
  task :prep do
19
19
  if $simp6
20
- @build_dir = $simp6_build_dir
20
+ @build_dir = $simp6_build_dir || @distro_build_dir
21
21
  end
22
22
  end
23
23
 
@@ -20,7 +20,7 @@ module Simp::Rake::Build
20
20
  namespace :tar do
21
21
  task :prep do
22
22
  if $simp6
23
- @build_dir = $simp6_build_dir
23
+ @build_dir = $simp6_build_dir || @distro_build_dir
24
24
  @dvd_src = File.join(@build_dir, File.basename(@dvd_src))
25
25
  end
26
26
 
@@ -50,7 +50,7 @@ module Simp::Rake::Build
50
50
  File.exist?(args.iso_path) or
51
51
  fail "Error: You must provide the full path and filename of the ISO image."
52
52
 
53
- %x{file #{iso_path}}.split(":")[1..-1].to_s =~ /ISO/ or
53
+ %x{file --keep-going '#{iso_path}'}.split(":")[1..-1].to_s =~ /ISO/ or
54
54
  fail "Error: The file provided is not a valid ISO."
55
55
 
56
56
  pieces = File.basename(iso_path,'.iso').split('-')
@@ -21,7 +21,7 @@ module Simp::Rake::Build
21
21
  namespace :upload do
22
22
  task :prep do
23
23
  if $simp6
24
- @build_dir = $simp6_build_dir
24
+ @build_dir = $simp6_build_dir || @distro_build_dir
25
25
  end
26
26
  end
27
27
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- "6": ["6","7"]
2
+ "6": ["6","7","8"]
3
3
  "5": "7"
4
4
  "4": "6"
5
5
  "2": "5"
@@ -106,8 +106,8 @@ package_name = "UNKNOWN"
106
106
  package_version = "UNKNOWN"
107
107
  module_license = "UNKNOWN"
108
108
 
109
- -- Default to 0
110
- package_release = 0
109
+ -- Default to 1
110
+ package_release = 1
111
111
 
112
112
  lua_stderr("\n")
113
113
  lua_stderr("--------------------------------------------------------------------------------\n")
@@ -202,7 +202,7 @@ end
202
202
  -- only accepts release in SemVer \d+\.\d+\.\d+ release format)
203
203
  --
204
204
  -- This code will remove a '-rc0' style prerelease string from the RPM
205
- -- Version, and use it as the default RPM Release (instead of '-0')
205
+ -- Version, and use it as the default RPM Release (instead of '-1')
206
206
 
207
207
  local version_match = metadata:match('"version":%s+"(.-)"%s*,'):gsub('-.*','')
208
208
  if version_match then
@@ -106,8 +106,8 @@ package_name = "UNKNOWN"
106
106
  package_version = "UNKNOWN"
107
107
  module_license = "UNKNOWN"
108
108
 
109
- -- Default to 0
110
- package_release = 0
109
+ -- Default to 1
110
+ package_release = 1
111
111
 
112
112
  lua_stderr("\n")
113
113
  lua_stderr("--------------------------------------------------------------------------------\n")
@@ -202,7 +202,7 @@ end
202
202
  -- only accepts release in SemVer \d+\.\d+\.\d+ release format)
203
203
  --
204
204
  -- This code will remove a '-rc0' style prerelease string from the RPM
205
- -- Version, and use it as the default RPM Release (instead of '-0')
205
+ -- Version, and use it as the default RPM Release (instead of '-1')
206
206
 
207
207
  local version_match = metadata:match('"version":%s+"(.-)"%s*,'):gsub('-.*','')
208
208
  if version_match then
@@ -2,5 +2,5 @@ module Simp; end
2
2
  module Simp::Rake; end
3
3
 
4
4
  class Simp::Rake::Helpers
5
- VERSION = '5.11.6'
5
+ VERSION = '5.12.3'
6
6
  end
@@ -20,8 +20,8 @@ class Simp::Rake::Helpers
20
20
  invalid_commands = Array.new
21
21
 
22
22
  Array(required_commands).each do |command|
23
- unless Facter::Core::Execution.which(command)
24
- invalid_commands << command
23
+ unless Array(command).find { |x| Facter::Core::Execution.which(x) }
24
+ invalid_commands << Array(command).join(' or ')
25
25
  end
26
26
  end
27
27
 
data/lib/simp/rake/pkg.rb CHANGED
@@ -235,7 +235,11 @@ module Simp::Rake
235
235
  %(-D '_sourcedir #{@rpm_srcdir}'),
236
236
  %(-D '_rpmdir #{@pkg_dir}'),
237
237
  %(-D '_srcrpmdir #{@pkg_dir}'),
238
- %(-D '_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm')
238
+ %(-D '_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm'),
239
+
240
+ # needed on EL8 to disable the aggressive brp_mangle_shebangs script
241
+ # that results in invalid script shebangs; does nothing in EL7
242
+ %(-D '__brp_mangle_shebangs /usr/bin/true')
239
243
  ]
240
244
  rpm_opts << '-v' if @verbose
241
245
  rpm_opts << "-D 'lua_debug 1'" if (ENV.fetch('SIMP_RAKE_PKG_LUA_verbose','no') =='yes')
@@ -290,6 +290,7 @@ class Simp::Rake::Pupmod::Helpers < ::Rake::TaskLib
290
290
  # That will give Travis a way of warning us if the changelog
291
291
  # will prevent the rpm from building.
292
292
  task :changelog_annotation, [:quiet] do |t,args|
293
+ warning('DEPRECATED: use pkg:create_tag_changelog')
293
294
  quiet = true if args[:quiet].to_s == 'true'
294
295
  puts changelog_annotation( quiet )
295
296
  end
@@ -332,6 +333,7 @@ class Simp::Rake::Pupmod::Helpers < ::Rake::TaskLib
332
333
  - doc directory
333
334
  EOM
334
335
  task :compare_latest_tag, [:tags_source, :ignore_owner, :verbose] do |t,args|
336
+ warning('DEPRECATED: use pkg:compare_latest_tag')
335
337
  require 'json'
336
338
 
337
339
  tags_source = args[:tags_source].nil? ? 'origin' : args[:tags_source]
@@ -49,7 +49,11 @@ module Simp::Rake
49
49
  task :install_gem => [:clean, :gem] do
50
50
  Dir.chdir @rakefile_dir
51
51
  Dir.glob("dist/#{@package}*.gem") do |pkg|
52
- sh %Q{bundle exec gem install --no-ri --no-rdoc #{pkg}}
52
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.6')
53
+ sh %Q{bundle exec gem install --no-document #{pkg}}
54
+ else
55
+ sh %Q{bundle exec gem install --no-ri --no-rdoc #{pkg}}
56
+ end
53
57
  end
54
58
  end
55
59
  end
data/lib/simp/rake.rb CHANGED
@@ -9,9 +9,12 @@ module Simp::Rake
9
9
  require 'parallel'
10
10
  require 'tempfile'
11
11
  require 'facter'
12
+ require 'simp/command_utils'
12
13
  require 'simp/rpm'
13
14
  require 'simp/rake/pkg'
14
15
 
16
+ include Simp::CommandUtils
17
+
15
18
  attr_reader(:puppetfile)
16
19
  attr_reader(:module_paths)
17
20
 
@@ -96,23 +99,6 @@ module Simp::Rake
96
99
  exec pager rescue exec "/bin/sh", "-c", pager
97
100
  end
98
101
 
99
- def which(cmd, fail=false)
100
- @which_cache ||= {}
101
-
102
- if @which_cache.has_key?(cmd)
103
- command = @which_cache[cmd]
104
- else
105
- command = Facter::Core::Execution.which(cmd)
106
- @which_cache[cmd] = command
107
- end
108
-
109
- msg = "Warning: Command #{cmd} not found on the system."
110
-
111
- fail ? raise(msg) : warn(msg) unless command
112
-
113
- command
114
- end
115
-
116
102
  def help
117
103
  run_pager
118
104