fpm 0.4.10 → 0.4.11
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELIST +21 -0
- data/CONTRIBUTORS +6 -0
- data/lib/fpm/command.rb +18 -1
- data/lib/fpm/package.rb +33 -2
- data/lib/fpm/package/deb.rb +54 -8
- data/lib/fpm/package/dir.rb +23 -10
- data/lib/fpm/package/gem.rb +2 -1
- data/lib/fpm/package/rpm.rb +11 -2
- data/templates/rpm.erb +26 -21
- metadata +4 -5
- data/lib/fpm/monkeypatches.rb +0 -11
data/CHANGELIST
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
0.4.11 (August 7, 2012)
|
2
|
+
- Support different compression types on deb packages (default gzip,
|
3
|
+
alternates xz and bzip2)
|
4
|
+
- Fix some symlink handling to prevent links from being followed during
|
5
|
+
cleanup (#228, patch by sbuss)
|
6
|
+
- rpm: 'vendor' in rpm spec is now omitted if empty or nil. This fixes a bug
|
7
|
+
where rpmbuild fails due to empty 'Vendor' tag if you convert rpm to rpm.
|
8
|
+
- internal: remove empty directories marked by --exclude (#205, patch by
|
9
|
+
jimbrowne)
|
10
|
+
- dir: don't try to set utime on symlinks (#234, #240, patch by ctgswallow)
|
11
|
+
- rpm: relocatable rpms now supported when using the '--prefix' flag.
|
12
|
+
Example: fpm -s dir -t rpm --prefix /usr/local -n example /etc/motd
|
13
|
+
(patch by jkoppe)
|
14
|
+
- deb: --deb-compression flag: Support different compression methods.
|
15
|
+
Default continues to be gzip.
|
16
|
+
- new flag: --template-scripts. This lets you write script templates for
|
17
|
+
--after-install, etc. Templates are ERB, so you can do things like
|
18
|
+
'<%= name %>' to get the package name in the script, etc.
|
19
|
+
- warn on command invocations that appear to have stray flags to try and
|
20
|
+
help users who have complex command lines that are failling.
|
21
|
+
|
1
22
|
0.4.10 (May 25, 2012)
|
2
23
|
- Fix python package support for python3 (#212, patch by Slezhuk Evgeniy)
|
3
24
|
- Preserve file metadata (time, owner, etc) when copying with the dir
|
data/CONTRIBUTORS
CHANGED
@@ -16,3 +16,9 @@ Luke Macken (github: lmacken)
|
|
16
16
|
Matt Blair (github: mblair)
|
17
17
|
Thomas Meson (github: zllak)
|
18
18
|
Oliver Hookins (github: ohookins)
|
19
|
+
llasram
|
20
|
+
sbuss
|
21
|
+
|
22
|
+
If you have contributed (bug reports, feature requests, help in IRC, blog
|
23
|
+
posts, code, etc) and aren't listed here, please let me know if you wish to be
|
24
|
+
added!
|
data/lib/fpm/command.rb
CHANGED
@@ -145,6 +145,12 @@ class FPM::Command < Clamp::Command
|
|
145
145
|
"a script to be run before package removal" do |val|
|
146
146
|
File.expand_path(val) # Get the full path to the script
|
147
147
|
end # --before-remove
|
148
|
+
option "--template-scripts", :flag,
|
149
|
+
"Allow scripts to be templated. This lets you use ERB to template your " \
|
150
|
+
"packaging scripts (for --after-install, etc). For example, you can do " \
|
151
|
+
"things like <%= name %> to get the package name. For more information, " \
|
152
|
+
"see the fpm wiki: " \
|
153
|
+
"https://github.com/jordansissel/fpm/wiki/Script-Templates"
|
148
154
|
|
149
155
|
parameter "[ARGS] ...",
|
150
156
|
"Inputs to the source package type. For the 'dir' type, this is the files" \
|
@@ -183,6 +189,11 @@ class FPM::Command < Clamp::Command
|
|
183
189
|
@logger.subscribe(STDOUT)
|
184
190
|
@logger.level = :warn
|
185
191
|
|
192
|
+
if (stray_flags = args.grep(/^-/); stray_flags.any?)
|
193
|
+
@logger.warn("All flags should be before the first argument " \
|
194
|
+
"(stray flags found: #{stray_flags}")
|
195
|
+
end
|
196
|
+
|
186
197
|
# Some older behavior, if you specify:
|
187
198
|
# 'fpm -s dir -t ... -C somepath'
|
188
199
|
# fpm would assume you meant to add '.' to the end of the commandline.
|
@@ -296,15 +307,18 @@ class FPM::Command < Clamp::Command
|
|
296
307
|
input.config_files += config_files
|
297
308
|
|
298
309
|
setscript = proc do |scriptname|
|
310
|
+
# 'self.send(scriptname) == self.before_install == --before-install
|
311
|
+
# Gets the path to the script
|
299
312
|
path = self.send(scriptname)
|
300
313
|
# Skip scripts not set
|
301
314
|
next if path.nil?
|
302
315
|
|
303
|
-
# 'self.send(scriptname) == self.before_install == --before-install
|
304
316
|
if !File.exists?(path)
|
305
317
|
@logger.error("No such file (for #{scriptname.to_s}): #{path.inspect}")
|
306
318
|
return 1
|
307
319
|
end
|
320
|
+
|
321
|
+
# Load the script into memory.
|
308
322
|
input.scripts[scriptname] = File.read(path)
|
309
323
|
end
|
310
324
|
|
@@ -336,6 +350,9 @@ class FPM::Command < Clamp::Command
|
|
336
350
|
rescue FPM::Util::ExecutableNotFound => e
|
337
351
|
@logger.error("Need executable '#{e}' to convert #{input_type} to #{output_type}")
|
338
352
|
return 1
|
353
|
+
rescue FPM::InvalidPackageConfiguration => e
|
354
|
+
@logger.error("Invalid package configuration: #{e}")
|
355
|
+
return 1
|
339
356
|
ensure
|
340
357
|
input.cleanup unless input.nil?
|
341
358
|
output.cleanup unless output.nil?
|
data/lib/fpm/package.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require "fpm/namespace" # local
|
2
2
|
require "fpm/util" # local
|
3
|
+
require "pathname" # stdlib
|
3
4
|
require "tmpdir" # stdlib
|
4
5
|
require "backports" # gem 'backports'
|
5
6
|
require "socket" # stdlib, for Socket.gethostname
|
6
7
|
require "shellwords" # stdlib, for Shellwords.escape
|
8
|
+
require "erb" # stdlib, for template processing
|
7
9
|
require "cabin" # gem "cabin"
|
8
10
|
|
9
11
|
# This class is the parent of all packages.
|
@@ -299,7 +301,6 @@ class FPM::Package
|
|
299
301
|
end # def files
|
300
302
|
|
301
303
|
def template(path)
|
302
|
-
require "erb"
|
303
304
|
template_dir = File.join(File.dirname(__FILE__), "..", "..", "templates")
|
304
305
|
template_path = File.join(template_dir, path)
|
305
306
|
template_code = File.read(template_path)
|
@@ -334,6 +335,8 @@ class FPM::Package
|
|
334
335
|
# This method removes excluded files from the staging_path. Subclasses can
|
335
336
|
# remove the files during the input phase rather than deleting them here
|
336
337
|
def exclude
|
338
|
+
return if attributes[:excludes].nil?
|
339
|
+
|
337
340
|
if @attributes.include?(:prefix)
|
338
341
|
installdir = staging_path(@attributes[:prefix])
|
339
342
|
else
|
@@ -346,6 +349,14 @@ class FPM::Package
|
|
346
349
|
if File.fnmatch(wildcard, file)
|
347
350
|
@logger.info("Removing excluded file", :path => file, :matches => wildcard)
|
348
351
|
FileUtils.remove_entry_secure(staging_path(file))
|
352
|
+
Pathname.new(staging_path(file)).parent.ascend do |d|
|
353
|
+
if (::Dir.entries(d) - %w[ . .. ]).empty?
|
354
|
+
::Dir.rmdir(d)
|
355
|
+
@logger.info("Deleting empty directory left by removing exluded file", :path => d)
|
356
|
+
else
|
357
|
+
break
|
358
|
+
end
|
359
|
+
end
|
349
360
|
end
|
350
361
|
end
|
351
362
|
end
|
@@ -436,9 +447,29 @@ class FPM::Package
|
|
436
447
|
return nil
|
437
448
|
end # def version
|
438
449
|
|
450
|
+
# Does this package have the given script?
|
451
|
+
def script?(name)
|
452
|
+
return scripts.include?(name)
|
453
|
+
end # def script?
|
454
|
+
|
455
|
+
# Get the contents of the script by a given name.
|
456
|
+
#
|
457
|
+
# If template_scripts? is set in attributes (often by the --template-scripts
|
458
|
+
# flag), then apply it as an ERB template.
|
459
|
+
def script(script_name)
|
460
|
+
if attributes[:template_scripts?]
|
461
|
+
erb = ERB.new(scripts[script_name], nil, "-")
|
462
|
+
# TODO(sissel): find the original file name for the file.
|
463
|
+
erb.filename = "script(#{script_name})"
|
464
|
+
return erb.result(binding)
|
465
|
+
else
|
466
|
+
return scripts[script_name]
|
467
|
+
end
|
468
|
+
end # def script
|
469
|
+
|
439
470
|
# General public API
|
440
471
|
public(:type, :initialize, :convert, :input, :output, :to_s, :cleanup, :files,
|
441
|
-
:version)
|
472
|
+
:version, :script)
|
442
473
|
|
443
474
|
# Package internal public api
|
444
475
|
public(:cleanup_staging, :cleanup_build, :staging_path, :converted_from,
|
data/lib/fpm/package/deb.rb
CHANGED
@@ -4,13 +4,13 @@ require "fpm/package"
|
|
4
4
|
require "fpm/errors"
|
5
5
|
require "fpm/util"
|
6
6
|
require "backports"
|
7
|
-
require "fpm/monkeypatches" # until backports > 2.3.0
|
8
7
|
require "fileutils"
|
9
8
|
|
10
9
|
# Support for debian packages (.deb files)
|
11
10
|
#
|
12
11
|
# This class supports both input and output of packages.
|
13
12
|
class FPM::Package::Deb < FPM::Package
|
13
|
+
|
14
14
|
# Map of what scripts are named.
|
15
15
|
SCRIPT_MAP = {
|
16
16
|
:before_install => "preinst",
|
@@ -19,6 +19,9 @@ class FPM::Package::Deb < FPM::Package
|
|
19
19
|
:after_remove => "postrm",
|
20
20
|
} unless defined?(SCRIPT_MAP)
|
21
21
|
|
22
|
+
# The list of supported compression types. Default is gz (gzip)
|
23
|
+
COMPRESSION_TYPES = [ "gz", "bzip2", "xz" ]
|
24
|
+
|
22
25
|
option "--ignore-iteration-in-dependencies", :flag,
|
23
26
|
"For '=' (equal) dependencies, allow iterations on the specified " \
|
24
27
|
"version. Default is to be specific. This option allows the same " \
|
@@ -30,6 +33,15 @@ class FPM::Package::Deb < FPM::Package
|
|
30
33
|
@pre_depends << dep
|
31
34
|
end
|
32
35
|
|
36
|
+
option "--compression", "COMPRESSION", "The compression type to use, must " \
|
37
|
+
"be one of #{COMPRESSION_TYPES.join(", ")}.", :default => "gzip" do |value|
|
38
|
+
if !COMPRESSION_TYPES.include?(value)
|
39
|
+
raise ArgumentError, "deb compression value of '#{value}' is invalid. " \
|
40
|
+
"Must be one of #{COMPRESSION_TYPES.join(", ")}"
|
41
|
+
end
|
42
|
+
value
|
43
|
+
end
|
44
|
+
|
33
45
|
# Take care about the case when we want custom control file but still use fpm ...
|
34
46
|
option "--custom-control", "FILEPATH",
|
35
47
|
"Custom version of the Debian control file." do |control|
|
@@ -159,6 +171,7 @@ class FPM::Package::Deb < FPM::Package
|
|
159
171
|
#
|
160
172
|
# parse_depends("foo (>= 3), bar (= 5), baz")
|
161
173
|
def parse_depends(data)
|
174
|
+
return [] if data.nil? or data.empty?
|
162
175
|
# parse dependencies. Debian dependencies come in one of two forms:
|
163
176
|
# * name
|
164
177
|
# * name (op version)
|
@@ -183,8 +196,28 @@ class FPM::Package::Deb < FPM::Package
|
|
183
196
|
end # def parse_depends
|
184
197
|
|
185
198
|
def extract_files(package)
|
186
|
-
#
|
187
|
-
|
199
|
+
# Find out the compression type
|
200
|
+
p `ar t #{package}`
|
201
|
+
compression = `ar t #{package}`.split("\n").grep(/data.tar/).first.split(".").last
|
202
|
+
case compression
|
203
|
+
when "gz"
|
204
|
+
datatar = "data.tar.gz"
|
205
|
+
compression = "-z"
|
206
|
+
when "bzip2"
|
207
|
+
datatar = "data.tar.bz2"
|
208
|
+
compression = "-j"
|
209
|
+
when "xz"
|
210
|
+
datatar = "data.tar.xz"
|
211
|
+
compression = "-J"
|
212
|
+
else
|
213
|
+
raise FPM::InvalidPackageConfiguration,
|
214
|
+
"Unknown compression type '#{self.attributes[:deb_compression]}' "
|
215
|
+
"in deb source package #{package}"
|
216
|
+
end
|
217
|
+
|
218
|
+
# unpack the data.tar.{gz,bz2,xz} from the deb package into staging_path
|
219
|
+
safesystem("ar p #{package} #{datatar} " \
|
220
|
+
"| tar #{compression} -xf - -C #{staging_path}")
|
188
221
|
end # def extract_files
|
189
222
|
|
190
223
|
def output(output_path)
|
@@ -196,9 +229,22 @@ class FPM::Package::Deb < FPM::Package
|
|
196
229
|
|
197
230
|
write_control_tarball
|
198
231
|
|
199
|
-
# Tar up the staging_path
|
200
|
-
|
201
|
-
|
232
|
+
# Tar up the staging_path into data.tar.{compression type}
|
233
|
+
case self.attributes[:deb_compression]
|
234
|
+
when "gzip", nil
|
235
|
+
datatar = build_path("data.tar.gz")
|
236
|
+
compression = "-z"
|
237
|
+
when "bzip2"
|
238
|
+
datatar = build_path("data.tar.bz2")
|
239
|
+
compression = "-j"
|
240
|
+
when "xz"
|
241
|
+
datatar = build_path("data.tar.xz")
|
242
|
+
compression = "-J"
|
243
|
+
else
|
244
|
+
raise FPM::InvalidPackageConfiguration,
|
245
|
+
"Unknown compression type '#{self.attributes[:deb_compression]}'"
|
246
|
+
end
|
247
|
+
safesystem(tar_cmd, "-C", staging_path, compression, "-cf", datatar, ".")
|
202
248
|
|
203
249
|
# pack up the .deb, which is just an 'ar' archive with 3 files
|
204
250
|
# the 'debian-binary' file has to be first
|
@@ -348,11 +394,11 @@ class FPM::Package::Deb < FPM::Package
|
|
348
394
|
# 'post_install' names
|
349
395
|
def write_scripts
|
350
396
|
SCRIPT_MAP.each do |scriptname, filename|
|
351
|
-
next if
|
397
|
+
next if script?(scriptname).nil?
|
352
398
|
|
353
399
|
with(control_path(filename)) do |controlscript|
|
354
400
|
@logger.debug("Writing control script", :source => filename, :target => controlscript)
|
355
|
-
File.write(controlscript,
|
401
|
+
File.write(controlscript, script(scriptname))
|
356
402
|
# deb maintainer scripts are required to be executable
|
357
403
|
File.chmod(0755, controlscript)
|
358
404
|
end
|
data/lib/fpm/package/dir.rb
CHANGED
@@ -90,11 +90,20 @@ class FPM::Package::Dir < FPM::Package
|
|
90
90
|
FileUtils.mkdir_p(directory)
|
91
91
|
end
|
92
92
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
93
|
+
if File.directory?(source)
|
94
|
+
if !File.symlink?(source)
|
95
|
+
# Create a directory if this path is a directory
|
96
|
+
@logger.debug("Creating", :directory => destination)
|
97
|
+
if !File.directory?(destination)
|
98
|
+
FileUtils.mkdir(destination)
|
99
|
+
end
|
100
|
+
else
|
101
|
+
# Linking symlinked directories causes a hardlink to be created, which
|
102
|
+
# results in the source directory being wiped out during cleanup,
|
103
|
+
# so copy the symlink.
|
104
|
+
@logger.debug("Copying symlinked directory", :source => source,
|
105
|
+
:destination => destination)
|
106
|
+
FileUtils.copy_entry(source, destination)
|
98
107
|
end
|
99
108
|
else
|
100
109
|
# Otherwise try copying the file.
|
@@ -116,16 +125,20 @@ class FPM::Package::Dir < FPM::Package
|
|
116
125
|
dest_stat = File::lstat(destination)
|
117
126
|
|
118
127
|
# If this is a hard-link, there's no metadata to copy.
|
119
|
-
|
128
|
+
# If this is a symlink, what it points to hasn't been copied yet.
|
129
|
+
return if source_stat.ino == dest_stat.ino || dest_stat.symlink?
|
120
130
|
|
121
131
|
File.utime(source_stat.atime, source_stat.mtime, destination)
|
132
|
+
mode = source_stat.mode
|
122
133
|
begin
|
123
|
-
File.
|
134
|
+
File.lchown(source_stat.uid, source_stat.gid, destination)
|
124
135
|
rescue Errno::EPERM
|
125
136
|
# clear setuid/setgid
|
126
|
-
|
127
|
-
|
128
|
-
|
137
|
+
mode &= 01777
|
138
|
+
end
|
139
|
+
|
140
|
+
unless source_stat.symlink?
|
141
|
+
File.chmod(mode, destination)
|
129
142
|
end
|
130
143
|
end # def copy_metadata
|
131
144
|
|
data/lib/fpm/package/gem.rb
CHANGED
@@ -21,7 +21,8 @@ class FPM::Package::Gem < FPM::Package
|
|
21
21
|
option "--package-prefix", "NAMEPREFIX",
|
22
22
|
"(DEPRECATED, use --package-name-prefix) Name to prefix the package " \
|
23
23
|
"name with." do |value|
|
24
|
-
|
24
|
+
logger = Cabin::Channel.get
|
25
|
+
logger.warn("Using deprecated flag: --package-prefix. Please use " \
|
25
26
|
"--package-name-prefix")
|
26
27
|
value
|
27
28
|
end
|
data/lib/fpm/package/rpm.rb
CHANGED
@@ -2,7 +2,6 @@ require "fpm/package"
|
|
2
2
|
require "backports"
|
3
3
|
require "fileutils"
|
4
4
|
require "find"
|
5
|
-
require "fpm/monkeypatches" # until backports > 2.3.0
|
6
5
|
require "arr-pm/file" # gem 'arr-pm'
|
7
6
|
|
8
7
|
# RPM Package type.
|
@@ -204,6 +203,16 @@ class FPM::Package::RPM < FPM::Package
|
|
204
203
|
@logger.log("Created rpm", :path => output_path)
|
205
204
|
end # def output
|
206
205
|
|
206
|
+
def prefix
|
207
|
+
return (attributes[:prefix] or "/")
|
208
|
+
end # def prefix
|
209
|
+
|
210
|
+
def build_sub_dir
|
211
|
+
return "BUILD"
|
212
|
+
#return File.join("BUILD", prefix)
|
213
|
+
end # def prefix
|
214
|
+
|
215
|
+
|
207
216
|
def to_s(format=nil)
|
208
217
|
return super("NAME-VERSION-ITERATION.ARCH.TYPE") if format.nil?
|
209
218
|
return super(format)
|
@@ -218,5 +227,5 @@ class FPM::Package::RPM < FPM::Package
|
|
218
227
|
end # def digest_algorithm
|
219
228
|
|
220
229
|
public(:input, :output, :converted_from, :architecture, :to_s, :iteration,
|
221
|
-
:payload_compression, :digest_algorithm)
|
230
|
+
:payload_compression, :digest_algorithm, :prefix, :build_sub_dir)
|
222
231
|
end # class FPM::Package::RPM
|
data/templates/rpm.erb
CHANGED
@@ -27,10 +27,15 @@ AutoReqProv: no
|
|
27
27
|
# Seems specifying BuildRoot is required on older rpmbuild (like on CentOS 5)
|
28
28
|
# fpm passes '--define buildroot ...' on the commandline, so just reuse that.
|
29
29
|
BuildRoot: %buildroot
|
30
|
+
<% if !prefix.nil? and !prefix.empty? %>
|
31
|
+
Prefix: <%= prefix %>
|
32
|
+
<% end -%>
|
30
33
|
|
31
34
|
Group: <%= category %>
|
32
35
|
License: <%= license %>
|
36
|
+
<% if !vendor.nil? and !vendor.empty? -%>
|
33
37
|
Vendor: <%= vendor %>
|
38
|
+
<% end -%>
|
34
39
|
URL: <%= url or "http://nourlgiven.example.com/" %>
|
35
40
|
Packager: <%= maintainer %>
|
36
41
|
|
@@ -62,7 +67,7 @@ Obsoletes: <%= repl %>
|
|
62
67
|
<% files.each do |path| -%>
|
63
68
|
<% source = Shellwords.shellescape(File.join(staging_path, path)) -%>
|
64
69
|
<% # Copy to the build_path/BUILD/ to make rpmbuild happy -%>
|
65
|
-
<% target = Shellwords.shellescape(File.join(build_path,
|
70
|
+
<% target = Shellwords.shellescape(File.join(build_path, build_sub_dir, path)) -%>
|
66
71
|
<% dir = File.dirname(target) %>
|
67
72
|
mkdir -p <%= dir %>
|
68
73
|
if [ -f <%= source %> ] || [ -h <%= source %> ] ; then
|
@@ -75,31 +80,28 @@ fi
|
|
75
80
|
%clean
|
76
81
|
# noop
|
77
82
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
<%
|
89
|
-
|
90
|
-
<%=
|
91
|
-
|
83
|
+
<%# This next section puts any %pre, %post, %preun, or %postun scripts %>
|
84
|
+
<%
|
85
|
+
scriptmap = {
|
86
|
+
:before_install => "pre",
|
87
|
+
:after_install => "post",
|
88
|
+
:before_remove => "preun",
|
89
|
+
:after_remove => "postun",
|
90
|
+
}
|
91
|
+
scriptmap.each do |name, rpmname|
|
92
|
+
-%>
|
93
|
+
<% if script?(name) -%>
|
94
|
+
%<%= rpmname %>
|
95
|
+
<%= script(name) %>
|
96
|
+
|
97
|
+
<% end -%>
|
92
98
|
<% end -%>
|
93
|
-
<% if scripts[:after_remove] -%>
|
94
|
-
%postun
|
95
|
-
<%= scripts[:after_remove] %>
|
96
99
|
|
97
|
-
<% end -%>
|
98
100
|
%files
|
99
101
|
%defattr(-,<%= attributes[:rpm_user] %>,<%= attributes[:rpm_group] %>,-)
|
100
102
|
<%# Output config files and then regular files. -%>
|
101
103
|
<% config_files.each do |path| -%>
|
102
|
-
%config(noreplace) <%= path %>
|
104
|
+
%config(noreplace) <%= File.join(prefix, path) %>
|
103
105
|
<% end -%>
|
104
106
|
<%# list only files, not directories? -%>
|
105
107
|
<%=
|
@@ -110,12 +112,15 @@ fi
|
|
110
112
|
# The 'files' section of rpm can be
|
111
113
|
# Replace [ with [\[] to make rpm not use globs
|
112
114
|
# Replace * with [*] to make rpm not use globs
|
115
|
+
# Replace ? with [?] to make rpm not use globs
|
113
116
|
files.collect { |f| "/#{f}" } \
|
114
117
|
.reject { |f| config_files.include?(f) } \
|
115
118
|
.collect { |f| f[/\s/] and "\"#{f}\"" or f } \
|
116
119
|
.collect { |f| f.gsub("[", "[\\[]") } \
|
117
120
|
.collect { |f| f.gsub("*", "[*]") } \
|
118
|
-
.
|
121
|
+
.collect { |f| f.gsub("?", "[?]") } \
|
122
|
+
.join("\n")
|
123
|
+
#.collect { |f| File.join(prefix, f) } \
|
119
124
|
%>
|
120
125
|
|
121
126
|
%changelog
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fpm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.11
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - '='
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 2.
|
53
|
+
version: 2.6.2
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -58,7 +58,7 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 2.
|
61
|
+
version: 2.6.2
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: arr-pm
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -166,7 +166,6 @@ files:
|
|
166
166
|
- lib/fpm/package/dir.rb
|
167
167
|
- lib/fpm/package/puppet.rb
|
168
168
|
- lib/fpm/package/solaris.rb
|
169
|
-
- lib/fpm/monkeypatches.rb
|
170
169
|
- lib/fpm/package.rb
|
171
170
|
- lib/fpm/namespace.rb
|
172
171
|
- lib/fpm.rb
|
data/lib/fpm/monkeypatches.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
# Copied from https://raw.github.com/marcandre/backports/master/lib/backports/1.9.3/io.rb
|
2
|
-
# Also Hacked just to make it work
|
3
|
-
# This is necessary until a newer version of backports (> 2.3.0) is available
|
4
|
-
class << IO
|
5
|
-
# Standard in Ruby 1.9.3 See official documentation[http://ruby-doc.org/core-1.9.3/IO.html#method-c-write]
|
6
|
-
def write(name, string, offset = nil, options = Backports::Undefined)
|
7
|
-
File.open(name, "w") do |fd|
|
8
|
-
fd.write(string)
|
9
|
-
end
|
10
|
-
end unless method_defined? :write
|
11
|
-
end
|