Difference between revisions of "Make.conf"

From Funtoo
Jump to navigation Jump to search
(adding cfq/bfq info)
m (spelling)
 
(30 intermediate revisions by 7 users not shown)
Line 1: Line 1:
== What is the make.conf file? What is its purpose? ==
<languages/>
Make.conf is portage's and Funtoo's main configuration file. It contains many variables that define how a package will installed in a Funtoo system. You can customize portage internal variables, such as, portage tree location, sources tarball location, overlays, to name a few. You can customize hardware specs, such as TMPFS, disk limits, GCC compilation flags to achieve best performance, etc. A great deal of this customization is done through the make.conf file. This page will attempt to explain the uses of the make.conf file, different variables that can be added to it, and their uses.  
<translate>
{{Subpages|VIDEO_CARDS}}
== What is the make.conf file? == <!--T:1-->
Make.conf was portage's and Funtoo's main configuration file. Many variables are automatically set by [[Funtoo_Profiles]] Make.conf can set variables that define how a package will be installed in a Funtoo system. You can customize portage internal variables, such as, portage tree location, sources tarball location, overlays, to name a few. You can customize hardware specs, such as TMPFS, disk limits, GCC compilation flags to achieve best performance, etc. A great deal of this customization is done through the make.conf file. This page will attempt to explain the uses of the make.conf file, different variables that can be added to it, and their uses.


== Where does this file reside? ==
== Where is make.conf located? == <!--T:2-->
The <code>make.conf</code> file is found at <code>/etc/portage/make.conf</code> and <code>/etc/make.conf</code> though <code>/etc/make.conf</code> is its deprecated location.
{{f|make.conf}} is located in {{f|/etc}} and is a symbolic link to {{f|/etc/portage/make.conf}}, so these filenames are used interchangeably -- though [[User:drobbins|drobbins]] prefers using {{c|/etc/make.conf}} since it's shorter to type so you'll see this filename used more often in the docs.


to edit:
<!--T:3-->
<console>
No special tool is required to edit {{f|/etc/make.conf}}, besides your favorite text editor, of course:
###i## nano /etc/portage/make.conf
{{console|body=
</console>
###i## nano /etc/make.conf
}}


