simp-rake-helpers 5.25.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 (129) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/Gemfile +13 -6
  4. data/lib/simp/command_utils.rb +6 -3
  5. data/lib/simp/componentinfo.rb +47 -33
  6. data/lib/simp/local_gpg_signing_key.rb +302 -303
  7. data/lib/simp/packer/iso_vars_json.rb +17 -15
  8. data/lib/simp/rake/build/auto.rb +415 -432
  9. data/lib/simp/rake/build/build.rb +119 -124
  10. data/lib/simp/rake/build/clean.rb +39 -39
  11. data/lib/simp/rake/build/code.rb +125 -128
  12. data/lib/simp/rake/build/constants.rb +7 -4
  13. data/lib/simp/rake/build/deps.rb +196 -207
  14. data/lib/simp/rake/build/helpers.rb +17 -13
  15. data/lib/simp/rake/build/iso.rb +404 -411
  16. data/lib/simp/rake/build/pkg.rb +752 -759
  17. data/lib/simp/rake/build/rpmdeps.rb +70 -70
  18. data/lib/simp/rake/build/spec.rb +44 -46
  19. data/lib/simp/rake/build/tar.rb +169 -173
  20. data/lib/simp/rake/build/unpack.rb +105 -107
  21. data/lib/simp/rake/build/upload.rb +93 -102
  22. data/lib/simp/rake/fixtures.rb +69 -66
  23. data/lib/simp/rake/helpers/rpm_spec.rb +10 -7
  24. data/lib/simp/rake/helpers/version.rb +3 -1
  25. data/lib/simp/rake/helpers.rb +12 -10
  26. data/lib/simp/rake/pkg.rb +417 -440
  27. data/lib/simp/rake/pupmod/helpers.rb +100 -87
  28. data/lib/simp/rake/pupmod/module_build.rb +39 -0
  29. data/lib/simp/rake/rubygem.rb +57 -56
  30. data/lib/simp/rake.rb +34 -29
  31. data/lib/simp/relchecks.rb +52 -43
  32. data/lib/simp/rpm.rb +123 -127
  33. data/lib/simp/rpm_signer.rb +57 -55
  34. data/lib/simp/yum.rb +54 -53
  35. data/spec/acceptance/nodesets/{default_ruby3_1.yml → almalinux10.yml} +4 -4
  36. data/spec/acceptance/nodesets/{default.yml → almalinux8.yml} +2 -2
  37. data/spec/acceptance/nodesets/almalinux9.yml +25 -0
  38. data/spec/acceptance/suites/default/00_pkg_rpm_custom_scriptlets_spec.rb +23 -28
  39. data/spec/acceptance/suites/default/10_pkg_rpm_spec.rb +54 -56
  40. data/spec/acceptance/suites/default/30_pkg_misc_spec.rb +17 -19
  41. data/spec/acceptance/suites/default/50_local_gpg_signing_key_spec.rb +5 -5
  42. data/spec/acceptance/suites/default/55_build_pkg_signing_spec.rb +109 -101
  43. data/spec/acceptance/suites/default/files/testpackage/spec/classes/init_spec.rb +1 -0
  44. data/spec/acceptance/suites/default/files/testpackage/spec/files/mock_something.rb +3 -1
  45. data/spec/acceptance/suites/default/files/testpackage/utils/convert_v1_to_v2.rb +2 -0
  46. data/spec/acceptance/suites/default/support/build_project_helpers.rb +20 -17
  47. data/spec/acceptance/suites/default/support/build_user_helpers.rb +4 -2
  48. data/spec/acceptance/suites/default/support/pkg_rpm_helpers.rb +30 -31
  49. data/spec/acceptance/support/simp_rake_helpers.rb +3 -1
  50. data/spec/lib/simp/command_utils_spec.rb +13 -10
  51. data/spec/lib/simp/componentinfo_changelog_regex_spec.rb +33 -33
  52. data/spec/lib/simp/componentinfo_spec.rb +99 -86
  53. data/spec/lib/simp/packer/iso_vars_json_spec.rb +16 -14
  54. data/spec/lib/simp/rake/build/helpers_spec.rb +7 -7
  55. data/spec/lib/simp/rake/build/rpmdeps_spec.rb +48 -46
  56. data/spec/lib/simp/rake/helpers_spec.rb +6 -5
  57. data/spec/lib/simp/rake/pkg_spec.rb +7 -5
  58. data/spec/lib/simp/rake/pupmod/fixtures/othermod/spec/classes/init_spec.rb +3 -1
  59. data/spec/lib/simp/rake/pupmod/fixtures/othermod/spec/spec_helper.rb +2 -0
  60. data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/acceptance/suites/default/class_spec.rb +6 -5
  61. data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/classes/init_spec.rb +51 -33
  62. data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/spec_helper.rb +15 -16
  63. data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/spec_helper_acceptance.rb +9 -9
  64. data/spec/lib/simp/rake/pupmod/helpers_spec.rb +20 -19
  65. data/spec/lib/simp/rake/pupmod/module_build_spec.rb +87 -0
  66. data/spec/lib/simp/rake_spec.rb +7 -6
  67. data/spec/lib/simp/relchecks_check_rpm_changelog_spec.rb +26 -31
  68. data/spec/lib/simp/relchecks_compare_latest_tag_spec.rb +32 -26
  69. data/spec/lib/simp/relchecks_create_tag_changelog_spec.rb +27 -19
  70. data/spec/lib/simp/rpm_signer_spec.rb +45 -39
  71. data/spec/lib/simp/rpm_spec.rb +190 -194
  72. data/spec/spec_helper.rb +4 -2
  73. data/spec/spec_helper_acceptance.rb +3 -5
  74. metadata +37 -72
  75. data/bin/simp_rake_helpers +0 -3
  76. data/lib/simp/ci/gitlab.rb +0 -226
  77. data/lib/simp/rake/ci.rb +0 -31
  78. data/spec/lib/simp/ci/files/global_nodesets_only/spec/acceptance/nodesets/default.yml +0 -41
  79. data/spec/lib/simp/ci/files/global_nodesets_only/spec/acceptance/nodesets/oel.yml +0 -41
  80. data/spec/lib/simp/ci/files/job_broken_link_nodeset/spec/acceptance/nodesets/centos.yml +0 -41
  81. data/spec/lib/simp/ci/files/job_broken_link_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
  82. data/spec/lib/simp/ci/files/job_broken_link_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
  83. data/spec/lib/simp/ci/files/job_invalid_nodeset/spec/acceptance/nodesets/default.yml +0 -41
  84. data/spec/lib/simp/ci/files/job_invalid_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
  85. data/spec/lib/simp/ci/files/job_invalid_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
  86. data/spec/lib/simp/ci/files/job_invalid_suite/spec/acceptance/nodesets/default.yml +0 -41
  87. data/spec/lib/simp/ci/files/job_invalid_suite/spec/acceptance/nodesets/oel.yml +0 -41
  88. data/spec/lib/simp/ci/files/job_invalid_suite/spec/acceptance/suites/default/class_spec.rb +0 -0
  89. data/spec/lib/simp/ci/files/job_missing_nodeset/spec/acceptance/nodesets/default.yml +0 -41
  90. data/spec/lib/simp/ci/files/job_missing_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
  91. data/spec/lib/simp/ci/files/job_missing_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
  92. data/spec/lib/simp/ci/files/job_missing_suite_and_nodeset/spec/acceptance/nodesets/default.yml +0 -41
  93. data/spec/lib/simp/ci/files/job_missing_suite_and_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
  94. data/spec/lib/simp/ci/files/job_missing_suite_and_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
  95. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/nodesets/default.yml +0 -41
  96. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/nodesets/oel.yml +0 -41
  97. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/default/class_spec.rb +0 -0
  98. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/feature-1/feature-1_spec.rb +0 -0
  99. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/feature_2/feature_2_spec.rb +0 -0
  100. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/feature_2/nodesets/default.yml +0 -35
  101. data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/feature_2/nodesets/oel.yml +0 -35
  102. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/nodesets/default.yml +0 -41
  103. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/nodesets/oel.yml +0 -41
  104. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/default/class_spec.rb +0 -0
  105. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/feature-1/feature-1_spec.rb +0 -0
  106. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/feature_2/feature_2_spec.rb +0 -0
  107. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/feature_2/nodesets/default.yml +0 -35
  108. data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/feature_2/nodesets/oel.yml +0 -35
  109. data/spec/lib/simp/ci/files/no_acceptance_tests/spec/spec_helper.rb +0 -0
  110. data/spec/lib/simp/ci/files/no_gitlab_config_with_tests/spec/acceptance/nodesets/default.yml +0 -41
  111. data/spec/lib/simp/ci/files/no_gitlab_config_with_tests/spec/acceptance/nodesets/oel.yml +0 -41
  112. data/spec/lib/simp/ci/files/no_gitlab_config_with_tests/spec/acceptance/suites/default/class_spec.rb +0 -0
  113. data/spec/lib/simp/ci/files/no_gitlab_config_without_tests/spec/acceptance/nodesets/default.yml +0 -41
  114. data/spec/lib/simp/ci/files/no_gitlab_config_without_tests/spec/acceptance/nodesets/oel.yml +0 -41
  115. data/spec/lib/simp/ci/files/suite_skeleton_only/spec/acceptance/nodesets/centos.yml +0 -41
  116. data/spec/lib/simp/ci/files/suite_skeleton_only/spec/acceptance/nodesets/oel.yml +0 -41
  117. data/spec/lib/simp/ci/files/valid_job_global_nodeset/spec/acceptance/nodesets/default.yml +0 -41
  118. data/spec/lib/simp/ci/files/valid_job_global_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
  119. data/spec/lib/simp/ci/files/valid_job_global_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
  120. data/spec/lib/simp/ci/files/valid_job_nodeset_dir_link/spec/acceptance/nodesets/default.yml +0 -41
  121. data/spec/lib/simp/ci/files/valid_job_nodeset_dir_link/spec/acceptance/nodesets/oel.yml +0 -41
  122. data/spec/lib/simp/ci/files/valid_job_nodeset_dir_link/spec/acceptance/suites/default/class_spec.rb +0 -0
  123. data/spec/lib/simp/ci/files/valid_job_nodeset_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/nodesets/centos.yml +0 -41
  125. data/spec/lib/simp/ci/files/valid_job_nodeset_link/spec/acceptance/suites/default/nodesets/oel.yml +0 -41
  126. data/spec/lib/simp/ci/files/valid_job_suite_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
  127. data/spec/lib/simp/ci/files/valid_job_suite_nodeset/spec/acceptance/suites/default/nodesets/default.yml +0 -41
  128. data/spec/lib/simp/ci/files/valid_job_suite_nodeset/spec/acceptance/suites/default/nodesets/oel.yml +0 -41
  129. data/spec/lib/simp/ci/gitlab_spec.rb +0 -245
