omnibus 5.0.0 → 5.1.0
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/.rspec +2 -0
- data/.travis.yml +1 -0
- data/CHANGELOG.md +26 -0
- data/Gemfile +3 -0
- data/MAINTAINERS.md +1 -0
- data/appveyor.yml +1 -1
- data/bin/omnibus +5 -0
- data/lib/omnibus/builder.rb +165 -26
- data/lib/omnibus/digestable.rb +4 -2
- data/lib/omnibus/fetcher.rb +18 -5
- data/lib/omnibus/fetchers/git_fetcher.rb +38 -22
- data/lib/omnibus/fetchers/net_fetcher.rb +106 -37
- data/lib/omnibus/fetchers/path_fetcher.rb +13 -12
- data/lib/omnibus/file_syncer.rb +33 -14
- data/lib/omnibus/generator_files/README.md.erb +1 -1
- data/lib/omnibus/generator_files/package_scripts/postinst.erb +3 -3
- data/lib/omnibus/generator_files/package_scripts/postrm.erb +1 -1
- data/lib/omnibus/generator_files/package_scripts/preinst.erb +1 -1
- data/lib/omnibus/generator_files/package_scripts/prerm.erb +3 -3
- data/lib/omnibus/git_cache.rb +20 -7
- data/lib/omnibus/health_check.rb +144 -12
- data/lib/omnibus/packagers/bff.rb +57 -5
- data/lib/omnibus/packagers/deb.rb +2 -2
- data/lib/omnibus/packagers/pkg.rb +2 -2
- data/lib/omnibus/packagers/solaris.rb +18 -6
- data/lib/omnibus/project.rb +1 -1
- data/lib/omnibus/s3_cache.rb +8 -2
- data/lib/omnibus/software.rb +152 -18
- data/lib/omnibus/sugarable.rb +1 -5
- data/lib/omnibus/util.rb +1 -1
- data/lib/omnibus/version.rb +1 -1
- data/omnibus.gemspec +4 -1
- data/resources/bff/config.erb +7 -0
- data/resources/deb/md5sums.erb +1 -1
- data/spec/functional/builder_spec.rb +89 -2
- data/spec/functional/fetchers/git_fetcher_spec.rb +44 -37
- data/spec/functional/fetchers/net_fetcher_spec.rb +36 -5
- data/spec/functional/fetchers/path_fetcher_spec.rb +28 -28
- data/spec/unit/builder_spec.rb +143 -11
- data/spec/unit/fetchers/git_fetcher_spec.rb +23 -59
- data/spec/unit/fetchers/net_fetcher_spec.rb +151 -63
- data/spec/unit/fetchers/path_fetcher_spec.rb +4 -35
- data/spec/unit/git_cache_spec.rb +13 -14
- data/spec/unit/health_check_spec.rb +90 -0
- data/spec/unit/library_spec.rb +1 -1
- data/spec/unit/packagers/bff_spec.rb +126 -3
- data/spec/unit/packagers/deb_spec.rb +8 -3
- data/spec/unit/packagers/pkg_spec.rb +19 -19
- data/spec/unit/packagers/solaris_spec.rb +13 -1
- data/spec/unit/software_spec.rb +242 -38
- metadata +7 -6
- data/lib/omnibus/generator_files/package_scripts/makeselfinst.erb +0 -0
| @@ -116,6 +116,12 @@ module Omnibus | |
| 116 116 |  | 
| 117 117 | 
             
                  before do
         | 
| 118 118 | 
             
                    allow(subject).to receive(:shellout!)
         | 
| 119 | 
            +
                    File.open("#{staging_dir}/files", "w+") do |f|
         | 
| 120 | 
            +
                      f.write <<-EOF
         | 
| 121 | 
            +
            /foo/bar/baz
         | 
| 122 | 
            +
            /a file with spaces
         | 
| 123 | 
            +
                      EOF
         | 
| 124 | 
            +
                    end
         | 
| 119 125 | 
             
                  end
         | 
| 120 126 |  | 
| 121 127 | 
             
                  it 'creates the prototype file' do
         | 
| @@ -135,11 +141,17 @@ module Omnibus | |
| 135 141 | 
             
                    expect(subject).to receive(:shellout!)
         | 
| 136 142 | 
             
                      .with("cd /opt && find project -print > #{File.join(staging_dir, 'files')}")
         | 
| 137 143 | 
             
                    expect(subject).to receive(:shellout!)
         | 
| 138 | 
            -
                      .with("cd /opt && pkgproto < #{File.join(staging_dir, 'files')} > #{File.join(staging_dir, 'Prototype.files')}")
         | 
| 144 | 
            +
                      .with("cd /opt && pkgproto < #{File.join(staging_dir, 'files.clean')} > #{File.join(staging_dir, 'Prototype.files')}")
         | 
| 139 145 | 
             
                    expect(subject).to receive(:shellout!)
         | 
| 140 146 | 
             
                      .with("awk '{ $5 = \"root\"; $6 = \"root\"; print }' < #{File.join(staging_dir, 'Prototype.files')} >> #{File.join(staging_dir, 'Prototype')}")
         | 
| 147 | 
            +
                    subject.write_prototype_file
         | 
| 148 | 
            +
                  end
         | 
| 141 149 |  | 
| 150 | 
            +
                  it 'strips out the file with spaces from files.clean' do
         | 
| 142 151 | 
             
                    subject.write_prototype_file
         | 
| 152 | 
            +
                    contents = File.read(File.join(staging_dir, 'files.clean'))
         | 
| 153 | 
            +
                    expect(contents).not_to include("a file with spaces")
         | 
| 154 | 
            +
                    expect(contents).to include("/foo/bar/baz")
         | 
| 143 155 | 
             
                  end
         | 
| 144 156 | 
             
                end
         | 
| 145 157 |  | 
    
        data/spec/unit/software_spec.rb
    CHANGED
    
    | @@ -9,19 +9,32 @@ module Omnibus | |
| 9 9 | 
             
                  end
         | 
| 10 10 | 
             
                end
         | 
| 11 11 |  | 
| 12 | 
            +
                let(:source) do
         | 
| 13 | 
            +
                  {
         | 
| 14 | 
            +
                    url: 'http://example.com/',
         | 
| 15 | 
            +
                    md5: 'abcd1234'
         | 
| 16 | 
            +
                  }
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                let(:rel_path) { 'software' }
         | 
| 20 | 
            +
             | 
| 12 21 | 
             
                subject do
         | 
| 22 | 
            +
                  local_source = source
         | 
| 23 | 
            +
                  local_rel_path = rel_path
         | 
| 24 | 
            +
             | 
| 13 25 | 
             
                  described_class.new(project).evaluate do
         | 
| 14 26 | 
             
                    name 'software'
         | 
| 15 27 | 
             
                    default_version '1.2.3'
         | 
| 16 28 |  | 
| 17 | 
            -
                    source  | 
| 18 | 
            -
             | 
| 29 | 
            +
                    source local_source
         | 
| 30 | 
            +
                    relative_path local_rel_path
         | 
| 19 31 | 
             
                  end
         | 
| 20 32 | 
             
                end
         | 
| 21 33 |  | 
| 22 34 | 
             
                it_behaves_like 'a cleanroom getter', :project
         | 
| 23 35 | 
             
                it_behaves_like 'a cleanroom setter', :name, %|name 'libxml2'|
         | 
| 24 36 | 
             
                it_behaves_like 'a cleanroom setter', :description, %|description 'The XML magician'|
         | 
| 37 | 
            +
                it_behaves_like 'a cleanroom setter', :maintainer, %|maintainer 'Captain Jack <sparrow@chef.io>'|
         | 
| 25 38 | 
             
                it_behaves_like 'a cleanroom setter', :dependency, %|dependency 'libxslt'|
         | 
| 26 39 | 
             
                it_behaves_like 'a cleanroom setter', :source, %|source url: 'https://source.example.com'|
         | 
| 27 40 | 
             
                it_behaves_like 'a cleanroom setter', :default_version, %|default_version '1.2.3'|
         | 
| @@ -50,9 +63,9 @@ module Omnibus | |
| 50 63 | 
             
                    it "sets the defaults" do
         | 
| 51 64 | 
             
                      expect(subject.with_standard_compiler_flags).to eq(
         | 
| 52 65 | 
             
                        'LDFLAGS'         => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
         | 
| 53 | 
            -
                        'CFLAGS'          => '-I/opt/project/embedded/include',
         | 
| 54 | 
            -
                        'CXXFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 55 | 
            -
                        'CPPFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 66 | 
            +
                        'CFLAGS'          => '-I/opt/project/embedded/include -O2',
         | 
| 67 | 
            +
                        'CXXFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 68 | 
            +
                        'CPPFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 56 69 | 
             
                        'LD_RUN_PATH'     => '/opt/project/embedded/lib',
         | 
| 57 70 | 
             
                        'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
         | 
| 58 71 | 
             
                      )
         | 
| @@ -60,9 +73,9 @@ module Omnibus | |
| 60 73 | 
             
                    it 'overrides LDFLAGS' do
         | 
| 61 74 | 
             
                      expect(subject.with_standard_compiler_flags('LDFLAGS'        => 'foo')).to eq(
         | 
| 62 75 | 
             
                        'LDFLAGS'         => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
         | 
| 63 | 
            -
                        'CFLAGS'          => '-I/opt/project/embedded/include',
         | 
| 64 | 
            -
                        'CXXFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 65 | 
            -
                        'CPPFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 76 | 
            +
                        'CFLAGS'          => '-I/opt/project/embedded/include -O2',
         | 
| 77 | 
            +
                        'CXXFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 78 | 
            +
                        'CPPFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 66 79 | 
             
                        'LD_RUN_PATH'     => '/opt/project/embedded/lib',
         | 
| 67 80 | 
             
                        'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
         | 
| 68 81 | 
             
                      )
         | 
