User:Ris/tmp/RequiredUseFlags

Some packages depend on other packages having particular USE flags set, these are required USE flags. In this case, when trying to emerge a package Portage will sometimes state that a dependency will require specific USE flag to be set or unset.

There are also packages for which activating a USE flag will require the setting or unsettling of other USE flags. This case usually comes about when a compile time option is exclusive of others, or needs another option to be set. Think of the example of a package that uses an audio backend - it could have a choice of two backends, but only one may be active at once. All USE flag constraints run along this model, but can be a bit more complex, depending on how a package was developed.

The requirements must be met for Portage to be able to proceed with installation. They impose a decision on the user, to set up USE flags in a way to permit installation.

When USE flags are required, Portage outputs a code, such as: The following REQUIRED_USE flag constraints are unsatisfied: ? ()

The active USE flag that imposes a constraint comes first and is followed by a question mark ("?"), followed by the flag or flags that the activation of the first flag requires. Requirements can be chained, if flag X requires flag Y, that in turn requires flag Z.

As well as requiring the activation of certain flags, USE flag constraints can sometimes require the deactivation of a flag or flags. In this case, the flag that must be deactivated to satisfy the constraint is preceded by an exclamation mark ("!").

? ( ( !) !)

Required USE flags are not activated automatically, in order that the user choose explicitly what the desired behavior.