/etc/portage/make.conf

From Gentoo Wiki
/etc/portage(Redirected from Make.conf)
Jump to: navigation, search
This page contains changes which are not marked for translation.


The /etc/portage/make.conf file (previously at /etc/make.conf) is used to customize the Portage environment on a global level. Settings here will apply to every package that is emerged. They control many elements of Portage functionality such as global USE flags, language (L10N) options, Portage mirrors, etc.

A very basic version gets installed on expanding the stage tarball and an example setup can be found at /usr/share/portage/config/make.conf.example

Precedence

The final Portage configuration is not only based on make.conf. Global settings defined in this file can be refined on a per-package basis in the /etc/portage/package.* files, as well as through environment variables. Default settings, managed by the distribution, are available as well (partially through the Portage package defaults, partially through the Gentoo profile that is in use).

Note
Although Portage still supports the old /etc/make.conf file, its use is discouraged in favor of /etc/portage/make.conf. When both files are available, the settings in /etc/portage/make.conf take precedence over those in /etc/make.conf.

Variables

There are many possible variables to customize in make.conf. Only the most commonly used ones are explained further within this article, with an example and a link to a more detailed article (if applicable). For more information, and the full list of variables, consult the make.conf man page by running:

user $man make.conf
Note
Different configurations will require different variables to be set up. Do not treat the following examples as a definitive list, or a minimum set of requirements.

CHOST

The CHOST variable is passed through the configure step of ebuilds to set the build-host of the system. Note that the Gentoo profile already sets the appropriate CHOST value, and updating it requires insight and experience in build chains.

See the CHOST article for more information.

CFLAGS and CXXFLAGS

The CFLAGS and CXXFLAGS variables define the build and compile flags that will be used for all package deployments (some exceptions notwithstanding who filter out flags known to cause problems with the package). The CFLAGS variable is for C based applications, while CXXFLAGS is meant for C++ based applications. Most users will keep the content of both variables the same.

FILE /etc/portage/make.confCommonly used sane setting for CFLAGS and CXXFLAGS
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"

For more information see the CFLAGS article and CFLAGS and CXXFLAGS in the Gentoo Handbook.

CONFIG_PROTECT

The CONFIG_PROTECT variable contains a space-delimited list of directories where Portage will not blindly copy over new versions of files, but instead treat the files as configuration files where the user should manually check if the changes are needed and valid or not. Sub-directories of the listed directories can be excluded through the CONFIG_PROTECT_MASK variable.

The variable has a sane default setting handled by the Portage installation and the users' Gentoo profile. It can be extended through the system environment (which is often used by applications that update the variable through their /etc/env.d file) and the users' /etc/portage/make.conf setting.

FILE /etc/portage/make.confExample CONFIG_PROTECT use in make.conf
CONFIG_PROTECT="/var/bind"

See also the Environment variables chapter in the Gentoo Handbook.

FEATURES

The FEATURES variable contains a list of Portage features that the user wants enabled on the system, effectively influencing Portage's behavior. It is set by default via the Gentoo profile, but can be easily updated through /etc/portage/make.conf. Since this is an incremental variable, FEATURES values can be added without directly overriding the ones implemented through the Gentoo profile.

FILE /etc/portage/make.confAdding keepwork to FEATURES in Portage
FEATURES="keepwork"

For more information, please see Portage features in the Gentoo Handbook and the FEATURES article. For a complete list of available features, see man 5 make.conf.

GENTOO_MIRRORS

See the GENTOO_MIRRORS article.

MAKEOPTS

The MAKEOPTS variable is used to specify arguments passed to make when packages are built from source. A commonly used setting is the -jN which specifies the number of parallel build jobs that can be used for a single package build. A widely used rule of thumb for N is to take the number of available cores (hyper-threaded cores count as 2) and add one.

FILE /etc/portage/make.confRecommended setting for a dual-core processor with hyper-threading enabled
MAKEOPTS="-j5"

