fpm 1.10.2 → 1.15.0

Sign up to get free protection for your applications and to get access to all the features.
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
- process = ChildProcess.build(*args2)
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 => process.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(process.io.stdin) if opts[:stdin]
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
- process.io.stdin.close if opts[:stdin] and not process.io.stdin.closed?
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
- process.wait if process.alive?
169
+ Process.waitpid(pid)
170
+ status = $?
183
171
 
184
- return process.exit_code
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', 'characterSpecial', 'blockSpecial', 'socket'
358
- st = File.stat(src)
359
- rc = mknod_w(dst, st.mode, st.dev)
360
- raise SystemCallError.new("mknod error", FFI.errno) if rc == -1
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
@@ -1,3 +1,3 @@
1
1
  module FPM
2
- VERSION = "1.10.2"
2
+ VERSION = "1.15.0"
3
3
  end
data/lib/fpm.rb CHANGED
@@ -18,3 +18,4 @@ require "fpm/package/p5p"
18
18
  require "fpm/package/pkgin"
19
19
  require "fpm/package/freebsd"
20
20
  require "fpm/package/apk"
21
+ require "fpm/package/snap"
@@ -1,4 +1,4 @@
1
- <%= name %> (<%= "#{epoch}:" if epoch %><%= version %><%= "-" + iteration.to_s if iteration %>) whatever; urgency=medium
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 %>) whatever; urgency=medium
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
- <% if attributes[:deb_systemd] -%>
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
- if ! systemctl is-enabled <%= attributes[:deb_systemd] %> >/dev/null
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
- systemctl enable <%= attributes[:deb_systemd] %> >/dev/null || true
16
- systemctl start <%= attributes[:deb_systemd] %> >/dev/null || true
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
- systemctl restart <%= attributes[:deb_systemd] %> >/dev/null || true
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
- <% if attributes[:deb_systemd] -%>
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
- systemctl enable <%= attributes[:deb_systemd] %> >/dev/null || true
37
- systemctl start <%= attributes[:deb_systemd] %> >/dev/null || true
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
  after_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 -%>
@@ -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_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 -%>
@@ -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
- <%# Removing the systemd service-%>
12
- <% if attributes[:deb_systemd] -%>
13
- systemctl stop <%= attributes[:deb_systemd] %> >/dev/null || true
14
- systemctl disable <%= attributes[:deb_systemd] %> >/dev/null || true
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.map {|p| p.split(" ").first}.join ", " %>
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
- sed -n "$((metadata_line + 1)),$((archive_line - 1)) p" $0
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.10.2
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: 2018-07-04 00:00:00.000000000 Z
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.10
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.10
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: childprocess
70
+ name: pleaserun
91
71
  requirement: !ruby/object:Gem::Requirement
92
72
  requirements:
93
- - - ">="
73
+ - - "~>"
94
74
  - !ruby/object:Gem::Version
95
- version: '0'
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: '0'
82
+ version: 0.0.29
103
83
  - !ruby/object:Gem::Dependency
104
- name: ffi
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: rake
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
- rubyforge_project:
305
- rubygems_version: 2.6.11
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: []