| @@ -70,9 +83,9 @@ module Omnibus | |
| 70 83 | 
             
                    it 'overrides CFLAGS' do
         | 
| 71 84 | 
             
                      expect(subject.with_standard_compiler_flags('CFLAGS'=>'foo')).to eq(
         | 
| 72 85 | 
             
                        'LDFLAGS'         => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
         | 
| 73 | 
            -
                        'CFLAGS'          => '-I/opt/project/embedded/include',
         | 
| 74 | 
            -
                        'CXXFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 75 | 
            -
                        'CPPFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 86 | 
            +
                        'CFLAGS'          => '-I/opt/project/embedded/include -O2',
         | 
| 87 | 
            +
                        'CXXFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 88 | 
            +
                        'CPPFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 76 89 | 
             
                        'LD_RUN_PATH'     => '/opt/project/embedded/lib',
         | 
| 77 90 | 
             
                        'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
         | 
| 78 91 | 
             
                      )
         | 
| @@ -80,9 +93,9 @@ module Omnibus | |
| 80 93 | 
             
                    it 'overrides CXXFLAGS' do
         | 
| 81 94 | 
             
                      expect(subject.with_standard_compiler_flags('CXXFLAGS'=>'foo')).to eq(
         | 
| 82 95 | 
             
                        'LDFLAGS'         => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
         | 
| 83 | 
            -
                        'CFLAGS'          => '-I/opt/project/embedded/include',
         | 
| 84 | 
            -
                        'CXXFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 85 | 
            -
                        'CPPFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 96 | 
            +
                        'CFLAGS'          => '-I/opt/project/embedded/include -O2',
         | 
| 97 | 
            +
                        'CXXFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 98 | 
            +
                        'CPPFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 86 99 | 
             
                        'LD_RUN_PATH'     => '/opt/project/embedded/lib',
         | 
| 87 100 | 
             
                        'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
         | 
| 88 101 | 
             
                      )
         | 
| @@ -90,9 +103,9 @@ module Omnibus | |
| 90 103 | 
             
                    it 'overrides CPPFLAGS' do
         | 
| 91 104 | 
             
                      expect(subject.with_standard_compiler_flags('CPPFLAGS'=>'foo')).to eq(
         | 
| 92 105 | 
             
                        'LDFLAGS'         => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
         | 
| 93 | 
            -
                        'CFLAGS'          => '-I/opt/project/embedded/include',
         | 
| 94 | 
            -
                        'CXXFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 95 | 
            -
                        'CPPFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 106 | 
            +
                        'CFLAGS'          => '-I/opt/project/embedded/include -O2',
         | 
| 107 | 
            +
                        'CXXFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 108 | 
            +
                        'CPPFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 96 109 | 
             
                        'LD_RUN_PATH'     => '/opt/project/embedded/lib',
         | 
| 97 110 | 
             
                        'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
         | 
| 98 111 | 
             
                      )
         | 
| @@ -101,9 +114,9 @@ module Omnibus | |
| 101 114 | 
             
                      expect(subject.with_standard_compiler_flags('numberwang'=>4)).to eq(
         | 
| 102 115 | 
             
                        'numberwang'      => 4,
         | 
| 103 116 | 
             
                        'LDFLAGS'         => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
         | 
| 104 | 
            -
                        'CFLAGS'          => '-I/opt/project/embedded/include',
         | 
| 105 | 
            -
                        'CXXFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 106 | 
            -
                        'CPPFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 117 | 
            +
                        'CFLAGS'          => '-I/opt/project/embedded/include -O2',
         | 
| 118 | 
            +
                        'CXXFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 119 | 
            +
                        'CPPFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 107 120 | 
             
                        'LD_RUN_PATH'     => '/opt/project/embedded/lib',
         | 
| 108 121 | 
             
                        'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
         | 
| 109 122 | 
             
                      )
         | 
| @@ -165,9 +178,9 @@ module Omnibus | |
| 165 178 | 
             
                    it 'sets the defaults' do
         | 
