Skip to content

Commit eda6c34

Browse files
committed
Allow passing explicit releasever
I do not have "fedora-40" repos configured. I only have the normal fedora repos. Now I can use this like this: $ python fedora_revdep_check.py --repo={fedora,updates}{,-source} --releasever=43 python-dotenv 1.2.2
1 parent 17bd4d3 commit eda6c34

1 file changed

Lines changed: 19 additions & 15 deletions

File tree

fedora_revdep_check.py

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,18 @@
3737
class FedoraRevDepChecker:
3838
"""Check reverse dependencies for Fedora package updates."""
3939

40-
def __init__(self, verbose=False, base=None, repos=None):
40+
def __init__(self, verbose=False, base=None, repos=None, releasever=None):
4141
"""Initialize the checker with DNF base and cached repo data.
4242
4343
Args:
4444
verbose: Enable verbose output
4545
base: Optional DNF base object for testing (if None, creates real DNF base)
4646
repos: List of repository IDs to enable (default: ['rawhide', 'rawhide-source', 'koji', 'koji-source'])
47+
releasever: Fedora release version (e.g. '44', 'rawhide'). Auto-detected from repos if not set.
4748
"""
4849
self.verbose = verbose
4950
self.base = base
51+
self.releasever = releasever
5052
self.repos = repos if repos is not None else ['rawhide', 'rawhide-source', 'koji', 'koji-source']
5153
if self.base is None:
5254
self._init_dnf()
@@ -114,19 +116,17 @@ def _init_dnf(self):
114116
print("Initializing DNF 5 and loading repository metadata...")
115117
self.base = libdnf5.base.Base()
116118

117-
# Detect releasever from first repo name, or use 'rawhide' as default
118-
# Extract version from repo names like 'fedora-40', 'f40', or use 'rawhide'
119-
releasever = 'rawhide'
120-
if self.repos:
121-
first_repo = self.repos[0]
122-
# Check if repo contains a version number
123-
import re
124-
version_match = re.search(r'(\d+)', first_repo)
125-
if version_match:
126-
releasever = version_match.group(1)
127-
elif 'rawhide' not in first_repo.lower():
128-
# If no version found and not rawhide, still use rawhide as fallback
129-
releasever = 'rawhide'
119+
# Use explicitly provided releasever, or detect from repo names
120+
if self.releasever:
121+
releasever = self.releasever
122+
else:
123+
releasever = 'rawhide'
124+
if self.repos:
125+
first_repo = self.repos[0]
126+
import re
127+
version_match = re.search(r'(\d+)', first_repo)
128+
if version_match:
129+
releasever = version_match.group(1)
130130

131131
# Configure releasever
132132
vars_map = self.base.get_vars()
@@ -679,6 +679,7 @@ def main():
679679
%(prog)s python-requests 2.32.0 --verbose
680680
%(prog)s pytest 8.0.0 --repo fedora --repo fedora-source
681681
%(prog)s numpy 2.0.0 --repo fedora-40 --repo fedora-40-source
682+
%(prog)s pytest 8.0.0 --releasever 44
682683
"""
683684
)
684685

@@ -690,11 +691,14 @@ def main():
690691
help='Repository ID to enable (can be specified multiple times). '
691692
'Default: rawhide, rawhide-source, koji, and koji-source. '
692693
'Known repositories will be auto-configured if not in /etc/yum.repos.d/')
694+
parser.add_argument('--releasever',
695+
help='Fedora release version (e.g. 44, rawhide). '
696+
'Auto-detected from repo names if not specified.')
693697

694698
args = parser.parse_args()
695699

696700
try:
697-
checker = FedoraRevDepChecker(verbose=args.verbose, repos=args.repos)
701+
checker = FedoraRevDepChecker(verbose=args.verbose, repos=args.repos, releasever=args.releasever)
698702
results = checker.simulate_version_change(args.srpm_name, args.new_version)
699703
checker.print_results(results)
700704

0 commit comments

Comments
 (0)