omnibus 4.0.0.rc.1 → 4.0.0.rc.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f6839ae316c6146ee459f8acbd869d83d495d90c
4
- data.tar.gz: 30a70eb80420dbab5e8196eb1a626b7b62c7b65f
3
+ metadata.gz: 67c9874074d2cec13ed5734f8e6f420ccfb157d7
4
+ data.tar.gz: 9fff24c7c26e8ef92175dac8c01b5c0883e2e2e1
5
5
  SHA512:
6
- metadata.gz: 4b8c99b56cd409f5b4df98dea2e19ade09fdeac89e42ee53a3724cf0a1c6440430d9994fd41b36aecd68c1c9239709bf578590b46ad1602f4fc2a6fbb21e3ba4
7
- data.tar.gz: d07dbc0bcab759ecc4f6017d71e662cd07d81ff7919854fd790fe4ec476eacdf11f8eb8a8163d2005808d8618d947d791df6f62da8e620f5cf009647bef685f9
6
+ metadata.gz: e2bbe215dd2606a272c04d1be03126d67cf0db748032616cfee7d699f355fef833f3d7b7bc29767c57bcd7e9c4dba8e1fde145d412ef8eb00b9d2eecbe53a9f0
7
+ data.tar.gz: 250b20df2e0c254335c29e0fb4490a764e8ce52044804e057c625b75034b638d868d3d91cb7b0593bf18742daf010187cb7f2e9b41a52b7a006fbe3c75d3129b
data/CHANGELOG.md CHANGED
@@ -1,6 +1,32 @@
1
1
  Omnibus CHANGELOG
2
2
  =================
3
3
 
4
+ v4.0.0.rc.2 (November 10, 2014)
5
+ -------------------------------
6
+
7
+ ### New Features
8
+
9
+ #### Platforms
10
+ - Raspberry Pi platform support (currently Raspbian and Pidora)
11
+ - AIX
12
+ - XL C is the default compiler on AIX.
13
+ - FreeBSD 10
14
+ - Clang is the default compiler on FreeBSD 10+
15
+ - Add `libgcc` and `libelf` to the FreeBSD whitelist
16
+ - Solaris
17
+ - Make compilation default `-static-libgcc`
18
+
19
+ ### Bugfixes
20
+
21
+ - Set default values for `CXXFLAGS`.
22
+ - Retrieve the correct path_key from the ENV on Windows.
23
+ - openSUSE/SLES fixes for OHAI-339.
24
+ - Properly truncate platform version on Arch Linux.
25
+ - Ensure final `*.dmg` name matches actual `*.pkg` name.
26
+ - Change `makeself` package extension back to `.sh`.
27
+ - Generate a default `makeselfinst` which fires at following install.
28
+ - Map `Omnibus::Project#replaces` to RPM Spec file's `Obsoletes:`.
29
+
4
30
  v4.0.0.rc.1 (September 23, 2014)
5
31
  --------------------------------
6
32
 
@@ -248,7 +248,7 @@ module Omnibus
248
248
  -format UDZO \\
249
249
  -imagekey \\
250
250
  zlib-level=9 \\
251
- -o "#{final_dmg}"
251
+ -o "#{package_path}"
252
252
  rm -rf "#{writable_dmg}"
253
253
  EOH
254
254
  end
@@ -271,17 +271,18 @@ module Omnibus
271
271
  DeRez -only icns "#{resource_path('icon.png')}" > tmp.rsrc
272
272
 
273
273
  # Append the icon reosurce to the DMG
274
- Rez -append tmp.rsrc -o "#{final_dmg}"
274
+ Rez -append tmp.rsrc -o "#{package_path}"
275
275
 
276
276
  # Source the icon
277
- SetFile -a C "#{final_dmg}"
277
+ SetFile -a C "#{package_path}"
278
278
  EOH
279
279
  end
280
280
  end
281
281
 
282
282
  # @see Base#package_name
283
283
  def package_name
284
- "#{project.name}-#{project.build_version}-#{project.build_iteration}.dmg"
284
+ extname = File.extname(packager.package_name)
285
+ packager.package_name.sub(extname, '.dmg')
285
286
  end
286
287
 
287
288
  # The path to the writable dmg on disk.
@@ -291,14 +292,6 @@ module Omnibus
291
292
  File.expand_path("#{staging_dir}/#{project.name}-writable.dmg")
292
293
  end
293
294
 
294
- # The path where the final dmg will be produced.
295
- #
296
- # @return [String]
297
- def final_dmg
298
- dmg_name = packager.package_name.sub('.pkg', '.dmg')
299
- File.expand_path("#{Config.package_dir}/#{dmg_name}")
300
- end
301
-
302
295
  #
303
296
  # The name of the volume to create. By defauly, this is the project's
304
297
  # friendly name.
@@ -9,9 +9,25 @@ driver:
9
9
 
10
10
  provisioner:
11
11
  name: chef_zero
12
- require_chef_omnibus: 11.14.6
12
+ require_chef_omnibus: 11.16.4
13
13
 
14
14
  platforms:
15
+ - name: centos-7.0
16
+ run_list: yum-epel::default
17
+ - name: centos-6.5
18
+ run_list: yum-epel::default
19
+ - name: centos-5.10
20
+ run_list: yum-epel::default
21
+ - name: debian-7.2.0
22
+ run_list: apt::default
23
+ - name: debian-6.0.8
24
+ run_list: apt::default
25
+ - name: freebsd-10.0
26
+ run_list: freebsd::portsnap
27
+ - name: freebsd-9.2
28
+ run_list:
29
+ - freebsd::portsnap
30
+ - freebsd::pkgng
15
31
  - name: ubuntu-14.04
16
32
  run_list: apt::default
17
33
  - name: ubuntu-12.04
@@ -20,14 +36,13 @@ platforms:
20
36
  run_list: apt::default
21
37
  - name: ubuntu-10.04
22
38
  run_list: apt::default
23
- - name: centos-5.10
24
- - name: centos-6.5
25
39
 
26
40
  suites:
27
41
  - name: default
28
42
  run_list: omnibus::default
29
43
  attributes:
30
44
  omnibus:
