rpm2 0.1.0
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/.github/CODEOWNERS +1 -0
- data/.github/workflows/ci.yaml +25 -0
- data/.gitignore +8 -0
- data/.rubocop.yml +1 -0
- data/.rubocop_todo.yml +111 -0
- data/.whitesource +3 -0
- data/CHANGELOG.md +66 -0
- data/Gemfile +9 -0
- data/MIT-LICENSE +23 -0
- data/README.md +374 -0
- data/Rakefile +58 -0
- data/_docker/Dockerfile.ubi8 +8 -0
- data/_docker/Dockerfile.ubi9 +8 -0
- data/lib/rpm/c/header.rb +36 -0
- data/lib/rpm/c/rpmcallback.rb +27 -0
- data/lib/rpm/c/rpmcli.rb +6 -0
- data/lib/rpm/c/rpmdb.rb +20 -0
- data/lib/rpm/c/rpmds.rb +43 -0
- data/lib/rpm/c/rpmfi.rb +31 -0
- data/lib/rpm/c/rpmio.rb +17 -0
- data/lib/rpm/c/rpmlib.rb +12 -0
- data/lib/rpm/c/rpmlog.rb +23 -0
- data/lib/rpm/c/rpmmacro.rb +33 -0
- data/lib/rpm/c/rpmprob.rb +53 -0
- data/lib/rpm/c/rpmps.rb +11 -0
- data/lib/rpm/c/rpmtag.rb +304 -0
- data/lib/rpm/c/rpmtd.rb +34 -0
- data/lib/rpm/c/rpmts.rb +69 -0
- data/lib/rpm/c/rpmtypes.rb +28 -0
- data/lib/rpm/c.rb +49 -0
- data/lib/rpm/compat.rb +40 -0
- data/lib/rpm/db.rb +117 -0
- data/lib/rpm/dependency.rb +120 -0
- data/lib/rpm/file.rb +134 -0
- data/lib/rpm/gem_version.rb +7 -0
- data/lib/rpm/match_iterator.rb +66 -0
- data/lib/rpm/package.rb +332 -0
- data/lib/rpm/problem.rb +65 -0
- data/lib/rpm/transaction.rb +268 -0
- data/lib/rpm/utils.rb +7 -0
- data/lib/rpm/version.rb +146 -0
- data/lib/rpm.rb +88 -0
- data/lib/rpm2.rb +1 -0
- data/rpm2.gemspec +29 -0
- data/test/data/a.spec +49 -0
- data/test/data/simple-1.0-0.i586.rpm +0 -0
- data/test/data/simple.spec +38 -0
- data/test/data/simple_with_deps-1.0-0.i586.rpm +0 -0
- data/test/data/simple_with_deps.spec +41 -0
- data/test/helper.rb +7 -0
- data/test/test_dependency.rb +28 -0
- data/test/test_file.rb +36 -0
- data/test/test_lib.rb +33 -0
- data/test/test_package.rb +76 -0
- data/test/test_problem.rb +18 -0
- data/test/test_rpm.rb +33 -0
- data/test/test_transaction.rb +156 -0
- data/test/test_version.rb +64 -0
- metadata +133 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 297bf3934e3aa92ed045b10c069f100044567ed9c18630861cf8efe24072ab37
|
4
|
+
data.tar.gz: a2e66b665ef636ed114f2fee6dd72b31196da1e05952173ad6600aa861677f66
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3fe6c774b023db7eef7a20fe9bdfae968140eee0c9be4120af4d62db8e34b9fb99adcee93f0a7c2a8844950dad155db4b4ae79b632414f4e3fe0ed3b185ee9f0
|
7
|
+
data.tar.gz: 1c3fb8e5302cb60eca09958729ed1a234bb14d2e0bbaa29c6c4e2d798deb7bee37fdd80f69b1b0ed440b31200383abb983be6c283e0520a341674511871da929
|
data/.github/CODEOWNERS
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
* @agrare @Fryguy
|
@@ -0,0 +1,25 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
pull_request:
|
6
|
+
schedule:
|
7
|
+
- cron: '0 0 * * 0'
|
8
|
+
workflow_dispatch:
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
ci:
|
12
|
+
timeout-minutes: 5
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
strategy:
|
15
|
+
fail-fast: false
|
16
|
+
matrix:
|
17
|
+
platform:
|
18
|
+
- ubi8
|
19
|
+
- ubi9
|
20
|
+
steps:
|
21
|
+
- uses: actions/checkout@v4
|
22
|
+
- name: Build docker image
|
23
|
+
run: rake docker_images[${{ matrix.platform }}]
|
24
|
+
- name: Run tests
|
25
|
+
run: rake docker_test[${{ matrix.platform }}]
|
data/.gitignore
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2016-07-09 11:50:54 +0200 using RuboCop version 0.41.2.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 6
|
10
|
+
# Cop supports --auto-correct.
|
11
|
+
# Configuration parameters: AlignWith, SupportedStyles, AutoCorrect.
|
12
|
+
# SupportedStyles: keyword, variable, start_of_line
|
13
|
+
Lint/EndAlignment:
|
14
|
+
Exclude:
|
15
|
+
- 'lib/rpm/dependency.rb'
|
16
|
+
- 'lib/rpm/file.rb'
|
17
|
+
- 'lib/rpm/package.rb'
|
18
|
+
- 'lib/rpm/transaction.rb'
|
19
|
+
- 'test/test_transaction.rb'
|
20
|
+
|
21
|
+
# Offense count: 1
|
22
|
+
Lint/UnreachableCode:
|
23
|
+
Exclude:
|
24
|
+
- 'lib/rpm/transaction.rb'
|
25
|
+
|
26
|
+
# Offense count: 11
|
27
|
+
Lint/UselessAssignment:
|
28
|
+
Exclude:
|
29
|
+
- 'lib/rpm.rb'
|
30
|
+
- 'lib/rpm/package.rb'
|
31
|
+
- 'lib/rpm/transaction.rb'
|
32
|
+
- 'lib/rpm/version.rb'
|
33
|
+
|
34
|
+
# Offense count: 1
|
35
|
+
Lint/Void:
|
36
|
+
Exclude:
|
37
|
+
- 'test/test_rpm.rb'
|
38
|
+
|
39
|
+
# Offense count: 17
|
40
|
+
Metrics/AbcSize:
|
41
|
+
Max: 74
|
42
|
+
|
43
|
+
# Offense count: 1
|
44
|
+
Metrics/BlockNesting:
|
45
|
+
Max: 4
|
46
|
+
|
47
|
+
# Offense count: 3
|
48
|
+
# Configuration parameters: CountComments.
|
49
|
+
Metrics/ClassLength:
|
50
|
+
Max: 225
|
51
|
+
|
52
|
+
# Offense count: 3
|
53
|
+
Metrics/CyclomaticComplexity:
|
54
|
+
Max: 17
|
55
|
+
|
56
|
+
# Offense count: 66
|
57
|
+
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
|
58
|
+
# URISchemes: http, https
|
59
|
+
Metrics/LineLength:
|
60
|
+
Max: 129
|
61
|
+
|
62
|
+
# Offense count: 21
|
63
|
+
# Configuration parameters: CountComments.
|
64
|
+
Metrics/MethodLength:
|
65
|
+
Max: 57
|
66
|
+
|
67
|
+
# Offense count: 1
|
68
|
+
# Configuration parameters: CountComments.
|
69
|
+
Metrics/ModuleLength:
|
70
|
+
Max: 295
|
71
|
+
|
72
|
+
# Offense count: 4
|
73
|
+
# Configuration parameters: CountKeywordArgs.
|
74
|
+
Metrics/ParameterLists:
|
75
|
+
Max: 11
|
76
|
+
|
77
|
+
# Offense count: 2
|
78
|
+
Metrics/PerceivedComplexity:
|
79
|
+
Max: 19
|
80
|
+
|
81
|
+
# Offense count: 2
|
82
|
+
Style/AccessorMethodName:
|
83
|
+
Exclude:
|
84
|
+
- 'lib/rpm/match_iterator.rb'
|
85
|
+
|
86
|
+
# Offense count: 1
|
87
|
+
Style/AsciiComments:
|
88
|
+
Exclude:
|
89
|
+
- 'lib/rpm/file.rb'
|
90
|
+
|
91
|
+
# Offense count: 34
|
92
|
+
Style/Documentation:
|
93
|
+
Enabled: false
|
94
|
+
|
95
|
+
# Offense count: 2
|
96
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
97
|
+
# SupportedStyles: snake_case, camelCase
|
98
|
+
Style/MethodName:
|
99
|
+
Exclude:
|
100
|
+
- 'lib/rpm/c/rpmprob.rb'
|
101
|
+
- 'lib/rpm/c/rpmtag.rb'
|
102
|
+
|
103
|
+
# Offense count: 3
|
104
|
+
# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist.
|
105
|
+
# NamePrefix: is_, has_, have_
|
106
|
+
# NamePrefixBlacklist: is_, has_, have_
|
107
|
+
# NameWhitelist: is_a?
|
108
|
+
Style/PredicateName:
|
109
|
+
Exclude:
|
110
|
+
- 'spec/**/*'
|
111
|
+
- 'lib/rpm/file.rb'
|
data/.whitesource
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
This project adheres to [Semantic Versioning](http://semver.org/).
|
5
|
+
|
6
|
+
## [Unreleased]
|
7
|
+
|
8
|
+
## [0.1.0] - 2025-02-03
|
9
|
+
### Added
|
10
|
+
- Detect librpm.so.8
|
11
|
+
- Make rpm_version_macro available in c/rpmmacro
|
12
|
+
- Attach addMacro/delMacro as rpmPushMacro and rpmPopMacro in >= 4.14.0
|
13
|
+
- Detect librpm.so.9 ([#5](https://github.com/ManageIQ/ruby-rpm-ffi2/pull/5))
|
14
|
+
|
15
|
+
### Changed
|
16
|
+
- MiniTest::Unit::TestCase is now Minitest::Test
|
17
|
+
- Rename rpm gem to rpm2 ([#1](https://github.com/ManageIQ/ruby-rpm-ffi2/pull/1))
|
18
|
+
- Replace TravisCI with Github Actions ([#3](https://github.com/ManageIQ/ruby-rpm-ffi2/pull/3))
|
19
|
+
|
20
|
+
### Fixed
|
21
|
+
- Do not attach deprecated headerNVR on >= 4.14.0
|
22
|
+
- Handle deprecated addMacro/delMacro
|
23
|
+
- Do not use headerNVR in Package.version ([#4](https://github.com/ManageIQ/ruby-rpm-ffi2/pull/4))
|
24
|
+
- Use rpmExpandMacros on rpm v4.14+ for `RPM#[]` ([#12](https://github.com/ManageIQ/ruby-rpm-ffi2/pull/12))
|
25
|
+
|
26
|
+
## [0.0.5] - 2016-07-09
|
27
|
+
### Added
|
28
|
+
- Add rake for travis
|
29
|
+
- Search for librpm.so.3 too
|
30
|
+
|
31
|
+
### Changed
|
32
|
+
- Moved to minitest
|
33
|
+
- ruby 1.9.x not supported anymore
|
34
|
+
|
35
|
+
## [0.0.4] - 2013-10-24
|
36
|
+
### Fixed
|
37
|
+
- Bugfix: too many open files on transaction with blocks
|
38
|
+
- Fixing the access to FileAttrs and FileState constants from RPM::File
|
39
|
+
|
40
|
+
## [0.0.3] - 2012-02-23
|
41
|
+
### Changed
|
42
|
+
- RPM::FFI module is now RPM::C
|
43
|
+
|
44
|
+
### Added
|
45
|
+
- implement Trasaction#commit, Trasaction#install, Trasaction#upgrade,
|
46
|
+
|
47
|
+
## [0.0.2] - 2012-01-04
|
48
|
+
### Added
|
49
|
+
- Add MatchIterator support and expose it in Transaction
|
50
|
+
- Implement transaction callback
|
51
|
+
- Implemented RPM::File
|
52
|
+
- implement RPM#[]=
|
53
|
+
|
54
|
+
### Changed
|
55
|
+
- Renamed RPM::Header to RPM::Package
|
56
|
+
|
57
|
+
### Fixed
|
58
|
+
- Fix name not getting set. Better use headerPutString
|
59
|
+
- Fix RPM#[]
|
60
|
+
|
61
|
+
[Unreleased]: https://github.com/ManageIQ/ruby-rpm-ffi2/compare/v0.1.0...HEAD
|
62
|
+
[0.1.0]: https://github.com/ManageIQ/ruby-rpm-ffi2/compare/v0.0.5...v0.1.0
|
63
|
+
[0.0.5]: https://github.com/ManageIQ/ruby-rpm-ffi2/compare/v0.0.4...v0.0.5
|
64
|
+
[0.0.4]: https://github.com/ManageIQ/ruby-rpm-ffi2/compare/v0.0.3...v0.0.4
|
65
|
+
[0.0.3]: https://github.com/ManageIQ/ruby-rpm-ffi2/compare/v0.0.2...v0.0.3
|
66
|
+
[0.0.2]: https://github.com/ManageIQ/ruby-rpm-ffi2/compare/aa5c84efc5...v0.0.2
|
data/Gemfile
ADDED
data/MIT-LICENSE
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
Copyright © 2025 ManageIQ Authors
|
2
|
+
Copyright © 2011 Duncan Mac-Vicar Prett <dmacvicar@suse.de>
|
3
|
+
Copyright © 2011 SUSE Linux Products GmbH
|
4
|
+
Copyright © 2002 Kenta Murata
|
5
|
+
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
7
|
+
a copy of this software and associated documentation files (the
|
8
|
+
"Software"), to deal in the Software without restriction, including
|
9
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
10
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
11
|
+
permit persons to whom the Software is furnished to do so, subject to
|
12
|
+
the following conditions:
|
13
|
+
|
14
|
+
The above copyright notice and this permission notice shall be
|
15
|
+
included in all copies or substantial portions of the Software.
|
16
|
+
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
18
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
19
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
20
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
21
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
22
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
23
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,374 @@
|
|
1
|
+
|
2
|
+
# RPM bindings for ruby
|
3
|
+
|
4
|
+
[](https://github.com/ManageIQ/ruby-rpm-ffi2/actions/workflows/ci.yaml)
|
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
|
+
```ruby
|
15
|
+
require 'rpm'
|
16
|
+
|
17
|
+
pkg = RPM::Package.open("file.rpm")
|
18
|
+
pkg.arch => "x86_64"
|
19
|
+
|
20
|
+
pkg.files.each do |file|
|
21
|
+
puts file.path
|
22
|
+
end
|
23
|
+
|
24
|
+
pkg.changelog.each do |entry|
|
25
|
+
puts "#{entry.name} #{entry.time} #{entry.text}"
|
26
|
+
end
|
27
|
+
```
|
28
|
+
|
29
|
+
## Querying the rpm database
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
require 'rpm'
|
33
|
+
|
34
|
+
RPM.transaction do |ts|
|
35
|
+
ts.each do |pkg|
|
36
|
+
puts pkg
|
37
|
+
end
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
## Install a package
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
require 'rpm'
|
45
|
+
|
46
|
+
pkg = RPM::Package.open('foo.rpm')
|
47
|
+
|
48
|
+
RPM.transaction(rootdir) do |t|
|
49
|
+
t.install(pkg, 'foo.rpm')
|
50
|
+
t.commit
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
## Introduction
|
55
|
+
|
56
|
+
This library is a replacement for the ruby-rpm gem, originally
|
57
|
+
writen by Kenta Murata around 2002 for the Kondara distribution. Later
|
58
|
+
mantained by David Lutterkort and myself.
|
59
|
+
|
60
|
+
Why?
|
61
|
+
|
62
|
+
* The original gem supports ancient rpm versions not in use anymore
|
63
|
+
* The original gem was written in C using MRI API
|
64
|
+
* The #ifdef'ing required to support multiple rpm versions made the code
|
65
|
+
hard to maintain
|
66
|
+
|
67
|
+
This gem:
|
68
|
+
|
69
|
+
* Is pure ruby
|
70
|
+
* Is documented
|
71
|
+
* Has as a goal to support only the latest rpm version plus the ones in
|
72
|
+
use some releases back in popular rpm based distros
|
73
|
+
* Uses FFI, so it should work with other interpreters
|
74
|
+
(Because https://github.com/rubinius/rubinius/issues/682 it currently does
|
75
|
+
not work on Rubinius)
|
76
|
+
* Does not target rpm5, but it may support it someday
|
77
|
+
|
78
|
+
As an example the code that implements RPM::Package was reduced
|
79
|
+
from 1130 lines of code to 320.
|
80
|
+
|
81
|
+
# Architecture
|
82
|
+
|
83
|
+
The gem is divided in two modules:
|
84
|
+
|
85
|
+
* RPM::C:: which contains the 1:1 mapping to the librpm API
|
86
|
+
Not all functions are attached, only the ones we actually use.
|
87
|
+
* RPM:: contains the actual higher level API
|
88
|
+
|
89
|
+
# Status, Compatibility and Differences with ruby-rpm
|
90
|
+
|
91
|
+
* Only rpm 4.11.x or later will be supported
|
92
|
+
* You can use symbols: instead of RPM::TAG_DESCRIPTION you
|
93
|
+
can use just :description. 'rpm/compat' is by default loaded
|
94
|
+
and provides compatibility with the RPM::TAG_* style constants
|
95
|
+
* RPM::DB is not supported. Use RPM::Transaction
|
96
|
+
* Spec and Source classes are not implemented yet
|
97
|
+
|
98
|
+
## TESTING
|
99
|
+
|
100
|
+
Unit tests can be run using the `rake test` command.
|
101
|
+
|
102
|
+
### Docker tests
|
103
|
+
|
104
|
+
In order to not damage your system, you can run the testsuite under docker:
|
105
|
+
|
106
|
+
* Build the docker images:
|
107
|
+
|
108
|
+
```console
|
109
|
+
rake docker_images
|
110
|
+
```
|
111
|
+
|
112
|
+
* Run the testsuite under Docker
|
113
|
+
|
114
|
+
```console
|
115
|
+
rake docker_test
|
116
|
+
```
|
117
|
+
|
118
|
+
## TODO
|
119
|
+
|
120
|
+
* Check Package#signature should return String?
|
121
|
+
=> ruby-rpm seems to return symbol
|
122
|
+
* Food for thought: Package dependencies and changelog
|
123
|
+
methods could just use []. Calling headerGet directly saves
|
124
|
+
us from doing one iteration per attribute
|
125
|
+
* Not sure if Spec can be implemented as it was before with
|
126
|
+
newer rpms.
|
127
|
+
|
128
|
+
## API Checklist and TODO
|
129
|
+
|
130
|
+
### Low level 1:1 RPM::C API
|
131
|
+
|
132
|
+
* http://rpm.org/wiki/Releases/4.14.0
|
133
|
+
- [ ] Add rpmfiVerify() and rpmfilesVerify()
|
134
|
+
- [ ] Add pmsqPoll(), rpmsqActivate(), rpmsqSetAction(), rpmsqBlock()
|
135
|
+
- [ ] Add rpmDigestBundleAddID()
|
136
|
+
- [ ] Add RPMTRANS_FLAG_NOCAPS flag to disable file capabilities
|
137
|
+
- [ ] Add RPMVSF_NOPAYLOAD flag to disable payload digest verification
|
138
|
+
- [ ] Add pgpPubkeyKeyID()
|
139
|
+
- [X] Add rpmPushMacro() and rpmPopMacro() (to replace addMacro() and delMacro())
|
140
|
+
- [ ] Remove headerNVR(), headerNEVRA(), headerGetNEVR(), headerGetNEVRA(), headerGetEVR(), headerGetColor(), rpmfiMD5(), expandMacros(), addMacro(), delMacro()
|
141
|
+
|
142
|
+
* http://rpm.org/wiki/Releases/4.13.0
|
143
|
+
- [ ] Add rpmsqSetInterruptSafety()
|
144
|
+
- [ ] Add/Change rpmPkgSign()
|
145
|
+
- [ ] Add RPMCALLBACK_ELEM_PROGRESS callback type
|
146
|
+
- [ ] Add rpmExpandMacros()
|
147
|
+
|
148
|
+
* http://rpm.org/wiki/Releases/4.12.0
|
149
|
+
- [ ] Add rpmtxnBegin() and rpmtxnEnd()
|
150
|
+
- [ ] Add rpmtsImportHeader()
|
151
|
+
- [ ] Add rpmtsAddReinstallElement()
|
152
|
+
- [ ] Add rpmdbIndexIteratorNextTd()
|
153
|
+
- [ ] Add file info set iterator functions: rpmfiFLinks(), rpmfiFindFN(), rpmfiStat()
|
154
|
+
- [ ] Add rpmfiOFN(), rpmfiOBN(), rpmfiODN(), rpmfiFindOFN()
|
155
|
+
- [ ] Add rpmteFiles()
|
156
|
+
- [ ] Add rpmdsTagF(), rpmdsTagEVR(), rpmdsD(), rpmdsPutToHeader(), rpmdsTi(), rpmdsTagTi() and rpmdsSinglePoolTix()
|
157
|
+
|
158
|
+
* http://rpm.org/wiki/Releases/4.11.0
|
159
|
+
- [ ] Add rpmstrPool object + associated functions
|
160
|
+
- [ ] Add rpmIsGlob()
|
161
|
+
- [ ] Add rpmtdToPool()
|
162
|
+
- [ ] Add rpmGetArchColor()
|
163
|
+
|
164
|
+
### RPM
|
165
|
+
|
166
|
+
- [ ] RPM#expand
|
167
|
+
- [X] RPM#[]
|
168
|
+
- [X] RPM#[]=
|
169
|
+
- [ ] RPM#readrc
|
170
|
+
- [ ] RPM#init_macros
|
171
|
+
- [ ] RPM#verbosity
|
172
|
+
- [ ] RPM#verbosity=
|
173
|
+
|
174
|
+
### RPM::Package
|
175
|
+
|
176
|
+
- [X] Package#open
|
177
|
+
- [X] Package#new
|
178
|
+
- [X] Package#create
|
179
|
+
- [ ] Package#load
|
180
|
+
- [ ] Package#clear_cache
|
181
|
+
- [ ] Package#use_cache
|
182
|
+
- [X] Package#[]
|
183
|
+
- [ ] Package#delete_tag
|
184
|
+
- [X] Package#sprintf
|
185
|
+
[?] Package#signature
|
186
|
+
- [X] Package#arch
|
187
|
+
- [X] Package#name
|
188
|
+
- [X] Package#version
|
189
|
+
- [X] Package#files
|
190
|
+
- [X] Package#provides
|
191
|
+
- [X] Package#requires
|
192
|
+
- [X] Package#conflicts
|
193
|
+
- [X] Package#obsoletes
|
194
|
+
- [X] Package#changelog
|
195
|
+
- [ ] Package#add_dependency
|
196
|
+
- [ ] Package#add_string
|
197
|
+
- [ ] Package#add_string_array
|
198
|
+
- [ ] Package#add_int32
|
199
|
+
- [ ] Package#dump
|
200
|
+
- [X] Package#to_s
|
201
|
+
- [ ] Package#inspect
|
202
|
+
- [ ] Package#copy_to
|
203
|
+
|
204
|
+
### RPM::Dependency
|
205
|
+
|
206
|
+
- [X] Dependency#initialize
|
207
|
+
- [X] Dependency#name
|
208
|
+
- [X] Dependency#version
|
209
|
+
- [X] Dependency#flags
|
210
|
+
- [X] Dependency#owner
|
211
|
+
- [X] Dependency#lt?
|
212
|
+
- [X] Dependency#gt?
|
213
|
+
- [X] Dependency#eq?
|
214
|
+
- [X] Dependency#le?
|
215
|
+
- [X] Dependency#ge?
|
216
|
+
- [X] Dependency#satisfy?
|
217
|
+
- [X] Dependency#nametag
|
218
|
+
- [X] Dependency#versiontag
|
219
|
+
- [X] Dependency#flagstag
|
220
|
+
|
221
|
+
### RPM::Provide
|
222
|
+
|
223
|
+
- [X] Provide#initialize
|
224
|
+
|
225
|
+
### RPM::Require
|
226
|
+
|
227
|
+
- [X] Require#initialize
|
228
|
+
- [ ] Require#pre?
|
229
|
+
|
230
|
+
### RPM::Conflict
|
231
|
+
|
232
|
+
- [X] Conflict#initialize
|
233
|
+
|
234
|
+
### RPM::Obsolete
|
235
|
+
|
236
|
+
- [X] Obsolete#initialize
|
237
|
+
|
238
|
+
### RPM::ChangeLog
|
239
|
+
|
240
|
+
- [X] ChangeLog#time
|
241
|
+
- [X] ChangeLog#name
|
242
|
+
- [X] ChangeLog#text
|
243
|
+
|
244
|
+
### RPM::Version
|
245
|
+
|
246
|
+
- [X] Version (Comparable)
|
247
|
+
- [X] Version#initialize
|
248
|
+
- [X] Version#<=>
|
249
|
+
- [X] Version#newer?
|
250
|
+
- [X] Version#older?
|
251
|
+
- [X] Version#v
|
252
|
+
- [X] Version#r
|
253
|
+
- [X] Version#e
|
254
|
+
- [X] Version#to_s
|
255
|
+
- [X] Version#to_vre
|
256
|
+
- [X] Version#inspect
|
257
|
+
- [X] Version#hash
|
258
|
+
|
259
|
+
### RPM::File
|
260
|
+
|
261
|
+
- [X] File#initialize
|
262
|
+
- [X] File#path
|
263
|
+
- [ ] File#to_s (alias path)
|
264
|
+
- [X] File#md5sum
|
265
|
+
- [X] File#link_to
|
266
|
+
- [X] File#size
|
267
|
+
- [X] File#mtime
|
268
|
+
- [X] File#owner
|
269
|
+
- [X] File#group
|
270
|
+
- [X] File#rdev
|
271
|
+
- [X] File#mode
|
272
|
+
- [X] File#attr
|
273
|
+
- [X] File#state
|
274
|
+
- [X] File#symlink?
|
275
|
+
- [X] File#config?
|
276
|
+
- [X] File#doc?
|
277
|
+
- [X] File#donotuse?
|
278
|
+
- [X] File#missingok?
|
279
|
+
- [X] File#specfile?
|
280
|
+
- [X] File#ghost?
|
281
|
+
- [X] File#license?
|
282
|
+
- [X] File#readme?
|
283
|
+
- [X] File#exclude?
|
284
|
+
- [X] File#replaced?
|
285
|
+
- [X] File#notinstalled?
|
286
|
+
- [X] File#netshared?
|
287
|
+
|
288
|
+
### RPM::DB
|
289
|
+
|
290
|
+
- [ ] DB (Enumerable)
|
291
|
+
- [ ] DB#new
|
292
|
+
- [ ] DB#open
|
293
|
+
- [ ] DB#init
|
294
|
+
- [ ] DB#rebuild
|
295
|
+
- [ ] DB#close
|
296
|
+
- [ ] DB#closed?
|
297
|
+
- [ ] DB#root
|
298
|
+
- [ ] DB#home
|
299
|
+
- [ ] DB#writable?
|
300
|
+
- [ ] DB#each_match
|
301
|
+
- [ ] DB#each
|
302
|
+
- [ ] DB#transaction
|
303
|
+
- [ ] DB#init_iterator
|
304
|
+
- [ ] DB#dup
|
305
|
+
- [ ] DB#clone
|
306
|
+
|
307
|
+
### RPM::MatchIterator
|
308
|
+
|
309
|
+
- [X] MatchIterator (Enumerable)
|
310
|
+
- [X] MatchIterator#each
|
311
|
+
- [X] MatchIterator#next_iterator
|
312
|
+
- [X] MatchIterator#offset
|
313
|
+
- [X] MatchIterator#set_iterator_re
|
314
|
+
- [X] MatchIterator#regexp
|
315
|
+
- [X] MatchIterator#set_iterator_version
|
316
|
+
- [X] MatchIterator#version
|
317
|
+
- [X] MatchIterator#get_iterator_count
|
318
|
+
- [X] MatchIterator#length
|
319
|
+
|
320
|
+
### RPM::Transaction
|
321
|
+
|
322
|
+
- [ ] Transaction#db
|
323
|
+
- [ ] Transaction#script_file
|
324
|
+
- [ ] Transaction#script_file=
|
325
|
+
- [ ] Transaction#install
|
326
|
+
- [ ] Transaction#upgrade
|
327
|
+
- [ ] Transaction#available
|
328
|
+
- [ ] Transaction#delete
|
329
|
+
- [ ] Transaction#check
|
330
|
+
- [ ] Transaction#order
|
331
|
+
- [ ] Transaction#keys
|
332
|
+
- [ ] Transaction#commit
|
333
|
+
- [ ] Transaction#abort
|
334
|
+
- [ ] Transaction#dup
|
335
|
+
- [ ] Transaction#clone
|
336
|
+
|
337
|
+
### RPM::Source
|
338
|
+
|
339
|
+
- [ ] Source#initialize
|
340
|
+
- [ ] Source#fullname
|
341
|
+
- [ ] Source#to_s (alias fullname)
|
342
|
+
- [ ] Source#num
|
343
|
+
- [ ] Source#no?
|
344
|
+
|
345
|
+
### RPM::Patch
|
346
|
+
|
347
|
+
### RPM::Icon
|
348
|
+
|
349
|
+
### RPM::Spec
|
350
|
+
|
351
|
+
- [ ] Spec#open
|
352
|
+
- [ ] Spec#new
|
353
|
+
- [ ] Spec#buildroot
|
354
|
+
- [ ] Spec#buildsubdir
|
355
|
+
- [ ] Spec#buildarchs
|
356
|
+
- [ ] Spec#buildrequires
|
357
|
+
- [ ] Spec#build_restrictions
|
358
|
+
- [ ] Spec#sources
|
359
|
+
- [ ] Spec#packages
|
360
|
+
- [ ] Spec#build
|
361
|
+
- [ ] Spec#expand_macros
|
362
|
+
- [ ] Spec#dup
|
363
|
+
- [ ] Spec#clone
|
364
|
+
|
365
|
+
# LICENSE
|
366
|
+
|
367
|
+
* Copyright © 2025 ManageIQ Authors
|
368
|
+
* Copyright © 2011 Duncan Mac-Vicar Prett <dmacvicar@suse.de>
|
369
|
+
* Copyright © 2011 SUSE Linux Products GmbH
|
370
|
+
|
371
|
+
* This gem is a pure-ruby rewrite of ruby-rpm:
|
372
|
+
Copyright © 2002 Kenta Murata. Relicensed with his permission.
|
373
|
+
|
374
|
+
Licensed under the MIT license. See MIT-LICENSE for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
$LOAD_PATH.push(File.join(File.dirname(__FILE__), 'lib'))
|
2
|
+
require 'bundler/gem_tasks'
|
3
|
+
require 'rpm/gem_version'
|
4
|
+
require 'rake/testtask'
|
5
|
+
|
6
|
+
task default: [:test]
|
7
|
+
|
8
|
+
Rake::TestTask.new do |t|
|
9
|
+
t.libs << File.expand_path('../test', __FILE__)
|
10
|
+
t.libs << File.expand_path('../', __FILE__)
|
11
|
+
t.test_files = FileList['test/test*.rb']
|
12
|
+
t.verbose = true
|
13
|
+
t.loader = :direct
|
14
|
+
end
|
15
|
+
|
16
|
+
extra_docs = ['README*', 'TODO*', 'CHANGELOG*']
|
17
|
+
|
18
|
+
begin
|
19
|
+
require 'yard'
|
20
|
+
YARD::Rake::YardocTask.new(:doc) do |t|
|
21
|
+
t.files = ['lib/**/*.rb', *extra_docs]
|
22
|
+
t.options = ['--no-private']
|
23
|
+
end
|
24
|
+
rescue LoadError
|
25
|
+
STDERR.puts 'Install yard if you want prettier docs'
|
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'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def each_dockerfile(platform)
|
39
|
+
platform ||= "*"
|
40
|
+
Dir.glob("_docker/Dockerfile.#{platform}").each do |dockerfile|
|
41
|
+
tag = "localhost/ruby-rpm-ffi:#{File.extname(dockerfile).delete('.')}"
|
42
|
+
yield dockerfile, tag
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
desc "Build the docker images for test"
|
47
|
+
task :docker_images, [:platform] do |_t, args|
|
48
|
+
each_dockerfile(args[:platform]) do |dockerfile, tag|
|
49
|
+
sh "podman build --platform=linux/amd64 -f #{dockerfile} -t #{tag} ."
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
desc "Run the tests from within the docker images"
|
54
|
+
task :docker_test, [:platform] do |_t, args|
|
55
|
+
each_dockerfile(args[:platform]) do |dockerfile, tag|
|
56
|
+
sh "podman run --platform=linux/amd64 --rm -ti -v #{Dir.pwd}:/src #{tag} rake test"
|
57
|
+
end
|
58
|
+
end
|