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
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
|
|