@@ -1,231 +1,227 @@
1
1
  #!/usr/bin/rake -T
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'simp/rake/build/constants'
4
5
 
5
6
  module Simp; end
6
7
  module Simp::Rake; end
7
- module Simp::Rake::Build
8
8
 
9
- class Tar < ::Rake::TaskLib
10
- include Simp::Rake::Build::Constants
9
+ class Simp::Rake::Build::Tar < Rake::TaskLib
10
+ include Simp::Rake::Build::Constants
11
11
 
12
- def initialize( base_dir )
13
- init_member_vars( base_dir )
12
+ def initialize(base_dir)
13
+ init_member_vars(base_dir)
14
14
 
15
- define_tasks
16
- end
15
+ define_tasks
16
+ end
17
17
 
18
- # define rake tasks
19
- def define_tasks
20
- namespace :tar do
21
- task :prep do
22
- if $simp6
23
- @build_dir = $simp6_build_dir || @distro_build_dir
24
- @dvd_src = File.join(@build_dir, File.basename(@dvd_src))
25
- end
18
+ # define rake tasks
19
+ def define_tasks
20
+ namespace :tar do
21
+ task :prep do
22
+ if $simp6
23
+ @build_dir = $simp6_build_dir || @distro_build_dir
24
+ @dvd_src = File.join(@build_dir, File.basename(@dvd_src))
25
+ end
26
26
 
