simp-rake-helpers 5.24.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +20 -1
  3. data/CHANGELOG.md +33 -0
  4. data/Gemfile +14 -6
  5. data/lib/simp/command_utils.rb +6 -3
  6. data/lib/simp/componentinfo.rb +47 -33
  7. data/lib/simp/local_gpg_signing_key.rb +302 -303
  8. data/lib/simp/packer/iso_vars_json.rb +17 -15
  9. data/lib/simp/rake/build/auto.rb +415 -432
  10. data/lib/simp/rake/build/build.rb +119 -124
  11. data/lib/simp/rake/build/clean.rb +39 -39
  12. data/lib/simp/rake/build/code.rb +125 -128
  13. data/lib/simp/rake/build/constants.rb +7 -4
  14. data/lib/simp/rake/build/deps.rb +196 -207
  15. data/lib/simp/rake/build/helpers.rb +17 -13
  16. data/lib/simp/rake/build/iso.rb +404 -411
  17. data/lib/simp/rake/build/pkg.rb +752 -759
  18. data/lib/simp/rake/build/rpmdeps.rb +70 -70
  19. data/lib/simp/rake/build/spec.rb +44 -46
  20. data/lib/simp/rake/build/tar.rb +169 -173
  21. data/lib/simp/rake/build/unpack.rb +105 -107
  22. data/lib/simp/rake/build/upload.rb +93 -102
  23. data/lib/simp/rake/fixtures.rb +69 -66
  24. data/lib/simp/rake/helpers/rpm_spec.rb +10 -7
  25. data/lib/simp/rake/helpers/version.rb +3 -1
  26. data/lib/simp/rake/helpers.rb +12 -10
  27. data/lib/simp/rake/pkg.rb +417 -440
  28. data/lib/simp/rake/pupmod/helpers.rb +100 -87
  29. data/lib/simp/rake/pupmod/module_build.rb +39 -0
  30. data/lib/simp/rake/rubygem.rb +57 -56
  31. data/lib/simp/rake.rb +34 -29
  32. data/lib/simp/relchecks.rb +52 -43
  33. data/lib/simp/rpm.rb +123 -127
  34. data/lib/simp/rpm_signer.rb +57 -55
  35. data/lib/simp/yum.rb +54 -53
  36. data/spec/acceptance/nodesets/{default_ruby3_1.yml → almalinux10.yml} +4 -4
  37. data/spec/acceptance/nodesets/{default.yml → almalinux8.yml} +2 -2
  38. data/spec/acceptance/nodesets/almalinux9.yml +25 -0
  39. data/spec/acceptance/suites/default/00_pkg_rpm_custom_scriptlets_spec.rb +23 -28
  40. data/spec/acceptance/suites/default/10_pkg_rpm_spec.rb +54 -56
  41. data/spec/acceptance/suites/default/30_pkg_misc_spec.rb +17 -19
  42. data/spec/acceptance/suites/default/50_local_gpg_signing_key_spec.rb +5 -5
  43. data/spec/acceptance/suites/default/55_build_pkg_signing_spec.rb +109 -101
  44. data/spec/acceptance/suites/default/files/testpackage/spec/classes/init_spec.rb +1 -0
  45. data/spec/acceptance/suites/default/files/testpackage/spec/files/mock_something.rb +3 -1
  46. data/spec/acceptance/suites/default/files/testpackage/utils/convert_v1_to_v2.rb +2 -0
  47. data/spec/acceptance/suites/default/support/build_project_helpers.rb +20 -17
  48. data/spec/acceptance/suites/default/support/build_user_helpers.rb +4 -2
  49. data/spec/acceptance/suites/default/support/pkg_rpm_helpers.rb +30 -31
  50. data/spec/acceptance/support/simp_rake_helpers.rb +3 -1
  51. data/spec/lib/simp/command_utils_spec.rb +13 -10
  52. data/spec/lib/simp/componentinfo_changelog_regex_spec.rb +33 -33
  53. data/spec/lib/simp/componentinfo_spec.rb +99 -86
  54. data/spec/lib/simp/packer/iso_vars_json_spec.rb +16 -14
  55. data/spec/lib/simp/rake/build/helpers_spec.rb +7 -7
  56. data/spec/lib/simp/rake/build/rpmdeps_spec.rb +48 -46
  57. data/spec/lib/simp/rake/helpers_spec.rb +6 -5
  58. data/spec/lib/simp/rake/pkg_spec.rb +7 -5
  59. data/spec/lib/simp/rake/pupmod/fixtures/othermod/spec/classes/init_spec.rb +3 -1
  60. data/spec/lib/simp/rake/pupmod/fixtures/othermod/spec/spec_helper.rb +2 -0
  61. data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/acceptance/suites/default/class_spec.rb +6 -5
  62. data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/classes/init_spec.rb +51 -33
  63. data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/spec_helper.rb +15 -16
  64. data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/spec_helper_acceptance.rb +9 -9
  65. data/spec/lib/simp/rake/pupmod/helpers_spec.rb +20 -19
  66. data/spec/lib/simp/rake/pupmod/module_build_spec.rb +87 -0
  67. data/spec/lib/simp/rake_spec.rb +7 -6
  68. data/spec/lib/simp/relchecks_check_rpm_changelog_spec.rb +26 -31
  69. data/spec/lib/simp/relchecks_compare_latest_tag_spec.rb +32 -26
  70. data/spec/lib/simp/relchecks_create_tag_changelog_spec.rb +27 -19
  71. data/spec/lib/simp/rpm_signer_spec.rb +45 -39
  72. data/spec/lib/simp/rpm_spec.rb +190 -194
  73. data/spec/spec_helper.rb +4 -2
  74. data/spec/spec_helper_acceptance.rb +3 -5
  75. metadata +47 -76
  76. data/bin/simp_rake_helpers +0 -3
  77. data/lib/simp/ci/gitlab.rb +0 -226
  78. data/lib/simp/rake/ci.rb +0 -31
  79. data/spec/lib/simp/ci/files/global_nodesets_only/spec/acceptance/nodesets/default.yml +0 -41
  80. data/spec/lib/simp/ci/files/global_nodesets_only/spec/acceptance/nodesets/oel.yml +0 -41
  81. data/spec/lib/simp/ci/files/job_broken_link_nodeset/spec/acceptance/nodesets/centos.yml +0 -41
  82. data/spec/lib/simp/ci/files/job_broken_link_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
  83. data/spec/lib/simp/ci/files/job_broken_link_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
  84. data/spec/lib/simp/ci/files/job_invalid_nodeset/spec/acceptance/nodesets/default.yml +0 -41
  85. data/spec/lib/simp/ci/files/job_invalid_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
  86. data/spec/lib/simp/ci/files/job_invalid_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
  87. data/spec/lib/simp/ci/files/job_invalid_suite/spec/acceptance/nodesets/default.yml +0 -41
  88. data/spec/lib/simp/ci/files/job_invalid_suite/spec/acceptance/nodesets/oel.yml +0 -41
  89. data/spec/lib/simp/ci/files/job_invalid_suite/spec/acceptance/suites/default/class_spec.rb +0 -0
  90. data/spec/lib/simp/ci/files/job_missing_nodeset/spec/acceptance/nodesets/default.yml +0 -41
  91. data/spec/lib/simp/ci/files/job_missing_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
  92. data/spec/lib/simp/ci/files/job_missing_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
  93. data/spec/lib/simp/ci/files/job_missing_suite_and_nodeset/spec/acceptance/nodesets/default.yml +0 -41
  94. data/spec/lib/simp/ci/files/job_missing_suite_and_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
  95. data/spec/lib/simp/ci/files/job_missing_suite_and_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
  96. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/nodesets/default.yml +0 -41
  97. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/nodesets/oel.yml +0 -41
  98. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/default/class_spec.rb +0 -0
  99. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/feature-1/feature-1_spec.rb +0 -0
  100. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/feature_2/feature_2_spec.rb +0 -0
  101. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/feature_2/nodesets/default.yml +0 -35
  102. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/feature_2/nodesets/oel.yml +0 -35
  103. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/nodesets/default.yml +0 -41
  104. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/nodesets/oel.yml +0 -41
  105. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/default/class_spec.rb +0 -0
  106. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/feature-1/feature-1_spec.rb +0 -0
  107. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/feature_2/feature_2_spec.rb +0 -0
  108. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/feature_2/nodesets/default.yml +0 -35
  109. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/feature_2/nodesets/oel.yml +0 -35
  110. data/spec/lib/simp/ci/files/no_acceptance_tests/spec/spec_helper.rb +0 -0
  111. data/spec/lib/simp/ci/files/no_gitlab_config_with_tests/spec/acceptance/nodesets/default.yml +0 -41
  112. data/spec/lib/simp/ci/files/no_gitlab_config_with_tests/spec/acceptance/nodesets/oel.yml +0 -41
  113. data/spec/lib/simp/ci/files/no_gitlab_config_with_tests/spec/acceptance/suites/default/class_spec.rb +0 -0
  114. data/spec/lib/simp/ci/files/no_gitlab_config_without_tests/spec/acceptance/nodesets/default.yml +0 -41
  115. data/spec/lib/simp/ci/files/no_gitlab_config_without_tests/spec/acceptance/nodesets/oel.yml +0 -41
  116. data/spec/lib/simp/ci/files/suite_skeleton_only/spec/acceptance/nodesets/centos.yml +0 -41
  117. data/spec/lib/simp/ci/files/suite_skeleton_only/spec/acceptance/nodesets/oel.yml +0 -41
  118. data/spec/lib/simp/ci/files/valid_job_global_nodeset/spec/acceptance/nodesets/default.yml +0 -41
  119. data/spec/lib/simp/ci/files/valid_job_global_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
  120. data/spec/lib/simp/ci/files/valid_job_global_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
  121. data/spec/lib/simp/ci/files/valid_job_nodeset_dir_link/spec/acceptance/nodesets/default.yml +0 -41
  122. data/spec/lib/simp/ci/files/valid_job_nodeset_dir_link/spec/acceptance/nodesets/oel.yml +0 -41
  123. data/spec/lib/simp/ci/files/valid_job_nodeset_dir_link/spec/acceptance/suites/default/class_spec.rb +0 -0
  124. data/spec/lib/simp/ci/files/valid_job_nodeset_link/spec/acceptance/suites/default/class_spec.rb +0 -0
  125. data/spec/lib/simp/ci/files/valid_job_nodeset_link/spec/acceptance/suites/default/nodesets/centos.yml +0 -41
  126. data/spec/lib/simp/ci/files/valid_job_nodeset_link/spec/acceptance/suites/default/nodesets/oel.yml +0 -41
  127. data/spec/lib/simp/ci/files/valid_job_suite_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
  128. data/spec/lib/simp/ci/files/valid_job_suite_nodeset/spec/acceptance/suites/default/nodesets/default.yml +0 -41
  129. data/spec/lib/simp/ci/files/valid_job_suite_nodeset/spec/acceptance/suites/default/nodesets/oel.yml +0 -41
  130. data/spec/lib/simp/ci/gitlab_spec.rb +0 -245
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'English'
1
4
  require 'bundler'
