fpm 0.4.9 → 0.4.10
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 +14 -0
- data/CONTRIBUTORS +3 -1
- data/lib/fpm/command.rb +8 -0
- data/lib/fpm/package.rb +18 -1
- data/lib/fpm/package/deb.rb +4 -0
- data/lib/fpm/package/dir.rb +20 -0
- data/lib/fpm/package/pyfpm/__init__.pyc +0 -0
- data/lib/fpm/package/pyfpm/get_metadata.py +3 -3
- data/lib/fpm/package/pyfpm/get_metadata.pyc +0 -0
- data/lib/fpm/package/python.rb +2 -1
- data/lib/fpm/package/rpm.rb +11 -0
- data/templates/rpm.erb +1 -1
- metadata +3 -3
data/CHANGELIST
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
0.4.10 (May 25, 2012)
|
2
|
+
- Fix python package support for python3 (#212, patch by Slezhuk Evgeniy)
|
3
|
+
- Preserve file metadata (time, owner, etc) when copying with the dir
|
4
|
+
package. (#217, patch by Marshall T. Vandegrift)
|
5
|
+
- Missing executables will now error more readably in fpm.
|
6
|
+
- Fix gem and python 'version' selection (#215, #204)
|
7
|
+
- Dependencies using '!=' will now map to 'Conflicts' in deb packages. (#221,
|
8
|
+
patch by Sven Fischer)
|
9
|
+
- Allow setting default user/group for files in rpm packages (#208, patch by
|
10
|
+
Jason Rogers). Note: This adds --user and --group flags to effect this.
|
11
|
+
These flags may go away in the future, but if they do, they will be
|
12
|
+
- In python packages set 'install-data' correctly. (#223, patch by Jamie
|
13
|
+
Scheinblum)
|
14
|
+
|
1
15
|
0.4.9 (April 25, 2012)
|
2
16
|
- Fix --prefix support when building gems (#213, patch by Jan Vansteenkiste)
|
3
17
|
|
data/CONTRIBUTORS
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
The following
|
1
|
+
The following awesome folks have contributed ideas,
|
2
|
+
bug reports, code, or other to fpm:
|
2
3
|
|
3
4
|
anthezium
|
4
5
|
Curt Micol
|
@@ -14,3 +15,4 @@ Aleix Conchillo Flaqué (github: aconchillo)
|
|
14
15
|
Luke Macken (github: lmacken)
|
15
16
|
Matt Blair (github: mblair)
|
16
17
|
Thomas Meson (github: zllak)
|
18
|
+
Oliver Hookins (github: ohookins)
|
data/lib/fpm/command.rb
CHANGED
@@ -229,6 +229,11 @@ class FPM::Command < Clamp::Command
|
|
229
229
|
#
|
230
230
|
# In the case of 'flag' options, the accessor is actually 'foo_bar?'
|
231
231
|
# instead of just 'foo_bar'
|
232
|
+
|
233
|
+
# If the instance variable @{attr} is defined, then
|
234
|
+
# it means the flag was given on the command line.
|
235
|
+
flag_given = instance_variable_defined?("@#{attr}")
|
236
|
+
input.attributes["#{attr}_given?".to_sym] = flag_given
|
232
237
|
attr = "#{attr}?" if !respond_to?(attr) # handle boolean :flag cases
|
233
238
|
input.attributes[attr.to_sym] = send(attr) if respond_to?(attr)
|
234
239
|
@logger.debug("Setting attribute", attr.to_sym => send(attr))
|
@@ -328,6 +333,9 @@ class FPM::Command < Clamp::Command
|
|
328
333
|
end
|
329
334
|
|
330
335
|
return 0
|
336
|
+
rescue FPM::Util::ExecutableNotFound => e
|
337
|
+
@logger.error("Need executable '#{e}' to convert #{input_type} to #{output_type}")
|
338
|
+
return 1
|
331
339
|
ensure
|
332
340
|
input.cleanup unless input.nil?
|
333
341
|
output.cleanup unless output.nil?
|
data/lib/fpm/package.rb
CHANGED
@@ -420,8 +420,25 @@ class FPM::Package
|
|
420
420
|
end # def self.type
|
421
421
|
end # class << self
|
422
422
|
|
423
|
+
# Get the version of this package
|
424
|
+
def version
|
425
|
+
if instance_variable_defined?(:@version) && !@version.nil?
|
426
|
+
return @version
|
427
|
+
elsif attributes[:version_given?]
|
428
|
+
# 'version_given?' will be true in cases where the
|
429
|
+
# fpm command-line tool has been given '-v' or '--version' settings
|
430
|
+
# We do this check because the default version is "1.0"
|
431
|
+
# on the fpm command line.
|
432
|
+
return attributes.fetch(:version)
|
433
|
+
end
|
434
|
+
|
435
|
+
# No version yet, nil.
|
436
|
+
return nil
|
437
|
+
end # def version
|
438
|
+
|
423
439
|
# General public API
|
424
|
-
public(:type, :initialize, :convert, :input, :output, :to_s, :cleanup, :files
|
440
|
+
public(:type, :initialize, :convert, :input, :output, :to_s, :cleanup, :files,
|
441
|
+
:version)
|
425
442
|
|
426
443
|
# Package internal public api
|
427
444
|
public(:cleanup_staging, :cleanup_build, :staging_path, :converted_from,
|
data/lib/fpm/package/deb.rb
CHANGED
@@ -261,6 +261,10 @@ class FPM::Package::Deb < FPM::Package
|
|
261
261
|
nextversion[l-1] = 0
|
262
262
|
nextversion = nextversion.join(".")
|
263
263
|
return ["#{name} (>= #{version})", "#{name} (<< #{nextversion})"]
|
264
|
+
elsif (m = dep.match(/(\S+)\s+\(!= (.+)\)/))
|
265
|
+
# Append this to conflicts
|
266
|
+
self.conflicts += [dep.gsub(/!=/,"=")]
|
267
|
+
return []
|
264
268
|
elsif (m = dep.match(/(\S+)\s+\(= (.+)\)/)) and
|
265
269
|
self.attributes[:deb_ignore_iteration_in_dependencies?]
|
266
270
|
# Convert 'foo (= x)' to 'foo (>= x)' and 'foo (<< x+1)'
|
data/lib/fpm/package/dir.rb
CHANGED
@@ -107,7 +107,27 @@ class FPM::Package::Dir < FPM::Package
|
|
107
107
|
FileUtils.copy_entry(source, destination)
|
108
108
|
end
|
109
109
|
end
|
110
|
+
|
111
|
+
copy_metadata(source, destination)
|
110
112
|
end # def copy
|
111
113
|
|
114
|
+
def copy_metadata(source, destination)
|
115
|
+
source_stat = File::lstat(source)
|
116
|
+
dest_stat = File::lstat(destination)
|
117
|
+
|
118
|
+
# If this is a hard-link, there's no metadata to copy.
|
119
|
+
return if source_stat.ino == dest_stat.ino
|
120
|
+
|
121
|
+
File.utime(source_stat.atime, source_stat.mtime, destination)
|
122
|
+
begin
|
123
|
+
File.chown(source_stat.uid, source_stat.gid, destination)
|
124
|
+
rescue Errno::EPERM
|
125
|
+
# clear setuid/setgid
|
126
|
+
File.chmod(source_stat.mode & 01777, destination)
|
127
|
+
else
|
128
|
+
File.chmod(source_stat.mode, destination)
|
129
|
+
end
|
130
|
+
end # def copy_metadata
|
131
|
+
|
112
132
|
public(:input, :output)
|
113
133
|
end # class FPM::Package::Dir
|
Binary file
|
@@ -65,9 +65,9 @@ class get_metadata(Command):
|
|
65
65
|
|
66
66
|
#print json.dumps(data, indent=2)
|
67
67
|
try:
|
68
|
-
print
|
69
|
-
except AttributeError
|
68
|
+
print(json.dumps(data, indent=2))
|
69
|
+
except AttributeError as e:
|
70
70
|
# For Python 2.5 and Debian's python-json
|
71
|
-
print
|
71
|
+
print(json.write(data))
|
72
72
|
# def run
|
73
73
|
# class list_dependencies
|
Binary file
|
data/lib/fpm/package/python.rb
CHANGED
@@ -183,7 +183,7 @@ class FPM::Package::Python < FPM::Package
|
|
183
183
|
# Ask python where libraries are installed to.
|
184
184
|
# This line is unusually long because I don't have a shorter way to express it.
|
185
185
|
attributes[:python_install_lib] = %x{
|
186
|
-
#{attributes[:python_bin]} -c 'from distutils.sysconfig import get_python_lib; print
|
186
|
+
#{attributes[:python_bin]} -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())'
|
187
187
|
}.chomp
|
188
188
|
@logger.info("Setting default :python_install_lib attribute",
|
189
189
|
:value => attributes[:python_install_lib])
|
@@ -194,6 +194,7 @@ class FPM::Package::Python < FPM::Package
|
|
194
194
|
safesystem(attributes[:python_bin], "setup.py", "install",
|
195
195
|
"--root", staging_path,
|
196
196
|
"--install-lib", File.join(prefix, attributes[:python_install_lib]),
|
197
|
+
"--install-data", File.join(prefix, attributes[:python_install_lib]),
|
197
198
|
"--install-scripts", File.join(prefix, attributes[:python_install_bin]))
|
198
199
|
end
|
199
200
|
end # def install_to_staging
|
data/lib/fpm/package/rpm.rb
CHANGED
@@ -29,6 +29,17 @@ class FPM::Package::RPM < FPM::Package
|
|
29
29
|
"bzip2" => "w9.bzdio"
|
30
30
|
} unless defined?(COMPRESSION_MAP)
|
31
31
|
|
32
|
+
option "--user", "USER",
|
33
|
+
"Set the user to USER in the %files section.",
|
34
|
+
:default => 'root' do |value|
|
35
|
+
value
|
36
|
+
end
|
37
|
+
|
38
|
+
option "--group", "GROUP",
|
39
|
+
"Set the group to GROUP in the %files section.",
|
40
|
+
:default => 'root' do |value|
|
41
|
+
value
|
42
|
+
end
|
32
43
|
|
33
44
|
option "--rpmbuild-define", "DEFINITION",
|
34
45
|
"Pass a --define argument to rpmbuild." do |define|
|
data/templates/rpm.erb
CHANGED
@@ -96,7 +96,7 @@ fi
|
|
96
96
|
|
97
97
|
<% end -%>
|
98
98
|
%files
|
99
|
-
%defattr(
|
99
|
+
%defattr(-,<%= attributes[:rpm_user] %>,<%= attributes[:rpm_group] %>,-)
|
100
100
|
<%# Output config files and then regular files. -%>
|
101
101
|
<% config_files.each do |path| -%>
|
102
102
|
%config(noreplace) <%= path %>
|
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.10
|
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-05-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -201,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
201
201
|
version: '0'
|
202
202
|
requirements: []
|
203
203
|
rubyforge_project:
|
204
|
-
rubygems_version: 1.8.
|
204
|
+
rubygems_version: 1.8.24
|
205
205
|
signing_key:
|
206
206
|
specification_version: 3
|
207
207
|
summary: fpm - package building and mangling
|