# WARNING: default set configuration, DO NOT CHANGE.
# If you want to change anything redefine the relevant section in 
# /etc/portage/sets.conf. Any changes to this file will be lost on the next 
# portage update, and configuration errors here might upset portage in 
# unexpected ways.

# Not much that could be changed for world, so better leave it alone
[world]
class = portage.sets.files.WorldSet
world-candidate = False

# Same as for world, though later portage versions might use a different class
[system]
class = portage.sets.profiles.PackagesSystemSet
world-candidate = False

# For security there are multiple classes available, but differences are 
# rather small (normally there should be no visible difference):
# - AffectedSet: include all GLSAs that cover a vulnerable package
# - NewAffectedSet: include all GLSAs that cover a vulnerable package and 
#   haven't been applied previously
# - NewGlsaSet: include all GLSAs that haven't been applied
# - SecuritySet: include all GLSAs
[security]
class = portage.sets.security.NewAffectedSet
world-candidate = False

# A superset of the classic <parameter>world</parameter> target, a set created
# by this class contains SLOT atoms to match all installed packages. Note that
# use of this set makes it impossible for emerge to solve blockers by automatic
# uninstallation of blocked packages.
[installed]
class = portage.sets.dbapi.EverythingSet
world-candidate = False

# The following treats all files in /etc/portage/sets as a package set called
# '$filename'.
[usersets]
class = portage.sets.files.StaticFileSet
multiset = true
directory = /etc/portage/sets

# Set to rebuild all packages that need a preserved lib that only remains due
# to FEATURES=preserve-libs
[preserved-rebuild]
class = portage.sets.libs.PreservedLibraryConsumerSet
world-candidate = False

# Installed ebuilds that inherit from known live eclasses.
[live-rebuild]
class = portage.sets.dbapi.VariableSet
world-candidate = False
variable = INHERITED
includes = cvs darcs git mercurial subversion

# Installed packages that own files inside /lib/modules.
[module-rebuild]
class = portage.sets.dbapi.OwnerSet
world-candidate = False
files = /lib/modules

# Installed packages for which the highest visible ebuild
# version is lower than the currently installed version.
[downgrade]
class = portage.sets.dbapi.DowngradeSet
world-candidate = False
