omnibus 5.5.0 → 5.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/.github/PULL_REQUEST_TEMPLATE.md +11 -0
  3. data/.travis.yml +2 -1
  4. data/CHANGELOG.md +37 -0
  5. data/Gemfile +5 -4
  6. data/MAINTAINERS.md +12 -17
  7. data/README.md +98 -107
  8. data/appveyor.yml +1 -1
  9. data/lib/omnibus.rb +4 -4
  10. data/lib/omnibus/builder.rb +42 -9
  11. data/lib/omnibus/cli.rb +5 -0
  12. data/lib/omnibus/cli/base.rb +1 -1
  13. data/lib/omnibus/cli/publish.rb +5 -3
  14. data/lib/omnibus/compressors/dmg.rb +2 -2
  15. data/lib/omnibus/config.rb +42 -5
  16. data/lib/omnibus/core_extensions/open_uri.rb +1 -0
  17. data/lib/omnibus/download_helpers.rb +4 -4
  18. data/lib/omnibus/fetchers/git_fetcher.rb +15 -5
  19. data/lib/omnibus/fetchers/net_fetcher.rb +1 -1
  20. data/lib/omnibus/fetchers/path_fetcher.rb +1 -1
  21. data/lib/omnibus/file_syncer.rb +2 -2
  22. data/lib/omnibus/generator_files/omnibus.rb.erb +1 -0
  23. data/lib/omnibus/git_cache.rb +31 -13
  24. data/lib/omnibus/health_check.rb +1 -173
  25. data/lib/omnibus/licensing.rb +48 -7
  26. data/lib/omnibus/manifest.rb +3 -5
  27. data/lib/omnibus/manifest_entry.rb +1 -1
  28. data/lib/omnibus/metadata.rb +2 -1
  29. data/lib/omnibus/packager.rb +3 -1
  30. data/lib/omnibus/packagers/appx.rb +3 -3
  31. data/lib/omnibus/packagers/base.rb +9 -0
  32. data/lib/omnibus/packagers/bff.rb +4 -6
  33. data/lib/omnibus/packagers/deb.rb +95 -1
  34. data/lib/omnibus/packagers/ips.rb +50 -4
  35. data/lib/omnibus/packagers/pkgsrc.rb +112 -0
  36. data/lib/omnibus/packagers/rpm.rb +72 -3
  37. data/lib/omnibus/packagers/solaris.rb +0 -4
  38. data/lib/omnibus/packagers/windows_base.rb +1 -1
  39. data/lib/omnibus/project.rb +13 -3
  40. data/lib/omnibus/publishers/artifactory_publisher.rb +4 -6
  41. data/lib/omnibus/publishers/s3_publisher.rb +8 -3
  42. data/lib/omnibus/reports.rb +1 -1
  43. data/lib/omnibus/s3_cache.rb +18 -5
  44. data/lib/omnibus/s3_helpers.rb +45 -8
  45. data/lib/omnibus/software.rb +55 -37
  46. data/lib/omnibus/sugarable.rb +4 -0
  47. data/lib/omnibus/templating.rb +29 -13
  48. data/lib/omnibus/util.rb +81 -2
  49. data/lib/omnibus/version.rb +1 -1
  50. data/lib/omnibus/whitelist.rb +228 -0
  51. data/omnibus.gemspec +9 -8
  52. data/resources/dmg/create_dmg.osascript.erb +33 -13
  53. data/resources/ips/doc-transform.erb +2 -0
  54. data/resources/rpm/spec.erb +1 -2
  55. data/spec/functional/builder_spec.rb +21 -21
  56. data/spec/functional/fetchers/git_fetcher_spec.rb +6 -6
  57. data/spec/functional/fetchers/net_fetcher_spec.rb +7 -7
  58. data/spec/functional/fetchers/path_fetcher_spec.rb +5 -5
  59. data/spec/functional/file_syncer_spec.rb +6 -6
  60. data/spec/functional/licensing_spec.rb +29 -16
  61. data/spec/functional/templating_spec.rb +23 -22
  62. data/spec/support/git_helpers.rb +30 -24
  63. data/spec/unit/build_version_spec.rb +1 -1
  64. data/spec/unit/builder_spec.rb +36 -24
  65. data/spec/unit/changelogprinter_spec.rb +10 -8
  66. data/spec/unit/cleanroom_spec.rb +6 -6
  67. data/spec/unit/compressors/dmg_spec.rb +23 -37
  68. data/spec/unit/compressors/null_spec.rb +2 -2
  69. data/spec/unit/compressors/tgz_spec.rb +2 -2
  70. data/spec/unit/config_spec.rb +2 -1
  71. data/spec/unit/digestable_spec.rb +2 -2
  72. data/spec/unit/fetchers/git_fetcher_spec.rb +5 -5
  73. data/spec/unit/fetchers/net_fetcher_spec.rb +46 -6
  74. data/spec/unit/fetchers/path_fetcher_spec.rb +5 -5
  75. data/spec/unit/file_syncer_spec.rb +19 -0
  76. data/spec/unit/git_cache_spec.rb +76 -22
  77. data/spec/unit/health_check_spec.rb +1 -1
  78. data/spec/unit/library_spec.rb +2 -2
  79. data/spec/unit/manifest_spec.rb +6 -6
  80. data/spec/unit/metadata_spec.rb +4 -4
  81. data/spec/unit/omnibus_spec.rb +4 -4
  82. data/spec/unit/package_spec.rb +6 -6
  83. data/spec/unit/packagers/appx_spec.rb +16 -12
  84. data/spec/unit/packagers/base_spec.rb +5 -5
  85. data/spec/unit/packagers/bff_spec.rb +45 -15
  86. data/spec/unit/packagers/deb_spec.rb +95 -17
  87. data/spec/unit/packagers/ips_spec.rb +61 -17
  88. data/spec/unit/packagers/makeself_spec.rb +5 -5
  89. data/spec/unit/packagers/msi_spec.rb +43 -43
  90. data/spec/unit/packagers/pkg_spec.rb +15 -15
  91. data/spec/unit/packagers/pkgsrc_spec.rb +77 -0
  92. data/spec/unit/packagers/rpm_spec.rb +94 -17
  93. data/spec/unit/packagers/solaris_spec.rb +11 -11
  94. data/spec/unit/project_spec.rb +53 -22
  95. data/spec/unit/publisher_spec.rb +2 -2
  96. data/spec/unit/publishers/artifactory_publisher_spec.rb +7 -3
  97. data/spec/unit/publishers/s3_publisher_spec.rb +1 -1
  98. data/spec/unit/s3_helpers_spec.rb +41 -3
  99. data/spec/unit/software_spec.rb +115 -37
  100. data/spec/unit/sugarable_spec.rb +23 -3
  101. data/spec/unit/util_spec.rb +42 -11
  102. metadata +49 -29
