Difference between pages "Make.conf" and "Package:Portage (Funtoo)"

From Funtoo
(Difference between pages)
Jump to navigation Jump to search
m (add synaptics example)
 
m (add information about where logs are located.)
 
Line 1: Line 1:
== What is the make.conf file? What is its purpose? ==
{{Ebuild
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.  
|Summary=This is the official package manager/ports system for Funtoo Linux.
|CatPkg=sys-apps/portage
|Maintainer=Drobbins, Oleg
|Repository=Funtoo Overlay
}}
== Introduction ==
 
Portage is the official package manager of Funtoo Linux. Daniel Robbins maintains a slightly different version from upstream Gentoo Linux, with support for mini-manifests and other features.
 
== Portage Commands ==
 
; [[emerge]]
: high-level dependency-based package merge/unmerge tool
; [[ebuild]]
: lower-level package build tool
 
== Portage Specifications ==
 
The latest progress and changes related to EAPI/PMS and Portage can often be found in the Gentoo Council meeting logs, which are listed on the [http://www.gentoo.org/proj/en/council/ Gentoo Council page].
 
The latest PMS specification to be approved by the Gentoo Council is available: [http://distfiles.gentoo.org/distfiles/pms-3.pdf eapi-3-approved-2010-01-18]. The PMS specification is an attempt to codify the inner workings of Portage, and is authored by Ciaran McCreesh and Stephen Bennett as a Gentoo-hosted project.
 
== Portage Profiles ==
 
Portage uses [[Portage Profiles|profiles]] to define settings for various architectures and types of Funtoo/Gentoo systems. See the [[Portage Profiles]] page for detailed information on how Portage handles profiles. Look at [[Creating_Profiles]] to learn how to create them and at [[Funtoo_1.0_Profile]] to learn about the Funtoo 1.0 profile.
 
== Portage Variables ==


== Where does this file reside? ==
Portage's behavior can be controlled by a number of configuration settings other variables that can be defined within the ebuild itself. In addition, a number of these variables are defined for the ebuild automatically by Portage. These variables are now documented on their own page: [[Portage Variables]].
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.
== Multiple ABI Support ==


to edit:
Portage contains support for multiple ABIs (Application Binary Interfaces) co-existing on the same system. This functionality has been extensively documented and has been moved to its own page: [[Multiple ABI Support]].
<console>
###i## nano /etc/portage/make.conf
</console>


== Variables ==
== Ebuild Functions ==


{{file|name=/etc/portage/make.conf|lang=|desc=example make.conf variables|body=
An ebuild developer has the ability to define [[Ebuild Functions]] that define steps to perform during a particular part of the ebuild lifecycle. These steps are now documented on their own page: [[Ebuild Functions]].
* CFLAGS="-march=amdfam10 -O2 -pipe"
 
* CXXFLAGS="-march=amdfam10 -O2 -pipe"
== Funtoo Portage Development ==
* INPUT_DEVICES="evdev"
 
* VIDEO_CARDS="vesa nouveau"
The Funtoo Core Team is currently working on a general-purpose plug-in system so that the GNU info file regeneration, news update display, and scanning of files that need updating in /etc can be pulled out of the official Portage emerge code. In addition, this plug-in system will allow other types of things to be hooked into various phases of emerge. This will allow various new plug-ins to be developed and used on systems, such as periodic security checks, etc.
* MAKEOPTS="-j 2"
* USE="mmx sse"
* PYTHON_ABIS="2.7 3.3"
* PYTHON_TARGETS="2.7 3.3"
* RUBY_TARGETS="ruby21"
* ACCEPT_LICENSE="*"
}}


== Relocate Source Compile Directory ==
== Portage Logs ==
Logs of portage actions can be found at <code>/var/log/emerge.log</code> & <code>/var/log/portage/elog/summary.log-(date the log is generated)</code>


By default portage unpacks and compiles sources in /var/tmp/  it appends portage/pkg-cat/pkg to compile a package elsewhere such as /tmp/portage/pkg-cat/pkg
=== TODO ===


{{file|name=/etc/portage/make.conf|lang=|desc=unpack & compile sources in alternate location|body=
Add support to portage, so that when an ebuild is merged, the /var/db/pkg entry contains a list of all currently-installed versions of all ebuilds upon which that ebuild RDEPENDs. This, combined with a comprehensive set of past USE settings (may need to implement this too,) can be used to detect when an ebuild needs to be rebuilt. This could help to address issues like those in [http://bugs.gentoo.org/167662 Gentoo Bug 167662] and allow easier implementation of support for things like perl-cleaner. Currently, perl-cleaner doesn't detect that vim uses perl and moving from -ithreads to ithreads causes vim to die, so it needs to be manually rebuilt.
PORTAGE_TMPDIR="/tmp"
}}


== Video_Cards ==
Add support for portage to understand which version of a particular app is the "active" version that it was built against, and record this information in /var/db/pkg. This can help to implement perl-cleaner-like support in Portage.


several options for the video cards variable exist.  see [[Video]]
== Funtoo Features/Changes ==


== Makeopts ==
=== Summary ===
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:


{{file|name=/etc/portage/make.conf|lang=|desc=set portage to use 3 threads|body=
In [https://github.com/funtoo/portage-funtoo/tree/thin-manifest the thin-manifest branch], Funtoo changes have been isolated into the following commits:
MAKEOPTS="-j3"
}}


If you are unsure about how many processors/threads you have then use /proc/cpuinfo to help you.
<pre>
<console>
e5a6649e094eb7230aa8f56d97fe303f77b158e9 preserve bindist through use expansion
(chroot) # ##i##grep "processor" /proc/cpuinfo | wc -l
5a092fdae8afbff679350dc5d8818e10ab35fd80 safetydance feature
16
16887ddce712da8b61887f9bce70e19b95e75c25 core funtoo git-sync implementation
</console>
2c6e2b427a2aa179b61667caf89497818ec34ae2 run pwconv and grpconv after emerge completes to ensure /etc/shadow and /etc/gshadow are valid.
ea565da9ab5f54580f66814a17aca39d8e568732 funtoo-specific man page changes
c8f130fa4b332d87f2202ddaf0222b89018914d0 Funtoo config file changes. This includes stuff related to rsync as well as /lib/firmware
dba5a350e16043a6ff6281ea80fc02c8f56efd4f remove emerge-webrsync -- not supported in funtoo
0d9dda7b2b3165b268545e3e8eb44aa8d3c20a57 small ebuild.sh fix to not source any stray directories
8500043b3075d26c77a7ec1b8c2745373ca0c3b5 disable warning for use of *, -* in KEYWORDS
86ed81605e73b8b6d6b06fc60a9a0bc0c13ee429 protect firmware as well as modules
e7b6512e582fbcd9af0eb82c617549b101c8ae97 slashbeast's localpatch feature
5af34ad9334310c0926e52d9e1801ee170e12184 simplify path setting in ebuild.sh by using getpath() function
42789a70184343008c4cb1fe20bc4398e881d285 remove bin/ebuild-helpers/sed
</pre>


Set MAKEOPTS to this number plus one:
These commits do not yet include the unified-path/funtoo-profile 1.0 patches.


{{file|name=/etc/portage/make.conf|lang=|desc=set portage to use 17 threads|body=
=== In Funtoo stable/current Portage ===
MAKEOPTS="-j17"
}}


;emerge --sync from git
:If a git-based Portage tree is already in place, <tt>emerge --sync</tt> will run "git pull" to update the underlying Portage tree. If one is not in place, the contents of the SYNC variable will be used as the remote URI from which to clone a git tree (2.2). In addition, SYNC_USER and SYNC_UMASK (defaulting to root and 022) can be used to define the user account to use for cloning/syncing, as well as the umask to use. (2.2).


{{important|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.}}
;Sed Wrapper Symlink and PATH fix
: The Funtoo version of Portage has replaced the BSD-only sed wrapper with a symlink. This will eventually be deprecated. The sed wrapper was a way to provide BSD systems with a "sed" command that could be used inside ebuilds that worked similarly to GNU sed. A PATH fix has been applied so that /bin/sed will be detected first anyway.


;mini-manifest
:Funtoo's Portage supports a special mode of operation where Manifests only contain digests for distfiles and not for files in the Portage tree. This is to eliminate redundant digests since git already provides SHA1 digests. This feature is currently enabled by adding "mini-manifest" to FEATURES in /etc/make.conf but the intention is to eventually move it to a repo-specific option (note: this has now been done, as "thin-manifest" functionality has been integrated into recent versions of Portage, and is being beta tested in Funtoo.) Funtoo provides a special "mini-manifest" tree that is smaller than the full-size Portage tree, and is intended to be used with the mini-manifest feature.


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].
;preserve bindist through USE filtering
: Normally, anything not in an ebuild's IUSE is stripped from the USE passed to ebuild.sh. This patch allows "bindist" to not be stripped, so it can be used as a means to disable pre-merge sanity checks that may exist in pkg_setup() and pkg_pretend() but will not otherwise affect the resultant build. If "bindist" will affect some functionality in the package, then it should be added to an ebuild's IUSE. This patch allows pkg_setup() and pkg_pretend() to look for "bindist", which indicates that the ebuild is being built for release, typically in an automated fashion, and thus runtime sanity checks that might otherwise run can be optionally skipped. This check is used by the udev-160-r1.ebuild to see if we should fail if we are merging udev on a system where the kernel will not support it. In Metro, this is not a big deal, but on a ''real'' production system, merging the udev on an incompatible system will render the kernel inoperable.


== Input ==
;safetydance FEATURE
some devices need defined such as synaptics for touch pads.
:A new FEATURE setting is used by Funtoo's udev ebuild called "safetydance" which can be used to manually bypass sanity checks. This is an alternative to the "bindist" approach above. udev-160 in Funtoo Linux supports both approaches and Metro sets "safetydance" by default.


{{file|name=/etc/portage/make.conf|lang=|desc=synaptics example|body=
;GLEP 55 removal
INPUT_DEVICES="synaptics evdev"
:Some code to support GLEP 55 has been removed.
}}


== Linguas ==
;new metadata format (experimental)
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:
:Some tweaks to ebuild.sh have been made so that it is easier to support new metadata formats in the future.


{{file|name=/etc/portage/make.conf|lang=|desc=set system language to french|body=
;xz-utils auto-dependency
LINGUAS="fr"
:There are several ebuilds in the Gentoo Portage repository that use .xz files but do not explicitly depend on xz-utils. A workaround has been added to ebuild.sh to add this dependency to metadata automatically if a .xz file exists in SRC_URI. This change is not yet in the official Portage sources but is being used on the Funtoo side when generating our git-based Portage trees.
}}


[[Category:System]]
[[Category:Projects]]
[[Category:Portage]]
{{EbuildFooter}}

Revision as of 00:42, November 24, 2014

Portage (Funtoo)

   Tip

We welcome improvements to this page. To edit this page, Create a Funtoo account. Then log in and then click here to edit this page. See our editing guidelines to becoming a wiki-editing pro.

Introduction

Portage is the official package manager of Funtoo Linux. Daniel Robbins maintains a slightly different version from upstream Gentoo Linux, with support for mini-manifests and other features.

Portage Commands

emerge
high-level dependency-based package merge/unmerge tool
ebuild
lower-level package build tool

Portage Specifications

The latest progress and changes related to EAPI/PMS and Portage can often be found in the Gentoo Council meeting logs, which are listed on the Gentoo Council page.

The latest PMS specification to be approved by the Gentoo Council is available: eapi-3-approved-2010-01-18. The PMS specification is an attempt to codify the inner workings of Portage, and is authored by Ciaran McCreesh and Stephen Bennett as a Gentoo-hosted project.

Portage Profiles

Portage uses profiles to define settings for various architectures and types of Funtoo/Gentoo systems. See the Portage Profiles page for detailed information on how Portage handles profiles. Look at Creating_Profiles to learn how to create them and at Funtoo_1.0_Profile to learn about the Funtoo 1.0 profile.

Portage Variables

Portage's behavior can be controlled by a number of configuration settings other variables that can be defined within the ebuild itself. In addition, a number of these variables are defined for the ebuild automatically by Portage. These variables are now documented on their own page: Portage Variables.

Multiple ABI Support

Portage contains support for multiple ABIs (Application Binary Interfaces) co-existing on the same system. This functionality has been extensively documented and has been moved to its own page: Multiple ABI Support.

Ebuild Functions

An ebuild developer has the ability to define Ebuild Functions that define steps to perform during a particular part of the ebuild lifecycle. These steps are now documented on their own page: Ebuild Functions.

Funtoo Portage Development

The Funtoo Core Team is currently working on a general-purpose plug-in system so that the GNU info file regeneration, news update display, and scanning of files that need updating in /etc can be pulled out of the official Portage emerge code. In addition, this plug-in system will allow other types of things to be hooked into various phases of emerge. This will allow various new plug-ins to be developed and used on systems, such as periodic security checks, etc.

Portage Logs

Logs of portage actions can be found at /var/log/emerge.log & /var/log/portage/elog/summary.log-(date the log is generated)

TODO

Add support to portage, so that when an ebuild is merged, the /var/db/pkg entry contains a list of all currently-installed versions of all ebuilds upon which that ebuild RDEPENDs. This, combined with a comprehensive set of past USE settings (may need to implement this too,) can be used to detect when an ebuild needs to be rebuilt. This could help to address issues like those in Gentoo Bug 167662 and allow easier implementation of support for things like perl-cleaner. Currently, perl-cleaner doesn't detect that vim uses perl and moving from -ithreads to ithreads causes vim to die, so it needs to be manually rebuilt.

Add support for portage to understand which version of a particular app is the "active" version that it was built against, and record this information in /var/db/pkg. This can help to implement perl-cleaner-like support in Portage.

Funtoo Features/Changes

Summary

In the thin-manifest branch, Funtoo changes have been isolated into the following commits:

e5a6649e094eb7230aa8f56d97fe303f77b158e9 preserve bindist through use expansion
5a092fdae8afbff679350dc5d8818e10ab35fd80 safetydance feature
16887ddce712da8b61887f9bce70e19b95e75c25 core funtoo git-sync implementation
2c6e2b427a2aa179b61667caf89497818ec34ae2 run pwconv and grpconv after emerge completes to ensure /etc/shadow and /etc/gshadow are valid.
ea565da9ab5f54580f66814a17aca39d8e568732 funtoo-specific man page changes
c8f130fa4b332d87f2202ddaf0222b89018914d0 Funtoo config file changes. This includes stuff related to rsync as well as /lib/firmware
dba5a350e16043a6ff6281ea80fc02c8f56efd4f remove emerge-webrsync -- not supported in funtoo
0d9dda7b2b3165b268545e3e8eb44aa8d3c20a57 small ebuild.sh fix to not source any stray directories
8500043b3075d26c77a7ec1b8c2745373ca0c3b5 disable warning for use of *, -* in KEYWORDS
86ed81605e73b8b6d6b06fc60a9a0bc0c13ee429 protect firmware as well as modules
e7b6512e582fbcd9af0eb82c617549b101c8ae97 slashbeast's localpatch feature
5af34ad9334310c0926e52d9e1801ee170e12184 simplify path setting in ebuild.sh by using getpath() function
42789a70184343008c4cb1fe20bc4398e881d285 remove bin/ebuild-helpers/sed

These commits do not yet include the unified-path/funtoo-profile 1.0 patches.

In Funtoo stable/current Portage

emerge --sync from git
If a git-based Portage tree is already in place, emerge --sync will run "git pull" to update the underlying Portage tree. If one is not in place, the contents of the SYNC variable will be used as the remote URI from which to clone a git tree (2.2). In addition, SYNC_USER and SYNC_UMASK (defaulting to root and 022) can be used to define the user account to use for cloning/syncing, as well as the umask to use. (2.2).
Sed Wrapper Symlink and PATH fix
The Funtoo version of Portage has replaced the BSD-only sed wrapper with a symlink. This will eventually be deprecated. The sed wrapper was a way to provide BSD systems with a "sed" command that could be used inside ebuilds that worked similarly to GNU sed. A PATH fix has been applied so that /bin/sed will be detected first anyway.
mini-manifest
Funtoo's Portage supports a special mode of operation where Manifests only contain digests for distfiles and not for files in the Portage tree. This is to eliminate redundant digests since git already provides SHA1 digests. This feature is currently enabled by adding "mini-manifest" to FEATURES in /etc/make.conf but the intention is to eventually move it to a repo-specific option (note: this has now been done, as "thin-manifest" functionality has been integrated into recent versions of Portage, and is being beta tested in Funtoo.) Funtoo provides a special "mini-manifest" tree that is smaller than the full-size Portage tree, and is intended to be used with the mini-manifest feature.
preserve bindist through USE filtering
Normally, anything not in an ebuild's IUSE is stripped from the USE passed to ebuild.sh. This patch allows "bindist" to not be stripped, so it can be used as a means to disable pre-merge sanity checks that may exist in pkg_setup() and pkg_pretend() but will not otherwise affect the resultant build. If "bindist" will affect some functionality in the package, then it should be added to an ebuild's IUSE. This patch allows pkg_setup() and pkg_pretend() to look for "bindist", which indicates that the ebuild is being built for release, typically in an automated fashion, and thus runtime sanity checks that might otherwise run can be optionally skipped. This check is used by the udev-160-r1.ebuild to see if we should fail if we are merging udev on a system where the kernel will not support it. In Metro, this is not a big deal, but on a real production system, merging the udev on an incompatible system will render the kernel inoperable.
safetydance FEATURE
A new FEATURE setting is used by Funtoo's udev ebuild called "safetydance" which can be used to manually bypass sanity checks. This is an alternative to the "bindist" approach above. udev-160 in Funtoo Linux supports both approaches and Metro sets "safetydance" by default.
GLEP 55 removal
Some code to support GLEP 55 has been removed.
new metadata format (experimental)
Some tweaks to ebuild.sh have been made so that it is easier to support new metadata formats in the future.
xz-utils auto-dependency
There are several ebuilds in the Gentoo Portage repository that use .xz files but do not explicitly depend on xz-utils. A workaround has been added to ebuild.sh to add this dependency to metadata automatically if a .xz file exists in SRC_URI. This change is not yet in the official Portage sources but is being used on the Funtoo side when generating our git-based Portage trees.