mixlib-install 2.1.10 → 2.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/mixlib/install/backend/base.rb +62 -0
- data/lib/mixlib/install/options.rb +2 -16
- data/lib/mixlib/install/script_generator.rb +19 -3
- data/lib/mixlib/install/util.rb +19 -0
- data/lib/mixlib/install/version.rb +1 -1
- metadata +2 -4
- data/CHANGELOG.html +0 -1175
- data/terraform_0.7.4_linux_amd64.zip +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78100fdfcf4f2f4138a8c837ce334bfbb812f589
|
4
|
+
data.tar.gz: 4cc8e261d9e76e6fbacb66948b7c2013902c29cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c49e9e1d76860d6f046f8802787afb24c5f43dfd68282790159af34fe7d97696cfacdbf93b5771e2f75c6564905b09c0f3046ef6fac57dc9f47d0de55b311c4
|
7
|
+
data.tar.gz: d3294be5f080deb190f45c2081e59feea6e8f5d2a6267278cc5fa8626e4addcd28e0b3979cc2f2823b8578829447d4faf74efea75b7d7db723fe256983e0c551
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [2.1.11]
|
4
|
+
- Fix ScriptGenerator install script to use proper platform detection for Windows artifacts
|
5
|
+
- Artifact metadata now includes supported Windows Desktop versions
|
6
|
+
|
3
7
|
## [2.1.10]
|
4
8
|
- Backward and forward compatibility support for `automate` and `delivery` product versions.
|
5
9
|
|
@@ -16,12 +16,18 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
+
require "mixlib/install/util"
|
20
|
+
|
19
21
|
module Mixlib
|
20
22
|
class Install
|
21
23
|
class Backend
|
22
24
|
class Base
|
25
|
+
class UnsupportedVersion < ArgumentError; end
|
26
|
+
|
23
27
|
attr_reader :options
|
24
28
|
|
29
|
+
SUPPORTED_WINDOWS_DESKTOP_VERSIONS = %w{7 8 8.1 10}
|
30
|
+
|
25
31
|
def initialize(options)
|
26
32
|
@options = options
|
27
33
|
end
|
@@ -124,6 +130,9 @@ module Mixlib
|
|
124
130
|
# On windows, if we do not have a native 64-bit package available
|
125
131
|
# in the discovered artifacts, we will make 32-bit artifacts available
|
126
132
|
# for 64-bit architecture.
|
133
|
+
#
|
134
|
+
# We also create new artifacts for windows 7, 8, 8.1 and 10
|
135
|
+
#
|
127
136
|
def windows_artifact_fixup!(artifacts)
|
128
137
|
new_artifacts = [ ]
|
129
138
|
native_artifacts = [ ]
|
@@ -143,6 +152,26 @@ module Mixlib
|
|
143
152
|
end
|
144
153
|
end
|
145
154
|
|
155
|
+
# Grab windows artifact for each architecture so we don't have to manipulate
|
156
|
+
# the architecture extension in the filename of the url which changes based on product.
|
157
|
+
# Don't want to deal with that!
|
158
|
+
artifact_64 = artifacts.find { |a| a.platform == "windows" && a.architecture == "x86_64" }
|
159
|
+
artifact_32 = artifacts.find { |a| a.platform == "windows" && a.architecture == "i386" }
|
160
|
+
|
161
|
+
# Attempt to clone windows artifacts only when a Windows 32 bit artifact exists
|
162
|
+
if artifact_32
|
163
|
+
new_artifacts.concat(clone_windows_desktop_artifacts(artifact_32))
|
164
|
+
|
165
|
+
# Clone an existing 64 bit artifact
|
166
|
+
if artifact_64
|
167
|
+
new_artifacts.concat(clone_windows_desktop_artifacts(artifact_64))
|
168
|
+
|
169
|
+
# Clone the 32 bit artifact when 64 bit doesn't exist
|
170
|
+
else
|
171
|
+
new_artifacts.concat(clone_windows_desktop_artifacts(artifact_32, architecture: "x86_64"))
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
146
175
|
# Now discard the cloned artifacts if we find an equivalent native
|
147
176
|
# artifact
|
148
177
|
native_artifacts.each do |r|
|
@@ -195,6 +224,39 @@ module Mixlib
|
|
195
224
|
architecture
|
196
225
|
end
|
197
226
|
end
|
227
|
+
|
228
|
+
private
|
229
|
+
|
230
|
+
#
|
231
|
+
# Custom map Chef's supported windows desktop versions to the server versions we currently build
|
232
|
+
# See https://docs.chef.io/platforms.html
|
233
|
+
#
|
234
|
+
def map_custom_windows_desktop_versions(desktop_version)
|
235
|
+
unless SUPPORTED_WINDOWS_DESKTOP_VERSIONS.include?(desktop_version)
|
236
|
+
raise UnsupportedVersion, "Unsupported Windows desktop version `#{desktop_version}`. Supported versions: #{SUPPORTED_WINDOWS_DESKTOP_VERSIONS.join(", ")}."
|
237
|
+
end
|
238
|
+
|
239
|
+
server_version = Util.map_windows_desktop_version(desktop_version)
|
240
|
+
|
241
|
+
# Windows desktop 10 officially maps to server 2016.
|
242
|
+
# However, we don't test on server 2016 at this time, so we default to 2012r2
|
243
|
+
server_version = "2012r2" if server_version == "2016"
|
244
|
+
|
245
|
+
server_version
|
246
|
+
end
|
247
|
+
|
248
|
+
#
|
249
|
+
# Clone all supported Windows desktop artifacts from a base artifact
|
250
|
+
# options hash allows overriding any valid attribute
|
251
|
+
#
|
252
|
+
def clone_windows_desktop_artifacts(base_artifact, options = {})
|
253
|
+
SUPPORTED_WINDOWS_DESKTOP_VERSIONS.collect do |dv|
|
254
|
+
options[:platform_version] = dv
|
255
|
+
options[:url] = base_artifact.url.gsub("\/#{base_artifact.platform_version}\/", "\/#{map_custom_windows_desktop_versions(dv)}\/")
|
256
|
+
|
257
|
+
base_artifact.clone_with(options)
|
258
|
+
end
|
259
|
+
end
|
198
260
|
end
|
199
261
|
end
|
200
262
|
end
|
@@ -17,6 +17,7 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require "mixlib/install/product"
|
20
|
+
require "mixlib/install/util"
|
20
21
|
require "mixlib/versioning"
|
21
22
|
|
22
23
|
module Mixlib
|
@@ -179,22 +180,7 @@ Must be one of: #{SUPPORTED_SHELL_TYPES.join(", ")}
|
|
179
180
|
end
|
180
181
|
|
181
182
|
def map_windows_desktop_versions!
|
182
|
-
|
183
|
-
# These are here to improve UX for older desktop versions.
|
184
|
-
options[:platform_version] = case platform_version
|
185
|
-
when /^10/
|
186
|
-
"2016"
|
187
|
-
when /^6.3/, /^8.1/
|
188
|
-
"2012r2"
|
189
|
-
when /^6.2/, /^8/
|
190
|
-
"2012"
|
191
|
-
when /^6.1/, /^7/
|
192
|
-
"2008r2"
|
193
|
-
when /^6/
|
194
|
-
"2008"
|
195
|
-
else
|
196
|
-
platform_version
|
197
|
-
end
|
183
|
+
options[:platform_version] = Util.map_windows_desktop_version(platform_version)
|
198
184
|
end
|
199
185
|
end
|
200
186
|
end
|
@@ -18,6 +18,7 @@
|
|
18
18
|
#
|
19
19
|
|
20
20
|
require "mixlib/install/util"
|
21
|
+
require "mixlib/install/generator/powershell"
|
21
22
|
require "cgi"
|
22
23
|
|
23
24
|
module Mixlib
|
@@ -171,8 +172,23 @@ module Mixlib
|
|
171
172
|
%w{.. .. .. support},
|
172
173
|
"install_command"
|
173
174
|
)
|
174
|
-
Util.shell_code_from_file(
|
175
|
-
|
175
|
+
code = Util.shell_code_from_file(
|
176
|
+
vars, fn, powershell,
|
177
|
+
http_proxy: http_proxy, https_proxy: https_proxy
|
178
|
+
)
|
179
|
+
powershell ? powershell_prefix.concat(code) : code
|
180
|
+
end
|
181
|
+
|
182
|
+
# Prefixes the PowerShell install script with helpers and shell vars
|
183
|
+
# to detect the platform version and architecture.
|
184
|
+
#
|
185
|
+
# @return [String] PowerShell helpers and shell vars for platform info
|
186
|
+
def powershell_prefix
|
187
|
+
[
|
188
|
+
Mixlib::Install::Generator::PowerShell.get_script("helpers.ps1"),
|
189
|
+
"$platform_architecture = Get-PlatformArchitecture",
|
190
|
+
"$platform_version = Get-PlatformVersion",
|
191
|
+
].join("\n")
|
176
192
|
end
|
177
193
|
|
178
194
|
# Builds a shell variable assignment string for the required shell type.
|
@@ -200,7 +216,7 @@ module Mixlib
|
|
200
216
|
end
|
201
217
|
|
202
218
|
url = "#{base}#{endpoint}"
|
203
|
-
url << "?p=windows&m
|
219
|
+
url << "?p=windows&m=$platform_architecture&pv=$platform_version"
|
204
220
|
url << "&v=#{CGI.escape(version)}" unless %w{latest true nightlies}.include?(version)
|
205
221
|
url << "&prerelease=true" if prerelease
|
206
222
|
url << "&nightlies=true" if nightlies
|
data/lib/mixlib/install/util.rb
CHANGED
@@ -129,6 +129,25 @@ module Mixlib
|
|
129
129
|
# Ensure that if the default user agent is aleady set it doesn't get duplicated
|
130
130
|
user_agents.flatten.compact.uniq.join(" ")
|
131
131
|
end
|
132
|
+
|
133
|
+
def map_windows_desktop_version(version)
|
134
|
+
# This logic does not try to compare and determine proper versions based on conditions or ranges.
|
135
|
+
# These are here to improve UX for desktop versions.
|
136
|
+
case version
|
137
|
+
when /^10/
|
138
|
+
"2016"
|
139
|
+
when /^6.3/, /^8.1/
|
140
|
+
"2012r2"
|
141
|
+
when /^6.2/, /^8/
|
142
|
+
"2012"
|
143
|
+
when /^6.1/, /^7/
|
144
|
+
"2008r2"
|
145
|
+
when /^6/
|
146
|
+
"2008"
|
147
|
+
else
|
148
|
+
version
|
149
|
+
end
|
150
|
+
end
|
132
151
|
end
|
133
152
|
end
|
134
153
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mixlib-install
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thom May
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-01
|
12
|
+
date: 2017-02-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: artifactory
|
@@ -220,7 +220,6 @@ files:
|
|
220
220
|
- ".gitignore"
|
221
221
|
- ".rspec"
|
222
222
|
- ".travis.yml"
|
223
|
-
- CHANGELOG.html
|
224
223
|
- CHANGELOG.md
|
225
224
|
- CONTRIBUTING.md
|
226
225
|
- Gemfile
|
@@ -290,7 +289,6 @@ files:
|
|
290
289
|
- mixlib-install.gemspec
|
291
290
|
- support/install_command.ps1
|
292
291
|
- support/install_command.sh
|
293
|
-
- terraform_0.7.4_linux_amd64.zip
|
294
292
|
homepage: https://chef.io
|
295
293
|
licenses:
|
296
294
|
- Apache-2.0
|