@@ -597,17 +597,33 @@ def apply_specs(self, include_list, exclude_list):
597
597
:param include_list: a list of specs for inclusion
598
598
:param exclude_list: a list of specs for exclusion
599
599
"""
600
+ comps_excludes = []
601
+ package_excludes = []
602
+ for spec in exclude_list :
603
+ if spec .startswith ("@" ):
604
+ comps_excludes .append (spec [1 :])
605
+ else :
606
+ package_excludes .append (spec )
607
+
608
+ log .info ("Excluding package specs: %s" , package_excludes )
609
+ excludes = libdnf5 .rpm .PackageQuery (self ._base )
610
+ excludes .filter_name (package_excludes , libdnf5 .common .QueryCmp_GLOB )
611
+ self ._base .get_rpm_package_sack ().add_user_excludes (excludes )
612
+
613
+ log .info ("Excluding comps specs: %s" , comps_excludes )
614
+ comps_sack = self ._base .get_comps_sack ()
615
+ excludes = libdnf5 .comps .EnvironmentQuery (self ._base )
616
+ excludes .filter_environmentid (comps_excludes , libdnf5 .common .QueryCmp_GLOB )
617
+ comps_sack .add_user_environment_excludes (excludes )
618
+ excludes = libdnf5 .comps .GroupQuery (self ._base )
619
+ excludes .filter_groupid (comps_excludes , libdnf5 .common .QueryCmp_GLOB )
620
+ comps_sack .add_user_group_excludes (excludes )
621
+
600
622
log .info ("Including specs: %s" , include_list )
601
623
for spec in include_list :
602
624
self ._goal .add_install (spec )
603
625
self ._goal_skip_unavailable .add_install (spec )
604
626
605
- log .info ("Excluding specs: %s" , exclude_list )
606
- # FIXME: Make the excludes work also for groups. Right now, only packages are excluded.
607
- excludes = libdnf5 .rpm .PackageQuery (self ._base )
608
- excludes .filter_name (exclude_list , libdnf5 .common .QueryCmp_GLOB )
609
- self ._base .get_rpm_package_sack ().add_user_excludes (excludes )
610
-
611
627
def resolve_selection (self ):
612
628
"""Resolve the software selection."""
613
629
report = ValidationReport ()
0 commit comments