prm 0.2.14 → 0.2.15
Sign up to get free protection for your applications and to get access to all the features.
- 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
|