fpm 0.3.4 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELIST +1 -1
- data/bin/fpm +0 -0
- data/bin/fpm-npm +3 -3
- data/lib/fpm/builder.rb +7 -3
- data/lib/fpm/flags.rb +1 -1
- data/lib/fpm/package.rb +15 -6
- data/lib/fpm/program.rb +23 -8
- data/lib/fpm/source.rb +3 -3
- data/lib/fpm/source/dir.rb +1 -1
- data/lib/fpm/source/pyfpm/get_metadata.py +1 -1
- data/lib/fpm/source/python.rb +1 -1
- data/lib/fpm/target/deb.rb +15 -15
- data/lib/fpm/target/puppet.rb +1 -1
- data/lib/fpm/target/rpm.rb +2 -2
- data/lib/fpm/target/solaris.rb +1 -1
- data/lib/rpm/header.rb +4 -4
- data/lib/rpm/lead.rb +3 -3
- data/lib/rpm/rpmfile.rb +1 -1
- data/templates/deb.erb +11 -8
- data/templates/rpm.erb +2 -2
- metadata +4 -4
data/CHANGELIST
CHANGED
data/bin/fpm
CHANGED
File without changes
|
data/bin/fpm-npm
CHANGED
@@ -61,8 +61,8 @@ Dir.glob("#{builddir}/usr/lib/node/.npm/*/*") do |path|
|
|
61
61
|
# So we'll specify deps of {v}-1 <= x <= {v}-999999....
|
62
62
|
depends = Dir.glob("#{path}/dependson/*@*") \
|
63
63
|
.collect { |p| PACKAGEPREFIX + File.basename(p) } \
|
64
|
-
.collect { |p| n,v = p.split("@");
|
65
|
-
["#{n} (>= #{v}-1)", "#{n} (<= #{v}-99999999999999)"]
|
64
|
+
.collect { |p| n,v = p.split("@");
|
65
|
+
["#{n} (>= #{v}-1)", "#{n} (<= #{v}-99999999999999)"]
|
66
66
|
}.flatten
|
67
67
|
|
68
68
|
if package["author"]
|
@@ -73,7 +73,7 @@ Dir.glob("#{builddir}/usr/lib/node/.npm/*/*") do |path|
|
|
73
73
|
maintainer = "#{m["name"]} <#{m["email"]}>"
|
74
74
|
end
|
75
75
|
|
76
|
-
pkgcmd = [ "fpm",
|
76
|
+
pkgcmd = [ "fpm",
|
77
77
|
"-n", "#{PACKAGEPREFIX}#{package["name"]}",
|
78
78
|
"-v", package["version"],
|
79
79
|
"-m", maintainer,
|
data/lib/fpm/builder.rb
CHANGED
@@ -13,7 +13,7 @@ class FPM::Builder
|
|
13
13
|
o = @package.default_output
|
14
14
|
if o[0,1] == "/"
|
15
15
|
o
|
16
|
-
else
|
16
|
+
else
|
17
17
|
File.join(@working_dir, o)
|
18
18
|
end
|
19
19
|
end
|
@@ -47,6 +47,7 @@ class FPM::Builder
|
|
47
47
|
:maintainer => settings.maintainer,
|
48
48
|
:provides => [],
|
49
49
|
:replaces => [],
|
50
|
+
:conflicts => [],
|
50
51
|
:description => settings.description,
|
51
52
|
:url => settings.url,
|
52
53
|
:settings => settings.source
|
@@ -55,7 +56,7 @@ class FPM::Builder
|
|
55
56
|
@edit = !!settings.edit
|
56
57
|
|
57
58
|
@paths = paths
|
58
|
-
@package = package_class_for(settings.package_type).new(@source,
|
59
|
+
@package = package_class_for(settings.package_type).new(@source,
|
59
60
|
:settings => settings.target
|
60
61
|
)
|
61
62
|
# Append dependencies given from settings (-d flag for fpm)
|
@@ -63,13 +64,16 @@ class FPM::Builder
|
|
63
64
|
# Append provides given from settings (--provides flag for fpm)
|
64
65
|
@package.provides += settings.provides if settings.provides
|
65
66
|
@package.replaces += settings.replaces if settings.replaces
|
67
|
+
@package.conflicts += settings.conflicts if settings.conflicts
|
66
68
|
@package.architecture = settings.architecture if settings.architecture
|
69
|
+
@package.category = settings.category if settings.category
|
67
70
|
@package.scripts = settings.scripts
|
71
|
+
@package.config_files = settings.config_files
|
68
72
|
|
69
73
|
@output = settings.package_path
|
70
74
|
@recurse_dependencies = settings.recurse_dependencies
|
71
75
|
end # def initialize
|
72
|
-
|
76
|
+
|
73
77
|
def tar_path
|
74
78
|
@tar_path ||= "#{builddir}/data.tar"
|
75
79
|
end
|
data/lib/fpm/flags.rb
CHANGED
data/lib/fpm/package.rb
CHANGED
@@ -3,7 +3,7 @@ require "socket" # for Socket.gethostname
|
|
3
3
|
require "logger"
|
4
4
|
require "find" # for Find.find (directory walking)
|
5
5
|
|
6
|
-
class FPM::Package
|
6
|
+
class FPM::Package
|
7
7
|
# The name of this package
|
8
8
|
attr_accessor :name
|
9
9
|
|
@@ -18,7 +18,7 @@ class FPM::Package
|
|
18
18
|
# The iteration of this package.
|
19
19
|
# Debian calls this 'release' and is the last '-NUMBER' in the version
|
20
20
|
# RedHat has this as 'Release' in the .spec file
|
21
|
-
# FreeBSD calls this 'PORTREVISION'
|
21
|
+
# FreeBSD calls this 'PORTREVISION'
|
22
22
|
# If left unpicked, it defaults to 1.
|
23
23
|
attr_accessor :iteration
|
24
24
|
|
@@ -49,6 +49,10 @@ class FPM::Package
|
|
49
49
|
# (Not all packages support this)
|
50
50
|
attr_accessor :provides
|
51
51
|
|
52
|
+
# Array of things this package conflicts with.
|
53
|
+
# (Not all packages support this)
|
54
|
+
attr_accessor :conflicts
|
55
|
+
|
52
56
|
# Array of things this package replaces.
|
53
57
|
# (Not all packages support this)
|
54
58
|
attr_accessor :replaces
|
@@ -59,6 +63,9 @@ class FPM::Package
|
|
59
63
|
# hash of paths for maintainer/package scripts (postinstall, etc)
|
60
64
|
attr_accessor :scripts
|
61
65
|
|
66
|
+
# Array of configuration files
|
67
|
+
attr_accessor :config_files
|
68
|
+
|
62
69
|
# target-specific settings
|
63
70
|
attr_accessor :settings
|
64
71
|
|
@@ -76,7 +83,7 @@ class FPM::Package
|
|
76
83
|
@dependencies = source[:dependencies] || []
|
77
84
|
# Iteration can be nil. If nil, the fpm package implementation is expected
|
78
85
|
# to handle any default value that should be instead.
|
79
|
-
@iteration = source[:iteration]
|
86
|
+
@iteration = source[:iteration]
|
80
87
|
@url = source[:url] || "http://nourlgiven.example.com/no/url/given"
|
81
88
|
@category = source[:category] || "default"
|
82
89
|
@license = source[:license] || "unknown"
|
@@ -108,10 +115,12 @@ class FPM::Package
|
|
108
115
|
@description = source[:description] || "no description given"
|
109
116
|
@provides = source[:provides] || []
|
110
117
|
@replaces = source[:replaces] || []
|
118
|
+
@conflicts = source[:conflicts] || []
|
111
119
|
@scripts = source[:scripts]
|
120
|
+
@config_files = source[:config_files] || []
|
112
121
|
|
113
|
-
|
114
|
-
|
122
|
+
# Target-specific settings, mirrors :settings metadata in FPM::Source
|
123
|
+
@settings = params[:settings] || {}
|
115
124
|
end # def initialize
|
116
125
|
|
117
126
|
# nobody needs md5sums by default.
|
@@ -158,7 +167,7 @@ class FPM::Package
|
|
158
167
|
end # def default_output
|
159
168
|
|
160
169
|
def fixpath(path)
|
161
|
-
if path[0,1] != "/"
|
170
|
+
if path[0,1] != "/"
|
162
171
|
path = File.join(@source.root, path)
|
163
172
|
end
|
164
173
|
return path if File.symlink?(path)
|
data/lib/fpm/program.rb
CHANGED
@@ -14,11 +14,13 @@ class FPM::Program
|
|
14
14
|
@settings.exclude = [] # Paths to exclude in packaging
|
15
15
|
@settings.provides = []
|
16
16
|
@settings.replaces = []
|
17
|
+
@settings.conflicts = []
|
17
18
|
@settings.source = {} # source settings
|
18
19
|
@settings.target = {} # target settings
|
20
|
+
@settings.config_files ||= []
|
19
21
|
|
20
22
|
# Maintainer scripts - https://github.com/jordansissel/fpm/issues/18
|
21
|
-
@settings.scripts ||= {}
|
23
|
+
@settings.scripts ||= {}
|
22
24
|
|
23
25
|
@help = nil
|
24
26
|
end # def initialize
|
@@ -40,7 +42,7 @@ class FPM::Program
|
|
40
42
|
|
41
43
|
if !ok
|
42
44
|
$stderr.puts "There were errors; see above."
|
43
|
-
$stderr.puts
|
45
|
+
$stderr.puts
|
44
46
|
$stderr.puts @help
|
45
47
|
return 1
|
46
48
|
end
|
@@ -59,14 +61,14 @@ class FPM::Program
|
|
59
61
|
FPM::Source::Gem.flags(FPM::Flags.new(opts, "gem", "gem source only"), @settings)
|
60
62
|
FPM::Source::Python.flags(FPM::Flags.new(opts, "python", "python source only"),
|
61
63
|
@settings)
|
62
|
-
|
63
|
-
|
64
|
+
FPM::Target::Deb.flags(FPM::Flags.new(opts, "deb", "deb target only"), @settings)
|
65
|
+
|
64
66
|
# Process fpmrc first
|
65
67
|
fpmrc(opts)
|
66
68
|
|
67
69
|
# Proces normal flags now.
|
68
70
|
remaining = opts.parse(args)
|
69
|
-
|
71
|
+
|
70
72
|
# need to print help in a different scope
|
71
73
|
@help = opts.help
|
72
74
|
|
@@ -78,7 +80,7 @@ class FPM::Program
|
|
78
80
|
return if !ENV.include?("HOME")
|
79
81
|
rcpath = File.expand_path("~/.fpmrc")
|
80
82
|
return if !File.exists?(rcpath)
|
81
|
-
|
83
|
+
|
82
84
|
# fpmrc exists, read it as flags, one per line.
|
83
85
|
File.new(rcpath, "r").each do |line|
|
84
86
|
flag = line.chomp
|
@@ -109,7 +111,7 @@ class FPM::Program
|
|
109
111
|
|
110
112
|
opts.on("-v VERSION", "--version VERSION",
|
111
113
|
"version to give the package") do |version|
|
112
|
-
@settings.version = version
|
114
|
+
@settings.version = version
|
113
115
|
end # --version
|
114
116
|
|
115
117
|
opts.on("--iteration ITERATION",
|
@@ -126,14 +128,27 @@ class FPM::Program
|
|
126
128
|
@settings.dependencies << dep
|
127
129
|
end # --depends
|
128
130
|
|
131
|
+
opts.on("--category SECTION_OR_GROUP") do |thing|
|
132
|
+
@settings.category = thing
|
133
|
+
end # --category
|
134
|
+
|
129
135
|
opts.on("--provides PROVIDES") do |thing|
|
130
136
|
@settings.provides << thing
|
131
137
|
end # --provides
|
132
138
|
|
139
|
+
opts.on("--conflicts CONFLICTS") do |thing|
|
140
|
+
@settings.conflicts << thing
|
141
|
+
end # --conflicts
|
142
|
+
|
133
143
|
opts.on("--replaces REPLACES") do |thing|
|
134
144
|
@settings.replaces << thing
|
135
145
|
end # --replaces
|
136
146
|
|
147
|
+
opts.on("--config-files PATH",
|
148
|
+
"(optional) Treat path as a configuration file. Uses conffiles in deb or %config in rpm. (/etc/package.conf)") do |thing|
|
149
|
+
@settings.config_files << thing
|
150
|
+
end
|
151
|
+
|
137
152
|
opts.on("-a ARCHITECTURE", "--architecture ARCHITECTURE") do |arch|
|
138
153
|
@settings.architecture = arch
|
139
154
|
end # --architecture
|
@@ -152,7 +167,7 @@ class FPM::Program
|
|
152
167
|
|
153
168
|
opts.on("-s SOURCE_TYPE", "what to build the package from") do |st|
|
154
169
|
@settings.source_type = st
|
155
|
-
end # -s
|
170
|
+
end # -s
|
156
171
|
|
157
172
|
opts.on("-S PACKAGE_SUFFIX", "which suffix to append to package and dependencies") do |sfx|
|
158
173
|
@settings.suffix = sfx
|
data/lib/fpm/source.rb
CHANGED
@@ -87,11 +87,11 @@ class FPM::Source
|
|
87
87
|
paths = [ paths ] if paths.is_a? String
|
88
88
|
paths.each do |path|
|
89
89
|
while path != "/" and path != "."
|
90
|
-
dirs << path if !dirs.include?(path)
|
90
|
+
dirs << path if !dirs.include?(path)
|
91
91
|
path = File.dirname(path)
|
92
92
|
end
|
93
93
|
end # paths.each
|
94
|
-
|
94
|
+
|
95
95
|
# Want directories to be sorted thusly: [ "/usr", "/usr/bin" ]
|
96
96
|
# Why? tar and some package managers sometimes fail if the tar is created
|
97
97
|
# like: [ "/opt/fizz", "/opt" ]
|
@@ -136,7 +136,7 @@ class FPM::Source
|
|
136
136
|
end
|
137
137
|
end # def tar
|
138
138
|
|
139
|
-
def tar_cmd
|
139
|
+
def tar_cmd
|
140
140
|
# Rely on gnu tar for solaris.
|
141
141
|
case %x{uname -s}.chomp
|
142
142
|
when "SunOS"
|
data/lib/fpm/source/dir.rb
CHANGED
data/lib/fpm/source/python.rb
CHANGED
data/lib/fpm/target/deb.rb
CHANGED
@@ -34,7 +34,7 @@ class FPM::Target::Deb < FPM::Package
|
|
34
34
|
# Debian calls x86_64 "amd64"
|
35
35
|
@architecture = "amd64"
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
return @architecture
|
39
39
|
end # def architecture
|
40
40
|
|
@@ -80,7 +80,12 @@ class FPM::Target::Deb < FPM::Package
|
|
80
80
|
else raise "Unsupported script name '#{name}' (path: #{path})"
|
81
81
|
end # case name
|
82
82
|
end # self.scripts.each
|
83
|
-
|
83
|
+
|
84
|
+
if self.config_files.any?
|
85
|
+
File.open('conffiles', 'w'){ |f| f.puts(config_files.join("\n")) }
|
86
|
+
control_files << 'conffiles'
|
87
|
+
end
|
88
|
+
|
84
89
|
# Make the control
|
85
90
|
system("tar -zcf control.tar.gz #{control_files.join(" ")}")
|
86
91
|
|
@@ -92,30 +97,26 @@ class FPM::Target::Deb < FPM::Package
|
|
92
97
|
end # def build
|
93
98
|
|
94
99
|
def default_output
|
95
|
-
v = version
|
96
|
-
v = "#{epoch}:#{v}" if epoch
|
97
100
|
if iteration
|
98
|
-
"#{name}_#{
|
101
|
+
"#{name}_#{version}-#{iteration}_#{architecture}.#{type}"
|
99
102
|
else
|
100
|
-
"#{name}_#{
|
103
|
+
"#{name}_#{version}_#{architecture}.#{type}"
|
101
104
|
end
|
102
105
|
end # def default_output
|
103
106
|
|
104
107
|
def fix_dependency(dep)
|
105
|
-
|
106
|
-
|
107
|
-
# nothing
|
108
|
+
if dep =~ /[\(,\|]/
|
109
|
+
# Don't "fix" ones that could appear well formed already.
|
108
110
|
else
|
109
|
-
# If the dependency is simply a name, turn it into 'name (>= 0)'
|
110
111
|
da = dep.split(/ +/)
|
111
|
-
if da.size
|
112
|
-
|
112
|
+
if da.size > 1
|
113
|
+
# Convert strings 'foo >= bar' to 'foo (>= bar)'
|
114
|
+
dep = "#{da[0]} (#{da[1]} #{da[2]})"
|
113
115
|
end
|
114
|
-
dep = "#{da[0]} (#{da[1]} #{da[2]})"
|
115
116
|
end
|
116
117
|
|
117
118
|
name_re = /^[^ \(]+/
|
118
|
-
name = dep[name_re]
|
119
|
+
name = dep[name_re]
|
119
120
|
if name =~ /[A-Z]/
|
120
121
|
@logger.warn("Downcasing dependency '#{name}' because deb packages " \
|
121
122
|
" don't work so good with uppercase names")
|
@@ -149,4 +150,3 @@ class FPM::Target::Deb < FPM::Package
|
|
149
150
|
end
|
150
151
|
end # def fix_dependency
|
151
152
|
end # class FPM::Target::Deb
|
152
|
-
|
data/lib/fpm/target/puppet.rb
CHANGED
@@ -36,7 +36,7 @@ class FPM::Target::Puppet < FPM::Package
|
|
36
36
|
dir = File.join(builddir, "manifests", File.dirname(manifest))
|
37
37
|
@logger.info("manifests targeting: #{dir}")
|
38
38
|
::Dir.mkdir(dir) if !File.directory?(dir)
|
39
|
-
|
39
|
+
|
40
40
|
File.open(File.join(builddir, "manifests", manifest), "w") do |f|
|
41
41
|
@logger.info("manifest: #{f.path}")
|
42
42
|
template = template(File.join("puppet", "#{manifest}.erb"))
|
data/lib/fpm/target/rpm.rb
CHANGED
@@ -10,7 +10,7 @@ class FPM::Target::Rpm < FPM::Package
|
|
10
10
|
when "all"
|
11
11
|
# Translate fpm "all" arch to what it means in RPM.
|
12
12
|
return "noarch"
|
13
|
-
else
|
13
|
+
else
|
14
14
|
return @architecture
|
15
15
|
end
|
16
16
|
end # def architecture
|
@@ -30,7 +30,7 @@ class FPM::Target::Rpm < FPM::Package
|
|
30
30
|
end
|
31
31
|
|
32
32
|
%w(BUILD RPMS SRPMS SOURCES SPECS).each { |d| Dir.mkdir(d) }
|
33
|
-
args = ["rpmbuild", "-ba",
|
33
|
+
args = ["rpmbuild", "-ba",
|
34
34
|
"--define", "buildroot #{Dir.pwd}/BUILD",
|
35
35
|
"--define", "_topdir #{Dir.pwd}",
|
36
36
|
"--define", "_sourcedir #{Dir.pwd}",
|
data/lib/fpm/target/solaris.rb
CHANGED
@@ -11,7 +11,7 @@ class FPM::Target::Solaris < FPM::Package
|
|
11
11
|
when nil, "native"
|
12
12
|
@architecture = %x{uname -p}.chomp
|
13
13
|
end
|
14
|
-
# "all" is a valid arch according to
|
14
|
+
# "all" is a valid arch according to
|
15
15
|
# http://www.bolthole.com/solaris/makeapackage.html
|
16
16
|
|
17
17
|
return @architecture
|
data/lib/rpm/header.rb
CHANGED
@@ -23,11 +23,11 @@ class RPMFile::Header
|
|
23
23
|
# At this point assume we've read and consumed the lead and signature.
|
24
24
|
#len = @rpm.signature.index_length + @rpm.signature
|
25
25
|
#
|
26
|
-
# header size is
|
26
|
+
# header size is
|
27
27
|
# ( @rpm.signature.index_length * size of a header entry )
|
28
28
|
# + @rpm.signature.data_length
|
29
29
|
#
|
30
|
-
# header 'entries' are an
|
30
|
+
# header 'entries' are an
|
31
31
|
# int32 (tag id), int32 (tag type), int32 (offset), uint32 (count)
|
32
32
|
#
|
33
33
|
# See rpm's header.c, the headerLoad method function for reference.
|
@@ -43,7 +43,7 @@ class RPMFile::Header
|
|
43
43
|
@index_size = @index_count * entry_size
|
44
44
|
tag_data = @rpm.file.read(@index_size)
|
45
45
|
data = @rpm.file.read(@data_length)
|
46
|
-
|
46
|
+
|
47
47
|
#ap :data => data
|
48
48
|
|
49
49
|
(0 ... @index_count).each do |i|
|
@@ -55,7 +55,7 @@ class RPMFile::Header
|
|
55
55
|
@tags << tag
|
56
56
|
|
57
57
|
#ap tag.tag => {
|
58
|
-
#:type => tag.type,
|
58
|
+
#:type => tag.type,
|
59
59
|
#:offset => tag.offset,
|
60
60
|
#:count => tag.count,
|
61
61
|
#:value => (tag.value rescue "???"),
|
data/lib/rpm/lead.rb
CHANGED
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), "namespace")
|
|
2
2
|
|
3
3
|
class RPMFile::Lead
|
4
4
|
#struct rpmlead {
|
5
|
-
attr_accessor :magic #unsigned char magic[4];
|
5
|
+
attr_accessor :magic #unsigned char magic[4];
|
6
6
|
attr_accessor :major #unsigned char major;
|
7
7
|
attr_accessor :minor #unsigned char minor;
|
8
8
|
attr_accessor :type #short type;
|
@@ -12,7 +12,7 @@ class RPMFile::Lead
|
|
12
12
|
attr_accessor :signature_type #short signature_type;
|
13
13
|
attr_accessor :reserved #char reserved[16];
|
14
14
|
#}
|
15
|
-
|
15
|
+
|
16
16
|
attr_accessor :length
|
17
17
|
|
18
18
|
def initialize(rpm)
|
@@ -29,7 +29,7 @@ class RPMFile::Lead
|
|
29
29
|
raise "Unknown package 'type' value #{@type}"
|
30
30
|
end
|
31
31
|
end # def type
|
32
|
-
|
32
|
+
|
33
33
|
def read
|
34
34
|
# Use 'A' here instead of 'a' to trim nulls.
|
35
35
|
@length = 96
|
data/lib/rpm/rpmfile.rb
CHANGED
@@ -8,7 +8,7 @@ require File.join(File.dirname(__FILE__), "tag")
|
|
8
8
|
# source code, but mostly it started making more sense after reading this site:
|
9
9
|
# http://www.rpm.org/max-rpm/s1-rpm-file-format-rpm-file-format.html
|
10
10
|
|
11
|
-
class RPMFile
|
11
|
+
class RPMFile
|
12
12
|
attr_reader :file
|
13
13
|
|
14
14
|
def initialize(file)
|
data/templates/deb.erb
CHANGED
@@ -6,21 +6,24 @@ Maintainer: <%= maintainer or "<unknown>" %>
|
|
6
6
|
<% properdeps = dependencies.collect { |d| fix_dependency(d) }.flatten -%>
|
7
7
|
Depends: <%= properdeps.flatten.join(", ") %>
|
8
8
|
<% end -%>
|
9
|
+
<% if !conflicts.empty? -%>
|
10
|
+
Conflicts: <%= conflicts.join(", ") %>
|
11
|
+
<% end -%>
|
9
12
|
<% if !provides.empty? -%>
|
10
|
-
Provides: <%= provides.join(", ")
|
13
|
+
Provides: <%= provides.join(", ") %>
|
11
14
|
<% end -%>
|
12
15
|
<% if !replaces.empty? -%>
|
13
16
|
<% properrepl = replaces.collect { |d| fix_dependency(d) }.flatten -%>
|
14
17
|
Replaces: <%= properrepl.flatten.join(", ") %>
|
15
18
|
<% end -%>
|
16
19
|
Standards-Version: 3.9.1
|
17
|
-
Section: <%= category or "unknown" %>
|
20
|
+
Section: <%= category or "unknown" %>
|
18
21
|
Priority: extra
|
19
22
|
Homepage: <%= url or "http://nourlgiven.example.com/" %>
|
20
|
-
|
21
|
-
<%
|
22
|
-
<%
|
23
|
-
<%=
|
24
|
-
<%
|
25
|
-
<%= "
|
23
|
+
<% lines = (description or "no description given").split("\n") -%>
|
24
|
+
<% firstline = lines.first -%>
|
25
|
+
<% remainder = lines[1..-1] -%>
|
26
|
+
Description: <%= firstline %>
|
27
|
+
<% if !remainder.nil? -%>
|
28
|
+
<%= remainder.collect { |l| l =~ /^ *$/ ? " ." : " #{l}" }.join("\n") %>
|
26
29
|
<% end -%>
|
data/templates/rpm.erb
CHANGED
@@ -14,7 +14,7 @@ Group: <%= category %>
|
|
14
14
|
TODO: [Jay] rpms require a license
|
15
15
|
let's detect it intelligently
|
16
16
|
-%>
|
17
|
-
License: <%= license %>
|
17
|
+
License: <%= license %>
|
18
18
|
URL: <%= url or "http://nourlgiven.example.com/" %>
|
19
19
|
Source0: %{_sourcedir}/data.tar.gz
|
20
20
|
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
@@ -28,7 +28,7 @@ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
|
28
28
|
nextversion = version.split(".").collect { |v| v.to_i }
|
29
29
|
l = nextversion.length
|
30
30
|
nextversion[l-2] += 1
|
31
|
-
nextversion[l-1] = 0
|
31
|
+
nextversion[l-1] = 0
|
32
32
|
nextversion = nextversion.join(".")
|
33
33
|
["#{name} >= #{version}", "#{name} < #{nextversion}"]
|
34
34
|
# Convert gem >= A.B.C <= X.Y.Z to '>= A.B.C' and '<= X.Y.Z'
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fpm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 6
|
10
|
+
version: 0.3.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jordan Sissel
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-07-
|
18
|
+
date: 2011-07-08 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|