fpm 0.2.22 → 0.2.23
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/lib/rpm/header.rb +89 -0
- data/lib/rpm/lead.rb +48 -0
- data/lib/rpm/namespace.rb +1 -0
- data/lib/rpm/rpmfile.rb +81 -0
- data/lib/rpm/tag.rb +304 -0
- data/templates/deb.erb +2 -1
- metadata +16 -11
data/lib/rpm/header.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "namespace")
|
2
|
+
require File.join(File.dirname(__FILE__), "tag")
|
3
|
+
|
4
|
+
class RPMFile::Header
|
5
|
+
attr_reader :tags
|
6
|
+
attr_reader :length
|
7
|
+
|
8
|
+
attr_accessor :magic # 8-byte string magic
|
9
|
+
attr_accessor :index_count # rpmlib calls this field 'il' unhelpfully
|
10
|
+
attr_accessor :data_length # rpmlib calls this field 'dl' unhelpfully
|
11
|
+
|
12
|
+
HEADER_SIGNED_TYPE = 5
|
13
|
+
HEADER_MAGIC = "\x8e\xad\xe8\x01\x00\x00\x00\x00"
|
14
|
+
|
15
|
+
def initialize(rpm)
|
16
|
+
@rpm = rpm
|
17
|
+
@tags = []
|
18
|
+
end
|
19
|
+
|
20
|
+
def read
|
21
|
+
# TODO(sissel): update the comments here to reflect learnings about rpm
|
22
|
+
# internals
|
23
|
+
# At this point assume we've read and consumed the lead and signature.
|
24
|
+
#len = @rpm.signature.index_length + @rpm.signature
|
25
|
+
#
|
26
|
+
# header size is
|
27
|
+
# ( @rpm.signature.index_length * size of a header entry )
|
28
|
+
# + @rpm.signature.data_length
|
29
|
+
#
|
30
|
+
# header 'entries' are an
|
31
|
+
# int32 (tag id), int32 (tag type), int32 (offset), uint32 (count)
|
32
|
+
#
|
33
|
+
# See rpm's header.c, the headerLoad method function for reference.
|
34
|
+
|
35
|
+
# Header always starts with HEADER_MAGIC + index_count(2bytes) +
|
36
|
+
# data_length(2bytes)
|
37
|
+
data = @rpm.file.read(16).unpack("a8NN")
|
38
|
+
# TODO(sissel): @index_count is really a count, rename?
|
39
|
+
@magic, @index_count, @data_length = data
|
40
|
+
validate
|
41
|
+
|
42
|
+
entry_size = 16 # tag id, type, offset, count == 16 bytes
|
43
|
+
@index_size = @index_count * entry_size
|
44
|
+
tag_data = @rpm.file.read(@index_size)
|
45
|
+
data = @rpm.file.read(@data_length)
|
46
|
+
|
47
|
+
#ap :data => data
|
48
|
+
|
49
|
+
(0 ... @index_count).each do |i|
|
50
|
+
offset = i * entry_size
|
51
|
+
entry_data = tag_data[i * entry_size, entry_size]
|
52
|
+
entry = entry_data.unpack("NNNN")
|
53
|
+
entry << data
|
54
|
+
tag = ::RPMFile::Tag.new(*entry)
|
55
|
+
@tags << tag
|
56
|
+
|
57
|
+
#ap tag.tag => {
|
58
|
+
#:type => tag.type,
|
59
|
+
#:offset => tag.offset,
|
60
|
+
#:count => tag.count,
|
61
|
+
#:value => (tag.value rescue "???"),
|
62
|
+
#}
|
63
|
+
end # each index
|
64
|
+
@length = @magic.size + @index_size + @data_length
|
65
|
+
end # def read
|
66
|
+
|
67
|
+
def write
|
68
|
+
raise "not implemented yet"
|
69
|
+
# Sort tags by type (integer value)
|
70
|
+
# emit all tags in order
|
71
|
+
# then emit all data segments in same order
|
72
|
+
end # def write
|
73
|
+
|
74
|
+
def validate
|
75
|
+
# TODO(sissel): raise real exceptions
|
76
|
+
if @magic != ::RPMFile::Header::HEADER_MAGIC
|
77
|
+
raise "Header magic did not match; got #{@magic.inspect}, " \
|
78
|
+
"expected #{::RPMFile::Header::HEADER_MAGIC.inspect}"
|
79
|
+
end
|
80
|
+
|
81
|
+
#if !(0..32).include?(@index_count)
|
82
|
+
#raise "Invalid 'index_count' value #{@index_count}, expected to be in range [0..32]"
|
83
|
+
#end
|
84
|
+
|
85
|
+
#if !(0..8192).include?(@data_length)
|
86
|
+
#raise "Invalid 'data_length' value #{@data_length}, expected to be in range [0..8192]"
|
87
|
+
#end
|
88
|
+
end # def validate
|
89
|
+
end # class RPMFile::Header
|
data/lib/rpm/lead.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "namespace")
|
2
|
+
|
3
|
+
class RPMFile::Lead
|
4
|
+
#struct rpmlead {
|
5
|
+
attr_accessor :magic #unsigned char magic[4];
|
6
|
+
attr_accessor :major #unsigned char major;
|
7
|
+
attr_accessor :minor #unsigned char minor;
|
8
|
+
attr_accessor :type #short type;
|
9
|
+
attr_accessor :archnum #short archnum;
|
10
|
+
attr_accessor :name #char name[66];
|
11
|
+
attr_accessor :osnum #short osnum;
|
12
|
+
attr_accessor :signature_type #short signature_type;
|
13
|
+
attr_accessor :reserved #char reserved[16];
|
14
|
+
#}
|
15
|
+
|
16
|
+
attr_accessor :length
|
17
|
+
|
18
|
+
def initialize(rpm)
|
19
|
+
@rpm = rpm
|
20
|
+
end
|
21
|
+
|
22
|
+
def type
|
23
|
+
case @type
|
24
|
+
when 0
|
25
|
+
return :binary
|
26
|
+
when 1
|
27
|
+
return :source
|
28
|
+
else
|
29
|
+
raise "Unknown package 'type' value #{@type}"
|
30
|
+
end
|
31
|
+
end # def type
|
32
|
+
|
33
|
+
def read
|
34
|
+
# Use 'A' here instead of 'a' to trim nulls.
|
35
|
+
@length = 96
|
36
|
+
data = @rpm.file.read(@length).unpack("A4CCnnA66nnA16")
|
37
|
+
@magic, @major, @minor, @type, @archnum, @name, \
|
38
|
+
@osnum, @signature_type, @reserved = data
|
39
|
+
|
40
|
+
return nil
|
41
|
+
end # def read
|
42
|
+
|
43
|
+
def write(file)
|
44
|
+
data = [ @magic, @major, @minor, @type, @archnum, @name, \
|
45
|
+
@osnum, @signature_type, @reserved ].pack("a4CCnna66nna16")
|
46
|
+
file.write(data)
|
47
|
+
end # def write
|
48
|
+
end # class RPMFile::Lead
|
@@ -0,0 +1 @@
|
|
1
|
+
class RPMFile; end
|
data/lib/rpm/rpmfile.rb
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
require "ap"
|
2
|
+
require File.join(File.dirname(__FILE__), "namespace")
|
3
|
+
require File.join(File.dirname(__FILE__), "header")
|
4
|
+
require File.join(File.dirname(__FILE__), "lead")
|
5
|
+
require File.join(File.dirname(__FILE__), "tag")
|
6
|
+
|
7
|
+
# Much of the code here is derived from knowledge gained by reading the rpm
|
8
|
+
# source code, but mostly it started making more sense after reading this site:
|
9
|
+
# http://www.rpm.org/max-rpm/s1-rpm-file-format-rpm-file-format.html
|
10
|
+
|
11
|
+
class RPMFile
|
12
|
+
attr_reader :file
|
13
|
+
|
14
|
+
def initialize(file)
|
15
|
+
if file.is_a?(String)
|
16
|
+
file = File.new(file, "r")
|
17
|
+
end
|
18
|
+
@file = file
|
19
|
+
|
20
|
+
# Make sure we're at the beginning of the file.
|
21
|
+
@file.seek(0, IO::SEEK_SET)
|
22
|
+
end # def initialize
|
23
|
+
|
24
|
+
public
|
25
|
+
def lead
|
26
|
+
if @lead.nil?
|
27
|
+
@lead = ::RPMFile::Lead.new(self)
|
28
|
+
@lead.read
|
29
|
+
end
|
30
|
+
return @lead
|
31
|
+
end # def lead
|
32
|
+
|
33
|
+
public
|
34
|
+
def signature
|
35
|
+
lead # Make sure we've parsed the lead...
|
36
|
+
|
37
|
+
# If signature_type is not 5 (HEADER_SIGNED_TYPE), no signature.
|
38
|
+
if @lead.signature_type != Header::HEADER_SIGNED_TYPE
|
39
|
+
@signature = false
|
40
|
+
return
|
41
|
+
end
|
42
|
+
|
43
|
+
if @signature.nil?
|
44
|
+
@signature = ::RPMFile::Header.new(self)
|
45
|
+
@signature.read
|
46
|
+
end
|
47
|
+
|
48
|
+
return @signature
|
49
|
+
end # def signature
|
50
|
+
|
51
|
+
public
|
52
|
+
def header
|
53
|
+
signature
|
54
|
+
|
55
|
+
# Skip 4 bytes of nulls
|
56
|
+
# Why? I have no idea yet.
|
57
|
+
if @file.read(4) != "\0\0\0\0"
|
58
|
+
raise "Expected 4 nulls."
|
59
|
+
end
|
60
|
+
|
61
|
+
if @header.nil?
|
62
|
+
@header = ::RPMFile::Header.new(self)
|
63
|
+
@header.read
|
64
|
+
end
|
65
|
+
return @header
|
66
|
+
end
|
67
|
+
|
68
|
+
# Returns a file descriptor. On first invocation, it seeks to the start of the payload
|
69
|
+
public
|
70
|
+
def payload
|
71
|
+
header
|
72
|
+
if @payload.nil?
|
73
|
+
@payload = @file.clone
|
74
|
+
# TODO(sissel): Why +20? I have no idea. Needs more digging. Clearly I'm missing a part
|
75
|
+
# of the file here.
|
76
|
+
@payload.seek(@lead.length + @signature.length + @header.length + 20, IO::SEEK_SET)
|
77
|
+
end
|
78
|
+
|
79
|
+
return @payload
|
80
|
+
end # def payload
|
81
|
+
end # class RPMFile
|
data/lib/rpm/tag.rb
ADDED
@@ -0,0 +1,304 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "namespace")
|
2
|
+
|
3
|
+
class RPMFile::Tag
|
4
|
+
attr_accessor :tag
|
5
|
+
attr_accessor :type
|
6
|
+
attr_accessor :offset
|
7
|
+
attr_accessor :count
|
8
|
+
attr_accessor :value
|
9
|
+
|
10
|
+
# This data can be found mostly in rpmtag.h
|
11
|
+
TAG = {
|
12
|
+
61 => :headerimage,
|
13
|
+
62 => :headersignatures,
|
14
|
+
63 => :headerimmutable,
|
15
|
+
64 => :headerregions,
|
16
|
+
100 => :headeri18ntable,
|
17
|
+
256 => :sig_base,
|
18
|
+
|
19
|
+
257 => :sigsize,
|
20
|
+
258 => :siglemd5_1,
|
21
|
+
259 => :sigpgp,
|
22
|
+
260 => :siglemd5_2,
|
23
|
+
261 => :sigmd5,
|
24
|
+
262 => :siggpg,
|
25
|
+
263 => :sigpgp5,
|
26
|
+
264 => :badsha1_1,
|
27
|
+
265 => :badsha1_2,
|
28
|
+
266 => :pubkeys,
|
29
|
+
267 => :dsaheader,
|
30
|
+
268 => :rsaheader,
|
31
|
+
269 => :sha1header,
|
32
|
+
270 => :longsigsize,
|
33
|
+
271 => :longarchivesize,
|
34
|
+
|
35
|
+
1000 => :name,
|
36
|
+
1001 => :version,
|
37
|
+
1002 => :release,
|
38
|
+
1003 => :epoch,
|
39
|
+
1004 => :summary,
|
40
|
+
1005 => :description,
|
41
|
+
1006 => :buildtime,
|
42
|
+
1007 => :buildhost,
|
43
|
+
1008 => :installtime,
|
44
|
+
1009 => :size,
|
45
|
+
1010 => :distribution,
|
46
|
+
1011 => :vendor,
|
47
|
+
1012 => :gif,
|
48
|
+
1013 => :xpm,
|
49
|
+
1014 => :license,
|
50
|
+
1015 => :packager,
|
51
|
+
1016 => :group,
|
52
|
+
1017 => :changelog,
|
53
|
+
1018 => :source,
|
54
|
+
1019 => :patch,
|
55
|
+
1020 => :url,
|
56
|
+
1021 => :os,
|
57
|
+
1022 => :arch,
|
58
|
+
1023 => :prein,
|
59
|
+
1024 => :postin,
|
60
|
+
1025 => :preun,
|
61
|
+
1026 => :postun,
|
62
|
+
1027 => :oldfilenames,
|
63
|
+
1028 => :filesizes,
|
64
|
+
1029 => :filestates,
|
65
|
+
1030 => :filemodes,
|
66
|
+
1031 => :fileuids,
|
67
|
+
1032 => :filegids,
|
68
|
+
1033 => :filerdevs,
|
69
|
+
1034 => :filemtimes,
|
70
|
+
1035 => :filedigests,
|
71
|
+
1036 => :filelinktos,
|
72
|
+
1037 => :fileflags,
|
73
|
+
1038 => :root,
|
74
|
+
1039 => :fileusername,
|
75
|
+
1040 => :filegroupname,
|
76
|
+
1041 => :exclude,
|
77
|
+
1042 => :exclusive,
|
78
|
+
1043 => :icon,
|
79
|
+
1044 => :sourcerpm,
|
80
|
+
1045 => :fileverifyflags,
|
81
|
+
1046 => :archivesize,
|
82
|
+
1047 => :providename,
|
83
|
+
1048 => :requireflags,
|
84
|
+
1049 => :requirename,
|
85
|
+
1050 => :requireversion,
|
86
|
+
1051 => :nosource,
|
87
|
+
1052 => :nopatch,
|
88
|
+
1053 => :conflictflags,
|
89
|
+
1054 => :conflictname,
|
90
|
+
1055 => :conflictversion,
|
91
|
+
1056 => :defaultprefix,
|
92
|
+
1057 => :buildroot,
|
93
|
+
1058 => :installprefix,
|
94
|
+
1059 => :excludearch,
|
95
|
+
1060 => :excludeos,
|
96
|
+
1061 => :exclusivearch,
|
97
|
+
1062 => :exclusiveos,
|
98
|
+
1063 => :autoreqprov,
|
99
|
+
1064 => :rpmversion,
|
100
|
+
1065 => :triggerscripts,
|
101
|
+
1066 => :triggername,
|
102
|
+
1067 => :triggerversion,
|
103
|
+
1068 => :triggerflags,
|
104
|
+
1069 => :triggerindex,
|
105
|
+
1079 => :verifyscript,
|
106
|
+
1080 => :changelogtime,
|
107
|
+
1081 => :changelogname,
|
108
|
+
1082 => :changelogtext,
|
109
|
+
1083 => :brokenmd5,
|
110
|
+
1084 => :prereq,
|
111
|
+
1085 => :preinprog,
|
112
|
+
1086 => :postinprog,
|
113
|
+
1087 => :preunprog,
|
114
|
+
1088 => :postunprog,
|
115
|
+
1089 => :buildarchs,
|
116
|
+
1090 => :obsoletename,
|
117
|
+
1091 => :verifyscriptprog,
|
118
|
+
1092 => :triggerscriptprog,
|
119
|
+
1093 => :docdir,
|
120
|
+
1094 => :cookie,
|
121
|
+
1095 => :filedevices,
|
122
|
+
1096 => :fileinodes,
|
123
|
+
1097 => :filelangs,
|
124
|
+
1098 => :prefixes,
|
125
|
+
1099 => :instprefixes,
|
126
|
+
1100 => :triggerin,
|
127
|
+
1101 => :triggerun,
|
128
|
+
1102 => :triggerpostun,
|
129
|
+
1103 => :autoreq,
|
130
|
+
1104 => :autoprov,
|
131
|
+
1105 => :capability,
|
132
|
+
1106 => :sourcepackage,
|
133
|
+
1107 => :oldorigfilenames,
|
134
|
+
1108 => :buildprereq,
|
135
|
+
1109 => :buildrequires,
|
136
|
+
1110 => :buildconflicts,
|
137
|
+
1111 => :buildmacros,
|
138
|
+
1112 => :provideflags,
|
139
|
+
1113 => :provideversion,
|
140
|
+
1114 => :obsoleteflags,
|
141
|
+
1115 => :obsoleteversion,
|
142
|
+
1116 => :dirindexes,
|
143
|
+
1117 => :basenames,
|
144
|
+
1118 => :dirnames,
|
145
|
+
1119 => :origdirindexes,
|
146
|
+
1120 => :origbasenames,
|
147
|
+
1121 => :origdirnames,
|
148
|
+
1122 => :optflags,
|
149
|
+
1123 => :disturl,
|
150
|
+
1124 => :payloadformat,
|
151
|
+
1125 => :payloadcompressor,
|
152
|
+
1126 => :payloadflags,
|
153
|
+
1127 => :installcolor,
|
154
|
+
1128 => :installtid,
|
155
|
+
1129 => :removetid,
|
156
|
+
1130 => :sha1rhn,
|
157
|
+
1131 => :rhnplatform,
|
158
|
+
1132 => :platform,
|
159
|
+
1133 => :patchesname,
|
160
|
+
1134 => :patchesflags,
|
161
|
+
1135 => :patchesversion,
|
162
|
+
1136 => :cachectime,
|
163
|
+
1137 => :cachepkgpath,
|
164
|
+
1138 => :cachepkgsize,
|
165
|
+
1139 => :cachepkgmtime,
|
166
|
+
1140 => :filecolors,
|
167
|
+
1141 => :fileclass,
|
168
|
+
1142 => :classdict,
|
169
|
+
1143 => :filedependsx,
|
170
|
+
1144 => :filedependsn,
|
171
|
+
1145 => :dependsdict,
|
172
|
+
1146 => :sourcepkgid,
|
173
|
+
1147 => :filecontexts,
|
174
|
+
1148 => :fscontexts,
|
175
|
+
1149 => :recontexts,
|
176
|
+
1150 => :policies,
|
177
|
+
1151 => :pretrans,
|
178
|
+
1152 => :posttrans,
|
179
|
+
1153 => :pretransprog,
|
180
|
+
1154 => :posttransprog,
|
181
|
+
1155 => :disttag,
|
182
|
+
1156 => :suggestsname,
|
183
|
+
1157 => :suggestsversion,
|
184
|
+
1158 => :suggestsflags,
|
185
|
+
1159 => :enhancesname,
|
186
|
+
1160 => :enhancesversion,
|
187
|
+
1161 => :enhancesflags,
|
188
|
+
1162 => :priority,
|
189
|
+
1163 => :cvsid,
|
190
|
+
1164 => :blinkpkgid,
|
191
|
+
1165 => :blinkhdrid,
|
192
|
+
1166 => :blinknevra,
|
193
|
+
1167 => :flinkpkgid,
|
194
|
+
1168 => :flinkhdrid,
|
195
|
+
1169 => :flinknevra,
|
196
|
+
1170 => :packageorigin,
|
197
|
+
1171 => :triggerprein,
|
198
|
+
1172 => :buildsuggests,
|
199
|
+
1173 => :buildenhances,
|
200
|
+
1174 => :scriptstates,
|
201
|
+
1175 => :scriptmetrics,
|
202
|
+
1176 => :buildcpuclock,
|
203
|
+
1177 => :filedigestalgos,
|
204
|
+
1178 => :variants,
|
205
|
+
1179 => :xmajor,
|
206
|
+
1180 => :xminor,
|
207
|
+
1181 => :repotag,
|
208
|
+
1182 => :keywords,
|
209
|
+
1183 => :buildplatforms,
|
210
|
+
1184 => :packagecolor,
|
211
|
+
1185 => :packageprefcolor,
|
212
|
+
1186 => :xattrsdict,
|
213
|
+
1187 => :filexattrsx,
|
214
|
+
1188 => :depattrsdict,
|
215
|
+
1189 => :conflictattrsx,
|
216
|
+
1190 => :obsoleteattrsx,
|
217
|
+
1191 => :provideattrsx,
|
218
|
+
1192 => :requireattrsx,
|
219
|
+
1193 => :buildprovides,
|
220
|
+
1194 => :buildobsoletes,
|
221
|
+
1195 => :dbinstance,
|
222
|
+
1196 => :nvra,
|
223
|
+
5000 => :filenames,
|
224
|
+
5001 => :fileprovide,
|
225
|
+
5002 => :filerequire,
|
226
|
+
5003 => :fsnames,
|
227
|
+
5004 => :fssizes,
|
228
|
+
5005 => :triggerconds,
|
229
|
+
5006 => :triggertype,
|
230
|
+
5007 => :origfilenames,
|
231
|
+
5008 => :longfilesizes,
|
232
|
+
5009 => :longsize,
|
233
|
+
5010 => :filecaps,
|
234
|
+
5011 => :filedigestalgo,
|
235
|
+
5012 => :bugurl,
|
236
|
+
5013 => :evr,
|
237
|
+
5014 => :nvr,
|
238
|
+
5015 => :nevr,
|
239
|
+
5016 => :nevra,
|
240
|
+
5017 => :headercolor,
|
241
|
+
5018 => :verbose,
|
242
|
+
5019 => :epochnum,
|
243
|
+
}
|
244
|
+
|
245
|
+
# See 'rpmTagType' enum in rpmtag.h
|
246
|
+
TYPE = {
|
247
|
+
0 => :null,
|
248
|
+
1 => :char,
|
249
|
+
2 => :int8,
|
250
|
+
3 => :int16,
|
251
|
+
4 => :int32,
|
252
|
+
5 => :int64,
|
253
|
+
6 => :string,
|
254
|
+
7 => :binary,
|
255
|
+
8 => :string_array,
|
256
|
+
9 => :i18nstring,
|
257
|
+
}
|
258
|
+
|
259
|
+
def initialize(tag_id, type, offset, count, data)
|
260
|
+
@tag = tag_id
|
261
|
+
@type = type
|
262
|
+
@offset = offset
|
263
|
+
@count = count
|
264
|
+
|
265
|
+
@data = data
|
266
|
+
end # def initialize
|
267
|
+
|
268
|
+
def tag
|
269
|
+
TAG[@tag] or @tag
|
270
|
+
end # def tag
|
271
|
+
|
272
|
+
def tag_as_int
|
273
|
+
@tag
|
274
|
+
end
|
275
|
+
|
276
|
+
def type
|
277
|
+
TYPE[@type] or @type
|
278
|
+
end # def type
|
279
|
+
|
280
|
+
def value
|
281
|
+
if !@value
|
282
|
+
# TODO(sissel): Handle @count of string_array, int32, etc?
|
283
|
+
case type
|
284
|
+
when :string
|
285
|
+
# string at offset up to first null
|
286
|
+
@value = @data[@offset .. -1][/^[^\0]+/]
|
287
|
+
when :i18nstring
|
288
|
+
# string at offset up to first null
|
289
|
+
@value = @data[@offset .. -1][/^[^\0]+/]
|
290
|
+
when :string_array
|
291
|
+
@value = @data[@offset .. -1].split("\0")[0 ... @count]
|
292
|
+
when :binary
|
293
|
+
@value = @data[@offset, @count]
|
294
|
+
when :int32
|
295
|
+
@value = @data[@offset, 4 * count].unpack("N" * count)
|
296
|
+
when :int16
|
297
|
+
@value = @data[@offset, 2 * count].unpack("n" * count)
|
298
|
+
end # case type
|
299
|
+
end # if !@value
|
300
|
+
|
301
|
+
return @value
|
302
|
+
end # def value
|
303
|
+
end # class RPMFile::Tag
|
304
|
+
|
data/templates/deb.erb
CHANGED
@@ -9,9 +9,10 @@ Maintainer: <%= maintainer or "<unknown>" %>
|
|
9
9
|
if dep =~ /\(/
|
10
10
|
# nothing
|
11
11
|
else
|
12
|
+
# If the dependency is simply a name, turn it into 'name (>= 0)'
|
12
13
|
da = dep.split(/ +/)
|
13
14
|
if da.size == 1
|
14
|
-
da += ["
|
15
|
+
da += [">=", "0"]
|
15
16
|
end
|
16
17
|
dep = "#{da[0]} (#{da[1]} #{da[2]})"
|
17
18
|
end
|
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:
|
5
|
-
prerelease:
|
4
|
+
hash: 57
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 23
|
10
|
+
version: 0.2.23
|
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-05-
|
18
|
+
date: 2011-05-16 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -42,17 +42,22 @@ extensions: []
|
|
42
42
|
extra_rdoc_files: []
|
43
43
|
|
44
44
|
files:
|
45
|
+
- lib/rpm/tag.rb
|
46
|
+
- lib/rpm/namespace.rb
|
47
|
+
- lib/rpm/lead.rb
|
48
|
+
- lib/rpm/header.rb
|
49
|
+
- lib/rpm/rpmfile.rb
|
45
50
|
- lib/fpm/builder.rb
|
51
|
+
- lib/fpm/namespace.rb
|
46
52
|
- lib/fpm/source.rb
|
47
53
|
- lib/fpm/rubyfixes.rb
|
48
|
-
- lib/fpm/
|
49
|
-
- lib/fpm/target/rpm.rb
|
50
|
-
- lib/fpm/package.rb
|
51
|
-
- lib/fpm/namespace.rb
|
54
|
+
- lib/fpm/source/npm.rb
|
52
55
|
- lib/fpm/source/dir.rb
|
53
56
|
- lib/fpm/source/rpm.rb
|
54
|
-
- lib/fpm/source/npm.rb
|
55
57
|
- lib/fpm/source/gem.rb
|
58
|
+
- lib/fpm/target/deb.rb
|
59
|
+
- lib/fpm/target/rpm.rb
|
60
|
+
- lib/fpm/package.rb
|
56
61
|
- lib/fpm.rb
|
57
62
|
- bin/fpm
|
58
63
|
- bin/fpm-npm
|
@@ -89,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
94
|
requirements: []
|
90
95
|
|
91
96
|
rubyforge_project:
|
92
|
-
rubygems_version: 1.
|
97
|
+
rubygems_version: 1.6.0
|
93
98
|
signing_key:
|
94
99
|
specification_version: 3
|
95
100
|
summary: fpm - package building and mangling
|