ruby-rpm 1.2.2

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.
@@ -0,0 +1,143 @@
1
+ ### -*- mode: ruby; indent-tabs-mode: nil; -*-
2
+ ### Ruby/RPM
3
+ ###
4
+ ### Copyright (C) 2002 Kenta MURATA <muraken2@nifty.com>.
5
+
6
+ ### $Id: rpm.rb 22 2004-03-29 03:42:35Z zaki $
7
+
8
+ require 'rpmmodule'
9
+
10
+ module RPM
11
+
12
+ def vercmp(ver1, ver2)
13
+ unless String === ver1 and String === ver2 then
14
+ raise TypeError, 'illegal argument type'
15
+ end
16
+ RPM::Version.new(ver1) <=> RPM::Version.new(ver2)
17
+ end # def vercmp(ver1, ver2)
18
+ module_function :vercmp
19
+
20
+ class DB
21
+
22
+ def DB.each_match(tag, val)
23
+ begin
24
+ db = RPM::DB.new
25
+ db.each_match(tag, val) {|*a| yield a}
26
+ end
27
+ GC.start
28
+ end # def DB.each_match(tag, val)
29
+
30
+ def DB.packages
31
+ packages = nil
32
+ begin
33
+ db = RPM::DB.new
34
+ packages = db.packages
35
+ end
36
+ GC.start
37
+ packages
38
+ end # def DB.packages
39
+
40
+ def DB.packages(label=nil)
41
+ packages = []
42
+ if label then
43
+ DB.each_match(RPM::DBI_LABEL, label) {|a| packages.push a}
44
+ else
45
+ packages = DB.packages
46
+ end
47
+ packages
48
+ end # def DB.package(label=nil)
49
+
50
+ end # class DB
51
+
52
+ end # module RPM
53
+
54
+ class RPMdb
55
+
56
+ def RPMdb.open(root='')
57
+ RPMdb.new root
58
+ end # def RPMdb.open(root='')
59
+
60
+ def close
61
+ @db = nil
62
+ GC.start
63
+ end # def close
64
+
65
+ def file(filespec)
66
+ raise RuntimeError, 'closed DB' if @db.nil?
67
+ pkgs = []
68
+ @db.each_match(RPM::TAG_BASENAMES, filespec) do |pkg|
69
+ [pkg.name, pkg.version.v, pkg.version.r]
70
+ end
71
+ pkgs
72
+ end # def file(filespec)
73
+
74
+ def group(groupname)
75
+ raise RuntimeError, 'closed DB' if @db.nil?
76
+ pkgs = []
77
+ @db.each_match(RPM::TAG_GROUP, groupname) do |pkg|
78
+ pkgs << [pkg.name, pkg.version.v, pkg.version.r]
79
+ end
80
+ pkgs
81
+ end # def group(groupname)
82
+
83
+ def package(packagename)
84
+ raise RuntimeError, 'closed DB' if @db.nil?
85
+ pkgs = []
86
+ @db.each_match(RPM::DBI_LABEL, packagename) do |pkg|
87
+ pkgs << [pkg.name, pkg.version.v, pkg.version.r]
88
+ end
89
+ pkgs
90
+ end # def package(packagename)
91
+
92
+ def whatprovides(caps)
93
+ raise RuntimeError, 'closed DB' if @db.nil?
94
+ pkgs = []
95
+ @db.each_match(RPM::TAG_PROVIDENAME, caps) do |pkg|
96
+ pkgs << [pkg.name, pkg.version.v, pkg.version.r]
97
+ end
98
+ pkgs
99
+ end # def whatprovides(caps)
100
+
101
+ def whatrequires(caps)
102
+ raise RuntimeError, 'closed DB' if @db.nil?
103
+ pkgs = []
104
+ @db.each_match(RPM::TAG_REQUIRENAME, caps) do |pkg|
105
+ pkgs << [pkg.name, pkg.version.v, pkg.version.r]
106
+ end
107
+ pkgs
108
+ end # def whatrequires(caps)
109
+
110
+ def provides(name)
111
+ raise RuntimeError, 'closed DB' if @db.nil?
112
+ pkg = nil
113
+ @db.each_match(RPM::DBI_LABEL, name) {|p| pkg = p}
114
+ if pkg then
115
+ pkg.provides.collect {|prov| prov.name }
116
+ else
117
+ []
118
+ end
119
+ end # def provides(name)
120
+
121
+ def requires(name)
122
+ raise RuntimeError, 'closed DB' if @db.nil?
123
+ pkg = nil
124
+ @db.each_match(RPM::DBI_LABEL, name) {|p| pkg = p; break}
125
+ if pkg then
126
+ pkg.requires.collect {|req| [req.name, req.version.v, req.version.r] }
127
+ else
128
+ []
129
+ end
130
+ end # def requires(name)
131
+
132
+ def each
133
+ raise RuntimeError, 'closed DB' if @db.nil?
134
+ @db.each do |pkg|
135
+ yield pkg.name, pkg.version.v, pkg.version.r
136
+ end
137
+ end # def each
138
+
139
+ def initialize(root='')
140
+ @db = RPM::DB.new false, root
141
+ end # def initialize(root='')
142
+
143
+ end # class RPMdb
@@ -0,0 +1,226 @@
1
+ %{!?ruby_sitelib: %define ruby_sitelib %(ruby -rrbconfig -e "puts Config::CONFIG['sitelibdir']")}
2
+ %{!?ruby_sitearch: %define ruby_sitearch %(ruby -rrbconfig -e "puts Config::CONFIG['sitearchdir']")}
3
+
4
+ Summary: Ruby bindings for RPM
5
+ Name: ruby-rpm
6
+
7
+ Version: 1.2.2
8
+ Release: 1%{?dist}
9
+ Group: Development/Languages
10
+ License: GPL
11
+ URL: http://rubyforge.org/projects/ruby-rpm/
12
+ Source0: %{name}-%{version}.tgz
13
+ BuildRoot: %{_tmppath}/%{name}-%{version}-root
14
+ Requires: ruby >= 1.8.1
15
+ BuildRequires: ruby >= 1.8.1
16
+ BuildRequires: ruby-devel >= 1.8.1
17
+ BuildRequires: rpm-devel >= 4.2.1
18
+ BuildRequires: db4-devel
19
+
20
+ %description
21
+ Bindings for accessing RPM packages and databases from Ruby.
22
+
23
+ %prep
24
+ %setup -q
25
+
26
+ %build
27
+ ruby install.rb config \
28
+ --bin-dir=%{_bindir} \
29
+ --rb-dir=%{ruby_sitelib} \
30
+ --so-dir=%{ruby_sitearch} \
31
+ --data-dir=%{_datadir}
32
+
33
+ ruby install.rb setup
34
+
35
+ %install
36
+ [ "%{buildroot}" != "/" ] && %__rm -rf %{buildroot}
37
+ ruby install.rb config \
38
+ --bin-dir=%{buildroot}%{_bindir} \
39
+ --rb-dir=%{buildroot}%{ruby_sitelib} \
40
+ --so-dir=%{buildroot}%{ruby_sitearch} \
41
+ --data-dir=%{buildroot}%{_datadir}
42
+ ruby install.rb install
43
+ chmod 0755 %{buildroot}%{ruby_sitearch}/rpmmodule.so
44
+
45
+ %clean
46
+ [ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
47
+
48
+ %files
49
+ %defattr(-, root, root)
50
+ %doc NEWS README COPYING ChangeLog doc
51
+ %{ruby_sitelib}/rpm.rb
52
+ %{ruby_sitearch}/rpmmodule.so
53
+
54
+ %changelog
55
+ * Tue Nov 14 2006 David Lutterkort <dlutter@redhat.com> - 1.2.1-1
56
+ - Adapted for Fedora
57
+
58
+ * Fri Jul 02 2004 Pascal Terjan <pterjan@mandrake.org> 1.2.0-1mdk
59
+ - Adapt for Mandrakelinux
60
+ - Patch for a segfault when TMP or TEMP or TMPDIR exist but does not contain =
61
+
62
+ * Sun Mar 14 2004 Toru Hoshina <t@momonga-linux.org>
63
+ - (1.2.0-1m)
64
+ - for rpm 4.2.1.
65
+
66
+ * Tue Jan 20 2004 YAMAZAKI Makoto <zaki@zakky.org>
67
+ - (1.1.12-2m)
68
+ - add patch to fix SEGV if TMP or TEMP or TMPDIR environment variable exists. [bug:#19]
69
+
70
+ * Sun Jan 11 2004 Kenta MURATA <muraken2@nifty.com>
71
+ - (1.1.12-1m)
72
+ - version up.
73
+
74
+ * Sat Nov 01 2003 Kenta MURATA <muraken2@nifty.com>
75
+ - (1.1.11-1m)
76
+ - version up.
77
+
78
+ * Mon Aug 04 2003 Kenta MURATA <muraken2@nifty.com>
79
+ - (1.1.10-3m)
80
+ - merge from ruby-1_8-branch.
81
+
82
+ * Sun Aug 03 2003 Kenta MURATA <muraken2@nifty.com>
83
+ - (1.1.10-2m)
84
+ - rebuild against ruby-1.8.0.
85
+
86
+ * Sun May 4 2003 Kenta MURATA <muraken2@nifty.com>
87
+ - (1.1.10-1m)
88
+ - version up.
89
+
90
+ * Tue Mar 4 2003 Shingo Akagaki <dora@kitty.dnsalias.org>
91
+ - (1.1.9-1m)
92
+ - version up.
93
+
94
+ * Sat Jan 18 2003 Shingo Akagaki <dora@kitty.dnsalias.org>
95
+ - (1.1.8-1m)
96
+ - version up.
97
+
98
+ * Wed Dec 25 2002 Shingo Akagaki <dora@kitty.dnsalias.org>
99
+ - (1.1.7-1m)
100
+ - version up.
101
+
102
+ * Tue Dec 17 2002 Shingo Akagaki <dora@kitty.dnsalias.org>
103
+ - (1.1.6-1m)
104
+ - version up.
105
+
106
+ * Tue Dec 10 2002 Shingo Akagaki <dora@kitty.dnsalias.org>
107
+ - (1.1.5-1m)
108
+ - version up.
109
+
110
+ * Fri Dec 6 2002 Shingo Akagaki <dora@kitty.dnsalias.org>
111
+ - (1.1.4-2m)
112
+ - bug fix.
113
+
114
+ * Fri Dec 6 2002 Shingo Akagaki <dora@kitty.dnsalias.org>
115
+ - (1.1.4-1m)
116
+ - version up.
117
+
118
+ * Thu Dec 5 2002 Shingo Akagaki <dora@kitty.dnsalias.org>
119
+ - (1.1.3-2m)
120
+ - bug fix.
121
+
122
+ * Thu Dec 5 2002 Shingo Akagaki <dora@kitty.dnsalias.org>
123
+ - (1.1.3-1m)
124
+ - version up.
125
+
126
+ * Thu Dec 5 2002 Shingo Akagaki <dora@kitty.dnsalias.org>
127
+ - (1.1.2-1m)
128
+ - version up.
129
+
130
+ * Fri May 31 2002 Kenta MURATA <muraken@kondara.org>
131
+ - (1.1.1-2k)
132
+ - version up.
133
+
134
+ * Fri May 31 2002 Kenta MURATA <muraken@kondara.org>
135
+ - (1.1.0-2k)
136
+ - version up.
137
+
138
+ * Tue May 7 2002 Kenta MURATA <muraken@kondara.org>
139
+ - (1.0.1-2k)
140
+ - version up.
141
+
142
+ * Fri May 3 2002 Kenta MURATA <muraken@kondara.org>
143
+ - (1.0.0-2k)
144
+ - version up.
145
+
146
+ * Wed May 1 2002 Kenta MURATA <muraken@kondara.org>
147
+ - (0.3.13-2k)
148
+ - version up.
149
+
150
+ * Mon Apr 29 2002 Kenta MURATA <muraken@kondara.org>
151
+ - (0.3.12-2k)
152
+ - version up.
153
+
154
+ * Sun Apr 28 2002 Kenta MURATA <muraken@kondara.org>
155
+ - (0.3.11-2k)
156
+ - version up.
157
+
158
+ * Wed Apr 24 2002 Kenta MURATA <muraken@kondara.org>
159
+ - (0.3.10-2k)
160
+ - version up.
161
+
162
+ * Sun Apr 21 2002 Toru Hoshina <t@kondara.org>
163
+ - (0.3.9-6k)
164
+ - i586tega... copytega...
165
+
166
+ * Sun Apr 21 2002 Kenta MURATA <muraken@kondara.org>
167
+ - (0.3.9-4k)
168
+ - applyed patch basenames and dirindexes.
169
+
170
+ * Sun Apr 21 2002 Kenta MURATA <muraken@kondara.org>
171
+ - (0.3.9-2k)
172
+ - version up.
173
+
174
+ * Sun Apr 21 2002 Kenta MURATA <muraken@kondara.org>
175
+ - (0.3.8-4k)
176
+ - ukekeke.
177
+
178
+ * Fri Apr 19 2002 Kenta MURATA <muraken@kondara.org>
179
+ - (0.3.8-2k)
180
+ - version up.
181
+ - devel merge to main.
182
+
183
+ * Fri Apr 19 2002 Kenta MURATA <muraken@kondara.org>
184
+ - (0.3.7-2k)
185
+ - version up.
186
+ - append package devel for neomph. fufufu.
187
+
188
+ * Fri Apr 19 2002 Kenta MURATA <muraken@kondara.org>
189
+ - (0.3.6-2k)
190
+ - version up.
191
+
192
+ * Fri Apr 19 2002 Kenta MURATA <muraken@kondara.org>
193
+ - (0.3.5-4k)
194
+ - defattr
195
+
196
+ * Thu Apr 18 2002 Kenta MURATA <muraken@kondara.org>
197
+ - (0.3.5-2k)
198
+ - version up.
199
+
200
+ * Thu Apr 18 2002 Kenta MURATA <muraken@kondara.org>
201
+ - (0.3.4-2k)
202
+ - version up.
203
+
204
+ * Thu Apr 18 2002 Kenta MURATA <muraken@kondara.org>
205
+ - (0.3.3-4k)
206
+ - apply patch to DB#each_match
207
+
208
+ * Thu Apr 18 2002 Kenta MURATA <muraken@kondara.org>
209
+ - (0.3.3-2k)
210
+ - version up.
211
+
212
+ * Wed Apr 17 2002 Kenta MURATA <muraken@kondara.org>
213
+ - (0.3.2-2k)
214
+ - version up.
215
+
216
+ * Wed Apr 17 2002 Kenta MURATA <muraken@kondara.org>
217
+ - (0.3.1-6k)
218
+ - apply patch version_parse.
219
+
220
+ * Wed Apr 17 2002 Kenta MURATA <muraken@kondara.org>
221
+ - (0.3.1-4k)
222
+ - apply patch Init_hoge.
223
+
224
+ * Wed Apr 17 2002 Kenta MURATA <muraken@kondara.org>
225
+ - (0.3.1-2k)
226
+ - first release.
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ require 'test/unit'
3
+
4
+ rootdir = "#{File::dirname($0)}/.."
5
+ $:.unshift( "#{rootdir}/tests", "#{rootdir}/lib", "#{rootdir}/ext/rpm" )
6
+
7
+ require 'test_db'
8
+ require 'test_rpm'
9
+ require 'test_source'
10
+ #require 'test_ts'
11
+ require 'test_version'
12
+ require 'test_file'
13
+ require 'test_dependency'
14
+
15
+ exit Test::Unit::AutoRunner.run(false, File.dirname($0))
@@ -0,0 +1,44 @@
1
+ require 'test/unit'
2
+ require 'fileutils'
3
+ require 'tmpdir'
4
+ require 'rpm'
5
+
6
+ class RPM_DB_Tests < Test::Unit::TestCase
7
+ def setup
8
+ @work_dir = "#{Dir.tmpdir}/.ruby-rpm-test"
9
+ unless File.directory?(@work_dir) then
10
+ Dir.mkdir(@work_dir, 0777)
11
+ end
12
+ ## create database directory
13
+ FileUtils.mkdir_p( "#{@work_dir}#{RPM['_dbpath']}" )
14
+ RPM::DB.init( @work_dir )
15
+ @a = RPM::DB.open( true, @work_dir )
16
+ end # def setup
17
+
18
+ def teardown
19
+ @a.close
20
+ FileUtils.rm_rf(@work_dir)
21
+ end # def teardown
22
+
23
+ def test_init
24
+ assert( File.exist?( "#{@tmppath}/#{RPM['_dbpath']}/Packages" ) )
25
+ end # def test_initdb
26
+
27
+ def test_rebuild
28
+ RPM::DB.rebuild( @work_dir )
29
+ assert( File.exist?( "#{@tmppath}/#{RPM['_dbpath']}/Packages" ) )
30
+ end
31
+
32
+ def test_open
33
+ assert( @a )
34
+ end
35
+
36
+ def test_root
37
+ assert_equal( @a.root, @work_dir )
38
+ end
39
+
40
+ def test_home
41
+ assert_equal( @a.home, RPM['_dbpath'] )
42
+ end
43
+
44
+ end # class RPM_DB_Tests < Test::Unit::TestCase
@@ -0,0 +1,29 @@
1
+ require 'test/unit'
2
+ require 'rpm'
3
+
4
+ class RPM_Dependency_Tests < Test::Unit::TestCase
5
+
6
+ EQ = RPM::SENSE_EQUAL
7
+ LT = RPM::SENSE_LESS
8
+ GT = RPM::SENSE_GREATER
9
+
10
+ def test_satisfy
11
+ prv = provide("foo", "2", "1", 0, EQ)
12
+ req = require("foo", "1", "1", 0, EQ|GT)
13
+ assert(req.satisfy?(prv))
14
+ assert(prv.satisfy?(req))
15
+
16
+ # Different names don't overlap
17
+ prv = provide("foo", "2", "1", 0, EQ)
18
+ req = require("bar", "1", "1", 0, EQ|GT)
19
+ assert(! req.satisfy?(prv))
20
+ end
21
+
22
+ def provide(name, v, r, e, sense)
23
+ RPM::Provide.new(name, RPM::Version.new(v, r, e), sense, nil)
24
+ end
25
+
26
+ def require(name, v, r, e, sense)
27
+ RPM::Require.new(name, RPM::Version.new(v, r, e), sense, nil)
28
+ end
29
+ end