poise-languages 1.3.3 → 1.4.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/.travis.yml +2 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +1 -0
- data/lib/poise_languages/static/mixin.rb +15 -3
- data/lib/poise_languages/static/resource.rb +6 -31
- data/lib/poise_languages/system/mixin.rb +3 -1
- data/lib/poise_languages/version.rb +1 -1
- data/poise-languages.gemspec +1 -0
- data/test/gemfiles/chef-12.7.gemfile +19 -0
- data/test/gemfiles/chef-12.8.gemfile +19 -0
- data/test/gemfiles/master.gemfile +1 -0
- data/test/spec/spec_helper.rb +1 -0
- data/test/spec/static/resource_spec.rb +4 -108
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b0b22c0e5713511a2467b58158f1675d591d1f0
|
4
|
+
data.tar.gz: e4f1bcccbb1bcd84aa28919c03ecd6066f53e543
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a42e47e7e0cd8815b61756e6bd933aeb1139a8181544b35ad8fe5b620655d107d5355aa9f27ad85040bec1bdc7765b10035860435464200d19d5b73d21de792
|
7
|
+
data.tar.gz: 1006b3f1fc173a13c145d78bd3bbd96a9a4b0397eaa66505ea4d771b456fe37c634a024daf9b9a615e343cdf5e8dfcfb928002321403b732b23148b956057f77
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## v1.4.0
|
4
|
+
|
5
|
+
* Use `poise-archive` to unpack static binary archives. This should work better
|
6
|
+
on AIX and Solaris, as well as making it easier to add more archive formats in
|
7
|
+
the future.
|
8
|
+
|
3
9
|
## v1.3.3
|
4
10
|
|
5
11
|
* [#3](https://github.com/poise/poise-languages/pull/3) Fix `static` binary
|
data/Gemfile
CHANGED
@@ -52,7 +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.
|
55
|
+
machine_label: self.class.static_machine_label_wrapper(node, new_resource),
|
56
56
|
}
|
57
57
|
end
|
58
58
|
|
@@ -67,7 +67,7 @@ module PoiseLanguages
|
|
67
67
|
def provides_auto?(node, resource)
|
68
68
|
# Check that the version starts with our project name and the machine
|
69
69
|
# we are on is supported.
|
70
|
-
resource.version.to_s =~ /^#{static_name}(-|$)/ && static_machines.include?(
|
70
|
+
resource.version.to_s =~ /^#{static_name}(-|$)/ && static_machines.include?(static_machine_label_wrapper(node, resource))
|
71
71
|
end
|
72
72
|
|
73
73
|
# Set some default inversion provider options. Package name can't get
|
@@ -111,14 +111,26 @@ module PoiseLanguages
|
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
114
|
-
def static_machine_label(node)
|
114
|
+
def static_machine_label(node, _resource=nil)
|
115
115
|
"#{node['kernel']['name'].downcase}-#{node['kernel']['machine']}"
|
116
116
|
end
|
117
117
|
|
118
|
+
# Wrapper for {#static_machine_label} because I need to add an argument.
|
119
|
+
# This preserves backwards compat.
|
120
|
+
#
|
121
|
+
# @api private
|
122
|
+
def static_machine_label_wrapper(node, resource)
|
123
|
+
args = [node]
|
124
|
+
arity = method(:static_machine_label).arity
|
125
|
+
args << resource if arity > 1 || arity < 0
|
126
|
+
static_machine_label(*args)
|
127
|
+
end
|
128
|
+
|
118
129
|
def included(klass)
|
119
130
|
super
|
120
131
|
klass.extend ClassMethods
|
121
132
|
end
|
133
|
+
|
122
134
|
end
|
123
135
|
|
124
136
|
extend ClassMethods
|
@@ -72,7 +72,6 @@ module PoiseLanguages
|
|
72
72
|
# @return [void]
|
73
73
|
def action_install
|
74
74
|
notifying_block do
|
75
|
-
install_utils unless node.platform_family?('mac_os_x', 'windows', 'aix', 'solaris2')
|
76
75
|
download_archive
|
77
76
|
create_directory
|
78
77
|
# Unpack is handled as a notification from download_archive.
|
@@ -91,22 +90,13 @@ module PoiseLanguages
|
|
91
90
|
|
92
91
|
private
|
93
92
|
|
94
|
-
def install_utils
|
95
|
-
package [].tap {|utils|
|
96
|
-
utils << 'tar' if new_resource.cache_path =~ /\.t(ar|gz|bz|xz)/
|
97
|
-
utils << 'bzip2' if new_resource.cache_path =~ /\.t?bz/
|
98
|
-
# This probably won't work on RHEL?
|
99
|
-
utils << 'xz-utils' if new_resource.cache_path =~ /\.t?xz/
|
100
|
-
}
|
101
|
-
end
|
102
|
-
|
103
93
|
def create_directory
|
104
94
|
unpack_resource = unpack_archive
|
105
95
|
directory new_resource.path do
|
106
96
|
user 0
|
107
97
|
group 0
|
108
98
|
mode '755'
|
109
|
-
notifies :
|
99
|
+
notifies :unpack, unpack_resource, :immediately
|
110
100
|
end
|
111
101
|
end
|
112
102
|
|
@@ -117,32 +107,17 @@ module PoiseLanguages
|
|
117
107
|
owner 0
|
118
108
|
group 0
|
119
109
|
mode '644'
|
120
|
-
notifies :
|
110
|
+
notifies :unpack, unpack_resource, :immediately if ::File.exist?(new_resource.path)
|
121
111
|
retries new_resource.download_retries
|
122
112
|
end
|
123
113
|
end
|
124
114
|
|
125
115
|
def unpack_archive
|
126
|
-
|
127
|
-
|
128
|
-
cmd = %w{tar}
|
129
|
-
cmd << "--strip-components=#{new_resource.strip_components}" if new_resource.strip_components && new_resource.strip_components > 0
|
130
|
-
cmd << if new_resource.cache_path =~ /\.t?gz/
|
131
|
-
'-xzvf'
|
132
|
-
elsif new_resource.cache_path =~ /\.t?bz/
|
133
|
-
'-xjvf'
|
134
|
-
elsif new_resource.cache_path =~ /\.t?xz/
|
135
|
-
'-xJvf'
|
136
|
-
else
|
137
|
-
'-xvf'
|
138
|
-
end
|
139
|
-
cmd << new_resource.cache_path
|
140
|
-
|
141
|
-
@unpack_archive ||= execute 'unpack archive' do
|
142
|
-
# Run via notification from #download_archive.
|
116
|
+
@unpack_archive ||= poise_archive new_resource.cache_path do
|
117
|
+
# Run via notification from #download_archive and #create_directory.
|
143
118
|
action :nothing
|
144
|
-
|
145
|
-
|
119
|
+
destination new_resource.path
|
120
|
+
strip_components new_resource.strip_components
|
146
121
|
end
|
147
122
|
end
|
148
123
|
|
@@ -29,7 +29,7 @@ module PoiseLanguages
|
|
29
29
|
# @return [PoiseLanguages::System::Resource]
|
30
30
|
def install_system_packages
|
31
31
|
dev_package_overrides = system_dev_package_overrides
|
32
|
-
poise_languages_system
|
32
|
+
poise_languages_system system_package_name do
|
33
33
|
# Otherwise use the default install action.
|
34
34
|
action(:upgrade) if options['package_upgrade']
|
35
35
|
parent new_resource
|
@@ -68,6 +68,8 @@ module PoiseLanguages
|
|
68
68
|
# @api public
|
69
69
|
# @return [String]
|
70
70
|
def system_package_name
|
71
|
+
# If we have an override, just use that.
|
72
|
+
return options['package_name'] if options['package_name']
|
71
73
|
# Look up all packages for this language on this platform.
|
72
74
|
system_packages = self.class.packages && node.value_for_platform(self.class.packages)
|
73
75
|
if !system_packages && self.class.default_package
|
data/poise-languages.gemspec
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015-2016, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
|
18
|
+
|
19
|
+
gem 'chef', '~> 12.7.2'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015-2016, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
|
18
|
+
|
19
|
+
gem 'chef', '~> 12.8.1'
|
@@ -19,5 +19,6 @@ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
|
|
19
19
|
gem 'chef', github: 'chef/chef'
|
20
20
|
gem 'halite', github: 'poise/halite'
|
21
21
|
gem 'poise', github: 'poise/poise'
|
22
|
+
gem 'poise-archive', github: 'poise/poise-archive'
|
22
23
|
gem 'poise-boiler', github: 'poise/poise-boiler'
|
23
24
|
gem 'poise-profiler', github: 'poise/poise-profiler'
|
data/test/spec/spec_helper.rb
CHANGED
@@ -23,120 +23,16 @@ describe PoiseLanguages::Static::Resource do
|
|
23
23
|
chef_run.execute('unpack archive')
|
24
24
|
end
|
25
25
|
|
26
|
-
context '
|
26
|
+
context 'action :install' do
|
27
27
|
recipe do
|
28
28
|
poise_languages_static '/opt/myapp' do
|
29
29
|
source 'http://example.com/myapp.tar'
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
it { is_expected.to
|
34
|
-
it { is_expected.to
|
35
|
-
|
36
|
-
end # /context on Ubuntu
|
37
|
-
|
38
|
-
context 'on Solaris' do
|
39
|
-
let(:chefspec_options) { {platform: 'solaris2', version: '5.11'} }
|
40
|
-
recipe do
|
41
|
-
poise_languages_static '/opt/myapp' do
|
42
|
-
source 'http://example.com/myapp.tar'
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
it { is_expected.to_not install_package('tar') }
|
47
|
-
it { is_expected.to create_directory('/opt/myapp') }
|
48
|
-
it { is_expected.to create_remote_file("#{Chef::Config[:file_cache_path]}/myapp.tar").with(source: 'http://example.com/myapp.tar') }
|
49
|
-
end # /context on Solaris
|
50
|
-
|
51
|
-
context 'on AIX' do
|
52
|
-
let(:chefspec_options) { {platform: 'aix', version: '7.1'} }
|
53
|
-
recipe do
|
54
|
-
poise_languages_static '/opt/myapp' do
|
55
|
-
source 'http://example.com/myapp.tar'
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
it { is_expected.to_not install_package('tar') }
|
60
|
-
it { is_expected.to create_directory('/opt/myapp') }
|
61
|
-
it { is_expected.to create_remote_file("#{Chef::Config[:file_cache_path]}/myapp.tar").with(source: 'http://example.com/myapp.tar') }
|
62
|
-
end # /context on AIX
|
63
|
-
|
64
|
-
context 'with a .tar URL' do
|
65
|
-
recipe do
|
66
|
-
poise_languages_static '/opt/myapp' do
|
67
|
-
source 'http://example.com/myapp.tar'
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
it { is_expected.to install_package('tar') }
|
72
|
-
it { expect(unpack_resource.command).to eq %W{tar --strip-components=1 -xvf #{Chef::Config[:file_cache_path]}/myapp.tar} }
|
73
|
-
end # /context with a .tar URL
|
74
|
-
|
75
|
-
context 'with a .tar.gz URL' do
|
76
|
-
recipe do
|
77
|
-
poise_languages_static '/opt/myapp' do
|
78
|
-
source 'http://example.com/myapp.tar.gz'
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
it { is_expected.to install_package('tar') }
|
83
|
-
it { expect(unpack_resource.command).to eq %W{tar --strip-components=1 -xzvf #{Chef::Config[:file_cache_path]}/myapp.tar.gz} }
|
84
|
-
end # /context with a .tar.gz URL
|
85
|
-
|
86
|
-
context 'with a .tgz URL' do
|
87
|
-
recipe do
|
88
|
-
poise_languages_static '/opt/myapp' do
|
89
|
-
source 'http://example.com/myapp.tgz'
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
it { is_expected.to install_package('tar') }
|
94
|
-
it { expect(unpack_resource.command).to eq %W{tar --strip-components=1 -xzvf #{Chef::Config[:file_cache_path]}/myapp.tgz} }
|
95
|
-
end # /context with a .tgz URL
|
96
|
-
|
97
|
-
context 'with a .tar.bz2 URL' do
|
98
|
-
recipe do
|
99
|
-
poise_languages_static '/opt/myapp' do
|
100
|
-
source 'http://example.com/myapp.tar.bz2'
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
it { is_expected.to install_package(%w{tar bzip2}) }
|
105
|
-
it { expect(unpack_resource.command).to eq %W{tar --strip-components=1 -xjvf #{Chef::Config[:file_cache_path]}/myapp.tar.bz2} }
|
106
|
-
end # /context with a .tar.bz2 URL
|
107
|
-
|
108
|
-
context 'with a .tbz URL' do
|
109
|
-
recipe do
|
110
|
-
poise_languages_static '/opt/myapp' do
|
111
|
-
source 'http://example.com/myapp.tbz'
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
it { is_expected.to install_package(%w{tar bzip2}) }
|
116
|
-
it { expect(unpack_resource.command).to eq %W{tar --strip-components=1 -xjvf #{Chef::Config[:file_cache_path]}/myapp.tbz} }
|
117
|
-
end # /context with a .tbz URL
|
118
|
-
|
119
|
-
context 'with a .tar.xz URL' do
|
120
|
-
recipe do
|
121
|
-
poise_languages_static '/opt/myapp' do
|
122
|
-
source 'http://example.com/myapp.tar.xz'
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
it { is_expected.to install_package(%w{tar xz-utils}) }
|
127
|
-
it { expect(unpack_resource.command).to eq %W{tar --strip-components=1 -xJvf #{Chef::Config[:file_cache_path]}/myapp.tar.xz} }
|
128
|
-
end # /context with a .tar.xz URL
|
129
|
-
|
130
|
-
context 'with a .txz URL' do
|
131
|
-
recipe do
|
132
|
-
poise_languages_static '/opt/myapp' do
|
133
|
-
source 'http://example.com/myapp.txz'
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
it { is_expected.to install_package(%w{tar xz-utils}) }
|
138
|
-
it { expect(unpack_resource.command).to eq %W{tar --strip-components=1 -xJvf #{Chef::Config[:file_cache_path]}/myapp.txz} }
|
139
|
-
end # /context with a .txz URL
|
33
|
+
it { is_expected.to create_directory('/opt/myapp').with(user: 0, group: 0, mode: '755') }
|
34
|
+
it { is_expected.to create_remote_file("#{Chef::Config[:file_cache_path]}/myapp.tar").with(user: 0, group: 0, mode: '644', source: 'http://example.com/myapp.tar', retries: 5) }
|
35
|
+
end # /context 'action :install
|
140
36
|
|
141
37
|
context 'action :uninstall' do
|
142
38
|
recipe do
|
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.4.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: 2016-03-
|
11
|
+
date: 2016-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: halite
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: poise-archive
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: poise-boiler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,6 +105,8 @@ files:
|
|
91
105
|
- test/gemfiles/chef-12.4.gemfile
|
92
106
|
- test/gemfiles/chef-12.5.gemfile
|
93
107
|
- test/gemfiles/chef-12.6.gemfile
|
108
|
+
- test/gemfiles/chef-12.7.gemfile
|
109
|
+
- test/gemfiles/chef-12.8.gemfile
|
94
110
|
- test/gemfiles/chef-12.gemfile
|
95
111
|
- test/gemfiles/master.gemfile
|
96
112
|
- test/spec/command/mixin_spec.rb
|
@@ -122,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
138
|
version: '0'
|
123
139
|
requirements: []
|
124
140
|
rubyforge_project:
|
125
|
-
rubygems_version: 2.
|
141
|
+
rubygems_version: 2.6.2
|
126
142
|
signing_key:
|
127
143
|
specification_version: 4
|
128
144
|
summary: A Chef cookbook to help writing language cookbooks.
|
@@ -135,6 +151,8 @@ test_files:
|
|
135
151
|
- test/gemfiles/chef-12.4.gemfile
|
136
152
|
- test/gemfiles/chef-12.5.gemfile
|
137
153
|
- test/gemfiles/chef-12.6.gemfile
|
154
|
+
- test/gemfiles/chef-12.7.gemfile
|
155
|
+
- test/gemfiles/chef-12.8.gemfile
|
138
156
|
- test/gemfiles/chef-12.gemfile
|
139
157
|
- test/gemfiles/master.gemfile
|
140
158
|
- test/spec/command/mixin_spec.rb
|