omnibus 5.5.0 → 5.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/PULL_REQUEST_TEMPLATE.md +11 -0
- data/.travis.yml +2 -1
- data/CHANGELOG.md +37 -0
- data/Gemfile +5 -4
- data/MAINTAINERS.md +12 -17
- data/README.md +98 -107
- data/appveyor.yml +1 -1
- data/lib/omnibus.rb +4 -4
- data/lib/omnibus/builder.rb +42 -9
- data/lib/omnibus/cli.rb +5 -0
- data/lib/omnibus/cli/base.rb +1 -1
- data/lib/omnibus/cli/publish.rb +5 -3
- data/lib/omnibus/compressors/dmg.rb +2 -2
- data/lib/omnibus/config.rb +42 -5
- data/lib/omnibus/core_extensions/open_uri.rb +1 -0
- data/lib/omnibus/download_helpers.rb +4 -4
- data/lib/omnibus/fetchers/git_fetcher.rb +15 -5
- data/lib/omnibus/fetchers/net_fetcher.rb +1 -1
- data/lib/omnibus/fetchers/path_fetcher.rb +1 -1
- data/lib/omnibus/file_syncer.rb +2 -2
- data/lib/omnibus/generator_files/omnibus.rb.erb +1 -0
- data/lib/omnibus/git_cache.rb +31 -13
- data/lib/omnibus/health_check.rb +1 -173
- data/lib/omnibus/licensing.rb +48 -7
- data/lib/omnibus/manifest.rb +3 -5
- data/lib/omnibus/manifest_entry.rb +1 -1
- data/lib/omnibus/metadata.rb +2 -1
- data/lib/omnibus/packager.rb +3 -1
- data/lib/omnibus/packagers/appx.rb +3 -3
- data/lib/omnibus/packagers/base.rb +9 -0
- data/lib/omnibus/packagers/bff.rb +4 -6
- data/lib/omnibus/packagers/deb.rb +95 -1
- data/lib/omnibus/packagers/ips.rb +50 -4
- data/lib/omnibus/packagers/pkgsrc.rb +112 -0
- data/lib/omnibus/packagers/rpm.rb +72 -3
- data/lib/omnibus/packagers/solaris.rb +0 -4
- data/lib/omnibus/packagers/windows_base.rb +1 -1
- data/lib/omnibus/project.rb +13 -3
- data/lib/omnibus/publishers/artifactory_publisher.rb +4 -6
- data/lib/omnibus/publishers/s3_publisher.rb +8 -3
- data/lib/omnibus/reports.rb +1 -1
- data/lib/omnibus/s3_cache.rb +18 -5
- data/lib/omnibus/s3_helpers.rb +45 -8
- data/lib/omnibus/software.rb +55 -37
- data/lib/omnibus/sugarable.rb +4 -0
- data/lib/omnibus/templating.rb +29 -13
- data/lib/omnibus/util.rb +81 -2
- data/lib/omnibus/version.rb +1 -1
- data/lib/omnibus/whitelist.rb +228 -0
- data/omnibus.gemspec +9 -8
- data/resources/dmg/create_dmg.osascript.erb +33 -13
- data/resources/ips/doc-transform.erb +2 -0
- data/resources/rpm/spec.erb +1 -2
- data/spec/functional/builder_spec.rb +21 -21
- data/spec/functional/fetchers/git_fetcher_spec.rb +6 -6
- data/spec/functional/fetchers/net_fetcher_spec.rb +7 -7
- data/spec/functional/fetchers/path_fetcher_spec.rb +5 -5
- data/spec/functional/file_syncer_spec.rb +6 -6
- data/spec/functional/licensing_spec.rb +29 -16
- data/spec/functional/templating_spec.rb +23 -22
- data/spec/support/git_helpers.rb +30 -24
- data/spec/unit/build_version_spec.rb +1 -1
- data/spec/unit/builder_spec.rb +36 -24
- data/spec/unit/changelogprinter_spec.rb +10 -8
- data/spec/unit/cleanroom_spec.rb +6 -6
- data/spec/unit/compressors/dmg_spec.rb +23 -37
- data/spec/unit/compressors/null_spec.rb +2 -2
- data/spec/unit/compressors/tgz_spec.rb +2 -2
- data/spec/unit/config_spec.rb +2 -1
- data/spec/unit/digestable_spec.rb +2 -2
- data/spec/unit/fetchers/git_fetcher_spec.rb +5 -5
- data/spec/unit/fetchers/net_fetcher_spec.rb +46 -6
- data/spec/unit/fetchers/path_fetcher_spec.rb +5 -5
- data/spec/unit/file_syncer_spec.rb +19 -0
- data/spec/unit/git_cache_spec.rb +76 -22
- data/spec/unit/health_check_spec.rb +1 -1
- data/spec/unit/library_spec.rb +2 -2
- data/spec/unit/manifest_spec.rb +6 -6
- data/spec/unit/metadata_spec.rb +4 -4
- data/spec/unit/omnibus_spec.rb +4 -4
- data/spec/unit/package_spec.rb +6 -6
- data/spec/unit/packagers/appx_spec.rb +16 -12
- data/spec/unit/packagers/base_spec.rb +5 -5
- data/spec/unit/packagers/bff_spec.rb +45 -15
- data/spec/unit/packagers/deb_spec.rb +95 -17
- data/spec/unit/packagers/ips_spec.rb +61 -17
- data/spec/unit/packagers/makeself_spec.rb +5 -5
- data/spec/unit/packagers/msi_spec.rb +43 -43
- data/spec/unit/packagers/pkg_spec.rb +15 -15
- data/spec/unit/packagers/pkgsrc_spec.rb +77 -0
- data/spec/unit/packagers/rpm_spec.rb +94 -17
- data/spec/unit/packagers/solaris_spec.rb +11 -11
- data/spec/unit/project_spec.rb +53 -22
- data/spec/unit/publisher_spec.rb +2 -2
- data/spec/unit/publishers/artifactory_publisher_spec.rb +7 -3
- data/spec/unit/publishers/s3_publisher_spec.rb +1 -1
- data/spec/unit/s3_helpers_spec.rb +41 -3
- data/spec/unit/software_spec.rb +115 -37
- data/spec/unit/sugarable_spec.rb +23 -3
- data/spec/unit/util_spec.rb +42 -11
- metadata +49 -29
data/lib/omnibus/health_check.rb
CHANGED
@@ -15,6 +15,7 @@
|
|
15
15
|
#
|
16
16
|
|
17
17
|
require "omnibus/sugarable"
|
18
|
+
require "omnibus/whitelist"
|
18
19
|
begin
|
19
20
|
require "pedump"
|
20
21
|
rescue LoadError
|
@@ -28,179 +29,6 @@ module Omnibus
|
|
28
29
|
include Util
|
29
30
|
include Sugarable
|
30
31
|
|
31
|
-
WHITELIST_LIBS = [
|
32
|
-
/ld-linux/,
|
33
|
-
/libc\.so/,
|
34
|
-
/libcrypt\.so/,
|
35
|
-
/libdl/,
|
36
|
-
/libfreebl\d\.so/,
|
37
|
-
/libgcc_s\.so/,
|
38
|
-
/libm\.so/,
|
39
|
-
/libnsl\.so/,
|
40
|
-
/libpthread/,
|
41
|
-
/libresolv\.so/,
|
42
|
-
/librt\.so/,
|
43
|
-
/libstdc\+\+\.so/,
|
44
|
-
/libutil\.so/,
|
45
|
-
/linux-vdso.+/,
|
46
|
-
/linux-gate\.so/,
|
47
|
-
].freeze
|
48
|
-
|
49
|
-
ARCH_WHITELIST_LIBS = [
|
50
|
-
/libc\.so/,
|
51
|
-
/libcrypt\.so/,
|
52
|
-
/libdb-5\.3\.so/,
|
53
|
-
/libdl\.so/,
|
54
|
-
/libffi\.so/,
|
55
|
-
/libgdbm\.so/,
|
56
|
-
/libm\.so/,
|
57
|
-
/libnsl\.so/,
|
58
|
-
/libpthread\.so/,
|
59
|
-
/librt\.so/,
|
60
|
-
/libutil\.so/,
|
61
|
-
].freeze
|
62
|
-
|
63
|
-
AIX_WHITELIST_LIBS = [
|
64
|
-
/libpthread\.a/,
|
65
|
-
/libpthreads\.a/,
|
66
|
-
/libdl.a/,
|
67
|
-
/librtl\.a/,
|
68
|
-
/libc\.a/,
|
69
|
-
/libcrypt\.a/,
|
70
|
-
/unix$/,
|
71
|
-
].freeze
|
72
|
-
|
73
|
-
SOLARIS_WHITELIST_LIBS = [
|
74
|
-
/libaio\.so/,
|
75
|
-
/libavl\.so/,
|
76
|
-
/libcrypt_[di]\.so/,
|
77
|
-
/libcrypto.so/,
|
78
|
-
/libcurses\.so/,
|
79
|
-
/libdoor\.so/,
|
80
|
-
/libgen\.so/,
|
81
|
-
/libmd5\.so/,
|
82
|
-
/libmd\.so/,
|
83
|
-
/libmp\.so/,
|
84
|
-
/libresolv\.so/,
|
85
|
-
/libscf\.so/,
|
86
|
-
/libsec\.so/,
|
87
|
-
/libsocket\.so/,
|
88
|
-
/libssl.so/,
|
89
|
-
/libthread.so/,
|
90
|
-
/libuutil\.so/,
|
91
|
-
/libkstat\.so/,
|
92
|
-
# solaris 11 libraries:
|
93
|
-
/libc\.so\.1/,
|
94
|
-
/libm\.so\.2/,
|
95
|
-
/libdl\.so\.1/,
|
96
|
-
/libnsl\.so\.1/,
|
97
|
-
/libpthread\.so\.1/,
|
98
|
-
/librt\.so\.1/,
|
99
|
-
/libcrypt\.so\.1/,
|
100
|
-
/libgdbm\.so\.3/,
|
101
|
-
/libgcc_s\.so\.1/,
|
102
|
-
/libcryptoutil\.so\.1/,
|
103
|
-
/libucrypto\.so\.1/,
|
104
|
-
/libz\.so\.1/, # while we package our own libz, this get dragged along from Solaris 11's libelf library for some reason...
|
105
|
-
/libelf\.so\.1/,
|
106
|
-
/libssp\.so\.0/,
|
107
|
-
# solaris 9 libraries:
|
108
|
-
/libm\.so\.1/,
|
109
|
-
/libc_psr\.so\.1/,
|
110
|
-
/s9_preload\.so\.1/,
|
111
|
-
].freeze
|
112
|
-
|
113
|
-
SMARTOS_WHITELIST_LIBS = [
|
114
|
-
/libm.so/,
|
115
|
-
/libpthread.so/,
|
116
|
-
/librt.so/,
|
117
|
-
/libsocket.so/,
|
118
|
-
/libdl.so/,
|
119
|
-
/libnsl.so/,
|
120
|
-
/libgen.so/,
|
121
|
-
/libmp.so/,
|
122
|
-
/libmd.so/,
|
123
|
-
/libc.so/,
|
124
|
-
/libgcc_s.so/,
|
125
|
-
/libstdc\+\+\.so/,
|
126
|
-
/libcrypt.so/,
|
127
|
-
].freeze
|
128
|
-
|
129
|
-
MAC_WHITELIST_LIBS = [
|
130
|
-
/libobjc\.A\.dylib/,
|
131
|
-
/libSystem\.B\.dylib/,
|
132
|
-
/CoreFoundation/,
|
133
|
-
/CoreServices/,
|
134
|
-
/Tcl$/,
|
135
|
-
/Cocoa$/,
|
136
|
-
/Carbon$/,
|
137
|
-
/IOKit$/,
|
138
|
-
/Tk$/,
|
139
|
-
/libutil\.dylib/,
|
140
|
-
/libffi\.dylib/,
|
141
|
-
/libncurses\.5\.4\.dylib/,
|
142
|
-
/libiconv/,
|
143
|
-
/libstdc\+\+\.6\.dylib/,
|
144
|
-
/libc\+\+\.1\.dylib/,
|
145
|
-
].freeze
|
146
|
-
|
147
|
-
FREEBSD_WHITELIST_LIBS = [
|
148
|
-
/libc\.so/,
|
149
|
-
/libgcc_s\.so/,
|
150
|
-
/libcrypt\.so/,
|
151
|
-
/libm\.so/,
|
152
|
-
/librt\.so/,
|
153
|
-
/libthr\.so/,
|
154
|
-
/libutil\.so/,
|
155
|
-
/libelf\.so/,
|
156
|
-
/libkvm\.so/,
|
157
|
-
/libprocstat\.so/,
|
158
|
-
/libmd\.so/,
|
159
|
-
].freeze
|
160
|
-
|
161
|
-
IGNORED_ENDINGS = %w{
|
162
|
-
.[ch]
|
163
|
-
.e*rb
|
164
|
-
.gemspec
|
165
|
-
.gitignore
|
166
|
-
.h*h
|
167
|
-
.java
|
168
|
-
.js
|
169
|
-
.json
|
170
|
-
.lock
|
171
|
-
.log
|
172
|
-
.lua
|
173
|
-
.md
|
174
|
-
.mkd
|
175
|
-
.out
|
176
|
-
.pl
|
177
|
-
.pm
|
178
|
-
.png
|
179
|
-
.py[oc]*
|
180
|
-
.r*html
|
181
|
-
.rdoc
|
182
|
-
.ri
|
183
|
-
.sh
|
184
|
-
.sql
|
185
|
-
.toml
|
186
|
-
.ttf
|
187
|
-
.txt
|
188
|
-
.xml
|
189
|
-
.yml
|
190
|
-
Gemfile
|
191
|
-
LICENSE
|
192
|
-
README
|
193
|
-
Rakefile
|
194
|
-
VERSION
|
195
|
-
}.freeze
|
196
|
-
|
197
|
-
IGNORED_PATTERNS = %w{
|
198
|
-
/share/doc/
|
199
|
-
/share/postgresql/
|
200
|
-
/share/terminfo/
|
201
|
-
/terminfo/
|
202
|
-
}.freeze
|
203
|
-
|
204
32
|
class << self
|
205
33
|
# @see (HealthCheck#new)
|
206
34
|
def run!(project)
|
data/lib/omnibus/licensing.rb
CHANGED
@@ -18,6 +18,7 @@ require "uri"
|
|
18
18
|
require "fileutils"
|
19
19
|
require "omnibus/download_helpers"
|
20
20
|
require "license_scout/collector"
|
21
|
+
require "license_scout/reporter"
|
21
22
|
require "license_scout/options"
|
22
23
|
|
23
24
|
module Omnibus
|
@@ -144,9 +145,9 @@ module Omnibus
|
|
144
145
|
#
|
145
146
|
def execute_post_build(software)
|
146
147
|
collect_licenses_for(software)
|
147
|
-
|
148
148
|
unless software.skip_transitive_dependency_licensing
|
149
149
|
collect_transitive_dependency_licenses_for(software)
|
150
|
+
check_transitive_dependency_licensing_errors_for(software)
|
150
151
|
end
|
151
152
|
end
|
152
153
|
|
@@ -393,7 +394,7 @@ module Omnibus
|
|
393
394
|
#
|
394
395
|
def local?(license)
|
395
396
|
u = URI(license)
|
396
|
-
|
397
|
+
u.scheme.nil?
|
397
398
|
end
|
398
399
|
|
399
400
|
#
|
@@ -439,12 +440,14 @@ module Omnibus
|
|
439
440
|
|
440
441
|
if Config.fatal_transitive_dependency_licensing_warnings && !transitive_dependency_licensing_warnings.empty?
|
441
442
|
warnings_to_raise << transitive_dependency_licensing_warnings
|
443
|
+
warnings_to_raise << "If you are encountering missing license or missing license file errors for **transitive** dependencies, you can provide overrides for the missing information at https://github.com/chef/license_scout/blob/master/lib/license_scout/overrides.rb#L93"
|
442
444
|
end
|
443
445
|
|
444
446
|
warnings_to_raise.flatten!
|
445
447
|
raise LicensingError.new(warnings_to_raise) unless warnings_to_raise.empty?
|
446
448
|
end
|
447
449
|
|
450
|
+
# 0. Translate all transitive dependency licensing issues into omnibus warnings
|
448
451
|
# 1. Parse all the licensing information for all software from 'cache_dir'
|
449
452
|
# 2. Merge and drop the duplicates
|
450
453
|
# 3. Add these licenses to the main manifest, to be merged with the main
|
@@ -498,21 +501,22 @@ module Omnibus
|
|
498
501
|
# the build completes we will process these license files but we need to
|
499
502
|
# perform this step after build, before git_cache to be able to operate
|
500
503
|
# correctly with the git_cache.
|
501
|
-
license_output_dir = File.join(cache_dir, software.name)
|
502
504
|
|
503
505
|
collector = LicenseScout::Collector.new(
|
504
|
-
software.
|
506
|
+
software.name,
|
505
507
|
software.project_dir,
|
506
|
-
license_output_dir,
|
508
|
+
license_output_dir(software),
|
507
509
|
LicenseScout::Options.new(
|
508
510
|
environment: software.with_embedded_path,
|
509
|
-
ruby_bin: software.embedded_bin("ruby")
|
511
|
+
ruby_bin: software.embedded_bin("ruby"),
|
512
|
+
manual_licenses: software.dependency_licenses
|
510
513
|
)
|
511
514
|
)
|
512
515
|
|
513
516
|
begin
|
517
|
+
# We do not automatically collect dependency licensing information when
|
518
|
+
# skip_transitive_dependency_licensing is set on the software.
|
514
519
|
collector.run
|
515
|
-
collector.issue_report.each { |i| transitive_dependency_licensing_warning(i) }
|
516
520
|
rescue LicenseScout::Exceptions::UnsupportedProjectType => e
|
517
521
|
# Looks like this project is not supported by LicenseScout. Either the
|
518
522
|
# language and the dependency manager used by the project is not
|
@@ -527,18 +531,53 @@ the list of supported languages and dependency managers. If this project does \
|
|
527
531
|
not have any transitive dependencies, consider setting \
|
528
532
|
'skip_transitive_dependency_licensing' to 'true' in order to correct this error.
|
529
533
|
EOH
|
534
|
+
# If we got here, we need to fail now so we don't take a git
|
535
|
+
# cache snapshot, or else the software build could be restored
|
536
|
+
# from cache without fixing the license issue.
|
537
|
+
raise_if_warnings_fatal!
|
530
538
|
rescue LicenseScout::Exceptions::Error => e
|
531
539
|
transitive_dependency_licensing_warning(<<-EOH)
|
532
540
|
Can not automatically detect licensing information for '#{software.name}' using \
|
533
541
|
license_scout. Error is: '#{e}'
|
534
542
|
EOH
|
543
|
+
# If we got here, we need to fail now so we don't take a git
|
544
|
+
# cache snapshot, or else the software build could be restored
|
545
|
+
# from cache without fixing the license issue.
|
546
|
+
raise_if_warnings_fatal!
|
535
547
|
rescue Exception => e
|
548
|
+
# This catch all exception handling is here in order not to fail builds
|
549
|
+
# until license_scout gets more stable. As we are adding support for more
|
550
|
+
# and more dependency managers we discover unhandled edge cases which
|
551
|
+
# requires us to have this. Remove this once license_scout is stable.
|
536
552
|
transitive_dependency_licensing_warning(<<-EOH)
|
537
553
|
Unexpected error while running license_scout for '#{software.name}': '#{e}'
|
538
554
|
EOH
|
555
|
+
# If we got here, we need to fail now so we don't take a git
|
556
|
+
# cache snapshot, or else the software build could be restored
|
557
|
+
# from cache without fixing the license issue.
|
558
|
+
raise_if_warnings_fatal!
|
539
559
|
end
|
540
560
|
end
|
541
561
|
|
562
|
+
# Checks transitive dependency licensing errors for the given software
|
563
|
+
def check_transitive_dependency_licensing_errors_for(software)
|
564
|
+
reporter = LicenseScout::Reporter.new(license_output_dir(software))
|
565
|
+
begin
|
566
|
+
reporter.report.each { |i| transitive_dependency_licensing_warning(i) }
|
567
|
+
rescue LicenseScout::Exceptions::InvalidOutputReport => e
|
568
|
+
transitive_dependency_licensing_warning(<<-EOH)
|
569
|
+
Licensing output report at '#{license_output_dir(software)}' has errors:
|
570
|
+
#{e}
|
571
|
+
EOH
|
572
|
+
end
|
573
|
+
raise_if_warnings_fatal!
|
574
|
+
end
|
575
|
+
|
576
|
+
# The directory to store the licensing information for the given software
|
577
|
+
def license_output_dir(software)
|
578
|
+
File.join(cache_dir, software.name)
|
579
|
+
end
|
580
|
+
|
542
581
|
# Collect the license files for the software.
|
543
582
|
def collect_licenses_for(software)
|
544
583
|
return nil if software.license == :project_license
|
@@ -594,6 +633,7 @@ EOH
|
|
594
633
|
"APL-1.0", # Adaptive Public License
|
595
634
|
"Apache-2.0", # Apache License 2.0
|
596
635
|
"APSL-2.0", # Apple Public Source License
|
636
|
+
"Artistic-1.0", # Artistic license 1.0
|
597
637
|
"Artistic-2.0", # Artistic license 2.0
|
598
638
|
"AAL", # Attribution Assurance Licenses
|
599
639
|
"BSD-3-Clause", # BSD 3-Clause "New" or "Revised" License
|
@@ -677,6 +717,7 @@ EOH
|
|
677
717
|
"Oracle-Binary", # http://www.oracle.com/technetwork/java/javase/terms/license/index.html
|
678
718
|
"OpenSSL", # https://www.openssl.org/source/license.html
|
679
719
|
"Chef-MLSA", # https://www.chef.io/online-master-agreement/
|
720
|
+
"Perl-5", # http://dev.perl.org/licenses/
|
680
721
|
].freeze
|
681
722
|
end
|
682
723
|
|
data/lib/omnibus/manifest.rb
CHANGED
@@ -18,9 +18,9 @@ require "ffi_yajl"
|
|
18
18
|
|
19
19
|
module Omnibus
|
20
20
|
class Manifest
|
21
|
-
class InvalidManifestFormat <
|
22
|
-
class NotAManifestEntry <
|
23
|
-
class MissingManifestEntry <
|
21
|
+
class InvalidManifestFormat < RuntimeError; end
|
22
|
+
class NotAManifestEntry < RuntimeError; end
|
23
|
+
class MissingManifestEntry < RuntimeError; end
|
24
24
|
|
25
25
|
include Logging
|
26
26
|
|
@@ -128,8 +128,6 @@ module Omnibus
|
|
128
128
|
from_hash(hash)
|
129
129
|
end
|
130
130
|
|
131
|
-
private
|
132
|
-
|
133
131
|
#
|
134
132
|
# Utility function to convert a Hash with String keys to a Hash
|
135
133
|
# with Symbol keys, recursively.
|
data/lib/omnibus/metadata.rb
CHANGED
@@ -167,12 +167,13 @@ module Omnibus
|
|
167
167
|
# the platform shortname. this might be an Ohai-returned platform or
|
168
168
|
# platform family but it also might be a shortname like `el`
|
169
169
|
#
|
170
|
+
# rubocop:disable Lint/DuplicateCaseCondition
|
170
171
|
def truncate_platform_version(platform_version, platform)
|
171
172
|
case platform
|
172
173
|
when "centos", "debian", "el", "fedora", "freebsd", "omnios", "pidora", "raspbian", "rhel", "sles", "suse", "smartos", "nexus", "ios_xr"
|
173
174
|
# Only want MAJOR (e.g. Debian 7, OmniOS r151006, SmartOS 20120809T221258Z)
|
174
175
|
platform_version.split(".").first
|
175
|
-
when "aix", "gentoo", "mac_os_x", "openbsd", "slackware", "solaris2", "opensuse", "ubuntu"
|
176
|
+
when "aix", "alpine", "gentoo", "mac_os_x", "openbsd", "slackware", "solaris2", "opensuse", "ubuntu"
|
176
177
|
# Only want MAJOR.MINOR (e.g. Mac OS X 10.9, Ubuntu 12.04)
|
177
178
|
platform_version.split(".")[0..1].join(".")
|
178
179
|
when "arch"
|
data/lib/omnibus/packager.rb
CHANGED
@@ -26,6 +26,7 @@ module Omnibus
|
|
26
26
|
autoload :MSI, "omnibus/packagers/msi"
|
27
27
|
autoload :APPX, "omnibus/packagers/appx"
|
28
28
|
autoload :PKG, "omnibus/packagers/pkg"
|
29
|
+
autoload :PKGSRC, "omnibus/packagers/pkgsrc"
|
29
30
|
autoload :Solaris, "omnibus/packagers/solaris"
|
30
31
|
autoload :IPS, "omnibus/packagers/ips"
|
31
32
|
autoload :RPM, "omnibus/packagers/rpm"
|
@@ -47,6 +48,7 @@ module Omnibus
|
|
47
48
|
"ips" => IPS,
|
48
49
|
"windows" => [MSI, APPX],
|
49
50
|
"mac_os_x" => PKG,
|
51
|
+
"smartos" => PKGSRC,
|
50
52
|
}.freeze
|
51
53
|
|
52
54
|
#
|
@@ -73,7 +75,7 @@ module Omnibus
|
|
73
75
|
if package_types.include?(APPX) &&
|
74
76
|
!Chef::Sugar::Constraints::Version.new(version).satisfies?(">= 6.2")
|
75
77
|
log.warn(log_key) { "APPX generation is only supported on Windows versions 2012 and above" }
|
76
|
-
package_types
|
78
|
+
package_types -= [APPX]
|
77
79
|
end
|
78
80
|
|
79
81
|
package_types
|
@@ -52,7 +52,7 @@ module Omnibus
|
|
52
52
|
|
53
53
|
# @see Base#package_name
|
54
54
|
def package_name
|
55
|
-
"#{project.package_name}-#{project.build_version}-#{project.build_iteration}.appx"
|
55
|
+
"#{project.package_name}-#{project.build_version}-#{project.build_iteration}-#{Config.windows_arch}.appx"
|
56
56
|
end
|
57
57
|
|
58
58
|
#
|
@@ -68,7 +68,7 @@ module Omnibus
|
|
68
68
|
friendly_name: project.friendly_name,
|
69
69
|
version: windows_package_version,
|
70
70
|
maintainer: project.maintainer,
|
71
|
-
certificate_subject: certificate_subject,
|
71
|
+
certificate_subject: certificate_subject.gsub('"', """),
|
72
72
|
}
|
73
73
|
)
|
74
74
|
end
|
@@ -80,7 +80,7 @@ module Omnibus
|
|
80
80
|
# @return [String]
|
81
81
|
#
|
82
82
|
def pack_command(appx_file)
|
83
|
-
"makeappx.exe pack /d \"#{windows_safe_path(project.install_dir)}\" /p #{appx_file}"
|
83
|
+
"makeappx.exe pack /d \"#{windows_safe_path(project.install_dir)}\" /o /p #{appx_file}"
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
@@ -180,6 +180,15 @@ module Omnibus
|
|
180
180
|
@staging_dir ||= Dir.mktmpdir(project.package_name)
|
181
181
|
end
|
182
182
|
|
183
|
+
#
|
184
|
+
# Helper method to produce staging paths
|
185
|
+
#
|
186
|
+
# @return [String]
|
187
|
+
#
|
188
|
+
def staging_dir_path(file_name)
|
189
|
+
File.join(staging_dir, file_name)
|
190
|
+
end
|
191
|
+
|
183
192
|
#
|
184
193
|
# @!group Resource methods
|
185
194
|
# --------------------------------------------------
|
@@ -131,9 +131,9 @@ module Omnibus
|
|
131
131
|
def write_gen_template
|
132
132
|
# Get a list of all files
|
133
133
|
files = FileSyncer.glob("#{staging_dir}/**/*").reject do |path|
|
134
|
-
# remove any files with spaces.
|
135
|
-
if path =~ /[[:space:]]/
|
136
|
-
log.warn(log_key) { "Skipping packaging '#{path}' file due to whitespace in filename" }
|
134
|
+
# remove any files with spaces or braces.
|
135
|
+
if path =~ /[[:space:]{}]/
|
136
|
+
log.warn(log_key) { "Skipping packaging '#{path}' file due to whitespace or braces in filename" }
|
137
137
|
true
|
138
138
|
end
|
139
139
|
end
|
@@ -226,9 +226,7 @@ module Omnibus
|
|
226
226
|
# from within the staging_dir's .info folder (where control files for the
|
227
227
|
# packaging process are kept.)
|
228
228
|
log.debug(log_key) do
|
229
|
-
"With .inventory file of:\n" + File.read("#{
|
230
|
-
File.join( staging_dir, '.info', "#{safe_base_package_name}.inventory" )
|
231
|
-
}")
|
229
|
+
"With .inventory file of:\n" + File.read("#{File.join( staging_dir, '.info', "#{safe_base_package_name}.inventory" )}")
|
232
230
|
end
|
233
231
|
|
234
232
|
# Copy the resulting package up to the package_dir
|