| 166 179 | 
             
                      expect(subject.with_standard_compiler_flags).to eq(
         | 
| 167 180 | 
             
                        'LDFLAGS'         => '-L/opt/project/embedded/lib',
         | 
| 168 | 
            -
                        'CFLAGS'          => '-I/opt/project/embedded/include',
         | 
| 169 | 
            -
                        "CXXFLAGS"        => "-I/opt/project/embedded/include",
         | 
| 170 | 
            -
                        "CPPFLAGS"        => "-I/opt/project/embedded/include",
         | 
| 181 | 
            +
                        'CFLAGS'          => '-I/opt/project/embedded/include -O2',
         | 
| 182 | 
            +
                        "CXXFLAGS"        => "-I/opt/project/embedded/include -O2",
         | 
| 183 | 
            +
                        "CPPFLAGS"        => "-I/opt/project/embedded/include -O2",
         | 
| 171 184 | 
             
                        'LD_RUN_PATH'     => '/opt/project/embedded/lib',
         | 
| 172 185 | 
             
                        'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
         | 
| 173 186 | 
             
                      )
         | 
| @@ -199,37 +212,100 @@ module Omnibus | |
| 199 212 | 
             
                    end
         | 
| 200 213 | 
             
                  end
         | 
| 201 214 |  | 
| 202 | 
            -
                  context 'on freebsd' do
         | 
| 215 | 
            +
                  context 'on freebsd 9' do
         | 
| 203 216 | 
             
                    before do
         | 
| 204 217 | 
             
                      stub_ohai(platform: 'freebsd', version: '9.2')
         | 
| 205 218 | 
             
                    end
         | 
| 206 219 |  | 
| 207 220 | 
             
                    it 'sets the defaults' do
         | 
| 208 221 | 
             
                      expect(subject.with_standard_compiler_flags).to eq(
         | 
| 209 | 
            -
                        'CFLAGS'  => '-I/opt/project/embedded/include',
         | 
| 210 | 
            -
                        'CXXFLAGS'  => '-I/opt/project/embedded/include',
         | 
| 211 | 
            -
                        'CPPFLAGS'  => '-I/opt/project/embedded/include',
         | 
| 222 | 
            +
                        'CFLAGS'  => '-I/opt/project/embedded/include -O2',
         | 
| 223 | 
            +
                        'CXXFLAGS'  => '-I/opt/project/embedded/include -O2',
         | 
| 224 | 
            +
                        'CPPFLAGS'  => '-I/opt/project/embedded/include -O2',
         | 
| 212 225 | 
             
                        'LDFLAGS' => '-L/opt/project/embedded/lib',
         | 
| 213 226 | 
             
                        'LD_RUN_PATH' => '/opt/project/embedded/lib',
         | 
| 214 227 | 
             
                        'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig',
         | 
| 215 228 | 
             
                      )
         | 
| 216 229 | 
             
                    end
         | 
| 230 | 
            +
                  end
         | 
| 231 | 
            +
             | 
| 232 | 
            +
                  context 'on freebsd 10' do
         | 
| 233 | 
            +
                    before do
         | 
| 234 | 
            +
                      stub_ohai(platform: 'freebsd', version: '10.0')
         | 
| 235 | 
            +
                    end
         | 
| 236 | 
            +
             | 
| 237 | 
            +
                    it 'Clang as the default compiler' do
         | 
| 238 | 
            +
                      expect(subject.with_standard_compiler_flags).to eq(
         | 
| 239 | 
            +
                        'CC'              => 'clang',
         | 
| 240 | 
            +
                        'CXX'             => 'clang++',
         | 
| 241 | 
            +
                        'CFLAGS'          => '-I/opt/project/embedded/include -O2',
         | 
| 242 | 
            +
                        'CXXFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 243 | 
            +
                        'CPPFLAGS'        => '-I/opt/project/embedded/include -O2',
         | 
| 244 | 
            +
                        'LDFLAGS'         => '-L/opt/project/embedded/lib',
         | 
| 245 | 
            +
                        'LD_RUN_PATH'     => '/opt/project/embedded/lib',
         | 
| 246 | 
            +
                        'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig',
         | 
| 247 | 
            +
                      )
         | 
| 248 | 
            +
                    end
         | 
| 249 | 
            +
                  end
         | 
| 217 250 |  | 
| 218 | 
            -
             | 
| 219 | 
            -
             | 
| 220 | 
            -
             | 
| 251 | 
            +
                  context 'on Windows' do
         | 
| 252 | 
            +
                    let(:win_arch_i386) { true }
         | 
| 253 | 
            +
             | 
| 254 | 
            +
                    before do
         | 
| 255 | 
            +
                      stub_ohai(platform: 'windows', version: '2012')
         | 
| 256 | 
            +
                      allow(subject).to receive(:windows_arch_i386?).and_return(win_arch_i386)
         | 
| 257 | 
            +
                    end
         | 
| 258 | 
            +
             | 
| 259 | 
            +
                    context 'in 32-bit mode' do
         | 
| 260 | 
            +
                      it 'sets the default' do
         | 
