# 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.base.DummyPackageSet
packages = @profile @selected @system

[profile]
class = portage.sets.ProfilePackageSet.ProfilePackageSet

[selected]
class = portage.sets.files.WorldSelectedSet

[selected-packages]
class = portage.sets.files.WorldSelectedPackagesSet

[selected-sets]
class = portage.sets.files.WorldSelectedSetsSet

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

# 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

# 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

# The following treats all files in /etc/portage/sets as a package set called
# '$filename'.
[usersets]
class = portage.sets.files.StaticFileSet
multiset = true
directory =  %(PORTAGE_CONFIGROOT)setc/portage/sets
world-candidate = True

# 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

# Installed ebuilds with "live" property.
[live-rebuild]
class = portage.sets.dbapi.VariableSet
variable = PROPERTIES
includes = live

# Installed ebuilds that inherit from known live eclasses.
[deprecated-live-rebuild]
class = portage.sets.dbapi.VariableSet
variable = INHERITED
includes = bzr cvs darcs git-2 git-r3 golang-vcs mercurial subversion

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

# Installed packages that own files inside /usr/lib/xorg/modules,
# excluding the package that owns /usr/bin/Xorg.
[x11-module-rebuild]
class = portage.sets.dbapi.OwnerSet
files = /usr/lib*/xorg/modules
exclude-files = /usr/bin/Xorg

# Binary packages that have a different build time from a currently
# installed package of the exact same version.
[rebuilt-binaries]
class = portage.sets.dbapi.RebuiltBinaries

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

# Installed packages for which there are no visible ebuilds
# corresponding to the same $CATEGORY/$PN:$SLOT.
[unavailable]
class = portage.sets.dbapi.UnavailableSet

# Installed packages for which corresponding binary packages
# are not available.
[unavailable-binaries]
class = portage.sets.dbapi.UnavailableBinaries

# Installed packages for which vdb *DEPEND entries are outdated compared
# to the matching portdb entry.
[changed-deps]
class = portage.sets.dbapi.ChangedDepsSet
