| .TH "EBUILD" "5" "Jan 2014" "Portage VERSION" "Portage" |
| |
| .SH "NAME" |
| ebuild \- the internal format, variables, and functions in an ebuild script |
| |
| .SH "DESCRIPTION" |
| The \fBebuild\fR(1) program accepts a single ebuild script as an argument. |
| This script contains variables and commands that specify how to download, |
| unpack, patch, compile, install and merge a particular software package from |
| its original sources. In addition to all of this, the ebuild script can also |
| contain pre/post install/remove commands, as required. All ebuild scripts are |
| written in bash. |
| |
| .SS "Dependencies" |
| A \fIdepend atom\fR is simply a dependency that is used by portage when |
| calculating relationships between packages. Please note that if the atom has |
| not already been emerged, then the latest version available is matched. |
| .TP |
| .B Atom Bases |
| The base atom is just a full category/packagename. |
| |
| Examples: |
| .nf |
| .I sys\-apps/sed |
| .I sys\-libs/zlib |
| .I net\-misc/dhcp |
| .fi |
| .TP |
| .B Atom Versions |
| It is nice to be more specific and say that only certain versions of atoms are |
| acceptable. Note that versions must be combined with a prefix (see below). |
| Hence you may add a version number as a postfix to the base. |
| |
| Examples: |
| .nf |
| sys\-apps/sed\fI\-4.0.5\fR |
| sys\-libs/zlib\fI\-1.1.4\-r1\fR |
| net\-misc/dhcp\fI\-3.0_p2\fR |
| .fi |
| |
| Versions are normally made up of two or three numbers separated by periods, |
| such as 1.2 or 4.5.2. This string may be followed by a character such as 1.2a |
| or 4.5.2z. Note that this letter is \fInot\fR meant to indicate alpha, beta, |
| etc... status. For that, use the optional suffix; either _alpha, _beta, _pre |
| (pre\-release), _rc (release candidate), or _p (patch). This means for the |
| 3rd pre\-release of a package, you would use something like 1.2_pre3. The |
| suffixes here can be arbitrarily chained without limitation. |
| .TP |
| .B Atom Prefix Operators [> >= = <= <] |
| Sometimes you want to be able to depend on general versions rather than |
| specifying exact versions all the time. Hence we provide standard boolean |
| operators: |
| |
| Examples: |
| .nf |
| \fI>\fRmedia\-libs/libgd\-1.6 |
| \fI>=\fRmedia\-libs/libgd\-1.6 |
| \fI=\fRmedia\-libs/libgd\-1.6 |
| \fI<=\fRmedia\-libs/libgd\-1.6 |
| \fI<\fRmedia\-libs/libgd\-1.6 |
| .fi |
| .TP |
| .B Extended Atom Prefixes [!~] and Postfixes [*] |
| Now to get even fancier, we provide the ability to define blocking packages and |
| version range matching. Also note that these extended prefixes/postfixes may |
| be combined in any way with the atom classes defined above. |
| .RS |
| .TP |
| .I ~ |
| means match any revision of the base version specified. So in the |
| example below, we would match versions '1.0.2a', '1.0.2a\-r1', '1.0.2a\-r2', |
| etc... |
| |
| Example: |
| .nf |
| \fI~\fRnet\-libs/libnet\-1.0.2a |
| .fi |
| .TP |
| .I ! |
| means block packages from being installed at the same time. |
| |
| Example: |
| .nf |
| \fI!\fRapp\-text/dos2unix |
| .fi |
| .TP |
| .I !! |
| means block packages from being installed at the same time |
| and explicitly disallow them from being temporarily installed |
| simultaneously during a series of upgrades. This syntax is supported |
| beginning with \fBEAPI 2\fR. |
| |
| Example: |
| .nf |
| \fI!!\fR<sys\-apps/portage\-2.1.4_rc1 |
| .fi |
| .TP |
| .I * |
| means match any version of the package so long |
| as the specified string prefix is matched. So with a |
| version of '2*', we can match '2.1', '2.2', '2.2.1', |
| etc... and not match version '1.0', '3.0', '4.1', etc... |
| Beware that, due to the string matching nature, '20' |
| will also be matched by '2*'. The version part |
| that comes before the '*' must be a valid version in the absence of the '*'. |
| For example, '2' is a valid version and '2.' is not. Therefore, '2*' is |
| allowed and '2.*' is not. |
| |
| Examples: |
| .nf |
| =dev\-libs/glib\-2\fI*\fR |
| \fI!\fR=net\-fs/samba\-2\fI*\fR |
| .fi |
| .RE |
| .TP |
| .B Atom Slots |
| Beginning with \fBEAPI 1\fR, any atom can be constrained to match a specific |
| \fBSLOT\fR. This is accomplished by appending a colon followed by a |
| \fBSLOT\fR: |
| |
| Examples: |
| .nf |
| x11\-libs/qt:3 |
| \fI~\fRx11\-libs/qt-3.3.8:3 |
| \fI>=\fRx11\-libs/qt-3.3.8:3 |
| \fI=\fRx11\-libs/qt-3.3*:3 |
| .fi |
| .TP |
| .B Sub Slots |
| Beginning with \fBEAPI 5\fR, a slot dependency may contain an |
| optional sub\-slot part that follows the regular slot and is |
| delimited by a \fI/\fR character. |
| |
| Examples: |
| .nf |
| dev\-libs/icu:0/0 |
| dev\-libs/icu:0/49 |
| dev\-lang/perl:0/5.12 |
| dev\-libs/glib:2/2.30 |
| .fi |
| .TP |
| .B Atom Slot Operators |
| Beginning with \fBEAPI 5\fR, slot operator dependency consists |
| of a colon followed by one of the following operators: |
| .RS |
| .TP |
| .I * |
| Indicates that any slot value is acceptable. In addition, |
| for runtime dependencies, indicates that the package will not |
| break if the matched package is uninstalled and replaced by |
| a different matching package in a different slot. |
| |
| Examples: |
| .nf |
| dev\-libs/icu:* |
| dev\-lang/perl:* |
| dev-libs/glib:* |
| .fi |
| .TP |
| .I = |
| Indicates that any slot value is acceptable. In addition, |
| for runtime dependencies, indicates that the package will |
| break unless a matching package with slot and sub\-slot equal |
| to the slot and sub\-slot of the best installed version at the |
| time the package was installed is available. |
| |
| Examples: |
| .nf |
| dev\-libs/icu:= |
| dev\-lang/perl:= |
| dev-libs/glib:= |
| .fi |
| .TP |
| .I slot= |
| Indicates that only a specific slot value is acceptable, and |
| otherwise behaves identically to the plain equals slot operator. |
| |
| Examples: |
| .nf |
| dev\-libs/icu:0= |
| dev\-lang/perl:0= |
| dev-libs/glib:2= |
| .fi |
| .PP |
| To implement the equals slot operator, the package manager |
| will need to store the slot/sub\-slot pair of the best installed |
| version of the matching package. This syntax is only for package |
| manager use and must not be used by ebuilds. The package manager |
| may do this by inserting the appropriate slot/sub\-slot pair |
| between the colon and equals sign when saving the package's |
| dependencies. The sub\-slot part must not be omitted here |
| (when the SLOT variable omits the sub\-slot part, the package |
| is considered to have an implicit sub\-slot which is equal to |
| the regular slot). |
| |
| Examples: |
| .nf |
| dev\-libs/icu:0/0= |
| dev\-libs/icu:0/49= |
| dev\-lang/perl:0/5.12= |
| dev-libs/glib:2/2.30= |
| .fi |
| .RE |
| .TP |
| .B Atom USE |
| Beginning with \fBEAPI 2\fR, any atom can be constrained to match specific |
| \fBUSE\fR flag settings. When used together with \fBSLOT\fR dependencies, |
| \fBUSE\fR dependencies appear on the right hand side of \fBSLOT\fR |
| dependencies. |
| .RS |
| .TP |
| .B Unconditional USE Dependencies |
| .TS |
| l l |
| __ |
| l l. |
| Example Meaning |
| foo[bar] foo must have bar enabled |
| foo[bar,baz] foo must have both bar and baz enabled |
| foo[\-bar,baz] foo must have bar disabled and baz enabled |
| .TE |
| .TP |
| .B Conditional USE Dependencies |
| .TS |
| l l |
| __ |
| l l. |
| Compact Form Equivalent Expanded Form |
| foo[bar?] bar? ( foo[bar] ) !bar? ( foo ) |
| foo[!bar?] bar? ( foo ) !bar? ( foo[\-bar] ) |
| foo[bar=] bar? ( foo[bar] ) !bar? ( foo[\-bar] ) |
| foo[!bar=] bar? ( foo[\-bar] ) !bar? ( foo[bar] ) |
| .TE |
| .RE |
| .TP |
| .B Atom USE defaults |
| Beginning with \fBEAPI 4\fR, \fBUSE\fR dependencies may specify default |
| assumptions about values for flags that may or may not be missing from |
| the \fBIUSE\fR of the matched package. Such defaults are specified by |
| immediately following a flag with either \fI(+)\fR or \fI(\-)\fR. Use |
| \fI(+)\fR to behave as if a missing flag is present and enabled, or |
| \fI(\-)\fR to behave as if it is present and disabled: |
| |
| Examples: |
| .nf |
| media\-video/ffmpeg[threads(+)] |
| media\-video/ffmpeg[-threads(\-)] |
| .fi |
| .TP |
| .B Dynamic Dependencies |
| Sometimes programs may depend on different things depending on the USE |
| variable. Portage offers a few options to handle this. Note that when |
| using the following syntaxes, each case is considered as 1 Atom in the |
| scope it appears. That means that each Atom both conditionally include |
| multiple Atoms and be nested to an infinite depth. |
| .RS |
| .TP |
| .B usevar? ( Atom ) |
| To include the jpeg library when the user has jpeg in \fBUSE\fR, simply use the |
| following syntax: |
| |
| jpeg? ( media\-libs/jpeg ) |
| .TP |
| .B !usevar? ( Atom ) |
| If you want to include a package only if the user does not have a certain |
| option in their \fBUSE\fR variable, then use the following syntax: |
| |
| !nophysfs? ( dev\-games/physfs ) |
| |
| This is often useful for those times when you want to want to add optional |
| support for a feature and have it enabled by default. |
| .TP |
| .B usevar? ( Atom if true ) !usevar? ( Atom if false ) |
| For functionality like the tertiary operator found in C you must use |
| two statements, one normal and one inverted. If a package uses |
| GTK2 or GTK1, but not both, then you can handle that like this: |
| |
| gtk2? ( =x11\-libs/gtk+\-2* ) !gtk2? ( =x11\-libs/gtk+\-1* ) |
| |
| That way the default is the superior GTK2 library. |
| .TP |
| .B || ( Atom Atom ... ) |
| When a package can work with a few different packages but a virtual is not |
| appropriate, this syntax can easily be used. |
| |
| Example: |
| .nf |
| || ( |
| app\-games/unreal\-tournament |
| app\-games/unreal\-tournament\-goty |
| ) |
| .fi |
| |
| Here we see that unreal\-tournament has a normal version and it has a goty |
| version. Since they provide the same base set of files, another package can |
| use either. Adding a virtual is inappropriate due to the small scope of it. |
| |
| Another good example is when a package can be built with multiple video |
| interfaces, but it can only ever have just one. |
| |
| Example: |
| .nf |
| || ( |
| sdl? ( media\-libs/libsdl ) |
| svga? ( media\-libs/svgalib ) |
| opengl? ( virtual/opengl ) |
| ggi? ( media\-libs/libggi ) |
| virtual/x11 |
| ) |
| .fi |
| |
| Here only one of the packages will be chosen, and the order of preference is |
| determined by the order in which they appear. So sdl has the best chance of |
| being chosen, followed by svga, then opengl, then ggi, with a default of X if |
| the user does not specify any of the previous choices. |
| |
| Note that if any of the packages listed are already merged, the package manager |
| will use that to consider the dependency satisfied. |
| |
| .SS "Cross-compilation" |
| Portage supports cross-compilation into a subdirectory specified by \fBROOT\fR. |
| .TP |
| .B Host |
| \fIHost\fR in this context means the platform hosting the build process, i.e. |
| what autotools calls CBUILD. |
| Its packages are contained in the root of the filesystem ("\fI/\fR"). |
| |
| If \fBROOT\fR is "\fI/\fR", all dependency types will be installed there. |
| Otherwise, for EAPIs that support \fBHDEPEND\fR (experimental |
| \fBEAPI 5-hdepend\fR), only \fBHDEPEND\fR is installed into "\fI/\fR". |
| For EAPIs that do not support \fBHDEPEND\fR, the behaviour is controlled by the |
| \fI\-\-root-deps\fR flag to \fBemerge\fR(1), defaulting to install only |
| \fBDEPEND\fR into the \fIhost\fR. |
| .TP |
| .B Target |
| \fITarget\fR refers to the platform that the package will later run on, i.e. |
| what autotools calls CHOST. |
| The directory housing this system is specified by \fBROOT\fR. |
| If it is different from "\fI/\fR", i.e. \fIhost\fR and \fItarget\fR are not the |
| same, this variable contains the path to the directory housing the \fItarget\fR |
| system. |
| |
| For EAPIs that support \fBHDEPEND\fR (experimental \fBEAPI 5-hdepend\fR), |
| \fBDEPEND\fR, \fBRDEPEND\fR, and \fBPDEPEND\fR |
| list the \fItarget\fR dependencies, i.e. those to be installed into \fBROOT\fR. |
| For EAPIs that do not support \fBHDEPEND\fR, the \fBemerge\fR(1) flag |
| \fI\-\-root-deps\fR controls what the package manager installs there. |
| Without it, \fBemerge\fR defaults to install only runtime dependencies (i.e. |
| \fBRDEPEND\fR and \fBPDEPEND\fR) into \fBROOT\fR. |
| .PP |
| See section \fBVARIABLES\fR for more information about the \fBDEPEND\fR, |
| \fBRDEPEND\fR and \fBHDEPEND\fR variables. |
| .TP |
| .B The targetroot USE flag |
| For EAPIs that support the "\fItargetroot\fR" USE flag, that flag is |
| automatically enabled by the package manager if \fIhost\fR and \fItarget\fR |
| system are not the same, i.e. if the \fBROOT\fR is not "\fI/\fR". |
| This is necessary where the package to be built needs an executable copy of |
| itself during the build process. |
| A known example is dev-lang/python, which needs to run a Python interpreter |
| during compilation. |
| |
| .SH "VARIABLES" |
| .TP |
| .B Usage Notes |
| \- Variables defined in \fBmake.conf\fR(5) are available for use in |
| ebuilds (except Portage\-specific variables, which might be not supported by |
| other package managers). |
| .br |
| \- When assigning values to variables in ebuilds, you \fIcannot have a |
| space\fR between the variable name and the equal sign. |
| .br |
| \- Variable values should only contain characters that are members of the |
| \fBascii\fR(7) character set. This requirement is mandated by \fBGLEP 31\fR. |
| .TP |
| .B P |
| This variable contains the package name without the ebuild revision. |
| This variable must NEVER be modified. |
| |
| xfree\-4.2.1\-r2.ebuild \-\-> $P=='xfree\-4.2.1' |
| .TP |
| .B PN |
| Contains the name of the script without the version number. |
| |
| xfree\-4.2.1\-r2.ebuild \-\-> $PN=='xfree' |
| .TP |
| .B PV |
| Contains the version number without the revision. |
| |
| xfree\-4.2.1\-r2.ebuild \-\-> $PV=='4.2.1' |
| .TP |
| .B PR |
| Contains the revision number or 'r0' if no revision number exists. |
| |
| xfree\-4.2.1\-r2.ebuild \-\-> $PR=='r2' |
| .TP |
| .B PVR |
| Contains the version number with the revision. |
| |
| xfree\-4.2.1\-r2.ebuild \-\-> $PVR=='4.2.1\-r2' |
| .TP |
| .B PF |
| Contains the full package name \fBPN\fR\-\fBPVR\fR |
| |
| xfree\-4.2.1\-r2.ebuild \-\-> $PF=='xfree\-4.2.1\-r2' |
| .TP |
| .B CATEGORY |
| Contains the package category name. |
| .TP |
| .B A |
| Contains all source files required for the package. This variable must |
| not be defined. It is autogenerated from the \fBSRC_URI\fR variable. |
| .TP |
| .B WORKDIR\fR = \fI"${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/work" |
| Contains the path to the package build root. Do not modify this variable. |
| .TP |
| .B FILESDIR\fR = \fI"${repository_location}/${CATEGORY}/${PN}/files" |
| Contains the path to the 'files' subdirectory in the package specific |
| location in given repository. Do not modify this variable. |
| .TP |
| .B EBUILD_PHASE |
| Contains the abreviated name of the phase function that is |
| currently executing, such as "setup", "unpack", "compile", or |
| "preinst". |
| .TP |
| .B EBUILD_PHASE_FUNC |
| Beginning with \fBEAPI 5\fR, contains the full name of the phase |
| function that is currently executing, such as "pkg_setup", |
| "src_unpack", "src_compile", or "pkg_preinst". |
| .TP |
| .B EPREFIX |
| Beginning with \fBEAPI 3\fR, contains the offset |
| that this Portage was configured for during |
| installation. The offset is sometimes necessary in an ebuild or eclass, |
| and is available in such cases as ${EPREFIX}. EPREFIX does not contain |
| a trailing slash, therefore an absent offset is represented by the empty |
| string. Do not modify this variable. |
| .TP |
| .B S\fR = \fI"${WORKDIR}/${P}" |
| Contains the path to the temporary \fIbuild directory\fR. This variable |
| is used by the functions \fIsrc_compile\fR and \fIsrc_install\fR. Both |
| are executed with \fIS\fR as the current directory. This variable may |
| be modified to match the extraction directory of a tarball for the package. |
| .TP |
| .B T\fR = \fI"${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/temp" |
| Contains the path to a \fItemporary directory\fR. You may use this for |
| whatever you like. |
| .TP |
| .B D\fR = \fI"${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/image/" |
| Contains the path to the temporary \fIinstall directory\fR. Every write |
| operation that does not involve the helper tools and functions (found below) |
| should be prefixed with ${D}. |
| Beginning with \fBEAPI 3\fR, the offset prefix often needs |
| to be taken into account here, for which the variable |
| ${ED} is provided (see below). |
| Do not modify this variable. |
| .TP |
| .B ED\fR = \fI"${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/image/${EPREFIX}/" |
| Beginning with \fBEAPI 3\fR, contains the path |
| "${D%/}${EPREFIX}/" for convenience purposes. |
| For EAPI values prior to \fBEAPI 3\fR which do |
| not support ED, helpers use \fBD\fR where |
| they would otherwise use ED. |
| Do not modify this variable. |
| .TP |
| .B MERGE_TYPE |
| Beginning with \fBEAPI 4\fR, the MERGE_TYPE variable can be used to |
| query the current merge type. This variable will contain one of the |
| following possible values: |
| |
| .RS |
| .TS |
| l l |
| __ |
| l l. |
| Value Meaning |
| binary previously\-built which is scheduled for merge |
| buildonly source\-build which is not scheduled for merge |
| source source\-build which is scheduled for merge |
| .TE |
| .RE |
| .TP |
| .B PORTAGE_LOG_FILE |
| Contains the path of the build log. If \fBPORT_LOGDIR\fR variable is unset then |
| PORTAGE_LOG_FILE=\fI"${T}/build.log"\fR. |
| .TP |
| .B REPLACED_BY_VERSION |
| Beginning with \fBEAPI 4\fR, the REPLACED_BY_VERSION variable can be |
| used in pkg_prerm and pkg_postrm to query the package version that |
| is replacing the current package. If there is no replacement package, |
| the variable will be empty, otherwise it will contain a single version |
| number. |
| .TP |
| .B REPLACING_VERSIONS |
| Beginning with \fBEAPI 4\fR, the REPLACING_VERSIONS variable can be |
| used in pkg_pretend, pkg_setup, pkg_preinst and pkg_postinst to query |
| the package version(s) that the current package is replacing. If there |
| are no packages to replace, the variable will be empty, otherwise it |
| will contain a space\-separated list of version numbers corresponding |
| to the package version(s) being replaced. Typically, this variable will |
| not contain more than one version, but according to PMS it can contain |
| more. |
| .TP |
| .B ROOT\fR = \fI"/" |
| Contains the path that portage should use as the root of the live filesystem. |
| When packages wish to make changes to the live filesystem, they should do so in |
| the tree prefixed by ${ROOT}. Often the offset prefix needs to be taken |
| into account here, for which the variable ${EROOT} is provided (see |
| below). Do not modify this variable. |
| .TP |
| .B EROOT\fR = \fI"${ROOT%/}${EPREFIX}/" |
| Beginning with \fBEAPI 3\fR, contains |
| "${ROOT%/}${EPREFIX}/" for convenience |
| purposes. Do not modify this variable. |
| .TP |
| .B DESCRIPTION\fR = \fI"A happy little package" |
| Should contain a short description of the package. |
| .TP |
| .B EAPI\fR = \fI"0" |
| Defines the ebuild API version to which this package conforms. If not |
| defined then it defaults to "0". If portage does not recognize the |
| EAPI value then it will mask the package and refuse to perform any |
| operations with it since this means that a newer version of portage |
| needs to be installed first. For maximum backward compatiblity, a |
| package should conform to the lowest possible EAPI. Note that anyone |
| who uses the \fBebuild\fR(1) and \fBrepoman\fR(1) commands with this |
| package will be required to have a version of portage that recognizes |
| the EAPI to which this package conforms. |
| .TP |
| .B SRC_URI\fR = \fI"http://example.com/path/${P}.tar.gz" |
| Contains a list of URIs for the required source files. It can contain |
| multiple URIs for a single source file. The list is processed in order |
| if the file was not found on any of the \fIGENTOO_MIRRORS\fR. |
| Beginning with \fBEAPI 2\fR, the output file name of a given URI may be |
| customized with a "->" operator on the right hand side, followed by the |
| desired output file name. All tokens, including the operator and output |
| file name, should be separated by whitespace. |
| .TP |
| .B HOMEPAGE\fR = \fI"http://example.com/" |
| Should contain a list of URIs for the sources main sites and other further |
| package dependent information. |
| .TP |
| .B KEYWORDS\fR = \fI[\-~][x86,ppc,sparc,mips,alpha,arm,hppa] |
| Should contain appropriate list of arches that the ebuild is know to |
| work/not work. By default if you do not know if an ebuild runs under |
| a particular arch simply omit that KEYWORD. If the ebuild will not |
| work on that arch include it as \-ppc for example. If the ebuild is |
| being submitted for inclusion, it must have ~arch set for architectures |
| where it has been PROVEN TO WORK. (Packages KEYWORDed this way may be |
| unmasked for testing by setting ACCEPT_KEYWORDS="~arch" on the command |
| line, or in \fBmake.conf\fR(5)) For an authoritative list please review |
| /usr/portage/profiles/arch.list. Please keep this list in alphabetical order. |
| .TP |
| .B SLOT |
| This sets the SLOT for packages that may need to have multiple versions |
| co\-exist. By default you should set \fBSLOT\fR="0". If you are unsure, then |
| do not fiddle with this until you seek some guidance from some guru. This |
| value should \fINEVER\fR be left undefined. |
| |
| Beginning with \fBEAPI 5\fR, the SLOT variable may contain |
| an optional sub\-slot part that follows the regular slot and |
| is delimited by a / character. The sub\-slot must be a valid |
| slot name. The sub\-slot is used to represent cases in which |
| an upgrade to a new version of a package with a different |
| sub\-slot may require dependent packages to be rebuilt. When |
| the sub\-slot part is omitted from the SLOT definition, the |
| package is considered to have an implicit sub\-slot which is |
| equal to the regular slot. Refer to the \fBAtom Slot |
| Operators\fR section for more information about sub\-slot |
| usage. |
| .TP |
| .B LICENSE |
| This should be a space delimited list of licenses that the package falls |
| under. This \fB_must_\fR be set to a matching license in |
| /usr/portage/licenses/. If the license does not exist in portage yet, you |
| must add it first. |
| .TP |
| .B IUSE |
| This should be a list of any and all USE flags that are leveraged within |
| your build script. The only USE flags that should not be listed here are |
| arch related flags (see \fBKEYWORDS\fR). Beginning with \fBEAPI 1\fR, it |
| is possible to prefix flags with + or - in order to create default settings |
| that respectively enable or disable the corresponding \fBUSE\fR flags. For |
| details about \fBUSE\fR flag stacking order, refer to the \fBUSE_ORDER\fR |
| variable in \fBmake.conf\fR(5). Given the default \fBUSE_ORDER\fR setting, |
| negative IUSE default settings are effective only for negation of |
| repo\-level USE settings, since profile and user configuration settings |
| override them. |
| .TP |
| .B DEPEND |
| This should contain a list of all packages that are required for the program |
| to compile (aka \fIbuildtime\fR dependencies). These are usually libraries and |
| headers. |
| |
| Starting from experimental \fBEAPI 5-hdepend\fR, tools should go into the |
| \fBHDEPEND\fR variable instead, as \fBDEPEND\fR will only be installed into the |
| \fItarget\fR system and hence cannot be executed in a cross\-compile setting. |
| (See section \fBCross\-compilation\fR for more information.) |
| |
| You may use the syntax described above in the \fBDependencies\fR section. |
| .TP |
| .B RDEPEND |
| This should contain a list of all packages that are required for this |
| program to run (aka \fIruntime\fR dependencies). These are usually libraries. |
| |
| In \fBEAPI 3\fR or earlier, if this is not set, then it defaults to the value |
| of \fBDEPEND\fR. In \fBEAPI 4\fR or later, \fBRDEPEND\fR will never be |
| implicitly set. |
| |
| You may use the syntax described above in the \fBDependencies\fR section. |
| .TP |
| .B HDEPEND |
| This should contain a list of all packages that are required to be executable |
| during compilation of this program (aka \fIhost\fR buildtime dependencies). |
| These are usually tools, like interpreters or (cross\-)compilers. |
| |
| This variable is new in experimental \fBEAPI 5-hdepend\fR and will be installed |
| into the \fIhost\fR system. |
| (See section \fBCross-compilation\fR for more information.) |
| |
| You may use the syntax described above in the \fBDependencies\fR section. |
| .TP |
| .B PDEPEND |
| This should contain a list of all packages that should be merged after this |
| one (aka \fIpost\fR merge dependencies), but which may be installed by the |
| package manager at any time, if that is not possible. |
| |
| .B ***WARNING*** |
| .br |
| Use this only as last resort to break cyclic dependencies! |
| |
| You may use the syntax described above in the \fBDependencies\fR section. |
| .TP |
| .B REQUIRED_USE |
| Beginning with \fBEAPI 4\fR, the \fBREQUIRED_USE\fR variable can be |
| used to specify combinations of \fBUSE\fR flags that are allowed |
| or not allowed. Elements can be nested when necessary. |
| .TS |
| l l |
| __ |
| l l. |
| Behavior Expression |
| If flag1 enabled then flag2 disabled flag1? ( !flag2 ) |
| If flag1 enabled then flag2 enabled flag1? ( flag2 ) |
| If flag1 disabled then flag2 enabled !flag1? ( flag2 ) |
| If flag1 disabled then flag2 disabled !flag1? ( !flag2 ) |
| Must enable any one or more (inclusive or) || ( flag1 flag2 flag3 ) |
| Must enable exactly one but not more (exclusive or) ^^ ( flag1 flag2 flag3 ) |
| May enable at most one (EAPI 5 or later) ?? ( flag1 flag2 flag3 ) |
| .TE |
| .TP |
| .B RESTRICT\fR = \fI[strip,mirror,fetch,userpriv] |
| This should be a space delimited list of portage features to restrict. |
| You may use conditional syntax to vary restrictions as seen above in DEPEND. |
| .PD 0 |
| .RS |
| .TP |
| .I binchecks |
| Disable all QA checks for binaries. This should ONLY be used in packages |
| for which binary checks make no sense (linux\-headers and kernel\-sources, for |
| example, can safely be skipped since they have no binaries). If the binary |
| checks need to be skipped for other reasons (such as proprietary binaries), |
| see the \fBQA CONTROL VARIABLES\fR section for more specific exemptions. |
| .TP |
| .I bindist |
| Distribution of built packages is restricted. |
| .TP |
| .I fetch |
| like \fImirror\fR but the files will not be fetched via \fBSRC_URI\fR either. |
| .TP |
| .I installsources |
| Disables installsources for specific packages. This is for packages with |
| binaries that are not compatible with debugedit. |
| .TP |
| .I mirror |
| files in \fBSRC_URI\fR will not be downloaded from the \fBGENTOO_MIRRORS\fR. |
| .TP |
| .I preserve\-libs |
| Disables preserve\-libs for specific packages. Note than when a package is |
| merged, RESTRICT=preserve\-libs applies if either the new instance or the |
| old instance sets RESTRICT=preserve\-libs. |
| .TP |
| .I primaryuri |
| fetch from URIs in \fBSRC_URI\fR before \fBGENTOO_MIRRORS\fR. |
| .TP |
| .I splitdebug |
| Disables splitdebug for specific packages. This is for packages with |
| binaries that trigger problems with splitdebug, such as file\-collisions |
| between symlinks in /usr/lib/debug/.build-id (triggered by bundled libraries). |
| .TP |
| .I strip |
| final binaries/libraries will not be stripped of debug symbols. |
| .TP |
| .I test |
| do not run src_test even if user has \fBFEATURES\fR=test. |
| .TP |
| .I userpriv |
| Disables userpriv for specific packages. |
| .RE |
| .PD 1 |
| .TP |
| .B PROPERTIES\fR = \fI[interactive] |
| A space delimited list of properties, with conditional syntax support. |
| .PD 0 |
| .RS |
| .TP |
| .I interactive |
| One or more ebuild phases will produce a prompt that requires user interaction. |
| .RE |
| .PD 1 |
| .TP |
| .B PROVIDE\fR = \fI"virtual/TARGET" |
| This variable should only be used when a package provides a virtual target. |
| For example, blackdown\-jdk and sun\-jdk provide \fIvirtual/jdk\fR. This |
| allows for packages to depend on \fIvirtual/jdk\fR rather than on blackdown |
| or sun specifically. |
| |
| The \fBPROVIDE\fR variable has been deprecated. See |
| \fIhttp://www.gentoo.org/proj/en/glep/glep-0037.html\fR for details. |
| |
| .TP |
| .B DOCS |
| Beginning with \fBEAPI 4\fR, an array or space\-delimited list of documentation |
| files for the default src_install function to install using dodoc. If |
| undefined, a reasonable default list is used. See the documentation for |
| src_install below. |
| |
| .SS "QA Control Variables:" |
| .TP |
| .B Usage Notes |
| Several QA variables are provided which allow an ebuild to manipulate some |
| of the QA checks performed by portage. Use of these variables in ebuilds |
| should be kept to an absolute minimum otherwise they defeat the purpose |
| of the QA checks, and their use is subject to agreement of the QA team. |
| They are primarily intended for use by ebuilds that install closed\-source |
| binary objects that cannot be altered. |
| |
| Note that objects that violate these rules may fail on some architectures. |
| .TP |
| .B QA_PREBUILT |
| This should contain a list of file paths, relative to the image |
| directory, of files that are pre\-built binaries. Paths |
| listed here will be appended to each of the QA_* variables |
| listed below. The paths may contain fnmatch\-like patterns |
| which will be internally translated to regular expressions for |
| the QA_* variables that support regular expressions instead |
| of fnmatch patterns. The translation mechanism simply replaces |
| "*" with ".*". |
| .TP |
| .B QA_TEXTRELS |
| This variable can be set to a list of file paths, relative to the image |
| directory, of files that contain text relocations that cannot be eliminated. |
| The paths may contain fnmatch patterns. |
| |
| This variable is intended to be used on closed\-source binary objects that |
| cannot be altered. |
| .TP |
| .B QA_EXECSTACK |
| This should contain a list of file paths, relative to the image directory, of |
| objects that require executable stack in order to run. |
| The paths may contain fnmatch patterns. |
| |
| This variable is intended to be used on objects that truly need executable |
| stack (i.e. not those marked to need it which in fact do not). |
| .TP |
| .B QA_WX_LOAD |
| This should contain a list of file paths, relative to the image directory, of |
| files that contain writable and executable segments. These are rare. |
| The paths may contain fnmatch patterns. |
| .TP |
| .B QA_FLAGS_IGNORED |
| This should contain a list of file paths, relative to the image directory, of |
| files that do not contain .GCC.command.line sections or contain .hash sections. |
| The paths may contain regular expressions with escape\-quoted special |
| characters. |
| |
| This variable is intended to be used on files of binary packages which ignore |
| CFLAGS, CXXFLAGS, FFLAGS, FCFLAGS, and LDFLAGS variables. |
| .TP |
| .B QA_MULTILIB_PATHS |
| This should contain a list of file paths, relative to the image directory, of |
| files that should be ignored for the multilib\-strict checks. |
| The paths may contain regular expressions with escape\-quoted special |
| characters. |
| .TP |
| .B QA_PRESTRIPPED |
| This should contain a list of file paths, relative to the image directory, of |
| files that contain pre-stripped binaries. The paths may contain regular |
| expressions with escape\-quoted special characters. |
| .TP |
| .B QA_SONAME |
| This should contain a list of file paths, relative to the image directory, of |
| shared libraries that lack SONAMEs. The paths may contain regular expressions |
| with escape\-quoted special characters. |
| .TP |
| .B QA_SONAME_NO_SYMLINK |
| This should contain a list of file paths, relative to the image directory, of |
| shared libraries that have SONAMEs but should not have a corresponding SONAME |
| symlink in the same directory. The paths may contain regular expressions |
| with escape\-quoted special characters. |
| .TP |
| .B QA_AM_MAINTAINER_MODE |
| This should contain a list of lines containing automake missing \-\-run |
| commands. The lines may contain regular expressions with escape\-quoted |
| special characters. |
| .TP |
| .B QA_CONFIGURE_OPTIONS |
| This should contain a list of configure options which trigger warnings about |
| unrecognized options. The options may contain regular expressions with |
| escape\-quoted special characters. |
| .TP |
| .B QA_DT_NEEDED |
| This should contain a list of file paths, relative to the image directory, of |
| shared libraries that lack NEEDED entries. The paths may contain regular |
| expressions with escape\-quoted special characters. |
| .TP |
| .B QA_DESKTOP_FILE |
| This should contain a list of file paths, relative to the image directory, of |
| desktop files which should not be validated. The paths may contain regular |
| expressions with escape\-quoted special characters. |
| |
| .SH "PORTAGE DECLARATIONS" |
| .TP |
| .B inherit |
| Inherit is portage's maintenance of extra classes of functions that are |
| external to ebuilds and provided as inheritable capabilities and data. They |
| define functions and set data types as drop\-in replacements, expanded, and |
| simplified routines for extremely common tasks to streamline the build |
| process. Call to inherit cannot depend on conditions which can vary in given |
| ebuild. Specification of the eclasses contains only their name and not the |
| \fI.eclass\fR extension. Also note that the inherit statement must come |
| before other variable declarations unless these variables are used in global |
| scope of eclasses. |
| |
| .SH "PHASE FUNCTIONS" |
| .TP |
| .B pkg_pretend |
| Beginning with \fBEAPI 4\fR, this function can be defined in order to |
| check that miscellaneous requirements are met. It is called as early |
| as possible, before any attempt is made to satisfy dependencies. If the |
| function detects a problem then it should call eerror and die. The |
| environment (variables, functions, temporary directories, etc..) that |
| is used to execute pkg_pretend is not saved and therefore is not |
| available in phases that execute afterwards. |
| .TP |
| .B pkg_nofetch |
| This function will be executed when the files in \fBSRC_URI\fR |
| cannot be fetched for any reason. If you turn on \fIfetch\fR in |
| \fBRESTRICT\fR, this is useful for displaying information to the |
| user on *how* to obtain said files. All |
| you have to do is output a message and let the function return. Do not |
| end the function with a call to \fBdie\fR. |
| .TP |
| .B pkg_setup |
| This function can be used if the package needs specific setup actions or |
| checks to be preformed before anything else. |
| .br |
| Initial working directory: $PORTAGE_TMPDIR |
| .TP |
| .B src_unpack |
| This function is used to unpack all the sources in \fIA\fR to \fIWORKDIR\fR. |
| If not defined in the \fIebuild script\fR it calls \fIunpack ${A}\fR. Any |
| patches and other pre configure/compile modifications should be done here. |
| .br |
| Initial working directory: $WORKDIR |
| .TP |
| .B src_prepare |
| All preparation of source code, such as application of patches, should be done |
| here. This function is supported beginning with \fBEAPI 2\fR. |
| .br |
| Initial working directory: $S |
| .TP |
| .B src_configure |
| All necessary steps for configuration should be done here. This function is |
| supported beginning with \fBEAPI 2\fR. |
| .br |
| Initial working directory: $S |
| .TP |
| .B src_compile |
| With less than \fBEAPI 2\fR, all necessary steps for both configuration and |
| compilation should be done here. Beginning with \fBEAPI 2\fR, only compilation |
| steps should be done here. |
| .br |
| Initial working directory: $S |
| .TP |
| .B src_test |
| Run all package specific test cases. The default is to run |
| \'emake check\' followed \'emake test\'. Prior to \fBEAPI 5\fR, |
| the default src_test implementation will automatically pass the |
| \-j1 option as the last argument to emake, and beginning with |
| \fBEAPI 5\fR it will allow the tests to run in parallel. |
| .br |
| Initial working directory: $S |
| .TP |
| .B src_install |
| Should contain everything required to install the package in the temporary |
| \fIinstall directory\fR. |
| .br |
| Initial working directory: $S |
| |
| Beginning with \fBEAPI 4\fR, if src_install is undefined then the |
| following default implementation is used: |
| |
| .nf |
| src_install() { |
| if [[ \-f Makefile || \-f GNUmakefile || \-f makefile ]] ; then |
| emake DESTDIR="${D}" install |
| fi |
| |
| if ! declare -p DOCS &>/dev/null ; then |
| local d |
| for d in README* ChangeLog AUTHORS NEWS TODO CHANGES \\ |
| THANKS BUGS FAQ CREDITS CHANGELOG ; do |
| [[ \-s "${d}" ]] && dodoc "${d}" |
| done |
| elif [[ $(declare \-p DOCS) == "declare \-a "* ]] ; then |
| dodoc "${DOCS[@]}" |
| else |
| dodoc ${DOCS} |
| fi |
| } |
| .fi |
| .TP |
| .B pkg_preinst pkg_postinst |
| All modifications required on the live\-filesystem before and after the |
| package is merged should be placed here. Also commentary for the user |
| should be listed here as it will be displayed last. |
| .br |
| Initial working directory: $PWD |
| .TP |
| .B pkg_prerm pkg_postrm |
| Like the pkg_*inst functions but for unmerge. |
| .br |
| Initial working directory: $PWD |
| .TP |
| .B pkg_config |
| This function should contain optional basic configuration steps. |
| .br |
| Initial working directory: $PWD |
| |
| .SH "HELPER FUNCTIONS" |
| .SS "Phases:" |
| .TP |
| .B default |
| Calls the default phase function implementation for the currently executing |
| phase. This function is supported beginning with \fBEAPI 2\fR. |
| .TP |
| .B default_* |
| Beginning with \fBEAPI 2\fR, the default pkg_nofetch and src_* phase |
| functions are accessible via a function having a name that begins with |
| default_ and ends with the respective phase function name. For example, |
| a call to a function with the name default_src_compile is equivalent to |
| a call to the default src_compile implementation. |
| |
| .RS |
| .TS |
| l |
| _ |
| l. |
| Default Phase Functions |
| default_pkg_nofetch |
| default_src_unpack |
| default_src_prepare |
| default_src_configure |
| default_src_compile |
| default_src_test |
| .TE |
| .RE |
| |
| .SS "General:" |
| .TP |
| .B die\fR \fI[reason] |
| Causes the current emerge process to be aborted. The final display will |
| include \fIreason\fR. |
| |
| Beginning with \fBEAPI 4\fR, all helpers automatically call \fBdie\fR |
| whenever some sort of error occurs. Helper calls may be prefixed with |
| the \fBnonfatal\fR helper in order to prevent errors from being fatal. |
| .TP |
| .B nonfatal\fR \fI<helper> |
| Execute \fIhelper\fR and \fIdo not\fR call die if it fails. |
| The \fBnonfatal\fR helper is available beginning with \fBEAPI 4\fR. |
| .TP |
| .B use\fR \fI<USE item> |
| If \fIUSE item\fR is in the \fBUSE\fR variable, the function will silently |
| return 0 (aka shell true). If \fIUSE item\fR is not in the \fBUSE\fR |
| variable, the function will silently return 1 (aka shell false). \fBusev\fR |
| is a verbose version of \fBuse\fR. |
| .RS |
| .TP |
| .I Example: |
| .nf |
| if use gnome ; then |
| guiconf="\-\-enable\-gui=gnome \-\-with\-x" |
| elif use gtk ; then |
| guiconf="\-\-enable\-gui=gtk \-\-with\-x" |
| elif use X ; then |
| guiconf="\-\-enable\-gui=athena \-\-with\-x" |
| else |
| # No gui version will be built |
| guiconf="" |
| fi |
| .fi |
| .RE |
| .TP |
| .B usev\fR \fI<USE item> |
| Like \fBuse\fR, but also echoes \fIUSE item\fR when \fBuse\fR returns true. |
| .TP |
| .B usex\fR \fI<USE flag>\fR \fI[true output]\fR \fI[false output]\fR \fI[true \ |
| suffix]\fR \fI[false suffix] |
| If USE flag is set, echo [true output][true suffix] (defaults to |
| "yes"), otherwise echo [false output][false suffix] (defaults to |
| "no"). The usex helper is available beginning with \fBEAPI 5\fR. |
| .TP |
| .B use_with\fR \fI<USE item>\fR \fI[configure name]\fR \fI[configure opt] |
| Useful for creating custom options to pass to a configure script. If \fIUSE |
| item\fR is in the \fBUSE\fR variable and a \fIconfigure opt\fR is specified, |
| then the string \fI\-\-with\-[configure name]=[configure opt]\fR will be |
| echoed. If \fIconfigure opt\fR is not specified, then just |
| \fI\-\-with\-[configure name]\fR will be echoed. If \fIUSE item\fR is not in |
| the \fBUSE\fR variable, then the string \fI\-\-without\-[configure name]\fR |
| will be echoed. If \fIconfigure name\fR is not specified, then \fIUSE item\fR |
| will be used in its place. Beginning with \fBEAPI 4\fR, an empty \fIconfigure |
| opt\fR argument is recognized. In \fBEAPI 3\fR and earlier, an empty |
| \fIconfigure opt\fR argument is treated as if it weren't provided. |
| .RS |
| .TP |
| .I Examples: |
| .nf |
| USE="opengl" |
| myconf=$(use_with opengl) |
| (myconf now has the value "\-\-with\-opengl") |
| |
| USE="jpeg" |
| myconf=$(use_with jpeg libjpeg) |
| (myconf now has the value "\-\-with\-libjpeg") |
| |
| USE="" |
| myconf=$(use_with jpeg libjpeg) |
| (myconf now has the value "\-\-without\-libjpeg") |
| |
| USE="sdl" |
| myconf=$(use_with sdl SDL all\-plugins) |
| (myconf now has the value "\-\-with\-SDL=all\-plugins") |
| .fi |
| .RE |
| .TP |
| .B use_enable\fR \fI<USE item>\fR \fI[configure name]\fR \fI[configure opt] |
| Same as \fBuse_with\fR above, except that the configure options are |
| \fI\-\-enable\-\fR instead of \fI\-\-with\-\fR and \fI\-\-disable\-\fR instead |
| of \fI\-\-without\-\fR. Beginning with \fBEAPI 4\fR, an empty \fIconfigure |
| opt\fR argument is recognized. In \fBEAPI 3\fR and earlier, an empty |
| \fIconfigure opt\fR argument is treated as if it weren't provided. |
| .TP |
| .B has\fR \fI<item>\fR \fI<item list> |
| If \fIitem\fR is in \fIitem list\fR, then \fBhas\fR returns |
| 0. Otherwise, 1 is returned. There is another version, \fBhasv\fR, that |
| will conditionally echo \fIitem\fR. |
| .br |
| The \fIitem list\fR is delimited by the \fIIFS\fR variable. This variable |
| has a default value of ' ', or a space. It is a \fBbash\fR(1) setting. |
| .TP |
| .B hasv\fR \fI<item>\fR \fI<item list> |
| Like \fBhas\fR, but also echoes \fIitem\fR when \fBhas\fR returns true. |
| .TP |
| .B has_version\fR \fI[\-\-host\-root]\fR \fI<category/package\-version> |
| Check to see if \fIcategory/package\-version\fR is installed on the system. |
| The parameter accepts all values that are acceptable in the \fBDEPEND\fR |
| variable. The function returns 0 if \fIcategory/package\-version\fR is |
| installed, 1 otherwise. Beginning with \fBEAPI 5\fR, the |
| \-\-host\-root option may be used in order to cause the query |
| to apply to the host root instead of ${ROOT}. |
| .TP |
| .B best_version\fR \fI[\-\-host\-root]\fR \fI<package name> |
| This function will look up \fIpackage name\fR in the database of currently |
| installed programs and echo the "best version" of the package that is |
| currently installed. Beginning with \fBEAPI 5\fR, the |
| \-\-host\-root option may be used in order to cause the query |
| to apply to the host root instead of ${ROOT}. |
| |
| Example: |
| .nf |
| VERINS="$(best_version net\-ftp/glftpd)" |
| (VERINS now has the value "net\-ftp/glftpd\-1.27" if glftpd\-1.27 is \ |
| installed) |
| .fi |
| |
| .SS "Hooks:" |
| .TP |
| .B register_die_hook\fR \fI[list of function names] |
| Register one or more functions to call when the ebuild fails for any reason, |
| including file collisions with other packages. |
| .TP |
| .B register_success_hook\fR \fI[list of function names] |
| Register one or more functions to call when the ebuild builds and/or installs |
| successfully. |
| |
| .SS "Output:" |
| .TP |
| .B einfo\fR \fI"disposable message" |
| Same as \fBelog\fR, but should be used when the message isn't important to the |
| user (like progress or status messages during the build process). |
| .TP |
| .B elog\fR \fI"informative message" |
| If you need to display a message that you wish the user to read and take |
| notice of, then use \fBelog\fR. It works just like \fBecho\fR(1), but |
| adds a little more to the output so as to catch the user's eye. The message |
| will also be logged by portage for later review. |
| .TP |
| .B ewarn\fR \fI"warning message" |
| Same as \fBeinfo\fR, but should be used when showing a warning to the user. |
| .TP |
| .B eqawarn\fR \fI"QA warning message" |
| Same as \fBeinfo\fR, but should be used when showing a QA warning to the user. |
| .TP |
| .B eerror\fR \fI"error message" |
| Same as \fBeinfo\fR, but should be used when showing an error to the user. |
| .TP |
| .B ebegin\fR \fI"helpful message" |
| Like \fBeinfo\fR, we output a \fIhelpful message\fR and then hint that the |
| following operation may take some time to complete. Once the task is |
| finished, you need to call \fBeend\fR. |
| .TP |
| .B eend\fR \fI<status>\fR \fI["error message"] |
| Followup the \fBebegin\fR message with an appropriate "OK" or "!!" (for |
| errors) marker. If \fIstatus\fR is non\-zero, then the additional \fIerror |
| message\fR is displayed. |
| |
| .SS "Unpack:" |
| .TP |
| .B unpack\fR \fI<source>\fR \fI[list of more sources] |
| This function uncompresses and/or untars a list of sources into the current |
| directory. The function will append \fIsource\fR to the \fBDISTDIR\fR variable. |
| |
| .SS "Compile:" |
| .TP |
| .B econf\fR \fI[configure options] |
| This is used as a replacement for configure. Performs: |
| .nf |
| ${\fIECONF_SOURCE\fR:-.}/configure \\ |
| ${CBUILD:+\-\-build=${CBUILD}} \\ |
| \-\-datadir="${EPREFIX}"/usr/share \\ |
| \-\-host=${CHOST} \\ |
| \-\-infodir="${EPREFIX}"/usr/share/info \\ |
| \-\-localstatedir="${EPREFIX}"/var/lib \\ |
| \-\-prefix="${EPREFIX}"/usr \\ |
| \-\-mandir="${EPREFIX}"/usr/share/man \\ |
| \-\-sysconfdir="${EPREFIX}"/etc \\ |
| ${CTARGET:+\-\-target=${CTARGET}} \\ |
| \-\-disable\-dependency\-tracking \\ |
| \fI${EXTRA_ECONF}\fR \\ |
| \fIconfigure options\fR || die "econf failed" |
| .fi |
| Note that the \fIEXTRA_ECONF\fR is for users only, not for ebuild |
| writers. If you wish to pass more options to configure, just pass the |
| extra arguments to \fBeconf\fR. Also note that \fBeconf\fR automatically |
| calls \fBdie\fR if the configure script fails. |
| Beginning with \fBEAPI 3\fR, \fBeconf\fR uses the \fB${EPREFIX}\fR |
| variable which is disregarded for prior \fBEAPI\fR values. |
| Beginning with \fBEAPI 4\fR, \fBeconf\fR adds |
| \fI\-\-disable\-dependency\-tracking\fR to the arguments if the |
| string \fIdisable\-dependency\-tracking\fR occurs in the output |
| of \fIconfigure \-\-help\fR. |
| Beginning with \fBEAPI 5\fR, \fBeconf\fR adds |
| \fIdisable\-silent\-rules\fR to the arguments if the |
| string \fIdisable\-silent\-rules\fR occurs in the output |
| of \fIconfigure \-\-help\fR. |
| .TP |
| .B emake\fR \fI[make options] |
| This is used as a replacement for make. Performs 'make ${MAKEOPTS} |
| \fImake options\fR' (as set in make.globals), default is MAKEOPTS="\-j2". |
| |
| .B ***WARNING*** |
| .br |
| if you are going to use \fBemake\fR, make sure your build is happy with |
| parallel makes (make \-j2). It should be tested thoroughly as parallel |
| makes are notorious for failing _sometimes_ but not always. If you determine |
| that your package fails to build in parallel, and you are unable to resolve |
| the issue, then you should run '\fBemake\fR \-j1' instead of 'make'. |
| |
| .SS "Install:" |
| .TP |
| .B einstall\fR \fI[make options] |
| This is used as a replacement for make install. Performs: |
| .nf |
| make \\ |
| prefix=${ED}/usr \\ |
| datadir=${ED}/usr/share \\ |
| infodir=${ED}/usr/share/info \\ |
| localstatedir=${ED}/var/lib \\ |
| mandir=${ED}/usr/share/man \\ |
| sysconfdir=${ED}/etc \\ |
| \fI${EXTRA_EINSTALL}\fR \\ |
| \fImake options\fR \\ |
| install |
| .fi |
| Please do \fBnot\fR use this in place of 'emake install DESTDIR=${D}'. |
| That is the preferred way of installing make\-based packages. Also, do |
| not utilize the \fIEXTRA_EINSTALL\fR variable since it is for users. |
| |
| .PD 0 |
| .TP |
| .B prepall |
| .TP |
| .B prepalldocs |
| .TP |
| .B prepallinfo |
| .TP |
| .B prepallman |
| .TP |
| .B prepallstrip |
| .PD 1 |
| Useful for when a package installs into \fB${D}\fR via scripts |
| (i.e. makefiles). If you want to be sure that libraries are executable, |
| aclocal files are installed into the right place, doc/info/man files are |
| all compressed, and that executables are all stripped of debugging symbols, |
| then use these suite of functions. |
| .RS |
| .PD 0 |
| .TP |
| .B prepall: |
| Runs \fBprepallman\fR, \fBprepallinfo\fR, \fBprepallstrip\fR, sets |
| libraries +x, and then checks aclocal directories. Please note this |
| does \fI*not*\fR run \fBprepalldocs\fR. |
| .TP |
| .B prepalldocs: |
| Compresses all doc files in ${ED}/usr/share/doc. |
| .TP |
| .B prepallinfo: |
| Compresses all info files in ${ED}/usr/share/info. |
| .TP |
| .B prepallman: |
| Compresses all man files in ${ED}/usr/share/man. |
| .TP |
| .B prepallstrip: |
| Strips all executable files of debugging symboles. This includes libraries. |
| .RE |
| |
| .TP |
| .B prepinfo\fR \fI[dir] |
| .TP |
| .B prepman\fR \fI[dir] |
| .TP |
| .B prepstrip\fR \fI[dir] |
| .PD 1 |
| Similar to the \fBprepall\fR functions, these are subtle in their differences. |
| .RS |
| .PD 0 |
| .TP |
| .B prepinfo: |
| If a \fIdir\fR is not specified, then \fBprepinfo\fR will assume the dir |
| \fIusr\fR. \fBprepinfo\fR will then compress all the files in |
| ${ED}/\fIdir\fR/info. |
| .TP |
| .B prepman: |
| If a \fIdir\fR is not specified, then \fBprepman\fR will assume the dir |
| \fIusr\fR. \fBprepman\fR will then compress all the files in |
| ${ED}/\fIdir\fR/man/*/. |
| .TP |
| .B prepstrip: |
| All the files found in ${ED}/\fIdir\fR will be stripped. You may specify |
| multiple directories. |
| .RE |
| .PD 1 |
| .TP |
| .B docompress\fR \fI[\-x] <path> [list of more paths] |
| .RS |
| Beginning with \fBEAPI 4\fR, the \fBdocompress\fR helper is used to |
| manage lists of files to be included or excluded from optional compression. |
| If the first argument is \fB\-x\fR, add each of its subsequent arguments to |
| the exclusion list. Otherwise, add each argument to the inclusion list. |
| The inclusion list initially contains \fI/usr/share/doc\fR, |
| \fI/usr/share/info\fR, and \fI/usr/share/man\fR. The exclusion list |
| initially contains \fI/usr/share/doc/${PF}/html\fR. |
| |
| The optional compression shall be carried out after \fBsrc_install\fR |
| has completed, and before the execution of any subsequent phase |
| function. For each item in the inclusion list, pretend it has the |
| value of the \fBD\fR variable prepended, then: |
| |
| .RS |
| If it is a directory, act as if every file or directory immediately |
| under this directory were in the inclusion list. |
| |
| If the item is a file, it may be compressed unless it has been |
| excluded as described below. |
| |
| If the item does not exist, it is ignored. |
| .RE |
| |
| Whether an item is to be excluded is determined as follows: For each |
| item in the exclusion list, pretend it has the value of the \fBD\fR |
| variable prepended, then: |
| |
| .RS |
| If it is a directory, act as if every file or directory immediately |
| under this directory were in the exclusion list. |
| |
| If the item is a file, it shall not be compressed. |
| |
| If the item does not exist, it is ignored. |
| .RE |
| .RE |
| .TP |
| .B dosed\fR \fI"s:orig:change:g" <filename> |
| Beginning with \fBEAPI 4\fR, the \fBdosed\fR helper no longer exists. Ebuilds |
| should call \fBsed(1)\fR directly (and assume that it is GNU sed). |
| |
| Performs sed in place on \fIfilename\fR inside ${ED}. If no expression is |
| given then \fI"s:${D}::g"\fR is used as the default expression. Note |
| that this expression does \fBNOT\fR use the offset prefix. |
| .br |
| .BR 'dosed\ "s:/usr/local:/usr:g"\ /usr/bin/some\-script' |
| runs sed on ${ED}/usr/bin/some\-script |
| .TP |
| .B dodir\fR \fI<path> [more paths] |
| Creates directories inside of ${ED}. |
| .br |
| .BR 'dodir\ /usr/lib/apache' |
| creates ${ED}/usr/lib/apache. Note that the do* functions will run |
| \fBdodir\fR for you. |
| .TP |
| .B diropts\fR \fI[options for install(1)] |
| Can be used to define options for the install function used in |
| \fBdodir\fR. The default is \fI\-m0755\fR. |
| .TP |
| .B into\fR \fI<path> |
| Sets the root (\fIDESTTREE\fR) for other functions like \fBdobin\fR, |
| \fBdosbin\fR, \fBdoman\fR, \fBdoinfo\fR, \fBdolib\fR. |
| .br |
| The default root is /usr. |
| .TP |
| .B keepdir\fR \fI<path> [more paths] |
| Tells portage to leave directories behind even if they're empty. Functions |
| the same as \fBdodir\fR. |
| .TP |
| .B dobin\fR \fI<binary> [list of more binaries] |
| Installs a \fIbinary\fR or a list of binaries into \fIDESTTREE\fR/bin. |
| Creates all necessary dirs. |
| .TP |
| .B dosbin\fR \fI<binary> [list of more binaries] |
| Installs a \fIbinary\fR or a list of binaries into \fIDESTTREE\fR/sbin. |
| Creates all necessary dirs. |
| .TP |
| .B doinitd\fR \fI<init.d script> [list of more init.d scripts] |
| Install Gentoo \fIinit.d scripts\fR. They will be installed into the |
| correct location for Gentoo init.d scripts (/etc/init.d/). Creates all |
| necessary dirs. |
| .TP |
| .B doconfd\fR \fI<conf.d file> [list of more conf.d file] |
| Install Gentoo \fIconf.d files\fR. They will be installed into the |
| correct location for Gentoo conf.d files (/etc/conf.d/). Creates all |
| necessary dirs. |
| .TP |
| .B doenvd\fR \fI<env.d entry> [list of more env.d entries] |
| Install Gentoo \fIenv.d entries\fR. They will be installed into the |
| correct location for Gentoo env.d entries (/etc/env.d/). Creates all |
| necessary dirs. |
| |
| .PD 0 |
| .TP |
| .B dolib\fR \fI<library>\fR \fI[list of more libraries] |
| .TP |
| .B dolib.a\fR \fI<library>\fR \fI[list of more libraries] |
| .TP |
| .B dolib.so\fR \fI<library>\fR \fI[list of more libraries] |
| .PD 1 |
| Installs a library or a list of libraries into \fIDESTTREE\fR/lib. |
| Creates all necessary dirs. |
| .TP |
| .B libopts\fR \fI[options for install(1)] |
| Can be used to define options for the install function used in |
| the \fBdolib\fR functions. The default is \fI\-m0644\fR. |
| .TP |
| .B doman\fR \fI[\-i18n=<locale>]\fR \fI<man\-page> [list of more man\-pages] |
| Installs manual\-pages into /usr/share/man/man[0\-9n] depending on the |
| manual file ending. The files are compressed if they are not already. You |
| can specify locale\-specific manpages with the \fI\-i18n\fR option. Then the |
| man\-page will be installed into /usr/share/man/\fI<locale>\fR/man[0\-9n]. |
| Beginning with \fBEAPI 2\fR, a locale\-specific manpage which contains a locale |
| in the file name will be installed in /usr/share/man/\fI<locale>\fR/man[0\-9n], |
| with the locale portion of the file name removed, and the \fI\-i18n\fR option |
| has no effect. For example, with \fBEAPI 2\fR, a manpage named |
| foo.\fI<locale>\fR.1 will be installed as |
| /usr/share/man/\fI<locale>\fR/man1/foo.1. Beginning with \fBEAPI 4\fR, |
| the \fI\-i18n\fR option takes precedence over the locale suffix of the |
| file name. |
| |
| .PD 0 |
| .TP |
| .B dohard\fR \fI<filename> <linkname> |
| Beginning with \fBEAPI 4\fR, the \fBdohard\fR helper no longer exists. Ebuilds |
| should call \fBln(1)\fR directly. |
| .TP |
| .B dosym\fR \fI<filename> <linkname> |
| .PD 1 |
| Performs the ln command to create a symlink. |
| .TP |
| .B doheader\fR \fI[\-r] <file> [list of more files] |
| Installs the given header files into /usr/include/, by default |
| with file mode \fI0644\fR (this can be overridden with the |
| \fBinsopts\fR function). Setting \-r sets recursive. The |
| \fBdoheader\fR helper is available beginning with \fBEAPI 5\fR. |
| .TP |
| .B dohtml\fR \fI [\-a filetypes] [\-r] [\-x list\-of\-dirs\-to\-ignore] \ |
| [list\-of\-files\-and\-dirs] |
| Installs the files in the list of files (space\-separated list) into |
| /usr/share/doc/${PF}/html provided the file ends in .htm, .html, .css, .js, \ |
| .gif, .jpeg, .jpg, or .png. |
| Setting \fI\-a\fR limits what types of files will be included, |
| \fI\-A\fR appends to the default list, setting \fI\-x\fR sets which dirs to |
| exclude (CVS excluded by default), \fI\-p\fR sets a document prefix, |
| \fI\-r\fR sets recursive. |
| .TP |
| .B doinfo\fR \fI<info\-file> [list of more info\-files] |
| Installs info\-pages into \fIDESTDIR\fR/info. Files are automatically |
| gzipped. Creates all necessary dirs. |
| .TP |
| .B domo\fR \fI<locale\-file> [list of more locale\-files] |
| Installs locale\-files into \fIDESTDIR\fR/usr/share/locale/[LANG] |
| depending on local\-file's ending. Creates all necessary dirs. |
| |
| .PD 0 |
| .TP |
| .B fowners\fR \fI<permissions> <file> [files] |
| .TP |
| .B fperms\fR \fI<permissions> <file> [files] |
| .PD 1 |
| Performs chown (\fBfowners\fR) or chmod (\fBfperms\fR), applying |
| \fIpermissions\fR to \fIfiles\fR. |
| .TP |
| .B insinto\fR \fI[path] |
| Sets the destination path for the \fBdoins\fR function. |
| .br |
| The default path is /. |
| .TP |
| .B insopts\fR \fI[options for install(1)] |
| Can be used to define options for the install function used in |
| \fBdoins\fR. The default is \fI\-m0644\fR. |
| .TP |
| .B doins\fR \fI[\-r] <file> [list of more files] |
| Installs files into the path controlled by \fBinsinto\fR. This function |
| uses \fBinstall\fR(1). Creates all necessary dirs. |
| Setting \-r sets recursive. Beginning with \fBEAPI 4\fR, both |
| \fBdoins\fR and \fBnewins\fR preserve symlinks. In \fBEAPI 3\fR and |
| earlier, symlinks are dereferenced rather than preserved. |
| .TP |
| .B exeinto\fR \fI[path] |
| Sets the destination path for the \fBdoexe\fR function. |
| .br |
| The default path is /. |
| .TP |
| .B exeopts\fR \fI[options for install(1)] |
| Can be used to define options for the install function used in \fBdoexe\fR. |
| The default is \fI\-m0755\fR. |
| .TP |
| .B doexe\fR \fI<executable> [list of more executables] |
| Installs executables into the path controlled by \fBexeinto\fR. This function |
| uses \fBinstall\fR(1). Creates all necessary dirs. |
| .TP |
| .B docinto\fR \fI[path] |
| Sets the subdir used by \fBdodoc\fR and \fBdohtml\fR |
| when installing into the document tree |
| (based in /usr/share/doc/${PF}/). Default is no subdir, or just "". |
| .TP |
| .B dodoc\fR \fI[-r] <document> [list of more documents] |
| Installs a document or a list of documents into |
| /usr/share/doc/${PF}/\fI<docinto path>\fR. |
| Documents are marked for compression. Creates all necessary dirs. |
| Beginning with \fBEAPI 4\fR, there is support for recursion, enabled by the |
| new \fI\-r\fR option. |
| |
| .PD 0 |
| .TP |
| .B newbin\fR \fI<old file> <new filename> |
| .TP |
| .B newsbin\fR \fI<old file> <new filename> |
| .TP |
| .B newinitd\fR \fI<old file> <new filename> |
| .TP |
| .B newconfd\fR \fI<old file> <new filename> |
| .TP |
| .B newenvd\fR \fI<old file> <new filename> |
| .TP |
| .B newlib.so\fR \fI<old file> <new filename> |
| .TP |
| .B newlib.a\fR \fI<old file> <new filename> |
| .TP |
| .B newman\fR \fI<old file> <new filename> |
| .TP |
| .B newins\fR \fI<old file> <new filename> |
| .TP |
| .B newexe\fR \fI<old file> <new filename> |
| .TP |
| .B newdoc\fR \fI<old file> <new filename> |
| .PD 1 |
| All these functions act like the do* functions, but they only work with one |
| file and the file is installed as \fI[new filename]\fR. |
| Beginning with \fBEAPI 5\fR, standard input is read when the |
| first parameter is \- (a hyphen). |
| |
| .SH "EXAMPLES" |
| .DS |
| .nf |
| # Copyright 1999\-2013 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Header: $ |
| |
| EAPI="5" |
| |
| inherit some_eclass another_eclass |
| |
| DESCRIPTION="Super\-useful stream editor (sed)" |
| HOMEPAGE="http://www.gnu.org/software/sed/sed.html" |
| SRC_URI="ftp://alpha.gnu.org/pub/gnu/${PN}/${P}.tar.gz" |
| |
| LICENSE="GPL\-2" |
| SLOT="0" |
| KEYWORDS="~x86" |
| IUSE="" |
| |
| RDEPEND="" |
| DEPEND="nls? ( sys-devel/gettext )" |
| |
| src_configure() { |
| econf \\ |
| \-\-bindir="${EPREFIX}"/bin |
| } |
| |
| src_install() { |
| emake DESTDIR="${D}" install |
| dodoc NEWS README* THANKS AUTHORS BUGS ChangeLog |
| } |
| .fi |
| .DE |
| |
| .SH "FILES" |
| .TP |
| The \fI/usr/lib/portage/bin/ebuild.sh\fR script. |
| .TP |
| The helper apps in \fI/usr/lib/portage/bin\fR. |
| .TP |
| .B /etc/portage/make.conf |
| 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. |
| |
| .SH "SEE ALSO" |
| .BR ebuild (1), |
| .BR make.conf (5), |
| .BR color.map (5) |
| |
| .SH "REPORTING BUGS" |
| Please report bugs via http://bugs.gentoo.org/ |
| |
| .SH "AUTHORS" |
| .nf |
| Achim Gottinger <achim@gentoo.org> |
| Mark Guertin <gerk@gentoo.org> |
| Nicholas Jones <carpaski@gentoo.org> |
| Mike Frysinger <vapier@gentoo.org> |
| Arfrever Frehtes Taifersar Arahesis <arfrever@apache.org> |
| Fabian Groffen <grobian@gentoo.org> |
| .fi |