packaging 0.108.0 → 0.108.1
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/lib/packaging/sign/rpm.rb +110 -52
- data/spec/lib/packaging/sign_spec.rb +82 -55
- metadata +21 -49
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 54d6abc8bcaa0d29d1580feff3d35577a3c49dc90721708623971cc189007f74
|
|
4
|
+
data.tar.gz: 0643a3a7bd158d488ae66b2b245ad3a36ce59875a0d067f7e3d5a88f6a1a0f52
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0b095ae28da4b0843c4f15fa3e597ff18fe693d50556c89a246a735846be5608831fce42e4e44d34f794dc2f98b3db512e635bc74604a2df9fee9caa5e0e0079
|
|
7
|
+
data.tar.gz: a1e5cc54bdfbd24e529e0b7c99a22675f7c4911cb2f59046ea8a0ac0aa147069a13185351fe0654bb5ba936af39e16fc8dd3435ea3f93e8199ab1d8fb5be022a
|
data/lib/packaging/sign/rpm.rb
CHANGED
|
@@ -1,72 +1,128 @@
|
|
|
1
1
|
module Pkg::Sign::Rpm
|
|
2
2
|
module_function
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
# For rpm v4-style signing, we have old (gpg < v2.1) style and new-style
|
|
5
|
+
# Dispatch those cases.
|
|
6
|
+
def sign(rpm_path, signing_version = :v4)
|
|
7
|
+
unless %i[v3 v4].include?(signing_version)
|
|
8
|
+
fail "Unknown signing version: #{signing_version}. Only ':v3' and ':v4' are supported"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
if gpg_version_older_than_21?
|
|
12
|
+
sign_gpg_1(rpm_path, signing_version)
|
|
13
|
+
else
|
|
14
|
+
sign_gpg_2(rpm_path, signing_version)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Support old, old v3 RPM signing
|
|
19
|
+
def v3_sign(rpm)
|
|
20
|
+
sign(rpm, :v3)
|
|
21
|
+
end
|
|
22
|
+
alias :legacy_sign :v3_sign
|
|
23
|
+
|
|
24
|
+
# Construct GPG configuration, then call 'rpm --addsign' with it.
|
|
25
|
+
def sign_gpg_2(rpm_path, signing_version)
|
|
5
26
|
# To enable support for wrappers around rpm and thus support for gpg-agent
|
|
6
27
|
# rpm signing, we have to be able to tell the packaging repo what binary to
|
|
7
28
|
# use as the rpm signing tool.
|
|
29
|
+
rpm_executable = Pkg::Util::Tool.find_tool('rpm')
|
|
30
|
+
|
|
31
|
+
sign_command = %W[
|
|
32
|
+
#{rpm_executable} --addsign #{rpm_path}
|
|
33
|
+
#{define_gpg_name}
|
|
34
|
+
#{define_gpg_sign_cmd(signing_version)}
|
|
35
|
+
].join(' ')
|
|
36
|
+
|
|
37
|
+
Pkg::Util::Execution.capture3(sign_command, true)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def sign_gpg_1(rpm_path, signing_version)
|
|
41
|
+
# This allows for old-style wrapping of rpmsign with an expect script
|
|
8
42
|
rpm_executable = ENV['RPM'] || Pkg::Util::Tool.find_tool('rpm')
|
|
9
43
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
44
|
+
sign_command = %W[
|
|
45
|
+
#{rpm_executable} --addsign #{rpm_path}
|
|
46
|
+
#{define_gpg_check_password_cmd}
|
|
47
|
+
#{define_gpg_name}
|
|
48
|
+
#{define_gpg_sign_cmd(signing_version)}
|
|
49
|
+
].join(' ')
|
|
50
|
+
Pkg::Util::Execution.capture3(sign_command, true)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def define_gpg_name
|
|
54
|
+
"--define '%_gpg_name #{Pkg::Util::Gpg.key}'"
|
|
55
|
+
end
|
|
22
56
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
57
|
+
def define_gpg_sign_cmd(signing_version)
|
|
58
|
+
"--define '%__gpg_sign_cmd #{gpg_sign_cmd_macro(signing_version)}'"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def gpg_sign_cmd_macro(signing_version)
|
|
62
|
+
gpg_executable = Pkg::Util::Tool.find_tool('gpg')
|
|
29
63
|
|
|
30
64
|
# rubocop:disable Lint/NestedPercentLiteral
|
|
31
|
-
|
|
32
|
-
#{gpg_executable}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
65
|
+
%W[
|
|
66
|
+
#{gpg_executable} --sign --detach-sign
|
|
67
|
+
#{signing_version_flags(signing_version)}
|
|
68
|
+
#{passphrase_fd_flag}
|
|
69
|
+
--batch --no-armor --no-secmem-warning
|
|
70
|
+
--local-user %{_gpg_name}
|
|
71
|
+
--output %{__signature_filename}
|
|
72
|
+
%{__plaintext_filename}
|
|
36
73
|
].join(' ')
|
|
37
74
|
# rubocop:enable Lint/NestedPercentLiteral
|
|
75
|
+
end
|
|
38
76
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
--
|
|
43
|
-
|
|
77
|
+
def signing_version_flags(signing_version)
|
|
78
|
+
case signing_version
|
|
79
|
+
when :v3
|
|
80
|
+
'--force-v3-sigs --digest-algo=sha1'
|
|
81
|
+
when :v4
|
|
82
|
+
''
|
|
83
|
+
else
|
|
84
|
+
fail "Unrecognized signing_version: '#{signing_version}'"
|
|
85
|
+
end
|
|
86
|
+
end
|
|
44
87
|
|
|
45
|
-
|
|
46
|
-
Pkg::Util
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
Pkg::Util::Execution.capture3(sign_command)
|
|
88
|
+
def passphrase_fd_flag
|
|
89
|
+
if Pkg::Util.boolean_value(ENV['RPM_GPG_AGENT'])
|
|
90
|
+
''
|
|
91
|
+
else
|
|
92
|
+
'--passphrase-fd 3'
|
|
51
93
|
end
|
|
52
94
|
end
|
|
53
95
|
|
|
54
|
-
def
|
|
55
|
-
|
|
96
|
+
def define_gpg_check_password_cmd
|
|
97
|
+
if Pkg::Util.boolean_value(ENV['RPM_GPG_AGENT'])
|
|
98
|
+
"--define '%__gpg_check_password_cmd /bin/true'"
|
|
99
|
+
else
|
|
100
|
+
''
|
|
101
|
+
end
|
|
56
102
|
end
|
|
57
103
|
|
|
58
|
-
|
|
104
|
+
|
|
105
|
+
def signed?(rpm)
|
|
59
106
|
# This should allow the `Pkg::Util::Gpg.key` method to fail if gpg_key is
|
|
60
107
|
# not set, before shelling out. We also only want the short key, all
|
|
61
108
|
# lowercase, since that's what the `rpm -Kv` output uses.
|
|
62
109
|
key = Pkg::Util::Gpg.key.downcase.chars.last(8).join
|
|
63
110
|
signature_check_output = %x(rpm --checksig --verbose #{rpm})
|
|
111
|
+
|
|
64
112
|
# If the signing key has not been loaded on the system this is running on,
|
|
65
113
|
# the check will exit 1, even if the rpm is signed, so we can't use capture3,
|
|
66
114
|
# which bails out with non-0 exit codes. Instead, check that the output
|
|
67
115
|
# looks more-or-less how we expect it to.
|
|
68
|
-
|
|
69
|
-
|
|
116
|
+
unless signature_check_output.include? "Header"
|
|
117
|
+
fail "Something went wrong checking the signature of #{rpm}."
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
signature_check_output.include? "key ID #{key}"
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# For backwards compatibility
|
|
124
|
+
def has_sig?(rpm)
|
|
125
|
+
signed?(rpm)
|
|
70
126
|
end
|
|
71
127
|
|
|
72
128
|
def sign_all(rpm_directory)
|
|
@@ -97,8 +153,8 @@ module Pkg::Sign::Rpm
|
|
|
97
153
|
# We don't sign AIX rpms
|
|
98
154
|
next if platform_tag.include?('aix')
|
|
99
155
|
|
|
100
|
-
if
|
|
101
|
-
puts "#{rpm} is already signed
|
|
156
|
+
if signed?(rpm)
|
|
157
|
+
puts "#{rpm} is already signed. Skipping."
|
|
102
158
|
next
|
|
103
159
|
end
|
|
104
160
|
|
|
@@ -113,13 +169,13 @@ module Pkg::Sign::Rpm
|
|
|
113
169
|
end
|
|
114
170
|
|
|
115
171
|
unless v3_rpms.empty?
|
|
116
|
-
puts "Signing legacy (v3) rpms
|
|
117
|
-
|
|
172
|
+
puts "Signing legacy (v3) rpms:"
|
|
173
|
+
sign(v3_rpms.join(' '), :v3)
|
|
118
174
|
end
|
|
119
175
|
|
|
120
176
|
unless v4_rpms.empty?
|
|
121
|
-
puts "Signing modern (v4) rpms
|
|
122
|
-
sign(v4_rpms.join(' '))
|
|
177
|
+
puts "Signing modern (v4) rpms:"
|
|
178
|
+
sign(v4_rpms.join(' '), :v4)
|
|
123
179
|
end
|
|
124
180
|
|
|
125
181
|
# Using the map of paths to basenames, we re-hardlink the rpms we deleted.
|
|
@@ -128,16 +184,18 @@ module Pkg::Sign::Rpm
|
|
|
128
184
|
FileUtils.mkdir_p(File.dirname(link_path))
|
|
129
185
|
# Find paths where the signed rpm has the same basename, but different
|
|
130
186
|
# full path, as the one we need to link.
|
|
131
|
-
paths_to_link_to = rpms_to_sign.select
|
|
187
|
+
paths_to_link_to = rpms_to_sign.select do |rpm|
|
|
188
|
+
File.basename(rpm) == rpm_filename && rpm != link_path
|
|
189
|
+
end
|
|
132
190
|
paths_to_link_to.each do |path|
|
|
133
|
-
FileUtils.ln(path, link_path, :
|
|
191
|
+
FileUtils.ln(path, link_path, force: true, verbose: true)
|
|
134
192
|
end
|
|
135
193
|
end
|
|
136
194
|
end
|
|
137
195
|
|
|
138
|
-
def
|
|
139
|
-
|
|
140
|
-
gpg_version =
|
|
141
|
-
Gem::Version.new(gpg_version)
|
|
196
|
+
def gpg_version_older_than_21?
|
|
197
|
+
gpg_executable = Pkg::Util::Tool.find_tool('gpg')
|
|
198
|
+
gpg_version = %x(#{gpg_executable} --version).split(' ')[2]
|
|
199
|
+
Gem::Version.new(gpg_version) < Gem::Version.new('2.1.0')
|
|
142
200
|
end
|
|
143
201
|
end
|
|
@@ -3,91 +3,118 @@ require 'packaging/sign'
|
|
|
3
3
|
|
|
4
4
|
describe 'Pkg::Sign' do
|
|
5
5
|
describe 'Pkg::Sign::Rpm' do
|
|
6
|
-
|
|
7
6
|
before :each do
|
|
8
7
|
allow(Pkg::Config).to receive(:gpg_key).and_return('7F438280EF8D349F')
|
|
9
8
|
end
|
|
10
9
|
|
|
11
|
-
describe '#
|
|
10
|
+
describe '#signed?' do
|
|
12
11
|
let(:rpm) { 'foo.rpm' }
|
|
13
|
-
let(:el7_signed_response)
|
|
14
|
-
|
|
15
|
-
Header
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
12
|
+
let(:el7_signed_response) do
|
|
13
|
+
<<~DOC
|
|
14
|
+
Header V4 RSA/SHA256 Signature, key ID ef8d349f: NOKEY
|
|
15
|
+
Header SHA1 digest: OK (3cb7e9861e8bc09783a1b6c8d88243a3c16daa81)
|
|
16
|
+
V4 RSA/SHA256 Signature, key ID ef8d349f: NOKEY
|
|
17
|
+
MD5 digest: OK (d5f06ba2a9053de532326d0659ec0d11)
|
|
18
|
+
DOC
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
let(:sles12_signed_response) do
|
|
22
|
+
<<~DOC
|
|
23
|
+
Header V4 RSA/SHA256 Signature, key ID ef8d349f: NOKEY
|
|
24
|
+
Header SHA1 digest: OK (e713487cf21ebeb933aefd5ec9211a34603233d2)
|
|
25
|
+
V4 RSA/SHA256 Signature, key ID ef8d349f: NOKEY
|
|
26
|
+
MD5 digest: OK (3093a09ac39bc17751f913e19ca74432)
|
|
27
|
+
DOC
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
let(:unsigned_response) do
|
|
31
|
+
<<~DOC
|
|
32
|
+
Header SHA1 digest: OK (f9404cc95f200568c2dbb1fd24e1119e3e4a40a9)
|
|
33
|
+
MD5 digest: OK (816095f3cee145091c3fa07a0915ce85)
|
|
34
|
+
DOC
|
|
35
|
+
end
|
|
36
|
+
|
|
32
37
|
it 'returns true if rpm has been signed (el7)' do
|
|
33
38
|
allow(Pkg::Sign::Rpm).to receive(:`).and_return(el7_signed_response)
|
|
34
|
-
expect(Pkg::Sign::Rpm.
|
|
39
|
+
expect(Pkg::Sign::Rpm.signed?(rpm)).to be true
|
|
35
40
|
end
|
|
36
41
|
it 'returns true if rpm has been signed (sles12)' do
|
|
37
42
|
allow(Pkg::Sign::Rpm).to receive(:`).and_return(sles12_signed_response)
|
|
38
|
-
expect(Pkg::Sign::Rpm.
|
|
43
|
+
expect(Pkg::Sign::Rpm.signed?(rpm)).to be true
|
|
39
44
|
end
|
|
40
45
|
it 'returns false if rpm has not been signed' do
|
|
41
46
|
allow(Pkg::Sign::Rpm).to receive(:`).and_return(unsigned_response)
|
|
42
|
-
expect(Pkg::Sign::Rpm.
|
|
47
|
+
expect(Pkg::Sign::Rpm.signed?(rpm)).to be false
|
|
43
48
|
end
|
|
44
49
|
it 'fails with unexpected output' do
|
|
45
|
-
allow(Pkg::Sign::Rpm)
|
|
46
|
-
|
|
50
|
+
allow(Pkg::Sign::Rpm)
|
|
51
|
+
.to receive(:`)
|
|
52
|
+
.and_return('something that is definitely not a normal response')
|
|
53
|
+
expect { Pkg::Sign::Rpm.signed?(rpm) }
|
|
54
|
+
.to raise_error(RuntimeError, /Something went wrong checking the signature/)
|
|
47
55
|
end
|
|
48
56
|
it 'fails if gpg_key is not set' do
|
|
49
57
|
allow(Pkg::Config).to receive(:gpg_key).and_return(nil)
|
|
50
|
-
expect { Pkg::Sign::Rpm.
|
|
58
|
+
expect { Pkg::Sign::Rpm.signed?(rpm) }
|
|
59
|
+
.to raise_error(RuntimeError, /You need to set `gpg_key` in your build defaults./)
|
|
51
60
|
end
|
|
52
61
|
end
|
|
53
62
|
|
|
54
63
|
describe '#sign_all' do
|
|
55
64
|
let(:rpm_directory) { Dir.mktmpdir }
|
|
56
|
-
let(:rpms_not_to_sign)
|
|
57
|
-
"#{rpm_directory}/aix/7.1/PC1/ppc/puppet-agent-5.5.3-1.aix7.1.ppc.rpm"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
let(:rpms_not_to_sign) do
|
|
66
|
+
["#{rpm_directory}/aix/7.1/PC1/ppc/puppet-agent-5.5.3-1.aix7.1.ppc.rpm"]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
let(:v3_rpms) do
|
|
70
|
+
["#{rpm_directory}/sles/11/PC1/x86_64/puppet-agent-5.5.3-1.sles11.x86_64.rpm"]
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
let(:v4_rpms) do
|
|
74
|
+
["#{rpm_directory}/el/7/PC1/aarch64/puppet-agent-5.5.3-1.el7.aarch64.rpm"]
|
|
75
|
+
end
|
|
76
|
+
|
|
65
77
|
let(:rpms) { rpms_not_to_sign + v3_rpms + v4_rpms }
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
78
|
+
|
|
79
|
+
let(:already_signed_rpms) do
|
|
80
|
+
["#{rpm_directory}/el/6/PC1/x86_64/puppet-agent-5.5.3-1.el6.x86_64.rpm"]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
let(:noarch_rpms) do
|
|
84
|
+
[
|
|
85
|
+
"#{rpm_directory}/el/6/puppet5/i386/puppetserver-5.3.3-1.el6.noarch.rpm",
|
|
86
|
+
"#{rpm_directory}/el/6/puppet5/x86_64/puppetserver-5.3.3-1.el6.noarch.rpm",
|
|
87
|
+
"#{rpm_directory}/el/7/puppet5/i386/puppetserver-5.3.3-1.el7.noarch.rpm",
|
|
88
|
+
"#{rpm_directory}/el/7/puppet5/x86_64/puppetserver-5.3.3-1.el7.noarch.rpm",
|
|
89
|
+
"#{rpm_directory}/sles/12/puppet5/i386/puppetserver-5.3.3-1.sles12.noarch.rpm",
|
|
90
|
+
"#{rpm_directory}/sles/12/puppet5/x86_64/puppetserver-5.3.3-1.sles12.noarch.rpm"
|
|
91
|
+
]
|
|
92
|
+
end
|
|
77
93
|
|
|
78
94
|
it 'signs both v3 and v4 rpms' do
|
|
79
95
|
allow(Dir).to receive(:[]).with("#{rpm_directory}/**/*.rpm").and_return(rpms)
|
|
80
96
|
rpms.each do |rpm|
|
|
81
|
-
allow(Pkg::Sign::Rpm).to receive(:
|
|
97
|
+
allow(Pkg::Sign::Rpm).to receive(:signed?).and_return(false)
|
|
82
98
|
end
|
|
83
|
-
|
|
84
|
-
|
|
99
|
+
|
|
100
|
+
v3_items = v3_rpms.length
|
|
101
|
+
v4_items = v4_rpms.length
|
|
102
|
+
|
|
103
|
+
expect(Pkg::Sign::Rpm)
|
|
104
|
+
.to receive(:sign)
|
|
105
|
+
.with(v3_rpms.join(' '), :v3)
|
|
106
|
+
.exactly(v3_items).times
|
|
107
|
+
expect(Pkg::Sign::Rpm)
|
|
108
|
+
.to receive(:sign)
|
|
109
|
+
.with(v4_rpms.join(' '), :v4)
|
|
110
|
+
.exactly(v4_items).times
|
|
111
|
+
|
|
85
112
|
Pkg::Sign::Rpm.sign_all(rpm_directory)
|
|
86
113
|
end
|
|
87
114
|
|
|
88
115
|
it 'does not sign AIX rpms' do
|
|
89
116
|
allow(Dir).to receive(:[]).with("#{rpm_directory}/**/*.rpm").and_return(rpms_not_to_sign)
|
|
90
|
-
allow(Pkg::Sign::Rpm).to receive(:
|
|
117
|
+
allow(Pkg::Sign::Rpm).to receive(:signed?)
|
|
91
118
|
expect(Pkg::Sign::Rpm).to_not receive(:legacy_sign)
|
|
92
119
|
expect(Pkg::Sign::Rpm).to_not receive(:sign)
|
|
93
120
|
Pkg::Sign::Rpm.sign_all(rpm_directory)
|
|
@@ -96,7 +123,7 @@ DOC
|
|
|
96
123
|
it 'does not sign already-signed rpms' do
|
|
97
124
|
allow(Dir).to receive(:[]).with("#{rpm_directory}/**/*.rpm").and_return(already_signed_rpms)
|
|
98
125
|
already_signed_rpms.each do |rpm|
|
|
99
|
-
allow(Pkg::Sign::Rpm).to receive(:
|
|
126
|
+
allow(Pkg::Sign::Rpm).to receive(:signed?).and_return(true)
|
|
100
127
|
end
|
|
101
128
|
expect(Pkg::Sign::Rpm).to_not receive(:legacy_sign)
|
|
102
129
|
expect(Pkg::Sign::Rpm).to_not receive(:sign)
|
|
@@ -106,9 +133,9 @@ DOC
|
|
|
106
133
|
it 'deletes and relinks rpms with the same basename' do
|
|
107
134
|
allow(Dir).to receive(:[]).with("#{rpm_directory}/**/*.rpm").and_return(noarch_rpms)
|
|
108
135
|
allow(Pkg::Sign::Rpm).to receive(:sign)
|
|
109
|
-
allow(Pkg::Sign::Rpm).to receive(:
|
|
110
|
-
expect(FileUtils).to receive(:rm).exactly(noarch_rpms.count/2).times
|
|
111
|
-
expect(FileUtils).to receive(:ln).exactly(noarch_rpms.count/2).times
|
|
136
|
+
allow(Pkg::Sign::Rpm).to receive(:signed?)
|
|
137
|
+
expect(FileUtils).to receive(:rm).exactly(noarch_rpms.count / 2).times
|
|
138
|
+
expect(FileUtils).to receive(:ln).exactly(noarch_rpms.count / 2).times
|
|
112
139
|
Pkg::Sign::Rpm.sign_all(rpm_directory)
|
|
113
140
|
end
|
|
114
141
|
|
metadata
CHANGED
|
@@ -1,43 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: packaging
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.108.
|
|
4
|
+
version: 0.108.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Puppet Labs
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2023-01-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: pry
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: pry-byebug
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
41
13
|
- !ruby/object:Gem::Dependency
|
|
42
14
|
name: rspec
|
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -323,28 +295,28 @@ signing_key:
|
|
|
323
295
|
specification_version: 4
|
|
324
296
|
summary: Puppet Labs' packaging automation
|
|
325
297
|
test_files:
|
|
326
|
-
- spec/lib/
|
|
298
|
+
- spec/lib/packaging_spec.rb
|
|
299
|
+
- spec/lib/packaging/sign_spec.rb
|
|
327
300
|
- spec/lib/packaging/artifactory_spec.rb
|
|
301
|
+
- spec/lib/packaging/retrieve_spec.rb
|
|
302
|
+
- spec/lib/packaging/config_spec.rb
|
|
303
|
+
- spec/lib/packaging/rpm/repo_spec.rb
|
|
304
|
+
- spec/lib/packaging/deb_spec.rb
|
|
305
|
+
- spec/lib/packaging/repo_spec.rb
|
|
306
|
+
- spec/lib/packaging/gem_spec.rb
|
|
307
|
+
- spec/lib/packaging/deb/repo_spec.rb
|
|
308
|
+
- spec/lib/packaging/tar_spec.rb
|
|
309
|
+
- spec/lib/packaging/paths_spec.rb
|
|
310
|
+
- spec/lib/packaging/platforms_spec.rb
|
|
328
311
|
- spec/lib/packaging/util/jenkins_spec.rb
|
|
329
|
-
- spec/lib/packaging/util/rake_utils_spec.rb
|
|
330
312
|
- spec/lib/packaging/util/ship_spec.rb
|
|
331
|
-
- spec/lib/packaging/util/
|
|
313
|
+
- spec/lib/packaging/util/version_spec.rb
|
|
314
|
+
- spec/lib/packaging/util/os_spec.rb
|
|
332
315
|
- spec/lib/packaging/util/git_tag_spec.rb
|
|
316
|
+
- spec/lib/packaging/util/rake_utils_spec.rb
|
|
317
|
+
- spec/lib/packaging/util/gpg_spec.rb
|
|
318
|
+
- spec/lib/packaging/util/file_spec.rb
|
|
333
319
|
- spec/lib/packaging/util/net_spec.rb
|
|
334
|
-
- spec/lib/packaging/util/os_spec.rb
|
|
335
|
-
- spec/lib/packaging/util/git_spec.rb
|
|
336
|
-
- spec/lib/packaging/util/execution_spec.rb
|
|
337
|
-
- spec/lib/packaging/util/version_spec.rb
|
|
338
320
|
- spec/lib/packaging/util/misc_spec.rb
|
|
339
|
-
- spec/lib/packaging/util/
|
|
340
|
-
- spec/lib/packaging/
|
|
341
|
-
- spec/lib/packaging/deb/repo_spec.rb
|
|
342
|
-
- spec/lib/packaging/tar_spec.rb
|
|
343
|
-
- spec/lib/packaging/gem_spec.rb
|
|
344
|
-
- spec/lib/packaging/paths_spec.rb
|
|
345
|
-
- spec/lib/packaging/config_spec.rb
|
|
346
|
-
- spec/lib/packaging/rpm/repo_spec.rb
|
|
347
|
-
- spec/lib/packaging/sign_spec.rb
|
|
348
|
-
- spec/lib/packaging/repo_spec.rb
|
|
349
|
-
- spec/lib/packaging/deb_spec.rb
|
|
350
|
-
- spec/lib/packaging_spec.rb
|
|
321
|
+
- spec/lib/packaging/util/execution_spec.rb
|
|
322
|
+
- spec/lib/packaging/util/git_spec.rb
|