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
@@ -22,16 +22,16 @@ module Omnibus
22
22
  include DownloadHelpers
23
23
 
24
24
  # Use 7-zip to extract 7z/zip for Windows
25
- WIN_7Z_EXTENSIONS = %w{.7z .zip}
25
+ WIN_7Z_EXTENSIONS = %w{.7z .zip}.freeze
26
26
 
27
27
  # tar probably has compression scheme linked in, otherwise for tarballs
28
- COMPRESSED_TAR_EXTENSIONS = %w{.tar.gz .tgz tar.bz2 .tar.xz .txz .tar.lzma}
28
+ COMPRESSED_TAR_EXTENSIONS = %w{.tar.gz .tgz tar.bz2 .tar.xz .txz .tar.lzma}.freeze
29
29
  TAR_EXTENSIONS = COMPRESSED_TAR_EXTENSIONS + [".tar"]
30
30
 
31
31
  ALL_EXTENSIONS = WIN_7Z_EXTENSIONS + TAR_EXTENSIONS
32
32
 
33
33
  # Digest types used for verifying file checksums
34
- DIGESTS = [:sha512, :sha256, :sha1, :md5]
34
+ DIGESTS = [:sha512, :sha256, :sha1, :md5].freeze
35
35
 
36
36
  #
37
37
  # A fetch is required if the downloaded_file (such as a tarball) does not
@@ -112,13 +112,15 @@ module Omnibus
112
112
  end
113
113
 
114
114
  #
115
- # The path on disk to the downloaded asset. This method requires the
116
- # presence of a +source_uri+.
115
+ # The path on disk to the downloaded asset. The filename is defined by
116
+ # +source :cached_name+. If ommited, then it comes from the software's
117
+ # +source :url+ value
117
118
  #
118
119
  # @return [String]
119
120
  #
120
121
  def downloaded_file
121
- filename = File.basename(source[:url], "?*")
122
+ filename = source[:cached_name] if source[:cached_name]
123
+ filename ||= File.basename(source[:url], "?*")
122
124
  File.join(Config.cache_dir, filename)
123
125
  end
124
126
 
@@ -0,0 +1,10 @@
1
+ #
2
+ # The .kitchen.local.yml takes preference and is compiled into the top-level
3
+ # .kitchen.yml. Uncomment the following section to use VMWare Fusion instead of
4
+ # the default Vagrant driver of VirtualBox.
5
+ #
6
+
7
+ # driver:
8
+ # provider: vmware_fusion
9
+ # customize:
10
+ # memsize: 4096
@@ -0,0 +1,41 @@
1
+ driver:
2
+ name: vagrant
3
+ forward_agent: yes
4
+ customize:
5
+ cpus: 2
6
+ memory: 2048
7
+ synced_folders:
8
+ - ['.', '/home/vagrant/<%= config[:name] %>']
9
+
10
+ provisioner:
11
+ name: chef_zero
12
+
13
+ platforms:
14
+ - name: centos-6
15
+ run_list: yum-epel::default
16
+ - name: centos-7
17
+ run_list: yum-epel::default
18
+ - name: debian-8
19
+ run_list: apt::default
20
+ - name: debian-9
21
+ run_list: apt::default
22
+ - name: freebsd-10
23
+ run_list: freebsd::portsnap
24
+ - name: freebsd-11
25
+ run_list: freebsd::portsnap
26
+ - name: ubuntu-14.04
27
+ run_list: apt::default
28
+ - name: ubuntu-16.04
29
+ run_list: apt::default
30
+ - name: ubuntu-18.04
31
+ run_list: apt::default
32
+
33
+ suites:
34
+ - name: default
35
+ run_list: omnibus::default
36
+ attributes:
37
+ omnibus:
38
+ build_user: vagrant
39
+ build_user_group: vagrant
40
+ build_user_password: vagrant
41
+ install_dir: /opt/<%= config[:name] %>
@@ -13,9 +13,9 @@ gem 'omnibus', '~> <%= Omnibus::VERSION.split('.')[0...-1].join('.') %>'
13
13
  # by running `bundle install --without development` to speed up build times.
14
14
  group :development do
15
15
  # Use Berkshelf for resolving cookbook dependencies
16
- gem 'berkshelf', '~> 3.3'
16
+ gem 'berkshelf'
17
17
 
18
18
  # Use Test Kitchen with Vagrant for converging the build environment