@@ -40,31 +40,31 @@ module Omnibus
40
40
  end
41
41
  end
42
42
 
43
- describe '#id' do
43
+ describe "#id" do
44
44
  it "is :pkg" do
45
45
  expect(subject.id).to eq(:pkg)
46
46
  end
47
47
  end
48
48
 
49
- describe '#package_name' do
49
+ describe "#package_name" do
50
50
  it "includes the name, version, and build iteration" do
51
51
  expect(subject.package_name).to eq("project-full-name-1.2.3-2.pkg")
52
52
  end
53
53
  end
54
54
 
55
- describe '#resources_dir' do
55
+ describe "#resources_dir" do
56
56
  it "is nested inside the staging_dir" do
57
57
  expect(subject.resources_dir).to eq("#{staging_dir}/Resources")
58
58
  end
59
59
  end
60
60
 
61
- describe '#scripts_dir' do
61
+ describe "#scripts_dir" do
62
62
  it "is nested inside the staging_dir" do
63
63
  expect(subject.scripts_dir).to eq("#{staging_dir}/Scripts")
64
64
  end
65
65
  end
66
66
 
67
- describe '#write_scripts' do
67
+ describe "#write_scripts" do
68
68
  context "when scripts are given" do
69
69
  let(:scripts) { %w{ preinstall postinstall } }
70
70
  before do
@@ -109,7 +109,7 @@ module Omnibus
109
109
  end
110
110
  end
111
111
 
112
- describe '#build_component_pkg' do
112
+ describe "#build_component_pkg" do
113
113
  it "executes the pkgbuild command" do
114
114
  expect(subject).to receive(:shellout!).with <<-EOH.gsub(/^ {10}/, "")
115
115
  pkgbuild \\
@@ -125,7 +125,7 @@ module Omnibus
125
125
  end
126
126
  end
127
127
 
128
- describe '#write_distribution_file' do
128
+ describe "#write_distribution_file" do
129
129
  it "generates the file" do
130
130
  subject.write_distribution_file
131
131
  expect("#{staging_dir}/Distribution").to be_a_file
@@ -141,7 +141,7 @@ module Omnibus
141
141
  end
142
142
  end
143
143
 
144
- describe '#build_product_pkg' do
144
+ describe "#build_product_pkg" do
145
145
  context "when pkg signing is disabled" do
146
146
  it "generates the distribution and runs productbuild" do
147
147
  expect(subject).to receive(:shellout!).with <<-EOH.gsub(/^ {12}/, "")
@@ -175,7 +175,7 @@ module Omnibus
175
175
  context "when the identifier isn't specified by the project" do
176
176
  before do
177
177
  subject.identifier(nil)
178
- project.name('$Project#')
178
+ project.name("$Project#")
179
179
  end
180
180
 
181
181
  it "uses com.example.PROJECT_NAME as the identifier" do
@@ -184,13 +184,13 @@ module Omnibus
184
184
  end
185
185
  end
186
186
 
187
- describe '#component_pkg' do
187
+ describe "#component_pkg" do
188
188
  it "returns the project name with -core.pkg" do
189
189
  expect(subject.component_pkg).to eq("project-full-name-core.pkg")
190
190
  end
191
191
  end
192
192
 
193
- describe '#safe_base_package_name' do
193
+ describe "#safe_base_package_name" do
194
194
  context 'when the project name is "safe"' do
195
195
  it "returns the value without logging a message" do
196
196
  expect(subject.safe_base_package_name).to eq("project-full-name")
@@ -211,8 +211,8 @@ module Omnibus
211
211
  end
212
212
  end
213
213
 
214
- describe '#safe_identifier' do
215
- context 'when Project#identifier is given' do
214
+ describe "#safe_identifier" do
215
+ context "when Project#identifier is given" do
216
216
  before { subject.identifier("com.apple.project") }
217
217
 
218
218
  it "is used" do
@@ -241,13 +241,13 @@ module Omnibus
241
241
  end
242
242
  end
243
243
 
244
- describe '#safe_build_iteration' do
244
+ describe "#safe_build_iteration" do
245
245
  it "returns the build iternation" do
246
246
  expect(subject.safe_build_iteration).to eq(project.build_iteration)
247
247
  end
248
248
  end
249
249
 
250
- describe '#safe_version' do
250
+ describe "#safe_version" do
251
251
  context 'when the project build_version is "safe"' do
252
252
  it "returns the value without logging a message" do
253
253
  expect(subject.safe_version).to eq("1.2.3")
@@ -0,0 +1,77 @@
1
+ require "spec_helper"
2
+
3
+ module Omnibus
4
+ describe Packager::PKGSRC do
5
+ let(:project) do
6
+ Project.new.tap do |project|
7
+ project.name("project")
8
+ project.homepage("https://example.com")
9
+ project.install_dir("/opt/project")
10
+ project.build_version("1.2.3")
11
+ project.build_iteration("1")
12
+ project.maintainer("Chef Software")
13
+ end
14
+ end
15
+
16
+ subject { described_class.new(project) }
17
+
18
+ let(:project_root) { File.join(tmp_path, "project/root") }
19
+ let(:package_dir) { File.join(tmp_path, "package/dir") }
20
+ let(:staging_dir) { File.join(tmp_path, "staging/dir") }
21
+ let(:architecture) { "86_64" }
22
+
23
+ before do
24
+ # This is here to allow this unit test to run on windows.
25
+ allow(File).to receive(:expand_path).and_wrap_original do |m, *args|
26
+ m.call(*args).sub(/^[A-Za-z]:/, "")
27
+ end
28
+ Config.project_root(project_root)
29
+ Config.package_dir(package_dir)
30
+
31
+ allow(subject).to receive(:staging_dir).and_return(staging_dir)
32
+ create_directory(staging_dir)
33
+
34
+ stub_ohai(platform: "smartos", version: "5.11") do |data|
35
+ data["kernel"]["update"] = architecture
36
+ end
37
+ end
38
+
39
+ describe "#id" do
40
+ it "is :pkgsrc" do
41
+ expect(subject.id).to eq(:pkgsrc)
42
+ end
43
+ end
44
+
45
+ describe "#package_name" do
46
+ it "includes the name and version" do
47
+ expect(subject.package_name).to eq("project-1.2.3.tgz")
48
+ end
49
+ end
50
+
51
+ describe "#write_buildver" do
52
+ it "writes the build version data" do
53
+ subject.write_buildver
54
+ contents = File.read("#{staging_dir}/build-ver")
55
+ expect(contents).to eq("1.2.3-1")
56
+ end
57
+ end
58
+
59
+ describe "#write_buildinfo" do
60
+ it "writes the build metaddata" do
61
+ subject.write_buildinfo
62
+ contents = File.read("#{staging_dir}/build-info")
63
+ expect(contents).to match(/OS_VERSION=5.11/)
64
+ expect(contents).to match(/MACHINE_ARCH=x86_64/)
65
+ end
66
+ end
67
+
68
+ describe "#write_packlist" do
69
+ it "it writes the list of files" do
70
+ expect(subject).to receive(:shellout!)
71
+ .with "cd #{project.install_dir} && find . -type l -or -type f | sort >> #{staging_dir}/packlist"
72
+ subject.write_packlist
73
+ expect(File.read("#{staging_dir}/packlist")).to match(/@pkgdir \/opt\/project/)
74
+ end
75
+ end
76
+ end
77
+ end
@@ -40,7 +40,7 @@ module Omnibus
40
40
  end
41
41
  end
42
42
 
43
- describe '#signing_passphrase' do
43
+ describe "#signing_passphrase" do
44
44
  it "is a DSL method" do
45
45
  expect(subject).to have_exposed_method(:signing_passphrase)
46
46
  end
@@ -50,7 +50,7 @@ module Omnibus
50
50
  end
51
51
  end
52
52
 
53
- describe '#vendor' do
53
+ describe "#vendor" do
54
54
  it "is a DSL method" do
55
55
  expect(subject).to have_exposed_method(:vendor)
56
56
  end
@@ -64,7 +64,7 @@ module Omnibus
64
64
  end
65
65
  end
66
66
 
67
- describe '#license' do
67
+ describe "#license" do
68
68
  it "is a DSL method" do
69
69
  expect(subject).to have_exposed_method(:license)
70
70
  end
@@ -86,7 +86,7 @@ module Omnibus
86
86
  end
87
87
  end
88
88
 
89
- describe '#priority' do
89
+ describe "#priority" do
90
90
  it "is a DSL method" do
91
91
  expect(subject).to have_exposed_method(:priority)
92
92
  end
@@ -100,7 +100,7 @@ module Omnibus
100
100
  end
101
101
  end
102
102
 
103
- describe '#category' do
103
+ describe "#category" do
104
104
  it "is a DSL method" do
105
105
  expect(subject).to have_exposed_method(:category)
106
106
  end
@@ -114,7 +114,7 @@ module Omnibus
114
114
  end
115
115
  end
116
116
 
117
- describe '#dist_tag' do
117
+ describe "#dist_tag" do
118
118
  it "is a DSL method" do
119
119
  expect(subject).to have_exposed_method(:dist_tag)
120
120
  end
@@ -124,13 +124,41 @@ module Omnibus
124
124
  end
125
125
  end
126
126
 
127
- describe '#id' do
127
+ describe "#compression_type" do
128
+ it "is a DSL method" do
129
+ expect(subject).to have_exposed_method(:compression_type)
130
+ end
131
+
132
+ it "has a default value" do
133
+ expect(subject.compression_type).to eq(:gzip)
134
+ end
135
+
136
+ it "must be a symbol" do
137
+ expect { subject.compression_type(Object.new) }.to raise_error(InvalidValue)
138
+ end
139
+ end
140
+
141
+ describe "#compression_level" do
142
+ it "is a DSL method" do
143
+ expect(subject).to have_exposed_method(:compression_level)
144
+ end
145
+
146
+ it "has a default value" do
147
+ expect(subject.compression_level).to eq(9)
148
+ end
149
+
150
+ it "must be an integer" do
151
+ expect { subject.compression_level(Object.new) }.to raise_error(InvalidValue)
152
+ end
153
+ end
154
+
155
+ describe "#id" do
128
156
  it "is :rpm" do
129
157
  expect(subject.id).to eq(:rpm)
130
158
  end
131
159
  end
132
160
 
133
- describe '#package_name' do
161
+ describe "#package_name" do
134
162
  context "when dist_tag is enabled" do
135
163
  before do
136
164
  allow(subject).to receive(:safe_architecture).and_return("x86_64")
@@ -152,13 +180,13 @@ module Omnibus
152
180
  end
153
181
  end
154
182
 
155
- describe '#build_dir' do
183
+ describe "#build_dir" do
156
184
  it "is nested inside the staging_dir" do
157
185
  expect(subject.build_dir).to eq("#{staging_dir}/BUILD")
158
186
  end
159
187
  end
160
188
 
161
- describe '#write_rpm_spec' do
189
+ describe "#write_rpm_spec" do
162
190
  before do
163
191
  allow(subject).to receive(:safe_architecture).and_return("x86_64")
164
192
  end
@@ -187,6 +215,55 @@ module Omnibus
187
215
  expect(contents).to include("URL: https://example.com")
188
216
  expect(contents).to include("Packager: Chef Software")
189
217
  expect(contents).to include("Obsoletes: old-project")
218
+ expect(contents).to include("_binary_payload w9.gzdio")
219
+ end
220
+
221
+ context "when RPM compression type xz is configured" do
222
+ before do
223
+ subject.compression_type(:xz)
224
+ end
225
+
226
+ it "has the correct binary_payload line" do
227
+ subject.write_rpm_spec
228
+ contents = File.read(spec_file)
229
+ expect(contents).to include("_binary_payload w9.xzdio")
230
+ end
231
+
232
+ context "when RPM compression level is also configured" do
233
+ before do
234
+ subject.compression_level(6)
235
+ end
236
+
237
+ it "has the correct binary_payload line" do
238
+ subject.write_rpm_spec
239
+ contents = File.read(spec_file)
240
+ expect(contents).to include("_binary_payload w6.xzdio")
241
+ end
242
+ end
243
+ end
244
+
245
+ context "when RPM compression type bzip2 is configured" do
246
+ before do
247
+ subject.compression_type(:bzip2)
248
+ end
249
+
250
+ it "has the correct binary_payload line" do
251
+ subject.write_rpm_spec
252
+ contents = File.read(spec_file)
253
+ expect(contents).to include("_binary_payload w9.bzdio")
254
+ end
255
+
256
+ context "when RPM compression level is also configured" do
257
+ before do
258
+ subject.compression_level(6)
259
+ end
260
+
261
+ it "has the correct binary_payload line" do
262
+ subject.write_rpm_spec
263
+ contents = File.read(spec_file)
264
+ expect(contents).to include("_binary_payload w6.bzdio")
265
+ end
266
+ end
190
267
  end
191
268
 
192
269
  context "when scripts are given" do
@@ -301,7 +378,7 @@ module Omnibus
301
378
  end
302
379
  end
303
380
 
304
- describe '#create_rpm_file' do
381
+ describe "#create_rpm_file" do
305
382
  before do
306
383
  allow(subject).to receive(:shellout!)
307
384
  allow(Dir).to receive(:chdir) { |_, &b| b.call }
@@ -332,7 +409,7 @@ module Omnibus
332
409
  end
333
410
  end
334
411
 
335
- describe '#spec_file' do
412
+ describe "#spec_file" do
336
413
  before do
337
414
  allow(subject).to receive(:package_name).and_return("package_name")
338
415
  end
@@ -342,7 +419,7 @@ module Omnibus
342
419
  end
343
420
  end
344
421
 
345
- describe '#rpm_safe' do
422
+ describe "#rpm_safe" do
346
423
  it "adds quotes when required" do
347
424
  expect(subject.rpm_safe("file path")).to eq('"file path"')
348
425
  end
@@ -364,7 +441,7 @@ module Omnibus
364
441
  end
365
442
  end
366
443
 
367
- describe '#safe_base_package_name' do
444
+ describe "#safe_base_package_name" do
368
445
  context 'when the project name is "safe"' do
369
446
  it "returns the value without logging a message" do
370
447
  expect(subject.safe_base_package_name).to eq("project")
