omnibus 6.0.1 → 6.0.24

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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/lib/omnibus/build_version.rb +1 -1
  4. data/lib/omnibus/builder.rb +1 -1
  5. data/lib/omnibus/changelog.rb +1 -1
  6. data/lib/omnibus/compressors/dmg.rb +18 -6
  7. data/lib/omnibus/core_extensions/open_uri.rb +1 -1
  8. data/lib/omnibus/exceptions.rb +103 -103
  9. data/lib/omnibus/fetchers/net_fetcher.rb +8 -6
  10. data/lib/omnibus/generator_files/.kitchen.local.yml.erb +10 -0
  11. data/lib/omnibus/generator_files/.kitchen.yml.erb +41 -0
  12. data/lib/omnibus/generator_files/Gemfile.erb +3 -3
  13. data/lib/omnibus/git_repository.rb +1 -1
  14. data/lib/omnibus/licensing.rb +1 -0
  15. data/lib/omnibus/metadata.rb +15 -15
  16. data/lib/omnibus/packager.rb +11 -10
  17. data/lib/omnibus/packagers/appx.rb +4 -4
  18. data/lib/omnibus/packagers/base.rb +19 -0
  19. data/lib/omnibus/packagers/bff.rb +13 -13
  20. data/lib/omnibus/packagers/deb.rb +14 -14
  21. data/lib/omnibus/packagers/ips.rb +7 -7
  22. data/lib/omnibus/packagers/msi.rb +73 -25
  23. data/lib/omnibus/packagers/pkg.rb +10 -10
  24. data/lib/omnibus/packagers/pkgsrc.rb +5 -5
  25. data/lib/omnibus/packagers/rpm.rb +31 -31
  26. data/lib/omnibus/packagers/solaris.rb +2 -2
  27. data/lib/omnibus/packagers/windows_base.rb +2 -2
  28. data/lib/omnibus/project.rb +4 -0
  29. data/lib/omnibus/publishers/artifactory_publisher.rb +17 -17
  30. data/lib/omnibus/publishers/s3_publisher.rb +20 -6
  31. data/lib/omnibus/s3_cache.rb +5 -5
  32. data/lib/omnibus/s3_helpers.rb +6 -4
  33. data/lib/omnibus/software.rb +7 -12
  34. data/lib/omnibus/version.rb +1 -1
  35. data/lib/omnibus/whitelist.rb +1 -0
  36. data/omnibus.gemspec +6 -7
  37. data/spec/functional/builder_spec.rb +1 -1
  38. data/spec/functional/licensing_spec.rb +49 -49
  39. data/spec/functional/templating_spec.rb +3 -3
  40. data/spec/support/git_helpers.rb +5 -5
  41. data/spec/unit/changelog_spec.rb +7 -7
  42. data/spec/unit/changelogprinter_spec.rb +5 -5
  43. data/spec/unit/compressors/dmg_spec.rb +7 -2
  44. data/spec/unit/generator_spec.rb +6 -34
  45. data/spec/unit/manifest_diff_spec.rb +18 -18
  46. data/spec/unit/metadata_spec.rb +10 -19
  47. data/spec/unit/packager_spec.rb +7 -7
  48. data/spec/unit/packagers/base_spec.rb +17 -0
  49. data/spec/unit/packagers/deb_spec.rb +1 -1
  50. data/spec/unit/packagers/ips_spec.rb +1 -1
  51. data/spec/unit/packagers/msi_spec.rb +45 -0
  52. data/spec/unit/packagers/pkg_spec.rb +1 -1
  53. data/spec/unit/packagers/rpm_spec.rb +1 -46
  54. data/spec/unit/packagers/solaris_spec.rb +3 -3
  55. data/spec/unit/software_spec.rb +2 -53
  56. data/spec/unit/util_spec.rb +1 -1
  57. metadata +21 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b284dd534123f25d29564a4e30f2d4c2aad7681c866e498a27dcd5bdd31ac98b
4
- data.tar.gz: ba218cd4ed48cf4e1c7697b8aeee068c167bbaa5c776d09e7cd4e80fe67765c7
3
+ metadata.gz: 62046c09cd3865088ef63927b5ce3bd565c0ad8d7553358a8537f459f1163356
4
+ data.tar.gz: 472d2ba5eeffd0e997c9d787d4b507a18483ceebdc8061043b3e2da38fbf6204
5
5
  SHA512:
6
- metadata.gz: cf7dffcc3674c570065db2183937da6d10ed75167ac065c91800fdc4e7d7487c8dd959d9cc42109cb38b1e7a764115657137599d076cadb80c9c609f7fe6ead8
7
- data.tar.gz: a195cbdeb15ab989bc5b0da999b828eda914dbaf28dbfd9833cba683073f4acba7217f559c82c8988360340625aa83a274ce2a7b03d8a1452e955cf849b83ef8
6
+ metadata.gz: bb009f95b399d7514d80cda4db6032dca69b9eec31715e3d15fa4a7396c20e72b9387eec06b817356b91d56ec2eaead7fca67185a98f88cf069e1177e15e6c00
7
+ data.tar.gz: 7333413a6c610a29d8f1d6a0ebd787010f8b58c65e086aad9c8710e0062eb4d0cbcd98f9ee449cb4ea502537c325387043393f4799f2bb2297e6fc7c0c30083d
data/Gemfile CHANGED
@@ -13,3 +13,6 @@ group :debug do
13
13
  gem "pry-byebug"
14
14
  gem "pry-stack_explorer"
15
15
  end
16
+
17
+ # this brings in several fixes to rspec-json_expectations that are causing test failures
18
+ gem "rspec-json_expectations", git: "https://github.com/tas50/rspec-json_expectations.git"
@@ -34,7 +34,7 @@ module Omnibus
34
34
  #
35
35
  # @see Omnibus::BuildVersion#semver
36
36
  # @see Time#strftime
37
- TIMESTAMP_FORMAT = "%Y%m%d%H%M%S"
37
+ TIMESTAMP_FORMAT = "%Y%m%d%H%M%S".freeze
38
38
 
39
39
  class << self
40
40
  # @see (BuildVersion#git_describe)
@@ -765,7 +765,7 @@ module Omnibus
765
765
  log.internal(log_key) { "Cached builder checksum before build: #{shasum}" }
766
766
  if software.overridden?
767
767
  log.info(log_key) do
768
- "Version overridden from #{software.default_version} to "\
768
+ "Version overridden from #{software.default_version || "n/a"} to "\
769
769
  "#{software.version}"
770
770
  end
771
771
  end
@@ -2,7 +2,7 @@ require "omnibus/git_repository"
2
2
 
3
3
  module Omnibus
4
4
  class ChangeLog
5
- CHANGELOG_TAG = "ChangeLog-Entry"
5
+ CHANGELOG_TAG = "ChangeLog-Entry".freeze
6
6
 
7
7
  attr_reader :end_ref
8
8
  def initialize(start_ref = nil, end_ref = "HEAD", git_repo = GitRepository.new("./"))
@@ -36,6 +36,7 @@ module Omnibus
36
36
  build do
37
37
  create_writable_dmg
38
38
  attach_dmg
39
+ copy_assets_to_dmg
39
40
  # Give some time to the system so attached dmg shows up in Finder
40
41
  sleep 5
41
42
  set_volume_icon
@@ -138,11 +139,9 @@ module Omnibus
138
139
 
139
140
  shellout! <<-EOH.gsub(/^ {8}/, "")
140
141
  hdiutil create \\
141
- -srcfolder "#{resources_dir}" \\
142
142
  -volname "#{volume_name}" \\
143
143
  -fs HFS+ \\
144
144
  -fsargs "-c c=64,a=16,e=16" \\
145
- -format UDRW \\
146
145
  -size 512000k \\
147
146
  "#{writable_dmg}"
148
147
  EOH
@@ -170,6 +169,17 @@ module Omnibus
170
169
  end
171
170
  end
172
171
 
172
+ #
173
+ # Copy assets to dmg
174
+ #
175
+ def copy_assets_to_dmg
176
+ log.info(log_key) { "Copying assets into dmg" }
177
+
178
+ FileSyncer.glob("#{resources_dir}/*").each do |file|
179
+ FileUtils.cp_r(file, "/Volumes/#{volume_name}")
180
+ end
181
+ end
182
+
173
183
  #
174
184
  # Create the icon for the volume using sips.
175
185
  #
@@ -216,10 +226,10 @@ module Omnibus
216
226
  render_template(resource_path("create_dmg.osascript.erb"),
217
227
  destination: "#{staging_dir}/create_dmg.osascript",
218
228
  variables: {
219
- volume_name: volume_name,
220
- pkg_name: packager.package_name,
229
+ volume_name: volume_name,
230
+ pkg_name: packager.package_name,
221
231
  window_bounds: window_bounds,
222
- pkg_position: pkg_position,
232
+ pkg_position: pkg_position,
223
233
  }
224
234
  )
