omnibus 6.0.30 → 6.1.4
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 +8 -0
- data/lib/omnibus/cli.rb +1 -1
- data/lib/omnibus/cli/publish.rb +5 -5
- data/lib/omnibus/compressors/dmg.rb +42 -3
- data/lib/omnibus/file_syncer.rb +2 -2
- data/lib/omnibus/publisher.rb +12 -10
- data/lib/omnibus/version.rb +1 -1
- data/omnibus.gemspec +2 -2
- data/spec/functional/file_syncer_spec.rb +42 -0
- data/spec/unit/compressors/dmg_spec.rb +43 -4
- data/spec/unit/publisher_spec.rb +7 -7
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5094211ab9d21742c4b0df1f711cd73b8f7ac9c275886fa4411a7ac8683fb287
|
4
|
+
data.tar.gz: 370b50282eb2a4d9ab9cfae046dce0856957e3ee672f7138df19f4e52e59b0f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 763997a408440c9194de3596088d6936d9c86a4ffdc67506058d82518580d4dcd25d314885fa592472dbc3796ff958ddbae957e9708456e8c0c138422ac726f7
|
7
|
+
data.tar.gz: ad013568c56d30105bdac1715fff11632e24ef91542ab8658e5f6fd0d710b5fc6ddd734210cf8e0e8927d579bd2441cdc55fcc6c387ec921acb8914b87ce192a
|
data/README.md
CHANGED
@@ -4,6 +4,14 @@
|
|
4
4
|
[](https://buildkite.com/chef-oss/chef-omnibus-master-verify)
|
5
5
|
[][appveyor]
|
6
6
|
|
7
|
+
**Umbrella Project**: [Chef Foundation](https://github.com/chef/chef-oss-practices/blob/master/projects/chef-foundation.md)
|
8
|
+
|
9
|
+
**Project State**: [Active](https://github.com/chef/chef-oss-practices/blob/master/repo-management/repo-states.md#active)
|
10
|
+
|
11
|
+
**Issues [Response Time Maximum](https://github.com/chef/chef-oss-practices/blob/master/repo-management/repo-states.md)**: 14 days
|
12
|
+
|
13
|
+
**Pull Request [Response Time Maximum](https://github.com/chef/chef-oss-practices/blob/master/repo-management/repo-states.md)**: 14 days
|
14
|
+
|
7
15
|
Easily create full-stack installers for your project across a variety of platforms.
|
8
16
|
|
9
17
|
Seth Chisamore and Christopher Maier of CHEF gave an introductory talk on Omnibus at ChefConf 2013, entitled **Eat the Whole Bowl: Building a Full-Stack Installer with Omnibus**:
|
data/lib/omnibus/cli.rb
CHANGED
@@ -91,7 +91,7 @@ module Omnibus
|
|
91
91
|
if @options[:output_manifest]
|
92
92
|
FileUtils.mkdir_p("pkg")
|
93
93
|
File.open(::File.join("pkg", "version-manifest.json"), "w") do |f|
|
94
|
-
f.write(FFI_Yajl::Encoder.encode(project.built_manifest.to_hash))
|
94
|
+
f.write(FFI_Yajl::Encoder.encode(project.built_manifest.to_hash, pretty: true))
|
95
95
|
end
|
96
96
|
end
|
97
97
|
end
|
data/lib/omnibus/cli/publish.rb
CHANGED
@@ -26,10 +26,10 @@ module Omnibus
|
|
26
26
|
#
|
27
27
|
# @example JSON
|
28
28
|
# {
|
29
|
-
# "ubuntu-10.04": [
|
30
|
-
# "ubuntu-10.04",
|
31
|
-
# "ubuntu-12.04",
|
32
|
-
# "ubuntu-14.04"
|
29
|
+
# "ubuntu-10.04-x86_64": [
|
30
|
+
# "ubuntu-10.04-x86_64",
|
31
|
+
# "ubuntu-12.04-x86_64",
|
32
|
+
# "ubuntu-14.04-x86_64"
|
33
33
|
# ]
|
34
34
|
# }
|
35
35
|
#
|
@@ -99,7 +99,7 @@ module Omnibus
|
|
99
99
|
end
|
100
100
|
|
101
101
|
klass.publish(pattern, options) do |package|
|
102
|
-
say("Published '#{package.name}' for #{package.metadata[:platform]}-#{package.metadata[:platform_version]}", :green)
|
102
|
+
say("Published '#{package.name}' for #{package.metadata[:platform]}-#{package.metadata[:platform_version]}-#{package.metadata[:arch]}", :green)
|
103
103
|
end
|
104
104
|
end
|
105
105
|
end
|
@@ -43,6 +43,8 @@ module Omnibus
|
|
43
43
|
prettify_dmg
|
44
44
|
compress_dmg
|
45
45
|
set_dmg_icon
|
46
|
+
verify_dmg
|
47
|
+
remove_writable_dmg
|
46
48
|
end
|
47
49
|
|
48
50
|
#
|
@@ -143,7 +145,8 @@ module Omnibus
|
|
143
145
|
-fs HFS+ \\
|
144
146
|
-fsargs "-c c=64,a=16,e=16" \\
|
145
147
|
-size 512000k \\
|
146
|
-
"#{writable_dmg}"
|
148
|
+
"#{writable_dmg}" \\
|
149
|
+
-puppetstrings
|
147
150
|
EOH
|
148
151
|
end
|
149
152
|
|
@@ -159,6 +162,7 @@ module Omnibus
|
|
159
162
|
|
160
163
|
cmd = shellout! <<-EOH.gsub(/^ {10}/, "")
|
161
164
|
hdiutil attach \\
|
165
|
+
-puppetstrings \\
|
162
166
|
-readwrite \\
|
163
167
|
-noverify \\
|
164
168
|
-noautoopen \\
|
@@ -254,13 +258,48 @@ module Omnibus
|
|
254
258
|
shellout! <<-EOH.gsub(/^ {10}/, "")
|
255
259
|
chmod -Rf go-w "/Volumes/#{volume_name}"
|
256
260
|
sync
|
257
|
-
hdiutil
|
261
|
+
hdiutil unmount "#{@device}"
|
262
|
+
# Give some time to the system so unmount dmg
|
263
|
+
sleep 5
|
264
|
+
hdiutil detach "#{@device}" && \
|
258
265
|
hdiutil convert \\
|
259
266
|
"#{writable_dmg}" \\
|
260
267
|
-format UDZO \\
|
261
268
|
-imagekey \\
|
262
269
|
zlib-level=9 \\
|
263
|
-
-o "#{package_path}"
|
270
|
+
-o "#{package_path}" \\
|
271
|
+
-puppetstrings
|
272
|
+
EOH
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
276
|
+
#
|
277
|
+
# Verify checksum on created dmg.
|
278
|
+
#
|
279
|
+
# @return [void]
|
280
|
+
#
|
281
|
+
def verify_dmg
|
282
|
+
log.info(log_key) { "Verifying dmg" }
|
283
|
+
|
284
|
+
Dir.chdir(staging_dir) do
|
285
|
+
shellout! <<-EOH.gsub(/^ {10}/, "")
|
286
|
+
hdiutil verify \\
|
287
|
+
"#{package_path}" \\
|
288
|
+
-puppetstrings
|
289
|
+
EOH
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
#
|
294
|
+
# Remove writable dmg.
|
295
|
+
#
|
296
|
+
# @return [void]
|
297
|
+
#
|
298
|
+
def remove_writable_dmg
|
299
|
+
log.info(log_key) { "Removing writable dmg" }
|
300
|
+
|
301
|
+
Dir.chdir(staging_dir) do
|
302
|
+
shellout! <<-EOH.gsub(/^ {10}/, "")
|
264
303
|
rm -rf "#{writable_dmg}"
|
265
304
|
EOH
|
266
305
|
end
|
data/lib/omnibus/file_syncer.rb
CHANGED
@@ -56,13 +56,13 @@ module Omnibus
|
|
56
56
|
#
|
57
57
|
def all_files_under(source, options = {})
|
58
58
|
excludes = Array(options[:exclude]).map do |exclude|
|
59
|
-
[exclude, "#{exclude}
|
59
|
+
[exclude, "#{exclude}/**"]
|
60
60
|
end.flatten
|
61
61
|
|
62
62
|
source_files = glob(File.join(source, "**/*"))
|
63
63
|
source_files = source_files.reject do |source_file|
|
64
64
|
basename = relative_path_for(source_file, source)
|
65
|
-
excludes.any? { |exclude| File.fnmatch?(exclude, basename, File::FNM_DOTMATCH) }
|
65
|
+
excludes.any? { |exclude| File.fnmatch?(exclude, basename, File::FNM_DOTMATCH | File::FNM_PATHNAME) }
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
data/lib/omnibus/publisher.rb
CHANGED
@@ -44,10 +44,10 @@ module Omnibus
|
|
44
44
|
# mapping of build to publish platform(s)
|
45
45
|
# @example
|
46
46
|
# {
|
47
|
-
# 'ubuntu-10.04' => [
|
48
|
-
# 'ubuntu-10.04',
|
49
|
-
# 'ubuntu-12.04',
|
50
|
-
# 'ubuntu-14.04',
|
47
|
+
# 'ubuntu-10.04-x86_64' => [
|
48
|
+
# 'ubuntu-10.04-x86_64',
|
49
|
+
# 'ubuntu-12.04-x86_64',
|
50
|
+
# 'ubuntu-14.04-x86_64',
|
51
51
|
# ],
|
52
52
|
# }
|
53
53
|
#
|
@@ -75,33 +75,35 @@ module Omnibus
|
|
75
75
|
if @options[:platform_mappings]
|
76
76
|
# the platform map is a simple hash with publish to build platform mappings
|
77
77
|
@options[:platform_mappings].each_pair do |build_platform, publish_platforms|
|
78
|
-
# Splits `ubuntu-12.04` into `ubuntu
|
79
|
-
build_platform, build_platform_version = build_platform.
|
78
|
+
# Splits `ubuntu-12.04-x86_64` into `ubuntu`, `12.04` and `x86_64`
|
79
|
+
build_platform, build_platform_version, build_architecture = build_platform.split("-")
|
80
80
|
|
81
81
|
# locate the package for the build platform
|
82
82
|
packages = build_packages.select do |p|
|
83
83
|
p.metadata[:platform] == build_platform &&
|
84
|
-
p.metadata[:platform_version] == build_platform_version
|
84
|
+
p.metadata[:platform_version] == build_platform_version &&
|
85
|
+
p.metadata[:arch] == build_architecture
|
85
86
|
end
|
86
87
|
|
87
88
|
if packages.empty?
|
88
89
|
log.warn(log_key) do
|
89
|
-
"Could not locate a package for build platform #{build_platform}-#{build_platform_version}. " \
|
90
|
+
"Could not locate a package for build platform #{build_platform}-#{build_platform_version}-#{build_architecture}. " \
|
90
91
|
"Publishing will be skipped for: #{publish_platforms.join(', ')}"
|
91
92
|
end
|
92
93
|
end
|
93
94
|
|
94
95
|
publish_platforms.each do |publish_platform|
|
95
|
-
publish_platform, publish_platform_version = publish_platform.
|
96
|
+
publish_platform, publish_platform_version, publish_architecture = publish_platform.split("-")
|
96
97
|
|
97
98
|
packages.each do |p|
|
98
99
|
# create a copy of our package before mucking with its metadata
|
99
100
|
publish_package = p.dup
|
100
101
|
publish_metadata = p.metadata.dup.to_hash
|
101
102
|
|
102
|
-
# override the platform
|
103
|
+
# override the platform, platform version and architecture in the metadata
|
103
104
|
publish_metadata[:platform] = publish_platform
|
104
105
|
publish_metadata[:platform_version] = publish_platform_version
|
106
|
+
publish_metadata[:arch] = publish_architecture
|
105
107
|
|
106
108
|
# Set the updated metadata on the package object
|
107
109
|
publish_package.metadata = Metadata.new(publish_package, publish_metadata)
|
data/lib/omnibus/version.rb
CHANGED
data/omnibus.gemspec
CHANGED
@@ -22,8 +22,8 @@ Gem::Specification.new do |gem|
|
|
22
22
|
gem.require_paths = ["lib"]
|
23
23
|
|
24
24
|
gem.add_dependency "aws-sdk-s3", "~> 1"
|
25
|
-
gem.add_dependency "chef-sugar",
|
26
|
-
gem.add_dependency "cleanroom",
|
25
|
+
gem.add_dependency "chef-sugar-ng", ">= 3.3"
|
26
|
+
gem.add_dependency "chef-cleanroom", "~> 1.0"
|
27
27
|
gem.add_dependency "ffi-yajl", "~> 2.2"
|
28
28
|
gem.add_dependency "mixlib-shellout", ">= 2.0", "< 4.0"
|
29
29
|
gem.add_dependency "ohai", ">= 13", "< 16"
|
@@ -56,6 +56,14 @@ module Omnibus
|
|
56
56
|
FileUtils.touch(File.join(source, ".dot_folder", "file_f"))
|
57
57
|
|
58
58
|
FileUtils.touch(File.join(source, ".file_g"))
|
59
|
+
|
60
|
+
FileUtils.mkdir_p(File.join(source, "nested", "deep", "folder"))
|
61
|
+
FileUtils.touch(File.join(source, "nested", "deep", "folder", "file_h"))
|
62
|
+
FileUtils.touch(File.join(source, "nested", "deep", "folder", "file_i"))
|
63
|
+
|
64
|
+
FileUtils.mkdir_p(File.join(source, "nested", "deep", "deep", "folder"))
|
65
|
+
FileUtils.touch(File.join(source, "nested", "deep", "deep", "folder", "file_j"))
|
66
|
+
FileUtils.touch(File.join(source, "nested", "deep", "deep", "folder", "file_k"))
|
59
67
|
source
|
60
68
|
end
|
61
69
|
|
@@ -233,6 +241,40 @@ module Omnibus
|
|
233
241
|
expect("#{destination}/.file_g").to be_a_file
|
234
242
|
end
|
235
243
|
|
244
|
+
it "does not copy files and folders that match the wildcard pattern" do
|
245
|
+
described_class.sync(source, destination, exclude: "nested/*/folder")
|
246
|
+
|
247
|
+
expect("#{destination}/file_a").to be_a_file
|
248
|
+
expect("#{destination}/file_b").to be_a_file
|
249
|
+
expect("#{destination}/file_c").to be_a_file
|
250
|
+
expect("#{destination}/folder/file_d").to be_a_file
|
251
|
+
expect("#{destination}/folder/file_e").to be_a_file
|
252
|
+
expect("#{destination}/.dot_folder").to be_a_directory
|
253
|
+
expect("#{destination}/.dot_folder/file_f").to be_a_file
|
254
|
+
expect("#{destination}/.file_g").to be_a_file
|
255
|
+
expect("#{destination}/nested/deep/folder/file_h").to_not be_a_file
|
256
|
+
expect("#{destination}/nested/deep/folder/file_i").to_not be_a_file
|
257
|
+
expect("#{destination}/nested/deep/deep/folder/file_j").to be_a_file
|
258
|
+
expect("#{destination}/nested/deep/deep/folder/file_k").to be_a_file
|
259
|
+
end
|
260
|
+
|
261
|
+
it "does not copy files and folders that match the super wildcard pattern" do
|
262
|
+
described_class.sync(source, destination, exclude: "nested/**/folder")
|
263
|
+
|
264
|
+
expect("#{destination}/file_a").to be_a_file
|
265
|
+
expect("#{destination}/file_b").to be_a_file
|
266
|
+
expect("#{destination}/file_c").to be_a_file
|
267
|
+
expect("#{destination}/folder/file_d").to be_a_file
|
268
|
+
expect("#{destination}/folder/file_e").to be_a_file
|
269
|
+
expect("#{destination}/.dot_folder").to be_a_directory
|
270
|
+
expect("#{destination}/.dot_folder/file_f").to be_a_file
|
271
|
+
expect("#{destination}/.file_g").to be_a_file
|
272
|
+
expect("#{destination}/nested/deep/folder/file_h").to_not be_a_file
|
273
|
+
expect("#{destination}/nested/deep/folder/file_i").to_not be_a_file
|
274
|
+
expect("#{destination}/nested/deep/deep/folder/file_j").to_not be_a_file
|
275
|
+
expect("#{destination}/nested/deep/deep/folder/file_k").to_not be_a_file
|
276
|
+
end
|
277
|
+
|
236
278
|
it "removes existing files and folders in destination" do
|
237
279
|
FileUtils.mkdir_p("#{destination}/existing_folder")
|
238
280
|
FileUtils.touch("#{destination}/existing_file")
|
@@ -90,7 +90,8 @@ module Omnibus
|
|
90
90
|
-fs HFS+ \\
|
91
91
|
-fsargs "-c c=64,a=16,e=16" \\
|
92
92
|
-size 512000k \\
|
93
|
-
"#{staging_dir}/project-writable.dmg"
|
93
|
+
"#{staging_dir}/project-writable.dmg" \\
|
94
|
+
-puppetstrings
|
94
95
|
EOH
|
95
96
|
|
96
97
|
subject.create_writable_dmg
|
@@ -114,6 +115,7 @@ module Omnibus
|
|
114
115
|
expect(subject).to receive(:shellout!)
|
115
116
|
.with <<-EOH.gsub(/^ {12}/, "")
|
116
117
|
hdiutil attach \\
|
118
|
+
-puppetstrings \\
|
117
119
|
-readwrite \\
|
118
120
|
-noverify \\
|
119
121
|
-noautoopen \\
|
@@ -215,20 +217,57 @@ module Omnibus
|
|
215
217
|
.with <<-EOH.gsub(/^ {12}/, "")
|
216
218
|
chmod -Rf go-w "/Volumes/Project One"
|
217
219
|
sync
|
218
|
-
hdiutil
|
220
|
+
hdiutil unmount "#{device}"
|
221
|
+
# Give some time to the system so unmount dmg
|
222
|
+
sleep 5
|
223
|
+
hdiutil detach "#{device}" &&\
|
219
224
|
hdiutil convert \\
|
220
225
|
"#{staging_dir}/project-writable.dmg" \\
|
221
226
|
-format UDZO \\
|
222
227
|
-imagekey \\
|
223
228
|
zlib-level=9 \\
|
224
|
-
-o "#{package_dir}/project-1.2.3-2.dmg"
|
225
|
-
|
229
|
+
-o "#{package_dir}/project-1.2.3-2.dmg" \\
|
230
|
+
-puppetstrings
|
226
231
|
EOH
|
227
232
|
|
228
233
|
subject.compress_dmg
|
229
234
|
end
|
230
235
|
end
|
231
236
|
|
237
|
+
describe "#verify_dmg" do
|
238
|
+
it "logs a message" do
|
239
|
+
output = capture_logging { subject.verify_dmg }
|
240
|
+
expect(output).to include("Verifying dmg")
|
241
|
+
end
|
242
|
+
|
243
|
+
it "runs the command" do
|
244
|
+
expect(subject).to receive(:shellout!)
|
245
|
+
.with <<-EOH.gsub(/^ {12}/, "")
|
246
|
+
hdiutil verify \\
|
247
|
+
"#{package_dir}/project-1.2.3-2.dmg" \\
|
248
|
+
-puppetstrings
|
249
|
+
EOH
|
250
|
+
|
251
|
+
subject.verify_dmg
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
describe "#remove_writable_dmg" do
|
256
|
+
it "logs a message" do
|
257
|
+
output = capture_logging { subject.remove_writable_dmg }
|
258
|
+
expect(output).to include("Removing writable dmg")
|
259
|
+
end
|
260
|
+
|
261
|
+
it "runs the command" do
|
262
|
+
expect(subject).to receive(:shellout!)
|
263
|
+
.with <<-EOH.gsub(/^ {12}/, "")
|
264
|
+
rm -rf "#{staging_dir}/project-writable.dmg"
|
265
|
+
EOH
|
266
|
+
|
267
|
+
subject.remove_writable_dmg
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
232
271
|
describe "#set_dmg_icon" do
|
233
272
|
it "logs a message" do
|
234
273
|
output = capture_logging { subject.set_dmg_icon }
|
data/spec/unit/publisher_spec.rb
CHANGED
@@ -47,9 +47,9 @@ module Omnibus
|
|
47
47
|
let(:options) do
|
48
48
|
{
|
49
49
|
platform_mappings: {
|
50
|
-
"ubuntu-12.04" => [
|
51
|
-
"ubuntu-12.04",
|
52
|
-
"ubuntu-14.04",
|
50
|
+
"ubuntu-12.04-x86_64" => [
|
51
|
+
"ubuntu-12.04-x86_64",
|
52
|
+
"ubuntu-14.04-x86_64",
|
53
53
|
],
|
54
54
|
},
|
55
55
|
}
|
@@ -155,9 +155,9 @@ module Omnibus
|
|
155
155
|
let(:options) do
|
156
156
|
{
|
157
157
|
platform_mappings: {
|
158
|
-
"ubuntu-10.04" => [
|
159
|
-
"ubuntu-12.04",
|
160
|
-
"ubuntu-14.04",
|
158
|
+
"ubuntu-10.04-x86_64" => [
|
159
|
+
"ubuntu-12.04-x86_64",
|
160
|
+
"ubuntu-14.04-x86_64",
|
161
161
|
],
|
162
162
|
},
|
163
163
|
}
|
@@ -165,7 +165,7 @@ module Omnibus
|
|
165
165
|
|
166
166
|
it "prints a warning" do
|
167
167
|
output = capture_logging { subject.packages }
|
168
|
-
expect(output).to include("Could not locate a package for build platform ubuntu-10.04. Publishing will be skipped for: ubuntu-12.04, ubuntu-14.04")
|
168
|
+
expect(output).to include("Could not locate a package for build platform ubuntu-10.04-x86_64. Publishing will be skipped for: ubuntu-12.04-x86_64, ubuntu-14.04-x86_64")
|
169
169
|
end
|
170
170
|
end
|
171
171
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omnibus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chef Software, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-s3
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: chef-sugar
|
28
|
+
name: chef-sugar-ng
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: cleanroom
|
42
|
+
name: chef-cleanroom
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|