rpm 0.0.4 → 0.0.5
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.
- checksums.yaml +7 -0
- data/.travis.yml +18 -8
- data/Gemfile +7 -0
- data/README.md +342 -0
- data/Rakefile +26 -6
- data/_docker/Dockerfile.leap +4 -0
- data/_docker/Dockerfile.tumbleweed +4 -0
- data/lib/rpm/c.rb +4 -2
- data/lib/rpm/dependency.rb +2 -2
- data/lib/rpm/file.rb +9 -3
- data/lib/rpm/gem_version.rb +1 -1
- data/lib/rpm/package.rb +28 -16
- data/test/helper.rb +2 -2
- data/test/test_dependency.rb +3 -3
- data/test/test_file.rb +9 -3
- data/test/test_lib.rb +1 -1
- data/test/test_package.rb +10 -10
- data/test/test_problem.rb +2 -2
- data/test/test_rpm.rb +3 -2
- data/test/test_transaction.rb +4 -4
- data/test/test_version.rb +1 -1
- metadata +26 -21
- data/README.rdoc +0 -308
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ef796d682ecf5ae0bd191f27269a1bb167bd4411
|
4
|
+
data.tar.gz: ba843e7692331def95b92e742a36770ee9685d10
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cdfdfa2a44542aec13d3fa4c4cb1043730969355a3f849a33dc28955a8a63805b145bf44e6a710e119213626764c271bdbfaea5122a503cdc83daf14e0d1a082
|
7
|
+
data.tar.gz: c6286f572699c6815219a79e5aa6e5c7716746b2bd93a9a5cfcad7297bbecfc5530cb9497bf4539aff823b020bf8d9a393a80f7668ff9d71ad5f361ef92ea7da
|
data/.travis.yml
CHANGED
@@ -1,10 +1,20 @@
|
|
1
|
-
|
1
|
+
sudo: required
|
2
|
+
services:
|
3
|
+
- docker
|
4
|
+
|
2
5
|
before_install:
|
3
|
-
- sudo apt-
|
4
|
-
- sudo
|
5
|
-
- sudo apt-get
|
6
|
-
- sudo
|
7
|
-
|
8
|
-
-
|
9
|
-
|
6
|
+
- sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
|
7
|
+
- sudo sh -c 'echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list'
|
8
|
+
- sudo apt-get update
|
9
|
+
- sudo apt-get purge lxc-docker*
|
10
|
+
- sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" install docker-engine
|
11
|
+
- sudo sh -c "echo 'DOCKER_OPTS=\"--storage-driver=devicemapper\"' >> /etc/default/docker"
|
12
|
+
- sudo cat /etc/default/docker
|
13
|
+
- sudo service docker restart
|
14
|
+
- docker info
|
15
|
+
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y dash rake
|
16
|
+
|
17
|
+
script:
|
18
|
+
- rake docker_images
|
19
|
+
- rake docker_test
|
10
20
|
|
data/Gemfile
CHANGED
data/README.md
ADDED
@@ -0,0 +1,342 @@
|
|
1
|
+
|
2
|
+
# RPM bindings for ruby
|
3
|
+
|
4
|
+
 [](https://travis-ci.org/dmacvicar/ruby-rpm-ffi)
|
5
|
+
|
6
|
+
* http://github.com/dmacvicar/ruby-rpm-ffi
|
7
|
+
|
8
|
+
# WARNING
|
9
|
+
|
10
|
+
This is an alpha release! There is still work to be done
|
11
|
+
|
12
|
+
# Quickstart
|
13
|
+
|
14
|
+
## Working with RPM package files
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
require 'rpm'
|
18
|
+
|
19
|
+
pkg = RPM::Package.open("file.rpm")
|
20
|
+
pkg.arch => "x86_64"
|
21
|
+
|
22
|
+
pkg.files.each do |file|
|
23
|
+
puts file.path
|
24
|
+
end
|
25
|
+
|
26
|
+
pkg.changelog.each do |entry|
|
27
|
+
puts "#{entry.name} #{entry.time} #{entry.text}"
|
28
|
+
end
|
29
|
+
```
|
30
|
+
|
31
|
+
## Querying the rpm database
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
require 'rpm'
|
35
|
+
|
36
|
+
RPM.transaction do |ts|
|
37
|
+
ts.each do |pkg|
|
38
|
+
puts pkg
|
39
|
+
end
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
## Install a package
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
require 'rpm'
|
47
|
+
|
48
|
+
pkg = RPM::Package.open('foo.rpm')
|
49
|
+
|
50
|
+
RPM.transaction(rootdir) do |t|
|
51
|
+
t.install(pkg, 'foo.rpm')
|
52
|
+
t.commit
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
## Introduction
|
57
|
+
|
58
|
+
This library is a replacement for the ruby-rpm gem, originally
|
59
|
+
writen by Kenta Murata around 2002 for the Kondara distribution. Later
|
60
|
+
mantained by David Lutterkort and myself.
|
61
|
+
|
62
|
+
Why?
|
63
|
+
|
64
|
+
* The original gem supports ancient rpm versions not in use anymore
|
65
|
+
* The original gem was written in C using MRI API
|
66
|
+
* The #ifdef'ing required to support multiple rpm versions made the code
|
67
|
+
hard to maintain
|
68
|
+
|
69
|
+
This gem:
|
70
|
+
|
71
|
+
* Is pure ruby
|
72
|
+
* Is documented
|
73
|
+
* Has as a goal to support only the latest rpm version plus the ones in
|
74
|
+
use some releases back in popular rpm based distros
|
75
|
+
* Uses FFI, so it should work with other interpreters
|
76
|
+
(Because https://github.com/rubinius/rubinius/issues/682 it currently does
|
77
|
+
not work on Rubinius)
|
78
|
+
* Does not target rpm5, but it may support it someday
|
79
|
+
|
80
|
+
As an example the code that implements RPM::Package was reduced
|
81
|
+
from 1130 lines of code to 320.
|
82
|
+
|
83
|
+
# Architecture
|
84
|
+
|
85
|
+
The gem is divided in two modules:
|
86
|
+
|
87
|
+
* RPM::C:: which contains the 1:1 mapping to the librpm API
|
88
|
+
Not all functions are attached, only the ones we actually use.
|
89
|
+
* RPM:: contains the actual higher level API
|
90
|
+
|
91
|
+
# Status, Compatibility and Differences with ruby-rpm
|
92
|
+
|
93
|
+
* Tested rpm 4.9 only
|
94
|
+
* You can use symbols: instead of RPM::TAG_DESCRIPTION you
|
95
|
+
can use just :description. 'rpm/compat' is by default loaded
|
96
|
+
and provides compatibility with the RPM::TAG_* style constants
|
97
|
+
* RPM::DB is not supported. Use RPM::Transaction
|
98
|
+
* Spec and Source classes are not implemented yet
|
99
|
+
|
100
|
+
## TESTING
|
101
|
+
|
102
|
+
Unit tests can be run using the `rake test` command.
|
103
|
+
|
104
|
+
### Docker tests
|
105
|
+
|
106
|
+
In order to not damage your system, you can run the testsuite under docker:
|
107
|
+
|
108
|
+
* Build the docker images:
|
109
|
+
|
110
|
+
```console
|
111
|
+
rake docker_images
|
112
|
+
```
|
113
|
+
|
114
|
+
* Run the testsuite under Docker
|
115
|
+
|
116
|
+
```console
|
117
|
+
rake docker_test
|
118
|
+
```
|
119
|
+
|
120
|
+
## TODO
|
121
|
+
|
122
|
+
* Check Package#signature should return String?
|
123
|
+
=> ruby-rpm seems to return symbol
|
124
|
+
* Food for thought: Package dependencies and changelog
|
125
|
+
methods could just use []. Calling headerGet directly saves
|
126
|
+
us from doing one iteration per attribute
|
127
|
+
* Not sure if Spec can be implemented as it was before with
|
128
|
+
newer rpms.
|
129
|
+
|
130
|
+
## API Checklist and TODO
|
131
|
+
|
132
|
+
### RPM
|
133
|
+
|
134
|
+
- [ ] RPM#expand
|
135
|
+
- [X] RPM#[]
|
136
|
+
- [X] RPM#[]=
|
137
|
+
- [ ] RPM#readrc
|
138
|
+
- [ ] RPM#init_macros
|
139
|
+
- [ ] RPM#verbosity
|
140
|
+
- [ ] RPM#verbosity=
|
141
|
+
|
142
|
+
### RPM::Package
|
143
|
+
|
144
|
+
- [X] Package#open
|
145
|
+
- [X] Package#new
|
146
|
+
- [X] Package#create
|
147
|
+
- [ ] Package#load
|
148
|
+
- [ ] Package#clear_cache
|
149
|
+
- [ ] Package#use_cache
|
150
|
+
- [X] Package#[]
|
151
|
+
- [ ] Package#delete_tag
|
152
|
+
- [X] Package#sprintf
|
153
|
+
[?] Package#signature
|
154
|
+
- [X] Package#arch
|
155
|
+
- [X] Package#name
|
156
|
+
- [X] Package#version
|
157
|
+
- [X] Package#files
|
158
|
+
- [X] Package#provides
|
159
|
+
- [X] Package#requires
|
160
|
+
- [X] Package#conflicts
|
161
|
+
- [X] Package#obsoletes
|
162
|
+
- [X] Package#changelog
|
163
|
+
- [ ] Package#add_dependency
|
164
|
+
- [ ] Package#add_string
|
165
|
+
- [ ] Package#add_string_array
|
166
|
+
- [ ] Package#add_int32
|
167
|
+
- [ ] Package#dump
|
168
|
+
- [X] Package#to_s
|
169
|
+
- [ ] Package#inspect
|
170
|
+
- [ ] Package#copy_to
|
171
|
+
|
172
|
+
### RPM::Dependency
|
173
|
+
|
174
|
+
- [X] Dependency#initialize
|
175
|
+
- [X] Dependency#name
|
176
|
+
- [X] Dependency#version
|
177
|
+
- [X] Dependency#flags
|
178
|
+
- [X] Dependency#owner
|
179
|
+
- [X] Dependency#lt?
|
180
|
+
- [X] Dependency#gt?
|
181
|
+
- [X] Dependency#eq?
|
182
|
+
- [X] Dependency#le?
|
183
|
+
- [X] Dependency#ge?
|
184
|
+
- [X] Dependency#satisfy?
|
185
|
+
- [X] Dependency#nametag
|
186
|
+
- [X] Dependency#versiontag
|
187
|
+
- [X] Dependency#flagstag
|
188
|
+
|
189
|
+
### RPM::Provide
|
190
|
+
|
191
|
+
- [X] Provide#initialize
|
192
|
+
|
193
|
+
### RPM::Require
|
194
|
+
|
195
|
+
- [X] Require#initialize
|
196
|
+
- [ ] Require#pre?
|
197
|
+
|
198
|
+
### RPM::Conflict
|
199
|
+
|
200
|
+
- [X] Conflict#initialize
|
201
|
+
|
202
|
+
### RPM::Obsolete
|
203
|
+
|
204
|
+
- [X] Obsolete#initialize
|
205
|
+
|
206
|
+
### RPM::ChangeLog
|
207
|
+
|
208
|
+
- [X] ChangeLog#time
|
209
|
+
- [X] ChangeLog#name
|
210
|
+
- [X] ChangeLog#text
|
211
|
+
|
212
|
+
### RPM::Version
|
213
|
+
|
214
|
+
- [X] Version (Comparable)
|
215
|
+
- [X] Version#initialize
|
216
|
+
- [X] Version#<=>
|
217
|
+
- [X] Version#newer?
|
218
|
+
- [X] Version#older?
|
219
|
+
- [X] Version#v
|
220
|
+
- [X] Version#r
|
221
|
+
- [X] Version#e
|
222
|
+
- [X] Version#to_s
|
223
|
+
- [X] Version#to_vre
|
224
|
+
- [X] Version#inspect
|
225
|
+
- [X] Version#hash
|
226
|
+
|
227
|
+
### RPM::File
|
228
|
+
|
229
|
+
- [X] File#initialize
|
230
|
+
- [X] File#path
|
231
|
+
- [ ] File#to_s (alias path)
|
232
|
+
- [X] File#md5sum
|
233
|
+
- [X] File#link_to
|
234
|
+
- [X] File#size
|
235
|
+
- [X] File#mtime
|
236
|
+
- [X] File#owner
|
237
|
+
- [X] File#group
|
238
|
+
- [X] File#rdev
|
239
|
+
- [X] File#mode
|
240
|
+
- [X] File#attr
|
241
|
+
- [X] File#state
|
242
|
+
- [X] File#symlink?
|
243
|
+
- [X] File#config?
|
244
|
+
- [X] File#doc?
|
245
|
+
- [X] File#donotuse?
|
246
|
+
- [X] File#missingok?
|
247
|
+
- [X] File#specfile?
|
248
|
+
- [X] File#ghost?
|
249
|
+
- [X] File#license?
|
250
|
+
- [X] File#readme?
|
251
|
+
- [X] File#exclude?
|
252
|
+
- [X] File#replaced?
|
253
|
+
- [X] File#notinstalled?
|
254
|
+
- [X] File#netshared?
|
255
|
+
|
256
|
+
### RPM::DB
|
257
|
+
|
258
|
+
- [ ] DB (Enumerable)
|
259
|
+
- [ ] DB#new
|
260
|
+
- [ ] DB#open
|
261
|
+
- [ ] DB#init
|
262
|
+
- [ ] DB#rebuild
|
263
|
+
- [ ] DB#close
|
264
|
+
- [ ] DB#closed?
|
265
|
+
- [ ] DB#root
|
266
|
+
- [ ] DB#home
|
267
|
+
- [ ] DB#writable?
|
268
|
+
- [ ] DB#each_match
|
269
|
+
- [ ] DB#each
|
270
|
+
- [ ] DB#transaction
|
271
|
+
- [ ] DB#init_iterator
|
272
|
+
- [ ] DB#dup
|
273
|
+
- [ ] DB#clone
|
274
|
+
|
275
|
+
### RPM::MatchIterator
|
276
|
+
|
277
|
+
- [X] MatchIterator (Enumerable)
|
278
|
+
- [X] MatchIterator#each
|
279
|
+
- [X] MatchIterator#next_iterator
|
280
|
+
- [X] MatchIterator#offset
|
281
|
+
- [X] MatchIterator#set_iterator_re
|
282
|
+
- [X] MatchIterator#regexp
|
283
|
+
- [X] MatchIterator#set_iterator_version
|
284
|
+
- [X] MatchIterator#version
|
285
|
+
- [X] MatchIterator#get_iterator_count
|
286
|
+
- [X] MatchIterator#length
|
287
|
+
|
288
|
+
### RPM::Transaction
|
289
|
+
|
290
|
+
- [ ] Transaction#db
|
291
|
+
- [ ] Transaction#script_file
|
292
|
+
- [ ] Transaction#script_file=
|
293
|
+
- [ ] Transaction#install
|
294
|
+
- [ ] Transaction#upgrade
|
295
|
+
- [ ] Transaction#available
|
296
|
+
- [ ] Transaction#delete
|
297
|
+
- [ ] Transaction#check
|
298
|
+
- [ ] Transaction#order
|
299
|
+
- [ ] Transaction#keys
|
300
|
+
- [ ] Transaction#commit
|
301
|
+
- [ ] Transaction#abort
|
302
|
+
- [ ] Transaction#dup
|
303
|
+
- [ ] Transaction#clone
|
304
|
+
|
305
|
+
### RPM::Source
|
306
|
+
|
307
|
+
- [ ] Source#initialize
|
308
|
+
- [ ] Source#fullname
|
309
|
+
- [ ] Source#to_s (alias fullname)
|
310
|
+
- [ ] Source#num
|
311
|
+
- [ ] Source#no?
|
312
|
+
|
313
|
+
### RPM::Patch
|
314
|
+
|
315
|
+
### RPM::Icon
|
316
|
+
|
317
|
+
### RPM::Spec
|
318
|
+
|
319
|
+
- [ ] Spec#open
|
320
|
+
- [ ] Spec#new
|
321
|
+
- [ ] Spec#buildroot
|
322
|
+
- [ ] Spec#buildsubdir
|
323
|
+
- [ ] Spec#buildarchs
|
324
|
+
- [ ] Spec#buildrequires
|
325
|
+
- [ ] Spec#build_restrictions
|
326
|
+
- [ ] Spec#sources
|
327
|
+
- [ ] Spec#packages
|
328
|
+
- [ ] Spec#build
|
329
|
+
- [ ] Spec#expand_macros
|
330
|
+
- [ ] Spec#dup
|
331
|
+
- [ ] Spec#clone
|
332
|
+
|
333
|
+
# LICENSE
|
334
|
+
|
335
|
+
* Copyright © 2011 Duncan Mac-Vicar Prett <dmacvicar@suse.de>
|
336
|
+
* Copyright © 2011 SUSE Linux Products GmbH
|
337
|
+
|
338
|
+
* This gem is a pure-ruby rewrite of ruby-rpm:
|
339
|
+
Copyright © 2002 Kenta Murata. Relicensed with his permission.
|
340
|
+
|
341
|
+
Licensed under the MIT license. See MIT-LICENSE for details.
|
342
|
+
|
data/Rakefile
CHANGED
@@ -23,10 +23,30 @@ begin
|
|
23
23
|
end
|
24
24
|
rescue LoadError
|
25
25
|
STDERR.puts "Install yard if you want prettier docs"
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
26
|
+
begin
|
27
|
+
require 'rdoc/task'
|
28
|
+
Rake::RDocTask.new(:doc) do |rdoc|
|
29
|
+
rdoc.rdoc_dir = "doc"
|
30
|
+
rdoc.title = "rpm for Ruby #{RPM::GEM_VERSION}"
|
31
|
+
extra_docs.each { |ex| rdoc.rdoc_files.include ex }
|
32
|
+
end
|
33
|
+
rescue LoadError
|
34
|
+
STDERR.puts "rdoc not available"
|
31
35
|
end
|
32
|
-
end
|
36
|
+
end
|
37
|
+
|
38
|
+
task :docker_images do
|
39
|
+
Dir.chdir('_docker') do
|
40
|
+
Dir.glob('Dockerfile.*').each do |dockerfile|
|
41
|
+
tag = 'ruby-rpm-ffi:' + File.extname(dockerfile).delete('.')
|
42
|
+
sh %(docker build -f #{dockerfile} -t #{tag} .)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
task :docker_test do
|
48
|
+
Dir.glob('_docker/Dockerfile.*').each do |dockerfile|
|
49
|
+
tag = 'ruby-rpm-ffi:' + File.extname(dockerfile).delete('.')
|
50
|
+
sh %(docker run -ti -v #{Dir.pwd}:/src #{tag} rake test)
|
51
|
+
end
|
52
|
+
end
|
data/lib/rpm/c.rb
CHANGED
@@ -7,7 +7,9 @@ module RPM
|
|
7
7
|
extend ::FFI::Library
|
8
8
|
|
9
9
|
begin
|
10
|
-
ffi_lib ['rpm',
|
10
|
+
ffi_lib ['rpm',
|
11
|
+
'librpm.so.7', # fedora 23
|
12
|
+
'librpm.so.3', 'librpm.so.2', 'librpm.so.1']
|
11
13
|
rescue LoadError => e
|
12
14
|
raise(
|
13
15
|
"Can't find rpm libs on your system: #{e.message}"
|
@@ -44,4 +46,4 @@ module RPM
|
|
44
46
|
end
|
45
47
|
|
46
48
|
end
|
47
|
-
end
|
49
|
+
end
|
data/lib/rpm/dependency.rb
CHANGED
@@ -70,12 +70,12 @@ module RPM
|
|
70
70
|
|
71
71
|
# @return [Boolean] true if '=<' is used to compare the version
|
72
72
|
def le?
|
73
|
-
(flags & RPM::SENSE[:less]) && (flags &
|
73
|
+
(flags & RPM::SENSE[:less]) && (flags & RPM::SENSE[:equal])
|
74
74
|
end
|
75
75
|
|
76
76
|
# @return [Boolean] true if '>=' is used to compare the version
|
77
77
|
def ge?
|
78
|
-
(flags & RPM::SENSE[:greater]) && (flags &
|
78
|
+
(flags & RPM::SENSE[:greater]) && (flags & RPM::SENSE[:equal])
|
79
79
|
end
|
80
80
|
|
81
81
|
# @return [Boolean] true if this is a pre-requires
|
data/lib/rpm/file.rb
CHANGED
@@ -43,8 +43,11 @@ module RPM
|
|
43
43
|
end
|
44
44
|
|
45
45
|
# @return [Boolean] True if the file is marked as do not use
|
46
|
+
# @deprecated RPMFILE_DONOTUSE was removed in recent versions of RPM.
|
46
47
|
def donotuse?
|
47
|
-
|
48
|
+
msg = "RPMFILE_DONOTUSE was removed in recent versions of RPM."
|
49
|
+
warn "#{Kernel.caller.first} #{msg}"
|
50
|
+
raise NotImplementedError
|
48
51
|
end
|
49
52
|
|
50
53
|
# @return [Boolean] True if the file is marked that can be missing on disk
|
@@ -91,9 +94,12 @@ module RPM
|
|
91
94
|
! (@attr & RPM::C::FileAttrs[:readme]).zero?
|
92
95
|
end
|
93
96
|
|
94
|
-
# @
|
97
|
+
# @raise NotImplementedError
|
98
|
+
# @deprecated RPMFILE_EXCLUDE was removed in recent versions of RPM.
|
95
99
|
def exclude?
|
96
|
-
|
100
|
+
msg = "RPMFILE_EXCLUDE was removed in recent versions of RPM."
|
101
|
+
warn "#{Kernel.caller.first} #{msg}"
|
102
|
+
raise NotImplementedError
|
97
103
|
end
|
98
104
|
|
99
105
|
# @return [Boolean] True if the file is replaced during installation
|
data/lib/rpm/gem_version.rb
CHANGED
data/lib/rpm/package.rb
CHANGED
@@ -291,21 +291,7 @@ module RPM
|
|
291
291
|
end
|
292
292
|
|
293
293
|
def self.open(filename)
|
294
|
-
|
295
|
-
hdr = ::FFI::MemoryPointer.new(:pointer)
|
296
|
-
fd = nil
|
297
|
-
begin
|
298
|
-
fd = RPM::C.Fopen(filename, 'r')
|
299
|
-
if RPM::C.Ferror(fd) != 0
|
300
|
-
raise "#{filename} : #{RPM::C.Fstrerror(fd)}"
|
301
|
-
end
|
302
|
-
RPM.transaction do |ts|
|
303
|
-
rc = RPM::C.rpmReadPackageFile(ts.ptr, fd, filename, hdr)
|
304
|
-
end
|
305
|
-
ensure
|
306
|
-
RPM::C.Fclose(fd) unless fd.nil?
|
307
|
-
end
|
308
|
-
Package.new(hdr.get_pointer(0))
|
294
|
+
Package.new(filename)
|
309
295
|
end
|
310
296
|
|
311
297
|
# @visibility private
|
@@ -319,7 +305,15 @@ module RPM
|
|
319
305
|
end
|
320
306
|
|
321
307
|
# @visibility private
|
322
|
-
def initialize(
|
308
|
+
def initialize(what)
|
309
|
+
case what
|
310
|
+
when String then initialize_from_filename(what)
|
311
|
+
else initialize_from_header(what)
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
# @visibility private
|
316
|
+
def initialize_from_header(hdr=nil)
|
323
317
|
if hdr.nil?
|
324
318
|
@hdr = ::FFI::AutoPointer.new(RPM::C.headerNew, Header.method(:release))
|
325
319
|
elsif hdr.is_a?(::FFI::Pointer)
|
@@ -331,6 +325,24 @@ module RPM
|
|
331
325
|
end
|
332
326
|
end
|
333
327
|
|
328
|
+
def initialize_from_filename(filename)
|
329
|
+
# it sucks not using the std File.open here
|
330
|
+
hdr = ::FFI::MemoryPointer.new(:pointer)
|
331
|
+
fd = nil
|
332
|
+
begin
|
333
|
+
fd = RPM::C.Fopen(filename, 'r')
|
334
|
+
if RPM::C.Ferror(fd) != 0
|
335
|
+
raise "#{filename} : #{RPM::C.Fstrerror(fd)}"
|
336
|
+
end
|
337
|
+
RPM.transaction do |ts|
|
338
|
+
rc = RPM::C.rpmReadPackageFile(ts.ptr, fd, filename, hdr)
|
339
|
+
end
|
340
|
+
ensure
|
341
|
+
RPM::C.Fclose(fd) unless fd.nil?
|
342
|
+
end
|
343
|
+
initialize_from_header(hdr.get_pointer(0))
|
344
|
+
end
|
345
|
+
|
334
346
|
# @return [RPM::C::Header] header pointer
|
335
347
|
# @visibility private
|
336
348
|
def ptr
|
data/test/helper.rb
CHANGED
data/test/test_dependency.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require_relative('helper')
|
2
2
|
require 'rpm/compat'
|
3
3
|
|
4
|
-
class
|
5
|
-
|
4
|
+
class RPMDependencyTests < MiniTest::Unit::TestCase
|
5
|
+
|
6
6
|
EQ = RPM::SENSE_EQUAL
|
7
7
|
LT = RPM::SENSE_LESS
|
8
8
|
GT = RPM::SENSE_GREATER
|
@@ -12,7 +12,7 @@ class RPM_Dependency_Tests < Test::Unit::TestCase
|
|
12
12
|
req = requires("foo", "1", "1", 0, EQ|GT)
|
13
13
|
assert(req.satisfy?(prv))
|
14
14
|
assert(prv.satisfy?(req))
|
15
|
-
|
15
|
+
|
16
16
|
# Different names don't overlap
|
17
17
|
prv = provides("foo", "2", "1", 0, EQ)
|
18
18
|
req = requires("bar", "1", "1", 0, EQ|GT)
|
data/test/test_file.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
|
-
class
|
3
|
+
class RPMFileTests < MiniTest::Unit::TestCase
|
4
4
|
def test_link_to
|
5
5
|
f = RPM::File.new("path", "md5sum", nil, 42, 1,
|
6
6
|
"owner", "group", 43, 0777, 44, 45)
|
@@ -15,17 +15,23 @@ class RPM_File_Tests < Test::Unit::TestCase
|
|
15
15
|
"owner", "group", 43, 0777, 44, 45)
|
16
16
|
f.config?
|
17
17
|
f.doc?
|
18
|
-
f.donotuse?
|
19
18
|
f.is_missingok?
|
20
19
|
f.is_noreplace?
|
21
20
|
f.is_specfile?
|
22
21
|
f.ghost?
|
23
22
|
f.license?
|
24
23
|
f.readme?
|
25
|
-
f.exclude?
|
26
24
|
f.replaced?
|
27
25
|
f.notinstalled?
|
28
26
|
f.netshared?
|
27
|
+
|
28
|
+
assert_raises NotImplementedError do
|
29
|
+
f.exclude?
|
30
|
+
end
|
31
|
+
|
32
|
+
assert_raises NotImplementedError do
|
33
|
+
f.donotuse?
|
34
|
+
end
|
29
35
|
end
|
30
36
|
|
31
37
|
|
data/test/test_lib.rb
CHANGED
data/test/test_package.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
|
-
class
|
3
|
+
class RPMHeaderTests < MiniTest::Unit::TestCase
|
4
4
|
|
5
5
|
def test_create
|
6
6
|
|
@@ -10,9 +10,9 @@ class RPM_Header_Tests < Test::Unit::TestCase
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_open
|
13
|
-
|
13
|
+
|
14
14
|
pkg = RPM::Package.open(fixture('simple-1.0-0.i586.rpm'))
|
15
|
-
|
15
|
+
|
16
16
|
req = RPM::Require.new("simple", RPM::Version.new("1.0", "0"), RPM::SENSE_GREATER|RPM::SENSE_EQUAL, nil)
|
17
17
|
assert req.satisfy?(pkg)
|
18
18
|
|
@@ -26,18 +26,18 @@ class RPM_Header_Tests < Test::Unit::TestCase
|
|
26
26
|
assert_kind_of RPM::Version, pkg.version
|
27
27
|
assert_equal '1.0-0', pkg.version.to_s
|
28
28
|
|
29
|
-
backup_lang = ENV['
|
29
|
+
backup_lang = ENV['LC_ALL']
|
30
30
|
|
31
|
-
ENV['
|
31
|
+
ENV['LC_ALL'] = 'C'
|
32
32
|
assert_equal 'Simple dummy package', pkg[:summary]
|
33
33
|
assert_equal 'Dummy package', pkg[:description]
|
34
|
-
|
35
|
-
ENV['
|
34
|
+
|
35
|
+
ENV['LC_ALL'] = 'es_ES.UTF-8'
|
36
36
|
assert_equal 'Paquete simple de muestra', pkg[:summary]
|
37
37
|
assert_equal 'Paquete de muestra', pkg[:description]
|
38
38
|
|
39
|
-
ENV['
|
40
|
-
|
39
|
+
ENV['LC_ALL'] = backup_lang
|
40
|
+
|
41
41
|
# Arrays
|
42
42
|
assert_equal ["root", "root"], pkg[:fileusername]
|
43
43
|
assert_equal [6, 5], pkg[:filesizes]
|
@@ -68,7 +68,7 @@ class RPM_Header_Tests < Test::Unit::TestCase
|
|
68
68
|
|
69
69
|
assert pkg.requires.map(&:name).include?("a")
|
70
70
|
b = pkg.requires.find {|x| x.name == 'b'}
|
71
|
-
|
71
|
+
assert b
|
72
72
|
assert_equal '1.0', b.version.to_s
|
73
73
|
|
74
74
|
assert pkg.conflicts.map(&:name).include?('c')
|
data/test/test_problem.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
|
-
class
|
3
|
+
class RPMHeaderTests < MiniTest::Unit::TestCase
|
4
4
|
|
5
5
|
def test_create
|
6
6
|
problem = RPM::Problem.create(:requires, "foo-1.0-0", "foo.rpm", "bar-1.0-0", "Hello", 1)
|
@@ -15,6 +15,6 @@ class RPM_Header_Tests < Test::Unit::TestCase
|
|
15
15
|
assert_equal problem.type, problem2.type
|
16
16
|
assert_equal problem.str, problem2.str
|
17
17
|
assert_equal problem.to_s, problem2.to_s
|
18
|
-
|
18
|
+
|
19
19
|
end
|
20
20
|
end
|
data/test/test_rpm.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
|
-
class
|
3
|
+
class RPMRPMTests < MiniTest::Unit::TestCase
|
4
4
|
|
5
5
|
def test_enum
|
6
6
|
assert RPM::TAG[:not_found]
|
@@ -11,7 +11,8 @@ class RPM_RPM_Tests < Test::Unit::TestCase
|
|
11
11
|
#assert_raise(NameError) { RPM::LOG_ALERT }
|
12
12
|
|
13
13
|
#require 'rpm/compat'
|
14
|
-
|
14
|
+
# Nothing should be raised by the following statement
|
15
|
+
RPM::LOG_ALERT
|
15
16
|
assert_equal RPM::LOG_ALERT, RPM::LOG[:alert]
|
16
17
|
end
|
17
18
|
|
data/test/test_transaction.rb
CHANGED
@@ -2,7 +2,7 @@ require_relative('helper')
|
|
2
2
|
require 'tmpdir'
|
3
3
|
require 'pathname'
|
4
4
|
|
5
|
-
class
|
5
|
+
class RPMTransactionTests < MiniTest::Unit::TestCase
|
6
6
|
|
7
7
|
PACKAGE_FILENAME = 'simple-1.0-0.i586.rpm'
|
8
8
|
|
@@ -68,7 +68,7 @@ class RPM_Transaction_Tests < Test::Unit::TestCase
|
|
68
68
|
t.install(pkg, fixture(filename))
|
69
69
|
t.commit
|
70
70
|
|
71
|
-
assert File.exist?(File.join(dir, '
|
71
|
+
assert File.exist?(File.join(dir, RPM['_dbpath'], 'Packages')),
|
72
72
|
"rpm db exists"
|
73
73
|
|
74
74
|
assert !File.exist?('/usr/share/simple/README'),
|
@@ -86,7 +86,7 @@ class RPM_Transaction_Tests < Test::Unit::TestCase
|
|
86
86
|
t.install(pkg, fixture(PACKAGE_FILENAME))
|
87
87
|
t.commit
|
88
88
|
|
89
|
-
assert File.exist?(File.join(dir, '
|
89
|
+
assert File.exist?(File.join(dir, RPM['_dbpath'], 'Packages')),
|
90
90
|
"rpm db exists"
|
91
91
|
|
92
92
|
assert File.exist?(File.join(dir, '/usr/share/simple/README')),
|
@@ -101,7 +101,7 @@ class RPM_Transaction_Tests < Test::Unit::TestCase
|
|
101
101
|
RPM.transaction(dir) do |t|
|
102
102
|
begin
|
103
103
|
|
104
|
-
|
104
|
+
assert_raises TypeError do
|
105
105
|
t.delete(Object.new)
|
106
106
|
end
|
107
107
|
|
data/test/test_version.rb
CHANGED
metadata
CHANGED
@@ -1,38 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rpm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.5
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Duncan Mac-Vicar P.
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-07-09 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: ffi
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - ">="
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
36
41
|
description: Ruby bindings for rpm. Almost a drop-in replacement for ruby-rpm. Uses
|
37
42
|
FFI.
|
38
43
|
email:
|
@@ -41,13 +46,15 @@ executables: []
|
|
41
46
|
extensions: []
|
42
47
|
extra_rdoc_files: []
|
43
48
|
files:
|
44
|
-
- .gitignore
|
45
|
-
- .travis.yml
|
49
|
+
- ".gitignore"
|
50
|
+
- ".travis.yml"
|
46
51
|
- ChangeLog
|
47
52
|
- Gemfile
|
48
53
|
- MIT-LICENSE
|
49
|
-
- README.
|
54
|
+
- README.md
|
50
55
|
- Rakefile
|
56
|
+
- _docker/Dockerfile.leap
|
57
|
+
- _docker/Dockerfile.tumbleweed
|
51
58
|
- lib/rpm.rb
|
52
59
|
- lib/rpm/c.rb
|
53
60
|
- lib/rpm/c/header.rb
|
@@ -94,27 +101,26 @@ files:
|
|
94
101
|
- test/test_version.rb
|
95
102
|
homepage: ''
|
96
103
|
licenses: []
|
104
|
+
metadata: {}
|
97
105
|
post_install_message:
|
98
106
|
rdoc_options: []
|
99
107
|
require_paths:
|
100
108
|
- lib
|
101
109
|
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
110
|
requirements:
|
104
|
-
- -
|
111
|
+
- - ">="
|
105
112
|
- !ruby/object:Gem::Version
|
106
113
|
version: '0'
|
107
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
115
|
requirements:
|
110
|
-
- -
|
116
|
+
- - ">="
|
111
117
|
- !ruby/object:Gem::Version
|
112
118
|
version: '0'
|
113
119
|
requirements: []
|
114
120
|
rubyforge_project: rpm
|
115
|
-
rubygems_version:
|
121
|
+
rubygems_version: 2.5.1
|
116
122
|
signing_key:
|
117
|
-
specification_version:
|
123
|
+
specification_version: 4
|
118
124
|
summary: Ruby bindings for rpm (package manager)
|
119
125
|
test_files:
|
120
126
|
- test/data/a.spec
|
@@ -131,4 +137,3 @@ test_files:
|
|
131
137
|
- test/test_rpm.rb
|
132
138
|
- test/test_transaction.rb
|
133
139
|
- test/test_version.rb
|
134
|
-
has_rdoc:
|
data/README.rdoc
DELETED
@@ -1,308 +0,0 @@
|
|
1
|
-
|
2
|
-
= RPM bindings for ruby
|
3
|
-
|
4
|
-
* http://github.com/dmacvicar/ruby-rpm
|
5
|
-
|
6
|
-
= WARNING
|
7
|
-
|
8
|
-
This is an alpha release! There is still work to be done
|
9
|
-
|
10
|
-
= Quickstart
|
11
|
-
|
12
|
-
== Working with RPM package files
|
13
|
-
|
14
|
-
require 'rpm'
|
15
|
-
|
16
|
-
pkg = RPM::Package.open("file.rpm")
|
17
|
-
pkg.arch => "x86_64"
|
18
|
-
|
19
|
-
pkg.files.each do |file|
|
20
|
-
puts file.path
|
21
|
-
end
|
22
|
-
|
23
|
-
pkg.changelog.each do |entry|
|
24
|
-
puts "#{entry.name} #{entry.time} #{entry.text}"
|
25
|
-
end
|
26
|
-
|
27
|
-
== Querying the rpm database
|
28
|
-
|
29
|
-
require 'rpm'
|
30
|
-
|
31
|
-
RPM.transaction do |ts|
|
32
|
-
ts.each do |pkg|
|
33
|
-
puts pkg
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
== Install a package
|
38
|
-
|
39
|
-
require 'rpm'
|
40
|
-
pkg = RPM::Package.open('foo.rpm')
|
41
|
-
|
42
|
-
RPM.transaction(rootdir) do |t|
|
43
|
-
t.install(pkg, 'foo.rpm')
|
44
|
-
t.commit
|
45
|
-
end
|
46
|
-
|
47
|
-
= Introduction
|
48
|
-
|
49
|
-
This library is a replacement for the ruby-rpm gem, originally
|
50
|
-
writen by Kenta Murata around 2002 for the Kondara distribution. Later
|
51
|
-
mantained by David Lutterkort and myself.
|
52
|
-
|
53
|
-
Why?
|
54
|
-
|
55
|
-
* The original gem supports ancient rpm versions not in use anymore
|
56
|
-
* The original gem was written in C using MRI API
|
57
|
-
* The #ifdef'ing required to support multiple rpm versions made the code
|
58
|
-
hard to maintain
|
59
|
-
|
60
|
-
This gem:
|
61
|
-
|
62
|
-
* Is pure ruby
|
63
|
-
* Is documented
|
64
|
-
* Has as a goal to support only the latest rpm version plus the ones in
|
65
|
-
use some releases back in popular rpm based distros
|
66
|
-
* Uses FFI, so it should work with other interpreters
|
67
|
-
(Because https://github.com/rubinius/rubinius/issues/682 it currently does
|
68
|
-
not work on Rubinius)
|
69
|
-
* Does not target rpm5, but it may support it someday
|
70
|
-
|
71
|
-
As an example the code that implements RPM::Package was reduced
|
72
|
-
from 1130 lines of code to 320.
|
73
|
-
|
74
|
-
= Architecture
|
75
|
-
|
76
|
-
The gem is divided in two modules:
|
77
|
-
|
78
|
-
* RPM::C:: which contains the 1:1 mapping to the librpm API
|
79
|
-
Not all functions are attached, only the ones we actually use.
|
80
|
-
* RPM:: contains the actual higher level API
|
81
|
-
|
82
|
-
= Status, Compatibility and Differences with ruby-rpm
|
83
|
-
|
84
|
-
* Tested rpm 4.9 only
|
85
|
-
* You can use symbols: instead of RPM::TAG_DESCRIPTION you
|
86
|
-
can use just :description. 'rpm/compat' is by default loaded
|
87
|
-
and provides compatibility with the RPM::TAG_* style constants
|
88
|
-
* RPM::DB is not supported. Use RPM::Transaction
|
89
|
-
* Spec and Source classes are not implemented yet
|
90
|
-
|
91
|
-
== API Checklist and TODO
|
92
|
-
|
93
|
-
* RPM
|
94
|
-
|
95
|
-
[ ] RPM#expand
|
96
|
-
[X] RPM#[]
|
97
|
-
[X] RPM#[]=
|
98
|
-
[ ] RPM#readrc
|
99
|
-
[ ] RPM#init_macros
|
100
|
-
[ ] RPM#verbosity
|
101
|
-
[ ] RPM#verbosity=
|
102
|
-
|
103
|
-
* RPM::Package
|
104
|
-
|
105
|
-
[X] Package#open
|
106
|
-
[X] Package#new
|
107
|
-
[X] Package#create
|
108
|
-
[ ] Package#load
|
109
|
-
[ ] Package#clear_cache
|
110
|
-
[ ] Package#use_cache
|
111
|
-
[X] Package#[]
|
112
|
-
[ ] Package#delete_tag
|
113
|
-
[X] Package#sprintf
|
114
|
-
[?] Package#signature
|
115
|
-
[X] Package#arch
|
116
|
-
[X] Package#name
|
117
|
-
[X] Package#version
|
118
|
-
[X] Package#files
|
119
|
-
[X] Package#provides
|
120
|
-
[X] Package#requires
|
121
|
-
[X] Package#conflicts
|
122
|
-
[X] Package#obsoletes
|
123
|
-
[X] Package#changelog
|
124
|
-
[ ] Package#add_dependency
|
125
|
-
[ ] Package#add_string
|
126
|
-
[ ] Package#add_string_array
|
127
|
-
[ ] Package#add_int32
|
128
|
-
[ ] Package#dump
|
129
|
-
[X] Package#to_s
|
130
|
-
[ ] Package#inspect
|
131
|
-
[ ] Package#copy_to
|
132
|
-
|
133
|
-
* RPM::Dependency
|
134
|
-
|
135
|
-
[X] Dependency#initialize
|
136
|
-
[X] Dependency#name
|
137
|
-
[X] Dependency#version
|
138
|
-
[X] Dependency#flags
|
139
|
-
[X] Dependency#owner
|
140
|
-
[X] Dependency#lt?
|
141
|
-
[X] Dependency#gt?
|
142
|
-
[X] Dependency#eq?
|
143
|
-
[X] Dependency#le?
|
144
|
-
[X] Dependency#ge?
|
145
|
-
[X] Dependency#satisfy?
|
146
|
-
[X] Dependency#nametag
|
147
|
-
[X] Dependency#versiontag
|
148
|
-
[X] Dependency#flagstag
|
149
|
-
|
150
|
-
* RPM::Provide
|
151
|
-
[X] Provide#initialize
|
152
|
-
|
153
|
-
* RPM::Require
|
154
|
-
[X] Require#initialize
|
155
|
-
[ ] Require#pre?
|
156
|
-
|
157
|
-
* RPM::Conflict
|
158
|
-
[X] Conflict#initialize
|
159
|
-
|
160
|
-
* RPM::Obsolete
|
161
|
-
[X] Obsolete#initialize
|
162
|
-
|
163
|
-
* RPM::ChangeLog
|
164
|
-
|
165
|
-
[X] ChangeLog#time
|
166
|
-
[X] ChangeLog#name
|
167
|
-
[X] ChangeLog#text
|
168
|
-
|
169
|
-
* RPM::Version
|
170
|
-
|
171
|
-
[X] Version (Comparable)
|
172
|
-
[X] Version#initialize
|
173
|
-
[X] Version#<=>
|
174
|
-
[X] Version#newer?
|
175
|
-
[X] Version#older?
|
176
|
-
[X] Version#v
|
177
|
-
[X] Version#r
|
178
|
-
[X] Version#e
|
179
|
-
[X] Version#to_s
|
180
|
-
[X] Version#to_vre
|
181
|
-
[X] Version#inspect
|
182
|
-
[X] Version#hash
|
183
|
-
|
184
|
-
* RPM::File
|
185
|
-
|
186
|
-
[X] File#initialize
|
187
|
-
[X] File#path
|
188
|
-
[ ] File#to_s (alias path)
|
189
|
-
[X] File#md5sum
|
190
|
-
[X] File#link_to
|
191
|
-
[X] File#size
|
192
|
-
[X] File#mtime
|
193
|
-
[X] File#owner
|
194
|
-
[X] File#group
|
195
|
-
[X] File#rdev
|
196
|
-
[X] File#mode
|
197
|
-
[X] File#attr
|
198
|
-
[X] File#state
|
199
|
-
[X] File#symlink?
|
200
|
-
[X] File#config?
|
201
|
-
[X] File#doc?
|
202
|
-
[X] File#donotuse?
|
203
|
-
[X] File#missingok?
|
204
|
-
[X] File#specfile?
|
205
|
-
[X] File#ghost?
|
206
|
-
[X] File#license?
|
207
|
-
[X] File#readme?
|
208
|
-
[X] File#exclude?
|
209
|
-
[X] File#replaced?
|
210
|
-
[X] File#notinstalled?
|
211
|
-
[X] File#netshared?
|
212
|
-
|
213
|
-
* RPM::DB
|
214
|
-
|
215
|
-
[ ] DB (Enumerable)
|
216
|
-
[ ] DB#new
|
217
|
-
[ ] DB#open
|
218
|
-
[ ] DB#init
|
219
|
-
[ ] DB#rebuild
|
220
|
-
[ ] DB#close
|
221
|
-
[ ] DB#closed?
|
222
|
-
[ ] DB#root
|
223
|
-
[ ] DB#home
|
224
|
-
[ ] DB#writable?
|
225
|
-
[ ] DB#each_match
|
226
|
-
[ ] DB#each
|
227
|
-
[ ] DB#transaction
|
228
|
-
[ ] DB#init_iterator
|
229
|
-
[ ] DB#dup
|
230
|
-
[ ] DB#clone
|
231
|
-
|
232
|
-
* RPM::MatchIterator
|
233
|
-
|
234
|
-
[X] MatchIterator (Enumerable)
|
235
|
-
[X] MatchIterator#each
|
236
|
-
[X] MatchIterator#next_iterator
|
237
|
-
[X] MatchIterator#offset
|
238
|
-
[X] MatchIterator#set_iterator_re
|
239
|
-
[X] MatchIterator#regexp
|
240
|
-
[X] MatchIterator#set_iterator_version
|
241
|
-
[X] MatchIterator#version
|
242
|
-
[X] MatchIterator#get_iterator_count
|
243
|
-
[X] MatchIterator#length
|
244
|
-
|
245
|
-
* RPM::Transaction
|
246
|
-
|
247
|
-
[ ] Transaction#db
|
248
|
-
[ ] Transaction#script_file
|
249
|
-
[ ] Transaction#script_file=
|
250
|
-
[ ] Transaction#install
|
251
|
-
[ ] Transaction#upgrade
|
252
|
-
[ ] Transaction#available
|
253
|
-
[ ] Transaction#delete
|
254
|
-
[ ] Transaction#check
|
255
|
-
[ ] Transaction#order
|
256
|
-
[ ] Transaction#keys
|
257
|
-
[ ] Transaction#commit
|
258
|
-
[ ] Transaction#abort
|
259
|
-
[ ] Transaction#dup
|
260
|
-
[ ] Transaction#clone
|
261
|
-
|
262
|
-
* RPM::Source
|
263
|
-
|
264
|
-
[ ] Source#initialize
|
265
|
-
[ ] Source#fullname
|
266
|
-
[ ] Source#to_s (alias fullname)
|
267
|
-
[ ] Source#num
|
268
|
-
[ ] Source#no?
|
269
|
-
|
270
|
-
* RPM::Patch
|
271
|
-
* RPM::Icon
|
272
|
-
|
273
|
-
* RPM::Spec
|
274
|
-
|
275
|
-
[ ] Spec#open
|
276
|
-
[ ] Spec#new
|
277
|
-
[ ] Spec#buildroot
|
278
|
-
[ ] Spec#buildsubdir
|
279
|
-
[ ] Spec#buildarchs
|
280
|
-
[ ] Spec#buildrequires
|
281
|
-
[ ] Spec#build_restrictions
|
282
|
-
[ ] Spec#sources
|
283
|
-
[ ] Spec#packages
|
284
|
-
[ ] Spec#build
|
285
|
-
[ ] Spec#expand_macros
|
286
|
-
[ ] Spec#dup
|
287
|
-
[ ] Spec#clone
|
288
|
-
|
289
|
-
== TODO
|
290
|
-
|
291
|
-
* Check Package#signature should return String?
|
292
|
-
=> ruby-rpm seems to return symbol
|
293
|
-
* Food for thought: Package dependencies and changelog
|
294
|
-
methods could just use []. Calling headerGet directly saves
|
295
|
-
us from doing one iteration per attribute
|
296
|
-
* Not sure if Spec can be implemented as it was before with
|
297
|
-
newer rpms.
|
298
|
-
|
299
|
-
= LICENSE
|
300
|
-
|
301
|
-
* Copyright © 2011 Duncan Mac-Vicar Prett <dmacvicar@suse.de>
|
302
|
-
* Copyright © 2011 SUSE Linux Products GmbH
|
303
|
-
|
304
|
-
* This gem is a pure-ruby rewrite of ruby-rpm:
|
305
|
-
Copyright © 2002 Kenta Murata. Relicensed with his permission.
|
306
|
-
|
307
|
-
Licensed under the MIT license. See MIT-LICENSE for details.
|
308
|
-
|