27
- if $tarball_tgt
28
- @dvd_dir = File.dirname($tarball_tgt)
29
- end
27
+ if $tarball_tgt
28
+ @dvd_dir = File.dirname($tarball_tgt)
30
29
  end
30
+ end
31
31
 
32
- def get_simp_version
33
- simp_rpm = Dir.glob("#{@build_dir}/SIMP/RPMS/*/simp-[0-9]*.rpm").max_by {|f| File.mtime(f)}
34
- fail("Could not find simp main RPM in output directory!") unless simp_rpm
32
+ def get_simp_version
33
+ simp_rpm = Dir.glob("#{@build_dir}/SIMP/RPMS/*/simp-[0-9]*.rpm").max_by { |f| File.mtime(f) }
34
+ raise('Could not find simp main RPM in output directory!') unless simp_rpm
35
35
 
36
- simp_version = Simp::RPM.new(simp_rpm).full_version
36
+ simp_version = Simp::RPM.new(simp_rpm).full_version
37
37
 
38
- # For picking up the correct RPM template
39
- ENV['SIMP_BUILD_version'] ||= simp_version
38
+ # For picking up the correct RPM template
39
+ ENV['SIMP_BUILD_version'] ||= simp_version
40
40
 
41
- return simp_version
42
- end
41
+ simp_version
42
+ end
43
43
 
44
- ##############################################################################
45
- # Main tasks
46
- ##############################################################################
47
-
48
- task :validate => [:prep] do |t,args|
49
- required_rpms = {
50
- 'noarch' => [
51
- 'rubygem-simp-cli',
52
- 'simp',
53
- 'simp-gpgkeys',
54
- 'simp-utils',
55
- 'simp-vendored-r10k'
56
- ]
57
- }
58
-
59
- simp_version = get_simp_version
60
-
61
- if Gem::Version.new(simp_version) < Gem::Version.new('6.4.0')
62
- required_rpms['noarch'] << 'simp-rsync'
63
- else
64
- required_rpms['noarch'] << 'simp-rsync-skeleton'
65
- required_rpms['noarch'] << 'simp-environment-skeleton'
66
- required_rpms['noarch'] << 'simp-selinux-policy'
67
- end
44
+ ##############################################################################
45
+ # Main tasks
46
+ ##############################################################################
47
+
48
+ task :validate => [:prep] do |_t, _args|
49
+ required_rpms = {
50
+ 'noarch' => [
51
+ 'rubygem-simp-cli',
52
+ 'simp',
53
+ 'simp-gpgkeys',
54
+ 'simp-utils',
55
+ 'simp-vendored-r10k',
56
+ ]
57
+ }
58
+
59
+ simp_version = get_simp_version
60
+
61
+ if Gem::Version.new(simp_version) < Gem::Version.new('6.4.0')
62
+ required_rpms['noarch'] << 'simp-rsync'
63
+ else
64
+ required_rpms['noarch'] << 'simp-rsync-skeleton'
65
+ required_rpms['noarch'] << 'simp-environment-skeleton'
66
+ required_rpms['noarch'] << 'simp-selinux-policy'
67
+ end
68
68
 
69
- rpm_dir = File.join(@build_dir,'SIMP','RPMS')
70
- fail("Could not find directory '#{rpm_dir}'") unless File.directory?(rpm_dir)
69
+ rpm_dir = File.join(@build_dir, 'SIMP', 'RPMS')
70
+ raise("Could not find directory '#{rpm_dir}'") unless File.directory?(rpm_dir)
71
71
 
72
- Dir.chdir(rpm_dir) do
73
- failures = []
74
- required_rpms.keys.each do |dir|
75
- fail("Could not find directory '#{File.join(rpm_dir, dir)}'") unless File.directory?(dir)
72
+ Dir.chdir(rpm_dir) do
73
+ failures = []
74
+ required_rpms.each_key do |dir|
75
+ raise("Could not find directory '#{File.join(rpm_dir, dir)}'") unless File.directory?(dir)
76
76
 
77
- Dir.chdir(dir) do
78
- required_rpms[dir].each do |pkg|
79
- if Dir.glob("#{pkg}-[0-9]*.rpm").empty?
80
- failures << " * #{pkg}"
81
- end
77
+ Dir.chdir(dir) do
78
+ required_rpms[dir].each do |pkg|
79
+ if Dir.glob("#{pkg}-[0-9]*.rpm").empty?
80
+ failures << " * #{pkg}"
82
81
  end
83
82
  end
84
83
  end
84
+ end
85
85
 
86
- unless failures.empty?
87
- msg = ['Error: Could not find the following packages:'] +
88
- failures +
89
- ['Did "dist/logs/last_rpm_build_metadata.yaml" get generated in the build directory?']
86
+ unless failures.empty?
87
+ msg = ['Error: Could not find the following packages:'] +
88
+ failures +
89
+ ['Did "dist/logs/last_rpm_build_metadata.yaml" get generated in the build directory?']
90
90
 
91
- fail(msg.join("\n"))
92
- end
91
+ raise(msg.join("\n"))
93
92
  end
94
93
  end
94
+ end
95
95
 
96
- =begin
97
- desc <<-EOM
98
- Build the DVD tarball(s).
99
-
100
- * :key - What key to use for signing the RPMs
101
- * :docs - Whether or not to build the documentation
102
- EOM
103
- =end
104
- task :build,[:key,:docs] => ['pkg:build','pkg:checksig','tar:validate'] do |t,args|
105
- args.with_defaults(:docs => 'true')
106
-
107
- if $tarball_tgt
108
- target_dists = ['simp6']
109
- else
110
- target_dists = @target_dists
96
+ # desc <<-EOM
97
+ # Build the DVD tarball(s).
98
+ #
99
+ # * :key - What key to use for signing the RPMs
100
+ # * :docs - Whether or not to build the documentation
101
+ # EOM
102
+ task :build, [:key, :docs] => ['pkg:build', 'pkg:checksig', 'tar:validate'] do |t, args|
103
+ args.with_defaults(:docs => 'true')
104
+
105
+ target_dists = if $tarball_tgt
106
+ ['simp6']
107
+ else
108
+ @target_dists
109
+ end
110
+
111
+ Parallel.map(
112
+ target_dists,
113
+ :in_processes => get_cpu_limit,
114
+ :process => t.name,
115
+ ) do |dist|
116
+ base_dir = if $tarball_tgt
117
+ "#{@dvd_dir}/staging"
118
+ else
119
+ "#{@dvd_dir}/#{dist}/staging"
120
+ end
121
+
122
+ destdir = "#{base_dir}/SIMP"
123
+
124
+ # Build the staging area
125
+ remove_entry_secure(destdir) if File.exist?(destdir)
126
+
127
+ mkdir_p(destdir)
128
+
129
+ Simp::RPM.copy_wo_vcs(@dvd_src, '.', base_dir)
130
+
131
+ # Copy in the GPG Public Keys from @build_dir
132
+ mkdir_p("#{destdir}/GPGKEYS")
133
+ ln(Dir.glob("#{@build_dir}/GPGKEYS/RPM-GPG-KEY*"), "#{destdir}/GPGKEYS", { :force => true })
134
+
135
+ # Copy in the GPG Public Keys packaged by simp-gpgkeys
136
+ simp_gpgkeys = File.join(@src_dir, 'assets', 'gpgkeys', 'GPGKEYS')
137
+ if Dir.exist?(simp_gpgkeys)
138
+ ln(Dir.glob("#{simp_gpgkeys}/RPM-GPG-KEY*"), "#{destdir}/GPGKEYS", { :force => true })
111
139
  end