225
235
 
@@ -231,7 +241,9 @@ module Omnibus
231
241
  end
232
242
 
233
243
  #
234
- # Compress the dmg using hdiutil and zlib.
244
+ # Compress the dmg using hdiutil and zlib. zlib offers better compression
245
+ # levels than bzip2 (10.4+) or LZFSE (10.11+), but takes longer to compress.
246
+ # We're willing to trade slightly longer build times for smaller package sizes.
235
247
  #
236
248
  # @return [void]
237
249
  #
@@ -64,7 +64,7 @@ module OpenURI
64
64
  #
65
65
  # @see http://winstonyw.com/2013/10/02/openuris_open_tempfile_and_stringio/
66
66
  #
67
- # rubocop:disable Style/ConstantName
67
+ # rubocop:disable Naming/ConstantName
68
68
  class Buffer
69
69
  remove_const :StringMax
70
70
  StringMax = 0
@@ -23,11 +23,11 @@ module Omnibus
23
23
  end
24
24
 
25
25
  def to_s
26
- <<-EOH
27
- Could not locate or access the package at the given path:
26
+ <<~EOH
27
+ Could not locate or access the package at the given path:
28
28
 
29
- #{@path}
30
- EOH
29
+ #{@path}
30
+ EOH
31
31
  end
32
32
  end
33
33
 
@@ -37,11 +37,11 @@ EOH
37
37
  end
38
38
 
39
39
  def to_s
40
- <<-EOH
41
- Could not locate or access the package metadata file at the given path:
40
+ <<~EOH
41
+ Could not locate or access the package metadata file at the given path:
42
42
 
43
- #{@path}
44
- EOH
43
+ #{@path}
44
+ EOH
45
45
  end
46
46
  end
47
47
 
@@ -52,16 +52,16 @@ EOH
52
52
  end
53
53
 
54
54
  def to_s
55
- <<-EOH
56
- Missing required attribute `#{@name}' for #{@class}. You must
57
- specify a value for `#{@name}' in your DSL file:
55
+ <<~EOH
56
+ Missing required attribute `#{@name}' for #{@class}. You must
57
+ specify a value for `#{@name}' in your DSL file:
58
58
 
59
- #{@name} #{@sample.inspect}
59
+ #{@name} #{@sample.inspect}
60
60
 
61
- Or set the value on the object:
61
+ Or set the value on the object:
62
62
 
63
- #{@class.downcase}.#{@name}(#{@sample.inspect})
64
- EOH
63
+ #{@class.downcase}.#{@name}(#{@sample.inspect})
64
+ EOH
65
65
  end
66
66
  end
67
67
 
@@ -71,12 +71,12 @@ EOH
71
71
  end
72
72
 
73
73
  def to_s
74
- <<-EOH
75
- Attempting to apply the patch `#{@name}', but it was not found at any of the
76
- following locations:
74
+ <<~EOH
75
+ Attempting to apply the patch `#{@name}', but it was not found at any of the
76
+ following locations:
77
77
 
78
- #{@search_paths.map { |path| " #{path}" }.join("\n")}
79
- EOH
78
+ #{@search_paths.map { |path| " #{path}" }.join("\n")}
79
+ EOH
80
80
  end
81
81
  end
82
82
 
@@ -86,12 +86,12 @@ EOH
86
86
  end
87
87
 
88
88
  def to_s
89
- <<-EOH
90
- Attempting to evaluate the template `#{@template}', but it was not found at any of
91
- the following locations:
89
+ <<~EOH
90
+ Attempting to evaluate the template `#{@template}', but it was not found at any of
91
+ the following locations:
92
92
 
93
- #{@search_paths.map { |path| " #{path}" }.join("\n")}
94
- EOH
93
+ #{@search_paths.map { |path| " #{path}" }.join("\n")}
94
+ EOH
95
95
  end
96
96
  end
97
97
 
@@ -102,11 +102,11 @@ EOH
102
102
  end
103
103
 
104
104
  def to_s
105
- <<-EOH
106
- I could not find a project named `#{@name}' in any of the project locations:"
105
+ <<~EOH
106
+ I could not find a project named `#{@name}' in any of the project locations:"
107
107
 
