\chapter{Feature Availability by EAPI}

\note This chapter is informative and for convenience only. Refer to the main text for specifics.
For lack of space, EAPIs 0, 1, and~2 have been consolidated into a single column in the table
below; entries marked with an asterisk differ between these EAPIs. See the 2012-09-20 edition
of this document for a complete table of previous EAPIs.

\ChangeWhenAddingAnEAPI{6}
\begin{landscape}
\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
\caption{Features in EAPIs}\\
\toprule
\multicolumn{1}{c}{\b{Feature}} &
\multicolumn{1}{c}{\b{Reference}} &
\multicolumn{5}{c}{\b{EAPIs}} \\
\multicolumn{1}{c}{} &
\multicolumn{1}{c}{} &
\multicolumn{1}{c}{0, 1, 2} &
\multicolumn{1}{c}{3} &
\multicolumn{1}{c}{4} &
\multicolumn{1}{c}{5} &
\multicolumn{1}{c}{6} \\
\midrule
\endfirsthead
\midrule
\multicolumn{1}{c}{\b{Feature}} &
\multicolumn{1}{c}{\b{Reference}} &
\multicolumn{5}{c}{\b{EAPIs}} \\
\multicolumn{1}{c}{} &
\multicolumn{1}{c}{} &
\multicolumn{1}{c}{0, 1, 2} &
\multicolumn{1}{c}{3} &
\multicolumn{1}{c}{4} &
\multicolumn{1}{c}{5} &
\multicolumn{1}{c}{6} \\
\midrule
\endhead
\midrule
\endfoot
\bottomrule
\endlastfoot

Stable use masking/forcing & \compactfeatureref{stablemask} &
    No & No & No & Yes & Yes \\

Bash version & \compactfeatureref{bash-version} &
    3.2 & 3.2 & 3.2 & 3.2 & 4.2 \\

\t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
    * & Yes & Yes & Yes & Yes \\

\t{REQUIRED\_USE} & \compactfeatureref{required-use} &
    No & No & Yes & Yes & Yes \\

\t{PROPERTIES} & \compactfeatureref{properties} &
    Optionally & Optionally & Yes & Yes & Yes \\

\t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
    Yes & Yes & No & No & No \\

\t{DEFINED\_PHASES} & \compactfeatureref{defined-phases} &
    Optionally & Optionally & Yes & Yes & Yes \\

\t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
    No & No & No & Yes & Yes \\

\t{SRC\_URI} arrows & \compactfeatureref{src-uri-arrows} &
    * & Yes & Yes & Yes & Yes \\

Slot dependencies & \compactfeatureref{slot-deps} &
    * & Named & Named & Named and Operator & Named and Operator \\

Sub-slots & \compactfeatureref{sub-slot} &
    No & No & No & Yes & Yes \\

Use dependencies & \compactfeatureref{use-deps} &
    * & 2-style & 4-style & 4-style & 4-style \\

\t{!}\ blockers & \compactfeatureref{bang-strength} &
    * & Weak & Weak & Weak & Weak \\

\t{!!}\ blockers & \compactfeatureref{bang-strength} &
    * & Strong & Strong & Strong & Strong \\

\t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
    Always & Always & Conditional & Conditional & Conditional \\

\t{pkg\_pretend} & \compactfeatureref{pkg-pretend} &
    No & No & Yes & Yes & Yes \\

\t{src\_prepare} & \compactfeatureref{src-prepare} &
    * & Yes & Yes & Yes & Yes \\

\t{src\_prepare} style & \compactfeatureref{src-prepare} &
    * & no-op & no-op & no-op & 6 \\

\t{src\_configure} & \compactfeatureref{src-configure} &
    * & Yes & Yes & Yes & Yes \\

\t{src\_compile} style & \compactfeatureref{src-compile} &
    * & 2 & 2 & 2 & 2 \\

