| <section id='package-ebuild-eapi-5'> |
| <title>EAPI 5</title> |
| <section id='package-ebuild-eapi-5-metadata'> |
| <title>Metadata</title> |
| <section id='package-ebuild-eapi-5-metadata-required-use-at-most-one-of'> |
| <title>REQUIRED_USE supports new at-most-one-of operator</title> |
| <para> |
| The new at-most-one-of operator consists of the string '??', |
| and is satisfied if zero or one (but no more) of its child |
| elements is matched. |
| </para> |
| </section> |
| <section id='package-ebuild-eapi-5-metadata-slot-sub-slot'> |
| <title>SLOT supports optional "sub-slot" part</title> |
| <para> |
| 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. |
| </para> |
| <para> |
| Refer to the |
| <link linkend="package-ebuild-eapi-5-metadata-dependency-atom-slot-operators"> |
| slot operators</link> documentation for more information about sub-slot usage. |
| </para> |
| </section> |
| <section id='package-ebuild-eapi-5-metadata-dependency-atom-slot-operators'> |
| <title>Dependency atom slot operators</title> |
| <para> |
| A slot dependency may contain an optional sub-slot part that |
| follows the regular slot and is delimited by a / character. |
| An operator slot dependency consists of a colon followed by |
| one of the following operators: |
| <itemizedlist> |
| <listitem><para> |
| * 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. |
| </para></listitem> |
| <listitem><para> |
| = 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. |
| </para></listitem> |
| <listitem><para> |
| slot= Indicates that only a specific slot value is acceptable, |
| and otherwise behaves identically to the plain equals slot |
| operator. |
| </para></listitem> |
| </itemizedlist> |
| </para> |
| <para> |
| 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). |
| </para> |
| </section> |
| </section> |
| <section id='package-ebuild-eapi-5-profile'> |
| <title>Profiles</title> |
| <section id='package-ebuild-eapi-5-profile-iuse-injection'> |
| <title>Profile IUSE Injection</title> |
| <para> |
| IUSE_EFFECTIVE is a variable calculated from IUSE and |
| a variety of other sources described below. It is purely |
| a conceptual variable; it is not exported to the ebuild |
| environment. Values in IUSE_EFFECTIVE may legally be |
| used in queries about an ebuild's state (for example, for use |
| dependencies, for the use function, and for use in dependency |
| specification conditional blocks). |
| </para> |
| <para> |
| For EAPIs that support profile defined IUSE injection, IUSE_EFFECTIVE |
| contains the following values: |
| <itemizedlist> |
| <listitem><para> |
| All values in the calculated IUSE value. |
| </para></listitem> |
| <listitem><para> |
| All values in the profile IUSE_IMPLICIT variable. |
| </para></listitem> |
| <listitem><para> |
| All values in the profile variable named USE_EXPAND_VALUES_${v}, |
| where ${v} is any value in the intersection of the profile |
| USE_EXPAND_UNPREFIXED and USE_EXPAND_IMPLICIT variables. |
| </para></listitem> |
| <listitem><para> |
| All values for ${lower_v}_${x}, where ${x} is all values in |
| the profile variable named USE_EXPAND_VALUES_${v}, where ${v} |
| is any value in the intersection of the profile USE_EXPAND and |
| USE_EXPAND_IMPLICIT variables and ${lower_v} is the lowercase |
| equivalent of ${v}. |
| </para></listitem> |
| </itemizedlist> |
| </para> |
| <para> |
| <table><title>Example Variable Settings</title> |
| <tgroup cols='2' align='left' > |
| <colspec colname='source'/> |
| <colspec colname='destination'/> |
| <thead> |
| <row> |
| <entry>Variable</entry> |
| <entry>Value</entry> |
| </row> |
| </thead> |
| <tbody> |
| <row> |
| <entry>IUSE_IMPLICIT</entry> |
| <entry>prefix selinux</entry> |
| </row> |
| <row> |
| <entry>USE_EXPAND</entry> |
| <entry>ELIBC KERNEL USERLAND</entry> |
| </row> |
| <row> |
| <entry>USE_EXPAND_UNPREFIXED</entry> |
| <entry>ARCH</entry> |
| </row> |
| <row> |
| <entry>USE_EXPAND_IMPLICIT</entry> |
| <entry>ARCH ELIBC KERNEL USERLAND</entry> |
| </row> |
| <row> |
| <entry>USE_EXPAND_VALUES_ARCH</entry> |
| <entry>amd64 ppc ppc64 x86 x86-fbsd x86-solaris</entry> |
| </row> |
| <row> |
| <entry>USE_EXPAND_VALUES_ELIBC</entry> |
| <entry>FreeBSD glibc</entry> |
| </row> |
| <row> |
| <entry>USE_EXPAND_VALUES_KERNEL</entry> |
| <entry>FreeBSD linux SunOS</entry> |
| </row> |
| <row> |
| <entry>USE_EXPAND_VALUES_USERLAND</entry> |
| <entry>BSD GNU</entry> |
| </row> |
| </tbody> |
| </tgroup> |
| </table> |
| </para> |
| </section> |
| <section id='package-ebuild-eapi-5-profile-stable-use-masking'> |
| <title>Profile stable USE forcing and masking</title> |
| <para> |
| In profile directories with an EAPI supporting stable masking, |
| new USE configuration files are supported: use.stable.mask, |
| use.stable.force, package.use.stable.mask and |
| package.use.stable.force. These files behave similarly to |
| previously supported USE configuration files, except that they |
| only influence packages that are merged due to a stable keyword. |
| </para> |
| </section> |
| </section> |
| <section id='package-ebuild-eapi-5-helpers'> |
| <title>Helpers</title> |
| <section id='package-ebuild-eapi-5-helpers-econf-disable-silent-rules'> |
| <title>econf adds --disable-silent-rules</title> |
| <para> |
| This option will automatically be passed if |
| --disable-silent-rules occurs in the output of configure --help. |
| </para> |
| </section> |
| <section id='package-ebuild-eapi-5-helpers-newfoo-stdin'> |
| <title>new* commands can read from standard input</title> |
| <para> |
| Standard input is read when the first parameter is - (a hyphen). |
| </para> |
| </section> |
| <section id='package-ebuild-eapi-5-helpers-foo-version-host-root'> |
| <title>New option --host-root for {has,best}_version</title> |
| <para> |
| This option --host-root will cause the query to apply to the |
| host root instead of ROOT. |
| </para> |
| </section> |
| <section id='package-ebuild-eapi-5-helpers-doheader'> |
| <title>New doheader helper function</title> |
| <para> |
| Installs the given header files into /usr/include/, by default |
| with file mode 0644. This can be overridden by setting |
| INSOPTIONS with the insopts function. |
| </para> |
| </section> |
| <section id='package-ebuild-eapi-5-helpers-usex'> |
| <title>New usex helper function</title> |
| <programlisting> |
| USAGE: usex <USE flag> [true output] [false output] [true suffix] [false suffix] |
| DESCRIPTION: |
| If USE flag is set, echo [true output][true suffix] (defaults to "yes"), |
| otherwise echo [false output][false suffix] (defaults to "no"). |
| </programlisting> |
| </section> |
| </section> |
| <section id='package-ebuild-eapi-5-phases'> |
| <title>Phases</title> |
| <section id='package-ebuild-eapi-5-phases-src-test-parallel'> |
| <title>src_test supports parallel tests</title> |
| <para> |
| Unlike older EAPIs, the default src_test implementation will not |
| pass the -j1 option to emake. |
| </para> |
| </section> |
| </section> |
| <section id='package-ebuild-eapi-5-ebuild-environment-variables'> |
| <title>Ebuild Environment Variables</title> |
| <section id='package-ebuild-eapi-5-ebuild-environment-variables-ebuild-phase-func'> |
| <title>New EBUILD_PHASE_FUNC variable</title> |
| <para> |
| During execution of an ebuild phase function (such as pkg_setup |
| or src_unpack), the EBUILD_PHASE_FUNC variable will contain the |
| name of the phase function that is currently executing. |
| </para> |
| </section> |
| </section> |
| </section> |