== Variables ==
== Variables == <!--T:4-->
Portage is very customizable. Because of this, many variables are available to configure {{f|/etc/make.conf}}. Below is an example {{f|make.conf}} file showing some of the variables that can be used to customize portage. The format of a line of this file is usually <code>VARIABLENAME="variable arguments"</code>.
{{file|name=/etc/make.conf|lang=|desc=example make.conf variables|body=
CFLAGS="-march=amdfam10 -O2 -pipe"
CXXFLAGS="-march=amdfam10 -O2 -pipe"
INPUT_DEVICES="evdev"
USE="mmx sse"
PORTAGE_TMPDIR="/run"
ACCEPT_LICENSE="*"
}}
{{Note|This isn't a great example of a {{c|make.conf}} file in Funtoo, because on nearly all systems the variables {{c|CFLAGS}}, {{c|CXXFLAGS}}, etc are set using profile subarch mix-ins rather than manually in {{c|/etc/make.conf}}. Portage also has a built-in check for CPU's cores and enables {{c|MAKEOPTS}} automatically, if not set. In make.conf you may increase or decrease the value, when needed, otherwise it's set to {{c|-j(core number)}}}}
Below is a list of variables that can be used in {{f|make.conf}}, along with a description of what they do. For more information on these and other variables, see the subpages list at the top of this page and/or read {{c|man make.conf}}.


{{file|name=/etc/portage/make.conf|lang=|desc=example make.conf variables|body=
=== Accept All Licenses === <!--T:5-->
* CFLAGS="-march=amdfam10 -O2 -pipe"
{{file|name=/etc/portage/make.conf|lang=|desc=accept all licenses|body=
* CXXFLAGS="-march=amdfam10 -O2 -pipe"
ACCEPT_LICENSE="*"
* INPUT_DEVICES="evdev"
* VIDEO_CARDS="vesa nouveau"
* MAKEOPTS="-j 2"
* USE="mmx sse"
* PYTHON_ABIS="2.7 3.3"
* PYTHON_TARGETS="2.7 3.3"
* RUBY_TARGETS="ruby21"
* ACCEPT_LICENSE="*"
}}
}}


== Compile Packages in RAM ==
=== Relocate Source Compile Directory === <!--T:6-->
{{fancyimportant|Be sure to have activated tmpfs in your kernel.}}
 
{{kernelop|title=File systems|desc=
File systems
    Pseudo filesystems
    [*] Tmpfs virtual memory file system support (former shm fs)
}}


To use tmpfs to unpack sources in ram:
<!--T:7-->
By default portage unpacks and compiles sources in {{f|/var/tmp/}}  it appends {{f|portage/pkg-cat/pkg}} to compile a package elsewhere. For example, if portage compiles a package in {{f|/run}}, it will be built at: {{f|/run/portage/pkg-cat/pkg}}. If you have Funtoo installed on an SSD, it may be a wise decision to mount {{f|/run}} in RAM or on a HDD so that you can minimize the number of writes to your SSD and extend its lifetime. After {{f|/run}} has been mounted off of your SSD, you can tell portage to compile future packages in {{f|/run}}, instead of in {{f|/var/tmp}}. To do this, add the following line to your {{f|/etc/portage/make.conf}}:


{{file|name=/etc/portage/make.conf|lang=|desc=unpack sources in ram|body=
<!--T:8-->
{{file|name=/etc/portage/make.conf|lang=|desc= |body=
PORTAGE_TMPDIR="/run"
PORTAGE_TMPDIR="/run"
}}
}}


== Video_Cards ==
=== Video_Cards === <!--T:9-->


several options for the video cards variable existsee [[Video]]
<!--T:10-->
Do not define video cards in make.conf, instead setup the amazing and wonderful [[Funtoo_Profiles]]
The {{c|VIDEO_CARDS}} variable tells portage which video drivers you wish to use on your system. To see the different options that exist for this variable, see [[Video]].


== Makeopts ==
=== Laptop Mice === <!--T:11-->
MAKEOPTS can be used to define how many parallel compilations should occur when you compile a package, which can speed up compilation significantly. A rule of thumb is the number of CPUs (or CPU threads) in your system plus one. If for example you have a dual core processor without [[wikipedia:Hyper-threading|hyper-threading]], then you would set MAKEOPTS to 3:
See {{package|x11-drivers/xf86-input-synaptics}} for laptop mice & touch pads.


{{file|name=/etc/portage/make.conf|lang=|desc=set portage to use 3 threads|body=
=== MAKEOPTS === <!--T:12-->
MAKEOPTS="-j3"
MAKEOPTS is automatically set, because funtoo is amazing.
}}


If you are unsure about how many processors/threads you have then use /proc/cpuinfo to help you.
=== USE flags === <!--T:15-->
<console>
(chroot) # ##i##grep "processor" /proc/cpuinfo | wc -l
16
</console>


Set MAKEOPTS to this number plus one:
<!--T:16-->
USE flags define what functionality is enabled when packages are built. It is not recommended to add a lot of them during installation; you should leverage [[Funtoo Profiles]] instead as much as possible and only set as needed. A USE flag prefixed with a minus (" - ") sign tells Portage not to use the flag when compiling.  Through use flags we generate more secure stripped down binaries with reduced attack surface and better performance.  A Funtoo guide to USE flags will be available in the future. For now, you can find out more information about USE flags in the [https://wiki.gentoo.org/wiki/Handbook:AMD64/Working/USE Gentoo Handbook].  funtoo sets it's use flags in the file {{f|/etc/portage/package.use}} rather than {{f|/etc/make.conf}}  global & package specific use flags can be set like this:


{{file|name=/etc/portage/make.conf|lang=|desc=set portage to use 17 threads|body=
{{file|name=/etc/portage/package.use|desc=setting global use flag for elogind|body=
MAKEOPTS="-j17"
*/* elogind
www-client/w3m imlib
}}
}}


=== Input === <!--T:17-->
Some devices need defined such as {{package|x11-drivers/xf86-input-synaptics}} for touch pads.


{{fancyimportant|Use processors +1 if you use [https://en.wikipedia.org/wiki/CFQ Completely Fair Queuing] I/O scheduler. If you use [http://ck.kolivas.org/patches/bfs/bfs-faq.txt BFQ] use only as many jobs as you have CPUs. However chances are that you use CFQ.}}
<!--T:18-->
 
{{file|name=/etc/portage/make.conf|lang=|desc=synaptics example|body=
 
INPUT_DEVICES="synaptics evdev"
USE flags define what functionality is enabled when packages are built. It is not recommended to add a lot of them during installation; you should wait until you have a working, bootable system before changing your USE flags. A USE flag prefixed with a minus ("<tt>-</tt>") sign tells Portage not to use the flag when compiling.  A Funtoo guide to USE flags will be available in the future. For now, you can find out more information about USE flags in the [http://www.gentoo.org/doc/en/handbook/handbook-amd64.xml?part=2&chap=2 Gentoo Handbook].
 
== Linguas ==
LINGUAS tells Portage which local language to compile the system and applications in (those who use LINGUAS variable like OpenOffice). It is not usually necessary to set this if you use English. If you want another language such as French (fr) or German (de), set LINGUAS appropriately:
 
{{file|name=/etc/portage/make.conf|lang=|desc=set system language to french|body=
LINGUAS="fr"
}}
}}


=== Localization === <!--T:19-->
Available options can be found on [[Funtoo_Linux_Localization#Portage_Settings|Funtoo Linux Localization]].
</translate>
[[Category:System]]
[[Category:System]]
[[Category:Official Documentation]]

Latest revision as of 04:26, September 19, 2022

Other languages:
Subpages:

What is the make.conf file?

Make.conf was portage's and Funtoo's main configuration file. Many variables are automatically set by Funtoo_Profiles Make.conf can set variables that define how a package will be installed in a Funtoo system. You can customize portage internal variables, such as, portage tree location, sources tarball location, overlays, to name a few. You can customize hardware specs, such as TMPFS, disk limits, GCC compilation flags to achieve best performance, etc. A great deal of this customization is done through the make.conf file. This page will attempt to explain the uses of the make.conf file, different variables that can be added to it, and their uses.

Where is make.conf located?

make.conf is located in /etc and is a symbolic link to /etc/portage/make.conf, so these filenames are used interchangeably -- though drobbins prefers using /etc/make.conf since it's shorter to type so you'll see this filename used more often in the docs.

No special tool is required to edit /etc/make.conf, besides your favorite text editor, of course:

root # nano /etc/make.conf

Variables

Portage is very customizable. Because of this, many variables are available to configure /etc/make.conf. Below is an example make.conf file showing some of the variables that can be used to customize portage. The format of a line of this file is usually VARIABLENAME="variable arguments".

   /etc/make.conf - example make.conf variables
CFLAGS="-march=amdfam10 -O2 -pipe"
CXXFLAGS="-march=amdfam10 -O2 -pipe"
INPUT_DEVICES="evdev"
USE="mmx sse"
PORTAGE_TMPDIR="/run"
ACCEPT_LICENSE="*"
   Note

This isn't a great example of a make.conf file in Funtoo, because on nearly all systems the variables CFLAGS, CXXFLAGS, etc are set using profile subarch mix-ins rather than manually in /etc/make.conf. Portage also has a built-in check for CPU's cores and enables MAKEOPTS automatically, if not set. In make.conf you may increase or decrease the value, when needed, otherwise it's set to -j(core number)

Below is a list of variables that can be used in make.conf, along with a description of what they do. For more information on these and other variables, see the subpages list at the top of this page and/or read man make.conf.

Accept All Licenses

   /etc/portage/make.conf - accept all licenses
ACCEPT_LICENSE="*"

Relocate Source Compile Directory

By default portage unpacks and compiles sources in /var/tmp/ it appends portage/pkg-cat/pkg to compile a package elsewhere. For example, if portage compiles a package in /run, it will be built at: /run/portage/pkg-cat/pkg. If you have Funtoo installed on an SSD, it may be a wise decision to mount /run in RAM or on a HDD so that you can minimize the number of writes to your SSD and extend its lifetime. After /run has been mounted off of your SSD, you can tell portage to compile future packages in /run, instead of in /var/tmp. To do this, add the following line to your /etc/portage/make.conf:

   /etc/portage/make.conf
PORTAGE_TMPDIR="/run"

Video_Cards

Do not define video cards in make.conf, instead setup the amazing and wonderful Funtoo_Profiles The VIDEO_CARDS variable tells portage which video drivers you wish to use on your system. To see the different options that exist for this variable, see Video.

Laptop Mice

See x11-drivers/xf86-input-synaptics for laptop mice & touch pads.

MAKEOPTS

MAKEOPTS is automatically set, because funtoo is amazing.

USE flags

USE flags define what functionality is enabled when packages are built. It is not recommended to add a lot of them during installation; you should leverage Funtoo Profiles instead as much as possible and only set as needed. A USE flag prefixed with a minus (" - ") sign tells Portage not to use the flag when compiling. Through use flags we generate more secure stripped down binaries with reduced attack surface and better performance. A Funtoo guide to USE flags will be available in the future. For now, you can find out more information about USE flags in the Gentoo Handbook. funtoo sets it's use flags in the file /etc/portage/package.use rather than /etc/make.conf global & package specific use flags can be set like this:

   /etc/portage/package.use - setting global use flag for elogind
*/* elogind
www-client/w3m imlib

Input

Some devices need defined such as x11-drivers/xf86-input-synaptics for touch pads.

   /etc/portage/make.conf - synaptics example
INPUT_DEVICES="synaptics evdev"

Localization

Available options can be found on Funtoo Linux Localization.