vanagon 0.8.0 → 0.8.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/README.md +1 -7
- data/lib/vanagon/component/dsl.rb +17 -0
- data/lib/vanagon/component/source.rb +2 -1
- data/lib/vanagon/component/source/http.rb +10 -5
- data/lib/vanagon/utilities.rb +3 -1
- data/resources/rpm/project.spec.erb +16 -0
- data/spec/lib/vanagon/component/source/http_spec.rb +40 -2
- data/spec/lib/vanagon/component/source_spec.rb +3 -3
- metadata +24 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c06666ceca69a65fb5cd8ed50f5d879d13405e32
|
4
|
+
data.tar.gz: b172cfec4a27c00b6e8817f5cf7514fc2a8a6cb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa03f9d6849a5d65ad269146547b7482fd9488bd936521ec8a5a65b6f2b5089a9eaa6054b348fcd620713ad8d6e999ac4210c3c256ea04f120420dde14b66443
|
7
|
+
data.tar.gz: 027c3f6e8cbf5a12378783d4871fad4cd41fe1a549cedb717c7927d6fe74abe8a87de2ca9aa202bab9ffba62fbe94676b73ff5a3f0a81e256488325113bf155e
|
data/README.md
CHANGED
@@ -291,10 +291,4 @@ For more detailed examples of the DSLs available, please see the
|
|
291
291
|
[examples](https://github.com/puppetlabs/vanagon/tree/master/examples) directory and the YARD documentation for vanagon.
|
292
292
|
|
293
293
|
## Maintainers
|
294
|
-
|
295
|
-
|
296
|
-
Maintainer: Michael Stahnke <stahnma@puppet.com>
|
297
|
-
|
298
|
-
Please log tickets and issues at our [Issue Tracker](https://tickets.puppet.com/browse/CPR). Set compononent to Vanagon.
|
299
|
-
|
300
|
-
In addition there is an active #puppet-dev channel on Freenode.
|
294
|
+
See MAINTAINERS file.
|
@@ -278,6 +278,23 @@ class Vanagon
|
|
278
278
|
# @param md5 [String] md5 sum of the source for verification
|
279
279
|
def md5sum(md5)
|
280
280
|
@component.options[:sum] = md5
|
281
|
+
@component.options[:sum_type] = "md5"
|
282
|
+
end
|
283
|
+
|
284
|
+
# Sets the sha256 sum to verify the sum of the source
|
285
|
+
#
|
286
|
+
# @param sha256 [String] sha256 sum of the source for verification
|
287
|
+
def sha256sum(sha256)
|
288
|
+
@component.options[:sum] = sha256
|
289
|
+
@component.options[:sum_type] = "sha256"
|
290
|
+
end
|
291
|
+
|
292
|
+
# Sets the sha512 sum to verify the sum of the source
|
293
|
+
#
|
294
|
+
# @param sha512 [String] sha512 sum of the source for verification
|
295
|
+
def sha512sum(sha512)
|
296
|
+
@component.options[:sum] = sha512
|
297
|
+
@component.options[:sum_type] = "sha512"
|
281
298
|
end
|
282
299
|
|
283
300
|
# Sets the ref of the source for use in a git source
|
@@ -87,7 +87,8 @@ class Vanagon
|
|
87
87
|
if Vanagon::Component::Source::Http.valid_url?(parse_and_rewrite(uri))
|
88
88
|
return Vanagon::Component::Source::Http.new parse_and_rewrite(uri),
|
89
89
|
sum: options[:sum],
|
90
|
-
workdir: options[:workdir]
|
90
|
+
workdir: options[:workdir],
|
91
|
+
sum_type: options[:sum_type]
|
91
92
|
end
|
92
93
|
|
93
94
|
# Then we try local
|
@@ -10,7 +10,7 @@ class Vanagon
|
|
10
10
|
include Vanagon::Utilities
|
11
11
|
|
12
12
|
# Accessors :url, :file, :extension, :workdir, :cleanup are inherited from Local
|
13
|
-
attr_accessor :sum
|
13
|
+
attr_accessor :sum, :sum_type
|
14
14
|
|
15
15
|
class << self
|
16
16
|
def valid_url?(target_url) # rubocop:disable Metrics/AbcSize
|
@@ -42,14 +42,19 @@ class Vanagon
|
|
42
42
|
# @param url [String] url of the http source to fetch
|
43
43
|
# @param sum [String] sum to verify the download against
|
44
44
|
# @param workdir [String] working directory to download into
|
45
|
+
# @param sum_type [String] type of sum we are verifying
|
45
46
|
# @raise [RuntimeError] an exception is raised is sum is nil
|
46
|
-
def initialize(url, sum:, workdir:, **options)
|
47
|
+
def initialize(url, sum:, workdir:, sum_type:, **options)
|
47
48
|
unless sum
|
48
49
|
fail "sum is required to validate the http source"
|
49
50
|
end
|
51
|
+
unless sum_type
|
52
|
+
fail "sum_type is required to validate the http source"
|
53
|
+
end
|
50
54
|
@url = url
|
51
55
|
@sum = sum
|
52
56
|
@workdir = workdir
|
57
|
+
@sum_type = sum_type
|
53
58
|
end
|
54
59
|
|
55
60
|
# Download the source from the url specified. Sets the full path to the
|
@@ -65,12 +70,12 @@ class Vanagon
|
|
65
70
|
# Verify the downloaded file matches the provided sum
|
66
71
|
#
|
67
72
|
# @raise [RuntimeError] an exception is raised if the sum does not match the sum of the file
|
68
|
-
def verify
|
73
|
+
def verify # rubocop:disable Metrics/AbcSize
|
69
74
|
puts "Verifying file: #{file} against sum: '#{sum}'"
|
70
|
-
actual =
|
75
|
+
actual = get_sum(File.join(workdir, file), sum_type)
|
71
76
|
return true if sum == actual
|
72
77
|
|
73
|
-
fail "Unable to verify '#{File.join(workdir, file)}':
|
78
|
+
fail "Unable to verify '#{File.join(workdir, file)}': #{sum_type} mismatch (expected '#{sum}', got '#{actual}')"
|
74
79
|
end
|
75
80
|
|
76
81
|
# Downloads the file from @url into the @workdir
|
data/lib/vanagon/utilities.rb
CHANGED
@@ -19,7 +19,7 @@ class Vanagon
|
|
19
19
|
# @param file [String] file to md5sum
|
20
20
|
# @return [String] md5sum of the given file
|
21
21
|
def get_md5sum(file)
|
22
|
-
|
22
|
+
get_sum(file, 'md5')
|
23
23
|
end
|
24
24
|
|
25
25
|
# Generic file summing utility
|
@@ -32,6 +32,8 @@ class Vanagon
|
|
32
32
|
case type.downcase
|
33
33
|
when 'md5'
|
34
34
|
Digest::MD5.file(file).hexdigest.to_s
|
35
|
+
when 'sha256'
|
36
|
+
Digest::SHA256.file(file).hexdigest.to_s
|
35
37
|
when 'sha512'
|
36
38
|
Digest::SHA512.file(file).hexdigest.to_s
|
37
39
|
else
|
@@ -1,5 +1,21 @@
|
|
1
1
|
%global debug_package %{nil}
|
2
2
|
|
3
|
+
<%- if @platform.is_cisco_wrlinux? -%>
|
4
|
+
# Our cisco-5/7 build platforms are missing the definition of
|
5
|
+
# __os_install_post, so we have to manually set it here. This
|
6
|
+
# then enables the brp strip scripts, which are needed to reduce
|
7
|
+
# the size of our agent packages for these platforms. This is
|
8
|
+
# necessary as some targets will fail to even install the package
|
9
|
+
# without stripped binaries because yum's package cache is kept
|
10
|
+
# on a partition with ~50MB of free space.
|
11
|
+
%global __os_install_post \
|
12
|
+
/usr/lib64/rpm/brp-compress \
|
13
|
+
/usr/lib64/rpm/brp-strip %{__strip} \
|
14
|
+
/usr/lib64/rpm/brp-strip-static-archive %{__strip} \
|
15
|
+
/usr/lib64/rpm/brp-strip-comment-note %{__strip} %{__objdump} \
|
16
|
+
%{nil}
|
17
|
+
<%- end -%>
|
18
|
+
|
3
19
|
# Turn off the brp-python-bytecompile script
|
4
20
|
%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
|
5
21
|
<% if @platform.is_cross_compiled_linux? -%>
|
@@ -10,21 +10,59 @@ describe "Vanagon::Component::Source::Http" do
|
|
10
10
|
let (:plaintext_url) { "#{base_url}/#{plaintext_filename}" }
|
11
11
|
let (:plaintext_dirname) { './' }
|
12
12
|
let (:md5sum) { 'abcdssasasa' }
|
13
|
+
let (:sha256sum) { 'foobarbaz' }
|
14
|
+
let (:sha512sum) { 'teststring' }
|
13
15
|
let (:workdir) { "/tmp" }
|
14
16
|
|
15
17
|
describe "#dirname" do
|
16
18
|
it "returns the name of the tarball, minus extension for archives" do
|
17
|
-
http_source = Vanagon::Component::Source::Http.new(tar_url, sum: md5sum, workdir: workdir)
|
19
|
+
http_source = Vanagon::Component::Source::Http.new(tar_url, sum: md5sum, workdir: workdir, sum_type: "md5")
|
18
20
|
expect(http_source).to receive(:download).and_return(tar_filename)
|
19
21
|
http_source.fetch
|
20
22
|
expect(http_source.dirname).to eq(tar_dirname)
|
21
23
|
end
|
22
24
|
|
23
25
|
it "returns the current directory for non-archive files" do
|
24
|
-
http_source = Vanagon::Component::Source::Http.new(plaintext_url, sum: md5sum, workdir: workdir)
|
26
|
+
http_source = Vanagon::Component::Source::Http.new(plaintext_url, sum: md5sum, workdir: workdir, sum_type: "md5")
|
25
27
|
expect(http_source).to receive(:download).and_return(plaintext_filename)
|
26
28
|
http_source.fetch
|
27
29
|
expect(http_source.dirname).to eq(plaintext_dirname)
|
28
30
|
end
|
29
31
|
end
|
32
|
+
|
33
|
+
describe "verify" do
|
34
|
+
it "fails with a bad sum_type" do
|
35
|
+
http_source = Vanagon::Component::Source::Http.new(plaintext_url, sum: md5sum, workdir: workdir, sum_type: "md4")
|
36
|
+
expect(http_source).to receive(:download).and_return(plaintext_filename)
|
37
|
+
http_source.fetch
|
38
|
+
expect{ http_source.verify }.to raise_error(RuntimeError)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "calls md5 digest when it's supposed to" do
|
42
|
+
Digest::MD5.any_instance.stub(:file).and_return(Digest::MD5.new)
|
43
|
+
Digest::MD5.any_instance.stub(:hexdigest).and_return(md5sum)
|
44
|
+
http_source = Vanagon::Component::Source::Http.new(plaintext_url, sum: md5sum, workdir: workdir, sum_type: "md5")
|
45
|
+
expect(http_source).to receive(:download).and_return(plaintext_filename)
|
46
|
+
http_source.fetch
|
47
|
+
http_source.verify
|
48
|
+
end
|
49
|
+
|
50
|
+
it "calls sha256 digest when it's supposed to" do
|
51
|
+
Digest::SHA256.any_instance.stub(:file).and_return(Digest::SHA256.new)
|
52
|
+
Digest::SHA256.any_instance.stub(:hexdigest).and_return(sha256sum)
|
53
|
+
http_source = Vanagon::Component::Source::Http.new(plaintext_url, sum: sha256sum, workdir: workdir, sum_type: "sha256")
|
54
|
+
expect(http_source).to receive(:download).and_return(plaintext_filename)
|
55
|
+
http_source.fetch
|
56
|
+
http_source.verify
|
57
|
+
end
|
58
|
+
|
59
|
+
it "calls sha512 digest when it's supposed to" do
|
60
|
+
Digest::SHA512.any_instance.stub(:file).and_return(Digest::SHA512.new)
|
61
|
+
Digest::SHA512.any_instance.stub(:hexdigest).and_return(sha512sum)
|
62
|
+
http_source = Vanagon::Component::Source::Http.new(plaintext_url, sum: sha512sum, workdir: workdir, sum_type: "sha512")
|
63
|
+
expect(http_source).to receive(:download).and_return(plaintext_filename)
|
64
|
+
http_source.fetch
|
65
|
+
http_source.verify
|
66
|
+
end
|
67
|
+
end
|
30
68
|
end
|
@@ -94,12 +94,12 @@ describe "Vanagon::Component::Source" do
|
|
94
94
|
end
|
95
95
|
|
96
96
|
it "returns an object of the correct type for http:// URLS" do
|
97
|
-
expect(klass.source(http_url, sum: sum, workdir: workdir).class)
|
97
|
+
expect(klass.source(http_url, sum: sum, workdir: workdir, sum_type: "md5").class)
|
98
98
|
.to equal(Vanagon::Component::Source::Http)
|
99
99
|
end
|
100
100
|
|
101
101
|
it "returns an object of the correct type for https:// URLS" do
|
102
|
-
expect(klass.source(https_url, sum: sum, workdir: workdir).class)
|
102
|
+
expect(klass.source(https_url, sum: sum, workdir: workdir, sum_type: "md5").class)
|
103
103
|
.to equal(Vanagon::Component::Source::Http)
|
104
104
|
end
|
105
105
|
|
@@ -108,7 +108,7 @@ describe "Vanagon::Component::Source" do
|
|
108
108
|
'http://buildsources.delivery.puppetlabs.net'
|
109
109
|
end
|
110
110
|
it "applies rewrite rules to HTTP URLs" do
|
111
|
-
expect(klass.source(original_http_url, sum: sum, workdir: workdir).url)
|
111
|
+
expect(klass.source(original_http_url, sum: sum, workdir: workdir, sum_type: "md5").url)
|
112
112
|
.to eq(rewritten_http_url)
|
113
113
|
end
|
114
114
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vanagon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.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: 2016-
|
11
|
+
date: 2016-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: git
|
@@ -229,40 +229,40 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
229
|
version: '0'
|
230
230
|
requirements: []
|
231
231
|
rubyforge_project:
|
232
|
-
rubygems_version: 2.
|
232
|
+
rubygems_version: 2.5.1
|
233
233
|
signing_key:
|
234
234
|
specification_version: 3
|
235
235
|
summary: All of your packages will fit into this van with this one simple trick.
|
236
236
|
test_files:
|
237
237
|
- spec/lib/makefile_spec.rb
|
238
|
-
- spec/lib/vanagon/common/pathname_spec.rb
|
239
|
-
- spec/lib/vanagon/common/user_spec.rb
|
240
|
-
- spec/lib/vanagon/component/dsl_spec.rb
|
241
|
-
- spec/lib/vanagon/component/rules_spec.rb
|
242
|
-
- spec/lib/vanagon/component/source/git_spec.rb
|
243
238
|
- spec/lib/vanagon/component/source/http_spec.rb
|
244
239
|
- spec/lib/vanagon/component/source/local_spec.rb
|
240
|
+
- spec/lib/vanagon/component/source/git_spec.rb
|
241
|
+
- spec/lib/vanagon/component/rules_spec.rb
|
242
|
+
- spec/lib/vanagon/component/dsl_spec.rb
|
245
243
|
- spec/lib/vanagon/component/source_spec.rb
|
246
|
-
- spec/lib/vanagon/
|
247
|
-
- spec/lib/vanagon/
|
248
|
-
- spec/lib/vanagon/engine/base_spec.rb
|
249
|
-
- spec/lib/vanagon/engine/docker_spec.rb
|
250
|
-
- spec/lib/vanagon/engine/ec2_spec.rb
|
251
|
-
- spec/lib/vanagon/engine/hardware_spec.rb
|
252
|
-
- spec/lib/vanagon/engine/local_spec.rb
|
253
|
-
- spec/lib/vanagon/engine/pooler_spec.rb
|
254
|
-
- spec/lib/vanagon/extensions/ostruct/json_spec.rb
|
244
|
+
- spec/lib/vanagon/common/user_spec.rb
|
245
|
+
- spec/lib/vanagon/common/pathname_spec.rb
|
255
246
|
- spec/lib/vanagon/extensions/set/json_spec.rb
|
247
|
+
- spec/lib/vanagon/extensions/ostruct/json_spec.rb
|
256
248
|
- spec/lib/vanagon/extensions/string_spec.rb
|
257
|
-
- spec/lib/vanagon/
|
249
|
+
- spec/lib/vanagon/utilities/shell_utilities_spec.rb
|
258
250
|
- spec/lib/vanagon/platform/deb_spec.rb
|
259
|
-
- spec/lib/vanagon/platform/dsl_spec.rb
|
260
|
-
- spec/lib/vanagon/platform/rpm/aix_spec.rb
|
261
|
-
- spec/lib/vanagon/platform/rpm_spec.rb
|
262
251
|
- spec/lib/vanagon/platform/solaris_11_spec.rb
|
252
|
+
- spec/lib/vanagon/platform/rpm_spec.rb
|
253
|
+
- spec/lib/vanagon/platform/dsl_spec.rb
|
263
254
|
- spec/lib/vanagon/platform/windows_spec.rb
|
264
|
-
- spec/lib/vanagon/
|
265
|
-
- spec/lib/vanagon/
|
255
|
+
- spec/lib/vanagon/platform/rpm/aix_spec.rb
|
256
|
+
- spec/lib/vanagon/optparse_spec.rb
|
266
257
|
- spec/lib/vanagon/project_spec.rb
|
267
|
-
- spec/lib/vanagon/
|
258
|
+
- spec/lib/vanagon/component_spec.rb
|
259
|
+
- spec/lib/vanagon/engine/base_spec.rb
|
260
|
+
- spec/lib/vanagon/engine/pooler_spec.rb
|
261
|
+
- spec/lib/vanagon/engine/ec2_spec.rb
|
262
|
+
- spec/lib/vanagon/engine/hardware_spec.rb
|
263
|
+
- spec/lib/vanagon/engine/local_spec.rb
|
264
|
+
- spec/lib/vanagon/engine/docker_spec.rb
|
265
|
+
- spec/lib/vanagon/driver_spec.rb
|
266
|
+
- spec/lib/vanagon/project/dsl_spec.rb
|
268
267
|
- spec/lib/vanagon/utilities_spec.rb
|
268
|
+
- spec/lib/vanagon/platform_spec.rb
|