packaging 0.106.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 +10 -6
- 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 +2 -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 -22
- data/lib/packaging/util/repo.rb +0 -1
- data/lib/packaging/util/serialization.rb +1 -2
- data/lib/packaging/util/ship.rb +3 -3
- data/lib/packaging/util/sign.rb +8 -8
- data/lib/packaging/util/tool.rb +1 -4
- data/lib/packaging/util/version.rb +1 -5
- data/lib/packaging/util.rb +1 -1
- data/lib/packaging.rb +1 -2
- data/spec/lib/packaging/platforms_spec.rb +1 -1
- data/spec/lib/packaging/sign_spec.rb +1 -1
- data/spec/lib/packaging/util/git_spec.rb +2 -2
- data/spec/lib/packaging/util/git_tag_spec.rb +5 -5
- 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/doc.rake +5 -3
- data/tasks/education.rake +2 -4
- data/tasks/gem.rake +20 -12
- data/tasks/jenkins.rake +27 -15
- data/tasks/jenkins_dynamic.rake +10 -10
- 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/ship.rake +6 -6
- data/tasks/sign.rake +5 -5
- 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 -42
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']
|
@@ -113,6 +112,11 @@ module Pkg
|
|
113
112
|
package_format: 'dmg',
|
114
113
|
repo: false,
|
115
114
|
},
|
115
|
+
'12' => {
|
116
|
+
architectures: ['x86_64', 'arm64'],
|
117
|
+
package_format: 'dmg',
|
118
|
+
repo: false,
|
119
|
+
},
|
116
120
|
},
|
117
121
|
|
118
122
|
'redhatfips' => {
|
@@ -223,7 +227,7 @@ module Pkg
|
|
223
227
|
repo: false,
|
224
228
|
}
|
225
229
|
},
|
226
|
-
}
|
230
|
+
}
|
227
231
|
|
228
232
|
# @return [Array] An array of Strings, containing all of the supported
|
229
233
|
# platforms as defined in PLATFORM_INFO
|
@@ -235,7 +239,7 @@ module Pkg
|
|
235
239
|
# versions for the given platform
|
236
240
|
def versions_for_platform(platform)
|
237
241
|
PLATFORM_INFO[platform].keys
|
238
|
-
rescue
|
242
|
+
rescue StandardError
|
239
243
|
raise "No information found for '#{platform}'"
|
240
244
|
end
|
241
245
|
|
@@ -277,7 +281,7 @@ module Pkg
|
|
277
281
|
# AIX uses 'ppc' as its architecture in paths and file names
|
278
282
|
architecture = 'ppc' if platform == 'aix'
|
279
283
|
return [platform, version, architecture]
|
280
|
-
rescue
|
284
|
+
rescue StandardError
|
281
285
|
raise "Could not verify that '#{platform_tag}' is a valid tag"
|
282
286
|
end
|
283
287
|
|
@@ -286,7 +290,7 @@ module Pkg
|
|
286
290
|
# platform-version-arch
|
287
291
|
# @return [Hash] The hash of data associated with the given platform version
|
288
292
|
def platform_lookup(platform_tag)
|
289
|
-
platform, version,
|
293
|
+
platform, version, = parse_platform_tag(platform_tag)
|
290
294
|
PLATFORM_INFO[platform][version]
|
291
295
|
end
|
292
296
|
|
@@ -396,7 +400,7 @@ module Pkg
|
|
396
400
|
if include_source
|
397
401
|
begin
|
398
402
|
source_architecture = Array(get_attribute_for_platform_version(platform, version, :source_architecture))
|
399
|
-
rescue
|
403
|
+
rescue StandardError # rubocop:disable Lint/SuppressedException
|
400
404
|
end
|
401
405
|
end
|
402
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}'")
|