Parallel tests & \compactfeatureref{parallel-tests} &
    No & No & No & Yes & Yes \\

\t{src\_install} style & \compactfeatureref{src-install} &
    no-op & no-op & 4 & 4 & 6 \\

\t{pkg\_info} & \compactfeatureref{pkg-info} &
    Installed & Installed & Both & Both & Both \\

\t{default\_} phase functions & \compactfeatureref{default-phase-funcs} &
    * &
    \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
        \t{src\_compile}, \t{src\_test} &
    \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
        \t{src\_compile}, \t{src\_install}, \t{src\_test} &
    \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
        \t{src\_compile}, \t{src\_install}, \t{src\_test} &
    \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
        \t{src\_compile}, \t{src\_install}, \t{src\_test} \\

\t{AA} & \compactfeatureref{aa} &
    Yes & Yes & No & No & No \\

\t{KV} & \compactfeatureref{kv} &
    Yes & Yes & No & No & No \\

\t{EBUILD\_PHASE\_FUNC} & \compactfeatureref{ebuild-phase-func} &
    No & No & No & Yes & Yes \\

\t{MERGE\_TYPE} & \compactfeatureref{merge-type} &
    No & No & Yes & Yes & Yes \\

Sane locale settings & \compactfeatureref{locale-settings} &
    Undefined & Undefined & Undefined & Undefined & Yes \\

Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
    No & No & No & Yes & Yes \\

\t{REPLACING\_VERSIONS} & \compactfeatureref{replace-version-vars} &
    No & No & Yes & Yes & Yes \\

\t{REPLACED\_BY\_VERSION} & \compactfeatureref{replace-version-vars} &
    No & No & Yes & Yes & Yes \\

\t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
    No & Yes & Yes & Yes & Yes \\

\t{failglob} in global scope & \compactfeatureref{failglob} &
    No & No & No & No & Yes \\

\t{find} is GNU? & \compactfeatureref{gnu-find} &
    Undefined & Undefined & Undefined & Yes & Yes \\

Most utilities die & \compactfeatureref{die-on-failure} &
    No & No & Yes & Yes & Yes \\

\t{nonfatal} & \compactfeatureref{nonfatal} &
    No & No & Yes & Yes & Yes \\

\t{dohard} & \compactfeatureref{banned-commands} &
    Yes & Yes & Banned & Banned & Banned \\

\t{dosed} & \compactfeatureref{banned-commands} &
    Yes & Yes & Banned & Banned & Banned \\

\t{einstall} & \compactfeatureref{banned-commands} &
    Yes & Yes & Yes & Yes & Banned \\

Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
    No & No & No & Yes & Yes \\

\t{die -n} & \compactfeatureref{nonfatal-die} &
    No & No & No & No & Yes \\

\t{eapply} & \compactfeatureref{eapply} &
    No & No & No & No & Yes \\

\t{eapply\_user} & \compactfeatureref{eapply-user} &
    No & No & No & No & Yes \\

\t{econf} arguments & \compactfeatureref{econf-options} &
    &  & disable dependency tracking &
    disable dependency tracking, disable silent rules &
    disable dependency tracking, disable silent rules, docdir, htmldir \\

\t{dodoc -r} & \compactfeatureref{dodoc} &
    No & No & Yes & Yes & Yes \\

\t{doheader} & \compactfeatureref{doheader} &
    No & No & No & Yes & Yes \\

\t{doins} handles symlinks & \compactfeatureref{doins} &
    No & No & Yes & Yes & Yes \\

\t{doman} languages & \compactfeatureref{doman-langs} &
    * & Yes & Yes & Yes & Yes \\

\t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
    * & No & Yes & Yes & Yes \\

\t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
    No & No & No & Yes & Yes \\

Controllable compression & \compactfeatureref{docompress} &
    No & No & Yes & Yes & Yes \\

\t{docompress} & \compactfeatureref{docompress} &
    No & No & Yes & Yes & Yes \\

