Skip to content

Commit 9ec7500

Browse files
committed
Make it possible to get new provides from RPM files
1 parent 17bd4d3 commit 9ec7500

5 files changed

Lines changed: 1130 additions & 19 deletions

File tree

README.md

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,49 @@ Requires `libdnf5` (system package, not from PyPI) and configured Fedora reposit
1212

1313
## Usage
1414

15+
### Check RPM files (recommended)
16+
17+
Check actual RPM files from a build before pushing to repositories:
18+
19+
```bash
20+
fedora-revdep-check --rpms /path/to/build/*.rpm [options]
21+
fedora-revdep-check --rpm-dir /path/to/build/RPMS/noarch/ [options]
22+
```
23+
24+
This reads the actual provides from the RPM files, including their exact versions, which is more accurate than simulating version changes.
25+
26+
### Simulate version change (legacy mode)
27+
28+
Simulate updating a package to a new version:
29+
1530
```bash
1631
fedora-revdep-check <srpm-name> <new-version> [options]
1732
```
1833

34+
**Note**: This mode assumes all binary RPMs and their provides will have the same version, which may not always be accurate.
35+
1936
### Examples
2037

2138
```bash
22-
# Check rawhide (default)
23-
fedora-revdep-check jupyterlab 4.7.0
39+
# Check RPM files from a build (recommended)
40+
fedora-revdep-check --rpms ~/rpmbuild/RPMS/noarch/*.rpm
41+
fedora-revdep-check --rpm-dir ~/koji-download/python-sphinx-9.1.0-1.fc45/
2442

25-
# Verbose output
43+
# Legacy mode: simulate version change
44+
fedora-revdep-check jupyterlab 4.7.0
2645
fedora-revdep-check pytest 8.0.0 --verbose
2746

2847
# Use stable Fedora instead of rawhide
29-
fedora-revdep-check numpy 2.0.0 --repo fedora --repo fedora-source
48+
fedora-revdep-check --rpms *.rpm --repo fedora --repo fedora-source
3049

3150
# Check specific Fedora version
3251
fedora-revdep-check python-requests 2.32.0 --repo fedora-40 --repo fedora-40-source
3352
```
3453

3554
### Options
3655

56+
- `--rpms FILE [FILE ...]` - RPM file(s) to check
57+
- `--rpm-dir DIR` - Directory containing RPM files to check
3758
- `-v, --verbose` - Show detailed analysis
3859
- `-r, --repo <repo-id>` - Repository to enable (can be specified multiple times, default: rawhide, rawhide-source, koji, and koji-source)
3960

@@ -70,14 +91,25 @@ The tool distinguishes between:
7091

7192
## How It Works
7293

73-
1. Finds all binary packages built from the SRPM
74-
2. Extracts their provides (excluding bundled)
94+
### RPM File Mode (Recommended)
95+
96+
1. Reads RPM files and extracts their provides with actual versions
97+
2. Determines the source package name from the RPM headers
98+
3. Finds reverse dependencies for each provide in Fedora repositories
99+
4. Checks if each requirement would be satisfied by the provides in the RPM files
100+
5. Reports packages that would fail to build or install
101+
102+
### Legacy Mode (Version Simulation)
103+
104+
1. Finds all binary packages built from the SRPM in repositories
105+
2. Extracts their provides and simulates them with the new version
75106
3. Finds reverse dependencies for each provide
76-
4. Filters to latest versions only (no duplicates)
77-
5. Checks if the new version satisfies all requirements
78-
6. Reports packages that would fail to build or install
107+
4. Checks if the simulated new version satisfies all requirements
108+
5. Reports packages that would fail to build or install
109+
110+
**Note**: Both modes automatically exclude packages from the same SRPM (they'll be updated together).
79111

80-
Packages from the same SRPM are automatically excluded (they'll be updated together).
112+
**Note**: Both modes distinguish between new conflicts and already-broken packages to avoid false positives.
81113

82114
## Development
83115

0 commit comments

Comments
 (0)