31
- build_user: vagrant
32
- build_dir: /home/vagrant/<%= config[:name] %>
33
- install_dir: /opt/<%= config[:name] %>
45
+ build_user: vagrant
46
+ build_user_group: vagrant
47
+ build_user_password: vagrant
48
+ install_dir: /opt/<%= config[:name] %>
@@ -1,10 +1,12 @@
1
1
  source 'https://api.berkshelf.com'
2
2
 
3
- # The apt cookbook is required to bring the apt cache up-to-date on Ubuntu
4
- # systems, since the cache can become stale on older boxes.
5
- cookbook 'apt', '~> 2.0'
6
-
7
3
  cookbook 'omnibus'
8
4
 
9
5
  # Uncomment to use the latest version of the Omnibus cookbook from GitHub
10
6
  # cookbook 'omnibus', github: 'opscode-cookbooks/omnibus'
7
+
8
+ group :integration do
9
+ cookbook 'apt', '~> 2.3'
10
+ cookbook 'freebsd', '~> 0.1'
11
+ cookbook 'yum-epel', '~> 0.3'
12
+ end
@@ -39,6 +39,7 @@
39
39
  # ------------------------------
40
40
  # solaris_compiler 'gcc'
41
41
  # build_retries 5
42
+ # fetcher_read_timeout 120
42
43
 
43
44
  # Load additional software
44
45
  # ------------------------------
@@ -129,11 +129,13 @@ module Omnibus
129
129
 
130
130
  FREEBSD_WHITELIST_LIBS = [
131
131
  /libc\.so/,
132
+ /libgcc_s\.so/,
132
133
  /libcrypt\.so/,
133
134
  /libm\.so/,
134
135
  /librt\.so/,
135
136
  /libthr\.so/,
136
137
  /libutil\.so/,
138
+ /libelf\.so/,
137
139
  ].freeze
138
140
 
139
141
  class << self
@@ -123,7 +123,6 @@ module Omnibus
123
123
 
124
124
  #
125
125
  # Platform name to be used when creating metadata for the artifact.
126
- # rhel/centos become "el", all others are just platform
127
126
  #
128
127
  # @return [String]
129
128
  # the platform family short name
@@ -131,6 +130,8 @@ module Omnibus
131
130
  def platform_shortname
132
131
  if Ohai['platform_family'] == 'rhel'
133
132
  'el'
133
+ elsif Ohai['platform'] == 'suse'
134
+ 'sles'
134
135
  else
135
136
  Ohai['platform']
136
137
  end
@@ -152,15 +153,15 @@ module Omnibus
152
153
  #
153
154
  def truncate_platform_version(platform_version, platform)
154
155
  case platform
155
- when 'centos', 'debian', 'el', 'fedora', 'freebsd', 'rhel', 'sles'
156
- # Only want MAJOR (e.g. Debian 7)
156
+ when 'centos', 'debian', 'el', 'fedora', 'freebsd', 'omnios', 'pidora', 'raspbian', 'rhel', 'sles', 'suse', 'smartos'
157
+ # Only want MAJOR (e.g. Debian 7, OmniOS r151006, SmartOS 20120809T221258Z)
157
158
  platform_version.split('.').first
158
- when 'aix', 'arch', 'gentoo', 'mac_os_x', 'openbsd', 'slackware', 'solaris2', 'suse', 'ubuntu'
159
+ when 'aix', 'gentoo', 'mac_os_x', 'openbsd', 'slackware', 'solaris2', 'opensuse', 'ubuntu'
159
160
  # Only want MAJOR.MINOR (e.g. Mac OS X 10.9, Ubuntu 12.04)
160
161
  platform_version.split('.')[0..1].join('.')
161
- when 'omnios', 'smartos'
162
- # Only want MAJOR (e.g OmniOS r151006, SmartOS 20120809T221258Z)
163
- platform_version.split('.').first
162
+ when 'arch'
163
+ # Arch Linux does not have a platform_version ohai attribute, it is rolling release (lsb_release -r)
164
+ 'rolling'
164
165
  when 'windows'
165
166
  # Windows has this really awesome "feature", where their version numbers
166
167
  # internally do not match the "marketing" name.
@@ -40,6 +40,9 @@ module Omnibus
40
40
  end
41
41
 
42
42
  build do
43
+ # Copy scripts
44
+ write_scripts
45
+
43
46
  # Render the gen template
44
47
  write_gen_template
45
48
 
@@ -49,7 +52,7 @@ module Omnibus
49
52
 
50
53
  # @see Base#package_name
51
54
  def package_name
52
- "#{safe_base_package_name}.#{bff_version}.#{safe_architecture}.bff"
55
+ "#{safe_base_package_name}-#{project.build_version}-#{project.build_iteration}.#{safe_architecture}.bff"
53
56
  end
54
57
 
55
58
  #
@@ -124,13 +127,12 @@ module Omnibus
124
127
  # Unconfiguration Script: /path/script
125
128
  #
126
129
  def write_gen_template
127
- # Create a map of scripts that exist and install path
130
+ # Create a map of scripts that exist to inject into the template
128
131
  scripts = SCRIPT_MAP.inject({}) do |hash, (script, installp_key)|
129
132
  staging_path = File.join(scripts_staging_dir, script.to_s)
130
- install_path = File.join(scripts_install_dir, script.to_s)
131
133
 
132
134
  if File.file?(staging_path)
133
- hash[installp_key] = install_path
135
+ hash[installp_key] = staging_path
134
136
  end
135
137
 
136
138
  hash
@@ -163,16 +165,42 @@ module Omnibus
163
165
  # @return [void]
164
166
  #
165
167
  def create_bff_file
168
+ # We are making the assumption that sudo exists.
169
+ # Unforunately, the owner of the file in the staging directory is what
170
+ # will be on the target machine, and mkinstallp can't tell you if that
171
+ # is a bad thing (it usually is).
172
+ # The match is so we only pick the lowest level of the project dir.
173
+ # This implies that if we are in /tmp/staging/project/dir/things,
174
+ # we will chown from 'project' on, rather than 'project/dir', which leaves
175
+ # project owned by the build user (which is incorrect)
176
+ shellout!("sudo chown -R 0:0 #{staging_dir}/#{project.install_dir.match(/^\/?(\w+)/)}")
166
177
  log.info(log_key) { "Creating .bff file" }
167
178
 
