omnibus 7.0.13 → 8.1.15
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/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
data/lib/omnibus/git_cache.rb
CHANGED
data/lib/omnibus/health_check.rb
CHANGED
data/lib/omnibus/licensing.rb
CHANGED
@@ -14,8 +14,8 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "uri"
|
18
|
-
require "fileutils"
|
17
|
+
require "uri" unless defined?(URI)
|
18
|
+
require "fileutils" unless defined?(FileUtils)
|
19
19
|
require "omnibus/download_helpers"
|
20
20
|
require "license_scout/collector"
|
21
21
|
require "license_scout/reporter"
|
data/lib/omnibus/logger.rb
CHANGED
data/lib/omnibus/manifest.rb
CHANGED
@@ -25,28 +25,22 @@ module Omnibus
|
|
25
25
|
|
26
26
|
def updated
|
27
27
|
@updated ||=
|
28
|
-
|
29
|
-
(first.
|
30
|
-
|
31
|
-
end.compact
|
32
|
-
end
|
28
|
+
(first.entry_names & second.entry_names).collect do |name|
|
29
|
+
diff(first.entry_for(name), second.entry_for(name))
|
30
|
+
end.compact
|
33
31
|
end
|
34
32
|
|
35
33
|
def removed
|
36
34
|
@removed ||=
|
37
|
-
|
38
|
-
(first.
|
39
|
-
removed_entry(first.entry_for(name))
|
40
|
-
end
|
35
|
+
(first.entry_names - second.entry_names).collect do |name|
|
36
|
+
removed_entry(first.entry_for(name))
|
41
37
|
end
|
42
38
|
end
|
43
39
|
|
44
40
|
def added
|
45
41
|
@added ||=
|
46
|
-
|
47
|
-
(second.
|
48
|
-
new_entry(second.entry_for(name))
|
49
|
-
end
|
42
|
+
(second.entry_names - first.entry_names).collect do |name|
|
43
|
+
new_entry(second.entry_for(name))
|
50
44
|
end
|
51
45
|
end
|
52
46
|
|
data/lib/omnibus/metadata.rb
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "ffi_yajl"
|
17
|
+
require "ffi_yajl" unless defined?(FFI_Yajl)
|
18
18
|
|
19
19
|
module Omnibus
|
20
20
|
class Metadata
|
@@ -170,12 +170,16 @@ module Omnibus
|
|
170
170
|
# rubocop:disable Lint/DuplicateCaseCondition
|
171
171
|
def truncate_platform_version(platform_version, platform)
|
172
172
|
case platform
|
173
|
-
when "centos", "debian", "el", "fedora", "freebsd", "omnios", "pidora", "raspbian", "rhel", "sles", "suse", "smartos"
|
173
|
+
when "centos", "cumulus", "debian", "el", "fedora", "freebsd", "omnios", "pidora", "raspbian", "rhel", "sles", "suse", "smartos"
|
174
174
|
# Only want MAJOR (e.g. Debian 7, OmniOS r151006, SmartOS 20120809T221258Z)
|
175
175
|
platform_version.split(".").first
|
176
|
-
when "aix", "alpine", "
|
177
|
-
# Only want MAJOR.MINOR (e.g.
|
176
|
+
when "aix", "alpine", "openbsd", "slackware", "solaris2", "opensuse", "opensuseleap", "ubuntu", "amazon"
|
177
|
+
# Only want MAJOR.MINOR (e.g. Ubuntu 12.04)
|
178
178
|
platform_version.split(".")[0..1].join(".")
|
179
|
+
when "mac_os_x", "darwin", "macos"
|
180
|
+
# If running macOS >= 11, use only MAJOR version. Otherwise, use MAJOR.MINOR
|
181
|
+
pv_bits = platform_version.split(".")
|
182
|
+
pv_bits[0].to_i >= 11 ? pv_bits[0] : pv_bits[0..1].join(".")
|
179
183
|
when "arch", "gentoo", "kali"
|
180
184
|
# Arch Linux / Gentoo do not have a platform_version ohai attribute, they are rolling release (lsb_release -r)
|
181
185
|
"rolling"
|
data/lib/omnibus/ohai.rb
CHANGED
data/lib/omnibus/package.rb
CHANGED
data/lib/omnibus/packager.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright 2014-
|
2
|
+
# Copyright 2014-2020, Chef Software Inc.
|
3
3
|
#
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
5
|
# you may not use this file except in compliance with the License.
|
@@ -46,6 +46,7 @@ module Omnibus
|
|
46
46
|
"amazon" => RPM,
|
47
47
|
"aix" => BFF,
|
48
48
|
"solaris" => Solaris,
|
49
|
+
"omnios" => IPS,
|
49
50
|
"ips" => IPS,
|
50
51
|
"windows" => [MSI, APPX],
|
51
52
|
"mac_os_x" => PKG,
|
@@ -65,25 +66,16 @@ module Omnibus
|
|
65
66
|
family = Ohai["platform_family"]
|
66
67
|
version = Ohai["platform_version"]
|
67
68
|
|
68
|
-
if family == "solaris2" &&
|
69
|
+
if family == "solaris2" && ChefUtils::VersionString.new(version).satisfies?(">= 5.11")
|
69
70
|
family = "ips"
|
70
|
-
elsif family == "solaris2" &&
|
71
|
+
elsif family == "solaris2" && ChefUtils::VersionString.new(version).satisfies?(">= 5.10")
|
71
72
|
family = "solaris"
|
72
73
|
end
|
73
74
|
if klass = PLATFORM_PACKAGER_MAP[family]
|
74
|
-
|
75
|
-
|
76
|
-
if package_types.include?(APPX) &&
|
77
|
-
!Chef::Sugar::Constraints::Version.new(version).satisfies?(">= 6.2")
|
78
|
-
log.warn(log_key) { "APPX generation is only supported on Windows versions 2012 and above" }
|
79
|
-
package_types -= [APPX]
|
80
|
-
end
|
81
|
-
|
82
|
-
package_types
|
75
|
+
klass.is_a?(Array) ? klass : [ klass ]
|
83
76
|
else
|
84
77
|
log.warn(log_key) do
|
85
|
-
"Could not determine packager for `#{family}
|
86
|
-
"to `makeself'!"
|
78
|
+
"Could not determine packager for `#{family}`, defaulting to `makeself`!"
|
87
79
|
end
|
88
80
|
[Makeself]
|
89
81
|
end
|
@@ -125,7 +125,7 @@ module Omnibus
|
|
125
125
|
|
126
126
|
# @see Base#package_name
|
127
127
|
def package_name
|
128
|
-
"#{safe_base_package_name}-#{safe_version}-#{safe_build_iteration}.pkg"
|
128
|
+
"#{safe_base_package_name}-#{safe_version}-#{safe_build_iteration}.#{safe_architecture}.pkg"
|
129
129
|
end
|
130
130
|
|
131
131
|
#
|
@@ -286,6 +286,7 @@ module Omnibus
|
|
286
286
|
identifier: safe_identifier,
|
287
287
|
version: safe_version,
|
288
288
|
component_pkg: component_pkg,
|
289
|
+
host_architecture: safe_architecture,
|
289
290
|
})
|
290
291
|
end
|
291
292
|
|
@@ -320,6 +321,15 @@ module Omnibus
|
|
320
321
|
"#{safe_base_package_name}-core.pkg"
|
321
322
|
end
|
322
323
|
|
324
|
+
#
|
325
|
+
# Return the architecture
|
326
|
+
#
|
327
|
+
# @return [String]
|
328
|
+
#
|
329
|
+
def safe_architecture
|
330
|
+
@safe_architecture ||= Ohai["kernel"]["machine"]
|
331
|
+
end
|
332
|
+
|
323
333
|
#
|
324
334
|
# Return the PKG-ready base package name, removing any invalid characters.
|
325
335
|
#
|
@@ -424,7 +434,7 @@ module Omnibus
|
|
424
434
|
is_binary = File.file?(bin) &&
|
425
435
|
File.executable?(bin) &&
|
426
436
|
!File.symlink?(bin)
|
427
|
-
log.debug(log_key) { " removing from signing: #{bin}" } unless is_binary
|
437
|
+
log.debug(log_key) { " removing non-binary file from signing: #{bin}" } unless is_binary
|
428
438
|
is_binary
|
429
439
|
end
|
430
440
|
|
@@ -434,9 +444,9 @@ module Omnibus
|
|
434
444
|
command = "file #{lib}"
|
435
445
|
|
436
446
|
stdout = shellout!(command).stdout
|
437
|
-
is_macho = stdout.match?(/Mach-O.*library
|
447
|
+
is_macho = stdout.match?(/Mach-O.*(library|bundle)/)
|
438
448
|
end
|
439
|
-
log.debug(log_key) { " removing from signing: #{lib}" } unless is_macho
|
449
|
+
log.debug(log_key) { " removing non-Mach-O library file from signing: #{lib}" } unless is_macho
|
440
450
|
is_macho
|
441
451
|
end
|
442
452
|
end
|
@@ -417,6 +417,10 @@ module Omnibus
|
|
417
417
|
command << %{ -bb}
|
418
418
|
command << %{ --buildroot #{staging_dir}/BUILD}
|
419
419
|
command << %{ --define '_topdir #{staging_dir}'}
|
420
|
+
command << " #{spec_file}"
|
421
|
+
|
422
|
+
log.info(log_key) { "Creating .rpm file" }
|
423
|
+
shellout!("#{command}")
|
420
424
|
|
421
425
|
if signing_passphrase
|
422
426
|
log.info(log_key) { "Signing enabled for .rpm file" }
|
@@ -438,17 +442,18 @@ module Omnibus
|
|
438
442
|
})
|
439
443
|
end
|
440
444
|
|
441
|
-
|
442
|
-
command << " #{spec_file}"
|
443
|
-
|
445
|
+
sign_cmd = "rpmsign --addsign #{rpm_file}"
|
444
446
|
with_rpm_signing do |signing_script|
|
445
|
-
log.info(log_key) { "
|
446
|
-
|
447
|
+
log.info(log_key) { "Signing the built rpm file" }
|
448
|
+
|
449
|
+
# RHEL 8 has gpg-agent running so we can skip the expect script since the agent
|
450
|
+
# takes care of the passphrase entering on the signing
|
451
|
+
if dist_tag != ".el8"
|
452
|
+
sign_cmd.prepend("#{signing_script} \"").concat("\"")
|
453
|
+
end
|
454
|
+
|
455
|
+
shellout!("#{sign_cmd}", environment: { "HOME" => home })
|
447
456
|
end
|
448
|
-
else
|
449
|
-
log.info(log_key) { "Creating .rpm file" }
|
450
|
-
command << " #{spec_file}"
|
451
|
-
shellout!("#{command}")
|
452
457
|
end
|
453
458
|
|
454
459
|
FileSyncer.glob("#{staging_dir}/RPMS/**/*.rpm").each do |rpm|
|
@@ -483,6 +488,15 @@ module Omnibus
|
|
483
488
|
"#{staging_dir}/SPECS/#{package_name}.spec"
|
484
489
|
end
|
485
490
|
|
491
|
+
#
|
492
|
+
# The full path to the rpm file.
|
493
|
+
#
|
494
|
+
# @return [String]
|
495
|
+
#
|
496
|
+
def rpm_file
|
497
|
+
"#{staging_dir}/RPMS/#{safe_architecture}/#{package_name}"
|
498
|
+
end
|
499
|
+
|
486
500
|
#
|
487
501
|
# Render the rpm signing script with secure permissions, call the given
|
488
502
|
# block with the path to the script, and ensure deletion of the script from
|
data/lib/omnibus/project.rb
CHANGED
@@ -15,8 +15,8 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
#
|
17
17
|
|
18
|
-
require "time"
|
19
|
-
require "ffi_yajl"
|
18
|
+
require "time" unless defined?(Time.zone_offset)
|
19
|
+
require "ffi_yajl" unless defined?(FFI_Yajl)
|
20
20
|
require "omnibus/manifest"
|
21
21
|
require "omnibus/manifest_entry"
|
22
22
|
require "omnibus/reports"
|
data/lib/omnibus/s3_cache.rb
CHANGED
data/lib/omnibus/s3_helpers.rb
CHANGED
data/lib/omnibus/software.rb
CHANGED
@@ -14,8 +14,8 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "fileutils"
|
18
|
-
require "uri"
|
17
|
+
require "fileutils" unless defined?(FileUtils)
|
18
|
+
require "uri" unless defined?(URI)
|
19
19
|
require "omnibus/manifest_entry"
|
20
20
|
|
21
21
|
module Omnibus
|
@@ -525,7 +525,7 @@ module Omnibus
|
|
525
525
|
return if final_version.nil?
|
526
526
|
|
527
527
|
begin
|
528
|
-
|
528
|
+
ChefUtils::VersionString.new(final_version)
|
529
529
|
rescue ArgumentError
|
530
530
|
log.warn(log_key) do
|
531
531
|
"Version #{final_version} for software #{name} was not parseable. " \
|
@@ -718,19 +718,8 @@ module Omnibus
|
|
718
718
|
"CC" => "clang",
|
719
719
|
"CXX" => "clang++",
|
720
720
|
"LDFLAGS" => "-L#{install_dir}/embedded/lib",
|
721
|
-
"CFLAGS" => "-I#{install_dir}/embedded/include -
|
721
|
+
"CFLAGS" => "-I#{install_dir}/embedded/include -O3 -D_FORTIFY_SOURCE=2 -fstack-protector",
|
722
722
|
}
|
723
|
-
when "suse"
|
724
|
-
suse_flags = {
|
725
|
-
"LDFLAGS" => "-Wl,-rpath,#{install_dir}/embedded/lib -L#{install_dir}/embedded/lib",
|
726
|
-
"CFLAGS" => "-I#{install_dir}/embedded/include -O2 -D_FORTIFY_SOURCE=2 -fstack-protector",
|
727
|
-
}
|
728
|
-
# Enable gcc version 4.8 if it is available
|
729
|
-
if which("gcc-4.8") && platform_version.satisfies?("< 12")
|
730
|
-
suse_flags["CC"] = "gcc-4.8"
|
731
|
-
suse_flags["CXX"] = "g++-4.8"
|
732
|
-
end
|
733
|
-
suse_flags
|
734
723
|
when "windows"
|
735
724
|
arch_flag = windows_arch_i386? ? "-m32" : "-m64"
|
736
725
|
opt_flag = windows_arch_i386? ? "-march=i686" : "-march=x86-64"
|
@@ -750,7 +739,7 @@ module Omnibus
|
|
750
739
|
else
|
751
740
|
{
|
752
741
|
"LDFLAGS" => "-Wl,-rpath,#{install_dir}/embedded/lib -L#{install_dir}/embedded/lib",
|
753
|
-
"CFLAGS" => "-I#{install_dir}/embedded/include -
|
742
|
+
"CFLAGS" => "-I#{install_dir}/embedded/include -O3 -D_FORTIFY_SOURCE=2 -fstack-protector",
|
754
743
|
}
|
755
744
|
end
|
756
745
|
|
data/lib/omnibus/sugarable.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright 2014-
|
2
|
+
# Copyright 2014-2020, Chef Software Inc.
|
3
3
|
#
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
5
|
# you may not use this file except in compliance with the License.
|
@@ -14,31 +14,22 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "chef
|
18
|
-
require "chef/sugar/cloud"
|
19
|
-
require "chef/sugar/constraints"
|
20
|
-
require "chef/sugar/ip"
|
21
|
-
require "chef/sugar/init"
|
22
|
-
require "chef/sugar/platform"
|
23
|
-
require "chef/sugar/platform_family"
|
24
|
-
require "chef/sugar/ruby"
|
25
|
-
require "chef/sugar/shell"
|
26
|
-
require "chef/sugar/vagrant"
|
17
|
+
require "chef-utils" unless defined?(ChefUtils::CANARY)
|
27
18
|
|
28
19
|
module Omnibus
|
29
20
|
module Sugarable
|
30
21
|
def self.extended(base)
|
31
|
-
base.send(:extend,
|
22
|
+
base.send(:extend, ChefUtils)
|
32
23
|
base.send(:extend, Omnibus::Sugar)
|
33
24
|
end
|
34
25
|
|
35
26
|
def self.included(base)
|
36
|
-
base.send(:include,
|
27
|
+
base.send(:include, ChefUtils)
|
37
28
|
base.send(:include, Omnibus::Sugar)
|
38
29
|
|
39
30
|
if base < Cleanroom
|
40
31
|
# Make all the "sugars" available in the cleanroom (DSL)
|
41
|
-
|
32
|
+
ChefUtils.instance_methods.each do |instance_method|
|
42
33
|
base.send(:expose, instance_method)
|
43
34
|
end
|
44
35
|
|