fpm 1.10.2 → 1.15.0
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 +5 -5
- data/CHANGELOG.rst +101 -5
- data/CONTRIBUTORS +1 -0
- data/LICENSE +1 -1
- data/lib/fpm/command.rb +90 -0
- data/lib/fpm/package/apk.rb +1 -1
- data/lib/fpm/package/cpan.rb +2 -1
- data/lib/fpm/package/deb.rb +200 -27
- data/lib/fpm/package/dir.rb +3 -3
- data/lib/fpm/package/empty.rb +13 -1
- data/lib/fpm/package/freebsd.rb +13 -20
- data/lib/fpm/package/gem.rb +50 -14
- data/lib/fpm/package/osxpkg.rb +6 -1
- data/lib/fpm/package/pacman.rb +22 -10
- data/lib/fpm/package/pleaserun.rb +1 -0
- data/lib/fpm/package/pyfpm/get_metadata.py +5 -0
- data/lib/fpm/package/python.rb +54 -7
- data/lib/fpm/package/rpm.rb +56 -16
- data/lib/fpm/package/sh.rb +1 -1
- data/lib/fpm/package/snap.rb +130 -0
- data/lib/fpm/package/tar.rb +1 -1
- data/lib/fpm/package/virtualenv.rb +3 -2
- data/lib/fpm/package/zip.rb +1 -1
- data/lib/fpm/package.rb +5 -4
- data/lib/fpm/util/tar_writer.rb +1 -1
- data/lib/fpm/util.rb +59 -46
- data/lib/fpm/version.rb +1 -1
- data/lib/fpm.rb +1 -0
- data/templates/deb/changelog.erb +1 -1
- data/templates/deb/deb.changes.erb +2 -3
- data/templates/deb/postinst_upgrade.sh.erb +30 -8
- data/templates/deb/postrm_upgrade.sh.erb +5 -0
- data/templates/deb/preinst_upgrade.sh.erb +5 -0
- data/templates/deb/prerm_upgrade.sh.erb +12 -4
- data/templates/deb.erb +2 -2
- data/templates/rpm.erb +5 -5
- data/templates/sh.erb +6 -1
- metadata +30 -78
data/lib/fpm/util.rb
CHANGED
@@ -1,21 +1,8 @@
|
|
1
1
|
require "fpm/namespace"
|
2
|
-
require "childprocess"
|
3
|
-
require "ffi"
|
4
2
|
require "fileutils"
|
5
3
|
|
6
4
|
# Some utility functions
|
7
5
|
module FPM::Util
|
8
|
-
extend FFI::Library
|
9
|
-
ffi_lib FFI::Library::LIBC
|
10
|
-
|
11
|
-
# mknod is __xmknod in glibc a wrapper around mknod to handle
|
12
|
-
# various stat struct formats. See bits/stat.h in glibc source
|
13
|
-
begin
|
14
|
-
attach_function :mknod, :mknod, [:string, :uint, :ulong], :int
|
15
|
-
rescue FFI::NotFoundError
|
16
|
-
# glibc/io/xmknod.c int __xmknod (int vers, const char *path, mode_t mode, dev_t *dev)
|
17
|
-
attach_function :xmknod, :__xmknod, [:int, :string, :uint, :pointer], :int
|
18
|
-
end
|
19
6
|
|
20
7
|
# Raised if safesystem cannot find the program to run.
|
21
8
|
class ExecutableNotFound < StandardError; end
|
@@ -23,6 +10,12 @@ module FPM::Util
|
|
23
10
|
# Raised if a safesystem program exits nonzero
|
24
11
|
class ProcessFailed < StandardError; end
|
25
12
|
|
13
|
+
# Raised when a named pipe cannot be copied due to missing functions in fpm and ruby.
|
14
|
+
class NamedPipeCannotBeCopied < StandardError; end
|
15
|
+
|
16
|
+
# Raised when an attempting to copy a special file such as a block device.
|
17
|
+
class UnsupportedSpecialFile < StandardError; end
|
18
|
+
|
26
19
|
# Is the given program in the system's PATH?
|
27
20
|
def program_in_path?(program)
|
28
21
|
# return false if path is not set
|
@@ -146,42 +139,37 @@ module FPM::Util
|
|
146
139
|
|
147
140
|
stdout_r, stdout_w = IO.pipe
|
148
141
|
stderr_r, stderr_w = IO.pipe
|
142
|
+
stdin_r, stdin_w = IO.pipe
|
149
143
|
|
150
|
-
|
151
|
-
process.environment.merge!(env)
|
152
|
-
|
153
|
-
process.io.stdout = stdout_w
|
154
|
-
process.io.stderr = stderr_w
|
155
|
-
|
156
|
-
if block_given? and opts[:stdin]
|
157
|
-
process.duplex = true
|
158
|
-
end
|
159
|
-
|
160
|
-
process.start
|
144
|
+
pid = Process.spawn(env, *args2, :out => stdout_w, :err => stderr_w, :in => stdin_r)
|
161
145
|
|
162
146
|
stdout_w.close; stderr_w.close
|
163
|
-
logger.debug("Process is running", :pid =>
|
147
|
+
logger.debug("Process is running", :pid => pid)
|
164
148
|
if block_given?
|
165
149
|
args3 = []
|
166
150
|
args3.push(process) if opts[:process]
|
167
|
-
args3.push(
|
151
|
+
args3.push(stdin_w) if opts[:stdin]
|
168
152
|
args3.push(stdout_r) if opts[:stdout]
|
169
153
|
args3.push(stderr_r) if opts[:stderr]
|
170
154
|
|
171
155
|
yield(*args3)
|
172
156
|
|
173
|
-
|
157
|
+
stdin_w.close if opts[:stdin] and not stdin_w.closed?
|
174
158
|
stdout_r.close unless stdout_r.closed?
|
175
159
|
stderr_r.close unless stderr_r.closed?
|
176
160
|
else
|
161
|
+
# If no block given (not interactive) we should close stdin_w because we
|
162
|
+
# won't be able to give input which may cause a hang.
|
163
|
+
stdin_w.close
|
177
164
|
# Log both stdout and stderr as 'info' because nobody uses stderr for
|
178
165
|
# actually reporting errors and as a result 'stderr' is a misnomer.
|
179
166
|
logger.pipe(stdout_r => :info, stderr_r => :info)
|
180
167
|
end
|
181
168
|
|
182
|
-
|
169
|
+
Process.waitpid(pid)
|
170
|
+
status = $?
|
183
171
|
|
184
|
-
return
|
172
|
+
return status.exitstatus
|
185
173
|
end # def execmd
|
186
174
|
|
187
175
|
# Run a command safely in a way that gets reports useful errors.
|
@@ -316,19 +304,6 @@ module FPM::Util
|
|
316
304
|
return @@tar_cmd_deterministic
|
317
305
|
end
|
318
306
|
|
319
|
-
# wrapper around mknod ffi calls
|
320
|
-
def mknod_w(path, mode, dev)
|
321
|
-
rc = -1
|
322
|
-
case %x{uname -s}.chomp
|
323
|
-
when 'Linux'
|
324
|
-
# bits/stat.h #define _MKNOD_VER_LINUX 0
|
325
|
-
rc = xmknod(0, path, mode, FFI::MemoryPointer.new(dev))
|
326
|
-
else
|
327
|
-
rc = mknod(path, mode, dev)
|
328
|
-
end
|
329
|
-
rc
|
330
|
-
end
|
331
|
-
|
332
307
|
def copy_metadata(source, destination)
|
333
308
|
source_stat = File::lstat(source)
|
334
309
|
dest_stat = File::lstat(destination)
|
@@ -354,10 +329,21 @@ module FPM::Util
|
|
354
329
|
|
355
330
|
def copy_entry(src, dst, preserve=false, remove_destination=false)
|
356
331
|
case File.ftype(src)
|
357
|
-
when 'fifo'
|
358
|
-
|
359
|
-
|
360
|
-
|
332
|
+
when 'fifo'
|
333
|
+
if File.respond_to?(:mkfifo)
|
334
|
+
File.mkfifo(dst)
|
335
|
+
elsif program_exists?("mkfifo")
|
336
|
+
safesystem("mkfifo", dst)
|
337
|
+
else
|
338
|
+
raise NamedPipeCannotBeCopied("Unable to copy. Cannot find program 'mkfifo' and Ruby is missing the 'File.mkfifo' method: #{src}")
|
339
|
+
end
|
340
|
+
when 'socket'
|
341
|
+
require "socket"
|
342
|
+
# In 2019, Ruby's FileUtils added this as a way to "copy" a unix socket.
|
343
|
+
# Reference: https://github.com/ruby/fileutils/pull/36/files
|
344
|
+
UNIXServer.new(dst).close()
|
345
|
+
when 'characterSpecial', 'blockSpecial'
|
346
|
+
raise UnsupportedSpecialFile.new("File is device which fpm doesn't know how to copy (#{File.ftype(src)}): #{src}")
|
361
347
|
when 'directory'
|
362
348
|
FileUtils.mkdir(dst) unless File.exists? dst
|
363
349
|
else
|
@@ -423,6 +409,33 @@ module FPM::Util
|
|
423
409
|
def logger
|
424
410
|
@logger ||= Cabin::Channel.get
|
425
411
|
end # def logger
|
412
|
+
|
413
|
+
def erbnew(template_code)
|
414
|
+
# In Ruby 2.6(?), Ruby changed how ERB::new is invoked.
|
415
|
+
# First, it added keyword args like `ERB.new(..., trim_mode: "-")`
|
416
|
+
# Later, it deprecated then removed the safe_level feature.
|
417
|
+
# As of Ruby 3.1, warnings are printed at runtime when ERB.new is called with the old syntax.
|
418
|
+
# Ruby 2.5 and older does not support the ERB.new keyword args.
|
419
|
+
#
|
420
|
+
# My tests showed:
|
421
|
+
# * Ruby 2.3.0 through 3.0 work correctly with the old syntax.
|
422
|
+
# * Ruby 3.1.0 and newer (at time of writing, Ruby 3.2) require the new syntax
|
423
|
+
# Therefore, in order to support the most versions of ruby, we need to do a version check
|
424
|
+
# to invoke ERB.new correctly and without printed warnings.
|
425
|
+
# References: https://github.com/jordansissel/fpm/issues/1894
|
426
|
+
# Honestly, I'm not sure if Gem::Version is correct to use in this situation, but it works.
|
427
|
+
|
428
|
+
# on older versions of Ruby, RUBY_VERSION is a frozen string, and
|
429
|
+
# Gem::Version.new calls String#strip! which throws an exception.
|
430
|
+
# so we have to call String#dup to get an unfrozen copy.
|
431
|
+
if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("3.1.0")
|
432
|
+
# Ruby 3.0.x and older
|
433
|
+
return ERB.new(template_code, nil, "-")
|
434
|
+
else
|
435
|
+
# Ruby 3.1.0 and newer
|
436
|
+
return ERB.new(template_code, trim_mode: "-")
|
437
|
+
end
|
438
|
+
end
|
426
439
|
end # module FPM::Util
|
427
440
|
|
428
441
|
require 'fpm/util/tar_writer'
|
data/lib/fpm/version.rb
CHANGED
data/lib/fpm.rb
CHANGED
data/templates/deb/changelog.erb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= name %> (<%= "#{epoch}:" if epoch %><%= version %><%= "-" + iteration.to_s if iteration %>)
|
1
|
+
<%= name %> (<%= "#{epoch}:" if epoch %><%= version %><%= "-" + iteration.to_s if iteration %>) <%= distribution %>; urgency=medium
|
2
2
|
|
3
3
|
* Package created with FPM.
|
4
4
|
|
@@ -14,9 +14,8 @@ Description: <%= firstline %>
|
|
14
14
|
<%= remainder.collect { |l| l =~ /^ *$/ ? " ." : " #{l}" }.join("\n") %>
|
15
15
|
<% end -%>
|
16
16
|
Changes:
|
17
|
-
<%= name %> (<%= "#{epoch}:" if epoch %><%= version %><%= "-" + iteration.to_s if iteration %>)
|
18
|
-
.
|
19
|
-
* Package created with FPM.
|
17
|
+
<%= name %> (<%= "#{epoch}:" if epoch %><%= version %><%= "-" + iteration.to_s if iteration %>) <%= distribution %>; urgency=medium
|
18
|
+
* Package created with FPM.
|
20
19
|
Checksums-Sha1:
|
21
20
|
<% changes_files.each do |file| -%>
|
22
21
|
<%= file[:sha1sum] %> <%= file[:size] %> <%= file[:name] %>
|
@@ -1,4 +1,9 @@
|
|
1
1
|
#!/bin/sh
|
2
|
+
|
3
|
+
<% if attributes[:deb_maintainerscripts_force_errorchecks?] -%>
|
4
|
+
set -e
|
5
|
+
<% end -%>
|
6
|
+
|
2
7
|
after_upgrade() {
|
3
8
|
<%# Making sure that at least one command is in the function -%>
|
4
9
|
<%# avoids a lot of potential errors, including the case that -%>
|
@@ -8,18 +13,27 @@ after_upgrade() {
|
|
8
13
|
<%= script(:after_upgrade) %>
|
9
14
|
<% end -%>
|
10
15
|
|
11
|
-
|
16
|
+
<%# if any systemd services specified, loop through and start them -%>
|
17
|
+
<% if attributes[:deb_systemd].any? -%>
|
12
18
|
systemctl --system daemon-reload >/dev/null || true
|
13
|
-
|
19
|
+
debsystemctl=$(command -v deb-systemd-invoke || echo systemctl)
|
20
|
+
<% attributes[:deb_systemd].each do |service| -%>
|
21
|
+
if ! systemctl is-enabled <%= service %> >/dev/null
|
14
22
|
then
|
15
|
-
|
16
|
-
|
23
|
+
: # Ensure this if-clause is not empty. If it were empty, and we had an 'else', then it is an error in shell syntax
|
24
|
+
<% if attributes[:deb_systemd_enable?]-%>
|
25
|
+
systemctl enable <%= service %> >/dev/null || true
|
26
|
+
<% end -%>
|
27
|
+
<% if attributes[:deb_systemd_auto_start?]-%>
|
28
|
+
$debsystemctl start <%= service %> >/dev/null || true
|
29
|
+
<% end -%>
|
17
30
|
<% if attributes[:deb_systemd_restart_after_upgrade?] -%>
|
18
31
|
else
|
19
|
-
|
32
|
+
$debsystemctl restart <%= service %> >/dev/null || true
|
20
33
|
<% end -%>
|
21
34
|
fi
|
22
35
|
<% end -%>
|
36
|
+
<% end -%>
|
23
37
|
}
|
24
38
|
|
25
39
|
after_install() {
|
@@ -31,10 +45,18 @@ after_install() {
|
|
31
45
|
<%= script(:after_install) %>
|
32
46
|
<% end -%>
|
33
47
|
|
34
|
-
|
48
|
+
<%# if any systemd services specified, loop through and start them -%>
|
49
|
+
<% if attributes[:deb_systemd].any? -%>
|
35
50
|
systemctl --system daemon-reload >/dev/null || true
|
36
|
-
|
37
|
-
|
51
|
+
debsystemctl=$(command -v deb-systemd-invoke || echo systemctl)
|
52
|
+
<% attributes[:deb_systemd].each do |service| -%>
|
53
|
+
<% if attributes[:deb_systemd_enable?]-%>
|
54
|
+
systemctl enable <%= service %> >/dev/null || true
|
55
|
+
<% end -%>
|
56
|
+
<% if attributes[:deb_systemd_auto_start?]-%>
|
57
|
+
$debsystemctl start <%= service %> >/dev/null || true
|
58
|
+
<% end -%>
|
59
|
+
<% end -%>
|
38
60
|
<% end -%>
|
39
61
|
}
|
40
62
|
|
@@ -1,4 +1,9 @@
|
|
1
1
|
#!/bin/sh
|
2
|
+
|
3
|
+
<% if attributes[:deb_maintainerscripts_force_errorchecks?] -%>
|
4
|
+
set -e
|
5
|
+
<% end -%>
|
6
|
+
|
2
7
|
before_remove() {
|
3
8
|
<%# Making sure that at least one command is in the function -%>
|
4
9
|
<%# avoids a lot of potential errors, including the case that -%>
|
@@ -8,10 +13,13 @@ before_remove() {
|
|
8
13
|
<%= script(:before_remove) %>
|
9
14
|
<% end -%>
|
10
15
|
|
11
|
-
<%#
|
12
|
-
<% if attributes[:deb_systemd] -%>
|
13
|
-
|
14
|
-
|
16
|
+
<%# Stop and remove any systemd services that were installed-%>
|
17
|
+
<% if attributes[:deb_systemd].any? -%>
|
18
|
+
debsystemctl=$(command -v deb-systemd-invoke || echo systemctl)
|
19
|
+
<% attributes[:deb_systemd].each do |service| -%>
|
20
|
+
$debsystemctl stop <%= service %> >/dev/null || true
|
21
|
+
systemctl disable <%= service %> >/dev/null || true
|
22
|
+
<% end -%>
|
15
23
|
systemctl --system daemon-reload >/dev/null || true
|
16
24
|
<% end -%>
|
17
25
|
}
|
data/templates/deb.erb
CHANGED
@@ -25,10 +25,10 @@ Build-Depends: <%= attributes[:deb_build_depends].collect { |d| fix_dependency(d
|
|
25
25
|
<% if !provides.empty? -%>
|
26
26
|
<%# Turn each provides from 'foo = 123' to simply 'foo' because Debian :\ -%>
|
27
27
|
<%# http://www.debian.org/doc/debian-policy/ch-relationships.html -%>
|
28
|
-
Provides: <%= provides.
|
28
|
+
Provides: <%= provides.join ", " %>
|
29
29
|
<% end -%>
|
30
30
|
<% if !replaces.empty? -%>
|
31
|
-
Replaces: <%= replaces.join(", ") %>
|
31
|
+
Replaces: <%= replaces.collect { |d| fix_dependency(d) }.flatten.join(", ") %>
|
32
32
|
<% end -%>
|
33
33
|
<% if attributes[:deb_recommends] and !attributes[:deb_recommends].empty? -%>
|
34
34
|
Recommends: <%= attributes[:deb_recommends].collect { |d| fix_dependency(d) }.flatten.join(", ") %>
|
data/templates/rpm.erb
CHANGED
@@ -126,7 +126,7 @@ Obsoletes: <%= repl %>
|
|
126
126
|
-%>
|
127
127
|
<% if script?(:before_upgrade) or script?(:after_upgrade) -%>
|
128
128
|
<% if script?(:before_upgrade) or script?(:before_install) -%>
|
129
|
-
%pre
|
129
|
+
%pre <% if attributes[:rpm_macro_expansion?] -%><%= " -e " %> <% end %>
|
130
130
|
upgrade() {
|
131
131
|
<%# Making sure that at least one command is in the function -%>
|
132
132
|
<%# avoids a lot of potential errors, including the case that -%>
|
@@ -156,7 +156,7 @@ then
|
|
156
156
|
fi
|
157
157
|
<% end -%>
|
158
158
|
<% if script?(:after_upgrade) or script?(:after_install) -%>
|
159
|
-
%post
|
159
|
+
%post <% if attributes[:rpm_macro_expansion?] -%><%= " -e " %> <% end %>
|
160
160
|
upgrade() {
|
161
161
|
<%# Making sure that at least one command is in the function -%>
|
162
162
|
<%# avoids a lot of potential errors, including the case that -%>
|
@@ -186,7 +186,7 @@ then
|
|
186
186
|
fi
|
187
187
|
<% end -%>
|
188
188
|
<% if script?(:before_remove) -%>
|
189
|
-
%preun
|
189
|
+
%preun <% if attributes[:rpm_macro_expansion?] -%><%= " -e " %> <% end %>
|
190
190
|
if [ "${1}" -eq 0 ]
|
191
191
|
then
|
192
192
|
<%# Making sure that at least one command is in the function -%>
|
@@ -197,7 +197,7 @@ then
|
|
197
197
|
fi
|
198
198
|
<% end -%>
|
199
199
|
<% if script?(:after_remove) -%>
|
200
|
-
%postun
|
200
|
+
%postun <% if attributes[:rpm_macro_expansion?] -%><%= " -e " %> <% end %>
|
201
201
|
if [ "${1}" -eq 0 ]
|
202
202
|
then
|
203
203
|
<%# Making sure that at least one command is in the function -%>
|
@@ -219,7 +219,7 @@ fi
|
|
219
219
|
-%>
|
220
220
|
<% scriptmap.each do |name, rpmname| -%>
|
221
221
|
<% if script?(name) -%>
|
222
|
-
%<%= rpmname %>
|
222
|
+
%<%= rpmname -%> <%= ' -e' if attributes[:rpm_macro_expansion?] %>
|
223
223
|
<%= script(name) %>
|
224
224
|
<% end -%>
|
225
225
|
<% end -%>
|
data/templates/sh.erb
CHANGED
@@ -268,7 +268,12 @@ function clean_out_old_releases(){
|
|
268
268
|
function print_package_metadata(){
|
269
269
|
local metadata_line=$(grep -a -n -m1 '__METADATA__$' $0 | sed 's/:.*//')
|
270
270
|
local archive_line=$(grep -a -n -m1 '__ARCHIVE__$' $0 | sed 's/:.*//')
|
271
|
-
|
271
|
+
|
272
|
+
# This used to be a sed call but it was taking _forever_ and this method is super fast
|
273
|
+
local start_at=$((metadata_line + 1))
|
274
|
+
local take_num=$((archive_line - start_at))
|
275
|
+
|
276
|
+
head -n${start_at} $0 | tail -n${take_num}
|
272
277
|
}
|
273
278
|
|
274
279
|
function print_usage(){
|
metadata
CHANGED
@@ -1,35 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fpm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordan Sissel
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: json
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 1.7.7
|
20
|
-
- - "<"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '2.0'
|
23
|
-
type: :runtime
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 1.7.7
|
30
|
-
- - "<"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '2.0'
|
33
13
|
- !ruby/object:Gem::Dependency
|
34
14
|
name: cabin
|
35
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -64,14 +44,14 @@ dependencies:
|
|
64
44
|
requirements:
|
65
45
|
- - "~>"
|
66
46
|
- !ruby/object:Gem::Version
|
67
|
-
version: 0.0.
|
47
|
+
version: 0.0.11
|
68
48
|
type: :runtime
|
69
49
|
prerelease: false
|
70
50
|
version_requirements: !ruby/object:Gem::Requirement
|
71
51
|
requirements:
|
72
52
|
- - "~>"
|
73
53
|
- !ruby/object:Gem::Version
|
74
|
-
version: 0.0.
|
54
|
+
version: 0.0.11
|
75
55
|
- !ruby/object:Gem::Dependency
|
76
56
|
name: clamp
|
77
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,21 +67,21 @@ dependencies:
|
|
87
67
|
- !ruby/object:Gem::Version
|
88
68
|
version: 1.0.0
|
89
69
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
70
|
+
name: pleaserun
|
91
71
|
requirement: !ruby/object:Gem::Requirement
|
92
72
|
requirements:
|
93
|
-
- - "
|
73
|
+
- - "~>"
|
94
74
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
75
|
+
version: 0.0.29
|
96
76
|
type: :runtime
|
97
77
|
prerelease: false
|
98
78
|
version_requirements: !ruby/object:Gem::Requirement
|
99
79
|
requirements:
|
100
|
-
- - "
|
80
|
+
- - "~>"
|
101
81
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
82
|
+
version: 0.0.29
|
103
83
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
84
|
+
name: stud
|
105
85
|
requirement: !ruby/object:Gem::Requirement
|
106
86
|
requirements:
|
107
87
|
- - ">="
|
@@ -115,49 +95,7 @@ dependencies:
|
|
115
95
|
- !ruby/object:Gem::Version
|
116
96
|
version: '0'
|
117
97
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
119
|
-
requirement: !ruby/object:Gem::Requirement
|
120
|
-
requirements:
|
121
|
-
- - "~>"
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version: '10'
|
124
|
-
type: :development
|
125
|
-
prerelease: false
|
126
|
-
version_requirements: !ruby/object:Gem::Requirement
|
127
|
-
requirements:
|
128
|
-
- - "~>"
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version: '10'
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
name: ruby-xz
|
133
|
-
requirement: !ruby/object:Gem::Requirement
|
134
|
-
requirements:
|
135
|
-
- - "~>"
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version: 0.2.3
|
138
|
-
type: :runtime
|
139
|
-
prerelease: false
|
140
|
-
version_requirements: !ruby/object:Gem::Requirement
|
141
|
-
requirements:
|
142
|
-
- - "~>"
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
version: 0.2.3
|
145
|
-
- !ruby/object:Gem::Dependency
|
146
|
-
name: pleaserun
|
147
|
-
requirement: !ruby/object:Gem::Requirement
|
148
|
-
requirements:
|
149
|
-
- - "~>"
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
version: 0.0.29
|
152
|
-
type: :runtime
|
153
|
-
prerelease: false
|
154
|
-
version_requirements: !ruby/object:Gem::Requirement
|
155
|
-
requirements:
|
156
|
-
- - "~>"
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
version: 0.0.29
|
159
|
-
- !ruby/object:Gem::Dependency
|
160
|
-
name: stud
|
98
|
+
name: rexml
|
161
99
|
requirement: !ruby/object:Gem::Requirement
|
162
100
|
requirements:
|
163
101
|
- - ">="
|
@@ -212,6 +150,20 @@ dependencies:
|
|
212
150
|
- - ">="
|
213
151
|
- !ruby/object:Gem::Version
|
214
152
|
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rake
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
215
167
|
description: Convert directories, rpms, python eggs, rubygems, and more to rpms, debs,
|
216
168
|
solaris packages and more. Win at package management without wasting pointless hours
|
217
169
|
debugging bad rpm specs!
|
@@ -250,6 +202,7 @@ files:
|
|
250
202
|
- lib/fpm/package/python.rb
|
251
203
|
- lib/fpm/package/rpm.rb
|
252
204
|
- lib/fpm/package/sh.rb
|
205
|
+
- lib/fpm/package/snap.rb
|
253
206
|
- lib/fpm/package/solaris.rb
|
254
207
|
- lib/fpm/package/tar.rb
|
255
208
|
- lib/fpm/package/virtualenv.rb
|
@@ -285,7 +238,7 @@ homepage: https://github.com/jordansissel/fpm
|
|
285
238
|
licenses:
|
286
239
|
- MIT-like
|
287
240
|
metadata: {}
|
288
|
-
post_install_message:
|
241
|
+
post_install_message:
|
289
242
|
rdoc_options: []
|
290
243
|
require_paths:
|
291
244
|
- lib
|
@@ -301,9 +254,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
301
254
|
- !ruby/object:Gem::Version
|
302
255
|
version: '0'
|
303
256
|
requirements: []
|
304
|
-
|
305
|
-
|
306
|
-
signing_key:
|
257
|
+
rubygems_version: 3.3.20
|
258
|
+
signing_key:
|
307
259
|
specification_version: 4
|
308
260
|
summary: fpm - package building and mangling
|
309
261
|
test_files: []
|