168
- shellout!("/usr/sbin/mkinstallp -d #{staging_dir} -T #{staging_dir}/gen.template")
179
+ # Since we want the owner to be root, we need to sudo the mkinstallp
180
+ # command, otherwise it will not have access to the previously chowned
181
+ # directory.
182
+ shellout!("sudo /usr/sbin/mkinstallp -d #{staging_dir} -T #{staging_dir}/gen.template")
169
183
 
170
184
  # Copy the resulting package up to the package_dir
171
185
  FileSyncer.glob("#{staging_dir}/tmp/*.bff").each do |bff|
172
- copy_file(bff, Config.package_dir)
186
+ copy_file(bff, File.join(Config.package_dir, create_bff_file_name))
173
187
  end
174
188
  end
175
189
 
190
+ #
191
+ # Create bff file name
192
+ #
193
+ # +mkinstallp+ names the bff file according to the version specified in
194
+ # the template. We want to differentiate the build specific version
195
+ # correctly.
196
+ #
197
+ # @return [String]
198
+ #
199
+ def create_bff_file_name
200
+ "#{safe_base_package_name}-#{project.build_version}-#{project.build_iteration}.#{safe_architecture}.bff"
201
+ end
202
+
203
+
176
204
  #
177
205
  # Return the BFF-ready base package name, converting any invalid characters to
178
206
  # dashes (+-+).
@@ -383,6 +383,12 @@ module Omnibus
383
383
  'amd64'
384
384
  when 'i686'
385
385
  'i386'
386
+ when 'armv6l'
387
+ if Ohai['platform'] == 'raspbian'
388
+ 'armhf'
389
+ else
390
+ 'armv6l'
391
+ end
386
392
  else
387
393
  Ohai['kernel']['machine']
388
394
  end
@@ -19,9 +19,7 @@ module Omnibus
19
19
  # @return [Hash]
20
20
  SCRIPT_MAP = {
21
21
  # Default Omnibus naming
22
- postinst: 'makeselfinst',
23
- # Default Makeself naming
24
- makeselfinst: 'makeselfinst',
22
+ postinst: 'postinst',
25
23
  }.freeze
26
24
 
27
25
  id :makeself
@@ -38,13 +36,16 @@ module Omnibus
38
36
  # Write the scripts
39
37
  write_scripts
40
38
 
39
+ # Write the makeselfinst file
40
+ write_makeselfinst
41
+
41
42
  # Create the makeself archive
42
43
  create_makeself_package
43
44
  end
44
45
 
45
46
  # @see Base#package_name
46
47
  def package_name
47
- "#{project.package_name}-#{project.build_version}_#{project.build_iteration}.#{safe_architecture}.run"
48
+ "#{project.package_name}-#{project.build_version}_#{project.build_iteration}.#{safe_architecture}.sh"
48
49
  end
49
50
 
50
51
  #
@@ -67,6 +68,24 @@ module Omnibus
67
68
  resource_path('makeself-header.sh')
68
69
  end
69
70
 
71
+ #
72
+ # Render a makeselfinst in the staging directory using the supplied ERB
73
+ # template. This file will be used to move the contents of the self-
74
+ # extracting archive into place following extraction.
75
+ #
76
+ # @return [void]
77
+ #
78
+ def write_makeselfinst
79
+ makeselfinst_staging_path = File.join(staging_dir, 'makeselfinst')
80
+ render_template(resource_path('makeselfinst.erb'),
81
+ destination: makeselfinst_staging_path,
82
+ variables: {
83
+ install_dir: project.install_dir,
84
+ }
85
+ )
86
+ FileUtils.chmod(0755, makeselfinst_staging_path)
87
+ end
88
+
70
89
  #
71
90
  # Copy all scripts in {Project#package_scripts_path} to the staging
72
91
  # directory.
@@ -105,7 +124,7 @@ module Omnibus
105
124
  EOH
106
125
  end
107
126
 
108
- FileSyncer.glob("#{staging_dir}/*.run").each do |makeself|
127
+ FileSyncer.glob("#{staging_dir}/*.sh").each do |makeself|
109
128
  copy_file(makeself, Config.package_dir)
110
129
  end
111
130
  end
@@ -449,7 +449,16 @@ module Omnibus
449
449
  # @return [String]
450
450
  #
451
451
  def safe_architecture
452
- Ohai['kernel']['machine']
452
+ case Ohai['kernel']['machine']
453
+ when 'armv6l'
454
+ if Ohai['platform'] == 'pidora'
455
+ 'armv6hl'
456
+ else
457
+ 'armv6l'
458
+ end
459
+ else
460
+ Ohai['kernel']['machine']
461
+ end
453
462
  end
454
463
  end
455
464
  end
@@ -431,27 +431,16 @@ module Omnibus
431
431
  compiler_flags =
432
432
  case Ohai['platform']
433
433
  when "aix"
434
- cc_flags =
435
- if opts[:aix] && opts[:aix][:use_gcc]
436
- {
437
- "CC" => "gcc -maix64",
438
- "CXX" => "g++ -maix64",
439
- "CFLAGS" => "-maix64 -O -I#{install_dir}/embedded/include",
440
- "LDFLAGS" => "-L#{install_dir}/embedded/lib -Wl,-blibpath:#{install_dir}/embedded/lib:/usr/lib:/lib",
441
- }
442
- else
443
- {
444
- "CC" => "xlc -q64",
445
- "CXX" => "xlC -q64",
446
- "CFLAGS" => "-q64 -I#{install_dir}/embedded/include -O",
447
- "LDFLAGS" => "-q64 -L#{install_dir}/embedded/lib -Wl,-blibpath:#{install_dir}/embedded/lib:/usr/lib:/lib",
448
- }
449
- end
450
- cc_flags.merge({
434
+ {
435
+ "CC" => "xlc_r -q64",
436
+ "CXX" => "xlC_r -q64",
437
+ "CFLAGS" => "-q64 -I#{install_dir}/embedded/include -D_LARGE_FILES -O",
438
+ "CXXFLAGS" => "-q64 -I#{install_dir}/embedded/include -D_LARGE_FILES -O",
439
+ "LDFLAGS" => "-q64 -L#{install_dir}/embedded/lib -Wl,-blibpath:#{install_dir}/embedded/lib:/usr/lib:/lib",
451
440
  "LD" => "ld -b64",
452
441
  "OBJECT_MODE" => "64",
453
442
  "ARFLAGS" => "-X64 cru",
454
- })
443
+ }
455
444
  when "mac_os_x"