\t{use\_with} empty third arg & \compactfeatureref{use-with} &
    No & No & Yes & Yes & Yes \\

\t{usex} & \compactfeatureref{usex} &
    No & No & No & Yes & Yes \\

\t{in\_iuse} & \compactfeatureref{in-iuse} &
    No & No & No & No & Yes \\

\t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
    No & No & No & No & Yes \\

\t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
    No & Yes & Yes & Yes & Yes \\

\t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
    No & No & No & No & Yes \\

\t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
    No & No & No & No & Yes \\

\t{default} function & \compactfeatureref{default-func} &
    * & Yes & Yes & Yes & Yes \\

\t{einstalldocs} & \compactfeatureref{einstalldocs} &
    No & No & No & No & Yes \\

\t{get\_libdir} & \compactfeatureref{get-libdir} &
    No & No & No & No & Yes \\

File mtimes preserved & \compactfeatureref{mtime-preserve} &
    Undefined & Yes & Yes & Yes & Yes \\

\end{longtable}
\end{landscape}

\chapter{Differences Between EAPIs}

\note This chapter is informative and for convenience only. Refer to the main text for specifics.

\section{EAPI 0}

EAPI 0 is the base EAPI.

\section{EAPI 1}

EAPI 1 is EAPI 0 with the following changes:

\begin{compactitem}
\item \t{IUSE} defaults, \featureref{iuse-defaults}.
\item Slot dependencies, \featureref{slot-deps}.
\item Different \t{src\_compile} implementation, \featureref{src-compile-1}.
\end{compactitem}

\section{EAPI 2}

EAPI 2 is EAPI 1 with the following changes:

\begin{compactitem}
\item Use dependencies, \featureref{use-deps}.
\item \t{!}\ and \t{!!}\ blockers, \featureref{bang-strength}.
\item \t{SRC\_URI} arrows, \featureref{src-uri-arrows}.
\item \t{src\_prepare}, \featureref{src-prepare}.
\item \t{src\_configure}, \featureref{src-configure}.
\item Different \t{src\_compile} implementation, \featureref{src-compile-2}.
\item \t{default\_} phase functions for phases \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare},
    \t{src\_configure}, \t{src\_compile} and \t{src\_test}; \featureref{default-phase-funcs}.
\item \t{doman} language detection by filename, \featureref{doman-langs}.
\item \t{default} function, \featureref{default-func}.
\end{compactitem}

\section{EAPI 3}

EAPI 3 is EAPI 2 with the following changes:
\begin{compactitem}
\item Offset-prefix support by definition of \t{EPREFIX}, \t{ED} and \t{EROOT},
    \featureref{offset-prefix-vars}.
\item \t{unpack} supports \t{.xz} and \t{.tar.xz}, \featureref{unpack-extensions}.
\item File modification times are preserved, \featureref{mtime-preserve}.
\end{compactitem}

\section{EAPI 4}

EAPI 4 is EAPI 3 with the following changes:

\begin{compactitem}
\item \t{PROPERTIES} support is mandatory, \featureref{properties}.
\item \t{REQUIRED\_USE}, \featureref{required-use}.
\item \t{RDEPEND=DEPEND} no longer done, \featureref{rdepend-depend}.
\item \t{DEFINED\_PHASES} support is mandatory, \featureref{defined-phases}.
\item Use dependency defaults, \featureref{use-dep-defaults}.
\item \t{S} to \t{WORKDIR} fallback restricted, \featureref{s-workdir-fallback}.
\item \t{pkg\_pretend}, \featureref{pkg-pretend}.
\item Default \t{src\_install} no longer a no-op, \featureref{src-install-4}.
\item \t{pkg\_info} can run on non-installed packages, \featureref{pkg-info}.
\item \t{AA} is gone, \featureref{aa}.
\item \t{KV} is gone, \featureref{kv}.
\item \t{MERGE\_TYPE}, \featureref{merge-type}.
\item \t{REPLACING\_VERSIONS} and \t{REPLACED\_BY\_VERSION}, \featureref{replace-version-vars}.
\item Utilities now die on failure, \featureref{die-on-failure}, unless called under \t{nonfatal},
    \featureref{nonfatal}
