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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -0
- data/Gemfile +13 -6
- data/lib/simp/command_utils.rb +6 -3
- data/lib/simp/componentinfo.rb +47 -33
- data/lib/simp/local_gpg_signing_key.rb +302 -303
- data/lib/simp/packer/iso_vars_json.rb +17 -15
- data/lib/simp/rake/build/auto.rb +415 -432
- data/lib/simp/rake/build/build.rb +119 -124
- data/lib/simp/rake/build/clean.rb +39 -39
- data/lib/simp/rake/build/code.rb +125 -128
- data/lib/simp/rake/build/constants.rb +7 -4
- data/lib/simp/rake/build/deps.rb +196 -207
- data/lib/simp/rake/build/helpers.rb +17 -13
- data/lib/simp/rake/build/iso.rb +404 -411
- data/lib/simp/rake/build/pkg.rb +752 -759
- data/lib/simp/rake/build/rpmdeps.rb +70 -70
- data/lib/simp/rake/build/spec.rb +44 -46
- data/lib/simp/rake/build/tar.rb +169 -173
- data/lib/simp/rake/build/unpack.rb +105 -107
- data/lib/simp/rake/build/upload.rb +93 -102
- data/lib/simp/rake/fixtures.rb +69 -66
- data/lib/simp/rake/helpers/rpm_spec.rb +10 -7
- data/lib/simp/rake/helpers/version.rb +3 -1
- data/lib/simp/rake/helpers.rb +12 -10
- data/lib/simp/rake/pkg.rb +417 -440
- data/lib/simp/rake/pupmod/helpers.rb +100 -87
- data/lib/simp/rake/pupmod/module_build.rb +39 -0
- data/lib/simp/rake/rubygem.rb +57 -56
- data/lib/simp/rake.rb +34 -29
- data/lib/simp/relchecks.rb +52 -43
- data/lib/simp/rpm.rb +123 -127
- data/lib/simp/rpm_signer.rb +57 -55
- data/lib/simp/yum.rb +54 -53
- data/spec/acceptance/nodesets/{default_ruby3_1.yml → almalinux10.yml} +4 -4
- data/spec/acceptance/nodesets/{default.yml → almalinux8.yml} +2 -2
- data/spec/acceptance/nodesets/almalinux9.yml +25 -0
- data/spec/acceptance/suites/default/00_pkg_rpm_custom_scriptlets_spec.rb +23 -28
- data/spec/acceptance/suites/default/10_pkg_rpm_spec.rb +54 -56
- data/spec/acceptance/suites/default/30_pkg_misc_spec.rb +17 -19
- data/spec/acceptance/suites/default/50_local_gpg_signing_key_spec.rb +5 -5
- data/spec/acceptance/suites/default/55_build_pkg_signing_spec.rb +109 -101
- data/spec/acceptance/suites/default/files/testpackage/spec/classes/init_spec.rb +1 -0
- data/spec/acceptance/suites/default/files/testpackage/spec/files/mock_something.rb +3 -1
- data/spec/acceptance/suites/default/files/testpackage/utils/convert_v1_to_v2.rb +2 -0
- data/spec/acceptance/suites/default/support/build_project_helpers.rb +20 -17
- data/spec/acceptance/suites/default/support/build_user_helpers.rb +4 -2
- data/spec/acceptance/suites/default/support/pkg_rpm_helpers.rb +30 -31
- data/spec/acceptance/support/simp_rake_helpers.rb +3 -1
- data/spec/lib/simp/command_utils_spec.rb +13 -10
- data/spec/lib/simp/componentinfo_changelog_regex_spec.rb +33 -33
- data/spec/lib/simp/componentinfo_spec.rb +99 -86
- data/spec/lib/simp/packer/iso_vars_json_spec.rb +16 -14
- data/spec/lib/simp/rake/build/helpers_spec.rb +7 -7
- data/spec/lib/simp/rake/build/rpmdeps_spec.rb +48 -46
- data/spec/lib/simp/rake/helpers_spec.rb +6 -5
- data/spec/lib/simp/rake/pkg_spec.rb +7 -5
- data/spec/lib/simp/rake/pupmod/fixtures/othermod/spec/classes/init_spec.rb +3 -1
- data/spec/lib/simp/rake/pupmod/fixtures/othermod/spec/spec_helper.rb +2 -0
- data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/acceptance/suites/default/class_spec.rb +6 -5
- data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/classes/init_spec.rb +51 -33
- data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/spec_helper.rb +15 -16
- data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/spec_helper_acceptance.rb +9 -9
- data/spec/lib/simp/rake/pupmod/helpers_spec.rb +20 -19
- data/spec/lib/simp/rake/pupmod/module_build_spec.rb +87 -0
- data/spec/lib/simp/rake_spec.rb +7 -6
- data/spec/lib/simp/relchecks_check_rpm_changelog_spec.rb +26 -31
- data/spec/lib/simp/relchecks_compare_latest_tag_spec.rb +32 -26
- data/spec/lib/simp/relchecks_create_tag_changelog_spec.rb +27 -19
- data/spec/lib/simp/rpm_signer_spec.rb +45 -39
- data/spec/lib/simp/rpm_spec.rb +190 -194
- data/spec/spec_helper.rb +4 -2
- data/spec/spec_helper_acceptance.rb +3 -5
- metadata +37 -72
- data/bin/simp_rake_helpers +0 -3
- data/lib/simp/ci/gitlab.rb +0 -226
- data/lib/simp/rake/ci.rb +0 -31
- data/spec/lib/simp/ci/files/global_nodesets_only/spec/acceptance/nodesets/default.yml +0 -41
- data/spec/lib/simp/ci/files/global_nodesets_only/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/job_broken_link_nodeset/spec/acceptance/nodesets/centos.yml +0 -41
- data/spec/lib/simp/ci/files/job_broken_link_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/job_broken_link_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
- data/spec/lib/simp/ci/files/job_invalid_nodeset/spec/acceptance/nodesets/default.yml +0 -41
- data/spec/lib/simp/ci/files/job_invalid_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/job_invalid_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
- data/spec/lib/simp/ci/files/job_invalid_suite/spec/acceptance/nodesets/default.yml +0 -41
- data/spec/lib/simp/ci/files/job_invalid_suite/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/job_invalid_suite/spec/acceptance/suites/default/class_spec.rb +0 -0
- data/spec/lib/simp/ci/files/job_missing_nodeset/spec/acceptance/nodesets/default.yml +0 -41
- data/spec/lib/simp/ci/files/job_missing_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/job_missing_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
- data/spec/lib/simp/ci/files/job_missing_suite_and_nodeset/spec/acceptance/nodesets/default.yml +0 -41
- data/spec/lib/simp/ci/files/job_missing_suite_and_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/job_missing_suite_and_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
- data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/nodesets/default.yml +0 -41
- data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/default/class_spec.rb +0 -0
- data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/feature-1/feature-1_spec.rb +0 -0
- data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/feature_2/feature_2_spec.rb +0 -0
- data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/feature_2/nodesets/default.yml +0 -35
- data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/feature_2/nodesets/oel.yml +0 -35
- data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/nodesets/default.yml +0 -41
- data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/default/class_spec.rb +0 -0
- data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/feature-1/feature-1_spec.rb +0 -0
- data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/feature_2/feature_2_spec.rb +0 -0
- data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/feature_2/nodesets/default.yml +0 -35
- data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/feature_2/nodesets/oel.yml +0 -35
- data/spec/lib/simp/ci/files/no_acceptance_tests/spec/spec_helper.rb +0 -0
- data/spec/lib/simp/ci/files/no_gitlab_config_with_tests/spec/acceptance/nodesets/default.yml +0 -41
- data/spec/lib/simp/ci/files/no_gitlab_config_with_tests/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/no_gitlab_config_with_tests/spec/acceptance/suites/default/class_spec.rb +0 -0
- data/spec/lib/simp/ci/files/no_gitlab_config_without_tests/spec/acceptance/nodesets/default.yml +0 -41
- data/spec/lib/simp/ci/files/no_gitlab_config_without_tests/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/suite_skeleton_only/spec/acceptance/nodesets/centos.yml +0 -41
- data/spec/lib/simp/ci/files/suite_skeleton_only/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/valid_job_global_nodeset/spec/acceptance/nodesets/default.yml +0 -41
- data/spec/lib/simp/ci/files/valid_job_global_nodeset/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/valid_job_global_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
- data/spec/lib/simp/ci/files/valid_job_nodeset_dir_link/spec/acceptance/nodesets/default.yml +0 -41
- data/spec/lib/simp/ci/files/valid_job_nodeset_dir_link/spec/acceptance/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/valid_job_nodeset_dir_link/spec/acceptance/suites/default/class_spec.rb +0 -0
- data/spec/lib/simp/ci/files/valid_job_nodeset_link/spec/acceptance/suites/default/class_spec.rb +0 -0
- data/spec/lib/simp/ci/files/valid_job_nodeset_link/spec/acceptance/suites/default/nodesets/centos.yml +0 -41
- data/spec/lib/simp/ci/files/valid_job_nodeset_link/spec/acceptance/suites/default/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/files/valid_job_suite_nodeset/spec/acceptance/suites/default/class_spec.rb +0 -0
- data/spec/lib/simp/ci/files/valid_job_suite_nodeset/spec/acceptance/suites/default/nodesets/default.yml +0 -41
- data/spec/lib/simp/ci/files/valid_job_suite_nodeset/spec/acceptance/suites/default/nodesets/oel.yml +0 -41
- data/spec/lib/simp/ci/gitlab_spec.rb +0 -245
data/lib/simp/rake/build/tar.rb
CHANGED
|
@@ -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
|
-
|
|
10
|
-
|
|
9
|
+
class Simp::Rake::Build::Tar < Rake::TaskLib
|
|
10
|
+
include Simp::Rake::Build::Constants
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
def initialize(base_dir)
|
|
13
|
+
init_member_vars(base_dir)
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
define_tasks
|
|
16
|
+
end
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
end
|
|
27
|
+
if $tarball_tgt
|
|
28
|
+
@dvd_dir = File.dirname($tarball_tgt)
|
|
30
29
|
end
|
|
30
|
+
end
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
36
|
+
simp_version = Simp::RPM.new(simp_rpm).full_version
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
# For picking up the correct RPM template
|
|
39
|
+
ENV['SIMP_BUILD_version'] ||= simp_version
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
simp_version
|
|
42
|
+
end
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
70
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
-
|
|
92
|
-
end
|
|
91
|
+
raise(msg.join("\n"))
|
|
93
92
|
end
|
|
94
93
|
end
|
|
94
|
+
end
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
130
|
-
|
|
131
|
-
|
|
147
|
+
if %r{i.*86}.match?(type)
|
|
148
|
+
dest_type = 'i386'
|
|
149
|
+
end
|
|
132
150
|
|
|
133
|
-
|
|
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
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
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
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
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
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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
|
-
|
|
186
|
-
|
|
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
|
-
|
|
195
|
-
|
|
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
|
-
|
|
203
|
+
dvd_tarball = File.basename($tarball_tgt)
|
|
204
|
+
base_dir = "#{@dvd_dir}/staging"
|
|
199
205
|
else
|
|
200
|
-
|
|
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
|
-
|
|
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
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
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
|
-
|
|
9
|
-
|
|
9
|
+
class Simp::Rake::Build::Unpack < Rake::TaskLib
|
|
10
|
+
include Simp::Rake::Build::Constants
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
def initialize(base_dir)
|
|
13
|
+
init_member_vars(base_dir)
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
define_tasks
|
|
16
|
+
end
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
#
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
'
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
'
|
|
74
|
-
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
|
|
95
|
-
|
|
93
|
+
puts "Target dir: #{out_dir}"
|
|
94
|
+
mkdir_p(out_dir)
|
|
96
95
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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
|