19
- gem 'test-kitchen', '~> 1.4'
20
- gem 'kitchen-vagrant', '~> 0.18'
19
+ gem 'test-kitchen',
20
+ gem 'kitchen-vagrant',
21
21
  end
@@ -37,7 +37,7 @@ module Omnibus
37
37
  end
38
38
 
39
39
  def git(cmd)
40
- shellout!("git #{cmd}", :cwd => repo_path).stdout
40
+ shellout!("git #{cmd}", cwd: repo_path).stdout
41
41
  end
42
42
  end
43
43
  end
@@ -657,6 +657,7 @@ EOH
657
657
  "AGPL-3.0", # GNU Affero General Public License v3
658
658
  "GPL-2.0", # GNU General Public License version 2.0
659
659
  "GPL-3.0", # GNU General Public License version 3.0
660
+ "LGPL-2.0", # GNU Library or "Lesser" General Public License version 2.0
660
661
  "LGPL-2.1", # GNU Library or "Lesser" General Public License version 2.1
661
662
  "LGPL-3.0", # GNU Library or "Lesser" General Public License version 3.0
662
663
  "HPND", # Historical Permission Notice and Disclaimer
@@ -46,24 +46,24 @@ module Omnibus
46
46
 
47
47
  data = {
48
48
  # Package
49
- basename: package.name,
50
- md5: package.md5,
51
- sha1: package.sha1,
52
- sha256: package.sha256,
53
- sha512: package.sha512,
54
- platform: platform_shortname,
49
+ basename: package.name,
50
+ md5: package.md5,
51
+ sha1: package.sha1,
52
+ sha256: package.sha256,
53
+ sha512: package.sha512,
54
+ platform: platform_shortname,
55
55
  platform_version: platform_version,
56
- arch: arch,
56
+ arch: arch,
57
57
 
58
58
  # Project
59
- name: project.name,
60
- friendly_name: project.friendly_name,
61
- homepage: project.homepage,
62
- version: project.build_version,
63
- iteration: project.build_iteration,
64
- license: project.license,
59
+ name: project.name,
60
+ friendly_name: project.friendly_name,
61
+ homepage: project.homepage,
62
+ version: project.build_version,
63
+ iteration: project.build_iteration,
64
+ license: project.license,
65
65
  version_manifest: project.built_manifest.to_hash,
66
- license_content: File.exist?(project.license_file_path) ? File.read(project.license_file_path) : "",
66
+ license_content: File.exist?(project.license_file_path) ? File.read(project.license_file_path) : "",
67
67
  }
68
68
 
69
69
  instance = new(package, data)
@@ -170,7 +170,7 @@ module Omnibus
170
170
  # rubocop:disable Lint/DuplicateCaseCondition
171
171
  def truncate_platform_version(platform_version, platform)
172
172
  case platform
173
- when "centos", "debian", "el", "fedora", "freebsd", "omnios", "pidora", "raspbian", "rhel", "sles", "suse", "smartos", "nexus", "ios_xr"
173
+ when "centos", "debian", "el", "fedora", "freebsd", "omnios", "pidora", "raspbian", "rhel", "sles", "suse", "smartos"
174
174
  # Only want MAJOR (e.g. Debian 7, OmniOS r151006, SmartOS 20120809T221258Z)
175
175
  platform_version.split(".").first
176
176
  when "aix", "alpine", "mac_os_x", "openbsd", "slackware", "solaris2", "opensuse", "opensuseleap", "ubuntu", "amazon"
@@ -38,17 +38,18 @@ module Omnibus
38
38
  # @return [Hash<String, Class>]
39
39
  #
40
40
  PLATFORM_PACKAGER_MAP = {
41
- "debian" => DEB,
42
- "fedora" => RPM,
43
- "suse" => RPM,
44
- "rhel" => RPM,
45
- "wrlinux" => RPM,
46
- "aix" => BFF,
47
- "solaris" => Solaris,
48
- "ips" => IPS,
49
- "windows" => [MSI, APPX],
41
+ "debian" => DEB,
42
+ "fedora" => RPM,
43
+ "suse" => RPM,
44
+ "rhel" => RPM,
45
+ "wrlinux" => RPM,
46
+ "amazon" => RPM,
47
+ "aix" => BFF,
48
+ "solaris" => Solaris,
49
+ "ips" => IPS,
50
+ "windows" => [MSI, APPX],
50
51
  "mac_os_x" => PKG,
51
- "smartos" => PKGSRC,
52
+ "smartos" => PKGSRC,
52
53
  }.freeze
