ruby-rpm 1.3.0 → 1.3.1

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.
@@ -17,6 +17,16 @@ static ID id_fn;
17
17
  static ID id_num;
18
18
  static ID id_no;
19
19
 
20
+ /*
21
+ * Creates a new +Source+ object
22
+ * @param [String] url
23
+ * @param [Number] source number (index)
24
+ * @param [Boolean] nosource Sets the NoSource flag (default false)
25
+ *
26
+ * @example
27
+ * RPM::Source.new ('http://example.com/hoge/hoge.tar.bz2', 0)
28
+ * RPM:: Source.new ('http://example.com/fuga/fuga.tar.gz', 1, true)
29
+ */
20
30
  static VALUE
21
31
  source_initialize(int argc, VALUE* argv, VALUE src)
22
32
  {
@@ -93,12 +103,24 @@ rpm_icon_new(const char* fullname, unsigned int num, int no)
93
103
  return src;
94
104
  }
95
105
 
106
+ /*
107
+ * @return [String] Source's fullname
108
+ * @example
109
+ * src = RPM::Source.new('http://example.com/hoge/hoge.tar.bz2', 0)
110
+ * src.fullname => 'http://example.com/hoge/hoge.tar.bz2'
111
+ */
96
112
  VALUE
97
113
  rpm_source_get_fullname(VALUE src)
98
114
  {
99
115
  return rb_ivar_get(src, id_full);
100
116
  }
101
117
 
118
+ /*
119
+ * @return [String] Source's filename
120
+ * @example
121
+ * src = RPM::Source.new('http://example.com/hoge/hoge.tar.bz2', 0)
122
+ * src.filename => 'hoge.tar.bz2'
123
+ */
102
124
  VALUE
103
125
  rpm_source_get_filename(VALUE src)
104
126
  {
@@ -119,12 +141,24 @@ rpm_source_get_filename(VALUE src)
119
141
  return fn;
120
142
  }
121
143
 
144
+ /*
145
+ * @return [Number] Source's index
146
+ * @example
147
+ * src = RPM::Source.new ('http://example.com/hoge/hoge.tar.bz2', 0)
148
+ * src.num => 0
149
+ */
122
150
  VALUE
123
151
  rpm_source_get_num(VALUE src)
124
152
  {
125
153
  return rb_ivar_get(src, id_num);
126
154
  }
127
155
 
156
+ /*
157
+ * @return [Boolean] Whether the NoSource flag is set
158
+ * @example
159
+ * src = RPM::Source.new('http://example.com/hoge/hoge.tar.bz2', 0, true)
160
+ * src.no? => true
161
+ */
128
162
  VALUE
129
163
  rpm_source_is_no(VALUE src)
