poise-languages 1.2.0 → 1.3.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 +7 -0
- data/lib/poise_languages/command/mixin.rb +5 -10
- data/lib/poise_languages/static/mixin.rb +7 -2
- data/lib/poise_languages/static/resource.rb +5 -0
- data/lib/poise_languages/system/mixin.rb +2 -2
- data/lib/poise_languages/system/resource.rb +1 -1
- data/lib/poise_languages/version.rb +1 -1
- data/poise-languages.gemspec +1 -1
- data/test/spec/command/mixin_spec.rb +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f6513d765b3d69409dbd7a4ae5e30d71a0b78c9
|
4
|
+
data.tar.gz: 73b6d0b35651da918deeee5ecfc6acdc726576a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d600c8ede972ec0d5b5f63e6b0466539ec756844f85dcf41286fcc6335c7722567620d173d9668ae4dfa7edabfd9b63c8136bd1cb03e8e6ca4f350286cb0ac78
|
7
|
+
data.tar.gz: 72c3191bd757a71db694ff83bd41d71b31ec80ecc162789c7c8438f5d659766f5de3a785cf7bda66558ea546f56857a10684ef18ba5ab946ebe980acc1fcb899
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## v1.3.0
|
4
|
+
|
5
|
+
* `%{machine_label}` is available in URL template for static download.
|
6
|
+
* Automatically retry `remote_file` downloads to handle transient HTTP failures.
|
7
|
+
* All `*_shell_out` language command helpers use `poise_shell_out` to set `$HOME`
|
8
|
+
and other environment variables by default.
|
9
|
+
|
3
10
|
## v1.2.0
|
4
11
|
|
5
12
|
* Support for installing development headers with SCL providers.
|
@@ -16,7 +16,6 @@
|
|
16
16
|
|
17
17
|
require 'shellwords'
|
18
18
|
|
19
|
-
require 'chef/mixin/shell_out'
|
20
19
|
require 'poise'
|
21
20
|
|
22
21
|
require 'poise_languages/utils'
|
@@ -161,7 +160,7 @@ module PoiseLanguages
|
|
161
160
|
|
162
161
|
# A mixin for providers that run language commands.
|
163
162
|
module Provider
|
164
|
-
include
|
163
|
+
include Poise::Utils::ShellOut
|
165
164
|
|
166
165
|
private
|
167
166
|
|
@@ -171,16 +170,12 @@ module PoiseLanguages
|
|
171
170
|
# @param name [Symbol] Language name.
|
172
171
|
# @param command_args [Array] Arguments to `shell_out`.
|
173
172
|
# @return [Mixlib::ShellOut]
|
174
|
-
def language_command_shell_out(name, *command_args)
|
175
|
-
options = if command_args.last.is_a?(Hash)
|
176
|
-
command_args.pop.dup
|
177
|
-
else
|
178
|
-
{}
|
179
|
-
end
|
173
|
+
def language_command_shell_out(name, *command_args, **options)
|
180
174
|
# Inject our environment variables if needed.
|
175
|
+
options[:environment] ||= {}
|
181
176
|
parent = new_resource.send(:"parent_#{name}")
|
182
177
|
if parent
|
183
|
-
options[:environment]
|
178
|
+
options[:environment].update(parent.send(:"#{name}_environment"))
|
184
179
|
end
|
185
180
|
# Inject other options.
|
186
181
|
options[:timeout] ||= new_resource.timeout
|
@@ -193,7 +188,7 @@ module PoiseLanguages
|
|
193
188
|
end
|
194
189
|
Chef::Log.debug("[#{new_resource}] Running #{name} command: #{command.is_a?(Array) ? Shellwords.shelljoin(command) : command}")
|
195
190
|
# Run the command
|
196
|
-
|
191
|
+
poise_shell_out(command, options)
|
197
192
|
end
|
198
193
|
|
199
194
|
# Run a command using the configured language via `shell_out!`.
|
@@ -52,6 +52,7 @@ module PoiseLanguages
|
|
52
52
|
version: options['static_version'],
|
53
53
|
kernel: node['kernel']['name'].downcase,
|
54
54
|
machine: node['kernel']['machine'],
|
55
|
+
machine_label: self.class.static_machine_label(node),
|
55
56
|
}
|
56
57
|
end
|
57
58
|
|
@@ -61,6 +62,7 @@ module PoiseLanguages
|
|
61
62
|
attr_accessor :static_machines
|
62
63
|
attr_accessor :static_url
|
63
64
|
attr_accessor :static_strip_components
|
65
|
+
attr_accessor :static_retries
|
64
66
|
|
65
67
|
def provides_auto?(node, resource)
|
66
68
|
# Check that the version starts with our project name and the machine
|
@@ -77,6 +79,8 @@ module PoiseLanguages
|
|
77
79
|
super.merge({
|
78
80
|
# Path to install the package. Defaults to /opt/name-version.
|
79
81
|
path: nil,
|
82
|
+
# Number of times to retry failed downloads.
|
83
|
+
retries: static_retries,
|
80
84
|
# Full version number for use in interpolation.
|
81
85
|
static_version: static_version(node, resource),
|
82
86
|
# Value to pass to tar --strip-components.
|
@@ -86,17 +90,18 @@ module PoiseLanguages
|
|
86
90
|
})
|
87
91
|
end
|
88
92
|
|
89
|
-
def static_options(name: nil, versions: [], machines: %w{linux-i686 linux-x86_64}, url: nil, strip_components: 1)
|
93
|
+
def static_options(name: nil, versions: [], machines: %w{linux-i686 linux-x86_64}, url: nil, strip_components: 1, retries: 5)
|
90
94
|
raise PoiseLanguages::Error.new("Static archive URL is required, on #{self}") unless url
|
91
95
|
self.static_name = name || provides.to_s
|
92
96
|
self.static_versions = versions
|
93
97
|
self.static_machines = Set.new(machines)
|
94
98
|
self.static_url = url
|
95
99
|
self.static_strip_components = strip_components
|
100
|
+
self.static_retries = retries
|
96
101
|
end
|
97
102
|
|
98
103
|
def static_version(node, resource)
|
99
|
-
raw_version = resource.version.gsub(/^#{static_name}(-|$)/, '')
|
104
|
+
raw_version = resource.version.to_s.gsub(/^#{static_name}(-|$)/, '')
|
100
105
|
if static_versions.include?(raw_version)
|
101
106
|
raw_version
|
102
107
|
else
|
@@ -39,6 +39,10 @@ module PoiseLanguages
|
|
39
39
|
# Directory to install to.
|
40
40
|
# @return [String]
|
41
41
|
attribute(:path, kind_of: String, name_attribute: true)
|
42
|
+
# @!attribute download_retries
|
43
|
+
# Number of times to retry failed downloads. Defaults to 5.
|
44
|
+
# @return [Integer]
|
45
|
+
attribute(:download_retries, kind_of: Integer, default: 5)
|
42
46
|
# @!attribute source
|
43
47
|
# URL to download from.
|
44
48
|
# @return [String]
|
@@ -112,6 +116,7 @@ module PoiseLanguages
|
|
112
116
|
group 0
|
113
117
|
mode '644'
|
114
118
|
notifies :run, unpack_resource, :immediately
|
119
|
+
retries new_resource.download_retries
|
115
120
|
end
|
116
121
|
end
|
117
122
|
|
@@ -69,9 +69,9 @@ module PoiseLanguages
|
|
69
69
|
# @return [String]
|
70
70
|
def system_package_name
|
71
71
|
# Look up all packages for this language on this platform.
|
72
|
-
system_packages = node.value_for_platform(self.class.packages)
|
72
|
+
system_packages = self.class.packages && node.value_for_platform(self.class.packages)
|
73
73
|
if !system_packages && self.class.default_package
|
74
|
-
Chef::Log.debug("[#{new_resource}] No known packages for #{node['platform']} #{node['platform_version']}, defaulting to '#{self.class.default_package}'.")
|
74
|
+
Chef::Log.debug("[#{new_resource}] No known packages for #{node['platform']} #{node['platform_version']}, defaulting to '#{self.class.default_package}'.") if self.class.packages
|
75
75
|
system_packages = Array(self.class.default_package)
|
76
76
|
end
|
77
77
|
|
@@ -188,7 +188,7 @@ module PoiseLanguages
|
|
188
188
|
define_method(:load_current_resource) do
|
189
189
|
super().tap do |_|
|
190
190
|
each_package do |package_name, new_version, current_version, candidate_version|
|
191
|
-
unless candidate_version.start_with?(version)
|
191
|
+
unless candidate_version && candidate_version.start_with?(version)
|
192
192
|
raise PoiseLanguages::Error.new("Package #{package_name} would install #{candidate_version}, which does not match #{version.empty? ? version.inspect : version}. Please set the package_name or package_version provider options.")
|
193
193
|
end
|
194
194
|
end
|
data/poise-languages.gemspec
CHANGED
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.require_paths = %w{lib}
|
35
35
|
|
36
36
|
spec.add_dependency 'halite', '~> 1.0'
|
37
|
-
spec.add_dependency 'poise', '~> 2.
|
37
|
+
spec.add_dependency 'poise', '~> 2.5'
|
38
38
|
|
39
39
|
spec.add_development_dependency 'poise-boiler', '~> 1.0'
|
40
40
|
end
|
@@ -259,7 +259,7 @@ describe PoiseLanguages::Command::Mixin do
|
|
259
259
|
recipe do
|
260
260
|
poise_test 'test' do
|
261
261
|
command 'foo'
|
262
|
-
expect ['/which/mylang foo', {timeout: 900}]
|
262
|
+
expect ['/which/mylang foo', {environment:{}, timeout: 900}]
|
263
263
|
end
|
264
264
|
end
|
265
265
|
it { run_chef }
|
@@ -293,7 +293,7 @@ describe PoiseLanguages::Command::Mixin do
|
|
293
293
|
recipe do
|
294
294
|
poise_test 'test' do
|
295
295
|
command ['foo']
|
296
|
-
expect [['/which/mylang', 'foo'], {timeout: 900}]
|
296
|
+
expect [['/which/mylang', 'foo'], {environment: {}, timeout: 900}]
|
297
297
|
end
|
298
298
|
end
|
299
299
|
it { run_chef }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: poise-languages
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Noah Kantrowitz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: halite
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '2.
|
33
|
+
version: '2.5'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '2.
|
40
|
+
version: '2.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: poise-boiler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|