\item \t{dohard}, \t{dosed} banned, \featureref{banned-commands}.
\item \t{econf} adds \t{-{}-disable-dependency-tracking}, \featureref{econf-options}.
\item \t{dodoc -r} support, \featureref{dodoc}.
\item \t{doins} supports symlinks, \featureref{doins}.
\item \t{doman -i18n} option takes precedence, \featureref{doman-langs}.
\item Controllable compression and \t{docompress}, \featureref{docompress}.
\item \t{use\_with} and \t{use\_enable} support empty third argument, \featureref{use-with}.
\end{compactitem}

\section{EAPI 5}

EAPI 5 is EAPI 4 with the following changes:

\begin{compactitem}
\item Stable use masking and forcing, \featureref{stablemask}.
\item \t{REQUIRED\_USE} now supports \t{??}\ groups, \featureref{at-most-one-of}.
\item Slot operator dependencies, \featureref{slot-operator-deps}.
\item \t{SLOT} now supports an optional sub-slot part, \featureref{sub-slot}.
\item \t{src\_test} supports parallel tests, \featureref{parallel-tests}.
\item \t{EBUILD\_PHASE\_FUNC}, \featureref{ebuild-phase-func}.
\item \t{USE} is calculated differently, \featureref{profile-iuse-inject}.
\item \t{find} is guaranteed to be GNU, \featureref{gnu-find}.
\item \t{best\_version} and \t{has\_version} support the \t{-{}-host-root} option,
    \featureref{host-root-option}.
\item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}.
\item \t{doheader} and \t{newheader} support, \featureref{doheader}.
\item \t{new*} can read from standard input, \featureref{newfoo-stdin}.
\item \t{usex} support, \featureref{usex}.
\end{compactitem}

\section{EAPI 6}

EAPI 6 is EAPI 5 with the following changes:

\begin{compactitem}
\item Bash version is 4.2, \featureref{bash-version}.
\item Default \t{src\_prepare} no longer a no-op, \featureref{src-prepare-6}.
\item Different \t{src\_install} implementation, \featureref{src-install-6}.
\item \t{LC\_CTYPE} and \t{LC\_COLLATE} compatible with POSIX locale, \featureref{locale-settings}.
\item \t{failglob} is enabled in global scope, \featureref{failglob}.
\item \t{einstall} banned, \featureref{banned-commands}.
\item \t{die} and \t{assert} called with \t{-n} respect \t{nonfatal}, \featureref{nonfatal-die}.
\item \t{eapply} support, \featureref{eapply}.
\item \t{eapply\_user} support, \featureref{eapply-user}.
\item \t{econf} adds \t{-{}-docdir} and \t{-{}-htmldir}, \featureref{econf-options}.
\item \t{in\_iuse} support, \featureref{in-iuse}.
\item \t{unpack} supports absolute and relative paths, \featureref{unpack-absolute}.
\item \t{unpack} supports \t{.txz}, \featureref{unpack-extensions}.
\item \t{unpack} matches filename extensions case-insensitively, \featureref{unpack-ignore-case}.
\item \t{einstalldocs} support, \featureref{einstalldocs}.
\item \t{get\_libdir} support, \featureref{get-libdir}.
\end{compactitem}

\ChangeWhenAddingAnEAPI{6}

% vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :

%%% Local Variables:
%%% mode: latex
%%% TeX-master: "pms"
%%% LaTeX-indent-level: 4
%%% LaTeX-item-indent: 0
%%% TeX-brace-indent-level: 4
%%% fill-column: 100
%%% End:
