.TH "MAKE.CONF" "5" "Jan 2015" "Portage VERSION" "Portage"
.SH "NAME"
make.conf \- custom settings for Portage
.SH "SYNOPSIS"
\fB/etc/make.conf\fR and \fB/etc/portage/make.conf\fR
.SH "DESCRIPTION"

This file contains various variables that are used by Portage. The file has a
newline\-delimited list of \fI<key>=<value>\fR pairs (see the default file for
examples) which are accessible from the environment of ebuilds. It supports
simple shell\-like expansion of the form \fIvar="${var}"\fR, the source
keyword and variable substitution, but not some of the more advanced BASH
features like arrays and special parameter expansions. For more details, see
the Simple lexical analysis documentation:
\fLhttp://docs.python.org/3/library/shlex.html\fR. Note that if you source
files, they need to be in the same shlex syntax for portage to read them.
If make.conf is a directory, then all the files in that directory will
be sorted in ascending alphabetical order by file name and summed
together as if it were a single file.
.br
Portage will check the currently\-defined environment variables
first for any settings.  If no environment settings are found,
Portage then checks the make.conf files. Both /etc/make.conf and
/etc/portage/make.conf are checked (if present), and settings from
/etc/portage/make.conf will override settings from /etc/make.conf.
If no setting is found in the make.conf files, Portage checks
make.globals. If no
setting is found there, the profile's default setting is grabbed
from /etc/portage/make.profile/make.defaults. Please note that all user
settings should be made in the environment or in the make.conf
files, which are intended to be customized by the user.
.br
Exceptions are incremental variables such as USE, CONFIG_PROTECT*,
and ACCEPT_KEYWORDS.  Incremental variables are propagated down from
make.defaults to make.globals to make.conf to the environment
settings.  Clearing these variables requires a clear\-all as in:
export USE="\-*"
.br
In order to create per\-package environment settings, refer to
\fBpackage.env\fR in \fBportage\fR(5).
.SH "VARIABLES"
.TP
\fBACCEPT_CHOSTS\fR = \fI[space delimited list of CHOST values]\fR
Specifies acceptable \fBCHOST\fR values. Regular
expression syntax is supported, so it is necessary to escape
\fBCHOST\fR characters if they have special meaning in regular expressions.
.br
Defaults to the value of $CHOST.
.TP
\fBACCEPT_KEYWORDS\fR = \fI[space delimited list of KEYWORDS]\fR
Enable testing of ebuilds that have not yet been deemed 'stable'.  Users
of the 'x86' architecture would set this to '~x86' while ppc users would
set this to '~ppc'.  This is an incremental variable.  Only define a
~arch.
.br
Defaults to the value of $ARCH.
.TP
\fBACCEPT_LICENSE\fR = \fI[space delimited list of licenses or groups]\fR
This variable is used to mask packages based on licensing restrictions. It
may contain both license and group names, where group names are prefixed
with the '@' symbol. License groups are defined in the \fIlicense_groups\fR
file (see \fBportage\fR(5)). In addition to license and group names, the
\fI*\fR and \fI-*\fR wildcard tokens are also supported. Refer to GLEP 23
for further information:
\fIhttp://www.gentoo.org/proj/en/glep/glep-0023.html\fR.
.br
Defaults to the value of * -@EULA.
.br
.I Examples:
.nf
# Only accept licenses in the FREE license group (i.e. Free Software)
ACCEPT_LICENSE="-* @FREE"
# As before, but exclude the "Artistic" license
ACCEPT_LICENSE="-* @FREE -Artistic"
# Accept any license except those in the EULA license group (default)
ACCEPT_LICENSE="* -@EULA"
.fi
.TP
\fBACCEPT_PROPERTIES\fR = \fI[space delimited list of properties]\fR
This variable is used to mask packages based on PROPERTIES restrictions.
In addition to property names, the \fI*\fR and \fI-*\fR wildcard tokens are
also supported. This variable can be temporarily overridden using the
\fB\-\-accept\-properties\fR option of \fBemerge\fR(1).
See \fBebuild\fR(5) for more information about PROPERTIES.
.br
Defaults to the value of *.
.br
.I Examples:
.nf
# Accept any properties
ACCEPT_PROPERTIES="*"
# Accept any properties except the "interactive" property
ACCEPT_PROPERTIES="* -interactive"
.fi
.TP
\fBACCEPT_RESTRICT\fR = \fI[space delimited list of RESTRICT tokens]\fR
This variable is used to mask packages based on RESTRICT tokens.
In addition to RESTRICT tokens, the \fI*\fR and \fI-*\fR wildcard tokens are
also supported. This variable can be temporarily overridden using the
\fB\-\-accept\-restrict\fR option of \fBemerge\fR(1).
See \fBebuild\fR(5) for more information about RESTRICT.
.br
Defaults to the value of *.
.br
.I Examples:
.nf
# Accept any restrict tokens
ACCEPT_RESTRICT="*"
# Accept any tokens except "bindist"
ACCEPT_RESTRICT="* -bindist"
.fi
.TP
.B CBUILD
This variable is passed by the \fIebuild scripts\fR to the \fIconfigure\fR
as \fI\-\-build=${CBUILD}\fR only if it is defined.  Do not set this yourself
unless you know what you are doing.
.TP
\fBCCACHE_DIR\fR = \fI[path]\fR
Defines the location of the ccache working directory.  See the \fBccache\fR(1)
man page for more information.
.br
Defaults to /var/tmp/ccache
.TP
\fBCCACHE_SIZE\fR = \fI"size"\fR
This controls the space use limitations for ccache.  See the \fI\-M\fR flag in
the \fBccache\fR(1) man page for more information.
.TP
.B CFLAGS CXXFLAGS
Use these variables to set the desired optimization/CPU instruction settings
for applications that you compile.  These two variables are passed to the C
and C++ compilers, respectively. (CXX is used to refer to the C++ compiler
within many buildsystems.) Nearly all ebuild files will take advantage
of your custom settings, resulting in a Gentoo Linux that is fully customized
to your specifications.  Please use sane settings as some packages will fail to
compile/run if the optimizations are too extreme.

