omnibus 8.3.2 → 9.0.11
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/lib/omnibus/config.rb +12 -0
- data/lib/omnibus/exceptions.rb +11 -0
- data/lib/omnibus/fetchers/net_fetcher.rb +4 -11
- data/lib/omnibus/health_check.rb +11 -2
- data/lib/omnibus/metadata.rb +1 -1
- data/lib/omnibus/project.rb +1 -1
- data/lib/omnibus/software.rb +33 -4
- data/lib/omnibus/version.rb +1 -1
- data/lib/omnibus/whitelist.rb +6 -0
- data/omnibus.gemspec +3 -2
- data/spec/functional/builder_spec.rb +1 -1
- data/spec/functional/fetchers/net_fetcher_spec.rb +20 -0
- data/spec/support/examples.rb +1 -1
- data/spec/support/ohai_helpers.rb +1 -1
- data/spec/unit/builder_spec.rb +19 -19
- data/spec/unit/config_spec.rb +1 -0
- data/spec/unit/fetchers/net_fetcher_spec.rb +14 -14
- data/spec/unit/project_spec.rb +1 -1
- data/spec/unit/software_spec.rb +23 -6
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c7c8bc84ab97c3a75715fc42df6d16ea4df3a301cc24fd6b6b096f65684790f
|
4
|
+
data.tar.gz: 70613619043bc015ad98e7748f4bf93ba6daad5c41eb41155bb817edd2e06d98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 060c19bb8659c184104e6dd7e4a035ff6250098b555948202a5ecaaf11af00f94e9625c8a07aeb337ec9748c3a8e5b6c2e48edd866b85a582387dbe8db26f1df
|
7
|
+
data.tar.gz: fd7b52b9bf73774a0b42b3dc5bca7e367abce0660c64e1df1d26bb78b77b106e33f9e759c52caf526445392bcd52fc6f41fe3a54006aec055cce5a776b807d89
|
data/lib/omnibus/config.rb
CHANGED
@@ -601,6 +601,18 @@ module Omnibus
|
|
601
601
|
# @return [true, false]
|
602
602
|
default(:fatal_transitive_dependency_licensing_warnings, false)
|
603
603
|
|
604
|
+
# Fail the build when health check does not succeed. This may only be set to false
|
605
|
+
# for very specific use-cases in the omnibus project. e.g. creating a wrapper installer
|
606
|
+
#
|
607
|
+
# @return [true, false]
|
608
|
+
default(:health_check, true)
|
609
|
+
|
610
|
+
# Use the internal_source URL when fetching software dependencies. e.g. when creating an
|
611
|
+
# omnibus package using artifactory as the source url.
|
612
|
+
#
|
613
|
+
# @return [true, false]
|
614
|
+
default(:use_internal_sources, false)
|
615
|
+
|
604
616
|
# --------------------------------------------------
|
605
617
|
# @!endgroup
|
606
618
|
#
|
data/lib/omnibus/exceptions.rb
CHANGED
@@ -351,4 +351,15 @@ module Omnibus
|
|
351
351
|
EOH
|
352
352
|
end
|
353
353
|
end
|
354
|
+
|
355
|
+
class InternalSourceMissing < Error
|
356
|
+
def initialize(software)
|
357
|
+
super <<~EOH
|
358
|
+
Internal source missing for #{software.name}.
|
359
|
+
|
360
|
+
When :use_internal_sources is set in the configuration you must specify an
|
361
|
+
internal_source for sources fetched from a url.
|
362
|
+
EOH
|
363
|
+
end
|
364
|
+
end
|
354
365
|
end
|
@@ -147,6 +147,8 @@ module Omnibus
|
|
147
147
|
def download_url
|
148
148
|
if Config.use_s3_caching
|
149
149
|
S3Cache.url_for(self)
|
150
|
+
elsif Config.use_internal_sources && !source[:internal]
|
151
|
+
raise InternalSourceMissing.new(self)
|
150
152
|
else
|
151
153
|
source[:url]
|
152
154
|
end
|
@@ -212,7 +214,7 @@ module Omnibus
|
|
212
214
|
# :seven_zip - use 7zip for all tar/compressed tar files on windows.
|
213
215
|
# :lax_tar - use tar.exe on windows but ignore errors.
|
214
216
|
#
|
215
|
-
#
|
217
|
+
# 7z has issues on windows.
|
216
218
|
#
|
217
219
|
# 7z cannot extract and untar at the same time. You need to extract to a
|
218
220
|
# temporary location and then extract again into project_dir.
|
@@ -221,15 +223,6 @@ module Omnibus
|
|
221
223
|
# location simply results in a text file with the target path written in
|
222
224
|
# it. It does this without throwing any errors.
|
223
225
|
#
|
224
|
-
# bsdtar will exit(1) if it is encounters symlinks on windows. So we can't
|
225
|
-
# use shellout! directly.
|
226
|
-
#
|
227
|
-
# bsdtar will also exit(1) and fail to overwrite files at the destination
|
228
|
-
# during extraction if a file already exists at the destination and is
|
229
|
-
# marked read-only. This used to be a problem when we weren't properly
|
230
|
-
# cleaning an existing project_dir. It should be less of a problem now...
|
231
|
-
# but who knows.
|
232
|
-
#
|
233
226
|
def extract
|
234
227
|
# Only used by tar
|
235
228
|
compression_switch = ""
|
@@ -243,7 +236,7 @@ module Omnibus
|
|
243
236
|
returns = [0]
|
244
237
|
returns << 1 if source[:extract] == :lax_tar
|
245
238
|
|
246
|
-
shellout!("tar #{compression_switch}xf #{
|
239
|
+
shellout!("tar #{compression_switch}xf #{downloaded_file} --force-local -C#{project_dir}", returns: returns)
|
247
240
|
elsif downloaded_file.end_with?(*COMPRESSED_TAR_EXTENSIONS)
|
248
241
|
Dir.mktmpdir do |temp_dir|
|
249
242
|
log.debug(log_key) { "Temporarily extracting `#{safe_downloaded_file}' to `#{temp_dir}'" }
|
data/lib/omnibus/health_check.rb
CHANGED
@@ -64,6 +64,10 @@ module Omnibus
|
|
64
64
|
# if the healthchecks pass
|
65
65
|
#
|
66
66
|
def run!
|
67
|
+
unless Config.health_check
|
68
|
+
log.info(log_key) { "Health check skipped as specified in config for #{project.name}" }
|
69
|
+
return true
|
70
|
+
end
|
67
71
|
measure("Health check time") do
|
68
72
|
log.info(log_key) { "Running health on #{project.name}" }
|
69
73
|
bad_libs, good_libs =
|
@@ -345,11 +349,16 @@ module Omnibus
|
|
345
349
|
bad_libs = {}
|
346
350
|
good_libs = {}
|
347
351
|
|
348
|
-
|
352
|
+
# The case/when below depends on the "current_library" being output with a : at the end
|
353
|
+
# and then the dependencies on subsequent lines in the form "library.so.1 => /lib/64/library.so.1"
|
354
|
+
# This output format only happens if ldd is passed multiple libraries (for Solaris, similar to Linux)
|
355
|
+
# FIXME if any of the `when` clauses in the `health_check_*` methods run before the `current_library`
|
356
|
+
# they probably should error out with an explicit callout of formatting with their environment's
|
357
|
+
# respective ldd parsing
|
358
|
+
read_shared_libs("find #{project.install_dir}/ -type f | xargs file | grep \"ELF\" | awk -F: '{print $1}' | sed -e 's/:$//'", "xargs ldd") do |line|
|
349
359
|
case line
|
350
360
|
when /^(.+):$/
|
351
361
|
current_library = Regexp.last_match[1]
|
352
|
-
log.debug(log_key) { "Analyzing dependencies for #{current_library}" }
|
353
362
|
when /^\s+(.+) \=\>\s+(.+)( \(.+\))?$/
|
354
363
|
name = Regexp.last_match[1]
|
355
364
|
linked = Regexp.last_match[2]
|
data/lib/omnibus/metadata.rb
CHANGED
@@ -218,7 +218,7 @@ module Omnibus
|
|
218
218
|
# version is the same as Windows 2012R2. It's only here for completeness
|
219
219
|
# and documentation.
|
220
220
|
when /6\.3\.\d+/, "8.1" then "8.1"
|
221
|
-
when /^10\.0/ then "10"
|
221
|
+
when "10", /^10\.0/ then "10"
|
222
222
|
else
|
223
223
|
raise UnknownPlatformVersion.new(platform, platform_version)
|
224
224
|
end
|
data/lib/omnibus/project.rb
CHANGED
@@ -179,7 +179,7 @@ module Omnibus
|
|
179
179
|
if null?(val)
|
180
180
|
@install_dir || raise(MissingRequiredAttribute.new(self, :install_dir, "/opt/chef"))
|
181
181
|
else
|
182
|
-
@install_dir = val.tr('\\', "/").squeeze("/").chomp("/")
|
182
|
+
@install_dir = val.tr('\\', "/").squeeze("/").chomp("/") # rubocop:disable Style/StringLiterals
|
183
183
|
end
|
184
184
|
end
|
185
185
|
expose :install_dir
|
data/lib/omnibus/software.rb
CHANGED
@@ -336,7 +336,7 @@ module Omnibus
|
|
336
336
|
extra_keys = val.keys - [
|
337
337
|
:git, :file, :path, :url, # fetcher types
|
338
338
|
:md5, :sha1, :sha256, :sha512, # hash type - common to all fetchers
|
339
|
-
:cookie, :warning, :unsafe, :extract, :cached_name, :authorization, # used by net_fetcher
|
339
|
+
:cookie, :warning, :unsafe, :extract, :cached_name, :authorization, :internal, # used by net_fetcher
|
340
340
|
:options, # used by path_fetcher
|
341
341
|
:submodules # used by git_fetcher
|
342
342
|
]
|
@@ -351,8 +351,21 @@ module Omnibus
|
|
351
351
|
"not include duplicate keys. Duplicate keys: #{duplicate_keys.inspect}")
|
352
352
|
end
|
353
353
|
|
354
|
-
|
355
|
-
|
354
|
+
if Config.use_internal_sources && val[:url]
|
355
|
+
if internal_source_set? && val[:internal].nil?
|
356
|
+
# We only want to replace the hash types here
|
357
|
+
hash_types = %i{md5 sha1 sha256 sha512}
|
358
|
+
val.each_key do |key|
|
359
|
+
val.delete(key) unless hash_types.include?(key)
|
360
|
+
end
|
361
|
+
end
|
362
|
+
|
363
|
+
@source ||= {}
|
364
|
+
@source.merge!(val)
|
365
|
+
else
|
366
|
+
@source ||= {}
|
367
|
+
@source.merge!(val)
|
368
|
+
end
|
356
369
|
end
|
357
370
|
|
358
371
|
override = canonicalize_source(overrides[:source])
|
@@ -360,6 +373,22 @@ module Omnibus
|
|
360
373
|
end
|
361
374
|
expose :source
|
362
375
|
|
376
|
+
def internal_source_set?
|
377
|
+
@source && @source[:internal] == true
|
378
|
+
end
|
379
|
+
|
380
|
+
def internal_source(val = NULL)
|
381
|
+
unless val.is_a?(Hash)
|
382
|
+
raise InvalidValue.new(:internal_source,
|
383
|
+
"be a kind of `Hash', but was `#{val.class.inspect}'")
|
384
|
+
end
|
385
|
+
if Config.use_internal_sources
|
386
|
+
val[:internal] = true
|
387
|
+
source(val)
|
388
|
+
end
|
389
|
+
end
|
390
|
+
expose :internal_source
|
391
|
+
|
363
392
|
#
|
364
393
|
# Set or retrieve the {#default_version} of the software to build.
|
365
394
|
#
|
@@ -717,7 +746,7 @@ module Omnibus
|
|
717
746
|
{
|
718
747
|
"CC" => "clang",
|
719
748
|
"CXX" => "clang++",
|
720
|
-
"LDFLAGS" => "-L#{install_dir}/embedded/lib",
|
749
|
+
"LDFLAGS" => "-L#{install_dir}/embedded/lib -Wl,-rpath,#{install_dir}/embedded/lib",
|
721
750
|
"CFLAGS" => "-I#{install_dir}/embedded/include -O3 -D_FORTIFY_SOURCE=2 -fstack-protector",
|
722
751
|
}
|
723
752
|
when "windows"
|
data/lib/omnibus/version.rb
CHANGED
data/lib/omnibus/whitelist.rb
CHANGED
@@ -88,11 +88,13 @@ OMNIOS_WHITELIST_LIBS = [
|
|
88
88
|
SOLARIS_WHITELIST_LIBS = [
|
89
89
|
/libaio\.so/,
|
90
90
|
/libavl\.so/,
|
91
|
+
/libbsm\.so/,
|
91
92
|
/libcrypt_[di]\.so/,
|
92
93
|
/libcrypto.so/,
|
93
94
|
/libcurses\.so/,
|
94
95
|
/libdoor\.so/,
|
95
96
|
/libgen\.so/,
|
97
|
+
/libinetutil\.so/,
|
96
98
|
/libmd5\.so/,
|
97
99
|
/libmd\.so/,
|
98
100
|
/libmp\.so/,
|
@@ -102,9 +104,11 @@ SOLARIS_WHITELIST_LIBS = [
|
|
102
104
|
/libsocket\.so/,
|
103
105
|
/libssl.so/,
|
104
106
|
/libthread.so/,
|
107
|
+
/libtsol\.so/,
|
105
108
|
/libuutil\.so/,
|
106
109
|
/libkstat\.so/,
|
107
110
|
# solaris 11 libraries:
|
111
|
+
/libstdc\+\+\.so/,
|
108
112
|
/libc\.so\.1/,
|
109
113
|
/libm\.so\.2/,
|
110
114
|
/libdl\.so\.1/,
|
@@ -173,6 +177,8 @@ MAC_WHITELIST_LIBS = [
|
|
173
177
|
|
174
178
|
FREEBSD_WHITELIST_LIBS = [
|
175
179
|
/libc\.so/,
|
180
|
+
/libc\+\+\.so/,
|
181
|
+
/libcxxrt\.so/,
|
176
182
|
/libgcc_s\.so/,
|
177
183
|
/libcrypt\.so/,
|
178
184
|
/libm\.so/,
|
data/omnibus.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |gem|
|
|
20
20
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
21
21
|
gem.require_paths = ["lib"]
|
22
22
|
|
23
|
-
gem.add_dependency "aws-sdk-s3", "~> 1"
|
23
|
+
gem.add_dependency "aws-sdk-s3", "~> 1.116.0"
|
24
24
|
gem.add_dependency "chef-utils", ">= 15.4"
|
25
25
|
gem.add_dependency "chef-cleanroom", "~> 1.0"
|
26
26
|
gem.add_dependency "ffi-yajl", "~> 2.2"
|
@@ -30,13 +30,14 @@ Gem::Specification.new do |gem|
|
|
30
30
|
gem.add_dependency "thor", ">= 0.18", "< 2.0"
|
31
31
|
gem.add_dependency "license_scout", "~> 1.0"
|
32
32
|
gem.add_dependency "contracts", ">= 0.16.0", "< 0.17.0"
|
33
|
+
gem.add_dependency "rexml", "~> 3.2"
|
33
34
|
|
34
35
|
gem.add_dependency "mixlib-versioning"
|
35
36
|
gem.add_dependency "pedump"
|
36
37
|
|
37
38
|
gem.add_development_dependency "artifactory", "~> 3.0"
|
38
39
|
gem.add_development_dependency "aruba", "~> 2.0"
|
39
|
-
gem.add_development_dependency "chefstyle", "=
|
40
|
+
gem.add_development_dependency "chefstyle", "= 2.2.2"
|
40
41
|
gem.add_development_dependency "fauxhai-ng", ">= 7.5"
|
41
42
|
gem.add_development_dependency "rspec", "~> 3.0"
|
42
43
|
gem.add_development_dependency "rspec-json_expectations"
|
@@ -222,7 +222,7 @@ module Omnibus
|
|
222
222
|
output = capture_logging { subject.build }
|
223
223
|
|
224
224
|
appbundler_path = File.join(embedded_bin_dir, "appbundler")
|
225
|
-
appbundler_path.gsub!(%r{/}, '\\') if windows?
|
225
|
+
appbundler_path.gsub!(%r{/}, '\\') if windows? # rubocop:disable Style/StringLiterals
|
226
226
|
expect(output).to include("#{appbundler_path} '#{project_dir}' '#{bin_dir}'")
|
227
227
|
end
|
228
228
|
end
|
@@ -173,6 +173,26 @@ module Omnibus
|
|
173
173
|
end
|
174
174
|
end
|
175
175
|
|
176
|
+
context "when use_internal_sources is true and no internal source url" do
|
177
|
+
before { Omnibus::Config.use_internal_sources(true) }
|
178
|
+
|
179
|
+
it "raises an exception" do
|
180
|
+
expect { fetch! }.to raise_error(InternalSourceMissing)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
context "when use_internal_sources is true and internal source url given" do
|
185
|
+
before { Omnibus::Config.use_internal_sources(true) }
|
186
|
+
let(:source) do
|
187
|
+
{ url: source_url, md5: source_md5, internal: true }
|
188
|
+
end
|
189
|
+
|
190
|
+
it "downloads the file" do
|
191
|
+
fetch!
|
192
|
+
expect(downloaded_file).to be_a_file
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
176
196
|
context "source with sha1" do
|
177
197
|
let(:source) do
|
178
198
|
{ url: source_url, sha1: source_sha1 }
|
data/spec/support/examples.rb
CHANGED
@@ -60,7 +60,7 @@ RSpec.shared_examples "a software" do |name = "chefdk"|
|
|
60
60
|
|
61
61
|
allow(software).to receive(:embedded_bin) do |binary|
|
62
62
|
p = File.join(embedded_bin_dir, binary)
|
63
|
-
p.gsub!(%r{/}, '\\') if windows?
|
63
|
+
p.gsub!(%r{/}, '\\') if windows? # rubocop:disable Style/StringLiterals
|
64
64
|
p
|
65
65
|
end
|
66
66
|
end
|
@@ -14,7 +14,7 @@ module Omnibus
|
|
14
14
|
# If we asked for Windows, we should also specify that magical
|
15
15
|
# +File::ALT_SEPARATOR+ variable
|
16
16
|
if options[:platform] && options[:platform] == "windows"
|
17
|
-
stub_const("File::ALT_SEPARATOR", '\\')
|
17
|
+
stub_const("File::ALT_SEPARATOR", '\\') # rubocop:disable Style/StringLiterals
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
data/spec/unit/builder_spec.rb
CHANGED
@@ -23,7 +23,7 @@ module Omnibus
|
|
23
23
|
allow(subject).to receive(:windows?).and_return(on_windows)
|
24
24
|
allow(subject).to receive(:windows_safe_path) do |*args|
|
25
25
|
path = File.join(*args)
|
26
|
-
path.gsub!(File::SEPARATOR, '\\') if on_windows
|
26
|
+
path.gsub!(File::SEPARATOR, '\\') if on_windows # rubocop:disable Style/StringLiterals
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -171,7 +171,7 @@ module Omnibus
|
|
171
171
|
context "when :bin is present" do
|
172
172
|
it "uses the custom bin" do
|
173
173
|
expect(subject).to receive(:command)
|
174
|
-
.with("/path/to/make", in_msys_bash: true)
|
174
|
+
.with("/path/to/make", { in_msys_bash: true })
|
175
175
|
subject.make(bin: "/path/to/make")
|
176
176
|
end
|
177
177
|
end
|
@@ -185,7 +185,7 @@ module Omnibus
|
|
185
185
|
|
186
186
|
it "uses gmake and sets MAKE=gmake" do
|
187
187
|
expect(subject).to receive(:command)
|
188
|
-
.with("gmake", env: { "MAKE" => "gmake" }, in_msys_bash: true)
|
188
|
+
.with("gmake", { env: { "MAKE" => "gmake" }, in_msys_bash: true } )
|
189
189
|
subject.make
|
190
190
|
end
|
191
191
|
end
|
@@ -198,26 +198,26 @@ module Omnibus
|
|
198
198
|
|
199
199
|
it "uses make" do
|
200
200
|
expect(subject).to receive(:command)
|
201
|
-
.with("make", in_msys_bash: true)
|
201
|
+
.with("make", { in_msys_bash: true } )
|
202
202
|
subject.make
|
203
203
|
end
|
204
204
|
end
|
205
205
|
|
206
206
|
it "accepts 0 options" do
|
207
207
|
expect(subject).to receive(:command)
|
208
|
-
.with("make", in_msys_bash: true)
|
208
|
+
.with("make", { in_msys_bash: true } )
|
209
209
|
expect { subject.make }.to_not raise_error
|
210
210
|
end
|
211
211
|
|
212
212
|
it "accepts an additional command string" do
|
213
213
|
expect(subject).to receive(:command)
|
214
|
-
.with("make install", in_msys_bash: true)
|
214
|
+
.with("make install", { in_msys_bash: true } )
|
215
215
|
expect { subject.make("install") }.to_not raise_error
|
216
216
|
end
|
217
217
|
|
218
218
|
it "persists given options" do
|
219
219
|
expect(subject).to receive(:command)
|
220
|
-
.with("make", timeout: 3600, in_msys_bash: true)
|
220
|
+
.with("make", { timeout: 3600, in_msys_bash: true } )
|
221
221
|
subject.make(timeout: 3600)
|
222
222
|
end
|
223
223
|
end
|
@@ -242,7 +242,7 @@ module Omnibus
|
|
242
242
|
|
243
243
|
it "appends platform host to the options" do
|
244
244
|
expect(subject).to receive(:command)
|
245
|
-
.with("./configure --build=x86_64-w64-mingw32 --prefix=#{project_dir}/embedded", in_msys_bash: true)
|
245
|
+
.with("./configure --build=x86_64-w64-mingw32 --prefix=#{project_dir}/embedded", { in_msys_bash: true } )
|
246
246
|
subject.configure
|
247
247
|
end
|
248
248
|
end
|
@@ -258,7 +258,7 @@ module Omnibus
|
|
258
258
|
|
259
259
|
it "appends platform host to the options" do
|
260
260
|
expect(subject).to receive(:command)
|
261
|
-
.with("./configure --build=i686-w64-mingw32 --prefix=#{project_dir}/embedded", in_msys_bash: true)
|
261
|
+
.with("./configure --build=i686-w64-mingw32 --prefix=#{project_dir}/embedded", { in_msys_bash: true } )
|
262
262
|
subject.configure
|
263
263
|
end
|
264
264
|
end
|
@@ -266,7 +266,7 @@ module Omnibus
|
|
266
266
|
context "when :bin is present" do
|
267
267
|
it "uses the custom bin" do
|
268
268
|
expect(subject).to receive(:command)
|
269
|
-
.with("/path/to/configure --prefix=#{project_dir}/embedded", in_msys_bash: true)
|
269
|
+
.with("/path/to/configure --prefix=#{project_dir}/embedded", { in_msys_bash: true } )
|
270
270
|
subject.configure(bin: "/path/to/configure")
|
271
271
|
end
|
272
272
|
end
|
@@ -274,32 +274,32 @@ module Omnibus
|
|
274
274
|
context "when :prefix is present" do
|
275
275
|
it "emits non-empty prefix" do
|
276
276
|
expect(subject).to receive(:command)
|
277
|
-
.with("./configure --prefix=/some/prefix", in_msys_bash: true)
|
277
|
+
.with("./configure --prefix=/some/prefix", { in_msys_bash: true } )
|
278
278
|
subject.configure(prefix: "/some/prefix")
|
279
279
|
end
|
280
280
|
|
281
281
|
it "omits prefix if empty" do
|
282
282
|
expect(subject).to receive(:command)
|
283
|
-
.with("./configure", in_msys_bash: true)
|
283
|
+
.with("./configure", { in_msys_bash: true } )
|
284
284
|
subject.configure(prefix: "")
|
285
285
|
end
|
286
286
|
end
|
287
287
|
|
288
288
|
it "accepts 0 options" do
|
289
289
|
expect(subject).to receive(:command)
|
290
|
-
.with("./configure --prefix=#{project_dir}/embedded", in_msys_bash: true)
|
290
|
+
.with("./configure --prefix=#{project_dir}/embedded", { in_msys_bash: true } )
|
291
291
|
expect { subject.configure }.to_not raise_error
|
292
292
|
end
|
293
293
|
|
294
294
|
it "accepts an additional command string" do
|
295
295
|
expect(subject).to receive(:command)
|
296
|
-
.with("./configure --prefix=#{project_dir}/embedded --myopt", in_msys_bash: true)
|
296
|
+
.with("./configure --prefix=#{project_dir}/embedded --myopt", { in_msys_bash: true } )
|
297
297
|
expect { subject.configure("--myopt") }.to_not raise_error
|
298
298
|
end
|
299
299
|
|
300
300
|
it "persists given options" do
|
301
301
|
expect(subject).to receive(:command)
|
302
|
-
.with("./configure --prefix=#{project_dir}/embedded", timeout: 3600, in_msys_bash: true)
|
302
|
+
.with("./configure --prefix=#{project_dir}/embedded", { timeout: 3600, in_msys_bash: true } )
|
303
303
|
subject.configure(timeout: 3600)
|
304
304
|
end
|
305
305
|
end
|
@@ -321,28 +321,28 @@ module Omnibus
|
|
321
321
|
it "invokes patch with patch level 1 unless specified" do
|
322
322
|
expect { subject.patch(source: "good_patch") }.to_not raise_error
|
323
323
|
expect(subject).to receive(:shellout!)
|
324
|
-
.with("patch -p1 -i #{project_dir}/patch_location2/good_patch", in_msys_bash: true)
|
324
|
+
.with("patch -p1 -i #{project_dir}/patch_location2/good_patch", { in_msys_bash: true } )
|
325
325
|
run_build_command
|
326
326
|
end
|
327
327
|
|
328
328
|
it "invokes patch with patch level provided" do
|
329
329
|
expect { subject.patch(source: "good_patch", plevel: 0) }.to_not raise_error
|
330
330
|
expect(subject).to receive(:shellout!)
|
331
|
-
.with("patch -p0 -i #{project_dir}/patch_location2/good_patch", in_msys_bash: true)
|
331
|
+
.with("patch -p0 -i #{project_dir}/patch_location2/good_patch", { in_msys_bash: true } )
|
332
332
|
run_build_command
|
333
333
|
end
|
334
334
|
|
335
335
|
it "invokes patch differently if target is provided" do
|
336
336
|
expect { subject.patch(source: "good_patch", target: "target/path") }.to_not raise_error
|
337
337
|
expect(subject).to receive(:shellout!)
|
338
|
-
.with("cat #{project_dir}/patch_location2/good_patch | patch -p1 target/path", in_msys_bash: true)
|
338
|
+
.with("cat #{project_dir}/patch_location2/good_patch | patch -p1 target/path", { in_msys_bash: true } )
|
339
339
|
run_build_command
|
340
340
|
end
|
341
341
|
|
342
342
|
it "persists other options" do
|
343
343
|
expect { subject.patch(source: "good_patch", timeout: 3600) }.to_not raise_error
|
344
344
|
expect(subject).to receive(:shellout!)
|
345
|
-
.with("patch -p1 -i #{project_dir}/patch_location2/good_patch", timeout: 3600, in_msys_bash: true)
|
345
|
+
.with("patch -p1 -i #{project_dir}/patch_location2/good_patch", { timeout: 3600, in_msys_bash: true } )
|
346
346
|
run_build_command
|
347
347
|
end
|
348
348
|
end
|
data/spec/unit/config_spec.rb
CHANGED
@@ -45,6 +45,7 @@ module Omnibus
|
|
45
45
|
include_examples "a configurable", :fetcher_read_timeout, 60
|
46
46
|
include_examples "a configurable", :fetcher_retries, 5
|
47
47
|
include_examples "a configurable", :fatal_licensing_warnings, false
|
48
|
+
include_examples "a configurable", :health_check, true
|
48
49
|
include_examples "a configurable", :fips_mode, false
|
49
50
|
|
50
51
|
describe "#workers" do
|
@@ -421,19 +421,19 @@ module Omnibus
|
|
421
421
|
it_behaves_like "an extractor", "zip", {},
|
422
422
|
['7z.exe x C:\\file.zip -oC:\\tmp\\project -r -y']
|
423
423
|
it_behaves_like "an extractor", "tar", {},
|
424
|
-
[[
|
424
|
+
[["tar xf C:/file.tar --force-local -CC:/tmp/project", { returns: [0] }]]
|
425
425
|
it_behaves_like "an extractor", "tgz", {},
|
426
|
-
[[
|
426
|
+
[["tar zxf C:/file.tgz --force-local -CC:/tmp/project", { returns: [0] }]]
|
427
427
|
it_behaves_like "an extractor", "tar.gz", {},
|
428
|
-
[[
|
428
|
+
[["tar zxf C:/file.tar.gz --force-local -CC:/tmp/project", { returns: [0] }]]
|
429
429
|
it_behaves_like "an extractor", "tar.bz2", {},
|
430
|
-
[[
|
430
|
+
[["tar jxf C:/file.tar.bz2 --force-local -CC:/tmp/project", { returns: [0] }]]
|
431
431
|
it_behaves_like "an extractor", "txz", {},
|
432
|
-
[[
|
432
|
+
[["tar Jxf C:/file.txz --force-local -CC:/tmp/project", { returns: [0] }]]
|
433
433
|
it_behaves_like "an extractor", "tar.xz", {},
|
434
|
-
[[
|
434
|
+
[["tar Jxf C:/file.tar.xz --force-local -CC:/tmp/project", { returns: [0] }]]
|
435
435
|
it_behaves_like "an extractor", "tar.lzma", {},
|
436
|
-
[[
|
436
|
+
[["tar --lzma -xf C:/file.tar.lzma --force-local -CC:/tmp/project", { returns: [0] }]]
|
437
437
|
end
|
438
438
|
|
439
439
|
context "when seven_zip extract strategy is chosen" do
|
@@ -469,19 +469,19 @@ module Omnibus
|
|
469
469
|
it_behaves_like "an extractor", "zip", { extract: :lax_tar },
|
470
470
|
['7z.exe x C:\\file.zip -oC:\\tmp\\project -r -y']
|
471
471
|
it_behaves_like "an extractor", "tar", { extract: :lax_tar },
|
472
|
-
[[
|
472
|
+
[["tar xf C:/file.tar --force-local -CC:/tmp/project", { returns: [0, 1] }]]
|
473
473
|
it_behaves_like "an extractor", "tgz", { extract: :lax_tar },
|
474
|
-
[[
|
474
|
+
[["tar zxf C:/file.tgz --force-local -CC:/tmp/project", { returns: [0, 1] }]]
|
475
475
|
it_behaves_like "an extractor", "tar.gz", { extract: :lax_tar },
|
476
|
-
[[
|
476
|
+
[["tar zxf C:/file.tar.gz --force-local -CC:/tmp/project", { returns: [0, 1] }]]
|
477
477
|
it_behaves_like "an extractor", "tar.bz2", { extract: :lax_tar },
|
478
|
-
[[
|
478
|
+
[["tar jxf C:/file.tar.bz2 --force-local -CC:/tmp/project", { returns: [0, 1] }]]
|
479
479
|
it_behaves_like "an extractor", "txz", { extract: :lax_tar },
|
480
|
-
[[
|
480
|
+
[["tar Jxf C:/file.txz --force-local -CC:/tmp/project", { returns: [0, 1] }]]
|
481
481
|
it_behaves_like "an extractor", "tar.xz", { extract: :lax_tar },
|
482
|
-
[[
|
482
|
+
[["tar Jxf C:/file.tar.xz --force-local -CC:/tmp/project", { returns: [0, 1] }]]
|
483
483
|
it_behaves_like "an extractor", "tar.lzma", { extract: :lax_tar },
|
484
|
-
[[
|
484
|
+
[["tar --lzma -xf C:/file.tar.lzma --force-local -CC:/tmp/project", { returns: [0, 1] }]]
|
485
485
|
end
|
486
486
|
end
|
487
487
|
|
data/spec/unit/project_spec.rb
CHANGED
@@ -229,7 +229,7 @@ module Omnibus
|
|
229
229
|
|
230
230
|
context "when on Windows" do
|
231
231
|
before { stub_ohai(platform: "windows", version: "2019") }
|
232
|
-
before { stub_const("File::ALT_SEPARATOR", '\\') }
|
232
|
+
before { stub_const("File::ALT_SEPARATOR", '\\') } # rubocop:disable Style/StringLiterals
|
233
233
|
it "returns a Windows iteration" do
|
234
234
|
expect(subject.build_iteration).to eq(1)
|
235
235
|
end
|
data/spec/unit/software_spec.rb
CHANGED
@@ -16,10 +16,18 @@ module Omnibus
|
|
16
16
|
}
|
17
17
|
end
|
18
18
|
|
19
|
+
let(:internal_source) do
|
20
|
+
{
|
21
|
+
url: "http://internal.com/",
|
22
|
+
md5: "efgh5678",
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
19
26
|
let(:rel_path) { "software" }
|
20
27
|
|
21
28
|
subject do
|
22
29
|
local_source = source
|
30
|
+
local_internal_source = internal_source
|
23
31
|
local_rel_path = rel_path
|
24
32
|
|
25
33
|
described_class.new(project).evaluate do
|
@@ -27,6 +35,7 @@ module Omnibus
|
|
27
35
|
default_version "1.2.3"
|
28
36
|
|
29
37
|
source local_source
|
38
|
+
internal_source local_internal_source
|
30
39
|
relative_path local_rel_path
|
31
40
|
end
|
32
41
|
end
|
@@ -239,7 +248,7 @@ module Omnibus
|
|
239
248
|
"CXXFLAGS" => "-I/opt/project/embedded/include -O3 -D_FORTIFY_SOURCE=2 -fstack-protector",
|
240
249
|
"CPPFLAGS" => "-I/opt/project/embedded/include -O3 -D_FORTIFY_SOURCE=2 -fstack-protector",
|
241
250
|
"CXX" => "clang++",
|
242
|
-
"LDFLAGS" => "-L/opt/project/embedded/lib",
|
251
|
+
"LDFLAGS" => "-L/opt/project/embedded/lib -Wl,-rpath,/opt/project/embedded/lib",
|
243
252
|
"LD_RUN_PATH" => "/opt/project/embedded/lib",
|
244
253
|
"PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
|
245
254
|
"OMNIBUS_INSTALL_DIR" => "/opt/project"
|
@@ -543,7 +552,7 @@ module Omnibus
|
|
543
552
|
|
544
553
|
it "fetches from a fully expanded git path" do
|
545
554
|
expect(subject.source).to eq(git: "https://github.com/chef/ohai.git")
|
546
|
-
expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", git: "https://github.com/chef/ohai.git").and_return("1.2.8")
|
555
|
+
expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", { git: "https://github.com/chef/ohai.git" } ).and_return("1.2.8")
|
547
556
|
subject.send(:fetcher)
|
548
557
|
end
|
549
558
|
|
@@ -552,7 +561,7 @@ module Omnibus
|
|
552
561
|
|
553
562
|
it "fetches from the override path" do
|
554
563
|
expect(subject.source).to eq(git: "https://blah.com/git.git")
|
555
|
-
expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", git: "https://blah.com/git.git").and_return("1.2.8")
|
564
|
+
expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", { git: "https://blah.com/git.git" } ).and_return("1.2.8")
|
556
565
|
subject.send(:fetcher)
|
557
566
|
end
|
558
567
|
end
|
@@ -562,7 +571,7 @@ module Omnibus
|
|
562
571
|
|
563
572
|
it "fetches from the override path" do
|
564
573
|
expect(subject.source).to eq(git: "https://github.com/a/b.git")
|
565
|
-
expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", git: "https://github.com/a/b.git").and_return("1.2.8")
|
574
|
+
expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", { git: "https://github.com/a/b.git" } ).and_return("1.2.8")
|
566
575
|
subject.send(:fetcher)
|
567
576
|
end
|
568
577
|
end
|
@@ -577,7 +586,7 @@ module Omnibus
|
|
577
586
|
|
578
587
|
it "fetches from the git spec" do
|
579
588
|
expect(subject.source).to eq(git: "https://blah.com/git.git")
|
580
|
-
expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", git: "https://blah.com/git.git").and_return("1.2.8")
|
589
|
+
expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", { git: "https://blah.com/git.git" } ).and_return("1.2.8")
|
581
590
|
subject.send(:fetcher)
|
582
591
|
end
|
583
592
|
|
@@ -586,12 +595,20 @@ module Omnibus
|
|
586
595
|
|
587
596
|
it "fetches from the override path" do
|
588
597
|
expect(subject.source).to eq(git: "https://github.com/a/b.git")
|
589
|
-
expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", git: "https://github.com/a/b.git").and_return("1.2.8")
|
598
|
+
expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", { git: "https://github.com/a/b.git" } ).and_return("1.2.8")
|
590
599
|
subject.send(:fetcher)
|
591
600
|
end
|
592
601
|
end
|
593
602
|
end
|
594
603
|
|
604
|
+
context "when software internal_source is given" do
|
605
|
+
before { Omnibus::Config.use_internal_sources(true) }
|
606
|
+
|
607
|
+
it "sets the source with internal: true" do
|
608
|
+
expect(subject.source).to eq(url: "http://internal.com/", md5: "efgh5678", internal: true)
|
609
|
+
end
|
610
|
+
end
|
611
|
+
|
595
612
|
describe "#fetcher" do
|
596
613
|
before do
|
597
614
|
expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", source).and_return("1.2.8")
|
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
|
+
version: 9.0.11
|
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: 2022-
|
11
|
+
date: 2022-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-s3
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.116.0
|
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:
|
26
|
+
version: 1.116.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: chef-utils
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -174,6 +174,20 @@ dependencies:
|
|
174
174
|
- - "<"
|
175
175
|
- !ruby/object:Gem::Version
|
176
176
|
version: 0.17.0
|
177
|
+
- !ruby/object:Gem::Dependency
|
178
|
+
name: rexml
|
179
|
+
requirement: !ruby/object:Gem::Requirement
|
180
|
+
requirements:
|
181
|
+
- - "~>"
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: '3.2'
|
184
|
+
type: :runtime
|
185
|
+
prerelease: false
|
186
|
+
version_requirements: !ruby/object:Gem::Requirement
|
187
|
+
requirements:
|
188
|
+
- - "~>"
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '3.2'
|
177
191
|
- !ruby/object:Gem::Dependency
|
178
192
|
name: mixlib-versioning
|
179
193
|
requirement: !ruby/object:Gem::Requirement
|
@@ -236,14 +250,14 @@ dependencies:
|
|
236
250
|
requirements:
|
237
251
|
- - '='
|
238
252
|
- !ruby/object:Gem::Version
|
239
|
-
version:
|
253
|
+
version: 2.2.2
|
240
254
|
type: :development
|
241
255
|
prerelease: false
|
242
256
|
version_requirements: !ruby/object:Gem::Requirement
|
243
257
|
requirements:
|
244
258
|
- - '='
|
245
259
|
- !ruby/object:Gem::Version
|
246
|
-
version:
|
260
|
+
version: 2.2.2
|
247
261
|
- !ruby/object:Gem::Dependency
|
248
262
|
name: fauxhai-ng
|
249
263
|
requirement: !ruby/object:Gem::Requirement
|