@@ -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
1631fedora-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
2645fedora-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
3251fedora-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
751063 . 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