fpm 0.4.26 → 0.4.27

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.
data/CHANGELIST CHANGED
@@ -1,3 +1,20 @@
1
+ 0.4.27 (January 16, 2013)
2
+ - Make all fpm output go through the logger (#329; patch by jaybuff)
3
+ - New package type: osxpkg, for building packages installable on OS X. (#332,
4
+ patch by Timothy Sutton)
5
+ - Fix crash bug when converting rpms to something else (#316, #325; patch by
6
+ rtucker-mozilla)
7
+ - deb: Add --deb-field for setting a custom field in the control file.
8
+ For more information on this setting, see section 5.7 "User-defined fields"
9
+ of the debian policy manual:
10
+ http://www.debian.org/doc/debian-policy/ch-controlfields.html#s5.7
11
+ - deb: Add --deb-recommends and --deb-suggests (#285, #310; patch by Pranay
12
+ Kanwar)
13
+ - python to rpm: convert "!=" dependency operators in python to "Conflicts"
14
+ in rpm. (#263, #312; patch by Pranay Kanwar)
15
+ - python: fix bug - ignore blank lines in requirements.txt (#312, patch by
16
+ Pranay Kanwar)
17
+
1
18
  0.4.26 (December 27, 2012)
2
19
  - rpm: add --rpm-sign flag to sign packages using the 'rpmbuild --sign' flag.
3
20
  (#311, Patch by Pranay Kanwar)
data/lib/fpm.rb CHANGED
@@ -6,3 +6,4 @@ require "fpm/package/gem"
6
6
  require "fpm/package/deb"
7
7
  require "fpm/package/rpm"
8
8
  require "fpm/package/python"
9
+ require "fpm/package/osxpkg"
@@ -337,7 +337,7 @@ class FPM::Package
337
337
  def edit_file(path)
338
338
  editor = ENV['FPM_EDITOR'] || ENV['EDITOR'] || 'vi'
339
339
  @logger.info("Launching editor", :file => path)
340
- safesystem("#{editor} #{Shellwords.escape(path)}")
340
+ system("#{editor} #{Shellwords.escape(path)}")
341
341
 
342
342
  if File.size(path) == 0
343
343
  raise "Empty file after editing: #{path.inspect}"
@@ -77,6 +77,25 @@ class FPM::Package::Deb < FPM::Package
77
77
  File.expand_path(file)
78
78
  end
79
79
 
80
+ option "--recommends", "PACKAGE", "Add PACKAGE to Recommends" do |pkg|
81
+ @recommends ||= []
82
+ @recommends << pkg
83
+ next @recommends
84
+ end
85
+
86
+ option "--suggests", "PACKAGE", "Add PACKAGE to Suggests" do |pkg|
87
+ @suggests ||= []
88
+ @suggests << pkg
89
+ next @suggests
90
+ end
91
+
92
+ option "--field", "'FIELD: VALUE'", "Add custom field to the control file" do |fv|
93
+ @custom_fields ||= {}
94
+ field, value = fv.split(/: */, 2)
95
+ @custom_fields[field] = value
96
+ next @custom_fields
97
+ end
98
+
80
99
  def initialize(*args)
81
100
  super(*args)
82
101
  attributes[:deb_priority] = "extra"
@@ -0,0 +1,165 @@
1
+ require "fpm/package"
2
+ require "fpm/util"
3
+ require "fileutils"
4
+ require "fpm/package/dir"
5
+ require 'tempfile' # stdlib
6
+ require 'pathname' # stdlib
7
+ require 'rexml/document' # stdlib
8
+
9
+ # Use an OS X pkg built with pkgbuild.
10
+ #
11
+ # Supports input and output. Requires pkgbuild and (for input) pkgutil, part of a
12
+ # standard OS X install in 10.7 and higher.
13
+ class FPM::Package::OSXpkg < FPM::Package
14
+
15
+ # Map of what scripts are named.
16
+ SCRIPT_MAP = {
17
+ :before_install => "preinstall",
18
+ :after_install => "postinstall",
19
+ } unless defined?(SCRIPT_MAP)
20
+
21
+ POSTINSTALL_ACTIONS = [ "logout", "restart", "shutdown" ]
22
+ OWNERSHIP_OPTIONS = ["recommended", "preserve", "preserve-other"]
23
+
24
+ option "--identifier-prefix", "IDENTIFIER_PREFIX",
25
+ "Reverse domain prefix prepended to package identifier, " \
26
+ "ie. 'org.great.my'. If this is omitted, the identifer " \
27
+ "will be the package name."
28
+ option "--payload-free", :flag, "Define no payload, assumes use of script options.",
29
+ :default => false
30
+ option "--ownership", "OWNERSHIP",
31
+ "--ownership option passed to pkgbuild. Defaults to 'recommended'. " \
32
+ "See pkgbuild(1).", :default => 'recommended' do |value|
33
+ if !OWNERSHIP_OPTIONS.include?(value)
34
+ raise ArgumentError, "osxpkg-ownership value of '#{value}' is invalid. " \
35
+ "Must be one of #{OWNERSHIP_OPTIONS.join(", ")}"
36
+ end
37
+ value
38
+ end
39
+
40
+ option "--postinstall-action", "POSTINSTALL_ACTION",
41
+ "Post-install action provided in package metadata. " \
42
+ "Optionally one of '#{POSTINSTALL_ACTIONS.join("', '")}'." do |value|
43
+ if !POSTINSTALL_ACTIONS.include?(value)
44
+ raise ArgumentError, "osxpkg-postinstall-action value of '#{value}' is invalid. " \
45
+ "Must be one of #{POSTINSTALL_ACTIONS.join(", ")}"
46
+ end
47
+ value
48
+ end
49
+
50
+ dont_obsolete_paths = []
51
+ option "--dont-obsolete", "DONT_OBSOLETE_PATH",
52
+ "A file path for which to 'dont-obsolete' in the built PackageInfo. " \
53
+ "Can be specified multiple times." do |path|
54
+ dont_obsolete_paths << path
55
+ end
56
+
57
+ private
58
+ # return the identifier by prepending the reverse-domain prefix
59
+ # to the package name, else return just the name
60
+ def identifier
61
+ identifier = name.dup
62
+ if self.attributes[:osxpkg_identifier_prefix]
63
+ identifier.insert(0, "#{self.attributes[:osxpkg_identifier_prefix]}.")
64
+ end
65
+ identifier
66
+ end # def identifier
67
+
68
+ # scripts_path and write_scripts cribbed from deb.rb
69
+ def scripts_path(path=nil)
70
+ @scripts_path ||= build_path("Scripts")
71
+ FileUtils.mkdir(@scripts_path) if !File.directory?(@scripts_path)
72
+
73
+ if path.nil?
74
+ return @scripts_path
75
+ else
76
+ return File.join(@scripts_path, path)
77
+ end
78
+ end # def scripts_path
79
+
80
+ def write_scripts
81
+ SCRIPT_MAP.each do |scriptname, filename|
82
+ next unless script?(scriptname)
83
+
84
+ with(scripts_path(filename)) do |pkgscript|
85
+ @logger.info("Writing pkg script", :source => filename, :target => pkgscript)
86
+ File.write(pkgscript, script(scriptname))
87
+ # scripts are required to be executable
88
+ File.chmod(0755, pkgscript)
89
+ end
90
+ end
91
+ end # def write_scripts
92
+
93
+ # Returns path of a processed template PackageInfo given to 'pkgbuild --info'
94
+ # note: '--info' is undocumented:
95
+ # http://managingosx.wordpress.com/2012/07/05/stupid-tricks-with-pkgbuild
96
+ def pkginfo_template_path
97
+ pkginfo_template = Tempfile.open("fpm-PackageInfo")
98
+ pkginfo_data = template("osxpkg.erb").result(binding)
99
+ pkginfo_template.write(pkginfo_data)
100
+ pkginfo_template.close
101
+ pkginfo_template.path
102
+ end # def write_pkginfo_template
103
+
104
+ # Extract name and version from PackageInfo XML
105
+ def extract_info(package)
106
+ with(build_path("expand")) do |path|
107
+ doc = REXML::Document.new File.open(File.join(path, "PackageInfo"))
108
+ pkginfo_elem = doc.elements["pkg-info"]
109
+ identifier = pkginfo_elem.attribute("identifier").value
110
+ self.version = pkginfo_elem.attribute("version").value
111
+ # set name to the last dot element of the identifier
112
+ self.name = identifier.split(".").last
113
+ @logger.info("inferring name #{self.name} from pkg-id #{identifier}")
114
+ end
115
+ end # def extract_info
116
+
117
+ # Take a flat package as input
118
+ def input(input_path)
119
+ # TODO: Fail if it's a Distribution pkg or old-fashioned
120
+ expand_dir = File.join(build_path, "expand")
121
+ # expand_dir must not already exist for pkgutil --expand
122
+ safesystem("pkgutil --expand #{input_path} #{expand_dir}")
123
+
124
+ extract_info(input_path)
125
+
126
+ # extract Payload
127
+ safesystem("tar -xz -f #{expand_dir}/Payload -C #{staging_path}")
128
+ end # def input
129
+
130
+ # Output a pkgbuild pkg.
131
+ def output(output_path)
132
+ output_check(output_path)
133
+ raise FileAlreadyExists.new(output_path) if File.exists?(output_path)
134
+
135
+ temp_info = pkginfo_template_path
136
+
137
+ args = ["--identifier", identifier,
138
+ "--info", temp_info,
139
+ "--version", version.to_s,
140
+ "--ownership", attributes[:osxpkg_ownership]]
141
+
142
+ if self.attributes[:osxpkg_payload_free?]
143
+ args << "--nopayload"
144
+ else
145
+ args += ["--root", staging_path]
146
+ end
147
+
148
+ if attributes[:before_install_given?] or attributes[:after_install_given?]
149
+ write_scripts
150
+ args += ["--scripts", scripts_path]
151
+ end
152
+ args << output_path
153
+
154
+ safesystem("pkgbuild", *args)
155
+ FileUtils.remove_file(temp_info)
156
+ end # def output
157
+
158
+ def to_s(format=nil)
159
+ return super("NAME-VERSION.pkg") if format.nil?
160
+ return super(format)
161
+ end # def to_s
162
+
163
+ public(:input, :output, :identifier, :to_s)
164
+
165
+ end # class FPM::Package::OSXpkg
@@ -1,76 +1,62 @@
1
1
  from distutils.core import Command
2
- import re
3
- import time
4
2
  import pkg_resources
5
3
  try:
6
4
  import json
7
5
  except ImportError:
8
6
  import simplejson as json
9
7
 
8
+
10
9
  # Note, the last time I coded python daily was at Google, so it's entirely
11
10
  # possible some of my techniques below are outdated or bad.
12
11
  # If you have fixes, let me know.
13
12
 
14
-
15
13
  class get_metadata(Command):
16
- description = "get package metadata"
17
- user_options = []
18
-
19
- def initialize_options(self):
20
- pass
21
- # def initialize_options
22
-
23
- def finalize_options(self):
24
- pass
25
- # def finalize_options
26
-
27
- def run(self):
28
- #print type(self.distribution)
29
- #for i in sorted(dir(self.distribution)):
30
- #if i.startswith("_"):
31
- #continue
32
- ###print "%s: %r" % (i, self.__getattr__(i))
33
- #print "%s" % i
34
-
35
- data = {
36
- "name": self.distribution.get_name(),
37
- "version": self.distribution.get_version(),
38
- "author": "%s <%s>" % (self.distribution.get_author(),
39
- self.distribution.get_author_email()),
40
- "description": self.distribution.get_description(),
41
- "license": self.distribution.get_license(),
42
- "url": self.distribution.get_url(),
43
- }
44
-
45
- # If there are python C/extension modules, we'll want to build a native
46
- # arch package.
47
- if self.distribution.has_ext_modules():
48
- data["architecture"] = "native"
49
- else:
50
- data["architecture"] = "all"
51
- # end if
52
-
53
- final_deps = []
54
- if getattr(self.distribution, 'install_requires', None):
55
- for dep in pkg_resources.parse_requirements(self.distribution.install_requires):
56
- # add all defined specs to the dependecy list separately.
57
- if dep.specs:
58
- for operator, version in dep.specs:
59
- final_deps.append("%s %s %s" % (
60
- dep.project_name,
61
- "=" if operator == "==" else operator,
62
- version
63
- ))
64
- else:
65
- final_deps.append(dep.project_name)
66
-
67
- data["dependencies"] = final_deps
68
-
69
- #print json.dumps(data, indent=2)
70
- if hasattr(json, 'dumps'):
71
- print(json.dumps(data, indent=2))
72
- else:
73
- # For Python 2.5 and Debian's python-json
74
- print(json.write(data))
75
- # def run
76
- # class list_dependencies
14
+ description = "get package metadata"
15
+ user_options = []
16
+
17
+ def initialize_options(self):
18
+ pass
19
+
20
+ def finalize_options(self):
21
+ pass
22
+
23
+ def run(self):
24
+ data = {
25
+ "name": self.distribution.get_name(),
26
+ "version": self.distribution.get_version(),
27
+ "author": "%s <%s>" % (
28
+ self.distribution.get_author(),
29
+ self.distribution.get_author_email()
30
+ ),
31
+ "description": self.distribution.get_description(),
32
+ "license": self.distribution.get_license(),
33
+ "url": self.distribution.get_url(),
34
+ }
35
+
36
+ if self.distribution.has_ext_modules():
37
+ data["architecture"] = "native"
38
+ else:
39
+ data["architecture"] = "all"
40
+
41
+ final_deps = []
42
+ if getattr(self.distribution, 'install_requires', None):
43
+ for dep in pkg_resources.parse_requirements(
44
+ self.distribution.install_requires):
45
+ # add all defined specs to the dependecy list separately.
46
+ if dep.specs:
47
+ for operator, version in dep.specs:
48
+ final_deps.append("%s %s %s" % (
49
+ dep.project_name,
50
+ (lambda x: "=" if x == "==" else x)(operator),
51
+ version
52
+ ))
53
+ else:
54
+ final_deps.append(dep.project_name)
55
+
56
+ data["dependencies"] = final_deps
57
+
58
+ if hasattr(json, 'dumps'):
59
+ print(json.dumps(data, indent=2))
60
+ else:
61
+ # For Python 2.5 and Debian's python-json
62
+ print(json.write(data))
@@ -43,6 +43,11 @@ class FPM::Package::Python < FPM::Package
43
43
  option "--fix-dependencies", :flag, "Should the package dependencies be " \
44
44
  "prefixed?", :default => true
45
45
 
46
+ option "--downcase-name", :flag, "Should the target package name be in " \
47
+ "lowercase?", :default => true
48
+ option "--downcase-dependencies", :flag, "Should the package dependencies " \
49
+ "be in lowercase?", :default => true
50
+
46
51
  option "--install-bin", "BIN_PATH", "The path to where python scripts " \
47
52
  "should be installed to.", :default => "/usr/bin"
48
53
  option "--install-lib", "LIB_PATH", "The path to where python libs " \
@@ -105,12 +110,12 @@ class FPM::Package::Python < FPM::Package
105
110
 
106
111
  if attributes[:python_pip].nil?
107
112
  # no pip, use easy_install
108
- puts "EASY_INSTALL"
113
+ @logger.debug("no pip, defaulting to easy_install", :easy_install => attributes[:python_easyinstall])
109
114
  safesystem(attributes[:python_easyinstall], "-i",
110
115
  attributes[:python_pypi], "--editable", "-U",
111
116
  "--build-directory", target, want_pkg)
112
117
  else
113
- puts "PIP PIP CHEERIOS"
118
+ @logger.debug("using pip", :pip => attributes[:python_pip])
114
119
  safesystem(attributes[:python_pip], "install", "--no-install",
115
120
  "-U", "--build", target, want_pkg)
116
121
  end
@@ -169,6 +174,9 @@ class FPM::Package::Python < FPM::Package
169
174
  self.name = metadata["name"]
170
175
  end
171
176
 
177
+ # convert python-Foo to python-foo if flag is set
178
+ self.name = self.name.downcase if attributes[:python_downcase_name?]
179
+
172
180
  requirements_txt = File.join(setup_dir, "requirements.txt")
173
181
  if File.exists?(requirements_txt)
174
182
  @logger.info("Found requirements.txt, using it instead of setup.py " \
@@ -182,13 +190,14 @@ class FPM::Package::Python < FPM::Package
182
190
  # requirements.txt can have dependencies, flags, and comments.
183
191
  # We only want the comments, so remove comment and flag lines.
184
192
  metadata["dependencies"] = File.read(requirements_txt).split("\n") \
193
+ .reject { |l| l =~ /^\s*$/ } \
185
194
  .reject { |l| l =~ /^\s*#/ } \
186
195
  .reject { |l| l =~ /^-/ } \
187
196
  .map(&:strip)
188
197
  end
189
198
 
190
199
  self.dependencies += metadata["dependencies"].collect do |dep|
191
- dep_re = /^([^<>= ]+)\s*(?:([<>=]{1,2})\s*(.*))?$/
200
+ dep_re = /^([^<>!= ]+)\s*(?:([<>!=]{1,2})\s*(.*))?$/
192
201
  match = dep_re.match(dep)
193
202
  if match.nil?
194
203
  @logger.error("Unable to parse dependency", :dependency => dep)
@@ -199,6 +208,9 @@ class FPM::Package::Python < FPM::Package
199
208
  # become 'python-foo' (depending on what the python_package_name_prefix
200
209
  # is)
201
210
  name = fix_name(name) if attributes[:python_fix_dependencies?]
211
+
212
+ # convert dependencies from python-Foo to python-foo
213
+ name = name.downcase if attributes[:python_downcase_dependencies?]
202
214
  "#{name} #{cmp} #{version}"
203
215
  end
204
216
  end # def load_package_info
@@ -143,6 +143,19 @@ class FPM::Package::RPM < FPM::Package
143
143
  end
144
144
  #self.provides << "rubygem(#{self.name})"
145
145
  end
146
+
147
+ # Convert != dependency as Conflict =, as rpm doesn't understand !=
148
+ if origin == FPM::Package::Python
149
+ self.dependencies = self.dependencies.select do |dep|
150
+ name, op, version = dep.split(/\s+/)
151
+ dep_ok = true
152
+ if op == '!='
153
+ self.conflicts << "#{name} = #{version}"
154
+ dep_ok = false
155
+ end
156
+ dep_ok
157
+ end
158
+ end
146
159
  end # def converted
147
160
 
148
161
  def input(path)
@@ -187,7 +200,15 @@ class FPM::Package::RPM < FPM::Package
187
200
  #input.replaces += replaces
188
201
 
189
202
  self.config_files += rpm.config_files
190
- self.directories += rpm.directories
203
+
204
+ # rpms support '%dir' things for specifying empty directories to package,
205
+ # but the rpm header itself doesn't actually record this information.
206
+ # so there's no 'directories' to copy, so don't try to merge in the
207
+ # 'directories' feature.
208
+ # TODO(sissel): If you want this feature, we'll have to find scan
209
+ # the extracted rpm for empty directories. I'll wait until someone asks for
210
+ # this feature
211
+ #self.directories += rpm.directories
191
212
 
192
213
  # Extract to the staging directory
193
214
  rpm.extract(staging_path)
@@ -249,7 +270,9 @@ class FPM::Package::RPM < FPM::Package
249
270
  # The default epoch value must be 1 (backward compatibility for rpms built
250
271
  # with fpm 0.4.3 and older)
251
272
  def epoch
252
- return @epoch || "1"
273
+ return 1 if @epoch.nil?
274
+ return nil if @epoch.empty?
275
+ return @epoch
253
276
  end # def epoch
254
277
 
255
278
  def to_s(format=nil)
@@ -1,4 +1,5 @@
1
1
  require "fpm/namespace"
2
+ require "open4"
2
3
 
3
4
  # Some utility functions
4
5
  module FPM::Util
@@ -27,9 +28,17 @@ module FPM::Util
27
28
  end
28
29
 
29
30
  @logger.debug("Running command", :args => args)
30
- success = system(*args)
31
+
32
+ status = Open4::popen4(*args) do |pid, stdin, stdout, stderr|
33
+ stdin.close
34
+
35
+ @logger.debug("Process is running", :pid => pid)
36
+ @logger.pipe(stdout => :info, stderr => :error)
37
+ end
38
+ success = (status.exitstatus == 0)
39
+
31
40
  if !success
32
- raise ProcessFailed.new("#{program} failed (exit code #{$?.exitstatus})" \
41
+ raise ProcessFailed.new("#{program} failed (exit code #{status.exitstatus})" \
33
42
  ". Full command was:#{args.inspect}")
34
43
  end
35
44
  return success
@@ -1,3 +1,3 @@
1
1
  module FPM
2
- VERSION = "0.4.26"
2
+ VERSION = "0.4.27"
3
3
  end
@@ -22,6 +22,12 @@ Provides: <%= provides.map {|p| p.split(" ").first}.join ", " %>
22
22
  <% if !replaces.empty? -%>
23
23
  Replaces: <%= replaces.join(", ") %>
24
24
  <% end -%>
25
+ <% if attributes[:deb_recommends_given?] -%>
26
+ Recommends: <%= attributes[:deb_recommends].collect { |d| fix_dependency(d) }.flatten.join(", ") %>
27
+ <% end -%>
28
+ <% if attributes[:deb_suggests_given?] -%>
29
+ Suggests: <%= attributes[:deb_suggests].collect { |d| fix_dependency(d) }.flatten.join(", ") %>
30
+ <% end -%>
25
31
  Section: <%= category %>
26
32
  Priority: <%= attributes[:deb_priority] %>
27
33
  Homepage: <%= url or "http://nourlgiven.example.com/" %>
@@ -31,3 +37,8 @@ Description: <%= firstline %>
31
37
  <% if remainder.any? -%>
32
38
  <%= remainder.collect { |l| l =~ /^ *$/ ? " ." : " #{l}" }.join("\n") %>
33
39
  <% end -%>
40
+ <% if attributes[:deb_field_given?] -%>
41
+ <% attributes[:deb_field].each do |field, value| -%>
42
+ <%= field %>: <%= value %>
43
+ <% end -%>
44
+ <% end -%>
@@ -0,0 +1,11 @@
1
+ <pkg-info
2
+ <% if !attributes[:osxpkg_postinstall_action].nil? -%>postinstall-action="<%= attributes[:osxpkg_postinstall_action] %>"<% end -%>
3
+ >
4
+ <% if !attributes[:osxpkg_dont_obsolete].nil? -%>
5
+ <dont-obsolete>
6
+ <% attributes[:osxpkg_dont_obsolete].each do |filepath| -%>
7
+ <file path="<%= filepath %>"/>
8
+ <% end -%>
9
+ </dont-obsolete>
10
+ <% end -%>
11
+ </pkg-info>
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.26
4
+ version: 0.4.27
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-27 00:00:00.000000000 Z
12
+ date: 2013-01-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -32,17 +32,17 @@ dependencies:
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ~>
35
+ - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: 0.4.3
37
+ version: 0.5.0
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ~>
43
+ - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: 0.4.3
45
+ version: 0.5.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: backports
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -91,6 +91,22 @@ dependencies:
91
91
  - - '='
92
92
  - !ruby/object:Gem::Version
93
93
  version: 0.3.1
94
+ - !ruby/object:Gem::Dependency
95
+ name: open4
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
94
110
  - !ruby/object:Gem::Dependency
95
111
  name: rush
96
112
  requirement: !ruby/object:Gem::Requirement
@@ -152,31 +168,33 @@ files:
152
168
  - lib/fpm/command.rb
153
169
  - lib/fpm/namespace.rb
154
170
  - lib/fpm/package.rb
171
+ - lib/fpm/errors.rb
172
+ - lib/fpm/version.rb
173
+ - lib/fpm/package/gem.rb
174
+ - lib/fpm/package/dir.rb
175
+ - lib/fpm/package/pyfpm/__init__.pyc
155
176
  - lib/fpm/package/pyfpm/get_metadata.pyc
156
177
  - lib/fpm/package/pyfpm/get_metadata.py
157
- - lib/fpm/package/pyfpm/__init__.pyc
158
178
  - lib/fpm/package/pyfpm/__init__.py
159
- - lib/fpm/package/tar.rb
179
+ - lib/fpm/package/osxpkg.rb
180
+ - lib/fpm/package/npm.rb
181
+ - lib/fpm/package/pear.rb
160
182
  - lib/fpm/package/deb.rb
161
- - lib/fpm/package/dir.rb
162
- - lib/fpm/package/puppet.rb
163
- - lib/fpm/package/gem.rb
164
183
  - lib/fpm/package/python.rb
165
- - lib/fpm/package/solaris.rb
166
184
  - lib/fpm/package/rpm.rb
167
- - lib/fpm/package/npm.rb
168
- - lib/fpm/package/pear.rb
169
- - lib/fpm/version.rb
170
- - lib/fpm/errors.rb
185
+ - lib/fpm/package/puppet.rb
186
+ - lib/fpm/package/tar.rb
187
+ - lib/fpm/package/solaris.rb
171
188
  - lib/fpm/util.rb
172
189
  - lib/fpm.rb
173
190
  - bin/fpm-npm
174
191
  - bin/fpm
175
- - templates/solaris.erb
176
- - templates/rpm.erb
177
192
  - templates/deb.erb
193
+ - templates/rpm.erb
194
+ - templates/solaris.erb
178
195
  - templates/puppet/package/remove.pp.erb
179
196
  - templates/puppet/package.pp.erb
197
+ - templates/osxpkg.erb
180
198
  - LICENSE
181
199
  - CONTRIBUTORS
182
200
  - CHANGELIST
@@ -206,3 +224,4 @@ signing_key:
206
224
  specification_version: 3
207
225
  summary: fpm - package building and mangling
208
226
  test_files: []
227
+ has_rdoc: