omnibus 1.3.0 → 2.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +4 -1
- data/.rubocop.yml +30 -0
- data/.travis.yml +14 -3
- data/CHANGELOG.md +72 -49
- data/Gemfile +8 -5
- data/NOTICE +2 -2
- data/README.md +65 -7
- data/Rakefile +12 -3
- data/bin/makeself-header.sh +1 -1
- data/bin/makeself.sh +2 -2
- data/bin/omnibus +2 -2
- data/functional/fixtures/mac_pkg/files/mac_pkg/Resources/background.png +0 -0
- data/functional/fixtures/mac_pkg/files/mac_pkg/Resources/license.html +1 -0
- data/functional/fixtures/mac_pkg/files/mac_pkg/Resources/welcome.html +1 -0
- data/functional/fixtures/mac_pkg/package-scripts/functional-test-project/postinstall +4 -0
- data/functional/packagers/mac_pkg_spec.rb +72 -0
- data/lib/omnibus/artifact.rb +11 -13
- data/lib/omnibus/build_version.rb +18 -21
- data/lib/omnibus/builder.rb +37 -48
- data/lib/omnibus/clean_tasks.rb +3 -5
- data/lib/omnibus/cli/application.rb +46 -53
- data/lib/omnibus/cli/base.rb +16 -19
- data/lib/omnibus/cli/build.rb +13 -13
- data/lib/omnibus/cli/cache.rb +13 -15
- data/lib/omnibus/cli/release.rb +4 -9
- data/lib/omnibus/cli.rb +2 -4
- data/lib/omnibus/config.rb +43 -23
- data/lib/omnibus/exceptions.rb +35 -1
- data/lib/omnibus/fetcher.rb +9 -13
- data/lib/omnibus/fetchers/git_fetcher.rb +15 -19
- data/lib/omnibus/fetchers/net_fetcher.rb +34 -38
- data/lib/omnibus/fetchers/path_fetcher.rb +7 -9
- data/lib/omnibus/fetchers/s3_cache_fetcher.rb +3 -4
- data/lib/omnibus/fetchers.rb +3 -3
- data/lib/omnibus/health_check.rb +126 -127
- data/lib/omnibus/library.rb +11 -12
- data/lib/omnibus/overrides.rb +6 -8
- data/lib/omnibus/package_release.rb +20 -22
- data/lib/omnibus/packagers/mac_pkg.rb +285 -0
- data/lib/omnibus/project.rb +215 -110
- data/lib/omnibus/reports.rb +16 -24
- data/lib/omnibus/s3_cacher.rb +15 -21
- data/lib/omnibus/software.rb +178 -88
- data/lib/omnibus/util.rb +25 -13
- data/lib/omnibus/version.rb +2 -2
- data/lib/omnibus.rb +11 -13
- data/omnibus.gemspec +20 -18
- data/spec/artifact_spec.rb +55 -52
- data/spec/build_version_spec.rb +121 -129
- data/spec/config_spec.rb +40 -0
- data/spec/data/projects/chefdk.rb +41 -0
- data/spec/data/projects/sample.rb +10 -0
- data/spec/data/software/erchef.rb +12 -12
- data/spec/data/software/zlib.rb +67 -0
- data/spec/fetchers/git_fetcher_spec.rb +55 -48
- data/spec/fetchers/net_fetcher_spec.rb +72 -78
- data/spec/omnibus_spec.rb +59 -0
- data/spec/overrides_spec.rb +64 -64
- data/spec/package_release_spec.rb +65 -64
- data/spec/packagers/mac_pkg_spec.rb +261 -0
- data/spec/project_spec.rb +138 -0
- data/spec/s3_cacher_spec.rb +9 -10
- data/spec/software_spec.rb +71 -50
- data/spec/spec_helper.rb +14 -7
- metadata +68 -60
- data/.rspec +0 -1
- data/.yardopts +0 -6
- data/spec/software_dirs_spec.rb +0 -34
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3d821a5f79999239bb2350a3ab13b30b3c76e002
|
4
|
+
data.tar.gz: b9466b1623251bf432c310d28e3136752de2c8fa
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f5702d3ac8776901b5f47bc2dfeb5b2755b7a50b296d0184a8003c8c27c662f16eb74a3b3e4c099760228f042a3449ba8630debbe93d5eeaa28cda1236c8e1a3
|
7
|
+
data.tar.gz: cba2accc31f58449f0eac9e4ccee20d1e82b9bf228809ddd9b47c2be21d697d64c924c0087c036a2b481c1f4aa2b5129b9bb11dfb1ed53502b128aeb7c06778d
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
ClassLength:
|
2
|
+
Enabled: false
|
3
|
+
CyclomaticComplexity:
|
4
|
+
Max: 20
|
5
|
+
Documentation:
|
6
|
+
Enabled: false
|
7
|
+
GlobalVars:
|
8
|
+
Enabled: false
|
9
|
+
Encoding:
|
10
|
+
Enabled: false
|
11
|
+
HandleExceptions:
|
12
|
+
Enabled: false
|
13
|
+
IfUnlessModifier:
|
14
|
+
Enabled: false
|
15
|
+
LineLength:
|
16
|
+
Enabled: false
|
17
|
+
MethodLength:
|
18
|
+
Enabled: false
|
19
|
+
ModuleFunction:
|
20
|
+
Enabled: false
|
21
|
+
ParameterLists:
|
22
|
+
Max: 6
|
23
|
+
RaiseArgs:
|
24
|
+
Enabled: false
|
25
|
+
RescueException:
|
26
|
+
Enabled: false
|
27
|
+
TrailingComma:
|
28
|
+
EnforcedStyleForMultiline: comma
|
29
|
+
TrivialAccessors:
|
30
|
+
Enabled: false
|
data/.travis.yml
CHANGED
@@ -1,5 +1,16 @@
|
|
1
|
-
language: ruby
|
2
1
|
rvm:
|
3
|
-
- 1.9.2
|
4
2
|
- 1.9.3
|
5
|
-
|
3
|
+
|
4
|
+
bundler_args: --jobs 7 --without docs
|
5
|
+
|
6
|
+
branches:
|
7
|
+
only:
|
8
|
+
- master
|
9
|
+
|
10
|
+
script: bundle exec rake travis:ci
|
11
|
+
|
12
|
+
notifications:
|
13
|
+
hipchat:
|
14
|
+
rooms:
|
15
|
+
- secure: JdLOITSPHW5xk8eoFOmH1Js5PT6iFgswUG8fIqNq69ie2Qws2K58hPDR6HW2NBEsBb7dW1S5jT6V9RHhm0ykekvEJVa5AjebO3EsZa+Cu/VahFMg4DL+SGYgKlKrZQosd+EgVQQ3C9gj0dApGtKqf2Ej7RNESwCPY8SOduTC6d8= # Build Statuses
|
16
|
+
- secure: PmOaqp2DFyy79VpCuvSYILblK6tP0eDa9fDG9X2j+wggoosBkmlGfnSxp3A2TXlUyK62mr6/B89dRkL2aDWTJ/gqaZ34Elx2rV5S2A5YJIx9stA2+4iXeSlOF2YMNKGwBVmF/kp/nNoG2FqUkUBrRurWAOXZnwxKIhQ7+kLVb/0= # Release Engineering
|
data/CHANGELOG.md
CHANGED
@@ -1,135 +1,158 @@
|
|
1
|
+
Omnibus Ruby CHANGELOG
|
2
|
+
======================
|
3
|
+
|
4
|
+
v2.0.0 (Unreleased)
|
5
|
+
-------------------
|
6
|
+
Major changes:
|
7
|
+
- `version` is now `default_version`
|
8
|
+
- Added support for multiple software versions and version overrides
|
9
|
+
- Added support for project-specific overrides
|
10
|
+
- Added Mac DMG packaging functionality
|
11
|
+
- Require Mixlib::Config 2.0
|
12
|
+
|
13
|
+
Minor changes:
|
14
|
+
- Added a new CI pipeline on Travis
|
15
|
+
- Switch to Ruby 1.9 hash syntaxes
|
16
|
+
|
17
|
+
Tiny changes that probably won't affect you:
|
18
|
+
- `.yardopts` are no longer committed
|
19
|
+
- `.rspec` is no longer committed
|
20
|
+
- Updated copyrights to new company name
|
21
|
+
- Improved test coverage
|
22
|
+
- Miscellaneous bug fixes
|
23
|
+
|
1
24
|
## 1.3.0 (December 6, 2013)
|
2
25
|
|
3
26
|
FEATURES:
|
4
27
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
28
|
+
- Add `build_retries` global config value (still 3 by default). ([@fujin][], [#63][])
|
29
|
+
- Add support for pre-install scripts. ([@christophermaier][])
|
30
|
+
- Add support for `*.tar.xz` files. ([@jf647][], [#71][])
|
31
|
+
- Add `erb` builder command. ([@ohlol][], [#79][])
|
32
|
+
- Add `package_user`, `package_group` to project definitions for setting
|
10
33
|
user and group ownership for of deb/rpm/solaris packages. ([@ohlol][], [#80][])
|
11
|
-
|
34
|
+
- Add `config_file` to project definitions for passing `--config-files`
|
12
35
|
options to the `fpm` builder commands. ([@christophergeers][], [#85][])
|
13
36
|
|
14
37
|
IMPROVEMENTS:
|
15
38
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
39
|
+
- Bump default cpus to get better throughput when Ohai is wrong. ([@lamont-granquist][])
|
40
|
+
- Whitelist `libnsl` on Arch Linux. ([@sl4mmy][], [#67][])
|
41
|
+
- Switch to using pkgmk for Solaris. ([@lamont-granquist][], [#72][])
|
42
|
+
- Remove make install from c-example. ([@johntdyer][], [#73][])
|
43
|
+
- Update Vagrantfile template to use provisionerless base boxes. ([@schisamo][], [#74][])
|
44
|
+
- Allow access to `Omnibus.project_root` in builder blocks. ([@ohlol][], [#78][])
|
45
|
+
- Refactor how we handle loading dirs for software files. ([@benjaminws][], [#82][])
|
46
|
+
- Update depdencies: ([@schisamo][], [#86][])
|
47
|
+
- fpm 1.0.0
|
48
|
+
- mixlib-config 2.1.0
|
49
|
+
- mixlib-shellout 1.3.0
|
27
50
|
|
28
51
|
BUG FIXES:
|
29
52
|
|
30
|
-
|
31
|
-
|
53
|
+
- Properly handle `HTTP_PROXY_USER` and `HTTP_PROXY_PASS`. ([@databus23][], [#77][])
|
54
|
+
- Fix the incorrect error message logged when the Git fetcher failed to
|
32
55
|
resolve refs to commits. ([@mumoshu][], [#81][])
|
33
|
-
|
56
|
+
- Removin unsupported `config.ssh.max_tries` and `config.ssh.timeout`
|
34
57
|
from Vagrantfile template. ([@totally][], [#83][])
|
35
|
-
|
58
|
+
- Mention the required Vagrant plugins. ([@jacobvosmaer][], [#70][])
|
36
59
|
|
37
60
|
## 1.2.0 (July 12, 2013)
|
38
61
|
|
39
62
|
FEATURES:
|
40
63
|
|
41
|
-
|
64
|
+
- Add `whitelist_file` to software DSL. This allows an individual software
|
42
65
|
definition to declare files that should be ignored during health checking.
|
43
66
|
|
44
67
|
IMPROVEMENTS:
|
45
68
|
|
46
|
-
|
69
|
+
- Raise an exception if a project's dependency is not found.
|
47
70
|
|
48
71
|
BUG FIXES:
|
49
72
|
|
50
|
-
|
51
|
-
|
73
|
+
- Properly load a project's transitive dependencies.
|
74
|
+
- Ensure a component is only added to a library one time.
|
52
75
|
|
53
76
|
## 1.1.1 (July 2, 2013)
|
54
77
|
|
55
78
|
BUG FIXES:
|
56
79
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
80
|
+
- Raise an exception if a patch file is not found.
|
81
|
+
- Be more explicit about types in CPU computation.
|
82
|
+
- Include pkg version, iteration, arch for solaris packages.
|
83
|
+
- Fix assorted typos in CLI output.
|
61
84
|
|
62
85
|
## 1.1.0 (June 12, 2013)
|
63
86
|
|
64
87
|
FEATURES:
|
65
88
|
|
66
|
-
|
67
|
-
|
89
|
+
- AIX health check whitelist support
|
90
|
+
- AIX Backup-File Format (BFF) package support
|
68
91
|
|
69
92
|
IMPROVEMENTS:
|
70
93
|
|
71
|
-
|
94
|
+
- Add libstdc++ to SmartOS whitelist libs - this allows the health check pass when
|
72
95
|
depending on C++ libs.
|
73
96
|
|
74
97
|
BUG FIXES:
|
75
98
|
|
76
|
-
|
99
|
+
- [CHEF-4246] - omnibus cache populate failing
|
77
100
|
|
78
101
|
## 1.0.4 (May 23, 2013)
|
79
102
|
|
80
103
|
FEATURES:
|
81
104
|
|
82
|
-
|
105
|
+
- Add `release package` command which releases a single package with associated
|
83
106
|
metadata file to a single S3 bucket.
|
84
|
-
|
107
|
+
- Arch Linux health check whitelist support
|
85
108
|
|
86
109
|
IMPROVEMENTS:
|
87
110
|
|
88
|
-
|
111
|
+
- Add libstdc++ to Mac whitelist libs - this allows the health check pass when
|
89
112
|
depending on C++ libs.
|
90
|
-
|
113
|
+
- Change scope of `Omnibus::Library` instance from global to project.
|
91
114
|
|
92
115
|
BUG FIXES:
|
93
116
|
|
94
|
-
|
117
|
+
- [CHEF-4214] - projects in multi-project omnibus repositories share dependency scope
|
95
118
|
|
96
119
|
## 1.0.3 (May 2, 2013)
|
97
120
|
|
98
121
|
FEATURES:
|
99
122
|
|
100
|
-
|
101
|
-
|
102
|
-
|
123
|
+
- [CHEF-2576] - SmartOS health check whitelist support
|
124
|
+
- [CHEF-4141] - FreeBSD health check whitelist support
|
125
|
+
- [CHEF-3990] - Add support to uncompress zip file
|
103
126
|
|
104
127
|
BUG FIXES:
|
105
128
|
|
106
|
-
|
107
|
-
|
129
|
+
- Fix project homepage in gemspec
|
130
|
+
- Proper Thor 0.16.0, 0.17.0 suppport - Thor 0.18.0 renamed current_task to
|
108
131
|
current_command
|
109
132
|
|
110
133
|
## 1.0.2 (April 23, 2013)
|
111
134
|
|
112
135
|
IMPROVEMENTS:
|
113
136
|
|
114
|
-
|
137
|
+
- Travis CI support
|
115
138
|
|
116
139
|
BUG FIXES:
|
117
140
|
|
118
|
-
|
141
|
+
- [CHEF-4112] `omnibus build project` command does not respect the
|
119
142
|
`--no-timestamp` flag
|
120
143
|
|
121
144
|
## 1.0.1 (April 21, 2013)
|
122
145
|
|
123
146
|
BUG FIXES:
|
124
147
|
|
125
|
-
|
148
|
+
- Vagrant and Berkshelf Vagrant plugin version updates in generated project's
|
126
149
|
README.md. Current requirements for the virtualized build lab are:
|
127
|
-
|
128
|
-
|
150
|
+
- Vagrant 1.2.1+
|
151
|
+
- `vagrant-berkshelf` plugin (this was renamed from `berkshelf-vagrant`)
|
129
152
|
|
130
153
|
## 1.0.0 (April 21, 2013)
|
131
154
|
|
132
|
-
|
155
|
+
- The initial release.
|
133
156
|
|
134
157
|
<!--- The following link definition list is generated by PimpMyChangelog --->
|
135
158
|
[#63]: https://github.com/opscode/omnibus-ruby/issues/63
|
data/Gemfile
CHANGED
@@ -1,9 +1,12 @@
|
|
1
|
-
source
|
2
|
-
|
1
|
+
source 'https://rubygems.org'
|
3
2
|
gemspec
|
4
3
|
|
5
4
|
group :docs do
|
6
|
-
gem
|
7
|
-
gem
|
8
|
-
gem
|
5
|
+
gem 'yard', '~> 0.8'
|
6
|
+
gem 'redcarpet', '~> 2.2.2'
|
7
|
+
gem 'github-markup', '~> 0.7'
|
8
|
+
end
|
9
|
+
|
10
|
+
group :test do
|
11
|
+
gem 'fauxhai'
|
9
12
|
end
|
data/NOTICE
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
omnibus-ruby NOTICE
|
2
2
|
===================
|
3
3
|
|
4
|
-
Developed at
|
4
|
+
Developed at Chef Software, Inc (http://www.getchef.com).
|
5
5
|
|
6
6
|
Contributors and Copyright holders:
|
7
7
|
|
8
|
-
* Copyright 2012,
|
8
|
+
* Copyright 2012-2014, Chef Software, Inc. <legal@getchef.com>
|
9
9
|
|
data/README.md
CHANGED
@@ -12,6 +12,8 @@ Building a Full-Stack Installer with Omnibus**
|
|
12
12
|
([video](http://www.youtube.com/watch?v=q8iJAntXCNY),
|
13
13
|
[slides](https://speakerdeck.com/schisamo/eat-the-whole-bowl-building-a-full-stack-installer-with-omnibus)).
|
14
14
|
|
15
|
+
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).
|
16
|
+
|
15
17
|
## Prerequisites
|
16
18
|
|
17
19
|
Omnibus is designed to run with a minimal set of prerequisites. You'll
|
@@ -90,10 +92,10 @@ anything from the `omnibus-software` repository.)
|
|
90
92
|
An example:
|
91
93
|
|
92
94
|
```ruby
|
93
|
-
name
|
94
|
-
|
95
|
-
source
|
96
|
-
|
95
|
+
name "ruby"
|
96
|
+
default_version "1.9.2-p290"
|
97
|
+
source :url => "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-#{version}.tar.gz",
|
98
|
+
:md5 => "604da71839a6ae02b5b5b5e1b792d5eb"
|
97
99
|
|
98
100
|
dependency "zlib"
|
99
101
|
dependency "ncurses"
|
@@ -110,9 +112,9 @@ end
|
|
110
112
|
|
111
113
|
Some of the DSL methods available include:
|
112
114
|
|
113
|
-
**name**: The name of the software component.
|
115
|
+
**name**: The name of the software component (this should come first).
|
114
116
|
|
115
|
-
**
|
117
|
+
**default_version**: The version of the software component.
|
116
118
|
|
117
119
|
**source**: Directions to the location of the source.
|
118
120
|
|
@@ -177,11 +179,67 @@ platforms (though Omnibus is not limited to just those!) is created
|
|
177
179
|
for each project that you generate using `omnibus project
|
178
180
|
$MY_PROJECT_NAME`
|
179
181
|
|
182
|
+
## Multiple Software Versions and Version Overrides
|
183
|
+
|
184
|
+
You can support building multiple verisons of the same software in the same
|
185
|
+
software definition file:
|
186
|
+
|
187
|
+
```ruby
|
188
|
+
name "ruby"
|
189
|
+
default_version "1.9.2-p290"
|
190
|
+
|
191
|
+
version "1.9.2-p290" do
|
192
|
+
source :url => "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-#{version}.tar.gz",
|
193
|
+
:md5 => "604da71839a6ae02b5b5b5e1b792d5eb"
|
194
|
+
end
|
195
|
+
|
196
|
+
version "2.1.1" do
|
197
|
+
source :url => "http://ftp.ruby-lang.org/pub/ruby/2.1/ruby-#{version}.tar.gz",
|
198
|
+
:md5 => "e57fdbb8ed56e70c43f39c79da1654b2"
|
199
|
+
end
|
200
|
+
|
201
|
+
|
202
|
+
dependency "zlib"
|
203
|
+
dependency "ncurses"
|
204
|
+
dependency "openssl"
|
205
|
+
|
206
|
+
relative_path "ruby-#{version}"
|
207
|
+
|
208
|
+
build do
|
209
|
+
command "./configure"
|
210
|
+
command "make"
|
211
|
+
command "make install"
|
212
|
+
end
|
213
|
+
```
|
214
|
+
|
215
|
+
Since the software definitions are simply ruby code, you can conditionally
|
216
|
+
execute anything by wrapping it with pure ruby that tests for the version number.
|
217
|
+
|
218
|
+
The project definitions can then take advange of this by passing in overrides
|
219
|
+
to use the correct version:
|
220
|
+
|
221
|
+
```ruby
|
222
|
+
name "chef-full"
|
223
|
+
maintainer "YOUR NAME"
|
224
|
+
homepage "http://yoursite.com"
|
225
|
+
|
226
|
+
install_path "/opt/chef"
|
227
|
+
build_version "0.10.8"
|
228
|
+
build_iteration 4
|
229
|
+
|
230
|
+
override :chef, version: "2.1.1"
|
231
|
+
|
232
|
+
dependency "chef"
|
233
|
+
```
|
234
|
+
|
235
|
+
There is no checking that the version override that you supply has been
|
236
|
+
provided in a version override block in the software definition.
|
237
|
+
|
180
238
|
## License
|
181
239
|
|
182
240
|
See the LICENSE and NOTICE files for more information.
|
183
241
|
|
184
|
-
Copyright: Copyright (c) 2012--2013
|
242
|
+
Copyright: Copyright (c) 2012--2013-2014 Chef Software, Inc.
|
185
243
|
License: Apache License, Version 2.0
|
186
244
|
|
187
245
|
Licensed under the Apache License, Version 2.0 (the "License");
|
data/Rakefile
CHANGED
@@ -1,7 +1,16 @@
|
|
1
1
|
require 'bundler/setup'
|
2
2
|
require 'bundler/gem_tasks'
|
3
|
+
|
3
4
|
require 'rspec/core/rake_task'
|
4
|
-
|
5
|
+
RSpec::Core::RakeTask.new(:unit)
|
6
|
+
|
7
|
+
require 'rubocop/rake_task'
|
8
|
+
desc 'Run Ruby style checks'
|
9
|
+
Rubocop::RakeTask.new(:style)
|
10
|
+
|
11
|
+
namespace :travis do
|
12
|
+
desc 'Run tests on Travis'
|
13
|
+
task ci: ['style', 'unit']
|
14
|
+
end
|
5
15
|
|
6
|
-
|
7
|
-
YARD::Rake::YardocTask.new
|
16
|
+
task default: ['travis:ci']
|
data/bin/makeself-header.sh
CHANGED
@@ -65,7 +65,7 @@ Makeself version $MS_VERSION
|
|
65
65
|
\$0 --lsm Print embedded lsm entry (or no LSM)
|
66
66
|
\$0 --list Print the list of files in the archive
|
67
67
|
\$0 --check Checks integrity of the archive
|
68
|
-
|
68
|
+
|
69
69
|
2) Running \$0 :
|
70
70
|
\$0 [options] [--] [additional arguments to embedded script]
|
71
71
|
with following options (in that order)
|
data/bin/makeself.sh
CHANGED
@@ -22,13 +22,13 @@
|
|
22
22
|
# support for non-temporary archives. Ideas thanks to Francois Petitjean
|
23
23
|
# - 1.3 : More patches from Bjarni R. Einarsson and Francois Petitjean:
|
24
24
|
# Support for no compression (--nocomp), script is no longer mandatory,
|
25
|
-
# automatic launch in an xterm, optional verbose output, and -target
|
25
|
+
# automatic launch in an xterm, optional verbose output, and -target
|
26
26
|
# archive option to indicate where to extract the files.
|
27
27
|
# - 1.4 : Improved UNIX compatibility (Francois Petitjean)
|
28
28
|
# Automatic integrity checking, support of LSM files (Francois Petitjean)
|
29
29
|
# - 1.5 : Many bugfixes. Optionally disable xterm spawning.
|
30
30
|
# - 1.5.1 : More bugfixes, added archive options -list and -check.
|
31
|
-
# - 1.5.2 : Cosmetic changes to inform the user of what's going on with big
|
31
|
+
# - 1.5.2 : Cosmetic changes to inform the user of what's going on with big
|
32
32
|
# archives (Quake III demo)
|
33
33
|
# - 1.5.3 : Check for validity of the DISPLAY variable before launching an xterm.
|
34
34
|
# More verbosity in xterms and check for embedded command's return value.
|
data/bin/omnibus
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
# Trap interrupts to quit cleanly. See
|
4
4
|
# https://twitter.com/mitchellh/status/283014103189053442
|
5
|
-
Signal.trap(
|
5
|
+
Signal.trap('INT') { exit 1 }
|
6
6
|
|
7
|
-
|
7
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
8
8
|
|
9
9
|
require 'omnibus/cli'
|
10
10
|
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
Apache 2 license
|
@@ -0,0 +1 @@
|
|
1
|
+
Demonstration package.
|
@@ -0,0 +1,72 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) 2014 Chef Software, Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
require 'stringio'
|
19
|
+
require 'omnibus/packagers/mac_pkg'
|
20
|
+
require 'spec_helper'
|
21
|
+
|
22
|
+
describe Omnibus::Packagers::MacPkg do
|
23
|
+
|
24
|
+
let(:mac_pkg_identifier) { 'test.pkg.functional-test-project' }
|
25
|
+
|
26
|
+
let(:omnibus_root) { File.expand_path('../../fixtures/mac_pkg', __FILE__) }
|
27
|
+
|
28
|
+
let(:scripts_path) { "#{omnibus_root}/package-scripts" }
|
29
|
+
|
30
|
+
let(:files_path) { "#{omnibus_root}/files" }
|
31
|
+
|
32
|
+
let(:package_dir) { Dir.pwd }
|
33
|
+
|
34
|
+
let(:project) do
|
35
|
+
|
36
|
+
Omnibus.stub(:project_root).and_return(omnibus_root)
|
37
|
+
Omnibus.config.stub(:package_dir).and_return(package_dir)
|
38
|
+
|
39
|
+
project_file = <<-P
|
40
|
+
name "functional-test-project"
|
41
|
+
maintainer "YOU"
|
42
|
+
homepage "http://www.theonion.com/articles/drunken-man-careens-wildly-across-internet,35249/"
|
43
|
+
build_version "23.4.2"
|
44
|
+
install_path "/opt/functional-test-project"
|
45
|
+
mac_pkg_identifier "#{mac_pkg_identifier}"
|
46
|
+
P
|
47
|
+
Omnibus::Project.new(project_file, __FILE__)
|
48
|
+
end
|
49
|
+
|
50
|
+
let(:packager) do
|
51
|
+
Omnibus::Packagers::MacPkg.new(project)
|
52
|
+
end
|
53
|
+
|
54
|
+
def create_app_dir
|
55
|
+
FileUtils.mkdir('/opt/functional-test-project') unless File.directory?('/opt/functional-test-project')
|
56
|
+
File.open('/opt/functional-test-project/itworks.txt', 'w+') do |f|
|
57
|
+
f.puts 'hello world'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# This will run the Omnibus::Packagers::MacPkg code without any stubs to
|
62
|
+
# verify it works. In order for this test to run correctly, you have to run
|
63
|
+
# as root or manually create the /opt/functional-test-project directory.
|
64
|
+
#
|
65
|
+
# There is no verification that the package was correctly created, you have
|
66
|
+
# to install it yourself to verify.
|
67
|
+
it 'builds a package' do
|
68
|
+
create_app_dir
|
69
|
+
packager.build
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
data/lib/omnibus/artifact.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module Omnibus
|
2
2
|
class Artifact
|
3
|
-
|
4
3
|
attr_reader :path
|
5
4
|
attr_reader :platforms
|
6
5
|
attr_reader :config
|
@@ -65,9 +64,9 @@ module Omnibus
|
|
65
64
|
def add_to_v2_release_manifest!(release_manifest)
|
66
65
|
platforms.each do |distro, version, arch|
|
67
66
|
pkg_info = {
|
68
|
-
|
69
|
-
|
70
|
-
|
67
|
+
'relpath' => relpath,
|
68
|
+
'md5' => md5,
|
69
|
+
'sha256' => sha256,
|
71
70
|
}
|
72
71
|
|
73
72
|
release_manifest[distro] ||= {}
|
@@ -92,13 +91,13 @@ module Omnibus
|
|
92
91
|
def flat_metadata
|
93
92
|
distro, version, arch = build_platform
|
94
93
|
{
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
94
|
+
'platform' => distro,
|
95
|
+
'platform_version' => version,
|
96
|
+
'arch' => arch,
|
97
|
+
'version' => build_version,
|
98
|
+
'basename' => File.basename(path),
|
99
|
+
'md5' => md5,
|
100
|
+
'sha256' => sha256,
|
102
101
|
}
|
103
102
|
end
|
104
103
|
|
@@ -140,7 +139,7 @@ module Omnibus
|
|
140
139
|
def digest(digest_class)
|
141
140
|
digest = digest_class.new
|
142
141
|
File.open(path) do |io|
|
143
|
-
while chunk = io.read(1024 * 8)
|
142
|
+
while (chunk = io.read(1024 * 8))
|
144
143
|
digest.update(chunk)
|
145
144
|
end
|
146
145
|
end
|
@@ -148,4 +147,3 @@ module Omnibus
|
|
148
147
|
end
|
149
148
|
end
|
150
149
|
end
|
151
|
-
|