2
5
  require 'simp/yum'
3
6
  require 'simp/rake'
@@ -5,6 +8,7 @@ require 'simp/rake/build/constants'
5
8
 
6
9
  module Simp; end
7
10
  module Simp::Rake; end
11
+
8
12
  module Simp::Rake::Build
9
13
  class SIMPBuildException < StandardError
10
14
  end
@@ -14,8 +18,8 @@ module Simp::Rake::Build
14
18
  class Build < ::Rake::TaskLib
15
19
  include Simp::Rake::Build::Constants
16
20
 
17
- def initialize( base_dir )
18
- init_member_vars( base_dir )
21
+ def initialize(base_dir)
22
+ init_member_vars(base_dir)
19
23
 
20
24
  define_tasks
21
25
  end
@@ -46,7 +50,7 @@ module Simp::Rake::Build
46
50
  args.with_defaults(:verbose => 'false')
47
51
  args.with_defaults(:method => 'tracking')
48
52
 
49
- verbose = args[:verbose] == 'false' ? false : true
53
+ verbose = args[:verbose] != 'false'
50
54
 
51
55
  load_puppetfile(args[:method])
52
56
 
@@ -57,14 +61,14 @@ module Simp::Rake::Build
57
61
  Parallel.map(
58
62
  module_paths,
59
63
  :in_processes => 1,
60
- :progress => t.name
64
+ :progress => t.name,
61
65
  ) do |mod|
