@@ -341,6 +341,7 @@ def __init__(self):
341
341
self ._download_location = None
342
342
self ._md_hashes = {}
343
343
self ._enabled_system_repositories = []
344
+ self ._repositories_loaded = False
344
345
self ._query_environments = None
345
346
self ._query_groups = None
346
347
@@ -428,6 +429,7 @@ def reset_base(self):
428
429
self ._download_location = None
429
430
self ._md_hashes = {}
430
431
self ._enabled_system_repositories = []
432
+ self ._repositories_loaded = False
431
433
log .debug ("The DNF base has been reset." )
432
434
433
435
def configure_base (self , data : PackagesConfigurationData ):
@@ -481,6 +483,9 @@ def default_environment(self):
481
483
482
484
@property
483
485
def _environments (self ):
486
+ if not self ._repositories_loaded :
487
+ log .warning ("There is no metadata about environments and groups!" )
488
+ return []
484
489
if self ._query_environments is None :
485
490
self ._query_environments = libdnf5 .comps .EnvironmentQuery (self ._base )
486
491
return self ._query_environments
@@ -570,6 +575,9 @@ def _get_environment_data(self, env) -> CompsEnvironmentData:
570
575
571
576
@property
572
577
def _groups (self ):
578
+ if not self ._repositories_loaded :
579
+ log .warning ("There is no metadata about environments and groups!" )
580
+ return []
573
581
if self ._query_groups is None :
574
582
self ._query_groups = libdnf5 .comps .GroupQuery (self ._base )
575
583
return self ._query_groups
@@ -781,9 +789,9 @@ def is_package_available(self, package_spec):
781
789
:param package_spec: a package spec
782
790
:return: True if the package can be installed, otherwise False
783
791
"""
784
- # if not self._base.sack :
785
- # log.warning("There is no metadata about packages!")
786
- # return False
792
+ if not self ._repositories_loaded :
793
+ log .warning ("There is no metadata about packages!" )
794
+ return False
787
795
788
796
query = libdnf5 .rpm .PackageQuery (self ._base )
789
797
query .filter_name ([package_spec ])
@@ -797,9 +805,9 @@ def match_available_packages(self, pattern):
797
805
:param pattern: a pattern for package names
798
806
:return: a list of matched package names
799
807
"""
800
- # if not self._base.sack :
801
- # log.warning("There is no metadata about packages!")
802
- # return []
808
+ if not self ._repositories_loaded :
809
+ log .warning ("There is no metadata about packages!" )
810
+ return []
803
811
804
812
query = libdnf5 .rpm .PackageQuery (self ._base )
805
813
query .filter_name ([pattern ], libdnf5 .common .QueryCmp_GLOB )
@@ -1064,6 +1072,9 @@ def _create_repository(self, data: RepoConfigurationData):
1064
1072
:param RepoConfigurationData data: a repo configuration
1065
1073
return dnf.repo.Repo: a DNF repository
1066
1074
"""
1075
+ if self ._repositories_loaded :
1076
+ raise RuntimeError ("Cannot create a new repository. Repositories were already loaded." )
1077
+
1067
1078
repo_sack = self ._base .get_repo_sack ()
1068
1079
repo = repo_sack .create_repo (data .name )
1069
1080
config = simplify_config (repo .get_config ())
@@ -1253,6 +1264,7 @@ def load_repositories(self):
1253
1264
except RuntimeError as e :
1254
1265
log .warning (str (e ))
1255
1266
raise MetadataError (str (e )) from None
1267
+ self ._repositories_loaded = True
1256
1268
log .info ("Loaded repositories." )
1257
1269
1258
1270
def load_repomd_hashes (self ):
0 commit comments