Profiles use.mask file
The use.mask file can be used to mark USE flags as unavailable on a
particular profile. This can be useful for various reasons:
-
Masking hardware-specific feature flags. For example,
mmxandsseare only available onx86,altivecis only available onppcandvisis only available onsparcv9. -
Disabling unavailable soft dependencies. A simple hypothetical example — say
fooappworks onmips, but has an optional dependency (controlled by thebarflag) uponlibbar, which doesn't work onmips. Then by adding thebarflag toprofiles/arch/mips/use.mask,fooappcould be made available tomipsusers with the unresolvable dependency forcibly disabled.
Note that use.mask is a per-flag thing, not per package's use of a given
flag. This is one of the reasons that USE flags must have a specific well
defined purpose.
Updates to use.mask should be handled via the relevant arch team. Any
additions are sorted chronologically, starting at the top of the file
(underneath any comment header blocks).
See noblah USE flags for more discussion.
Stable USE masking and forcing
In addition to use.mask, use.force, package.use.mask and
package.use.force, profiles support a stable variant of each of these
files: use.stable.mask, use.stable.force,
package.use.stable.mask and package.use.stable.force. They behave
exactly like their counterparts, except that they only apply to packages which
are being merged because of a stable keyword. Packages pulled in by a
~arch keyword are unaffected.
The typical use case is a USE flag whose dependency has not been stabilized
yet. Listing the flag in package.use.stable.mask keeps it available to
~arch users, while preventing stable users from enabling something that
cannot be satisfied on a stable system. This avoids having to mask the flag
outright for everybody, or to rush the stabilization of the dependency.
As with the non-stable files, updates should be handled via the relevant arch team.