130
164
  {
@@ -17,6 +17,11 @@ static ID id_src;
17
17
  static ID id_pkg;
18
18
  static ID id_rest;
19
19
 
20
+ #if RPM_VERSION(5,0,0) <= RPM_VERSION_CODE
21
+ #define headerGetEntryMinMemory(hdr,tag,type,ptr,cnt) \
22
+ headerGetEntry(hdr,tag,type,(void**)ptr,cnt)
23
+ #endif
24
+
20
25
  #if RPM_VERSION_CODE < RPM_VERSION(4,1,0)
21
26
  static void
22
27
  spec_free(Spec rspec)
@@ -33,6 +38,11 @@ ts_free(rpmts ts)
33
38
 
34
39
  #endif
35
40
 
41
+ /*
42
+ * Create a spec file object from a spec file
43
+ * @param [String] filename Spec file path
44
+ * @return [Spec]
45
+ */
36
46
  static VALUE
37
47
  spec_s_open(VALUE klass, VALUE filename)
38
48
  {
@@ -59,7 +69,15 @@ spec_s_open(VALUE klass, VALUE filename)
59
69
  return Data_Wrap_Struct(klass, NULL, spec_free, rspec);
60
70
  #else
61
71
  ts = rpmtsCreate();
72
+ #if RPM_VERSION_CODE < RPM_VERSION(4,4,8)
73
+ switch (parseSpec(ts, RSTRING_PTR(filename), "/", NULL, 0, "", NULL, 1, 1)) {
74
+ #elif RPM_VERSION_CODE < RPM_VERSION(4,5,90)
75
+ switch (parseSpec(ts, RSTRING_PTR(filename), "/", 0, "", NULL, 1, 1, 0)) {
76
+ #elif RPM_VERSION_CODE < RPM_VERSION(5,0,0)
62
77
  switch (parseSpec(ts, RSTRING_PTR(filename), "/", NULL, 0, "", NULL, 1, 1)) {
78
+ #else
79
+ switch (parseSpec(ts, RSTRING_PTR(filename), "/", 0, "", NULL, 1, 1, 0)) {
80
+ #endif
63
81
  case 0:
64
82
  if (ts != NULL) {
65
83
  break;
@@ -72,27 +90,46 @@ spec_s_open(VALUE klass, VALUE filename)
72
90
  #endif
73
91
  }
74
92
 
93
+ /*
94
+ *
95
+ * Alias for Spec#open
96
+ */
75
97
  VALUE
76
98
  rpm_spec_open(const char* filename)
77
99
  {
78
100
  return spec_s_open(rpm_cSpec, rb_str_new2(filename));
79
101
  }
80
102
 
103
+ /*
104
+ * @return [String] Return Build root defined in the spec file
105
+ */
81
106
  VALUE
82
107
  rpm_spec_get_buildroot(VALUE spec)
83
108
  {
84
- #if RPM_VERSION_CODE >= RPM_VERSION(4,5,90)
109
+ #if RPM_VERSION_CODE < RPM_VERSION(4,5,90)
110
+ if (RPM_SPEC(spec)->buildRootURL) {
111
+ return rb_str_new2(RPM_SPEC(spec)->buildRootURL);
112
+ }
113
+ #elif RPM_VERSION_CODE < RPM_VERSION(4,5,90)
114
+ if (RPM_SPEC(spec)->rootURL) {
115
+ return rb_str_new2(RPM_SPEC(spec)->rootURL);
116
+ }
117
+ #elif RPM_VERSION_CODE < RPM_VERSION(5,0,0)
85
118
  if (RPM_SPEC(spec)->buildRoot) {
86
119
  return rb_str_new2(RPM_SPEC(spec)->buildRoot);
87
120
  }
88
121
  #else
89
- if (RPM_SPEC(spec)->buildRootURL) {
90
- return rb_str_new2(RPM_SPEC(spec)->buildRootURL);
91
- }
122
+ const char *buildRootURL = rpmGenPath(RPM_SPEC(spec)->rootURL, "%{?buildroot}", NULL);
123
+ VALUE result = rb_str_new2(buildRootURL);
124
+ buildRootURL = _free(buildRootURL);
125
+ return result;
92
126
  #endif
93
127
  return Qnil;
94
128
  }
95
129
 
130
+ /*
131
+ * @return [String] Return Build subdirectory defined in the spec file
132
+ */
96
133
  VALUE
97
134
  rpm_spec_get_buildsubdir(VALUE spec)
98
135
  {
@@ -102,6 +139,9 @@ rpm_spec_get_buildsubdir(VALUE spec)
102
139
  return Qnil;
103
140
  }
104
141
 
142
+ /*
143
+ * @return [Array<String>] Return Build architectures defined in the spec file
144
+ */
105
145
  VALUE
106
146
  rpm_spec_get_buildarchs(VALUE spec)
107
147
  {
@@ -119,12 +159,15 @@ rpm_spec_get_buildarchs(VALUE spec)
119
159
  return ba;
120
160
  }
121
161
 
162
+ /*
163
+ * @return [Array<RPM::Require>] Return Build requires defined in the spec file
164
+ */
122
165
  VALUE
123
166
  rpm_spec_get_buildrequires(VALUE spec)
124
167
  {
125
168
  VALUE br = rb_ivar_get(spec, id_br);
126
169
 
127
- #if RPM_VERSION_CODE < RPM_VERSION(4,6,0)
170
+ #if RPM_VERSION_CODE < RPM_VERSION(4,6,0) || RPM_VERSION_CODE >= RPM_VERSION(5,0,0)
128
171
  if (NIL_P(br)) {
129
172
  const char** names;
130
173
  const char** vers;
@@ -174,7 +217,7 @@ rpm_spec_get_buildrequires(VALUE spec)
174
217
  versiontd);
175
218
  get_entry(RPM_SPEC(spec)->buildRestrictions, RPMTAG_REQUIREFLAGS,
176
219
  flagtd);
177
-
220
+
178
221
  rpmtdInit(nametd);
179
222
  while ( rpmtdNext(nametd) != -1 ) {
180
223
  rb_ary_push(br, rpm_require_new(rpmtdGetString(nametd), rpm_version_new(rpmtdNextString(versiontd)), *rpmtdNextUint32(flagtd), spec));
@@ -191,11 +234,14 @@ rpm_spec_get_buildrequires(VALUE spec)
191
234
  #endif
192
235
  }
193
236
 
237
+ /*
238
+ * @return [Array<RPM::Conflict>] Return Build conflicts defined in the spec file
239
+ */
194
240
  VALUE
195
241
  rpm_spec_get_buildconflicts(VALUE spec)
196
242
  {
197
243
  VALUE bc = rb_ivar_get(spec, id_bc);
198
- #if RPM_VERSION_CODE < RPM_VERSION(4,6,0)
244
+ #if RPM_VERSION_CODE < RPM_VERSION(4,6,0) || RPM_VERSION_CODE >= RPM_VERSION(5,0,0)
199
245
  if (NIL_P(bc)) {
200
246
  const char** names;
201
247
  const char** vers;
@@ -237,7 +283,7 @@ rpm_spec_get_buildconflicts(VALUE spec)
237
283
  bc = rb_ary_new();
238
284
  if (!headerGet(RPM_SPEC(spec)->buildRestrictions,
239
285
  RPMTAG_CONFLICTNAME, nametd, HEADERGET_MINMEM)) {
240
-
286
+
241
287
  goto leave;
242
288
  }
243
289
 
@@ -275,6 +321,9 @@ rpm_spec_get_build_restrictions(VALUE spec)
275
321
  return cache;
276
322
  }
277
323
 
324
+ /*
325
+ * @return [Array<RPM::Source>] Sources defined in the spec file
326
+ */
278
327
  VALUE
279
328
  rpm_spec_get_sources(VALUE spec)
280
329
  {
@@ -305,6 +354,9 @@ rpm_spec_get_sources(VALUE spec)
305
354
  return src;
306
355
  }
307
356
 
357
+ /*
358
+ * @return [Array<RPM::Package>] Packages defined in the spec file
359
+ */
308
360
  VALUE
309
361
  rpm_spec_get_packages(VALUE spec)
310
362
  {
@@ -326,6 +378,16 @@ rpm_spec_get_packages(VALUE spec)
326
378
  return pkg;
327
379
  }
328
380
 
381
+ /*
382
+ * Builds the spec file
383
+ * @param [Number] flags bits to enable stages of build
384
+ * @param [Boolean] test When true, don't execute scripts or package
385
+ * @return [Number] exit code
386
+ *
387
+ * @example
388
+ * spec = RPM::Spec.open("foo.spec")
389
+ * spec.build(RPM::BUILD__UNTIL_BUILD)
390
+ */
329
391
  VALUE
330
392
  rpm_spec_build(int argc, VALUE* argv, VALUE spec)
331
393
  {
@@ -362,6 +424,16 @@ rpm_spec_build(int argc, VALUE* argv, VALUE spec)
362
424
  return INT2NUM(rc);
363
425
  }
364
426
 
427
+ /*
428
+ * Expands a macro in the spec file
429
+ * @param [String] name Name of the macro
430
+ * @return [String]
431
+ * @example
432
+ * spec.expand_macros("configure")
433
+ * => "\n CFLAGS=......."
434
+ * spec.expand_macros("_prefix")
435
+ * => "/usr"
436
+ */
365
437
  VALUE
366
438
  rpm_spec_expand_macros(VALUE spec, VALUE name)
367
439
  {
@@ -83,6 +83,24 @@ version_parse(const char* str, VALUE* v, VALUE* r, VALUE* e)
83
83
  }
84
84
  }
85
85
 
86
+ /*
87
+ * @overload new(vr, e = nil)
88
+ * Creates a version object from a string representation
89
+ * @param [String] vr version and release in the form "v-r"
90
+ * @param [Number] e epoch
91
+ * @return [Version]
92
+ * @overload new(v, r, e = nil)
93
+ * Creates a version object from a string representation
94
+ * @param [String] v version
95
+ * @param [String] r release
96
+ * @param [Number] e epoch
97
+ * @return [Version]
98
+ * @example
99
+ * RPM:: Version.new "1.0.0-3"
100
+ * RPM:: Version.new "1.04"
101
+ * RPM:: Version.new "1.0.0-3k", 1
102
+ * RPM:: Version.new "2.0.3", "5k"
103
+ */
86
104
  static VALUE
87
105
  version_initialize(int argc, VALUE* argv, VALUE ver)
88
106
  {
@@ -184,6 +202,18 @@ rpm_version_new3(const char* v, const char* r, int e)
184
202
  return ver;
185
203
  }
186
204
 
205
+ /*
206
+ * Comparison between versions
207
+ * @param [Version] other
208
+ * @return [Number] -1 if +other+ is greater than, 0 if +other+ is equal to,
209
+ * and +1 if other is less than version.
210
+ *
211
+ * @example
212
+ * v1 = RPM::Version.new("3.0-0",1)
213
+ * v2 = RPM::Version.new("3.1-0",1)
214
+ * v1 <=> v2
215
+ * => -1
216
+ */
187
217
  VALUE
188
218
  rpm_version_cmp(VALUE ver, VALUE other)
189
219
  {
@@ -233,36 +263,63 @@ rpm_version_cmp(VALUE ver, VALUE other)
233
263
  return INT2FIX(sense);
234
264
  }
235
265
 
266
+ /*
267
+ * @param [Version] other Version to compare against
268
+ * @return [Boolean] true if the version is newer than +other+
269
+ */
236
270
  VALUE
237
271
  rpm_version_is_newer(VALUE ver, VALUE other)
238
272
  {
239
273
  return (NUM2INT(rpm_version_cmp(ver, other)) > 0) ? Qtrue : Qfalse;
240
274
  }
241
275
 
276
+ /*
277
+ * @param [Version] other Version to compare against
278
+ * @return [Boolean] true if the version is older than +other+
279
+ */
242
280
  VALUE
243
281
  rpm_version_is_older(VALUE ver, VALUE other)
244
282
  {
245
283
  return rpm_version_is_newer(ver, other) ? Qfalse : Qtrue;
246
284
  }
247
285
 
286
+ /*
287
+ * Access the version component
288
+ * @return [String] version component
289
+ */
248
290
  VALUE
249
291
  rpm_version_get_v(VALUE ver)
250
292
  {
251
293
  return rb_ivar_get(ver, id_v);
252
294
  }
253
295
 
296
+ /*
297
+ * Access the release component
298
+ * @return [String] release component or nil if the
299
+ * version does not have a release component
300
+ */
254
301
  VALUE
255
302
  rpm_version_get_r(VALUE ver)
256
303
  {
257
304
  return rb_ivar_get(ver, id_r);
258
305
  }
259
306
 
307
+ /*
308
+ * Access the epoch component
309
+ * @return [Number] epoch component or nil if the
310
+ * version does not have an epoch component
311
+ */
260
312
  VALUE
261
313
  rpm_version_get_e(VALUE ver)
262
314
  {
263
315
  return rb_ivar_get(ver, id_e);
264
316
  }
265
317
 
318
+ /*
319
+ * String representation in the form "v-r"
320
+ * @return [String]
321
+ * @note The epoch is not included
322
+ */
266
323
  VALUE
267
324
  rpm_version_to_s(VALUE ver)
268
325
  {
@@ -279,6 +336,11 @@ rpm_version_to_s(VALUE ver)
279
336
  return rb_str_new2(buf);
280
337
  }
281
338
 
339
+ /*
340
+ * String representation in the form "e:v-r"
341
+ * @return [String]
342
+ * @note The epoch is included
343
+ */
282
344
  VALUE
283
345
  rpm_version_to_vre(VALUE ver)
284
346
  {
@@ -300,6 +362,10 @@ rpm_version_to_vre(VALUE ver)
300
362
  return rb_str_new2(buf);
301
363
  }
302
364
 
365
+ /*
366
+ * Inspect the version object
367
+ * @return [String] object in the form "#<RPM::Version v=V, r=R, e=E>"
368
+ */
303
369
  VALUE
304
370
  rpm_version_inspect(VALUE ver)
305
371
  {
@@ -318,6 +384,11 @@ rpm_version_inspect(VALUE ver)
318
384
  return rb_str_new2(buf);
319
385
  }
320
386
 
387
+ /*
388
+ * Hash based on the version content
389
+ * @return [String]
390
+ */
391
+
321
392
  VALUE
322
393
  rpm_version_hash(VALUE ver)
323
394
  {
data/lib/rpm.rb CHANGED
@@ -5,12 +5,34 @@
5
5
 
6
6
  ### $Id: rpm.rb 22 2004-03-29 03:42:35Z zaki $
7
7
 
8
+ require 'rbconfig'
8
9
  # native
9
- require 'rpm.so'
10
+ require "rpm.#{RbConfig::CONFIG['DLEXT']}"
10
11
  require 'rpm/version'
11
12
 
12
13
  module RPM
13
14
 
15
+ # @attr [Number] type Type of event
16
+ # @attr [Number] key Key transactions
17
+ # @attr [Package] package Package being processed
18
+ # @attr [Number] amount Progress
19
+ # @attr [Number] total Total size
20
+ class CallbackData
21
+ end
22
+
23
+ # @attr [Number] type Type of event
24
+ # @attr [Number] key Key in the transaction
25
+ # @attr [Package] package Package being processed
26
+ # @attr [Description] Description of the problem
27
+ class Problem
28
+ end
29
+
30
+ # @attr [Time] time Timestamp of the changelog entry
31
+ # @attr [String] name Name of the changelog entry
32
+ # @attr [Text] text description of the changelog entry
33
+ class Changelog
34
+ end
35
+
14
36
  def vercmp(ver1, ver2)
15
37
  unless String === ver1 and String === ver2 then
16
38
  raise TypeError, 'illegal argument type'
@@ -1,4 +1,4 @@
1
1
  module RPM
2
2
  PKG_NAME='ruby-rpm'
3
- VERSION='1.3.0'
3
+ VERSION='1.3.1'
4
4
  end