108
- #{@possible_paths.map { |path| " #{path}" }.join("\n")}
109
- EOH
108
+ #{@possible_paths.map { |path| " #{path}" }.join("\n")}
109
+ EOH
110
110
  end
111
111
  end
112
112
 
@@ -117,11 +117,11 @@ EOH
117
117
  end
118
118
 
119
119
  def to_s
120
- <<-EOH
121
- I could not find a software named `#{@name}' in any of the software locations:"
120
+ <<~EOH
121
+ I could not find a software named `#{@name}' in any of the software locations:"
122
122
 
123
- #{@possible_paths.map { |path| " #{path}" }.join("\n")}
124
- EOH
123
+ #{@possible_paths.map { |path| " #{path}" }.join("\n")}
124
+ EOH
125
125
  end
126
126
  end
127
127
 
@@ -131,13 +131,13 @@ EOH
131
131
  end
132
132
 
133
133
  def to_s
134
- <<-EOH
135
- I could not load the `#{@name}' gem. Please make sure the gem is installed on
136
- your local system by running `gem install #{@name}`, or by adding the following
137
- to your Gemfile:
134
+ <<~EOH
135
+ I could not load the `#{@name}' gem. Please make sure the gem is installed on
136
+ your local system by running `gem install #{@name}`, or by adding the following
137
+ to your Gemfile:
138
138
 
139
- gem '#{@name}'
140
- EOH
139
+ gem '#{@name}'
140
+ EOH
141
141
  end
142
142
  end
143
143
 
@@ -147,9 +147,9 @@ EOH
147
147
  end
148
148
 
149
149
  def to_s
150
- <<-EOH
151
- Software must specify a `#{@key}; to cache it in S3 (#{@package})!
152
- EOH
150
+ <<~EOH
151
+ Software must specify a `#{@key}; to cache it in S3 (#{@package})!
152
+ EOH
153
153
  end
154
154
  end
155
155
 
@@ -166,9 +166,9 @@ EOH
166
166
  end
167
167
 
168
168
  def to_s
169
- <<-EOH
170
- Invalid value for `#{@source}'. Expected #{@source} to #{@message}!
171
- EOH
169
+ <<~EOH
170
+ Invalid value for `#{@source}'. Expected #{@source} to #{@message}!
171
+ EOH
172
172
  end
173
173
  end
174
174
 
@@ -182,10 +182,10 @@ EOH
182
182
  end
183
183
 
184
184
  def to_s
185
- <<-EOH
186
- Unknown platform `#{@platform}'!
187
- I do not know how to proceed!"
188
- EOH
185
+ <<~EOH
186
+ Unknown platform `#{@platform}'!
187
+ I do not know how to proceed!"
188
+ EOH
189
189
  end
190
190
  end
191
191
 
@@ -199,46 +199,46 @@ EOH
199
199
  end
200
200
 
201
201
  def to_s
202
- <<-EOH
203
- Unknown platform version `#{@version}' for #{@platform}!
204
- I do not know how to proceed!"
205
- EOH
202
+ <<~EOH
203
+ Unknown platform version `#{@version}' for #{@platform}!
204
+ I do not know how to proceed!"
205
+ EOH
206
206
  end
207
207
  end
208
208
 
209
209
  class HealthCheckFailed < Error
210
210
  def to_s
211
- <<-EOH
212
- The health check failed! Please see above for important information.
213
- EOH
211
+ <<~EOH
212
+ The health check failed! Please see above for important information.
213
+ EOH
214
214
  end
215
215
  end
216
216
 
217
217
  class ChecksumMissing < Error
218
218
  def initialize(software)
219
- super <<-EOH
220
- Verification for #{software.name} failed due to a missing checksum.
219
+ super <<~EOH
220
+ Verification for #{software.name} failed due to a missing checksum.
221
221
 
222
- This added security check is used to prevent MITM attacks when downloading the
223
- remote file. You must specify a checksum for each version of software downloaded
224
- from a remote location.
225
- EOH
222
+ This added security check is used to prevent MITM attacks when downloading the
223
+ remote file. You must specify a checksum for each version of software downloaded
224
+ from a remote location.
225
+ EOH
226
226
  end
227
227
  end
228
228
 
229
229
  class ChecksumMismatch < Error
230
230
  def initialize(software, expected, actual)
231
- super <<-EOH
232
- Verification for #{software.name} failed due to a checksum mismatch:
231
+ super <<~EOH
232
+ Verification for #{software.name} failed due to a checksum mismatch:
233
233
 
234
- expected: #{expected}
235
- actual: #{actual}
234
+ expected: #{expected}
235
+ actual: #{actual}
236
236
 
237
- This added security check is used to prevent MITM attacks when downloading the
238
- remote file. If you have updated the version or URL for the download, you will
239
- also need to update the checksum value. You can find the checksum value on the
240
- software publisher's website.
241
- EOH
237
+ This added security check is used to prevent MITM attacks when downloading the
238
+ remote file. If you have updated the version or URL for the download, you will
239
+ also need to update the checksum value. You can find the checksum value on the
240
+ software publisher's website.
241
+ EOH
242
242
  end
243
243
  end
244
244
 
@@ -258,19 +258,19 @@ EOH
258
258
  stdout = cmd.stdout.empty? ? "(nothing)" : cmd.stdout.strip
259
259
  stderr = cmd.stderr.empty? ? "(nothing)" : cmd.stderr.strip
260
260
 
261
- super <<-EOH
262
- The following shell command exited with status #{status}:
261
+ super <<~EOH
262
+ The following shell command exited with status #{status}:
263
263
 
264
- $ #{command_with_env}
264
+ $ #{command_with_env}
265
265
 
266
- Output:
266
+ Output:
267
267
 
268
- #{stdout}
268
+ #{stdout}
269
269
 
270
- Error:
270
+ Error:
271
271
 
272
- #{stderr}
273
- EOH
272
+ #{stderr}
273
+ EOH
274
274
  end
275
275
  end
276
276
 
@@ -289,15 +289,15 @@ EOH
289
289
 
290
290
  timeout = cmd.timeout.to_s.reverse.gsub(/...(?=.)/, '\&,').reverse
291
291
 
292
- super <<-EOH
293
- The following shell command timed out at #{timeout} seconds:
292
+ super <<~EOH
293
+ The following shell command timed out at #{timeout} seconds:
294
294
 
295
- $ #{command_with_env}
295
+ $ #{command_with_env}
296
296
 
297
- Please increase the `:timeout' value or run the command manually to make sure it
298
- is completing successfully. Sometimes it is common for a command to wait for
299
- user input.
300
- EOH
297
+ Please increase the `:timeout' value or run the command manually to make sure it
298
+ is completing successfully. Sometimes it is common for a command to wait for
299
+ user input.
300
+ EOH
301
301
  end
302
302
  end
303
303
 
@@ -306,27 +306,27 @@ EOH
306
306
  name = project.name
307
307
  culprit = project.culprit.name
308
308
 
309
- super <<-EOH
310
- The project `#{name}' was already marked as dirty by `#{culprit}'. You cannot
311
- mark a project as dirty twice. This is probably a bug in Omnibus and should be
312
- reported.
313
- EOH
309
+ super <<~EOH
310
+ The project `#{name}' was already marked as dirty by `#{culprit}'. You cannot
311
+ mark a project as dirty twice. This is probably a bug in Omnibus and should be
312
+ reported.
313
+ EOH
314
314
  end
315
315
  end
316
316
 
317
317
  class UnresolvableGitReference < Error
318
318
  def initialize(ref)
319
- super <<-EOH
320
- Could not resolve `#{ref}' to a valid git SHA-1.
321
- EOH
319
+ super <<~EOH
320
+ Could not resolve `#{ref}' to a valid git SHA-1.
321
+ EOH
322
322
  end
323
323
  end
324
324
 
325
325
  class InvalidVersion < Error
326
326
  def initialize(version)
327
- super <<-EOF
328
- '#{version}' could not be parsed as a valid version.
329
- EOF
327
+ super <<~EOF
328
+ '#{version}' could not be parsed as a valid version.
329
+ EOF
330
330
  end
331
331
  end
332
332
 
@@ -342,13 +342,13 @@ EOF
342
342
  end
343
343
 
344
344
  def to_s
345
- <<-EOH
346
- Encountered error(s) with project's licensing information.
347
- Failing the build because :fatal_licensing_warnings is set in the configuration.
348
- Error(s):
345
+ <<~EOH
346
+ Encountered error(s) with project's licensing information.
347
+ Failing the build because :fatal_licensing_warnings is set in the configuration.
348
+ Error(s):
349
349
 
350
- #{@errors.join("\n ")}
351
- EOH
350
+ #{@errors.join("\n ")}
351
+ EOH
352
352
  end
353
353
  end
354
354
  end