| 261 | 
            +
                        expect(subject.with_standard_compiler_flags).to eq(
         | 
| 262 | 
            +
                          'CFLAGS'          => '-I/opt/project/embedded/include -m32 -O3 -mfpmath=sse -msse2 -march=i686',
         | 
| 263 | 
            +
                          'CXXFLAGS'        => '-I/opt/project/embedded/include -m32 -O3 -mfpmath=sse -msse2 -march=i686',
         | 
| 264 | 
            +
                          'CPPFLAGS'        => '-I/opt/project/embedded/include -m32 -O3 -mfpmath=sse -msse2 -march=i686',
         | 
| 265 | 
            +
                          'LDFLAGS'         => '-L/opt/project/embedded/lib -m32',
         | 
| 266 | 
            +
                          'LD_RUN_PATH'     => '/opt/project/embedded/lib',
         | 
| 267 | 
            +
                          'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
         | 
| 268 | 
            +
                        )
         | 
| 221 269 | 
             
                      end
         | 
| 222 270 |  | 
| 223 | 
            -
                      it ' | 
| 271 | 
            +
                      it 'sets BFD flags if requested' do
         | 
| 272 | 
            +
                        expect(subject.with_standard_compiler_flags({}, bfd_flags: true)).to eq(
         | 
| 273 | 
            +
                          'CFLAGS'          => '-I/opt/project/embedded/include -m32 -O3 -mfpmath=sse -msse2 -march=i686',
         | 
| 274 | 
            +
                          'CXXFLAGS'        => '-I/opt/project/embedded/include -m32 -O3 -mfpmath=sse -msse2 -march=i686',
         | 
| 275 | 
            +
                          'CPPFLAGS'        => '-I/opt/project/embedded/include -m32 -O3 -mfpmath=sse -msse2 -march=i686',
         | 
| 276 | 
            +
                          'LDFLAGS'         => '-L/opt/project/embedded/lib -m32',
         | 
| 277 | 
            +
                          'RCFLAGS'         => '--target=pe-i386',
         | 
| 278 | 
            +
                          'ARFLAGS'         => '--target=pe-i386',
         | 
| 279 | 
            +
                          'LD_RUN_PATH'     => '/opt/project/embedded/lib',
         | 
| 280 | 
            +
                          'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
         | 
| 281 | 
            +
                        )
         | 
| 282 | 
            +
                      end
         | 
| 283 | 
            +
                    end
         | 
| 284 | 
            +
             | 
| 285 | 
            +
                    context 'in 64-bit mode' do
         | 
| 286 | 
            +
                      let(:win_arch_i386) { false }
         | 
| 287 | 
            +
             | 
| 288 | 
            +
                      it 'sets the default' do
         | 
| 224 289 | 
             
                        expect(subject.with_standard_compiler_flags).to eq(
         | 
| 225 | 
            -
                          ' | 
| 226 | 
            -
                          ' | 
| 227 | 
            -
                          ' | 
| 228 | 
            -
                          ' | 
| 229 | 
            -
                          'CPPFLAGS'        => '-I/opt/project/embedded/include',
         | 
| 230 | 
            -
                          'LDFLAGS'         => '-L/opt/project/embedded/lib',
         | 
| 290 | 
            +
                          'CFLAGS'          => '-I/opt/project/embedded/include -m64 -O3 -mfpmath=sse -msse2 -march=x86-64',
         | 
| 291 | 
            +
                          'CXXFLAGS'        => '-I/opt/project/embedded/include -m64 -O3 -mfpmath=sse -msse2 -march=x86-64',
         | 
| 292 | 
            +
                          'CPPFLAGS'        => '-I/opt/project/embedded/include -m64 -O3 -mfpmath=sse -msse2 -march=x86-64',
         | 
| 293 | 
            +
                          'LDFLAGS'         => '-L/opt/project/embedded/lib -m64',
         | 
| 231 294 | 
             
                          'LD_RUN_PATH'     => '/opt/project/embedded/lib',
         | 
| 232 | 
            -
                          'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig' | 
| 295 | 
            +
                          'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
         | 
| 296 | 
            +
                        )
         | 
| 297 | 
            +
                      end
         | 
| 298 | 
            +
             | 
| 299 | 
            +
                      it 'sets BFD flags if requested' do
         | 
| 300 | 
            +
                        expect(subject.with_standard_compiler_flags({}, bfd_flags: true)).to eq(
         | 
| 301 | 
            +
                          'CFLAGS'          => '-I/opt/project/embedded/include -m64 -O3 -mfpmath=sse -msse2 -march=x86-64',
         | 
| 302 | 
            +
                          'CXXFLAGS'        => '-I/opt/project/embedded/include -m64 -O3 -mfpmath=sse -msse2 -march=x86-64',
         | 
| 303 | 
            +
                          'CPPFLAGS'        => '-I/opt/project/embedded/include -m64 -O3 -mfpmath=sse -msse2 -march=x86-64',
         | 
| 304 | 
            +
                          'LDFLAGS'         => '-L/opt/project/embedded/lib -m64',
         | 
| 305 | 
            +
                          'RCFLAGS'         => '--target=pe-x86-64',
         | 
| 306 | 
            +
                          'ARFLAGS'         => '--target=pe-x86-64',
         | 
| 307 | 
            +
                          'LD_RUN_PATH'     => '/opt/project/embedded/lib',
         | 
| 308 | 
            +
                          'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
         | 
| 233 309 | 
             
                        )
         | 