@@ -385,13 +462,13 @@ module Omnibus
385
462
  end
386
463
  end
387
464
 
388
- describe '#safe_build_iteration' do
465
+ describe "#safe_build_iteration" do
389
466
  it "returns the build iternation" do
390
467
  expect(subject.safe_build_iteration).to eq(project.build_iteration)
391
468
  end
392
469
  end
393
470
 
394
- describe '#safe_version' do
471
+ describe "#safe_version" do
395
472
  context 'when the project build_version is "safe"' do
396
473
  it "returns the value without logging a message" do
397
474
  expect(subject.safe_version).to eq("1.2.3")
@@ -454,7 +531,7 @@ module Omnibus
454
531
  end
455
532
  end
456
533
 
457
- describe '#safe_architecture' do
534
+ describe "#safe_architecture" do
458
535
  before do
459
536
  stub_ohai(platform: "redhat", version: "6.5") do |data|
460
537
  data["kernel"]["machine"] = "i386"
@@ -36,37 +36,37 @@ module Omnibus
36
36
  end
37
37
  end
38
38
 
39
- describe '#id' do
39
+ describe "#id" do
40
40
  it "is :solaris" do
41
41
  expect(subject.id).to eq(:solaris)
42
42
  end
43
43
  end
44
44
 
45
- describe '#package_name' do
45
+ describe "#package_name" do
46
46
  it "includes the name, version, iteration and architecture" do
47
47
  expect(subject.package_name).to eq("project-1.2.3-1.i386.solaris")
48
48
  end
49
49
  end
50
50
 
51
- describe '#pkgmk_version' do
51
+ describe "#pkgmk_version" do
52
52
  it "includes the version and iteration" do
53
53
  expect(subject.pkgmk_version).to eq("1.2.3-1")
54
54
  end
55
55
  end
56
56
 
57
- describe '#install_dirname' do
57
+ describe "#install_dirname" do
58
58
  it "returns the parent directory" do
59
59
  expect(subject.install_dirname).to eq("/opt")
60
60
  end
61
61
  end
62
62
 
63
- describe '#install_basename' do
63
+ describe "#install_basename" do
64
64
  it "name of the install directory" do
65
65
  expect(subject.install_basename).to eq("project")
66
66
  end
67
67
  end
68
68
 
69
- describe '#write_scripts' do
69
+ describe "#write_scripts" do
70
70
  context "when scripts are given" do
71
71
  let(:scripts) { %w{ postinstall postremove } }
72
72
  before do
@@ -111,7 +111,7 @@ module Omnibus
111
111
  end
112
112
  end
113
113
 
114
- describe '#write_prototype_file' do
114
+ describe "#write_prototype_file" do
115
115
  let(:prototype_file) { File.join(staging_dir, "Prototype") }
116
116
 
117
117
  before do
@@ -155,7 +155,7 @@ module Omnibus
155
155
  end
156
156
  end
157
157
 
158
- describe '#create_solaris_file' do
158
+ describe "#create_solaris_file" do
159
159
  it "uses the correct commands" do
160
160
  expect(subject).to receive(:shellout!)
161
161
  .with("pkgmk -o -r /opt -d #{staging_dir} -f #{File.join(staging_dir, 'Prototype')}")
@@ -168,7 +168,7 @@ module Omnibus
168
168
  end
169
169
  end
170
170
 
171
- describe '#write_pkginfo_file' do
171
+ describe "#write_pkginfo_file" do
172
172
  let(:pkginfo_file) { File.join(staging_dir, "pkginfo") }
173
173
  let(:hostname) { Socket.gethostname }
174
174
  let(:now) { Time.now }
@@ -199,7 +199,7 @@ module Omnibus
199
199
  end
200
200
  end
201
201
 
202
- describe '#create_solaris_file' do
202
+ describe "#create_solaris_file" do
203
203
  before do
204
204
  allow(subject).to receive(:shellout!)
205
205
  allow(Dir).to receive(:chdir) { |_, &b| b.call }
@@ -217,7 +217,7 @@ module Omnibus
217
217
  end
218
218
  end
219
219
 
220
- describe '#safe_architecture' do
220
+ describe "#safe_architecture" do
221
221
  context "the architecture is Intel-based" do
222
222
  let(:architecture) { "i86pc" }
223
223