prm 0.2.14 → 0.2.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/bin/prm +6 -1
- data/lib/prm/repo.rb +57 -39
- data/lib/prm/rpm.rb +7 -0
- data/templates/deb_release.erb +12 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a78bc2ba1b8f251c719f5d318745a40db260dd75
|
4
|
+
data.tar.gz: 579a58d6ddb8158d55b0a14c5e86a617d02711c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67862c147b674c244f4535f20e45b21bea801c2d314e3803b4621cf96c874df399f91c5172e34a93056232e5675604c077faaec1ea4ba077fc7615f24a8b2ef8
|
7
|
+
data.tar.gz: b5114cf8c52d7e528283036216ce7d25278006e7d8f3980d32bdabdc8712b428ba1f4be5d788ff3a39850e470d1145453a0f7144b120cbea11069b92e60b0124
|
data/bin/prm
CHANGED
@@ -31,10 +31,13 @@ class Main < Clamp::Command
|
|
31
31
|
"This option will be removed in next stable release (0.3.0)\n"
|
32
32
|
end
|
33
33
|
option ["-k", "--gpg"], "GPG KEY", "Sign release files with this GPG key", :default => false
|
34
|
+
option ["-x", "--gpg_passphrase"], "GPG PASSPHRASE", "Passphrase for GPG key [DEB ONLY]", :default => false
|
35
|
+
option ["-x", "--gpg_passphrase"], "GPG PASSPHRASE", "Passphrase for GPG key", :default => false
|
36
|
+
option ["-n", "--gpg_sign_algorithm"], "GPG SIGN ALGORITHM", "Digest algorithm to use for signing (e.g SHA1, SHA512, etc)", :default => false
|
34
37
|
|
35
38
|
def execute
|
36
39
|
if version?
|
37
|
-
puts "PRM version: 0.2.
|
40
|
+
puts "PRM version: 0.2.15\n"
|
38
41
|
exit
|
39
42
|
end
|
40
43
|
|
@@ -63,6 +66,8 @@ class Main < Clamp::Command
|
|
63
66
|
end
|
64
67
|
unless gpg.nil?
|
65
68
|
r.gpg = gpg
|
69
|
+
r.gpg_passphrase = gpg_passphrase
|
70
|
+
r.gpg_sign_algorithm = gpg_sign_algorithm
|
66
71
|
end
|
67
72
|
unless accesskey.nil?
|
68
73
|
r.accesskey = accesskey
|
data/lib/prm/repo.rb
CHANGED
@@ -2,11 +2,12 @@ require 'rubygems'
|
|
2
2
|
require 'fileutils'
|
3
3
|
require 'zlib'
|
4
4
|
require 'digest/md5'
|
5
|
+
require 'digest/sha1'
|
5
6
|
require 'digest/sha2'
|
6
7
|
require 'erb'
|
7
8
|
require 'find'
|
8
9
|
require 'thread'
|
9
|
-
require 'peach'
|
10
|
+
require 'peach'
|
10
11
|
require 'aws/s3'
|
11
12
|
require 'arr-pm'
|
12
13
|
require File.join(File.dirname(__FILE__), 'rpm.rb')
|
@@ -81,50 +82,55 @@ module Debian
|
|
81
82
|
|
82
83
|
npath = "dists/" + r + "/" + c + "/" + "binary-" + a + "/"
|
83
84
|
|
84
|
-
d = File.open(pfpath, "w+")
|
85
|
+
d = File.open(pfpath, "w+")
|
85
86
|
write_mutex = Mutex.new
|
86
87
|
|
87
88
|
Dir.glob("#{fpath}*.deb").peach do |deb|
|
88
|
-
|
89
|
-
|
90
|
-
|
89
|
+
algs = {
|
90
|
+
'md5' => Digest::MD5.new,
|
91
|
+
'sha1' => Digest::SHA1.new,
|
92
|
+
'sha256' => Digest::SHA256.new
|
93
|
+
}
|
94
|
+
sums = {
|
95
|
+
'md5' => '',
|
96
|
+
'sha1' => '',
|
97
|
+
'sha256' => ''
|
98
|
+
}
|
99
|
+
tdeb = File.basename(deb)
|
100
|
+
init_size = File.size(deb)
|
101
|
+
deb_contents = nil
|
91
102
|
|
92
103
|
FileUtils.mkdir_p "tmp/#{tdeb}/"
|
93
104
|
if not nocache
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
init_size = `wc -c < #{deb}`
|
105
|
+
sums.keys.each do |s|
|
106
|
+
sum_path = "#{path}/dists/#{r}/#{c}/binary-#{a}/#{s}-results/#{tdeb}"
|
107
|
+
FileUtils.mkdir_p File.dirname(sum_path)
|
99
108
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
if File.exists?("#{md5sum_path}") && nocache.nil?
|
105
|
-
file = File.open(md5sum_path, 'r')
|
106
|
-
md5sum = file.read
|
107
|
-
file.close
|
108
|
-
else
|
109
|
-
md5sum = Digest::MD5.file(deb)
|
110
|
-
if nocache.nil?
|
111
|
-
File.open(md5sum_path, 'w') { |file| file.write(md5sum) }
|
112
|
-
end
|
113
|
-
end
|
109
|
+
if File.exist?(sum_path)
|
110
|
+
stored_sum = File.read(sum_path)
|
111
|
+
sum = stored_sum unless nocache.nil?
|
112
|
+
end
|
114
113
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
114
|
+
unless sum
|
115
|
+
deb_contents ||= File.read(deb)
|
116
|
+
sum = algs[s].hexdigest(deb_contents)
|
117
|
+
end
|
119
118
|
|
120
|
-
|
121
|
-
|
119
|
+
sums[s] = sum
|
120
|
+
if nocache.nil?
|
121
|
+
File.open(sum_path, 'w') { |f| f.write(sum) }
|
122
|
+
elsif sum != stored_sum
|
123
|
+
puts "WARN: #{s}sum mismatch on #{deb}\n"
|
124
|
+
end
|
122
125
|
end
|
123
126
|
end
|
127
|
+
`ar p #{deb} control.tar.gz | tar zx -C tmp/#{tdeb}/`
|
124
128
|
|
125
129
|
package_info = [
|
126
130
|
"Filename: #{npath}#{s3_compatible_encode(tdeb)}",
|
127
|
-
"MD5sum: #{
|
131
|
+
"MD5sum: #{sums['md5']}",
|
132
|
+
"SHA1: #{sums['sha1']}",
|
133
|
+
"SHA256: #{sums['sha256']}",
|
128
134
|
"Size: #{init_size}"
|
129
135
|
]
|
130
136
|
|
@@ -132,7 +138,7 @@ module Debian
|
|
132
138
|
# Copy the control file data into the Packages list
|
133
139
|
d.write(File.read("tmp/#{tdeb}/control").gsub!(/\n+/, "\n"))
|
134
140
|
d.write(package_info.join("\n"))
|
135
|
-
d.write("\n") # blank line between package info in the Packages file
|
141
|
+
d.write("\n\n") # blank line between package info in the Packages file
|
136
142
|
end
|
137
143
|
end
|
138
144
|
|
@@ -161,7 +167,7 @@ module Debian
|
|
161
167
|
end
|
162
168
|
}
|
163
169
|
|
164
|
-
component_ar.each do |c|
|
170
|
+
component_ar.each do |c|
|
165
171
|
arch.each do |ar|
|
166
172
|
unreasonable_array.each do |unr|
|
167
173
|
tmp_path = "#{path}/dists/#{release}/#{c}/binary-#{ar}"
|
@@ -169,10 +175,12 @@ module Debian
|
|
169
175
|
filename = "#{c}/binary-#{ar}/#{unr}".chomp
|
170
176
|
|
171
177
|
byte_size = File.size("#{tmp_path}/#{unr}").to_s
|
172
|
-
|
178
|
+
file_contents = File.read("#{tmp_path}/#{unr}")
|
173
179
|
|
174
180
|
tmp_hash['size'] = byte_size
|
175
|
-
tmp_hash['
|
181
|
+
tmp_hash['md5'] = Digest::MD5.hexdigest(file_contents)
|
182
|
+
tmp_hash['sha1'] = Digest::SHA1.hexdigest(file_contents)
|
183
|
+
tmp_hash['sha256'] = Digest::SHA256.hexdigest(file_contents)
|
176
184
|
release_info[filename] = tmp_hash
|
177
185
|
end
|
178
186
|
end
|
@@ -192,10 +200,18 @@ module Debian
|
|
192
200
|
# We expect that GPG is installed and a key has already been made
|
193
201
|
def generate_release_gpg(path,release,gpg)
|
194
202
|
Dir.chdir("#{path}/dists/#{release}") do
|
203
|
+
if gpg_sign_algorithm.nil?
|
204
|
+
sign_algorithm = "none"
|
205
|
+
else
|
206
|
+
sign_algorithm = gpg_sign_algorithm
|
207
|
+
end
|
208
|
+
|
195
209
|
if gpg.nil?
|
196
|
-
sign_cmd = "gpg --yes --output Release.gpg -b Release"
|
210
|
+
sign_cmd = "gpg --digest-algo \"#{sign_algorithm}\" --yes --output Release.gpg -b Release"
|
211
|
+
elsif !gpg_passphrase.nil?
|
212
|
+
sign_cmd = "echo \'#{gpg_passphrase}\' | gpg --digest-algo \"#{sign_algorithm}\" -u #{gpg} --passphrase-fd 0 --yes --output Release.gpg -b Release"
|
197
213
|
else
|
198
|
-
sign_cmd = "gpg -u #{gpg} --yes --output Release.gpg -b Release"
|
214
|
+
sign_cmd = "gpg --digest-algo \"#{sign_algorithm}\" -u #{gpg} --yes --output Release.gpg -b Release"
|
199
215
|
end
|
200
216
|
system sign_cmd
|
201
217
|
end
|
@@ -213,7 +229,7 @@ module SNAP
|
|
213
229
|
return
|
214
230
|
end
|
215
231
|
|
216
|
-
release.each do |r|
|
232
|
+
release.each do |r|
|
217
233
|
time = Time.new
|
218
234
|
now = time.strftime("%Y-%m-%d-%H-%M")
|
219
235
|
new_snap = "#{snapname}-#{now}"
|
@@ -226,7 +242,7 @@ module SNAP
|
|
226
242
|
end
|
227
243
|
end
|
228
244
|
|
229
|
-
if File.exists?("#{path}/dists/#{r}/#{snapname}") && !File.symlink?("#{path}/dists/#{r}/#{snapname}")
|
245
|
+
if File.exists?("#{path}/dists/#{r}/#{snapname}") && !File.symlink?("#{path}/dists/#{r}/#{snapname}")
|
230
246
|
puts "Snapshot target is a filesystem, remove it or rename your snap target"
|
231
247
|
return
|
232
248
|
end
|
@@ -352,6 +368,8 @@ module PRM
|
|
352
368
|
attr_accessor :label
|
353
369
|
attr_accessor :origin
|
354
370
|
attr_accessor :gpg
|
371
|
+
attr_accessor :gpg_passphrase
|
372
|
+
attr_accessor :gpg_sign_algorithm
|
355
373
|
attr_accessor :secretkey
|
356
374
|
attr_accessor :accesskey
|
357
375
|
attr_accessor :snapshot
|
data/lib/prm/rpm.rb
CHANGED
@@ -122,6 +122,13 @@ module Redhat
|
|
122
122
|
r_file.close
|
123
123
|
|
124
124
|
FileUtils.mv("#{repo_path}/repomd.xml.tmp", "#{repo_path}/repomd.xml")
|
125
|
+
|
126
|
+
unless gpg == false
|
127
|
+
# We expect that GPG is installed and a key has already been made
|
128
|
+
sign_cmd = "gpg -u #{gpg} --yes --detach-sign --armor #{repo_path}/repomd.xml"
|
129
|
+
system sign_cmd
|
130
|
+
end
|
131
|
+
|
125
132
|
puts "Built Yum repository for #{r}\n"
|
126
133
|
end
|
127
134
|
end
|
data/templates/deb_release.erb
CHANGED
@@ -7,7 +7,17 @@ Origin: <%= origin %>
|
|
7
7
|
Label: <%= label %>
|
8
8
|
<% end -%>
|
9
9
|
MD5Sum:
|
10
|
-
d41d8cd98f00b204e9800998ecf8427e
|
10
|
+
d41d8cd98f00b204e9800998ecf8427e 0 Release
|
11
11
|
<% release_info.each_pair do |k,v| -%>
|
12
|
-
<%= "#{release_info[k]['
|
12
|
+
<%= "#{release_info[k]['md5']} #{release_info[k]['size']} #{k}" %>
|
13
|
+
<% end -%>
|
14
|
+
SHA1:
|
15
|
+
da39a3ee5e6b4b0d3255bfef95601890afd80709 0 Release
|
16
|
+
<% release_info.each_pair do |k,v| -%>
|
17
|
+
<%= "#{release_info[k]['sha1']} #{release_info[k]['size']} #{k}" %>
|
18
|
+
<% end -%>
|
19
|
+
SHA256:
|
20
|
+
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 Release
|
21
|
+
<% release_info.each_pair do |k,v| -%>
|
22
|
+
<%= "#{release_info[k]['sha256']} #{release_info[k]['size']} #{k}" %>
|
13
23
|
<% end -%>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brett Gailey
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: peach
|