| 234 310 | 
             
                      end
         | 
| 235 311 | 
             
                    end
         | 
| @@ -273,6 +349,12 @@ module Omnibus | |
| 273 349 | 
             
                      )
         | 
| 274 350 | 
             
                    end
         | 
| 275 351 |  | 
| 352 | 
            +
                    it 'with_embedded_path ignores option to add msys to path' do
         | 
| 353 | 
            +
                      expect(subject.with_embedded_path({}, msys: true)).to eq(
         | 
| 354 | 
            +
                        'PATH' => prepended_path
         | 
| 355 | 
            +
                      )
         | 
| 356 | 
            +
                    end
         | 
| 357 | 
            +
             | 
| 276 358 | 
             
                    it 'prepends multiple paths to PATH' do
         | 
| 277 359 | 
             
                      expect(subject.prepend_path('/foo/bar', '/foo/baz')).to eq(
         | 
| 278 360 | 
             
                        ['/foo/bar', separator, '/foo/baz', separator, path].join
         | 
| @@ -288,6 +370,10 @@ module Omnibus | |
| 288 370 | 
             
                    let(:separator) { ';' }
         | 
| 289 371 | 
             
                    let(:path) { 'c:/Ruby193/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem' }
         | 
| 290 372 | 
             
                    let(:install_dir) { 'c:/opt/project' }
         | 
| 373 | 
            +
                    let(:prepended_path_msys) do
         | 
| 374 | 
            +
                      [ "#{install_dir}/bin", separator, "#{install_dir}/embedded/bin", separator,
         | 
| 375 | 
            +
                        "#{install_dir}/embedded/msys/1.0/bin", separator, path].join
         | 
| 376 | 
            +
                    end
         | 
| 291 377 |  | 
| 292 378 | 
             
                    context '`Path` exists in the environment' do
         | 
| 293 379 | 
             
                      before do
         | 
| @@ -306,11 +392,19 @@ module Omnibus | |
| 306 392 | 
             
                      before do
         | 
| 307 393 | 
             
                        allow(ENV).to receive(:keys).and_return(['PATH'])
         | 
| 308 394 | 
             
                      end
         | 
| 395 | 
            +
             | 
| 309 396 | 
             
                      it 'returns a path key of `PATH`' do
         | 
| 310 397 | 
             
                        expect(subject.with_embedded_path).to eq(
         | 
| 311 398 | 
             
                          'PATH' => prepended_path
         | 
| 312 399 | 
             
                        )
         | 
| 313 400 | 
             
                      end
         | 
| 401 | 
            +
             | 
| 402 | 
            +
                      it 'with_embedded_path accepts option to add msys to path' do
         | 
| 403 | 
            +
                        expect(subject.with_embedded_path({}, msys: true)).to eq(
         | 
| 404 | 
            +
                          'PATH' => prepended_path_msys
         | 
| 405 | 
            +
                        )
         | 
| 406 | 
            +
                      end
         | 
| 407 | 
            +
             | 
| 314 408 | 
             
                    end
         | 
| 315 409 | 
             
                  end
         | 
| 316 410 | 
             
                end
         | 
| @@ -447,6 +541,116 @@ module Omnibus | |
| 447 541 | 
             
                  end
         | 
| 448 542 | 
             
                end
         | 
| 449 543 |  | 
| 544 | 
            +
                describe '#fetcher' do
         | 
| 545 | 
            +
                  before do
         | 
| 546 | 
            +
                    expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", source).and_return("1.2.8")
         | 
| 547 | 
            +
                  end
         | 
| 548 | 
            +
             | 
| 549 | 
            +
                  context 'when given a source url to an archive' do
         | 
| 550 | 
            +
                    let(:source) do
         | 
| 551 | 
            +
                      {
         | 
| 552 | 
            +
                        url: 'http://example.com/foo.tar.gz',
         | 
| 553 | 
            +
                        md5: 'abcd1234'
         | 
| 554 | 
            +
                      }
         | 
| 555 | 
            +
                    end
         | 
| 556 | 
            +
             | 
| 557 | 
            +
                    context 'when relative_path is the same as name' do
         | 
| 558 | 
            +
                      let(:rel_path) { 'software' }
         | 
| 559 | 
            +
             | 
| 560 | 
            +
                      it 'ignores back-compat and leaves fetch_dir alone' do
         | 
| 561 | 
            +
                        subject.send(:fetcher)
         | 
| 562 | 
            +
                        expect(subject.project_dir).to eq(File.expand_path("#{Config.source_dir}/software/software"))
         | 
| 563 | 
            +
                      end
         | 
| 564 | 
            +
             | 
| 565 | 
            +
                      it 'sets the fetcher project_dir to fetch_dir' do
         | 
| 566 | 
            +
                        expect(subject.send(:fetcher).project_dir).to eq(File.expand_path("#{Config.source_dir}/software"))
         | 
| 567 | 
            +
                      end
         | 
| 568 | 
            +
                    end
         | 
| 569 | 
            +
             | 
| 570 | 
            +
                    context 'when relative_path is different from name' do
         | 
| 571 | 
            +
                      let(:rel_path) { 'foo' }
         | 
| 572 | 
            +
             | 
| 573 | 
            +
                      it 'ignores back-compat and leaves fetch_dir alone' do
         | 
| 574 | 
            +
                        subject.send(:fetcher)
         | 
| 575 | 
            +
                        expect(subject.project_dir).to eq(File.expand_path("#{Config.source_dir}/software/foo"))
         | 
| 576 | 
            +
                      end
         | 
| 577 | 
            +
             | 
| 578 | 
            +
                      it 'sets the fetcher project_dir to fetch_dir' do
         | 
| 579 | 
            +
                        expect(subject.send(:fetcher).project_dir).to eq(File.expand_path("#{Config.source_dir}/software"))
         | 
| 580 | 
            +
                      end
         | 
| 581 | 
            +
                    end
         | 
| 582 | 
            +
                  end
         | 
| 583 | 
            +
             | 
| 584 | 
            +
                  context 'when given source url is not an archive' do
         | 
| 585 | 
            +
                    let(:source) do
         | 
| 586 | 
            +
                      {
         | 
| 587 | 
            +
                        url: 'http://example.com/foo.txt',
         | 
| 588 | 
            +
                        md5: 'abcd1234'
         | 
| 589 | 
            +
                      }
         | 
| 590 | 
            +
                    end
         | 
| 591 | 
            +
             | 
| 592 | 
            +
                    context 'when relative_path is the same as name' do
         | 
| 593 | 
            +
                      let(:rel_path) { 'software' }
         | 
| 594 | 
            +
             | 
| 595 | 
            +
                      it 'for back-compat, changes fetch_dir' do
         | 
| 596 | 
            +
                        subject.send(:fetcher)
         | 
| 597 | 
            +
                        expect(subject.project_dir).to eq(File.expand_path("#{Config.source_dir}/software/software"))
         | 
| 598 | 
            +
                      end
         | 
| 599 | 
            +
             | 
| 600 | 
            +
                      it 'sets the fetcher project_dir to project_dir' do
         | 
| 601 | 
            +
                        expect(subject.send(:fetcher).project_dir).to eq(File.expand_path("#{Config.source_dir}/software/software"))
         | 
| 602 | 
            +
                      end
         | 
| 603 | 
            +
                    end
         | 
| 604 | 
            +
             | 
| 605 | 
            +
                    context 'when relative_path is different from name' do
         | 
| 606 | 
            +
                      let(:rel_path) { 'foo' }
         | 
| 607 | 
            +
             | 
| 608 | 
            +
                      it 'ignores back-compat and leaves fetch_dir alone' do
         | 
| 609 | 
            +
                        subject.send(:fetcher)
         | 
| 610 | 
            +
                        expect(subject.project_dir).to eq(File.expand_path("#{Config.source_dir}/software/foo"))
         | 
| 611 | 
            +
                      end
         | 
| 612 | 
            +
             | 
| 613 | 
            +
                      it 'sets the fetcher project_dir to project_dir' do
         | 
| 614 | 
            +
                        expect(subject.send(:fetcher).project_dir).to eq(File.expand_path("#{Config.source_dir}/software/foo"))
         | 
| 615 | 
            +
                      end
         | 
| 616 | 
            +
                    end
         | 
| 617 | 
            +
                  end
         | 
| 618 | 
            +
             | 
| 619 | 
            +
                  context 'when given source is a git repo' do
         | 
| 620 | 
            +
                    let(:source) do
         | 
| 621 | 
            +
                      {
         | 
| 622 | 
            +
                        git: 'http://example.com/my/git/repo',
         | 
| 623 | 
            +
                      }
         | 
| 624 | 
            +
                    end
         | 
| 625 | 
            +
             | 
| 626 | 
            +
                    context 'when relative_path is the same as name' do
         | 
| 627 | 
            +
                      let(:rel_path) { 'software' }
         | 
| 628 | 
            +
             | 
| 629 | 
            +
                      it 'for back-compat, changes fetch_dir' do
         | 
| 630 | 
            +
                        subject.send(:fetcher)
         | 
| 631 | 
            +
                        expect(subject.project_dir).to eq(File.expand_path("#{Config.source_dir}/software/software"))
         | 
| 632 | 
            +
                      end
         | 
| 633 | 
            +
             | 
| 634 | 
            +
                      it 'sets the fetcher project_dir to project_dir' do
         | 
| 635 | 
            +
                        expect(subject.send(:fetcher).project_dir).to eq(File.expand_path("#{Config.source_dir}/software/software"))
         | 
| 636 | 
            +
                      end
         | 
| 637 | 
            +
                    end
         | 
| 638 | 
            +
             | 
| 639 | 
            +
                    context 'when relative_path is different from name' do
         | 
| 640 | 
            +
                      let(:rel_path) { 'foo' }
         | 
| 641 | 
            +
             | 
| 642 | 
            +
                      it 'ignores back-compat and leaves fetch_dir alone' do
         | 
| 643 | 
            +
                        subject.send(:fetcher)
         | 
| 644 | 
            +
                        expect(subject.project_dir).to eq(File.expand_path("#{Config.source_dir}/software/foo"))
         | 
| 645 | 
            +
                      end
         | 
| 646 | 
            +
             | 
| 647 | 
            +
                      it 'sets the fetcher project_dir to project_dir' do
         | 
| 648 | 
            +
                        expect(subject.send(:fetcher).project_dir).to eq(File.expand_path("#{Config.source_dir}/software/foo"))
         | 
| 649 | 
            +
                      end
         | 
| 650 | 
            +
                    end
         | 
| 651 | 
            +
                  end
         | 
| 652 | 
            +
                end
         | 
| 653 | 
            +
             | 
| 450 654 | 
             
                describe '#shasum' do
         | 
| 451 655 | 
             
                  context 'when a filepath is given' do
         | 
| 452 656 | 
             
                    let(:path) { '/software.rb' }
         | 
    
        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: 5. | 
| 4 | 
            +
              version: 5.1.0
         | 
| 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:  | 
| 11 | 
            +
            date: 2016-03-10 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: chef-sugar
         | 
| @@ -16,14 +16,14 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: '3. | 
| 19 | 
            +
                    version: '3.3'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: '3. | 
| 26 | 
            +
                    version: '3.3'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: cleanroom
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -257,6 +257,7 @@ extensions: [] | |
| 257 257 | 
             
            extra_rdoc_files: []
         | 
| 258 258 | 
             
            files:
         | 
| 259 259 | 
             
            - ".gitignore"
         | 
| 260 | 
            +
            - ".rspec"
         | 
| 260 261 | 
             
            - ".rubocop.yml"
         | 
| 261 262 | 
             
            - ".travis.yml"
         | 
| 262 263 | 
             
            - CHANGELOG.md
         | 
| @@ -320,7 +321,6 @@ files: | |
| 320 321 | 
             
            - lib/omnibus/generator_files/config/software/zlib.rb.erb
         | 
| 321 322 | 
             
            - lib/omnibus/generator_files/gitignore.erb
         | 
| 322 323 | 
             
            - lib/omnibus/generator_files/omnibus.rb.erb
         | 
| 323 | 
            -
            - lib/omnibus/generator_files/package_scripts/makeselfinst.erb
         | 
| 324 324 | 
             
            - lib/omnibus/generator_files/package_scripts/postinst.erb
         | 
| 325 325 | 
             
            - lib/omnibus/generator_files/package_scripts/postrm.erb
         | 
| 326 326 | 
             
            - lib/omnibus/generator_files/package_scripts/preinst.erb
         | 
| @@ -364,6 +364,7 @@ files: | |
| 364 364 | 
             
            - lib/omnibus/util.rb
         | 
| 365 365 | 
             
            - lib/omnibus/version.rb
         | 
| 366 366 | 
             
            - omnibus.gemspec
         | 
| 367 | 
            +
            - resources/bff/config.erb
         | 
| 367 368 | 
             
            - resources/bff/gen.template.erb
         | 
| 368 369 | 
             
            - resources/deb/conffiles.erb
         | 
| 369 370 | 
             
            - resources/deb/control.erb
         | 
| @@ -476,7 +477,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 476 477 | 
             
                  version: '0'
         | 
| 477 478 | 
             
            requirements: []
         | 
| 478 479 | 
             
            rubyforge_project: 
         | 
| 479 | 
            -
            rubygems_version: 2. | 
| 480 | 
            +
            rubygems_version: 2.5.2
         | 
| 480 481 | 
             
            signing_key: 
         | 
| 481 482 | 
             
            specification_version: 4
         | 
| 482 483 | 
             
            summary: Omnibus is a framework for building self-installing, full-stack software
         |