112
140
 
113
- Parallel.map(
114
- target_dists,
115
- :in_processes => get_cpu_limit,
116
- :process => t.name
117
- ) do |dist|
118
- if $tarball_tgt
119
- base_dir = "#{@dvd_dir}/staging"
120
- else
121
- base_dir = "#{@dvd_dir}/#{dist}/staging"
122
- end
123
-
124
- destdir = "#{base_dir}/SIMP"
125
-
126
- # Build the staging area
127
- remove_entry_secure(destdir) if File.exist?(destdir)
141
+ # Copy in the auto-build RPMs
142
+ Dir.chdir("#{@build_dir}/SIMP/RPMS") do
143
+ Dir.glob('*').each do |type|
144
+ dest_type = type
145
+ next unless File.directory?(type)
128
146
 
129
- mkdir_p(destdir)
130
-
131
- Simp::RPM.copy_wo_vcs(@dvd_src,".",base_dir)
147
+ if %r{i.*86}.match?(type)
148
+ dest_type = 'i386'
149
+ end
132
150
 
133
- # Copy in the GPG Public Keys from @build_dir
134
- mkdir_p("#{destdir}/GPGKEYS")
135
- ln(Dir.glob("#{@build_dir}/GPGKEYS/RPM-GPG-KEY*"), "#{destdir}/GPGKEYS", { :force => true })
151
+ mkdir_p("#{destdir}/#{dest_type}")
136
152
 
137
- # Copy in the GPG Public Keys packaged by simp-gpgkeys
138
- simp_gpgkeys = File.join(@src_dir, 'assets', 'gpgkeys', 'GPGKEYS')
139
- if Dir.exist?(simp_gpgkeys)
140
- ln(Dir.glob("#{simp_gpgkeys}/RPM-GPG-KEY*"), "#{destdir}/GPGKEYS", { :force => true })
153
+ Dir.chdir(type) do
154
+ ln(Dir.glob("*.#{type}.rpm"), "#{destdir}/#{dest_type}", { :force => true })
155
+ end
141
156
  end
157
+ end
142
158
 
143
- # Copy in the auto-build RPMs
144
- Dir.chdir("#{@build_dir}/SIMP/RPMS") do
145
- Dir.glob('*').each do |type|
146
- dest_type = type
147
- if File.directory?(type)
148
- if type =~ /i.*86/
149
- dest_type = 'i386'
150
- end
151
-
152
- mkdir_p("#{destdir}/#{dest_type}")
159
+ next unless args.docs.casecmp('true').zero?
153
160
 
154
- Dir.chdir(type) do
155
- ln(Dir.glob("*.#{type}.rpm"), "#{destdir}/#{dest_type}", { :force => true })
156
- end
157
- end
158
- end
161
+ # Finally, the PDF docs if they exist.
162
+ pdfs = Dir.glob("#{@src_dir}/doc/pdf/*")
163
+ if pdfs.empty?
164
+ # If we don't have PDFs in the directory, yank them out of the
165
+ # RPM itself!
166
+ simp_doc_rpm = Dir.glob("#{@build_dir}/SIMP/RPMS/*/simp-doc*.rpm").last
167
+ unless simp_doc_rpm
168
+ raise(StandardError, 'Error: Could not find simp-doc*.rpm in the build, something went very wrong')
159
169
  end
160
170
 
