3737class 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