omnibus 7.0.13 → 8.1.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -6
- data/README.md +38 -6
- data/bin/omnibus +1 -1
- data/lib/omnibus.rb +2 -2
- data/lib/omnibus/build_version.rb +1 -1
- data/lib/omnibus/build_version_dsl.rb +5 -7
- data/lib/omnibus/builder.rb +16 -11
- data/lib/omnibus/cleaner.rb +1 -1
- data/lib/omnibus/cli.rb +2 -2
- data/lib/omnibus/cli/changelog.rb +1 -1
- data/lib/omnibus/compressors/base.rb +1 -1
- data/lib/omnibus/compressors/dmg.rb +5 -2
- data/lib/omnibus/compressors/tgz.rb +2 -2
- data/lib/omnibus/config.rb +1 -1
- data/lib/omnibus/core_extensions/open_uri.rb +1 -1
- data/lib/omnibus/digestable.rb +2 -2
- data/lib/omnibus/download_helpers.rb +6 -2
- data/lib/omnibus/fetchers/file_fetcher.rb +1 -1
- data/lib/omnibus/fetchers/net_fetcher.rb +1 -1
- data/lib/omnibus/fetchers/path_fetcher.rb +1 -1
- data/lib/omnibus/file_syncer.rb +1 -1
- data/lib/omnibus/generator.rb +2 -2
- data/lib/omnibus/generator_files/README.md.erb +2 -1
- data/lib/omnibus/git_cache.rb +2 -2
- data/lib/omnibus/health_check.rb +2 -0
- data/lib/omnibus/licensing.rb +2 -2
- data/lib/omnibus/logger.rb +1 -1
- data/lib/omnibus/manifest.rb +1 -1
- data/lib/omnibus/manifest_diff.rb +7 -13
- data/lib/omnibus/metadata.rb +8 -4
- data/lib/omnibus/ohai.rb +1 -1
- data/lib/omnibus/package.rb +1 -1
- data/lib/omnibus/packager.rb +6 -14
- data/lib/omnibus/packagers/base.rb +1 -1
- data/lib/omnibus/packagers/msi.rb +1 -1
- data/lib/omnibus/packagers/pkg.rb +14 -4
- data/lib/omnibus/packagers/rpm.rb +23 -9
- data/lib/omnibus/packagers/solaris.rb +1 -1
- data/lib/omnibus/project.rb +2 -2
- data/lib/omnibus/publishers/artifactory_publisher.rb +2 -2
- data/lib/omnibus/s3_cache.rb +1 -1
- data/lib/omnibus/s3_helpers.rb +1 -1
- data/lib/omnibus/software.rb +5 -16
- data/lib/omnibus/sugarable.rb +5 -14
- data/lib/omnibus/templating.rb +1 -1
- data/lib/omnibus/thread_pool.rb +0 -2
- data/lib/omnibus/util.rb +1 -1
- data/lib/omnibus/version.rb +1 -1
- data/lib/omnibus/whitelist.rb +22 -0
- data/omnibus.gemspec +8 -8
- data/resources/ips/doc-transform.erb +1 -0
- data/resources/msi/CustomActionFastMsi.CA.dll +0 -0
- data/resources/msi/source.wxs.erb +2 -10
- data/resources/pkg/distribution.xml.erb +1 -1
- data/resources/rpm/spec.erb +2 -2
- data/spec/functional/fetchers/net_fetcher_spec.rb +2 -11
- data/spec/support/path_helpers.rb +2 -2
- data/spec/unit/compressor_spec.rb +2 -2
- data/spec/unit/compressors/dmg_spec.rb +12 -9
- data/spec/unit/compressors/tgz_spec.rb +4 -4
- data/spec/unit/fetchers/net_fetcher_spec.rb +5 -1
- data/spec/unit/metadata_spec.rb +8 -6
- data/spec/unit/packager_spec.rb +7 -14
- data/spec/unit/packagers/ips_spec.rb +1 -0
- data/spec/unit/packagers/pkg_spec.rb +20 -4
- data/spec/unit/packagers/rpm_spec.rb +15 -5
- data/spec/unit/project_spec.rb +6 -6
- data/spec/unit/software_spec.rb +29 -120
- metadata +36 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af309d0053f4ea4f740cbf3268c4e4d0087e014ab9abfaca3899c279b41a7a88
|
4
|
+
data.tar.gz: f7c125f7f25811d2b74a7aa03b7065594e4b887f520ff7432e7409b7855ab898
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1227ee4ad5223279042ed600811c2348f10d78abe08859b27a4552a4dd81bdd554842b007ed43ee7aa79403cc9512117733a5db50b9f16dd104d0033a63ef45b
|
7
|
+
data.tar.gz: 8683b174eeb40459b16bf337c7d1e0421b9642172e34e4a61d93348296d45b0fcf9d1272971ac43cdfeee4eb899659c8856ffc2fc0cbc84138b57f481e231107
|
data/Gemfile
CHANGED
@@ -11,10 +11,5 @@ end
|
|
11
11
|
group :debug do
|
12
12
|
gem "pry"
|
13
13
|
gem "pry-byebug"
|
14
|
-
gem "pry-stack_explorer"
|
15
|
-
end
|
16
|
-
|
17
|
-
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.5")
|
18
|
-
gem "ohai", "<15"
|
19
|
-
gem "activesupport", "~> 5.0"
|
14
|
+
gem "pry-stack_explorer"
|
20
15
|
end
|
data/README.md
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
[![Gem Version](http://img.shields.io/gem/v/omnibus.svg)][gem]
|
4
4
|
[![Build Status](https://badge.buildkite.com/446fd6049a9a5eeab50112aba117d3b7670ec085acb91f78dd.svg?branch=master)](https://buildkite.com/chef-oss/chef-omnibus-master-verify)
|
5
|
-
[![AppVeyor Build Status](http://img.shields.io/appveyor/ci/chef/omnibus.svg?label=AppVeyor)][appveyor]
|
6
5
|
|
7
6
|
**Umbrella Project**: [Chef Foundation](https://github.com/chef/chef-oss-practices/blob/master/projects/chef-foundation.md)
|
8
7
|
|
@@ -16,7 +15,6 @@ Easily create full-stack installers for your project across a variety of platfor
|
|
16
15
|
|
17
16
|
Seth Chisamore and Christopher Maier of CHEF gave an introductory talk on Omnibus at ChefConf 2013, entitled **Eat the Whole Bowl: Building a Full-Stack Installer with Omnibus**:
|
18
17
|
|
19
|
-
- [Video](http://www.youtube.com/watch?v=q8iJAntXCNY)
|
20
18
|
- [Slides](https://speakerdeck.com/schisamo/eat-the-whole-bowl-building-a-full-stack-installer-with-omnibus)
|
21
19
|
|
22
20
|
This project is managed by the CHEF Release Engineering team. For more information on the Release Engineering team's contribution, triage, and release process, please consult the [CHEF Release Engineering OSS Management Guide](https://docs.google.com/a/opscode.com/document/d/1oJB0vZb_3bl7_ZU2YMDBkMFdL-EWplW1BJv_FXTUOzg/edit).
|
@@ -25,8 +23,7 @@ This project is managed by the CHEF Release Engineering team. For more informati
|
|
25
23
|
|
26
24
|
Omnibus is designed to run with a minimal set of prerequisites. You will need the following:
|
27
25
|
|
28
|
-
- Ruby 2.
|
29
|
-
- Bundler
|
26
|
+
- Ruby 2.6+
|
30
27
|
|
31
28
|
## Get Started
|
32
29
|
|
@@ -46,10 +43,11 @@ $ omnibus new $MY_PROJECT_NAME
|
|
46
43
|
|
47
44
|
This will generate a complete project skeleton in the directory `omnibus-$MY_PROJECT_NAME`
|
48
45
|
|
46
|
+
By default this will make a directory called `omnibus-$MY_PROJECT_NAME` assuming you're keeping your omnibus config separate from the repo. However, keeping it *in* your repo is a common practice, so feel to rename this directory to `omnibus` and place it in the top level of your projects source repo.
|
47
|
+
|
49
48
|
```bash
|
50
49
|
$ cd omnibus-$MY_PROJECT_NAME
|
51
50
|
$ bundle install --binstubs
|
52
|
-
$ bin/omnibus build $MY_PROJECT_NAME
|
53
51
|
```
|
54
52
|
|
55
53
|
More details can be found in the generated project's README file.
|
@@ -143,7 +141,7 @@ DSL Method | Description
|
|
143
141
|
`package` | Invoke a packager-specific DSL
|
144
142
|
`compress` | Invoke a compressor-specific DSL
|
145
143
|
|
146
|
-
By default a timestamp is appended to the build_version. You can turn this behavior off by setting `append_timestamp` to `false` in your
|
144
|
+
By default a timestamp is appended to the build_version. You can turn this behavior off by setting `append_timestamp` to `false` in your `omnibus.rb` or using `--override append_timestamp:false` at the command line.
|
147
145
|
|
148
146
|
For more information, please see the [`Project` documentation](http://www.rubydoc.info/github/chef/omnibus/Omnibus/Project).
|
149
147
|
|
@@ -267,6 +265,40 @@ $PWD/config/software/foo.rb
|
|
267
265
|
|
268
266
|
The first instance of `foo.rb` that is encountered will be used. Please note that **local** (vendored) softare definitions take precedence!
|
269
267
|
|
268
|
+
## Building
|
269
|
+
|
270
|
+
Once you've created your package and software definitions you can build with:
|
271
|
+
|
272
|
+
```shell
|
273
|
+
./bin/omnibus build $MY_PACKAGE_NAME
|
274
|
+
```
|
275
|
+
|
276
|
+
However there are several caveats to be aware of:
|
277
|
+
|
278
|
+
1. You will almost certainly want to uncomment the `base_dir` in `omnibus.rb`,
|
279
|
+
or at the very least change `cache_dir` and `build_dir` as otherwise it'll try
|
280
|
+
to use `/var/cache/omnibus` and `/opt/$MY_PROJECT_NAME`, requiring root.
|
281
|
+
1. The default configuration created for you references a lot of things
|
282
|
+
that are in the default config that come from the `omnibus-software` gem.
|
283
|
+
So you want to use those you'll need to either uncomment it in the `Gemfile`,
|
284
|
+
or fork it, and then reference your own
|
285
|
+
1. If this is a ruby project and you want binstubs in `/opt/$project/bin`, you
|
286
|
+
will either need to use [appbundler](https://github.com/chef/appbundler), or
|
287
|
+
you will need to have a post install step to create those binstubs.
|
288
|
+
- Side note, appbundler requires that you include your Gemfile and gemspec
|
289
|
+
in your gem.
|
290
|
+
- Also, needs to be in your Gemfile for you to use it, as it also must
|
291
|
+
be in the resulting gem.
|
292
|
+
1. If you specify an override of the version of the `ruby`, you will also need
|
293
|
+
to override `rubygems` and `bundler` to match the versions in that version of
|
294
|
+
`ruby` or you'll get failures around bundler version mismatches.
|
295
|
+
|
296
|
+
The build command above will of course build on your local host thus being
|
297
|
+
specific to the OS and base system you are on. But the skeleten setup by
|
298
|
+
`omnibus new` already setup kitchen for you so that it's easy to build for
|
299
|
+
a variety of OSes, See the `README.md` in your generated omnibus directory
|
300
|
+
for details.
|
301
|
+
|
270
302
|
## Version Manifest
|
271
303
|
|
272
304
|
Git-based software definitions may specify branches as their default_version. In this case, the exact git revision to use will be determined at build-time unless a project override (see below) or external version manifest is used. To generate a version manifest use the `omnibus manifest` command:
|
data/bin/omnibus
CHANGED
data/lib/omnibus.rb
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
require "omnibus/core_extensions"
|
18
18
|
|
19
19
|
require "cleanroom"
|
20
|
-
require "pathname"
|
20
|
+
require "pathname" unless defined?(Pathname)
|
21
21
|
|
22
22
|
require "omnibus/digestable"
|
23
23
|
require "omnibus/exceptions"
|
@@ -208,7 +208,7 @@ module Omnibus
|
|
208
208
|
# @return [Pathname]
|
209
209
|
#
|
210
210
|
def source_root
|
211
|
-
@source_root ||= Pathname.new(File.expand_path("
|
211
|
+
@source_root ||= Pathname.new(File.expand_path("..", __dir__))
|
212
212
|
end
|
213
213
|
|
214
214
|
#
|
@@ -14,7 +14,7 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "time"
|
17
|
+
require "time" unless defined?(Time.zone_offset)
|
18
18
|
|
19
19
|
module Omnibus
|
20
20
|
class BuildVersionDSL
|
@@ -136,12 +136,10 @@ module Omnibus
|
|
136
136
|
return false if build_info.nil?
|
137
137
|
|
138
138
|
build_info.split(".").any? do |part|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
false
|
144
|
-
end
|
139
|
+
Time.strptime(part, Omnibus::BuildVersion::TIMESTAMP_FORMAT)
|
140
|
+
true
|
141
|
+
rescue ArgumentError
|
142
|
+
false
|
145
143
|
end
|
146
144
|
end
|
147
145
|
|
data/lib/omnibus/builder.rb
CHANGED
@@ -14,10 +14,10 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "fileutils"
|
18
|
-
require "mixlib/shellout"
|
19
|
-
require "ostruct"
|
20
|
-
require "pathname"
|
17
|
+
require "fileutils" unless defined?(FileUtils)
|
18
|
+
require "mixlib/shellout" unless defined?(Mixlib::ShellOut)
|
19
|
+
require "ostruct" unless defined?(OpenStruct)
|
20
|
+
require "pathname" unless defined?(Pathname)
|
21
21
|
require "omnibus/whitelist"
|
22
22
|
|
23
23
|
module Omnibus
|
@@ -373,11 +373,16 @@ module Omnibus
|
|
373
373
|
# @param (see #command)
|
374
374
|
# @return (see #command)
|
375
375
|
#
|
376
|
-
def appbundle(software_name,
|
376
|
+
def appbundle(software_name, options = {})
|
377
377
|
build_commands << BuildCommand.new("appbundle `#{software_name}'") do
|
378
378
|
bin_dir = "#{install_dir}/bin"
|
379
379
|
appbundler_bin = embedded_bin("appbundler")
|
380
380
|
|
381
|
+
lockdir = options.delete(:lockdir)
|
382
|
+
gem = options.delete(:gem)
|
383
|
+
without = options.delete(:without)
|
384
|
+
extra_bin_files = options.delete(:extra_bin_files)
|
385
|
+
|
381
386
|
lockdir ||=
|
382
387
|
begin
|
383
388
|
app_software = project.softwares.find do |p|
|
@@ -535,7 +540,7 @@ module Omnibus
|
|
535
540
|
def mkdir(directory, options = {})
|
536
541
|
build_commands << BuildCommand.new("mkdir `#{directory}'") do
|
537
542
|
Dir.chdir(software.project_dir) do
|
538
|
-
FileUtils.mkdir_p(directory, options)
|
543
|
+
FileUtils.mkdir_p(directory, **options)
|
539
544
|
end
|
540
545
|
end
|
541
546
|
end
|
@@ -557,7 +562,7 @@ module Omnibus
|
|
557
562
|
parent = File.dirname(file)
|
558
563
|
FileUtils.mkdir_p(parent) unless File.directory?(parent)
|
559
564
|
|
560
|
-
FileUtils.touch(file, options)
|
565
|
+
FileUtils.touch(file, **options)
|
561
566
|
end
|
562
567
|
end
|
563
568
|
end
|
@@ -578,7 +583,7 @@ module Omnibus
|
|
578
583
|
build_commands << BuildCommand.new("delete `#{path}'") do
|
579
584
|
Dir.chdir(software.project_dir) do
|
580
585
|
FileSyncer.glob(path).each do |file|
|
581
|
-
FileUtils.rm_rf(file, options)
|
586
|
+
FileUtils.rm_rf(file, **options)
|
582
587
|
end
|
583
588
|
end
|
584
589
|
end
|
@@ -629,7 +634,7 @@ module Omnibus
|
|
629
634
|
log.warn(log_key) { "no matched files for glob #{command}" }
|
630
635
|
else
|
631
636
|
files.each do |file|
|
632
|
-
FileUtils.cp_r(file, destination, options)
|
637
|
+
FileUtils.cp_r(file, destination, **options)
|
633
638
|
end
|
634
639
|
end
|
635
640
|
end
|
@@ -658,7 +663,7 @@ module Omnibus
|
|
658
663
|
log.warn(log_key) { "no matched files for glob #{command}" }
|
659
664
|
else
|
660
665
|
files.each do |file|
|
661
|
-
FileUtils.mv(file, destination, options)
|
666
|
+
FileUtils.mv(file, destination, **options)
|
662
667
|
end
|
663
668
|
end
|
664
669
|
end
|
@@ -690,7 +695,7 @@ module Omnibus
|
|
690
695
|
log.warn(log_key) { "no matched files for glob #{command}" }
|
691
696
|
else
|
692
697
|
files.each do |file|
|
693
|
-
FileUtils.ln_s(file, destination, options)
|
698
|
+
FileUtils.ln_s(file, destination, **options)
|
694
699
|
end
|
695
700
|
end
|
696
701
|
end
|
data/lib/omnibus/cleaner.rb
CHANGED
data/lib/omnibus/cli.rb
CHANGED
@@ -18,7 +18,7 @@ require "omnibus/changelog"
|
|
18
18
|
require "omnibus/changelog_printer"
|
19
19
|
require "omnibus/manifest_diff"
|
20
20
|
require "omnibus/semantic_version"
|
21
|
-
require "ffi_yajl"
|
21
|
+
require "ffi_yajl" unless defined?(FFI_Yajl)
|
22
22
|
|
23
23
|
module Omnibus
|
24
24
|
class Command::ChangeLog < Command::Base
|
@@ -259,8 +259,11 @@ module Omnibus
|
|
259
259
|
sync
|
260
260
|
hdiutil unmount "#{@device}"
|
261
261
|
# Give some time to the system so unmount dmg
|
262
|
-
|
263
|
-
hdiutil detach "#{@device}"
|
262
|
+
ATTEMPTS=1
|
263
|
+
until [ $ATTEMPTS -eq 6 ] || hdiutil detach "#{@device}"; do
|
264
|
+
sleep 10
|
265
|
+
echo Attempt number $(( ATTEMPTS++ ))
|
266
|
+
done
|
264
267
|
hdiutil convert \\
|
265
268
|
"#{writable_dmg}" \\
|
266
269
|
-format UDZO \\
|
@@ -14,8 +14,8 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "rubygems/package"
|
18
|
-
require "zlib"
|
17
|
+
require "rubygems/package" unless defined?(Gem::Package)
|
18
|
+
require "zlib" unless defined?(Zlib)
|
19
19
|
|
20
20
|
module Omnibus
|
21
21
|
class Compressor::TGZ < Compressor::Base
|
data/lib/omnibus/config.rb
CHANGED
data/lib/omnibus/digestable.rb
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "open-uri"
|
17
|
+
require "open-uri" unless defined?(OpenURI)
|
18
18
|
require "ruby-progressbar"
|
19
19
|
|
20
20
|
module Omnibus
|
@@ -77,7 +77,11 @@ module Omnibus
|
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
-
|
80
|
+
if RUBY_VERSION.to_f < 2.7
|
81
|
+
file = open(from_url, options)
|
82
|
+
else
|
83
|
+
file = URI.open(from_url, options)
|
84
|
+
end
|
81
85
|
# This is a temporary file. Close and flush it before attempting to copy
|
82
86
|
# it over.
|
83
87
|
file.close
|
data/lib/omnibus/file_syncer.rb
CHANGED
data/lib/omnibus/generator.rb
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "thor"
|
17
|
+
require "thor" unless defined?(Thor)
|
18
18
|
|
19
19
|
module Omnibus
|
20
20
|
class Generator < Thor::Group
|
@@ -73,7 +73,7 @@ module Omnibus
|
|
73
73
|
class << self
|
74
74
|
# Set the source root for Thor
|
75
75
|
def source_root
|
76
|
-
File.expand_path("
|
76
|
+
File.expand_path("generator_files", __dir__)
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
@@ -114,7 +114,8 @@ section:
|
|
114
114
|
```shell
|
115
115
|
$ bin/kitchen login ubuntu-1804
|
116
116
|
[vagrant@ubuntu...] $ . load-omnibus-toolchain.sh
|
117
|
-
[vagrant@ubuntu...] $
|
117
|
+
[vagrant@ubuntu...] $ [ -e .bundle ] && sudo chown -R vagrant:vagrant .bundle
|
118
|
+
[vagrant@ubuntu...] $ cd <%= config[:name] %> # or 'cd <%= config[:name] %>/omnibus' if your omnibus project is embedded in your main project
|
118
119
|
[vagrant@ubuntu...] $ bundle install
|
119
120
|
[vagrant@ubuntu...] $ bin/omnibus build <%= config[:name] %>
|
120
121
|
```
|