456
445
  {
457
446
  "LDFLAGS" => "-L#{install_dir}/embedded/lib",
@@ -459,14 +448,25 @@ module Omnibus
459
448
  }
460
449
  when "solaris2"
461
450
  {
451
+ # this override is due to a bug in libtool documented here:
452
+ # http://lists.gnu.org/archive/html/bug-libtool/2005-10/msg00004.html
453
+ "CC" => "gcc -static-libgcc",
462
454
  "LDFLAGS" => "-R#{install_dir}/embedded/lib -L#{install_dir}/embedded/lib -static-libgcc",
463
455
  "CFLAGS" => "-I#{install_dir}/embedded/include",
464
456
  }
465
457
  when "freebsd"
466
- {
467
- "LDFLAGS" => "-R#{install_dir}/embedded/lib -L#{install_dir}/embedded/lib",
458
+ freebsd_flags = {
459
+ "LDFLAGS" => "-L#{install_dir}/embedded/lib",
468
460
  "CFLAGS" => "-I#{install_dir}/embedded/include",
469
461
  }
462
+ # Clang became the default compiler in FreeBSD 10+
463
+ if Ohai['os_version'].to_i >= 1000024
464
+ freebsd_flags.merge!(
465
+ "CC" => "clang",
466
+ "CXX" => "clang++",
467
+ )
468
+ end
469
+ freebsd_flags
470
470
  else
471
471
  {
472
472
  "LDFLAGS" => "-Wl,-rpath,#{install_dir}/embedded/lib -L#{install_dir}/embedded/lib",
@@ -496,7 +496,9 @@ module Omnibus
496
496
  # always want to favor pkg-config from embedded location to not hose
497
497
  # configure scripts which try to be too clever and ignore our explicit
498
498
  # CFLAGS and LDFLAGS in favor of pkg-config info
499
- merge({"PKG_CONFIG_PATH" => "#{install_dir}/embedded/lib/pkgconfig"})
499
+ merge({"PKG_CONFIG_PATH" => "#{install_dir}/embedded/lib/pkgconfig"}).
500
+ # Set default values for CXXFLAGS.
501
+ merge('CXXFLAGS' => compiler_flags['CFLAGS'])
500
502
  end
501
503
  expose :with_standard_compiler_flags
502
504
 
@@ -809,7 +811,16 @@ module Omnibus
809
811
  # $WINDOWSRAGE, and if you don't set that your native gem compiles
810
812
  # will fail because the magic fixup it does to add the mingw compiler
811
813
  # stuff won't work.
812
- Ohai['platform'] == 'windows' ? 'Path' : 'PATH'
814
+ #
815
+ # Turns out there is other build environments that only set ENV['PATH'] and if we
816
+ # modify ENV['Path'] then it ignores that. So, we scan ENV and returns the first
817
+ # one that we find.
818
+ #
819
+ if Ohai['platform'] == 'windows'
820
+ ENV.keys.grep(/\Apath\Z/i).first
821
+ else
822
+ 'PATH'
823
+ end
813
824
  end
814
825
 
815
826
  #
data/lib/omnibus/util.rb CHANGED
@@ -69,7 +69,7 @@ module Omnibus
69
69
  unless options[:environment].empty?
70
70
  log.public_send(log_level, log_key) { 'Environment:' }
71
71
  options[:environment].sort.each do |key, value|
72
- log.public_send(log_level, log_key) { " #{key.to_s.upcase}=#{value.inspect}" }
72
+ log.public_send(log_level, log_key) { " #{key}=#{value.inspect}" }
73
73
  end
74
74
  end
75
75
 
@@ -15,5 +15,5 @@
15
15
  #
16
16
 
17
17
  module Omnibus
18
- VERSION = '4.0.0.rc.1'
18
+ VERSION = '4.0.0.rc.2'
19
19
  end
@@ -15,9 +15,9 @@ Fileset
15
15
  Include license files in this package: N
16
16
  Requisites:
17
17
  ROOT Part: Y
18
- ROOTFiles
18
+ USRFiles
19
19
  <% files.each do |file| -%>
20
20
  <%= file %>
21
21
  <% end -%>
22
- EOROOTFiles
22
+ EOUSRFiles
23
23
  EOFileset
@@ -0,0 +1,35 @@
1
+ #!/bin/sh
2
+ # WARNING: REQUIRES /bin/sh
3
+ #
4
+ # - must run on /bin/sh on solaris 9
5
+ # - must run on /bin/sh on AIX 6.x
6
+ # - if you think you are a bash wizard, you probably do not understand
7
+ # this programming language. do not touch.
8
+ # - if you are under 40, get peer review from your elders.
9
+ #
10
+
11
+ #########################################################################
12
+ # HELPERS
13
+ #########################################################################
14
+ error_exit()
15
+ {
16
+ echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2
17
+ exit 1
18
+ }
19
+
20
+ PROGNAME=`basename $0`
21
+ EXTRACT_DIR=`dirname $0`
22
+ INSTALL_DIR=<%= install_dir %>
23
+
24
+ #########################################################################
25
+ # MOVE SELF-EXTRACTING ARCHIVE FILES INTO PLACE
26
+ #########################################################################
27
+ rm -rf $INSTALL_DIR/* || error_exit "Cannot remove contents of $INSTALL_DIR"
28
+ mkdir -p $INSTALL_DIR || error_exit "Cannot create $INSTALL_DIR"
29
+ cp -R $EXTRACT_DIR $INSTALL_DIR || error_exit "Cannot install to $INSTALL_DIR"
30
+ rm -f $INSTALL_DIR/$PROGNAME
31
+
32
+ # Execute the optional postinst script
33
+ if test -f "$INSTALL_DIR/postinst"; then
34
+ $INSTALL_DIR/postinst
35
+ fi
@@ -34,7 +34,7 @@ Requires: <%= name %>
34
34
  <% conflicts.each do |name| -%>
35
35
  Conflicts: <%= name %>
36
36
  <% end -%>
37
- <% conflicts.each do |name| -%>
37
+ <% replaces.each do |name| -%>
38
38
  Obsoletes: <%= name %>
39
39
  <%- end -%>
40
40
  <% # RPM rejects descriptions with blank lines (even between content) -%>
@@ -266,9 +266,17 @@ module Omnibus
266
266
  end
267
267
 
268
268
  describe '#package_name' do
269
- it 'includes the name, version, and build iteration' do
269
+ it 'reflects the packager\'s unmodified package_name' do
270
270
  expect(subject.package_name).to eq('project-1.2.3-2.dmg')
271
271
  end
272
+
273
+ it 'reflects the packager\'s modified package_name' do
274
+ package_basename = 'projectsub-1.2.3-3'
275
+ allow(project.packager).to receive(:package_name)
276
+ .and_return("#{package_basename}.pkg")
277
+
278
+ expect(subject.package_name).to eq("#{package_basename}.dmg")
279
+ end
272
280
  end
273
281
 
274
282
  describe '#writable_dmg' do
@@ -36,7 +36,12 @@ module Omnibus
36
36
  expect(described_class.platform_shortname).to eq('el')
37
37
  end
38
38
 
39
- it 'returns .platform on non-rhel systems' do
39
+ it 'returns sles on suse' do
40
+ stub_ohai(platform: 'suse', version: '12.0')
41
+ expect(described_class.platform_shortname).to eq('sles')
42
+ end
43
+
44
+ it 'returns .platform on all other systems' do
40
45
  stub_ohai(platform: 'ubuntu', version: '12.04')
41
46
  expect(described_class.platform_shortname).to eq('ubuntu')
42
47
  end
@@ -56,26 +61,29 @@ module Omnibus
56
61
  end
57
62
  end
58
63
 
59
- it_behaves_like 'a version manipulator', 'arch', '2009.02', '2009.02'
60
- it_behaves_like 'a version manipulator', 'arch', '2014.06.01', '2014.06'
64
+ it_behaves_like 'a version manipulator', 'aix', '7.1', '7.1'
65
+ it_behaves_like 'a version manipulator', 'arch', 'rolling', 'rolling'
66
+ it_behaves_like 'a version manipulator', 'centos', '5.9.6', '5'
61
67
  it_behaves_like 'a version manipulator', 'debian', '7.1', '7'
62
68
  it_behaves_like 'a version manipulator', 'debian', '6.9', '6'
63
- it_behaves_like 'a version manipulator', 'ubuntu', '10.04', '10.04'
64
- it_behaves_like 'a version manipulator', 'ubuntu', '10.04.04', '10.04'
69
+ it_behaves_like 'a version manipulator', 'el', '6.5', '6'
65
70
  it_behaves_like 'a version manipulator', 'fedora', '11.5', '11'
66
71
  it_behaves_like 'a version manipulator', 'freebsd', '10.0', '10'
67
- it_behaves_like 'a version manipulator', 'rhel', '6.5', '6'
68
- it_behaves_like 'a version manipulator', 'el', '6.5', '6'
69
- it_behaves_like 'a version manipulator', 'centos', '5.9.6', '5'
70
- it_behaves_like 'a version manipulator', 'aix', '7.1', '7.1'
71
72
  it_behaves_like 'a version manipulator', 'gentoo', '2004.3', '2004.3'
72
73
  it_behaves_like 'a version manipulator', 'mac_os_x', '10.9.1', '10.9'
74
+ it_behaves_like 'a version manipulator', 'omnios', 'r151010', 'r151010'
73
75
  it_behaves_like 'a version manipulator', 'openbsd', '5.4.4', '5.4'
76
+ it_behaves_like 'a version manipulator', 'opensuse', '5.9', '5.9'
77
+ it_behaves_like 'a version manipulator', 'pidora', '11.5', '11'
78
+ it_behaves_like 'a version manipulator', 'raspbian', '7.1', '7'
79
+ it_behaves_like 'a version manipulator', 'rhel', '6.5', '6'
74
80
  it_behaves_like 'a version manipulator', 'slackware', '12.0.1', '12.0'
75
- it_behaves_like 'a version manipulator', 'solaris2', '5.9', '5.9'
76
- it_behaves_like 'a version manipulator', 'suse', '5.9', '5.9'
77
- it_behaves_like 'a version manipulator', 'omnios', 'r151010', 'r151010'
81
+ it_behaves_like 'a version manipulator', 'sles', '11.2', '11'
82
+ it_behaves_like 'a version manipulator', 'suse', '12.0', '12'
78
83
  it_behaves_like 'a version manipulator', 'smartos', '20120809T221258Z', '20120809T221258Z'
84
+ it_behaves_like 'a version manipulator', 'solaris2', '5.9', '5.9'
85
+ it_behaves_like 'a version manipulator', 'ubuntu', '10.04', '10.04'
86
+ it_behaves_like 'a version manipulator', 'ubuntu', '10.04.04', '10.04'
79
87
  it_behaves_like 'a version manipulator', 'windows', '5.0.2195', '2000'
80
88
  it_behaves_like 'a version manipulator', 'windows', '5.1.2600', 'xp'
81
89
  it_behaves_like 'a version manipulator', 'windows', '5.2.3790', '2003r2'
@@ -39,8 +39,8 @@ module Omnibus
39
39
  allow(subject).to receive(:safe_architecture).and_return('x86_64')
40
40
  end
41
41
 
42
- it 'includes the name, version, and build iteration' do
43
- expect(subject.package_name).to eq('project.1.2.3.2.x86_64.bff')
42
+ it 'includes the name and version' do
43
+ expect(subject.package_name).to eq('project-1.2.3-2.x86_64.bff')
44
44
  end
45
45
  end
46
46
 
@@ -109,8 +109,8 @@ module Omnibus
109
109
  expect(contents).to include(" Include license files in this package: N")
110
110
  expect(contents).to include(" Requisites:")
111
111
  expect(contents).to include(" ROOT Part: Y")
112
- expect(contents).to include(" ROOTFiles")
113
- expect(contents).to include(" EOROOTFiles")
112
+ expect(contents).to include(" USRFiles")
113
+ expect(contents).to include(" EOUSRFiles")
114
114
  expect(contents).to include("EOFileset")
115
115
  end
116
116
 
@@ -145,10 +145,10 @@ module Omnibus
145
145
  subject.write_gen_template
146
146
  contents = File.read(gen_file)
147
147
 
148
- expect(contents).to include(" Pre-installation Script: #{subject.scripts_install_dir}/preinst")
149
- expect(contents).to include(" Post-installation Script: #{subject.scripts_install_dir}/postinst")
150
- expect(contents).to include(" Pre_rm Script: #{subject.scripts_install_dir}/prerm")
151
- expect(contents).to include(" Unconfiguration Script: #{subject.scripts_install_dir}/postrm")
148
+ expect(contents).to include(" Pre-installation Script: #{subject.scripts_staging_dir}/preinst")
149
+ expect(contents).to include(" Post-installation Script: #{subject.scripts_staging_dir}/postinst")
150
+ expect(contents).to include(" Pre_rm Script: #{subject.scripts_staging_dir}/prerm")
151
+ expect(contents).to include(" Unconfiguration Script: #{subject.scripts_staging_dir}/postrm")
152
152
  end
153
153
  end
154
154
  end
@@ -192,6 +192,13 @@ module Omnibus
192
192
  end
193
193
  end
194
194
 
195
+ describe '#create_bff_file_name' do
196
+ it 'constructs the proper package name' do
197
+ expect(subject.create_bff_file_name).to eq('project-1.2.3-2.x86_64.bff')
198
+ end
199
+
200
+ end
201
+
195
202
  describe '#bff_version' do
196
203
  it 'returns the build version up with the build iteration' do
197
204
  expect(subject.bff_version).to eq('1.2.3.2')
@@ -331,6 +331,21 @@ module Omnibus
331
331
  expect(subject.safe_architecture).to eq('i386')
332
332
  end
333
333
  end
334
+
335
+ context 'on Raspbian' do
336
+ before do
337
+ # There's no Raspbian in Fauxhai :(
338
+ stub_ohai(platform: 'debian', version: '7.6') do |data|
339
+ data['platform'] = 'raspbian'
340
+ data['platform_version'] = '7.6'
341
+ data['kernel']['machine'] = 'armv6l'
342
+ end
343
+ end
344
+
345
+ it 'returns armhf' do
346
+ expect(subject.safe_architecture).to eq('armhf')
347
+ end
348
+ end
334
349
  end
335
350
  end
336
351
  end
@@ -39,69 +39,42 @@ module Omnibus
39
39
  end
40
40
 
41
41
  it 'includes the name, version, and build iteration' do
42
- expect(subject.package_name).to eq('project-1.2.3_2.x86_64.run')
42
+ expect(subject.package_name).to eq('project-1.2.3_2.x86_64.sh')
43
43
  end
44
44
  end
45
45
 
46
- describe '#write_scripts' do
47
- before do
48
- create_file("#{project_root}/package-scripts/project/makeselfinst") { 'Contents of makeselfinst' }
49
- end
50
-
51
- it 'copies the scripts into the STAGING dir' do
52
- subject.write_scripts
53
- expect("#{staging_dir}/makeselfinst").to be_a_file
46
+ describe '#write_makeselfinst' do
47
+ it 'generates the executable file' do
48
+ subject.write_makeselfinst
49
+ expect("#{staging_dir}/makeselfinst").to be_an_executable
54
50
  end
55
51
 
56
52
  it 'has the correct content' do
57
- subject.write_scripts
53
+ subject.write_makeselfinst
58
54
  contents = File.read("#{staging_dir}/makeselfinst")
59
55
 
60
- expect(contents).to include('Contents of makeselfinst')
56
+ expect(contents).to include('INSTALL_DIR=/opt/project')
61
57
  end
62
58
  end
63
59
 
64
60
  describe '#write_scripts' do
65
- context 'when scripts are given' do
66
- let(:scripts) { %w( makeselfinst ) }
67
- before do
68
- scripts.each do |script_name|
69
- create_file("#{project_root}/package-scripts/project/#{script_name}") do
70
- "Contents of #{script_name}"
71
- end
72
- end
73
- end
74
-
75
- it 'writes the scripts into the staging dir' do
76
- subject.write_scripts
77
-
78
- scripts.each do |script_name|
79
- script_file = "#{staging_dir}/#{script_name}"
80
- contents = File.read(script_file)
81
- expect(contents).to include("Contents of #{script_name}")
61
+ let(:default_scripts) { %w( postinst ) }
62
+ before do
63
+ default_scripts.each do |script_name|
64
+ create_file("#{project_root}/package-scripts/project/#{script_name}") do
65
+ "Contents of #{script_name}"
82
66
  end
83
67
  end
84
68
  end
85
69
 
86
- context 'when scripts with default omnibus naming are given' do
87
- let(:default_scripts) { %w( postinst ) }
88
- before do
89
- default_scripts.each do |script_name|
90
- create_file("#{project_root}/package-scripts/project/#{script_name}") do
91
- "Contents of #{script_name}"
92
- end
93
- end
94
- end
95
-
96
- it 'writes the scripts into the staging dir' do
97
- subject.write_scripts
70
+ it 'writes the scripts into the staging dir' do
71
+ subject.write_scripts
98
72
 
99
- default_scripts.each do |script_name|
100
- mapped_name = Packager::Makeself::SCRIPT_MAP[script_name.to_sym]
101
- script_file = "#{staging_dir}/#{mapped_name}"
102
- contents = File.read(script_file)
103
- expect(contents).to include("Contents of #{script_name}")
104
- end
73
+ default_scripts.each do |script_name|
74
+ mapped_name = Packager::Makeself::SCRIPT_MAP[script_name.to_sym]
75
+ script_file = "#{staging_dir}/#{mapped_name}"
76
+ contents = File.read(script_file)
77
+ expect(contents).to include("Contents of #{script_name}")
105
78
  end
106
79
  end
107
80
  end
@@ -10,6 +10,7 @@ module Omnibus
10
10
  project.build_version('1.2.3')
11
11
  project.build_iteration('2')
12
12
  project.maintainer('Chef Software')
13
+ project.replace('old-project')
13
14
  end
14
15
  end
15
16
 
@@ -150,6 +151,7 @@ module Omnibus
150
151
  expect(contents).to include("Vendor: Omnibus <omnibus@getchef.com>")
151
152
  expect(contents).to include("URL: https://example.com")
152
153
  expect(contents).to include("Packager: Chef Software")
154
+ expect(contents).to include("Obsoletes: old-project")
153
155
  end
154
156
 
155
157
  context 'when scripts are given' do
@@ -338,6 +340,21 @@ module Omnibus
338
340
  it 'returns the value from Ohai' do
339
341
  expect(subject.safe_architecture).to eq('i386')
340
342
  end
343
+
344
+ context 'on Pidora' do
345
+ before do
346
+ # There's no Pidora in Fauxhai :(
347
+ stub_ohai(platform: 'fedora', version: '20') do |data|
348
+ data['platform'] = 'pidora'
349
+ data['platform_version'] = '20'
350
+ data['kernel']['machine'] = 'armv6l'
351
+ end
352
+ end
353
+
354
+ it 'returns armv6hl' do
355
+ expect(subject.safe_architecture).to eq('armv6hl')
356
+ end
357
+ end
341
358
  end
342
359
  end
343
360
  end
@@ -51,6 +51,7 @@ module Omnibus
51
51
  expect(subject.with_standard_compiler_flags).to eq(
52
52
  'LDFLAGS' => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
53
53
  'CFLAGS' => '-I/opt/project/embedded/include',
54
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
54
55
  'LD_RUN_PATH' => '/opt/project/embedded/lib',
55
56
  'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
56
57
  )
@@ -59,6 +60,7 @@ module Omnibus
59
60
  expect(subject.with_standard_compiler_flags('LDFLAGS' => 'foo')).to eq(
60
61
  'LDFLAGS' => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
61
62
  'CFLAGS' => '-I/opt/project/embedded/include',
63
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
62
64
  'LD_RUN_PATH' => '/opt/project/embedded/lib',
63
65
  'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
64
66
  )
@@ -67,6 +69,16 @@ module Omnibus
67
69
  expect(subject.with_standard_compiler_flags('CFLAGS'=>'foo')).to eq(
68
70
  'LDFLAGS' => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
69
71
  'CFLAGS' => '-I/opt/project/embedded/include',
72
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
73
+ 'LD_RUN_PATH' => '/opt/project/embedded/lib',
74
+ 'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
75
+ )
76
+ end
77
+ it 'ovesrride CXXFLAGS' do
78
+ expect(subject.with_standard_compiler_flags('CXXFLAGS'=>'foo')).to eq(
79
+ 'LDFLAGS' => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
80
+ 'CFLAGS' => '-I/opt/project/embedded/include',
81
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
70
82
  'LD_RUN_PATH' => '/opt/project/embedded/lib',
71
83
  'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
72
84
  )
@@ -76,6 +88,7 @@ module Omnibus
76
88
  'numberwang' => 4,
77
89
  'LDFLAGS' => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
78
90
  'CFLAGS' => '-I/opt/project/embedded/include',
91
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
79
92
  'LD_RUN_PATH' => '/opt/project/embedded/lib',
80
93
  'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
81
94
  )
@@ -92,8 +105,10 @@ module Omnibus
92
105
 
93
106
  it 'sets the defaults' do
94
107
  expect(subject.with_standard_compiler_flags).to eq(
108
+ 'CC' => 'gcc -static-libgcc',
95
109
  'LDFLAGS' => '-R/opt/project/embedded/lib -L/opt/project/embedded/lib -static-libgcc',
96
110
  'CFLAGS' => '-I/opt/project/embedded/include',
111
+ "CXXFLAGS" => "-I/opt/project/embedded/include",
97
112
  'LD_RUN_PATH' => '/opt/project/embedded/lib',
98
113
  'LD_OPTIONS' => '-R/opt/project/embedded/lib',
99
114
  'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
@@ -108,6 +123,7 @@ module Omnibus
108
123
  expect(subject.with_standard_compiler_flags).to eq(
109
124
  'LDFLAGS' => '-L/opt/project/embedded/lib',
110
125
  'CFLAGS' => '-I/opt/project/embedded/include',
126
+ "CXXFLAGS" => "-I/opt/project/embedded/include",
111
127
  'LD_RUN_PATH' => '/opt/project/embedded/lib',
112
128
  'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
113
129
  )
@@ -124,9 +140,10 @@ module Omnibus
124
140
 
125
141
  it 'sets the defaults' do
126
142
  expect(subject.with_standard_compiler_flags).to eq(
127
- 'CC' => 'xlc -q64',
128
- 'CXX' => 'xlC -q64',
129
- 'CFLAGS' => '-q64 -I/opt/project/embedded/include -O',
143
+ 'CC' => 'xlc_r -q64',
144
+ 'CXX' => 'xlC_r -q64',
145
+ 'CFLAGS' => '-q64 -I/opt/project/embedded/include -D_LARGE_FILES -O',
146
+ "CXXFLAGS" => "-q64 -I/opt/project/embedded/include -D_LARGE_FILES -O",
130
147
  'LDFLAGS' => '-q64 -L/opt/project/embedded/lib -Wl,-blibpath:/opt/project/embedded/lib:/usr/lib:/lib',
131
148
  'LD' => 'ld -b64',
132
149
  'OBJECT_MODE' => '64',
@@ -137,62 +154,81 @@ module Omnibus
137
154
  end
138
155
  end
139
156
 
140
- context 'on aix with gcc' do
157
+ context 'on freebsd' do
141
158
  before do
142
- # There's no AIX in Fauxhai :(
143
- stub_ohai(platform: 'solaris2', version: '5.11') do |data|
144
- data['platform'] = 'aix'
145
- end
159
+ stub_ohai(platform: 'freebsd', version: '9.2')
146
160
  end
147
161
 
148
162
  it 'sets the defaults' do
149
- expect(subject.with_standard_compiler_flags(nil, aix: { use_gcc: true })).to eq(
150
- 'CC' => 'gcc -maix64',
151
- 'CXX' => 'g++ -maix64',
152
- 'CFLAGS' => '-maix64 -O -I/opt/project/embedded/include',
153
- 'LDFLAGS' => '-L/opt/project/embedded/lib -Wl,-blibpath:/opt/project/embedded/lib:/usr/lib:/lib',
154
- 'LD' => 'ld -b64',
155
- 'OBJECT_MODE' => '64',
156
- 'ARFLAGS' => '-X64 cru',
157
- 'LD_RUN_PATH' => '/opt/project/embedded/lib',
158
- 'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
163
+ expect(subject.with_standard_compiler_flags).to eq(
164
+ 'CFLAGS' => '-I/opt/project/embedded/include',
165
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
166
+ 'LDFLAGS' => '-L/opt/project/embedded/lib',
167
+ 'LD_RUN_PATH' => '/opt/project/embedded/lib',
168
+ 'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig',
159
169
  )
160
170
  end
171
+
172
+ context 'on freebsd' do
173
+ before do
174
+ stub_ohai(platform: 'freebsd', version: '10.0')
175
+ end
176
+
177
+ it 'Clang as the default compiler' do
178
+ expect(subject.with_standard_compiler_flags).to eq(
179
+ 'CC' => 'clang',
180
+ 'CXX' => 'clang++',
181
+ 'CFLAGS' => '-I/opt/project/embedded/include',
182
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
183
+ 'LDFLAGS' => '-L/opt/project/embedded/lib',
184
+ 'LD_RUN_PATH' => '/opt/project/embedded/lib',
185
+ 'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig',
186
+ )
187
+ end
188
+ end
161
189
  end
190
+
162
191
  end
163
192
 
164
193
  describe 'path helpers' do
194
+
165
195
  before do
166
196
  stub_const('File::PATH_SEPARATOR', separator)
167
197
  stub_env('PATH', path)
198
+ allow(project).to receive(:install_dir).and_return(install_dir)
168
199
  end
169
200
 
170
- context 'on *NIX' do
201
+ let(:prepended_path) do
202
+ ["#{install_dir}/bin", separator, "#{install_dir}/embedded/bin", separator, path].join
203
+ end
204
+
205
+ context 'on *Nix' do
171
206
  let(:separator) { ':' }
172
207
  let(:path) { '/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin' }
208
+ let(:install_dir) { '/opt/project' }
173
209
 
174
210
  it 'prepends a path to PATH' do
175
211
  expect(subject.prepend_path('/foo/bar')).to eq(
176
- '/foo/bar:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin'
212
+ ['/foo/bar', separator, path].join
177
213
  )
178
214
  end
179
215
 
180
216
  it 'prepends the embedded bin to PATH' do
181
217
  expect(subject.with_embedded_path).to eq(
182
- 'PATH' => '/opt/project/bin:/opt/project/embedded/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin'
218
+ 'PATH' => prepended_path
183
219
  )
184
220
  end
185
221
 
186
222
  it 'with_embedded_path merges with a hash argument' do
187
223
  expect(subject.with_embedded_path('numberwang' => 4)).to eq(
188
224
  'numberwang' => 4,
189
- 'PATH' => '/opt/project/bin:/opt/project/embedded/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin'
225
+ 'PATH' => prepended_path
190
226
  )
191
227
  end
192
228
 
193
229
  it 'prepends multiple paths to PATH' do
194
230
  expect(subject.prepend_path('/foo/bar', '/foo/baz')).to eq(
195
- '/foo/bar:/foo/baz:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin'
231
+ ['/foo/bar', separator, '/foo/baz', separator, path].join
196
232
  )
197
233
  end
198
234
  end
@@ -200,37 +236,31 @@ module Omnibus
200
236
  context 'on Windows' do
201
237
  before do
202
238
  stub_ohai(platform: 'windows', version: '2012')
203
- allow(project).to receive(:install_dir).and_return('c:/opt/project')
204
- stub_env('Path', windows_path)
205
239
  end
206
240
 
207
241
  let(:separator) { ';' }
208
242
  let(:path) { 'c:/Ruby193/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem' }
209
- let(:windows_path) { 'c:/Ruby999/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem' }
210
-
211
- it "prepends a path to PATH" do
212
- expect(subject.prepend_path('c:/foo/bar')).to eq(
213
- 'c:/foo/bar;c:/Ruby999/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem'
214
- )
215
- end
243
+ let(:install_dir) { 'c:/opt/project' }
216
244
 
217
- it 'prepends the embedded bin to PATH' do
218
- expect(subject.with_embedded_path).to eq(
219
- 'Path' => 'c:/opt/project/bin;c:/opt/project/embedded/bin;c:/Ruby999/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem'
220
- )
221
- end
245
+ context '`Path` exists in the environment' do
246
+ before do
247
+ stub_env('Path', path)
248
+ allow(ENV).to receive(:keys).and_return(%w( Path PATH ))
249
+ end
222
250
 
223
- it 'with_embedded_path merges with a hash argument' do
224
- expect(subject.with_embedded_path('numberwang' => 4)).to eq(
225
- 'numberwang' => 4,
226
- 'Path' => 'c:/opt/project/bin;c:/opt/project/embedded/bin;c:/Ruby999/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem'
227
- )
251
+ it 'returns a path key of `Path`' do
252
+ expect(subject.with_embedded_path).to eq(
253
+ 'Path' => prepended_path
254
+ )
255
+ end
228
256
  end
229
257
 
230
- it 'prepends multiple paths to PATH' do
231
- expect(subject.prepend_path('c:/foo/bar', 'c:/foo/baz')).to eq(
232
- 'c:/foo/bar;c:/foo/baz;c:/Ruby999/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem'
233
- )
258
+ context '`Path` does not exist in the environment' do
259
+ it 'returns a path key of `PATH`' do
260
+ expect(subject.with_embedded_path).to eq(
261
+ 'PATH' => prepended_path
262
+ )
263
+ end
234
264
  end
235
265
  end
236
266
  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: 4.0.0.rc.1
4
+ version: 4.0.0.rc.2
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: 2014-09-23 00:00:00.000000000 Z
11
+ date: 2014-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef-sugar
@@ -320,6 +320,7 @@ files:
320
320
  - resources/dmg/icon.png
321
321
  - resources/makeself/makeself-header.sh
322
322
  - resources/makeself/makeself.sh
323
+ - resources/makeself/makeselfinst.erb
323
324
  - resources/msi/assets/LICENSE.rtf
324
325
  - resources/msi/assets/banner_background.bmp
325
326
  - resources/msi/assets/dialog_background.bmp