53
54
 
54
55
  #
@@ -64,10 +64,10 @@ module Omnibus
64
64
  render_template(resource_path("AppxManifest.xml.erb"),
65
65
  destination: "#{windows_safe_path(project.install_dir)}/AppxManifest.xml",
66
66
  variables: {
67
- name: project.package_name,
68
- friendly_name: project.friendly_name,
69
- version: windows_package_version,
70
- maintainer: project.maintainer,
67
+ name: project.package_name,
68
+ friendly_name: project.friendly_name,
69
+ version: windows_package_version,
70
+ maintainer: project.maintainer,
71
71
  certificate_subject: certificate_subject.gsub('"', "&quot;"),
72
72
  }
73
73
  )
@@ -127,6 +127,25 @@ module Omnibus
127
127
  #
128
128
  expose :windows_safe_path
129
129
 
130
+ #
131
+ # Skip this packager during build process
132
+ #
133
+ # @example
134
+ # skip_package true
135
+ #
136
+ # @param [TrueClass, FalseClass] value
137
+ # whether to delay validation or not
138
+ #
139
+ # @return [TrueClass, FalseClass]
140
+ # whether to skip this packager type or not
141
+ def skip_packager(val = false)
142
+ unless val.is_a?(TrueClass) || val.is_a?(FalseClass)
143
+ raise InvalidValue.new(:skip_packager, "be TrueClass or FalseClass")
144
+ end
145
+ @skip_package ||= val
146
+ end
147
+ expose :skip_packager
148
+
130
149
  #
131
150
  # @!endgroup
132
151
  # --------------------------------------------------
@@ -19,12 +19,12 @@ module Omnibus
19
19
  # @return [Hash]
20
20
  SCRIPT_MAP = {
21
21
  # Default Omnibus naming
22
- preinst: "Pre-installation Script",
22
+ preinst: "Pre-installation Script",
23
23
  postinst: "Post-installation Script",
24
- config: "Configuration Script",
24
+ config: "Configuration Script",
25
25
  unconfig: "Unconfiguration Script",
26
- prerm: "Pre_rm Script",
27
- postrm: "Unconfiguration Script",
26
+ prerm: "Pre_rm Script",
27
+ postrm: "Unconfiguration Script",
28
28
  }.freeze
29
29
 
30
30
  id :bff
@@ -144,11 +144,11 @@ module Omnibus
144
144
  alt = path.gsub(/(:|,)/, "__")
145
145
  log.debug(log_key) { "Renaming #{path} to #{alt}" }
146
146
 
147
- File.rename(path, alt) if File.exists?(path)
147
+ File.rename(path, alt) if File.exist?(path)
148
148
 
149
149
  # Create a config script if needed based on resources/bff/config.erb
150
150
  config_script_path = File.join(scripts_staging_dir, "config")