See the MAKEOPTS article for more information, and read up on EMERGE_DEFAULT_OPTS as this influences build behavior as well.

EMERGE_DEFAULT_OPTS

The EMERGE_DEFAULT_OPTS variable entries are appended to the emerge command line. It is often used to allow for concurrent emerge operations through the --jobs N and --load-average X.Y options, which tell Portage how many parallel package builds can be used and up to what system load (load average) the parallelism can be used.

For example, to run up to three jobs in parallel:

FILE /etc/portage/make.confEnabling 3 parallel package builds
EMERGE_DEFAULT_OPTS="--jobs 3"

For more information, see the EMERGE_DEFAULT_OPTS article.

PORTAGE_TMPDIR

The PORTAGE_TMPDIR variable defines the location of the temporary files for Portage. The value defaults to /var/tmp, resulting in /var/tmp/portage for the build location, /var/tmp/ccache for Portage' ccache support and so forth.

FILE /etc/portage/make.confDefault PORTAGE_TMPDIR setting
PORTAGE_TMPDIR="/var/tmp"

DISTDIR

The DISTDIR variable defines the location where Portage will store the downloaded source code archives. Its value defaults to /usr/portage/distfiles.

Users can set the DISTDIR variable in /etc/portage/make.conf:

FILE /etc/portage/make.confUsing a different DISTDIR location
DISTDIR=/var/gentoo/distfiles

For more information, please refer to the DISTDIR article.

PORTDIR

The PORTDIR variable was used to point to the main package repository hosted on the system. It has since been deprecated in favor of individual configuration files in the /etc/portage/repos.conf file or directory.

PORTDIR_OVERLAY

The PORTDIR_OVERLAY variable has been deprecated in favor of the repos.conf file.

Layman versions less than 2.3.0 still use the PORTDIR_OVERLAY variable.

SYNC

See the SYNC article.

USE

The USE variable allows the system wide setting or deactivation of USE flags in a space separated list.

FILE /etc/portage/make.confExample
USE="-kde -qt4 ldap"

For a fine grained per package control of USE flags, the file /etc/portage/package.use should be used instead.

ACCEPT_LICENSE

The ACCEPT_LICENSE variable tells Portage which software licenses are allowed. Packages who have a license that is not accepted cannot be installed on the system.

FILE /etc/portage/make.confTo accept all licenses on all packages (not a good idea)
ACCEPT_LICENSE="*"
FILE /etc/portage/make.confTo accept free software only
ACCEPT_LICENSE="-* @FREE"

USE_EXPAND

The USE_EXPAND variable is a list set in profiles/base/make.defaults as of Portage 2.0.51.20.[1]

CPU_FLAGS_X86

The CPU_FLAGS_X86 variable informs Portage about the CPU flags (features) that the system allows. This information is used to optimize package builds specifically for the targeted features.

FILE /etc/portage/make.conf
CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 ssse3"

See this news item. and CPU_FLAGS_X86 for more information.

INPUT_DEVICES

For possible values of this USE_EXPAND variable see INPUT_DEVICES.

FILE /etc/portage/make.confSet INPUT_DEVICES
INPUT_DEVICES="evdev synaptics"

After setting the INPUT_DEVICES variable remember to update the system using the following command so the changes take effect:

root #emerge --ask --changed-use --deep @world


L10N

See L10N in the Localization guide and this Repository News Item. For possible values of this USE_EXPAND variable see L10N.

FILE /etc/portage/make.conf
L10N="de pt_BR en en_US en_GB"

VIDEO_CARDS

For possible values of this USE_EXPAND variable see VIDEO_CARDS.

FILE /etc/portage/make.confSet VIDEO_CARDS
VIDEO_CARDS="intel nvidia radeon vesa"

After setting the VIDEO_CARDS variable remember to update the system using the following command so the changes take effect:

root #emerge --ask --changed-use --deep @world

For the average user, if a graphical desktop environment is to be used this variable should be explicitly defined. For further information see Xorg/Guide#make.conf_configuration.

See also

External resources

References