62
-
63
66
  status = true
64
67
 
65
- fail("Could not find directory #{mod}") unless Dir.exist?(mod)
68
+ raise("Could not find directory #{mod}") unless Dir.exist?(mod)
69
+
70
+ next unless File.exist?(File.join(mod, 'Gemfile'))
66
71
 
67
- next unless File.exist?(File.join(mod,'Gemfile'))
68
72
  puts "\n#{mod}\n" if verbose
69
73
  Dir.chdir(mod) do
70
74
  if File.exist?('Gemfile.lock')
@@ -78,8 +82,8 @@ module Simp::Rake::Build
78
82
  # Bundler is activated.
79
83
  clean_env_method = Bundler.respond_to?(:with_unbundled_env) ? :with_unbundled_env : :with_clean_env
80
84
  ::Bundler.send(clean_env_method) do
81
- out = %x(bundle #{args[:action]} 2>&1)
82
- status = $?.success?
85
+ out = `bundle #{args[:action]} 2>&1`
86
+ status = $CHILD_STATUS.success?
83
87
  puts out if verbose
84
88
  failed_mod_lock.synchronize do
85
89
  failed_mods << mod unless status
@@ -89,7 +93,7 @@ module Simp::Rake::Build
89
93
  end
90
94
 
91
95
  failed_mods.compact!
92
- fail(%(The following modules failed bundle #{args[:action]}:\n * #{failed_mods.sort.join("\n *")})) unless failed_mods.empty?
96
+ raise(%(The following modules failed bundle #{args[:action]}:\n * #{failed_mods.sort.join("\n *")})) unless failed_mods.empty?
93
97
  end
94
98
 
95
99
  namespace :yum do
@@ -98,16 +102,14 @@ module Simp::Rake::Build
98
102
  # `$simp6_build_dir` is set by the build:auto task
99
103
  @build_dir = $simp6_build_dir || @distro_build_dir
100
104
 
101
- unless @build_dir
102
- if ENV['SIMP_BUILD_yum_dir'] && File.exist?(File.join(ENV['SIMP_BUILD_yum_dir'], 'yum_data'))
103
- @build_dir = ENV['SIMP_BUILD_yum_dir']
104
- end
105
+ if !@build_dir && ENV.fetch('SIMP_BUILD_yum_dir', nil) && File.exist?(File.join(ENV.fetch('SIMP_BUILD_yum_dir', nil), 'yum_data'))
106
+ @build_dir = ENV.fetch('SIMP_BUILD_yum_dir', nil)
105
107
  end
106
108
 
107
109
  raise('Error: For SIMP 6+ builds, you need to set SIMP_BUILD_yum_dir to the directory holding the "yum_data" directory that you wish to sync') unless @build_dir
108
110
  end
109
111
 
110
- @build_base_dir = File.join(@build_dir,'yum_data')
112
+ @build_base_dir = File.join(@build_dir, 'yum_data')
111
113
  @build_arch = 'x86_64'
112
114
  end
113
115
 
@@ -119,21 +121,21 @@ module Simp::Rake::Build
119
121
  # Expects one argument which is the 'arguments' hash to one of the tasks.
120
122
  def get_target_dir(args)
121
123
  if $simp6
122
- return @build_base_dir
124
+ @build_base_dir
123
125
  else
124
- fail("Error: You must specify 'os'") unless args[:os]
125
- fail("Error: You must specify 'os_version'") unless args[:os_version]
126
- fail("Error: You must specify both major and minor version for the OS") unless args[:os_version] =~ /^.+\..+$/
127
- fail("Error: You must specify 'simp_version'") unless args[:simp_version]
128
- fail("Error: You must specify 'arch'") unless args[:arch]
126
+ raise("Error: You must specify 'os'") unless args[:os]
127
+ raise("Error: You must specify 'os_version'") unless args[:os_version]
128
+ raise('Error: You must specify both major and minor version for the OS') unless %r{^.+\..+$}.match?(args[:os_version])
129
+ raise("Error: You must specify 'simp_version'") unless args[:simp_version]
130
+ raise("Error: You must specify 'arch'") unless args[:arch]
129
131
 
130
132
  # Yes, this is a kluge but the amount of variable passing that would need
131
133
  # to be done to support this is silly.
132
134
  @build_arch = args[:arch]
133
135
 
134
- return File.join(
136
+ File.join(
135
137
  @build_base_dir,
136
- "SIMP#{args[:simp_version]}_#{args[:os]}#{args[:os_version]}_#{args[:arch]}"
138
+ "SIMP#{args[:simp_version]}_#{args[:os]}#{args[:os_version]}_#{args[:arch]}",
137
139
  )
138
140
  end
139
141
  end
@@ -143,92 +145,90 @@ module Simp::Rake::Build
143
145
  puts("Looking up: #{rpm}")
144
146
  yum_helper = Simp::YUM.new(yum_conf)
145
147
 
146
- return yum_helper.get_source(rpm, @build_arch)
148
+ yum_helper.get_source(rpm, @build_arch)
147
149
  end
148
150
 
149
151
  # Snag an RPM via YUM.
150
152
  # Returns where the tool got the file from.
151
153
  #
152
154
  # If passed a source, simply downloads the file into the packages directory
153
- def download_rpm(rpm, yum_conf, source=nil, distro_dir=Dir.pwd)
155
+ def download_rpm(rpm, yum_conf, source = nil, _distro_dir = Dir.pwd)
154
156
  yum_helper = Simp::YUM.new(yum_conf)
155
157
 
156
158
  # We're doing this so that we can be 100% sure that we're pulling the RPM
157
159
  # from where the last command indicated. YUM can choose multiple sources
158
160
  # and we definitely want the one that we actually state!
159
- source = yum_helper.get_source(rpm) unless source
161
+ source ||= yum_helper.get_source(rpm)
160
162
 
161
163
  Dir.chdir('packages') do
162
164
  unless File.exist?(rpm)
163
165
  puts("Downloading: #{rpm}")
164
166
  downloaded_rpm = yum_helper.download(source)
165
167
 
166
- raise(SIMPBuildException,"#{rpm} could not be downloaded") unless downloaded_rpm
168
+ raise(SIMPBuildException, "#{rpm} could not be downloaded") unless downloaded_rpm
167
169
 
168
170
  begin
169
171
  validate_rpm(downloaded_rpm)
170
172
  rescue SIMPBuildException
171
173
  rm(rpm) if File.exist?(rpm)
172
- raise(SIMPBuildException,"#{rpm} could not be downloaded")
174
+ raise(SIMPBuildException, "#{rpm} could not be downloaded")
173
175
  end
174
176
  end
175
177
  end
176
178
 
177
- return source
179
+ source
178
180
  end
179
181
 
180
182
  # Check to see if an RPM is actually a valid RPM
181
183
  # Optionally remove any invalid RPMS.
182
184
  #
183
185
  # Returns true if the rpm is valid raises a SIMPBuildException otherwise
184
- def validate_rpm(rpm, clean=true)
186
+ def validate_rpm(rpm, clean = true)
185
187
  # Check to see if what we got is actually valid
186
- %x(rpm -K --nosignature "#{rpm}" 2>&1 > /dev/null)
188
+ `rpm -K --nosignature "#{rpm}" 2>&1 > /dev/null`
187
189
 
188
- unless $?.success?
190
+ unless $CHILD_STATUS.success?
189
191
  errmsg = "RPM '#{rpm}' is invalid"
190
192
 
191
193
  if clean
192
194
  errmsg += ', removing'
193
- FileUtils.rm(rpm) if File.exist?(rpm)
195
+ FileUtils.rm_f(rpm)
194
196
  end
195
197
 
196
- raise(SIMPBuildException,errmsg)
198
+ raise(SIMPBuildException, errmsg)
197
199
  end
198
200
 
199
201
  true
200
202
  end
201
203
 
202
- def get_known_packages(target_dir=Dir.pwd)
204
+ def get_known_packages(target_dir = Dir.pwd)
203
205
  known_package_hash = {}
204
206
 
205
207
  Dir.chdir(target_dir) do
206
208
  if File.exist?('packages.yaml')
207
209
  # The empty YAML file returns 'false'
208
- known_package_hash = YAML::load_file('packages.yaml') || {}
210
+ known_package_hash = YAML.load_file('packages.yaml') || {}
209
211
  end
210
212
  end
211
213
 
212
- unless known_package_hash.empty?
213
- unless known_package_hash.first.last[:rpm_name]
214
- # Convert from Legacy
215
- # This is imperfect since we can't accurately determine the RPM sort
216
- # name but the code should straighten everything out since we rewrite
217
- # the entire file based on what has been downloaded.
218
- new_package_hash = known_package_hash.dup
214
+ if !known_package_hash.empty? && !known_package_hash.first.last[:rpm_name]
215
+ # Convert from Legacy
216
+ # This is imperfect since we can't accurately determine the RPM sort
217
+ # name but the code should straighten everything out since we rewrite
218
+ # the entire file based on what has been downloaded.
219
+ new_package_hash = known_package_hash.dup
219
220
 
220
- known_package_hash.each_key { |k|
221
- new_package_hash[k][:rpm_name] = k
222
- }
223
-
224
- known_package_hash = new_package_hash
221
+ known_package_hash.each_key do |k|
222
+ new_package_hash[k][:rpm_name] = k
225
223
  end
224
+
225
+ known_package_hash = new_package_hash
226
226
  end
227
227
 
228
- return known_package_hash
228
+ known_package_hash
229
229
  end
230
230
 
231
- def get_downloaded_packages(target_dir=Dir.pwd)
231
+ def get_downloaded_packages(target_dir = Dir.pwd)
232
232
  downloaded_packages = {}
233
233
 
234
234
  Dir.chdir(target_dir) do
@@ -237,16 +237,16 @@ module Simp::Rake::Build
237
237
  end
238
238
  end
239
239
 
240
- return downloaded_packages
240
+ downloaded_packages
241
241
  end
242
242
 
243
243
  # Update the packages.yaml and packages/ directories
244
244
  # * target_dir => The actual distribution directory where packages.yaml and
245
245
  # packages/ reside.
246
- def update_packages(target_dir, bootstrap=false)
246
+ def update_packages(target_dir, _bootstrap = false)
247
247
  # This really should never happen....
248
248
  unless File.directory?(target_dir)
249
- fail <<-EOM
249
+ raise <<-EOM
250
250
  Error: Could not update packages.
251
251
 
252
252
  Target directory '#{target_dir}' does not exist!
@@ -255,7 +255,7 @@ module Simp::Rake::Build
255
255
 
256
256
  Dir.chdir(target_dir) do
257
257
  unless File.exist?('packages.yaml') || File.directory?('packages')
258
- fail <<-EOM
258
+ raise <<-EOM
259
259
  Error: Either 'packages.yaml' or the 'packages/' directory need to exist under '#{target_dir}
260
260
  EOM
261
261
  end
@@ -269,16 +269,16 @@ module Simp::Rake::Build
269
269
  # This holds packages for which we could not find a source.
270
270
  unknown_package_hash = {}
271
271
 
272
- known_packages = known_package_hash.keys.collect{ |pkg|
273
- pkg = known_package_hash[pkg][:rpm_name]
274
- }.compact
272
+ known_packages = known_package_hash.keys.filter_map do |pkg|
273
+ known_package_hash[pkg][:rpm_name]
274
+ end
275
275
 
276
- downloaded_packages = downloaded_package_hash.keys.collect{ |pkg|
277
- pkg = downloaded_package_hash[pkg][:rpm_name]
278
- }.compact
276
+ downloaded_packages = downloaded_package_hash.keys.filter_map do |pkg|
277
+ downloaded_package_hash[pkg][:rpm_name]
278
+ end
279
279
 
280
280
  if known_packages.empty? && downloaded_packages.empty? && Dir.glob('reposync/**/repomd.xml').empty?
281
- fail <<-EOM
281
+ raise <<-EOM
282
282
  Error: Could not find anything to do!
283
283
 
284
284
  In #{target_dir}:
@@ -303,23 +303,19 @@ module Simp::Rake::Build
303
303
  (known_packages - downloaded_packages).sort.each do |package_to_download|
304
304
  begin
305
305
  # Do we have a valid external source?
306
- package_source = known_package_hash.find{|k,h| h[:rpm_name] == package_to_download}.last[:source]
307
- if package_source && (package_source =~ %r(^[a-z]+://))
306
+ package_source = known_package_hash.find { |_k, h| h[:rpm_name] == package_to_download }.last[:source]
307
+ if package_source && (package_source =~ %r{^[a-z]+://})
308
308
  begin
309
309
  download_rpm(package_to_download, yum_conf, package_source)
310
- rescue => e
311
- if ['yes','true'].include?(ENV['SIMP_BUILD_update_packages'])
312
- pkg_shortname = known_package_hash.find {|k,v| v[:rpm_name] == package_to_download }
313
-
314
- if pkg_shortname
315
- pkg_shortname = pkg_shortname.first
316
- download_rpm(pkg_shortname, yum_conf)
317
- else
318
- raise(e)
319
- end
320
- else
321
- raise(e)
322
- end
310
+ rescue StandardError => e
311
+ raise(e) unless ['yes', 'true'].include?(ENV['SIMP_BUILD_update_packages'])
312
+
313
+ pkg_shortname = known_package_hash.find { |_k, v| v[:rpm_name] == package_to_download }
314
+
315
+ raise(e) unless pkg_shortname
316
+
317
+ pkg_shortname = pkg_shortname.first
318
+ download_rpm(pkg_shortname, yum_conf)
323
319
  end
324
320
  else
325
321
  # If you get here, then you'll need to have an internal mirror of the
@@ -328,8 +324,8 @@ module Simp::Rake::Build
328
324
  download_rpm(package_to_download, yum_conf)
329
325
  end
330
326
  rescue SIMPBuildException => e
331
- base_package_name = known_package_hash.find{|k,h| h[:rpm_name] == package_to_download}.first
332
- updated_package = update_rpm(base_package_name,yum_conf,true)
327
+ base_package_name = known_package_hash.find { |_k, h| h[:rpm_name] == package_to_download }.first
328
+ updated_package = update_rpm(base_package_name, yum_conf, true)
333
329
 
334
330
  if updated_package
335
331
  updated_package_rpm_name = updated_package[base_package_name][:rpm_name]
@@ -351,34 +347,34 @@ module Simp::Rake::Build
351
347
  # Now, let's update the known_packages data structure for anything that's
352
348
  # new!
353
349
  (downloaded_packages - known_packages).each do |package|
354
- downloaded_package_hash.keys.each do |key|
355
- if downloaded_package_hash[key][:rpm_name] == package
356
- begin
357
- rpm_source = yum_helper.get_source(package)
358
- #rpm_source = get_rpm_source(package,yum_conf)
359
- known_package_hash[key] = downloaded_package_hash[key]
360
- known_package_hash[key][:source] = rpm_source
361
- rescue SIMPBuildException => e
362
- unknown_package_hash[key] = {} unless unknown_package_hash[key]
363
- unknown_package_hash[key][:rpm_name] = package
364
- failed_updates[package] = e
365
- end
366
- break
350
+ downloaded_package_hash.each_key do |key|
351
+ next unless downloaded_package_hash[key][:rpm_name] == package
352
+
353
+ begin
354
+ rpm_source = yum_helper.get_source(package)
355
+ # rpm_source = get_rpm_source(package,yum_conf)
356
+ known_package_hash[key] = downloaded_package_hash[key]
357
+ known_package_hash[key][:source] = rpm_source
358
+ rescue SIMPBuildException => e
359
+ unknown_package_hash[key] = {} unless unknown_package_hash[key]
360
+ unknown_package_hash[key][:rpm_name] = package
361
+ failed_updates[package] = e
367
362
  end
363
+ break
368
364
  end
369
365
  end
370
366
 
371
367
  # OK! In theory, we're done with all of this nonsense! Let's update the
372
368
  # YAML file.
373
- File.open('packages.yaml','w') do |fh|
369
+ File.open('packages.yaml', 'w') do |fh|
374
370
  sorted_packages = {}
375
371
  known_package_hash.keys.sort.each do |k|
376
372
  # Make sure we don't capture any legacy malformed info
377
- if known_package_hash[k][:rpm_name][-4..-1] == '.rpm'
378
- sorted_packages[k] ||= {}
379
- known_package_hash[k].keys.sort.each do |subk|
380
- sorted_packages[k][subk] = known_package_hash[k][subk]
381
- end
373
+ next unless known_package_hash[k][:rpm_name][-4..] == '.rpm'
374
+
375
+ sorted_packages[k] ||= {}
376
+ known_package_hash[k].keys.sort.each do |subk|
377
+ sorted_packages[k][subk] = known_package_hash[k][subk]
382
378
  end
383
379
  end
384
380
 
@@ -389,7 +385,7 @@ module Simp::Rake::Build
389
385
  rm('unknown_packages.yaml') if File.exist?('unknown_packages.yaml')
390
386
  else
391
387
  # Next, let's freshen up the unknown packages reference file
392
- File.open('unknown_packages.yaml','w') do |fh|
388
+ File.open('unknown_packages.yaml', 'w') do |fh|
393
389
  sorted_packages = {}
394
390
  unknown_package_hash.keys.sort.each do |k|
395
391
  sorted_packages[k] ||= {}
@@ -404,10 +400,10 @@ module Simp::Rake::Build
404
400
 
405
401
  # Now, let's tell the user what went wrong.
406
402
  unless failed_updates.empty?
407
- $stderr.puts("Warning: There were errors updating some files:")
403
+ warn('Warning: There were errors updating some files:')
408
404
 
409
405
  failed_updates.keys.sort.each do |k|
410
- $stderr.puts(" * #{k} => #{failed_updates[k]}")
406
+ warn(" * #{k} => #{failed_updates[k]}")
411
407
  end
412
408
 
413
409
  raise('Could not update all packages')
@@ -427,7 +423,7 @@ module Simp::Rake::Build
427
423
  #
428
424
  # Returns a hash of the new package information if found.
429
425
  #
430
- def update_rpm(pkg,yum_conf,verbose=false)
426
+ def update_rpm(pkg, yum_conf, verbose = false)
431
427
  updated_pkg = nil
432
428
 
433
429
  begin
@@ -443,14 +439,13 @@ module Simp::Rake::Build
443
439
  # Don't obsolete yourself!
444
440
  next unless new_pkg_info.basename == old_pkg_info.basename
445
441
 
442
+ next unless new_pkg_info.newer?(old_pkg_info.rpm_name)
446
443
 
447
- if new_pkg_info.newer?(old_pkg_info.rpm_name)
448
- mkdir('obsolete') unless File.directory?('obsolete')
444
+ mkdir('obsolete') unless File.directory?('obsolete')
449
445
 
450
- puts("Retiring #{old_pkg}") if verbose
446
+ puts("Retiring #{old_pkg}") if verbose
451
447
 
452
- mv(old_pkg,'obsolete')
453
- end
448
+ mv(old_pkg, 'obsolete')
454
449
  end
455
450
 
456
451
  updated_pkg = {
@@ -490,27 +485,27 @@ module Simp::Rake::Build
490
485
 
491
486
  Will not overwrite existing directories or package.yaml files
492
487
  EOM
493
- task :scaffold,[:os,:os_version,:simp_version,:arch] do |t,args|
488
+ task :scaffold, [:os, :os_version, :simp_version, :arch] do |_t, args|
494
489
  # @simp_version is set in the main Rakefile
495
490
  args.with_defaults(:simp_version => @simp_version.split('-').first)
496
491
  args.with_defaults(:arch => @build_arch)
497
492
 
498
493
  major_os_ver = args[:os_version].split('.').first
499
494
  build_dir = distro_build_dir(
500
- File.join(@base_dir,'build'), args[:os], major_os_ver, args[:arch]
495
+ File.join(@base_dir, 'build'), args[:os], major_os_ver, args[:arch]
501
496
  )
502
- build_dir = ENV['SIMP_BUILD_yum_dir'] if File.directory?(ENV['SIMP_BUILD_yum_dir'].to_s)
503
- ENV['SIMP_BUILD_yum_dir'] ||= build_dir # <-- for hacky :prep task
497
+ build_dir = ENV.fetch('SIMP_BUILD_yum_dir', nil) if File.directory?(ENV['SIMP_BUILD_yum_dir'].to_s)
498
+ ENV['SIMP_BUILD_yum_dir'] ||= build_dir # <-- for hacky :prep task
504
499
 
505
- target_dir = File.join(build_dir,'yum_data')
500
+ target_dir = File.join(build_dir, 'yum_data')
506
501
 
507
502
  # Create directories
508
503
  my_repos = $simp6 ? '../my_repos' : 'my_repos'
509
504
  [
510
505
  target_dir,
511
- File.join(target_dir,'repos'),
512
- File.join(target_dir,'packages'),
513
- File.expand_path(my_repos,target_dir)
506
+ File.join(target_dir, 'repos'),
507
+ File.join(target_dir, 'packages'),
508
+ File.expand_path(my_repos, target_dir),
514
509
  ].each { |dir| mkdir_p(dir, verbose: false) }
515
510
 
516
511
  # Create example packages.yaml
@@ -521,7 +516,7 @@ module Simp::Rake::Build
521
516
  yum_url = "https://yum.server/#{args[:os]}/#{major_os_ver}/#{args[:arch]}"
522
517
  pkg_url = "#{yum_url}/#{pkg_file}"
523
518
  yaml = { pkg => { rpm_name: pkg_file, source: pkg_url } }.to_yaml
524
- File.open(packages_yaml_path,'w'){|f| f.puts yaml.gsub(/^/,'# ') }
519
+ File.open(packages_yaml_path, 'w') { |f| f.puts yaml.gsub(%r{^}, '# ') }
525
520
  puts "Created #{target_dir}"
526
521
  puts "Created example file at #{packages_yaml_path}"
527
522
  end
@@ -542,7 +537,7 @@ module Simp::Rake::Build
542
537
 
543
538
  * :arch - The architecture that you support. Default: x86_64
544
539
  EOM
545
- task :sync,[:os,:os_version,:simp_version,:arch] => [:scaffold, :prep] do |t,args|
540
+ task :sync, [:os, :os_version, :simp_version, :arch] => [:scaffold, :prep] do |_t, args|
546
541
  # @simp_version is set in the main Rakefile
547
542
  args.with_defaults(:simp_version => @simp_version.split('-').first)
548
543
  args.with_defaults(:arch => @build_arch)
@@ -567,7 +562,7 @@ module Simp::Rake::Build
567
562
 
568
563
  * :arch - The architecture that you support. Default: x86_64
569
564
  EOM
570
- task :diff,[:os,:os_version,:simp_version,:arch] => [:scaffold, :prep] do |t,args|
565
+ task :diff, [:os, :os_version, :simp_version, :arch] => [:scaffold, :prep] do |_t, args|
571
566
  args.with_defaults(:simp_version => @simp_version.split('-').first)
572
567
  args.with_defaults(:arch => @build_arch)
573
568
 
@@ -585,7 +580,7 @@ module Simp::Rake::Build
585
580
  unless known_not_downloaded.empty?
586
581
  differences_found = true
587
582
 
588
- puts("=== Packages Not Downloaded ===")
583
+ puts('=== Packages Not Downloaded ===')
589
584
  known_not_downloaded.each do |package|
590
585
  puts " - #{package}"
591
586
  end
@@ -595,7 +590,7 @@ module Simp::Rake::Build
595
590
  unless downloaded_not_known.empty?
596
591
  differences_found = true
597
592
 
598
- puts ("=== Pacakges Downloaded not Recorded ===")
593
+ puts('=== Pacakges Downloaded not Recorded ===')
599
594
  downloaded_not_known.each do |package|
600
595
  puts " ~ #{downloaded_package_hash[package][:rpm_name]}"
601
596
  end
@@ -604,7 +599,7 @@ module Simp::Rake::Build
604
599
  if differences_found
605
600
  exit 1
606
601
  else
607
- puts("=== No Differences Found ===")
602
+ puts('=== No Differences Found ===')
608
603
  exit 0
609
604
  end
610
605
  end
@@ -633,18 +628,18 @@ module Simp::Rake::Build
633
628
 
634
629
  * :arch - The architecture that you support. Default: x86_64
635
630
  EOM
636
- task :fetch,[:pkg,:os,:os_version,:simp_version,:arch] => [:scaffold, :prep] do |t,args|
631
+ task :fetch, [:pkg, :os, :os_version, :simp_version, :arch] => [:scaffold, :prep] do |_t, args|
637
632
  args.with_defaults(:simp_version => @simp_version.split('-').first)
638
633
  args.with_defaults(:arch => @build_arch)
639
634
 
640
- fail("Error: You must specify 'pkg'") unless args[:pkg]
635
+ raise("Error: You must specify 'pkg'") unless args[:pkg]
641
636
 
642
637
  pkgs = []
643
638
  # Handle the output of build:yum_diff
644
639
  if File.readable?(args[:pkg])
645
640
  File.read(args[:pkg]).each_line do |line|
646
- if line =~ /\s+~\s+(.*)/
647
- pkgs << $1.split(/-\d+/).first
641
+ if line =~ %r{\s+~\s+(.*)}
642
+ pkgs << ::Regexp.last_match(1).split(%r{-\d+}).first
648
643
  end
649
644
  end
650
645
  else
@@ -1,50 +1,50 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'simp/rake/build/constants'
2
4
 
3
5
  module Simp; end
4
6
  module Simp::Rake; end
5
- module Simp::Rake::Build
6
7
 
7
- class Clean < ::Rake::TaskLib
8
- include Simp::Rake::Build::Constants
8
+ class Simp::Rake::Build::Clean < Rake::TaskLib
9
+ include Simp::Rake::Build::Constants
10
+
11
+ def initialize(base_dir)
12
+ init_member_vars(base_dir)
13
+ define_tasks
14
+ end
15
+
16
+ def define_tasks
17
+ ::CLEAN.include(
18
+ "#{@dist_dir}/*",
19
+ '.discinfo',
20
+ @dvd_dir,
21
+ "#{@build_dir}/SIMP",
22
+ "#{@base_dir}/SIMP_ISO*",
23
+ )
24
+
25
+ if $simp6_build_dirs
26
+ ::CLEAN.include($simp6_clean_dirs)
27
+ end
28
+
29
+ ::CLOBBER.include(
30
+ @dist_dir,
31
+ "#{@build_dir}/build_keys/dev",
32
+ "#{@build_dir}/yum_data/*/packages",
33
+ )
34
+
35
+ # This just abstracts the clean/clobber space in such a way that clobber can actally be used!
36
+ def advanced_clean(type, _args)
37
+ raise "Type must be one of 'clean' or 'clobber'" unless ['clean', 'clobber'].include?(type)
38
+
39
+ Rake::Task["pkg:#{type}"].invoke
40
+ end
9
41
 
10
- def initialize( base_dir )
11
- init_member_vars( base_dir )
12
- define_tasks
42
+ task :clobber do |_t, args|
43
+ advanced_clean('clobber', args)
13
44
  end
14
45
 
15
- def define_tasks
16
- ::CLEAN.include(
17
- "#{@dist_dir}/*",
18
- ".discinfo",
19
- @dvd_dir,
20
- "#{@build_dir}/SIMP",
21
- "#{@base_dir}/SIMP_ISO*"
22
- )
23
-
24
- if $simp6_build_dirs
25
- ::CLEAN.include($simp6_clean_dirs)
26
- end
27
-
28
- ::CLOBBER.include(
29
- @dist_dir,
30
- "#{@build_dir}/build_keys/dev",
31
- "#{@build_dir}/yum_data/*/packages"
32
- )
33
-
34
- # This just abstracts the clean/clobber space in such a way that clobber can actally be used!
35
- def advanced_clean(type,args)
36
- fail "Type must be one of 'clean' or 'clobber'" unless ['clean','clobber'].include?(type)
37
-
38
- Rake::Task["pkg:#{type}"].invoke
39
- end
40
-
41
- task :clobber do |t,args|
42
- advanced_clean('clobber',args)
43
- end
44
-
45
- task :clean do |t,args|
46
- advanced_clean('clean',args)
47
- end
46
+ task :clean do |_t, args|
47
+ advanced_clean('clean', args)
48
48
  end
49
49
  end
50
50
  end