151
- unless File.exists? config_script_path
151
+ unless File.exist? config_script_path
152
152
  render_template(resource_path("config.erb"),
153
153
  destination: "#{scripts_staging_dir}/config",
154
154
  variables: {
@@ -182,13 +182,13 @@ module Omnibus
182
182
  render_template(resource_path("gen.template.erb"),
183
183
  destination: File.join(staging_dir, "gen.template"),
184
184
  variables: {
185
- name: safe_base_package_name,
186
- install_dir: project.install_dir,
187
- friendly_name: project.friendly_name,
188
- version: bff_version,
189
- description: project.description,
190
- files: files,
191
- scripts: scripts,
185
+ name: safe_base_package_name,
186
+ install_dir: project.install_dir,
187
+ friendly_name: project.friendly_name,
188
+ version: bff_version,
189
+ description: project.description,
190
+ files: files,
191
+ scripts: scripts,
192
192
  }
193
193
  )
194
194
 
@@ -305,21 +305,21 @@ module Omnibus
305
305
  render_template(resource_path("control.erb"),
306
306
  destination: File.join(debian_dir, "control"),
307
307
  variables: {
308
- name: safe_base_package_name,
309
- version: safe_version,
310
- iteration: safe_build_iteration,
311
- vendor: vendor,
312
- license: license,
313
- architecture: safe_architecture,
314
- maintainer: project.maintainer,
308
+ name: safe_base_package_name,
309
+ version: safe_version,
310
+ iteration: safe_build_iteration,
311
+ vendor: vendor,
312
+ license: license,
313
+ architecture: safe_architecture,
314
+ maintainer: project.maintainer,
315
315
  installed_size: package_size,
316
- homepage: project.homepage,
317
- description: project.description,
318
- priority: priority,
319
- section: section,
320
- conflicts: project.conflicts,
321
- replaces: project.replaces,
322
- dependencies: project.runtime_dependencies,
316
+ homepage: project.homepage,
317
+ description: project.description,
318
+ priority: priority,
319
+ section: section,
320
+ conflicts: project.conflicts,
321
+ replaces: project.replaces,
322
+ dependencies: project.runtime_dependencies,
323
323
  }
324
324
  )
325
325
  end
@@ -223,16 +223,16 @@ module Omnibus
223
223
  # @return [String]
224
224
  #
225
225
  def symlinks_file
226
- if File.exists?(resource_path("#{safe_base_package_name}-symlinks.erb"))
226
+ if File.exist?(resource_path("#{safe_base_package_name}-symlinks.erb"))
227
227
  "#{safe_base_package_name}-symlinks.erb"
228
- elsif File.exists?(resource_path("symlinks.erb"))
228
+ elsif File.exist?(resource_path("symlinks.erb"))
229
229
  "symlinks.erb"
230
230
  end
231
231
  end
232
232
 
233
233
  #
234
234
  # A set of symbolic links to installed commands that
235
- #`pkgmogrify' will apply to the package manifest. Is called only when
235
+ # `pkgmogrify' will apply to the package manifest. Is called only when
236
236
  # "#{safe_base_package_name}-symlinks.erb" or "symlinks.erb" template resource
237
237
  # exists locally
238
238
  #
@@ -257,11 +257,11 @@ module Omnibus
257
257
  render_template(resource_path("gen.manifestfile.erb"),
258
258
  destination: pkg_metadata_file,
259
259
  variables: {
260
- name: safe_base_package_name,
260
+ name: safe_base_package_name,
261
261
  fmri_package_name: fmri_package_name,
262
- description: project.description,
263
- summary: project.friendly_name,
264
- arch: safe_architecture,
262
+ description: project.description,
263
+ summary: project.friendly_name,
264
+ arch: safe_architecture,
265
265
  }
266
266
  )
267
267
 
@@ -166,6 +166,29 @@ module Omnibus
166
166
  end
167
167
  expose :wix_light_extension
168
168
 
169
+ #
170
+ # Signal delay validation for wix light
171
+ #
172
+ # @example
173
+ # wix_light_deplay_validation true
174
+ #
175
+ # @param [TrueClass, FalseClass] value
176
+ # whether to delay validation or not
177
+ #
178
+ # @return [String]
179
+ # whether we're a bundle or not
180
+ def wix_light_delay_validation(val = false)
181
+ unless val.is_a?(TrueClass) || val.is_a?(FalseClass)
182
+ raise InvalidValue.new(:iwix_light_delay_validation, "be TrueClass or FalseClass")
183
+ end
184
+ @delay_validation ||= val
185
+ unless @delay_validation
186
+ return ""
187
+ end
188
+ "-sval"
189
+ end
190
+ expose :wix_light_delay_validation
191
+
169
192
  #
170
193
  # Set the wix candle extensions to load
171
194
  #
@@ -225,6 +248,29 @@ module Omnibus
225
248
  end
226
249
  expose :fast_msi
227
250
 
251
+ #
252
+ # Set or retrieve the localization. Take a look at
253
+ # this list[https://www.firegiant.com/wix/tutorial/user-interface/do-you-speak-english/]
254
+ # of valid localizations.
255
+ #
256
+ # @example
257
+ # localization 'de-de'
258
+ #
259
+ # @param [String] val
260
+ # the localization to set
261
+ #
262
+ # @return [String]
263
+ # the set localization
264
+ #
265
+ def localization(val = "en-us")
266
+ unless val.is_a?(String)
267
+ raise InvalidValue.new(:localization, "be a String")
268
+ end
269
+
270
+ @localization ||= val
271
+ end
272
+ expose :localization
273
+
228
274
  #
229
275
  # Discovers a path to a gem/file included in a gem under the install directory.
230
276
  #
@@ -288,12 +334,12 @@ module Omnibus
288
334
  # @return [void]
289
335
  #
290
336
  def write_localization_file
291
- render_template(resource_path("localization-en-us.wxl.erb"),
292
- destination: "#{staging_dir}/localization-en-us.wxl",
337
+ render_template(resource_path("localization-#{localization}.wxl.erb"),
338
+ destination: "#{staging_dir}/localization-#{localization}.wxl",
293
339
  variables: {
294
- name: project.package_name,
340
+ name: project.package_name,
295
341
  friendly_name: project.friendly_name,
296
- maintainer: project.maintainer,
342
+ maintainer: project.maintainer,
297
343
  }
298
344
  )
299
345
  end
@@ -307,12 +353,12 @@ module Omnibus
307
353
  render_template(resource_path("parameters.wxi.erb"),
308
354
  destination: "#{staging_dir}/parameters.wxi",
309
355
  variables: {
310
- name: project.package_name,
311
- friendly_name: project.friendly_name,
312
- maintainer: project.maintainer,
313
- upgrade_code: upgrade_code,
314
- parameters: parameters,
315
- version: windows_package_version,
356
+ name: project.package_name,
357
+ friendly_name: project.friendly_name,
358
+ maintainer: project.maintainer,
359
+ upgrade_code: upgrade_code,
360
+ parameters: parameters,
361
+ version: windows_package_version,
316
362
  display_version: msi_display_version,
317
363
  }
318
364
  )
@@ -356,11 +402,11 @@ module Omnibus
356
402
  render_template(resource_path("source.wxs.erb"),
357
403
  destination: "#{staging_dir}/source.wxs",
358
404
  variables: {
359
- name: project.package_name,
405
+ name: project.package_name,
360
406
  friendly_name: project.friendly_name,
361
- maintainer: project.maintainer,
362
- hierarchy: hierarchy,
363
- fastmsi: fast_msi,
407
+ maintainer: project.maintainer,
408
+ hierarchy: hierarchy,
409
+ fastmsi: fast_msi,
364
410
  wix_install_dir: wix_install_dir,
365
411
  }
366
412
  )
@@ -375,14 +421,14 @@ module Omnibus
375
421
  render_template(resource_path("bundle.wxs.erb"),
376
422
  destination: "#{staging_dir}/bundle.wxs",
377
423
  variables: {
378
- name: project.package_name,
379
- friendly_name: project.friendly_name,
380
- maintainer: project.maintainer,
381
- upgrade_code: upgrade_code,
382
- parameters: parameters,
383
- version: windows_package_version,
424
+ name: project.package_name,
425
+ friendly_name: project.friendly_name,
426
+ maintainer: project.maintainer,
427
+ upgrade_code: upgrade_code,
428
+ parameters: parameters,
429
+ version: windows_package_version,
384
430
  display_version: msi_display_version,
385
- msi: windows_safe_path(Config.package_dir, msi_name),
431
+ msi: windows_safe_path(Config.package_dir, msi_name),
386
432
  }
387
433
  )
388
434
  end
@@ -465,11 +511,12 @@ module Omnibus
465
511
  <<-EOH.split.join(" ").squeeze(" ").strip
466
512
  light.exe
467
513
  -nologo
514
+ #{wix_light_delay_validation}
468
515
  -ext WixUIExtension
469
516
  -ext WixBalExtension
470
517
  #{wix_extension_switches(wix_light_extensions)}
471
- -cultures:en-us
472
- -loc "#{windows_safe_path(staging_dir, 'localization-en-us.wxl')}"
518
+ -cultures:#{localization}
519
+ -loc "#{windows_safe_path(staging_dir, "localization-#{localization}.wxl")}"
473
520
  bundle.wixobj
474
521
  -out "#{out_file}"
475
522
  EOH
@@ -477,10 +524,11 @@ module Omnibus
477
524
  <<-EOH.split.join(" ").squeeze(" ").strip
478
525
  light.exe
479
526
  -nologo
527
+ #{wix_light_delay_validation}
480
528
  -ext WixUIExtension
481
529
  #{wix_extension_switches(wix_light_extensions)}
482
- -cultures:en-us
483
- -loc "#{windows_safe_path(staging_dir, 'localization-en-us.wxl')}"
530
+ -cultures:#{localization}
531
+ -loc "#{windows_safe_path(staging_dir, "localization-#{localization}.wxl")}"
484
532
  project-files.wixobj source.wixobj
485
533
  -out "#{out_file}"
486
534
  EOH