For more information, see the \fIInvoking GCC\fR section of the gcc manual:
.br
http://gcc.gnu.org/onlinedocs/
.TP
.B CHOST
This variable is passed by the \fIebuild scripts\fR to the \fIconfigure\fR
step as \fI\-\-host=${CHOST}\fR.  This way you can force the build\-host.

For more information:
.br
http://gcc.gnu.org/onlinedocs/gcc\-4.1.1/gcc/Submodel\-Options.html
.br
http://gcc.gnu.org/onlinedocs/gcc\-3.3/gcc/Submodel\-Options.html
.br
http://gcc.gnu.org/onlinedocs/gcc\-3.2/gcc/Submodel\-Options.html
.br
http://gcc.gnu.org/onlinedocs/gcc\-2.95.3/gcc_2.html
.TP
\fBCLEAN_DELAY\fR = \fIinteger\fR
Determines how long the countdown delay will be after running
`emerge --unmerge`.
.br
Defaults to 5 seconds.
.TP
\fBCOLLISION_IGNORE\fR = \fI[space delimited list of fnmatch patterns]\fR
This variable allows the user to disable \fIcollision\-protect\fR and
\fIprotect\-owned\fR for specific \fBfnmatch\fR(3) patterns. For backward
compatibility, directories that are listed without a fnmatch pattern will
automatically have /* appended to them.
.br
Defaults to "/lib/modules/* *.py[co]".
.TP
\fBCONFIG_PROTECT\fR = \fI[space delimited list of files and/or directories]\fR
All files and/or directories that are defined here will have "config file
protection" enabled for them. See the \fBCONFIGURATION FILES\fR section
of \fBemerge\fR(1) for more information.
.TP
\fBCONFIG_PROTECT_MASK\fR = \fI[space delimited list of files and/or \
directories]\fR
All files and/or directories that are defined here will have "config file
protection" disabled for them. See the \fBCONFIGURATION FILES\fR section
of \fBemerge\fR(1) for more information.
.TP
.B CTARGET
This variable is passed by the \fIebuild scripts\fR to the \fIconfigure\fR
as \fI\-\-target=${CTARGET}\fR only if it is defined.
.TP
.B DCO_SIGNED_OFF_BY
This variable may contain a name and email address which will be used by
\fBrepoman\fR(1) to add a Signed\-off\-by line to each commit message.
.TP
\fBDISTDIR\fR = \fI[path]\fR
Defines the location of your local source file repository. After packages
are built, it is safe to remove any and all files from this directory since
they will be automatically fetched on demand for a given build. If you would
like to selectively prune obsolete files from this directory, see
\fBeclean\fR(1) from the gentoolkit package.

Use the \fBPORTAGE_RO_DISTDIRS\fR variable to specify one or
more read-only directories containing distfiles.

Note
that locations under /usr/portage are not necessarily safe for data storage.
See the \fBPORTDIR\fR documentation for more information.
.br
Defaults to /usr/portage/distfiles.
.TP
.B DOC_SYMLINKS_DIR
If this variable contains a directory then symlinks to html documentation will
be installed into it.
.TP
.B EBEEP_IGNORE
Defines whether or not to ignore audible beeps when displaying important
informational messages.  This variable is unset by default.
.TP
.B EMERGE_DEFAULT_OPTS
Options to append to the end of the \fBemerge\fR(1) command line on every
invocation. These options will not be appended to the command line if
\-\-ignore\-default\-opts is specified.
.TP
.B EMERGE_LOG_DIR
Controls the location of emerge.log and emerge-fetch.log.
.br
Defaults to /var/log.
.TP
\fBEMERGE_WARNING_DELAY\fR = \fIinteger\fR
Determines how long the countdown delay will be after running
`emerge --unmerge` for a system package.
.br
Defaults to 10 seconds.
.TP
.B EPAUSE_IGNORE
Defines whether or not to ignore short pauses that occur when displaying
important informational messages.  This variable is unset by default.
If it is set to any value pauses are ignored.
.TP
\fBEXTRA_ECONF\fR = \fI[configure options string]\fR
Contains additional options that \fBeconf\fR will append to configure
script arguments (see \fBebuild\fR(5)).
.TP
\fBFEATURES\fR = \fI"sandbox"\fR
Defines actions portage takes by default. This is an incremental variable.
Most of these settings are for developer use, but some are available to
non-developers as well. The \fBsandbox\fR feature is very important and
should not be disabled by default.
.RS
.TP
.B assume\-digests
When commiting work to cvs with \fBrepoman\fR(1), assume that all existing
SRC_URI digests are correct.  This feature also affects digest generation via
\fBebuild\fR(1) and \fBemerge\fR(1) (emerge generates digests only when the
\fIdigest\fR feature is enabled). Existing digests for files that do not exist
in ${DISTDIR} will be automatically assumed even when \fIassume\-digests\fR is
not enabled. If a file exists in ${DISTDIR} but its size does not match the
existing digest, the digest will be regenerated regardless of whether or
not \fIassume\-digests\fR is enabled. The \fBebuild\fR(1) \fBdigest\fR command
has a \fB\-\-force\fR option that can be used to force regeneration of digests.
.TP
.B binpkg\-logs
Keep logs from successful binary package merges. This is relevant only when
\fBPORT_LOGDIR\fR is set.
.TP
.B binpkg\-multi\-instance
Enable support for multiple binary package instances per ebuild.
Having multiple instances is useful for a number of purposes, such as
retaining builds that were built with different USE flags or linked
against different versions of libraries. The location of any particular
package within PKGDIR can be expressed as follows:

	${PKGDIR}/${CATEGORY}/${PN}/${PF}\-${BUILD_ID}.xpak

The build\-id starts at 1 for the first build of a particular ebuild,
and is incremented by 1 for each new build. It is possible to share a
writable PKGDIR over NFS, and locking ensures that each package added
to PKGDIR will have a unique build\-id. It is not necessary to migrate
an existing PKGDIR to the new layout, since portage is capable of
working with a mixed PKGDIR layout, where packages using the old layout
are allowed to remain in place.

The new PKGDIR layout is backward\-compatible with binhost clients
running older portage, since the file format is identical, the
per\-package PATH attribute in the 'Packages' index directs them to
download the file from the correct URI, and they automatically use
BUILD_TIME metadata to select the latest builds.

There is currently no automated way to prune old builds from PKGDIR,
although it is possible to remove packages manually, and then run
\(aqemaint \-\-fix binhost' to update the ${PKGDIR}/Packages index.
.TP
.B buildpkg
Binary packages will be created for all packages that are merged. Also see
\fBquickpkg\fR(1) and \fBemerge\fR(1) \fB\-\-buildpkg\fR and
\fB\-\-buildpkgonly\fR options.
.TP
.B buildsyspkg
Build binary packages for just packages in the system set.
.TP
.B candy
Enable a special progress indicator when \fBemerge\fR(1) is calculating
dependencies.
.TP
.B case\-insensitive\-fs
Use case\-insensitive file name comparisions when merging and unmerging
files. Most users should not enable this feature, since most filesystems
are case\-sensitive. You should only enable this feature if you are
using portage to install files to a case\-insensitive filesystem.
.TP
.B ccache
Enable portage support for the ccache package.  If the ccache dir is not
present in the user's environment, then portage will default to
${PORTAGE_TMPDIR}/ccache.

\fBWarning\fR: This feature is known to cause numerous compilation failures.
Sometimes ccache will retain stale code objects or corrupted files, which can
lead to packages that cannot be emerged. If this happens (if you receive errors
like "File not recognized: File truncated"), try recompiling the application
with ccache disabled before reporting a bug. Unless you are doing development
work, do not enable ccache.
.TP
.B cgroup
Use Linux control group to control processes spawned by ebuilds. This allows
emerge to safely kill all subprocesses when ebuild phase exits.
.TP
.B clean\-logs
Enable automatic execution of the command specified by the
PORT_LOGDIR_CLEAN variable. The default PORT_LOGDIR_CLEAN setting will
remove all files from PORT_LOGDIR that were last modified at least 7
days ago.
.TP
.B collision\-protect
A QA\-feature to ensure that a package doesn't overwrite files it doesn't own.
The \fICOLLISION_IGNORE\fR variable can be used to selectively disable this
feature. Also see the related \fIprotect\-owned\fR feature.
.TP
.B compress\-build\-logs
The causes all build logs to be compressed while they are being written.
Log file names have an extension that is appropriate for the compression
type. Currently, only \fBgzip\fR(1) compression is supported, so build
logs will have a '.gz' extension when this feature is enabled.
.TP
.B compress\-index
If set then a compressed copy of 'Packages' index file will be written.
This feature is intended for Gentoo binhosts using certain webservers
(such as, but not limited to, Nginx with gzip_static module) to avoid
redundant on\-the\-fly compression.  The resulting file will be called
\[aq]Packages.gz' and its modification time will match that of 'Packages'.
.TP
.B compressdebug
Compress the debug sections in the split debug files with zlib to save
space.  Make sure you have built both binutils and gdb with USE=zlib
support for this to work.  See \fBsplitdebug\fR for general split debug
information (upon which this feature depends).
.TP
.B config\-protect\-if\-modified
This causes the \fBCONFIG_PROTECT\fR behavior to be skipped for files
that have not been modified since they were installed. This feature is
enabled by default.
.TP
.B digest
Autogenerate digests for packages when running the
\fBemerge\fR(1), \fBebuild\fR(1), or \fBrepoman\fR(1) commands. If
the \fIassume\-digests\fR feature is also enabled then existing SRC_URI digests
will be reused whenever they are available.
.TP
.B distcc
Enable portage support for the distcc package.
.TP
.B distcc\-pump
Enable portage support for the distcc package with pump mode.
.TP
.B distlocks
Portage uses lockfiles to ensure competing instances don't clobber
each other's files. This feature is enabled by default but may cause
heartache on less intelligent remote filesystems like NFSv2 and some
strangely configured Samba server (oplocks off, NFS re\-export). A tool
/usr/lib/portage/bin/clean_locks exists to help handle lock issues
when a problem arises (normally due to a crash or disconnect).
.TP
.B downgrade\-backup
When a package is downgraded to a lower version, call \fBquickpkg\fR(1)
in order to create a backup of the installed version before it is
unmerged (if a binary package of the same version does not already
exist). Also see the related \fIunmerge\-backup\fR feature.
.TP
.B ebuild\-locks
Use locks to ensure that unsandboxed ebuild phases never execute
concurrently. Also see \fIparallel\-install\fR.
.TP
.B fail\-clean
Clean up temporary files after a build failure. This is particularly useful
if you have \fBPORTAGE_TMPDIR\fR on tmpfs. If this feature is enabled, you
probably also want to enable \fBPORT_LOGDIR\fR in order to save the build log.
Both the \fBebuild\fR(1) command and the \fInoclean\fR feature cause the
\fIfail\-clean\fR feature to be automatically disabled.
.TP
.B fakeroot
Enable fakeroot for the install and package phases when a non-root user runs
the \fBebuild\fR(1) command.
.TP
.B fixlafiles
Modifies .la files to not include other .la files and some other
fixes (order of flags, duplicated entries, ...)
.TP
.B force\-mirror
Only fetch files from configured mirrors, ignoring \fBSRC_URI\fR,
except when \fImirror\fR is in the \fBebuild\fR(5) \fBRESTRICT\fR variable.
.TP
.B force\-prefix
Enable prefix support for all ebuilds, regardless of EAPI, since older EAPIs
would otherwise be useless with prefix configurations. This brings
compatibility with the prefix branch of portage, which also supports EPREFIX
for all EAPIs (for obvious reasons).
.TP
.B getbinpkg
Force emerges to always try to fetch files from the \fIPORTAGE_BINHOST\fR.  See
\fBmake.conf\fR(5) for more information.
.TP
.B installsources
Install source code into /usr/src/debug/${CATEGORY}/${PF} (also see
\fBsplitdebug\fR). This feature works only if debugedit is installed and CFLAGS
is set to include debug information (such as with the \-ggdb flag).
.TP
.B ipc\-sandbox
Isolate the ebuild phase functions from host IPC namespace. Supported
only on Linux. Requires IPC namespace support in kernel.
.TP
.B keeptemp
Do not delete the ${T} directory after the merge process.
.TP
.B keepwork
Do not delete the ${WORKDIR} directory after the merge process. ${WORKDIR} can
then be reused since this feature disables most of the clean phase that runs
prior to each build. Due to lack of proper cleanup, this feature can
interfere with normal emerge operation and therefore it should not be left
enabled for more than a short period of time.
.TP
.B lmirror
When \fImirror\fR is enabled in \fBFEATURES\fR, fetch files even
when \fImirror\fR is also in the \fBebuild\fR(5) \fBRESTRICT\fR variable.
Do \fBNOT\fR use \fIlmirror\fR for clients that need to override \fBRESTRICT\fR
when fetching from a local mirror, but instead use a "local" mirror setting
in \fI/etc/portage/mirrors\fR, as described in \fBportage\fR(5).
.TP
.B merge\-sync
After a package is merged or unmerged, sync relevant files to
disk in order to avoid data\-loss in the event of a power failure.
This feature is enabled by default.
.TP
.B metadata\-transfer
Automatically perform a metadata transfer when `emerge \-\-sync` is run.
In versions of portage >=2.1.5, this feature is disabled by
default. When metadata\-transfer is disabled, metadata cache from the
${repository_location}/metadata/md5\-cache/ directory will be used directly
(if available).
.TP
.B mirror
Fetch everything in \fBSRC_URI\fR regardless of \fBUSE\fR settings,
except do not fetch anything when \fImirror\fR is in \fBRESTRICT\fR.
.TP
.B multilib\-strict
Many Makefiles assume that their libraries should go to /usr/lib, or
$(prefix)/lib. This assumption can cause a serious mess if /usr/lib
isn't a symlink to /usr/lib64. To find the bad packages, we have a
portage feature called \fImultilib\-strict\fR. It will prevent emerge
from putting 64bit libraries into anything other than (/usr)/lib64.
.TP
.B network\-sandbox
Isolate the ebuild phase functions from host network interfaces.
Supported only on Linux. Requires network namespace support in kernel.
.TP
.B network\-sandbox\-proxy
Enable escaping network-sandbox through SOCKSv5 proxy. Enabling distcc
feature also enables the proxy.

If asyncio Python module is available (requires Python 3.3, built-in
since Python 3.4) Portage will additionally spawn an isolated SOCKSv5
proxy on UNIX socket. The socket address will be exported
as PORTAGE_SOCKS5_PROXY and the processes running inside the sandbox
can use it to access host's network when desired. Portage automatically
configures new enough distcc to use the proxy.
.TP
.B news
Enable GLEP 42 news support. See
\fIhttp://www.gentoo.org/proj/en/glep/glep-0042.html\fR.
.TP
.B noauto
When utilizing \fBebuild\fR(1), only run the function requested. Also, forces
the corresponding ebuild and eclasses to be sourced again for each phase, in
order to account for modifications.
.TP
.B noclean
Do not delete the the source and temporary files after the merge process.
.TP
.B nodoc
Do not install doc files (/usr/share/doc).
.TP
.B noinfo
Do not install info pages.
.TP
.B noman
Do not install manpages.
.TP
.B nostrip
Prevents the stripping of binaries that are merged to the live filesystem.
.TP
.B notitles
Disables xterm titlebar updates (which contains status info).
.TP
.B parallel\-fetch
Fetch in the background while compiling. Run
`tail \-f /var/log/emerge\-fetch.log` in a
terminal to view parallel-fetch progress.
.TP
.B parallel\-install
Use finer\-grained locks when installing packages, allowing for greater
parallelization. For additional parallelization, disable
\fIebuild\-locks\fR.
.TP
.B prelink\-checksums
If \fBprelink\fR(8) is installed then use it to undo any prelinks on files
before computing checksums for merge and unmerge. This feature is
useful only if \fBprelink\fR(8) is installed and accurate checksums (despite
prelinking) are needed for some reason such as for checking the integrity of
installed files or because the \fIunmerge\-orphans\fR feature is disabled.

Note that normal emerging of packages from source computes the
checksums before things will be prelinked, so in such cases, this
feature isn't required either. Undoing prelinking while merging is
only required when using tools like \fBquickpkg\fR(1) which can cause
already prelinked files to be merged.
.TP
.B preserve\-libs
Preserve libraries when the sonames change during upgrade or downgrade.
Libraries are preserved only if consumers of those libraries are detected.
Preserved libraries are automatically removed when there are no remaining
consumers. Run `emerge @preserved\-rebuild` in order to rebuild all
consumers of preserved libraries.
.TP
.B protect\-owned
This is identical to the \fIcollision\-protect\fR feature except that files
may be overwritten if they are not explicitly listed in the contents of a
currently installed package. This is particularly useful on systems that
have lots of orphan files that have been left behind by older versions
of portage that did not support the \fIunmerge\-orphans\fR feature. Like
\fIcollision\-protect\fR, the \fICOLLISION_IGNORE\fR variable can be used to
selectively disable this feature. It is recommended to leave either
\fIprotect\-owned\fR or \fIcollision\-protect\fR enabled at all times,
since otherwise file collisions between packages may result in files being
overwritten or uninstalled at inappropriate times.
If \fIcollision\-protect\fR is enabled then it takes precedence over
\fIprotect\-owned\fR.
.TP
.B python\-trace
Output a verbose trace of python execution to stderr when a command's
\-\-debug option is enabled.
.TP
.B sandbox
Enable sandbox\-ing when running \fBemerge\fR(1) and \fBebuild\fR(1).
.TP
.B sesandbox
Enable SELinux sandbox\-ing.  Do not toggle this \fBFEATURE\fR yourself.
.TP
.B sfperms
Stands for Smart Filesystem Permissions.  Before merging packages to the
live filesystem, automatically search for and set permissions on setuid
and setgid files.  Files that are setuid have the group and other read
bits removed while files that are setgid have the other read bit removed.
See also \fIsuidctl\fR below.
.TP
.B sign
When commiting work to cvs with \fBrepoman\fR(1), sign the Manifest with
a GPG key.  Read about the \fIPORTAGE_GPG_KEY\fR variable in
\fBmake.conf\fR(5).
.TP
.B skiprocheck
Skip write access checks on \fBDISTDIR\fR when fetching files. This is
useful when \fBFETCHCOMMAND\fR and \fBRESUMECOMMAND\fR are used to
forward fetch requests to a server that exposes \fBDISTDIR\fR as
a read-only NFS share. A read-only \fBDISTDIR\fR is not compatible with the
\fIdistlocks\fR, so it is recommended to also add "-distlocks" to
\fBFEATURES\fR in order to avoid warning messages that are triggered by this
incompatibility.
.TP
.B split\-elog
Store logs created by \fBPORTAGE_ELOG_SYSTEM="save"\fR in category
subdirectories of \fBPORT_LOGDIR/elog\fR, instead of using
\fBPORT_LOGDIR/elog\fR directly.
.TP
.B split\-log
Store build logs in category subdirectories of \fBPORT_LOGDIR/build\fR,
instead of using \fBPORT_LOGDIR\fR directly.
.TP
.B splitdebug
Prior to stripping ELF etdyn and etexec files, the debugging info is
stored for later use by various debuggers.  This feature is disabled by
\fBnostrip\fR.  You should also consider setting \fBcompressdebug\fR so
the files don't suck up a lot of space.  For installation of source code,
see \fBinstallsources\fR.
.TP
.B strict
Have portage react strongly to conditions that have the potential to be
dangerous (like missing or incorrect digests for ebuilds).
.TP
.B stricter
Have portage react strongly to conditions that may conflict with system
security provisions (for example textrels, executable stack).  Read about
the \fIQA_STRICT_*\fR variables in \fBmake.conf\fR(5).
.TP
.B suidctl
Before merging packages to the live filesystem, automatically strip setuid
bits from any file that is not listed in \fI/etc/portage/suidctl.conf\fR.
.TP
.B test
Run package\-specific tests during each merge to help make sure
the package compiled properly.  See \fItest\fR in \fBebuild\fR(1)
and \fIsrc_test()\fR in \fBebuild\fR(5). This feature implies the "test"
\fBUSE\fR flag if it is a member of \fBIUSE\fR, either explicitly or
implicitly (see \fBebuild\fR(5) for more information about \fBIUSE\fR).
The "test" \fBUSE\fR flag is also automatically disabled when the
"test" feature is disabled.
.TP
.B test\-fail\-continue
If "test" is enabled \fBFEATURES\fR and the test phase of an ebuild fails,
continue to execute the remaining phases as if the failure had not occurred.
Note that the test phase for a specific package may be disabled by masking
the "test" \fBUSE\fR flag in \fBpackage.use.mask\fR (see \fBportage\fR(5)).
.TP
.B unknown\-features\-filter
Filter out any unknown values that the FEATURES variable contains.
.TP
.B unknown\-features\-warn
Warn if FEATURES contains one or more unknown values.
.TP
.B unmerge\-backup
Call \fBquickpkg\fR(1) to create a backup of each package before it is
unmerged (if a binary package of the same version does not already exist).
Also see the related \fIdowngrade\-backup\fR feature.
.TP
.B unmerge\-logs
Keep logs from successful unmerge phases. This is relevant only when
\fBPORT_LOGDIR\fR is set.
.TP
.B unmerge\-orphans
If a file is not claimed by another package in the same slot and it is not
protected by \fICONFIG_PROTECT\fR, unmerge it even if the modification time or
checksum differs from the file that was originally installed.
.TP
.B userfetch
When portage is run as root, drop privileges to portage:portage during the
fetching of package sources.
.TP
.B userpriv
Allow portage to drop root privileges and compile packages as
portage:portage without a sandbox (unless \fIusersandbox\fR is also used).
.TP
.B usersandbox
Enable the sandbox in the compile phase, when running without root privs
(\fIuserpriv\fR).
.TP
.B usersync
Drop privileges to the owner of ${repository_location} for \fBemerge\fR(1) --sync
operations. Note that this feature assumes that all subdirectories of
${repository_location} have the same ownership as ${repository_location} itself.
It is the user's responsibility to ensure correct ownership, since otherwise
Portage would have to waste time validating ownership for each and every sync
operation.
.TP
.B webrsync-gpg
Enable GPG verification when using \fIemerge\-webrsync\fR.
.TP
.B xattr
Preserve extended attributes (filesystem-stored metadata) when installing
files (see \fBattr\fR(1)). The \fBPORTAGE_XATTR_EXCLUDE\fR variable may be
used to exclude specific attributes from being preserved.
.RE
.TP
.B FETCHCOMMAND
This variable contains the command used for fetching package sources from
the internet.  It must contain the full path to the executable as well as the
place\-holders \\${DISTDIR}, \\${FILE} and \\${URI}.  The command should be
written to place the fetched file at \\${DISTDIR}/\\${FILE}.
Also see \fBRESUMECOMMAND\fR.
.TP
.B FFLAGS FCFLAGS
Use these variables to set the desired optimization/CPU instruction settings
for applications that you compile with a FORTRAN compiler. FFLAGS is usually
passed to the FORTRAN 77 compiler, and FCFLAGS to any FORTRAN compiler in
more modern build systems.

For more information, see the \fIInvoking GCC\fR section of the gcc manual:
.br
http://gcc.gnu.org/onlinedocs/
.TP
\fBGENTOO_MIRRORS\fR = \fI[URIs]\fR
Insert your space\-separated list of local mirrors here.  These
locations are used to download files before the ones listed in
the \fIebuild scripts\fR. Merging 'mirrorselect' can help.  Entries in this
variable that have no protocol and simply start with a '/' path separator may
be used to specify mounted filesystem mirrors.
.TP
\fBhttp_proxy ftp_proxy RSYNC_PROXY\fR = \fI[protocol://host:port]\fR
These variables are used by network clients such as \fBwget\fR(1) and
\fBrsync\fR(1). They are only required if you use a
proxy server for internet access.
.TP
\fBINSTALL_MASK\fR = \fI[space delimited list of file names]\fR
Use this variable if you want to selectively prevent certain files from being
copied into your file system tree.  This does not work on symlinks, but only on
actual files.  Useful if you wish to filter out files like HACKING.gz and
TODO.gz. The \fBINSTALL_MASK\fR is processed just before a package is merged.
Also supported is a \fBPKG_INSTALL_MASK\fR variable that behaves exactly like
\fBINSTALL_MASK\fR except that it is processed just before creation of a binary
package.
.TP
.B LDFLAGS
A list of flags to pass to the compiler when the linker will be called. See
\fBld\fR(1) for linker flags, but don't forget that these flags will be passed
directly to the compiler. Thus, you must use '-Wl' to escape the flags
which only the linker understands (see \fBgcc\fR(1)).

\fB***warning***\fR
.br
Setting this and other *FLAGS variables arbitrarily may cause compile or
runtime failures. Bug reports submitted when nonstandard values are
enabled for these flags may be closed as INVALID.
.TP
.B MAKEOPTS
Use this variable if you want to use parallel make.  For example, if you
have a dual\-processor system, set this variable to "\-j2" or "\-j3" for
enhanced build performance with many packages. Suggested settings are
between \fICPUs+1\fR and \fI2*CPUs+1\fR. In order to avoid
excess load, the \fB\-\-load\-average\fR option is recommended.
For more information, see \fBmake\fR(1). Also see \fBemerge\fR(1) for
information about analogous \fB\-\-jobs\fR and \fB\-\-load\-average\fR options.
.TP
\fBNOCOLOR\fR = \fI["true" | "false"]\fR
Defines if color should be disabled by default.
.br
Defaults to false.
.TP
\fBPKGDIR\fR = \fI[path]\fR
Defines the location where created .tbz2 binary packages will be
stored when the \fBemerge\fR(1) \fB\-\-buildpkg\fR option is enabled.
By default, a given package is stored in a subdirectory corresponding
to it's category. However, for backward compatibility with the layout
used by older versions of portage, if the \fI${PKGDIR}/All\fR directory
exists then all packages will be stored inside of it and symlinks to
the packages will be created in the category subdirectories. Note
that locations under /usr/portage are not necessarily safe for data storage.
See the \fBPORTDIR\fR documentation for more information.
.br
Defaults to /usr/portage/packages.
.TP
.B PORT_LOGDIR
This variable defines the directory in which per\-ebuild logs are kept.
Logs are created only when this is set. They are stored as
${CATEGORY}:${PF}:YYYYMMDD\-HHMMSS.log in the directory specified. If the
directory does not exist, it will be created automatically and group
permissions will be applied to it.  If the directory already exists, portage
will not modify it's permissions.
.TP
.B PORT_LOGDIR_CLEAN
This variable should contain a command for portage to call in order
to clean PORT_LOGDIR. The command string should contain a
\\${PORT_LOGDIR} place\-holder that will be substituted
with the value of that variable. This variable will have no effect
unless \fBclean\-logs\fR is enabled in \fBFEATURES\fR.
.TP
\fBPORTAGE_BINHOST\fR = \fI[space delimited URI list]\fR
This is a list of hosts from which portage will grab prebuilt\-binary packages.
Each entry in the list must specify the full address of a directory
serving tbz2's for your system (this directory must contain a 'Packages' index
file). This is only used when running with
the get binary pkg options are given to \fBemerge\fR.  Review \fBemerge\fR(1)
for more information.
.TP
\fBPORTAGE_BINHOST_HEADER_URI\fR = \
\fI"ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon\-xp/"\fR
This variable only makes sense on a system that will serve as a binhost and
build packages for clients.  It defines the URI header field for the package
index file which is located at ${PKGDIR}/Packages. Clients that have
\fBPORTAGE_BINHOST\fR properly configured will be able to fetch the index and
use the URI header field as a base URI for fetching binary packages. If the URI
header field is not defined then the client will use it's ${PORTAGE_BINHOST}
setting as the base URI.
.TP
.B PORTAGE_BINPKG_FORMAT
This variable sets default format used for binary packages. Possible values
are tar and rpm or both.
.TP
.B PORTAGE_BINPKG_TAR_OPTS
This variable contains options to be passed to the tar command for creation
of binary packages.
.TP
\fBPORTAGE_BUNZIP2_COMMAND\fR = \fI[bunzip2 command string]\fR
This variable should contain a command that is suitable for portage to call
for bunzip2 extraction operations.
.TP
\fBPORTAGE_BZIP2_COMMAND\fR = \fI[bzip2 command string]\fR
This variable should contain a command that is suitable for portage to call
for bzip2 compression operations. \fBPORTAGE_BZIP2_COMMAND\fR will also be
called for extraction operation, with -d appended, unless the
\fBPORTAGE_BUNZIP2_COMMAND\fR variable is set.
.TP
\fBPORTAGE_CHECKSUM_FILTER\fR = \fI[space delimited list of hash names]\fR
This variable may be used to filter the hash functions that are used to
verify integrity of files. Hash function names are case\-insensitive, and
the \fI*\fR and \fI\-*\fR wildcard tokens are supported.
.br
Defaults to the value of *.
.br
.I Examples:
.nf
# Use all available hash functions
PORTAGE_CHECKSUM_FILTER="*"
# Use any function except whirlpool
PORTAGE_CHECKSUM_FILTER="* \-whirlpool"
# Only use sha256
PORTAGE_CHECKSUM_FILTER="\-* sha256"
.fi
.TP
\fBPORTAGE_COMPRESS\fR = \fI"bzip2"\fR
This variable contains the command used to compress documentation during the
install phase.
.TP
\fBPORTAGE_COMPRESS_EXCLUDE_SUFFIXES\fR = \fI"gif htm[l]? jp[e]?g pdf png"\fR
This variable contains a space delimited list of file suffixes for which
matching files are excluded when the \fBPORTAGE_COMPRESS\fR command is
called. Regular expressions are supported and the match is performed only
against the portion of the file name which follows the last period character.
.TP
\fBPORTAGE_COMPRESS_FLAGS\fR = \fI"\-9"\fR
This variable contains flags for the \fBPORTAGE_COMPRESS\fR command.
.TP
.B PORTAGE_ELOG_CLASSES
.TP
.B PORTAGE_ELOG_COMMAND
.TP
.B PORTAGE_ELOG_MAILFROM
.TP
.B PORTAGE_ELOG_MAILSUBJECT
.TP
.B PORTAGE_ELOG_MAILURI
.TP
.B PORTAGE_ELOG_SYSTEM
Please see /usr/share/portage/config/make.conf.example for elog documentation.
.TP
\fBPORTAGE_FETCH_CHECKSUM_TRY_MIRRORS\fR = \fI5\fR
Number of mirrors to try when a downloaded file has an incorrect checksum.
.TP
\fBPORTAGE_FETCH_RESUME_MIN_SIZE\fR = \fI350K\fR
Minimum size of existing file for \fBRESUMECOMMAND\fR to be called. Files
smaller than this size will be removed and \fBFETCHCOMMAND\fR will be called
to download the file from the beginning. This is useful for helping to ensure
that small garbage files such as html 404 pages are properly discarded. The
variable should contain an integer number of bytes and may have a suffix such
as K, M, or G.
.TP
.B PORTAGE_GPG_DIR
The \fBgpg\fR(1) home directory that is used by \fBrepoman\fR(1)
when \fBsign\fR is in \fBFEATURES\fR.
.br
Defaults to $HOME/.gnupg.
.TP
.B PORTAGE_GPG_KEY
The \fBgpg\fR(1) key used by \fBrepoman\fR(1) to sign manifests
when \fBsign\fR is in \fBFEATURES\fR. In order to sign commits with
\fBgit\fR(1), you will need Git >=1.7.9 and your commit key will have
to be configured by \fI`git config user.signingkey key_id`\fR.
.TP
.B PORTAGE_GPG_SIGNING_COMMAND
The command used by \fBrepoman\fR(1) to sign manifests when \fBsign\fR is
in \fBFEATURES\fR.
.TP
\fBPORTAGE_GRPNAME\fR = \fI[group]\fR
Defines the groupname to use when executing in userpriv/etc... modes (i.e.
non-root).
.br
Defaults to portage.
.TP
\fBPORTAGE_INST_GID\fR = \fI[gid]\fR
Defines the group id when installing files via dobin/dosbin.  Useful when
running ebuild as yourself.
.br
Defaults to 0.
.TP
\fBPORTAGE_INST_UID\fR = \fI[uid]\fR
Defines the user id when installing files via dobin/dosbin.  Useful when
running ebuild as yourself.
.br
Defaults to 0.
.TP
\fBPORTAGE_IONICE_COMMAND\fR = \fI[ionice command string]\fR
This variable should contain a command for portage to call in order
to adjust the io priority of portage and it's subprocesses. The command
string should contain a \\${PID} place-holder that will be substituted
with an integer pid. For example, a value of "ionice \-c 3 \-p \\${PID}"
will set idle io priority. For more information about ionice, see
\fBionice\fR(1). This variable is unset by default.
.TP
\fBPORTAGE_NICENESS\fR = \fI[number]\fR
The value of this variable will be added to the current nice level that
emerge is running at.  In other words, this will not set the nice level,
it will increment it.  For more information about nice levels and what
are acceptable ranges, see \fBnice\fR(1).
.TP
\fBPORTAGE_RO_DISTDIRS\fR = \fI[space delimited list of directories]\fR
When a given file does not exist in \fBDISTDIR\fR, search for the file
in this list of directories. Search order is from left to right. Note
that the current implementation works by creating a symlink inside
\fBDISTDIR\fR, but that may change in the future.
.TP
\fBPORTAGE_RSYNC_EXTRA_OPTS\fR = \fI[rsync options string]\fR
Additional rsync options to be used by \fBemerge \-\-sync\fR.
.br
Defaults to no value.
.TP
\fBPORTAGE_RSYNC_INITIAL_TIMEOUT\fR = \fIinteger\fR
Used by \fBemerge \-\-sync\fR as a timeout for the initial connection to an
rsync server.
.br
Defaults to 15 seconds.
.TP
\fBPORTAGE_RSYNC_OPTS\fR = \fI[rsync options string]\fR
Default rsync options to be used by \fBemerge \-\-sync\fR.
.br
\fBDon't change this unless you know exactly what you're doing!\fR
.br
Defaults to "\-\-recursive \-\-links \-\-safe\-links \-\-perms \-\-times
\-\-compress \-\-force \-\-whole\-file \-\-delete \-\-stats
\-\-timeout=180 \-\-exclude='/distfiles' \-\-exclude='/local'
\-\-exclude='/packages'"
.TP
\fBPORTAGE_RSYNC_RETRIES\fR = \fI[NUMBER]\fR
The number of times rsync should retry on failed connections before
giving up. If set to a negative number, then retry until all possible
addresses are exhausted.
.br
Defaults to -1.
.TP
\fBPORTAGE_SSH_OPTS\fR = \fI[list of ssh options]\fR
Additional ssh options to be used when portage executes ssh or sftp.
This variable supports use of embedded quote characters to quote
whitespace or special shell characters within arguments (embedded
quotes must be escaped in make.conf settings).
.br
Defaults to no value.
.TP
\fBPORTAGE_SYNC_STALE\fR = \fI[NUMBER]\fR
Defines the number of days after the last `emerge \-\-sync` that a warning
message should be produced. A value of 0 will disable warnings.
.br
Defaults to 30.
.TP
\fBPORTAGE_TMPDIR\fR = \fI[path]\fR
Defines the location of the temporary build directories.
.br
Defaults to /var/tmp.

This should not be set to point anywhere under location of any repository.
.TP
\fBPORTAGE_USERNAME\fR = \fI[user]\fR
Defines the username to use when executing in userpriv/etc... modes (i.e.
non-root).
.br
Defaults to portage.
.TP
\fBPORTAGE_WORKDIR_MODE\fR = \fI"0700"\fR
This variable controls permissions for \fIWORKDIR\fR (see \fBebuild\fR(5)).
.TP
\fBPORTAGE_XATTR_EXCLUDE\fR = \fI[space delimited list of fnmatch patterns]\fR
This variable may be used to exclude specific attributes from being preserved
when \fBxattr\fR is in \fBFEATURES\fR.
.br
Defaults to "security.*" (security labels are special, see bug #461868).
.TP
\fBPORTDIR\fR = \fI[path]\fR
Defines the location of main repository. This variable is deprecated in favor of
settings in \fBrepos.conf\fR. If you change this, you must update
your /etc/portage/make.profile symlink accordingly.
.br
Defaults to /usr/portage.
.br
\fB***Warning***\fR
.br
Data stored inside \fBPORTDIR\fR is in peril of being overwritten or deleted by
the emerge \-\-sync command. The default value of
\fBPORTAGE_RSYNC_OPTS\fR will protect the default locations of
\fBDISTDIR\fR and \fBPKGDIR\fR, but users are warned that any other locations
inside \fBPORTDIR\fR are not necessarily safe for data storage.  You should not
put other data (such as overlays) in your \fBPORTDIR\fB.  Portage will walk
directory structures and may arbitrarily add invalid categories as packages.
.TP
\fBPORTDIR_OVERLAY\fR = \fI"[path] [different\-path] [etc...]"\fR
Defines the locations of other repositories. This variable is deprecated in
favor of settings in \fBrepos.conf\fR. This variable is a space\-delimited list of
directories.
.br
Defaults to no value.
.TP
\fBQA_STRICT_EXECSTACK = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_EXECSTACK\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
\fBQA_STRICT_FLAGS_IGNORED = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_FLAGS_IGNORED\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
\fBQA_STRICT_MULTILIB_PATHS = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_MULTILIB_PATHS\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
\fBQA_STRICT_PRESTRIPPED = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_PRESTRIPPED\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
\fBQA_STRICT_TEXTRELS = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_TEXTREL\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
\fBQA_STRICT_WX_LOAD = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_WX_LOAD\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
.B RESUMECOMMAND
This variable contains the command used for resuming package sources that
have been partially downloaded.  It should be defined using the same format
as \fBFETCHCOMMAND\fR, and must include any additional option(s) that may
be necessary in order to continue a partially downloaded file located at
\\${DISTDIR}/\\${FILE}.
.TP
\fBROOT\fR = \fI[path]\fR
Use \fBROOT\fR to specify the target root filesystem to be used for merging
packages or ebuilds.
Typically, you should set this setting in the environment rather than in
\fImake.conf\fR itself. It's commonly used for creating new build
images. Make sure you use an absolute path. Refer to the
\fBCross-compilation\fR section of \fBebuild\fR(5) for information about
how dependencies are handled for \fBROOT\fR.
.br
Defaults to /.
.TP
\fBRPMDIR\fR = \fI[path]\fR
Defines the location where created RPM packages will be stored.
.br
Defaults to /usr/portage/rpm.
.TP
\fBSYNC\fR = \fI[RSYNC]\fR
Insert your preferred rsync mirror here.  This rsync server
is used to sync the local portage tree when `emerge \-\-sync` is run.

Note that the \fBSYNC\fR variable is now deprecated, and instead the
sync\-type and sync\-uri attributes in repos.conf should be used. See
\fBportage\fR(5) for more information.

Defaults to rsync://rsync.gentoo.org/gentoo\-portage
.RS
.TP
.B Usage:
(rsync|ssh)://[username@]hostname[:port]/(module|path)
.TP
.B Examples:
rsync://private\-mirror.com/portage\-module
.br
rsync://rsync\-user@private\-mirror.com:873/gentoo\-portage
.br
ssh://ssh\-user@192.168.0.1:22/usr/portage
.br
ssh://ssh\-user@192.168.0.1:22/\\${HOME}/portage\-storage
.TP
Note: For the ssh:// scheme, key\-based authentication might be of interest.
.RE
.TP
\fBUNINSTALL_IGNORE\fR = \fI[space delimited list of fnmatch patterns]\fR
This variable prevents uninstallation of files that match
specific \fBfnmatch\fR(3) patterns. In order to ignore file
collisions with these files at install time, the same patterns
can be added to the \fBCOLLISION_IGNORE\fR variable.
.br
Defaults to "/lib/modules/*".
.TP
\fBUSE\fR = \fI[space delimited list of USE items]\fR
This variable contains options that control the build behavior of several
packages.  More information in \fBebuild\fR(5).  Possible USE values
can be found in \fI/usr/portage/profiles/use.desc\fR.
.TP
\fBUSE_ORDER\fR = \fI"env:pkg:conf:defaults:pkginternal:repo:env.d"\fR
Determines the precedence of layers in the incremental stacking of the USE
variable. Precedence decreases from left to right such that env overrides
pkg, pkg overrides conf, and so forth.

.B ***warning***
.br
Do not modify this value unless you're a developer and you know what
you're doing. If you change this and something breaks, we will not help
you fix it.
.br
.RS
.TP
.B env
USE from the current environment variables (USE and those listed in USE_EXPAND)
.TP
.B pkg
Per\-package USE from \fB/etc/portage/package.use\fR (see \fBportage\fR(5))
.TP
.B conf
USE from make.conf
.TP
.B defaults
USE from make.defaults and package.use in the profile
(e.g. /etc/portage/make.profile/package.use) (see \fBportage\fR(5))
.TP
.B pkginternal
USE from \fBebuild\fR(5) IUSE defaults
.TP
.B repo
USE from make.defaults and package.use in the repo's profiles/ top dir
(e.g. /usr/portage/profiles/package.use) (see \fBportage\fR(5))
.TP
.B env.d
USE from the environment variables, such as LINGUAS, defined by files in
\fI/etc/env.d/\fR
.RE

.SH "REPORTING BUGS"
Please report bugs via http://bugs.gentoo.org/
.SH "AUTHORS"
.nf
Daniel Robbins <drobbins@gentoo.org>
Nicholas Jones <carpaski@gentoo.org>
Mike Frysinger <vapier@gentoo.org>
Saleem Abdulrasool <compnerd@gentoo.org>
Arfrever Frehtes Taifersar Arahesis <arfrever@apache.org>
.fi
.SH "FILES"
.TP
\fB/etc/make.conf\fR and \fB/etc/portage/make.conf\fR
Contains variables for the build\-process and overwrites those in
make.defaults.
.TP
.B /usr/share/portage/config/make.globals
Contains the default variables for the build\-process, you should edit
\fI/etc/portage/make.conf\fR instead.
.TP
.B /etc/portage/color.map
Contains variables customizing colors.
.TP
.B /usr/portage/profiles/use.desc
Contains a list of all global USE flags.
.TP
.B /usr/portage/profiles/use.local.desc
Contains a list of all local USE variables.
.SH "SEE ALSO"
.BR emerge (1),
.BR portage (5),
.BR ebuild (1),
.BR ebuild (5)
.TP
The \fI/usr/lib/portage/bin/ebuild.sh\fR script.
.TP
The helper apps in \fI/usr/lib/portage/bin\fR.
