packaging 0.104.0 → 0.106.1
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/README.md +4 -4
- data/lib/packaging/archive.rb +2 -2
- data/lib/packaging/artifactory/extensions.rb +1 -0
- data/lib/packaging/artifactory.rb +27 -23
- data/lib/packaging/config/params.rb +191 -193
- data/lib/packaging/config/validations.rb +0 -2
- data/lib/packaging/config.rb +8 -8
- data/lib/packaging/deb/repo.rb +11 -14
- data/lib/packaging/gem.rb +2 -2
- data/lib/packaging/metrics.rb +7 -7
- data/lib/packaging/nuget.rb +0 -1
- data/lib/packaging/paths.rb +11 -13
- data/lib/packaging/platforms.rb +14 -52
- data/lib/packaging/repo.rb +11 -12
- data/lib/packaging/retrieve.rb +1 -1
- data/lib/packaging/rpm/repo.rb +8 -8
- data/lib/packaging/sign/dmg.rb +8 -7
- data/lib/packaging/sign/ips.rb +64 -32
- data/lib/packaging/sign/msi.rb +48 -48
- data/lib/packaging/sign/rpm.rb +1 -1
- data/lib/packaging/sign.rb +0 -1
- data/lib/packaging/tar.rb +2 -4
- data/lib/packaging/util/date.rb +0 -1
- data/lib/packaging/util/distribution_server.rb +2 -2
- data/lib/packaging/util/execution.rb +2 -4
- data/lib/packaging/util/file.rb +81 -3
- data/lib/packaging/util/git.rb +1 -3
- data/lib/packaging/util/git_tags.rb +3 -3
- data/lib/packaging/util/gpg.rb +3 -4
- data/lib/packaging/util/jenkins.rb +0 -3
- data/lib/packaging/util/misc.rb +1 -1
- data/lib/packaging/util/net.rb +25 -23
- data/lib/packaging/util/repo.rb +17 -0
- data/lib/packaging/util/serialization.rb +1 -2
- data/lib/packaging/util/ship.rb +150 -3
- data/lib/packaging/util/sign.rb +47 -0
- data/lib/packaging/util/tool.rb +1 -4
- data/lib/packaging/util/version.rb +1 -5
- data/lib/packaging/util.rb +3 -1
- data/lib/packaging.rb +1 -2
- data/spec/lib/packaging/config_spec.rb +3 -3
- data/spec/lib/packaging/deb/repo_spec.rb +1 -1
- data/spec/lib/packaging/paths_spec.rb +2 -3
- data/spec/lib/packaging/platforms_spec.rb +6 -6
- data/spec/lib/packaging/sign_spec.rb +1 -13
- data/spec/lib/packaging/util/git_spec.rb +2 -2
- data/spec/lib/packaging/util/git_tag_spec.rb +5 -5
- data/spec/lib/packaging/util/ship_spec.rb +0 -2
- data/tasks/30_metrics.rake +2 -2
- data/tasks/apple.rake +8 -14
- data/tasks/archive.rake +1 -2
- data/tasks/deb.rake +7 -8
- data/tasks/deb_repos.rake +1 -0
- data/tasks/doc.rake +5 -3
- data/tasks/education.rake +2 -4
- data/tasks/fetch.rake +1 -0
- data/tasks/gem.rake +20 -12
- data/tasks/jenkins.rake +27 -15
- data/tasks/jenkins_dynamic.rake +10 -10
- data/tasks/load_extras.rake +1 -0
- data/tasks/mock.rake +8 -9
- data/tasks/nightly_repos.rake +14 -14
- data/tasks/pe_ship.rake +10 -17
- data/tasks/retrieve.rake +2 -2
- data/tasks/rpm.rake +1 -1
- data/tasks/rpm_repos.rake +1 -0
- data/tasks/ship.rake +24 -12
- data/tasks/sign.rake +6 -6
- data/tasks/tar.rake +2 -3
- data/tasks/update.rake +2 -2
- data/tasks/vendor_gems.rake +5 -7
- data/tasks/version.rake +2 -2
- metadata +42 -40
data/lib/packaging/config.rb
CHANGED
@@ -81,11 +81,11 @@ module Pkg
|
|
81
81
|
dir = "/opt/jenkins-builds/#{self.project}/#{self.ref}"
|
82
82
|
cmd = "if [ -s \"#{dir}/artifacts\" ]; then cd #{dir};"\
|
83
83
|
"find ./artifacts -mindepth 2 -type f; fi"
|
84
|
-
artifacts,
|
85
|
-
|
84
|
+
artifacts, = Pkg::Util::Net.remote_execute(
|
85
|
+
self.builds_server,
|
86
86
|
cmd,
|
87
87
|
{ capture_output: true }
|
88
|
-
|
88
|
+
)
|
89
89
|
|
90
90
|
artifacts = artifacts.split("\n")
|
91
91
|
data = {}
|
@@ -118,8 +118,8 @@ module Pkg
|
|
118
118
|
if platform == 'solaris'
|
119
119
|
next if version == '10' && File.extname(artifact) != '.gz'
|
120
120
|
next if version == '11' && File.extname(artifact) != '.p5p'
|
121
|
-
|
122
|
-
next
|
121
|
+
elsif File.extname(artifact) != ".#{package_format}"
|
122
|
+
next
|
123
123
|
end
|
124
124
|
|
125
125
|
# Don't want to include debian debug packages
|
@@ -231,8 +231,8 @@ module Pkg
|
|
231
231
|
# the debian changelog.
|
232
232
|
#
|
233
233
|
def cow_list
|
234
|
-
self.cows.split(' ').map do
|
235
|
-
|
234
|
+
self.cows.split(' ').map do |cow|
|
235
|
+
cow.split('-')[1]
|
236
236
|
end.uniq.join(' ')
|
237
237
|
end
|
238
238
|
|
@@ -426,7 +426,7 @@ module Pkg
|
|
426
426
|
def string_to_array(str)
|
427
427
|
delimiters = /[,\s;]/
|
428
428
|
return str if str.respond_to?('each')
|
429
|
-
str.split(delimiters).reject
|
429
|
+
str.split(delimiters).reject(&:empty?).map(&:strip)
|
430
430
|
end
|
431
431
|
|
432
432
|
# This method is duplicated from enterprise-dist so we can access it here.
|
data/lib/packaging/deb/repo.rb
CHANGED
@@ -2,9 +2,7 @@
|
|
2
2
|
require 'fileutils'
|
3
3
|
|
4
4
|
module Pkg::Deb::Repo
|
5
|
-
|
6
5
|
class << self
|
7
|
-
|
8
6
|
# This is the default set of arches we are using for our reprepro repos. We
|
9
7
|
# take this list and combine it with the list of supported arches for each
|
10
8
|
# given platform to ensure a complete set of architectures. We use this
|
@@ -43,7 +41,7 @@ module Pkg::Deb::Repo
|
|
43
41
|
# First test if the directory even exists
|
44
42
|
#
|
45
43
|
begin
|
46
|
-
stdout,
|
44
|
+
stdout, = Pkg::Util::Execution.capture3("#{wget} --spider -r -l 1 --no-parent #{repo_base} 2>&1")
|
47
45
|
rescue RuntimeError
|
48
46
|
warn "No debian repos available for #{Pkg::Config.project} at #{Pkg::Config.ref}."
|
49
47
|
return
|
@@ -62,7 +60,7 @@ module Pkg::Deb::Repo
|
|
62
60
|
# We want to skip the base_url, which wget returns as one of the results
|
63
61
|
next if "#{url}/" == repo_base
|
64
62
|
platform_tag = Pkg::Paths.tag_from_artifact_path(url)
|
65
|
-
platform, version,
|
63
|
+
platform, version, = Pkg::Platforms.parse_platform_tag(platform_tag)
|
66
64
|
codename = Pkg::Platforms.codename_for_platform_version(platform, version)
|
67
65
|
repoconfig = ["# Packages for #{Pkg::Config.project} built from ref #{Pkg::Config.ref}",
|
68
66
|
"deb #{url} #{codename} #{reprepro_repo_name}"]
|
@@ -76,9 +74,9 @@ module Pkg::Deb::Repo
|
|
76
74
|
wget = Pkg::Util::Tool.check_tool("wget")
|
77
75
|
FileUtils.mkdir_p("pkg/#{target}")
|
78
76
|
config_url = "#{base_url}/#{target}/deb/"
|
79
|
-
stdout,
|
77
|
+
stdout, = Pkg::Util::Execution.capture3("#{wget} -r -np -nH --cut-dirs 3 -P pkg/#{target} --reject 'index*' #{config_url}")
|
80
78
|
stdout
|
81
|
-
rescue => e
|
79
|
+
rescue StandardError => e
|
82
80
|
fail "Couldn't retrieve deb apt repo configs.\n#{e}"
|
83
81
|
end
|
84
82
|
|
@@ -95,13 +93,13 @@ module Pkg::Deb::Repo
|
|
95
93
|
|
96
94
|
artifact_paths.each do |path|
|
97
95
|
platform_tag = Pkg::Paths.tag_from_artifact_path(path)
|
98
|
-
platform, version,
|
96
|
+
platform, version, = Pkg::Platforms. parse_platform_tag(platform_tag)
|
99
97
|
codename = Pkg::Platforms.codename_for_platform_version(platform, version)
|
100
98
|
arches = Pkg::Platforms.arches_for_codename(codename)
|
101
99
|
|
102
100
|
cmd << "mkdir -p #{codename}/conf && "
|
103
101
|
cmd << "pushd #{codename} ; "
|
104
|
-
cmd << %
|
102
|
+
cmd << %( [ -e 'conf/distributions' ] || echo "
|
105
103
|
Origin: Puppet Labs
|
106
104
|
Label: Puppet Labs
|
107
105
|
Codename: #{codename}
|
@@ -139,7 +137,7 @@ Description: Apt repository for acceptance testing" >> conf/distributions ; )
|
|
139
137
|
end
|
140
138
|
|
141
139
|
def ship_repo_configs(target = "repo_configs")
|
142
|
-
if
|
140
|
+
if !File.exist?("pkg/#{target}/deb") || Pkg::Util::File.empty_dir?("pkg/#{target}/deb")
|
143
141
|
warn "No repo configs have been generated! Try pl:deb_repo_configs."
|
144
142
|
return
|
145
143
|
end
|
@@ -178,7 +176,7 @@ Description: #{message} for #{dist}
|
|
178
176
|
SignWith: #{Pkg::Config.gpg_key}"
|
179
177
|
end
|
180
178
|
|
181
|
-
stdout,
|
179
|
+
stdout, = Pkg::Util::Execution.capture3("#{reprepro} -vvv --confdir ./conf --dbdir ./db --basedir ./ export")
|
182
180
|
stdout
|
183
181
|
end
|
184
182
|
end
|
@@ -204,7 +202,7 @@ SignWith: #{Pkg::Config.gpg_key}"
|
|
204
202
|
# You may think "rsync doesn't actually remove the sticky bit, let's
|
205
203
|
# remove the Dugo-s from the chmod". However, that will make your rsyncs
|
206
204
|
# fail due to permission errors.
|
207
|
-
options = %w
|
205
|
+
options = %w[
|
208
206
|
rsync
|
209
207
|
--itemize-changes
|
210
208
|
--hard-links
|
@@ -222,14 +220,14 @@ SignWith: #{Pkg::Config.gpg_key}"
|
|
222
220
|
--no-group
|
223
221
|
--exclude='dists/*-*'
|
224
222
|
--exclude='pool/*-*'
|
225
|
-
|
223
|
+
]
|
226
224
|
|
227
225
|
options << '--dry-run' if dryrun
|
228
226
|
options << path
|
229
227
|
if !destination.nil?
|
230
228
|
options << "#{destination}:#{dest_path.parent}"
|
231
229
|
else
|
232
|
-
options <<
|
230
|
+
options << dest_path.parent.to_s
|
233
231
|
end
|
234
232
|
options.join("\s")
|
235
233
|
end
|
@@ -259,6 +257,5 @@ SignWith: #{Pkg::Config.gpg_key}"
|
|
259
257
|
Pkg::Util::Net.remote_execute(destination_server, cp_command)
|
260
258
|
end
|
261
259
|
end
|
262
|
-
|
263
260
|
end
|
264
261
|
end
|
data/lib/packaging/gem.rb
CHANGED
@@ -21,7 +21,7 @@ module Pkg::Gem
|
|
21
21
|
data['number'] == gem_version && data['platform'] == gem_platform
|
22
22
|
end
|
23
23
|
return !gem.empty?
|
24
|
-
rescue => e
|
24
|
+
rescue StandardError => e
|
25
25
|
puts "Something went wrong searching for gem '#{gem_name}':"
|
26
26
|
puts e
|
27
27
|
puts "Perhaps you're shipping '#{gem_name}' for the first time?"
|
@@ -49,7 +49,7 @@ module Pkg::Gem
|
|
49
49
|
gem_push_command << " --host #{options[:host]}" if options[:host]
|
50
50
|
gem_push_command << " --key #{options[:key]}" if options[:key]
|
51
51
|
Pkg::Util::Execution.capture3(gem_push_command)
|
52
|
-
rescue => e
|
52
|
+
rescue StandardError => e
|
53
53
|
puts "###########################################"
|
54
54
|
puts "# Publishing to rubygems failed. Make sure your .gem/credentials"
|
55
55
|
puts "# file is set up and you are an owner of #{Pkg::Config.gem_name}"
|
data/lib/packaging/metrics.rb
CHANGED
@@ -3,13 +3,13 @@ module Pkg::Metrics
|
|
3
3
|
|
4
4
|
def update_release_metrics
|
5
5
|
metrics_repo = 'release-metrics'
|
6
|
-
command =
|
7
|
-
git clone git@github.com:puppetlabs/#{metrics_repo}.git
|
8
|
-
cd #{metrics_repo}
|
9
|
-
bundle exec add-release --date #{Pkg::Util::Date.today} --project #{Pkg::Config.project} --version #{Pkg::Config.ref}
|
10
|
-
cd ..
|
11
|
-
rm -r #{metrics_repo}
|
12
|
-
CMD
|
6
|
+
command = <<~CMD
|
7
|
+
git clone git@github.com:puppetlabs/#{metrics_repo}.git
|
8
|
+
cd #{metrics_repo}
|
9
|
+
bundle exec add-release --date #{Pkg::Util::Date.today} --project #{Pkg::Config.project} --version #{Pkg::Config.ref}
|
10
|
+
cd ..
|
11
|
+
rm -r #{metrics_repo}
|
12
|
+
CMD
|
13
13
|
Pkg::Util::Execution.capture3(command, true)
|
14
14
|
end
|
15
15
|
end
|
data/lib/packaging/nuget.rb
CHANGED
@@ -32,7 +32,6 @@ module Pkg::Nuget
|
|
32
32
|
stdout, retval = Pkg::Util::Net.curl_form_data("#{uri}/#{package_path}", form_data + package_form_data)
|
33
33
|
end
|
34
34
|
fail "The Package upload (curl) failed with error #{retval}" unless Pkg::Util::Execution.success?(retval)
|
35
|
-
stdout
|
36
35
|
end
|
37
36
|
end
|
38
37
|
end
|
data/lib/packaging/paths.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
# This includes both reporting the correct path and divining the platform
|
3
3
|
# tag associated with a variety of paths
|
4
4
|
#
|
5
|
-
# rubocop:disable Metrics/ModuleLength
|
6
5
|
module Pkg::Paths
|
7
6
|
include Pkg::Platforms
|
8
7
|
|
@@ -17,7 +16,7 @@ module Pkg::Paths
|
|
17
16
|
return Pkg::Platforms.get_attribute_for_platform_version(platform, version, :source_architecture)
|
18
17
|
end
|
19
18
|
arches.find { |a| path.include?(package_arch(platform, a)) } || arches[0]
|
20
|
-
rescue
|
19
|
+
rescue StandardError
|
21
20
|
arches.find { |a| path.include?(package_arch(platform, a)) } || arches[0]
|
22
21
|
end
|
23
22
|
|
@@ -40,7 +39,7 @@ module Pkg::Paths
|
|
40
39
|
arch = arch_from_artifact_path(platform, version, path)
|
41
40
|
|
42
41
|
return "#{platform}-#{version}-#{arch}"
|
43
|
-
rescue
|
42
|
+
rescue StandardError
|
44
43
|
fmt = Pkg::Platforms.all_supported_package_formats.find { |ext| path =~ /#{ext}$/ }
|
45
44
|
|
46
45
|
# We need to make sure this is actually a file, and not simply a path
|
@@ -117,7 +116,7 @@ module Pkg::Paths
|
|
117
116
|
|
118
117
|
# In puppet7 and beyond, we moved the repo_name to the top to allow each
|
119
118
|
# puppet major release to have its own apt repo.
|
120
|
-
if %w
|
119
|
+
if %w[FUTURE-puppet7 FUTURE-puppet7-nightly].include? repo_name
|
121
120
|
return File.join(prefix, apt_repo_name(is_nonfinal), debian_code_name)
|
122
121
|
end
|
123
122
|
|
@@ -170,7 +169,7 @@ module Pkg::Paths
|
|
170
169
|
# Given platform information, create symlink target (base_path) and link path in the
|
171
170
|
# form of a 2-element array
|
172
171
|
def artifacts_base_path_and_link_path(platform_tag, prefix = 'artifacts', is_nonfinal = false)
|
173
|
-
platform_name,
|
172
|
+
platform_name, = Pkg::Platforms.parse_platform_tag(platform_tag)
|
174
173
|
package_format = Pkg::Platforms.package_format_for_tag(platform_tag)
|
175
174
|
|
176
175
|
path_data = {
|
@@ -189,7 +188,7 @@ module Pkg::Paths
|
|
189
188
|
end
|
190
189
|
|
191
190
|
def artifacts_path(platform_tag, path_prefix = 'artifacts', nonfinal = false)
|
192
|
-
base_path,
|
191
|
+
base_path, = artifacts_base_path_and_link_path(platform_tag, path_prefix, nonfinal)
|
193
192
|
platform, version, architecture = Pkg::Platforms.parse_platform_tag(platform_tag)
|
194
193
|
package_format = Pkg::Platforms.package_format_for_tag(platform_tag)
|
195
194
|
|
@@ -306,24 +305,24 @@ module Pkg::Paths
|
|
306
305
|
fail "Can't determine path for non-debian platform #{platform_tag}."
|
307
306
|
end
|
308
307
|
|
309
|
-
platform, version,
|
308
|
+
platform, version, = Pkg::Platforms.parse_platform_tag(platform_tag)
|
310
309
|
code_name = Pkg::Platforms.codename_for_platform_version(platform, version)
|
311
310
|
remote_repo_path = remote_repo_base(platform_tag, nonfinal: nonfinal)
|
312
311
|
|
313
312
|
# In puppet7 and beyond, we moved the puppet major version to near the top to allow each
|
314
313
|
# puppet major release to have its own apt repo, for example:
|
315
314
|
# /opt/repository/apt/puppet7/pool/bionic/p/puppet-agent
|
316
|
-
if %w
|
315
|
+
if %w[FUTURE-puppet7 FUTURE-puppet7-nightly].include? repo_name
|
317
316
|
return File.join(remote_repo_path, repo_name, 'pool', code_name, project[0], project)
|
318
317
|
end
|
319
318
|
|
320
319
|
# For repos prior to puppet7, the puppet version was part of the repository
|
321
320
|
# For example: /opt/repository/apt/pool/bionic/puppet6/p/puppet-agent
|
322
|
-
if %w
|
321
|
+
if %w[puppet7 puppet7-nightly
|
323
322
|
puppet6 puppet6-nightly
|
324
323
|
puppet5 puppet5-nightly
|
325
|
-
puppet
|
326
|
-
puppet-tools
|
324
|
+
puppet puppet-nightly
|
325
|
+
puppet-tools].include? repo_name
|
327
326
|
return File.join(remote_repo_path, 'pool', code_name, repo_name, project[0], project)
|
328
327
|
end
|
329
328
|
|
@@ -331,7 +330,7 @@ module Pkg::Paths
|
|
331
330
|
end
|
332
331
|
|
333
332
|
def release_package_link_path(platform_tag, nonfinal = false)
|
334
|
-
platform, version,
|
333
|
+
platform, version, = Pkg::Platforms.parse_platform_tag(platform_tag)
|
335
334
|
package_format = Pkg::Platforms.package_format_for_tag(platform_tag)
|
336
335
|
case package_format
|
337
336
|
when 'rpm'
|
@@ -372,5 +371,4 @@ module Pkg::Paths
|
|
372
371
|
end
|
373
372
|
|
374
373
|
private :package_arch
|
375
|
-
|
376
374
|
end
|
data/lib/packaging/platforms.rb
CHANGED
@@ -4,7 +4,6 @@ require 'set'
|
|
4
4
|
# explicitly supports
|
5
5
|
module Pkg
|
6
6
|
module Platforms
|
7
|
-
|
8
7
|
module_function
|
9
8
|
|
10
9
|
DEBIAN_SOURCE_FORMATS = ['debian.tar.gz', 'orig.tar.gz', 'dsc', 'changes']
|
@@ -22,14 +21,6 @@ module Pkg
|
|
22
21
|
},
|
23
22
|
|
24
23
|
'debian' => {
|
25
|
-
'8' => {
|
26
|
-
codename: 'jessie',
|
27
|
-
architectures: ['amd64', 'i386', 'powerpc'],
|
28
|
-
source_architecture: 'source',
|
29
|
-
package_format: 'deb',
|
30
|
-
source_package_formats: DEBIAN_SOURCE_FORMATS,
|
31
|
-
repo: true,
|
32
|
-
},
|
33
24
|
'9' => {
|
34
25
|
codename: 'stretch',
|
35
26
|
architectures: ['amd64', 'i386'],
|
@@ -57,14 +48,6 @@ module Pkg
|
|
57
48
|
},
|
58
49
|
|
59
50
|
'el' => {
|
60
|
-
'5' => {
|
61
|
-
architectures: ['x86_64', 'i386'],
|
62
|
-
source_architecture: 'SRPMS',
|
63
|
-
package_format: 'rpm',
|
64
|
-
source_package_formats: ['src.rpm'],
|
65
|
-
signature_format: 'v3',
|
66
|
-
repo: true,
|
67
|
-
},
|
68
51
|
'6' => {
|
69
52
|
architectures: ['x86_64', 'i386'],
|
70
53
|
source_architecture: 'SRPMS',
|
@@ -88,26 +71,18 @@ module Pkg
|
|
88
71
|
source_package_formats: ['src.rpm'],
|
89
72
|
signature_format: 'v4',
|
90
73
|
repo: true,
|
91
|
-
}
|
92
|
-
},
|
93
|
-
|
94
|
-
'fedora' => {
|
95
|
-
'30' => {
|
96
|
-
architectures: ['x86_64'],
|
97
|
-
source_architecture: 'SRPMS',
|
98
|
-
package_format: 'rpm',
|
99
|
-
source_package_formats: ['src.rpm'],
|
100
|
-
signature_format: 'v4',
|
101
|
-
repo: true,
|
102
74
|
},
|
103
|
-
'
|
75
|
+
'9' => {
|
104
76
|
architectures: ['x86_64'],
|
105
77
|
source_architecture: 'SRPMS',
|
106
78
|
package_format: 'rpm',
|
107
79
|
source_package_formats: ['src.rpm'],
|
108
80
|
signature_format: 'v4',
|
109
81
|
repo: true,
|
110
|
-
}
|
82
|
+
}
|
83
|
+
},
|
84
|
+
|
85
|
+
'fedora' => {
|
111
86
|
'32' => {
|
112
87
|
architectures: ['x86_64'],
|
113
88
|
source_architecture: 'SRPMS',
|
@@ -127,22 +102,17 @@ module Pkg
|
|
127
102
|
},
|
128
103
|
|
129
104
|
'osx' => {
|
130
|
-
'10.
|
131
|
-
architectures: ['x86_64'],
|
132
|
-
package_format: 'dmg',
|
133
|
-
repo: false,
|
134
|
-
},
|
135
|
-
'10.14' => {
|
105
|
+
'10.15' => {
|
136
106
|
architectures: ['x86_64'],
|
137
107
|
package_format: 'dmg',
|
138
108
|
repo: false,
|
139
109
|
},
|
140
|
-
'
|
141
|
-
architectures: ['x86_64'],
|
110
|
+
'11' => {
|
111
|
+
architectures: ['x86_64', 'arm64'],
|
142
112
|
package_format: 'dmg',
|
143
113
|
repo: false,
|
144
114
|
},
|
145
|
-
'
|
115
|
+
'12' => {
|
146
116
|
architectures: ['x86_64', 'arm64'],
|
147
117
|
package_format: 'dmg',
|
148
118
|
repo: false,
|
@@ -233,14 +203,6 @@ module Pkg
|
|
233
203
|
source_package_formats: DEBIAN_SOURCE_FORMATS,
|
234
204
|
repo: true,
|
235
205
|
},
|
236
|
-
'18.10' => {
|
237
|
-
codename: 'cosmic',
|
238
|
-
architectures: ['amd64', 'ppc64el'],
|
239
|
-
source_architecture: 'source',
|
240
|
-
package_format: 'deb',
|
241
|
-
source_package_formats: DEBIAN_SOURCE_FORMATS,
|
242
|
-
repo: true,
|
243
|
-
},
|
244
206
|
'20.04' => {
|
245
207
|
codename: 'focal',
|
246
208
|
architectures: ['amd64', 'aarch64'],
|
@@ -265,7 +227,7 @@ module Pkg
|
|
265
227
|
repo: false,
|
266
228
|
}
|
267
229
|
},
|
268
|
-
}
|
230
|
+
}
|
269
231
|
|
270
232
|
# @return [Array] An array of Strings, containing all of the supported
|
271
233
|
# platforms as defined in PLATFORM_INFO
|
@@ -277,7 +239,7 @@ module Pkg
|
|
277
239
|
# versions for the given platform
|
278
240
|
def versions_for_platform(platform)
|
279
241
|
PLATFORM_INFO[platform].keys
|
280
|
-
rescue
|
242
|
+
rescue StandardError
|
281
243
|
raise "No information found for '#{platform}'"
|
282
244
|
end
|
283
245
|
|
@@ -319,7 +281,7 @@ module Pkg
|
|
319
281
|
# AIX uses 'ppc' as its architecture in paths and file names
|
320
282
|
architecture = 'ppc' if platform == 'aix'
|
321
283
|
return [platform, version, architecture]
|
322
|
-
rescue
|
284
|
+
rescue StandardError
|
323
285
|
raise "Could not verify that '#{platform_tag}' is a valid tag"
|
324
286
|
end
|
325
287
|
|
@@ -328,7 +290,7 @@ module Pkg
|
|
328
290
|
# platform-version-arch
|
329
291
|
# @return [Hash] The hash of data associated with the given platform version
|
330
292
|
def platform_lookup(platform_tag)
|
331
|
-
platform, version,
|
293
|
+
platform, version, = parse_platform_tag(platform_tag)
|
332
294
|
PLATFORM_INFO[platform][version]
|
333
295
|
end
|
334
296
|
|
@@ -438,7 +400,7 @@ module Pkg
|
|
438
400
|
if include_source
|
439
401
|
begin
|
440
402
|
source_architecture = Array(get_attribute_for_platform_version(platform, version, :source_architecture))
|
441
|
-
rescue
|
403
|
+
rescue StandardError # rubocop:disable Lint/SuppressedException
|
442
404
|
end
|
443
405
|
end
|
444
406
|
return (platform_architectures + source_architecture).flatten
|
data/lib/packaging/repo.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
module Pkg::Repo
|
2
|
-
|
3
2
|
class << self
|
4
|
-
|
5
3
|
##
|
6
4
|
## Construct a local_target based upon the versioning style
|
7
5
|
##
|
@@ -38,7 +36,7 @@ module Pkg::Repo
|
|
38
36
|
target_tarball = File.join('repos', "#{archive_name}.tar.gz")
|
39
37
|
tar_command = %W[#{tar} --owner=0 --group=0 --create --gzip
|
40
38
|
--file #{target_tarball} #{repo_location}].join(' ')
|
41
|
-
stdout,
|
39
|
+
stdout, = Pkg::Util::Execution.capture3(tar_command)
|
42
40
|
return stdout
|
43
41
|
end
|
44
42
|
end
|
@@ -69,7 +67,7 @@ module Pkg::Repo
|
|
69
67
|
tar_command = %W[#{tar} --owner=0 --group=0 #{tar_action}
|
70
68
|
--file #{all_repos_tarball_name} #{repo_tarball_path}].join(' ')
|
71
69
|
|
72
|
-
stdout,
|
70
|
+
stdout, = Pkg::Util::Execution.capture3(tar_command)
|
73
71
|
puts stdout
|
74
72
|
end
|
75
73
|
end
|
@@ -82,7 +80,7 @@ module Pkg::Repo
|
|
82
80
|
gzip = Pkg::Util::Tool.check_tool('gzip')
|
83
81
|
|
84
82
|
gzip_command = "#{gzip} --fast #{all_repos_tarball_name}"
|
85
|
-
stdout,
|
83
|
+
stdout, = Pkg::Util::Execution.capture3(gzip_command)
|
86
84
|
puts stdout
|
87
85
|
end
|
88
86
|
|
@@ -111,13 +109,13 @@ module Pkg::Repo
|
|
111
109
|
cmd = "[ -d #{artifact_directory} ] || exit 1 ; "
|
112
110
|
cmd << "pushd #{artifact_directory} > /dev/null && "
|
113
111
|
cmd << "find . -name '*.#{pkg_ext}' -print0 | xargs --no-run-if-empty -0 -I {} dirname {} "
|
114
|
-
stdout,
|
115
|
-
|
112
|
+
stdout, = Pkg::Util::Net.remote_execute(
|
113
|
+
Pkg::Config.distribution_server,
|
116
114
|
cmd,
|
117
115
|
{ capture_output: true }
|
118
|
-
|
116
|
+
)
|
119
117
|
return stdout.split
|
120
|
-
rescue => e
|
118
|
+
rescue StandardError => e
|
121
119
|
fail "Error: Could not retrieve directories that contain #{pkg_ext} " \
|
122
120
|
"packages in #{Pkg::Config.distribution_server}:#{artifact_directory}: #{e}"
|
123
121
|
end
|
@@ -127,7 +125,7 @@ module Pkg::Repo
|
|
127
125
|
cmd << "pushd #{artifact_parent_directory} > /dev/null && "
|
128
126
|
cmd << 'rsync --archive --verbose --one-file-system --ignore-existing artifacts/ repos/ '
|
129
127
|
Pkg::Util::Net.remote_execute(Pkg::Config.distribution_server, cmd)
|
130
|
-
rescue => e
|
128
|
+
rescue StandardError => e
|
131
129
|
fail "Error: Could not populate repos directory in " \
|
132
130
|
"#{Pkg::Config.distribution_server}:#{artifact_parent_directory}: #{e}"
|
133
131
|
end
|
@@ -138,7 +136,7 @@ module Pkg::Repo
|
|
138
136
|
|
139
137
|
def update_repo(remote_host, command, options = {})
|
140
138
|
fail_message = "Error: Missing required argument '%s', perhaps update build_defaults?"
|
141
|
-
[
|
139
|
+
%i[repo_name repo_path repo_host repo_url].each do |option|
|
142
140
|
fail fail_message % option.to_s if argument_required?(option.to_s, command) && !options[option]
|
143
141
|
end
|
144
142
|
|
@@ -152,7 +150,8 @@ module Pkg::Repo
|
|
152
150
|
}
|
153
151
|
Pkg::Util::Net.remote_execute(
|
154
152
|
remote_host,
|
155
|
-
Pkg::Util::Misc.search_and_replace(command, repo_configuration)
|
153
|
+
Pkg::Util::Misc.search_and_replace(command, repo_configuration)
|
154
|
+
)
|
156
155
|
end
|
157
156
|
end
|
158
157
|
end
|
data/lib/packaging/retrieve.rb
CHANGED
@@ -67,7 +67,7 @@ module Pkg::Retrieve
|
|
67
67
|
warn "Could not find `wget` tool. Falling back to rsyncing from #{Pkg::Config.distribution_server}."
|
68
68
|
begin
|
69
69
|
Pkg::Util::Net.rsync_from("#{rsync_path}/", Pkg::Config.distribution_server, "#{local_target}/")
|
70
|
-
rescue => e
|
70
|
+
rescue StandardError => e
|
71
71
|
fail "Couldn't rsync packages from distribution server.\n#{e}"
|
72
72
|
end
|
73
73
|
end
|
data/lib/packaging/rpm/repo.rb
CHANGED
@@ -75,7 +75,7 @@ module Pkg::Rpm::Repo
|
|
75
75
|
path = Pathname.new(origin_path)
|
76
76
|
dest_path = Pathname.new(destination_path)
|
77
77
|
|
78
|
-
options = %w
|
78
|
+
options = %w[
|
79
79
|
rsync
|
80
80
|
--recursive
|
81
81
|
--links
|
@@ -91,7 +91,7 @@ module Pkg::Rpm::Repo
|
|
91
91
|
--no-perms
|
92
92
|
--no-owner
|
93
93
|
--no-group
|
94
|
-
|
94
|
+
]
|
95
95
|
|
96
96
|
options << '--dry-run' if dryrun
|
97
97
|
options << path
|
@@ -99,7 +99,7 @@ module Pkg::Rpm::Repo
|
|
99
99
|
if destination
|
100
100
|
options << "#{destination}:#{dest_path.parent}"
|
101
101
|
else
|
102
|
-
options <<
|
102
|
+
options << dest_path.parent.to_s
|
103
103
|
end
|
104
104
|
|
105
105
|
options.join("\s")
|
@@ -117,9 +117,9 @@ module Pkg::Rpm::Repo
|
|
117
117
|
FileUtils.mkdir_p("pkg/#{target}")
|
118
118
|
config_url = "#{base_url}/#{target}/rpm/"
|
119
119
|
begin
|
120
|
-
stdout,
|
120
|
+
stdout, = Pkg::Util::Execution.capture3("#{wget} -r -np -nH --cut-dirs 3 -P pkg/#{target} --reject 'index*' #{config_url}")
|
121
121
|
stdout
|
122
|
-
rescue => e
|
122
|
+
rescue StandardError => e
|
123
123
|
fail "Couldn't retrieve rpm yum repo configs.\n#{e}"
|
124
124
|
end
|
125
125
|
end
|
@@ -149,7 +149,7 @@ module Pkg::Rpm::Repo
|
|
149
149
|
# repodata folders in them, and second that those same directories also
|
150
150
|
# contain rpms
|
151
151
|
#
|
152
|
-
stdout,
|
152
|
+
stdout, = Pkg::Util::Execution.capture3("#{wget} --spider -r -l 5 --no-parent #{repo_base} 2>&1")
|
153
153
|
stdout = stdout.split.uniq.reject { |x| x =~ /\?|index/ }.select { |x| x =~ /http:.*repodata\/$/ }
|
154
154
|
|
155
155
|
# RPMs will always exist at the same directory level as the repodata
|
@@ -157,7 +157,7 @@ module Pkg::Rpm::Repo
|
|
157
157
|
#
|
158
158
|
yum_repos = []
|
159
159
|
stdout.map { |x| x.chomp('repodata/') }.each do |url|
|
160
|
-
output,
|
160
|
+
output, = Pkg::Util::Execution.capture3("#{wget} --spider -r -l 1 --no-parent #{url} 2>&1")
|
161
161
|
unless output.split.uniq.reject { |x| x =~ /\?|index/ }.select { |x| x =~ /http:.*\.rpm$/ }.empty?
|
162
162
|
yum_repos << url
|
163
163
|
end
|
@@ -204,7 +204,7 @@ module Pkg::Rpm::Repo
|
|
204
204
|
end
|
205
205
|
|
206
206
|
def create_local_repos(directory = "repos")
|
207
|
-
stdout,
|
207
|
+
stdout, = Pkg::Util::Execution.capture3("bash -c '#{repo_creation_command(directory)}'")
|
208
208
|
stdout
|
209
209
|
end
|
210
210
|
|
data/lib/packaging/sign/dmg.rb
CHANGED
@@ -8,25 +8,25 @@ module Pkg::Sign::Dmg
|
|
8
8
|
end
|
9
9
|
|
10
10
|
host_string = "#{ENV['USER']}@#{Pkg::Config.osx_signing_server}"
|
11
|
-
host_string =
|
11
|
+
host_string = Pkg::Config.osx_signing_server.to_s if Pkg::Config.osx_signing_server =~ /@/
|
12
12
|
|
13
13
|
ssh_host_string = "#{use_identity} #{host_string}"
|
14
14
|
rsync_host_string = "-e 'ssh #{use_identity}' #{host_string}"
|
15
|
-
archs =
|
15
|
+
archs = Dir.glob("#{pkg_directory}/{apple,mac,osx}/**/{x86_64,arm64}").map { |el| el.split('/').last }
|
16
16
|
|
17
17
|
if archs.empty?
|
18
|
-
|
18
|
+
warn "Error: no architectures found in #{pkg_directory}/{apple,mac,osx}"
|
19
19
|
exit 1
|
20
20
|
end
|
21
21
|
|
22
22
|
archs.each do |arch|
|
23
23
|
remote_working_directory = "/tmp/#{Pkg::Util.rand_string}/#{arch}"
|
24
24
|
dmg_mount_point = File.join(remote_working_directory, "mount")
|
25
|
-
signed_items_directory
|
25
|
+
signed_items_directory = File.join(remote_working_directory, "signed")
|
26
26
|
|
27
27
|
dmgs = Dir.glob("#{pkg_directory}/{apple,mac,osx}/**/#{arch}/*.dmg")
|
28
28
|
if dmgs.empty?
|
29
|
-
|
29
|
+
warn "Error: no dmgs found in #{pkg_directory}/{apple,mac,osx} for #{arch} architecture."
|
30
30
|
exit 1
|
31
31
|
end
|
32
32
|
|
@@ -43,7 +43,7 @@ module Pkg::Sign::Dmg
|
|
43
43
|
for pkg in #{dmg_mount_point}/*.pkg; do
|
44
44
|
pkg_basename=$(basename $pkg) ;
|
45
45
|
if /usr/sbin/pkgutil --check-signature $pkg ; then
|
46
|
-
echo
|
46
|
+
echo Warning: $pkg is already signed skipping ;
|
47
47
|
cp $pkg #{signed_items_directory}/$pkg_basename ;
|
48
48
|
continue ;
|
49
49
|
fi ;
|
@@ -70,7 +70,8 @@ module Pkg::Sign::Dmg
|
|
70
70
|
|
71
71
|
dmgs.each do |dmg|
|
72
72
|
Pkg::Util::Net.rsync_from(
|
73
|
-
"#{remote_working_directory}/#{File.basename(dmg)}", rsync_host_string, File.dirname(dmg)
|
73
|
+
"#{remote_working_directory}/#{File.basename(dmg)}", rsync_host_string, File.dirname(dmg)
|
74
|
+
)
|
74
75
|
end
|
75
76
|
|
76
77
|
Pkg::Util::Net.remote_execute(ssh_host_string, "rm -rf '#{remote_working_directory}'")
|