161
- if args.docs.casecmp('true') == 0
162
- # Finally, the PDF docs if they exist.
163
- pdfs = Dir.glob("#{@src_dir}/doc/pdf/*")
164
- unless pdfs.empty?
165
- pdfs.each do |pdf|
166
- cp(pdf,base_dir)
167
- end
168
- else
169
- # If we don't have PDFs in the directory, yank them out of the
170
- # RPM itself!
171
- simp_doc_rpm = Dir.glob("#{@build_dir}/SIMP/RPMS/*/simp-doc*.rpm").last
172
- unless simp_doc_rpm
173
- raise(StandardError,"Error: Could not find simp-doc*.rpm in the build, something went very wrong")
174
- end
175
-
176
- Dir.mktmpdir do |dir|
177
- Dir.chdir(dir) do
178
- %x{rpm2cpio #{simp_doc_rpm} | cpio -u --quiet --warning none -ivd ./usr/share/doc/simp-*/pdf/SIMP*.pdf 2>&1 > /dev/null}
179
- pdf_docs = Dir.glob("usr/share/doc/simp-*/pdf/*.pdf")
171
+ Dir.mktmpdir do |dir|
172
+ Dir.chdir(dir) do
173
+ `rpm2cpio #{simp_doc_rpm} | cpio -u --quiet --warning none -ivd ./usr/share/doc/simp-*/pdf/SIMP*.pdf 2>&1 > /dev/null`
174
+ pdf_docs = Dir.glob('usr/share/doc/simp-*/pdf/*.pdf')
180
175
 
181
- if pdf_docs.empty?
182
- raise(StandardError,"Error: Could not find any PDFs in the simp-doc RPM, aborting.")
183
- end
176
+ if pdf_docs.empty?
177
+ raise(StandardError, 'Error: Could not find any PDFs in the simp-doc RPM, aborting.')
178
+ end
184
179
 
185
- pdf_docs.each do |pdf|
186
- cp(pdf,base_dir)
187
- end
188
- end
180
+ pdf_docs.each do |pdf|
181
+ cp(pdf, base_dir)
189
182
  end
190
183
  end
191
184
  end
185
+ else
186
+ pdfs.each do |pdf|
187
+ cp(pdf, base_dir)
188
+ end
192
189
  end
190
+ end
191
+
192
+ # FIXME: this is a horribad way of sharing with `build:auto`
193
+ $simp_tarballs = {}
193
194
 
194
- # FIXME: this is a horribad way of sharing with `build:auto`
195
- $simp_tarballs = {}
195
+ target_dists = if $tarball_tgt
196
+ ['simp6']
197
+ else
198
+ @target_dists
199
+ end
196
200
 
201
+ target_dists.each do |dist|
197
202
  if $tarball_tgt
198
- target_dists = ['simp6']
203
+ dvd_tarball = File.basename($tarball_tgt)
204
+ base_dir = "#{@dvd_dir}/staging"
199
205
  else
200
- target_dists = @target_dists
206
+ base_dir = "#{@dvd_dir}/#{dist}/staging"
207
+ dvd_name = ['SIMP', 'DVD', dist, get_simp_version]
208
+ dvd_tarball = "#{dvd_name.join('-')}.tar.gz"
201
209
  end
202
210
 
203
- target_dists.each do |dist|
204
- if $tarball_tgt
205
- dvd_tarball = File.basename($tarball_tgt)
206
- base_dir = "#{@dvd_dir}/staging"
207
- else
208
- base_dir = "#{@dvd_dir}/#{dist}/staging"
209
- dvd_name = [ 'SIMP', 'DVD', dist, get_simp_version ]
210
- dvd_tarball = "#{dvd_name.join('-')}.tar.gz"
211
- end
211
+ mkdir_p(base_dir)
212
212
 
213
- mkdir_p(base_dir)
214
-
215
- Dir.chdir(base_dir) do
216
- sh %{tar --owner 0 --group 0 --exclude-vcs --mode=u=rwX,g=rX,o=rX -cpzf "../#{dvd_tarball}" ./*}
217
- unless $tarball_tgt
218
- mv("../#{dvd_tarball}",@dvd_dir)
219
- end
213
+ Dir.chdir(base_dir) do
214
+ sh %(tar --owner 0 --group 0 --exclude-vcs --mode=u=rwX,g=rX,o=rX -cpzf "../#{dvd_tarball}" ./*)
215
+ unless $tarball_tgt
216
+ mv("../#{dvd_tarball}", @dvd_dir)
220
217
  end
221
-
222
- puts "Package DVD: #{@dvd_dir}/#{dvd_tarball}"
223
- $simp_tarballs[dist] = "#{@dvd_dir}/#{dvd_tarball}"
224
- rm_rf(base_dir)
225
218
  end
219
+
220
+ puts "Package DVD: #{@dvd_dir}/#{dvd_tarball}"
221
+ $simp_tarballs[dist] = "#{@dvd_dir}/#{dvd_tarball}"
222
+ rm_rf(base_dir)
226
223
  end
227
224
  end
228
225
  end
229
226
  end
230
227
  end
231
-
@@ -1,127 +1,125 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ruby-progressbar'
2
4
  require 'simp/rake/build/constants'
3
5
 
4
6
  module Simp; end
5
7
  module Simp::Rake; end
6
- module Simp::Rake::Build
7
8
 
8
- class Unpack < ::Rake::TaskLib
9
- include Simp::Rake::Build::Constants
9
+ class Simp::Rake::Build::Unpack < Rake::TaskLib
10
+ include Simp::Rake::Build::Constants
10
11
 
11
- def initialize( base_dir )
12
- init_member_vars( base_dir )
12
+ def initialize(base_dir)
13
+ init_member_vars(base_dir)
13
14
 
14
- define_tasks
15
- end
15
+ define_tasks
16
+ end
16
17
 
17
- def define_tasks
18
- #!/usr/bin/rake -T
19
-
20
- =begin
21
- desc "Unpack an ISO. Unpacks either a RHEL or CentOS ISO into
22
- <targetdir>/<RHEL|CentOS><version>-<arch>.
23
- * :iso_path - Full path to the ISO image to unpack.
24
- * :merge - If true, then automatically merge any existing
25
- directories. Defaults to prompting.
26
- * :targetdir - The parent directory for the to-be-created directory
27
- containing the unpacked ISO. Defaults to the current directory.
28
- * :isoinfo - The isoinfo executable to use to extract stuff from the ISO.
29
- Defaults to 'isoinfo'.
30
- * :version - optional override for the <version> number (e.g., '7.0' instead of '7')
31
- * :exclude_repos - Don't unpack repos or packages when true
32
-
33
- "
34
- =end
35
- task :unpack,[:iso_path, :merge, :targetdir, :isoinfo, :version, :exclude_repos] do |t,args|
36
- args.with_defaults(
37
- :iso_path => '',
38
- :isoinfo => 'isoinfo',
39
- :targetdir => Dir.pwd,
40
- :merge => false,
41
- :version => false,
42
- :exclude_repos => false,
43
- )
44
-
45
- iso_path = args.iso_path
46
- iso_info = which(args.isoinfo)
47
- targetdir = args.targetdir
48
- merge = args.merge
49
- version = args.version
50
- exclude_repos = args.exclude_repos
51
-
52
- # Checking for valid arguments
53
- File.exist?(args.iso_path) or
54
- fail "Error: You must provide the full path and filename of the ISO image."
55
-
56
- %x{file --keep-going '#{iso_path}'}.split(":")[1..-1].to_s =~ /ISO/ or
57
- fail "Error: The file provided is not a valid ISO."
58
-
59
- pieces = File.basename(iso_path,'.iso').split('-')
60
-
61
- # Mappings of ISO name to target directory name.
62
- # This is a hash of hashes to provide room for growth.
63
- dvd_map = {
64
- # RHEL structure as provided from RHN:
65
- # rhel-server-<version>-<arch>-<whatever>
66
- 'rhel' => {
67
- 'baseos' => 'RedHat',
68
- 'version' => version || pieces[2],
69
- 'arch' => pieces[3]
70
- },
71
- # CentOS structure as provided from the CentOS website:
72
- # CentOS-<version>-<arch>-<whatever>
73
- 'CentOS' => {
74
- 'baseos' => 'CentOS',
75
- 'version' => version || pieces[1],
76
- 'arch' => pieces[2]
77
- }
18
+ def define_tasks
19
+ # !/usr/bin/rake -T
20
+
21
+ # desc "Unpack an ISO. Unpacks either a RHEL or CentOS ISO into
22
+ # <targetdir>/<RHEL|CentOS><version>-<arch>.
23
+ # * :iso_path - Full path to the ISO image to unpack.
24
+ # * :merge - If true, then automatically merge any existing
25
+ # directories. Defaults to prompting.
26
+ # * :targetdir - The parent directory for the to-be-created directory
27
+ # containing the unpacked ISO. Defaults to the current directory.
28
+ # * :isoinfo - The isoinfo executable to use to extract stuff from the ISO.
29
+ # Defaults to 'isoinfo'.
30
+ # * :version - optional override for the <version> number (e.g., '7.0' instead of '7')
31
+ # * :exclude_repos - Don't unpack repos or packages when true
32
+ #
33
+ # "
34
+ task :unpack, [:iso_path, :merge, :targetdir, :isoinfo, :version, :exclude_repos] do |_t, args|
35
+ args.with_defaults(
36
+ :iso_path => '',
37
+ :isoinfo => 'isoinfo',
38
+ :targetdir => Dir.pwd,
39
+ :merge => false,
40
+ :version => false,
41
+ :exclude_repos => false,
42
+ )
43
+
44
+ iso_path = args.iso_path
45
+ iso_info = which(args.isoinfo)
46
+ targetdir = args.targetdir
47
+ merge = args.merge
48
+ version = args.version
49
+ exclude_repos = args.exclude_repos
50
+
51
+ # Checking for valid arguments
52
+ File.exist?(args.iso_path) or
53
+ raise 'Error: You must provide the full path and filename of the ISO image.'
54
+
55
+ `file --keep-going '#{iso_path}'`.split(':')[1..].to_s.include?('ISO') or
56
+ raise 'Error: The file provided is not a valid ISO.'
57
+
58
+ pieces = File.basename(iso_path, '.iso').split('-')
59
+
60
+ # Mappings of ISO name to target directory name.
61
+ # This is a hash of hashes to provide room for growth.
62
+ dvd_map = {
63
+ # RHEL structure as provided from RHN:
64
+ # rhel-server-<version>-<arch>-<whatever>
65
+ 'rhel' => {
66
+ 'baseos' => 'RedHat',
67
+ 'version' => version || pieces[2],
68
+ 'arch' => pieces[3]
69
+ },
70
+ # CentOS structure as provided from the CentOS website:
71
+ # CentOS-<version>-<arch>-<whatever>
72
+ 'CentOS' => {
73
+ 'baseos' => 'CentOS',
74
+ 'version' => version || pieces[1],
75
+ 'arch' => pieces[2]
78
76
  }
79
-
80
- # Determine the target directory
81
- map = dvd_map[pieces[0]]
82
- map.nil? and fail "Error: Could not find a mapping for '#{iso_path}'."
83
- out_dir = "#{File.expand_path(targetdir)}/#{map['baseos']}#{map['version']}-#{map['arch']}"
84
-
85
- # Attempt a merge
86
- if File.exist?(out_dir) and merge.to_s.strip == 'false'
87
- puts "Directory '#{out_dir}' already exists! Would you like to merge? [Yn]?"
88
- unless $stdin.gets.strip.match(/^(y.*|$)/i)
89
- puts "Skipping #{iso_path}"
90
- next
91
- end
77
+ }
78
+
79
+ # Determine the target directory
80
+ map = dvd_map[pieces[0]]
81
+ map.nil? and raise "Error: Could not find a mapping for '#{iso_path}'."
82
+ out_dir = "#{File.expand_path(targetdir)}/#{map['baseos']}#{map['version']}-#{map['arch']}"
83
+
84
+ # Attempt a merge
85
+ if File.exist?(out_dir) && (merge.to_s.strip == 'false')
86
+ puts "Directory '#{out_dir}' already exists! Would you like to merge? [Yn]?"
87
+ unless $stdin.gets.strip.match?(%r{^(y.*|$)}i)
88
+ puts "Skipping #{iso_path}"
89
+ next
92
90
  end
91
+ end
93
92
 
94
- puts "Target dir: #{out_dir}"
95
- mkdir_p(out_dir)
93
+ puts "Target dir: #{out_dir}"
94
+ mkdir_p(out_dir)
96
95
 
97
- # Unpack the ISO
98
- iso_toc = %x{#{iso_info} -Rf -i #{iso_path}}.split("\n")
99
- iso_toc.each do |iso_entry|
100
- iso_toc.delete(File.dirname(iso_entry))
101
- end
96
+ # Unpack the ISO
97
+ iso_toc = `#{iso_info} -Rf -i #{iso_path}`.split("\n")
98
+ iso_toc.each do |iso_entry|
99
+ iso_toc.delete(File.dirname(iso_entry))
100
+ end
102
101
 
103
- progress = ProgressBar.create(:title => 'Unpacking', :total => iso_toc.size)
104
-
105
- iso_toc.each do |iso_entry|
106
- target = "#{out_dir}#{iso_entry}"
107
- unless File.exist?(target)
108
- if exclude_repos && target =~ %r{\.rpm$|repodata|repomd.xml}
109
- puts " [exclude_repos] SKIPPING repo/package file: #{target}"
110
- next
111
- end
112
- FileUtils.mkdir_p(File.dirname(target))
113
- system("#{iso_info} -R -x #{iso_entry} -i #{iso_path} > #{target}")
114
- end
115
- if progress
116
- progress.increment
117
- else
118
- print "#"
102
+ progress = ProgressBar.create(:title => 'Unpacking', :total => iso_toc.size)
103
+
104
+ iso_toc.each do |iso_entry|
105
+ target = "#{out_dir}#{iso_entry}"
106
+ unless File.exist?(target)
107
+ if exclude_repos && target =~ %r{\.rpm$|repodata|repomd.xml}
108
+ puts " [exclude_repos] SKIPPING repo/package file: #{target}"
109
+ next
119
110
  end
111
+ FileUtils.mkdir_p(File.dirname(target))
112
+ system("#{iso_info} -R -x #{iso_entry} -i #{iso_path} > #{target}")
113
+ end
114
+ if progress
115
+ progress.increment
116
+ else
117
+ print '#'
120
118
  end
121
-
122
- # The repodata directory needs to exist (but not be copied) for el7 distros
123
- FileUtils.mkdir("#{out_dir}/repodata") if version.start_with?('7')
124
119
  end
120
+
121
+ # The repodata directory needs to exist (but not be copied) for el7 distros
122
+ FileUtils.mkdir("#{out_dir}/repodata") if version.start_with?('7')
125
123
  end
126
124
  end
127
125
  end