\chapter{Feature Availability by EAPI}

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

\begin{landscape}
\begin{longtable}{\IFANYKDEBUILDELSE{lllllll}{llllll}}
\caption{Features in EAPIs}\\
\toprule
\multicolumn{1}{c}{\b{Feature}} &
\multicolumn{1}{c}{\b{Reference}} &
\IFANYKDEBUILDELSE{\multicolumn{4}{c}{\b{EAPIs}} \\}{\multicolumn{3}{c}{\b{EAPIs}} \\}
\multicolumn{1}{c}{} &
\multicolumn{1}{c}{} &
\multicolumn{1}{c}{0} &
\multicolumn{1}{c}{1} &
\IFANYKDEBUILDELSE{\multicolumn{1}{c}{\IFKDEBUILDCOLOUR{kdebuild-1}} &}{}
\multicolumn{1}{c}{2} &
\multicolumn{1}{c}{3} \\
\midrule
\endfirsthead
\midrule
\multicolumn{1}{c}{\b{Feature}} &
\multicolumn{1}{c}{\b{Reference}} &
\IFANYKDEBUILDELSE{\multicolumn{4}{c}{\b{EAPIs}} \\}{\multicolumn{3}{c}{\b{EAPIs}} \\}
\multicolumn{1}{c}{} &
\multicolumn{1}{c}{} &
\multicolumn{1}{c}{0} &
\multicolumn{1}{c}{1} &
\IFANYKDEBUILDELSE{\multicolumn{1}{c}{\IFKDEBUILDCOLOUR{kdebuild-1}} &}{}
\multicolumn{1}{c}{2} &
\multicolumn{1}{c}{3} \\
\midrule
\endhead
\midrule
\endfoot
\bottomrule
\endlastfoot

\IFANYKDEBUILDELSE{
    \IFKDEBUILDCOLOUR{\t{scm} support} &
    \IFKDEBUILDCOLOUR{\compactfeatureref{scm}} &
    \IFKDEBUILDCOLOUR{Optional} &
    \IFKDEBUILDCOLOUR{Optional} &
    \IFKDEBUILDCOLOUR{Required} &
    \IFKDEBUILDCOLOUR{Optional} &
    \IFKDEBUILDCOLOUR{Optional} \\
}{}

\IFANYKDEBUILDELSE{
    \IFKDEBUILDCOLOUR{File extension} &
    \IFKDEBUILDCOLOUR{\compactfeatureref{file-extension}} &
    \IFKDEBUILDCOLOUR{\t{.ebuild}} &
    \IFKDEBUILDCOLOUR{\t{.ebuild}} &
    \IFKDEBUILDCOLOUR{\t{.kdebuild-1}} &
    \IFKDEBUILDCOLOUR{\t{.ebuild}} &
    \IFKDEBUILDCOLOUR{\t{.ebuild}} \\
}{}

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

\t{IUSE} defaults & \compactfeatureref{iuse-defaults} & No & Yes &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{Yes} &}{} Yes & Yes \\

\IFANYKDEBUILDELSE{
    \IFKDEBUILDCOLOUR{\t{PROVIDE} support} &
    \IFKDEBUILDCOLOUR{\compactfeatureref{provide}} &
    \IFKDEBUILDCOLOUR{Yes} &
    \IFKDEBUILDCOLOUR{Yes} &
    \IFKDEBUILDCOLOUR{No} &
    \IFKDEBUILDCOLOUR{Yes} &
    \IFKDEBUILDCOLOUR{Yes} \\
}{}

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

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

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

\IFANYKDEBUILDELSE{
    \IFKDEBUILDCOLOUR{Pre-source \t{EAPI}} &
    \IFKDEBUILDCOLOUR{\compactfeatureref{pre-source-eapi}} &
    \IFKDEBUILDCOLOUR{0 or unset} &
    \IFKDEBUILDCOLOUR{0 or unset} &
    \IFKDEBUILDCOLOUR{kdebuild-1} &
    \IFKDEBUILDCOLOUR{0 or unset} &
    \IFKDEBUILDCOLOUR{0 or unset} \\
}{}

\t{SRC\_URI} arrows & \compactfeatureref{src-uri-arrows} & No & No &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{Yes} &}{} Yes & Yes \\

\IFANYKDEBUILDELSE{
    \IFKDEBUILDCOLOUR{\t{SRC\_URI} labels} &
    \IFKDEBUILDCOLOUR{\compactfeatureref{src-uri-labels}} &
    \IFKDEBUILDCOLOUR{No} &
    \IFKDEBUILDCOLOUR{No} &
    \IFKDEBUILDCOLOUR{Yes} &
    \IFKDEBUILDCOLOUR{No} &
    \IFKDEBUILDCOLOUR{No} \\
}{}

\IFANYKDEBUILDELSE{
    \IFKDEBUILDCOLOUR{\t{PDEPEND} labels} &
    \IFKDEBUILDCOLOUR{\compactfeatureref{pdepend-labels}} &
    \IFKDEBUILDCOLOUR{No} &
    \IFKDEBUILDCOLOUR{No} &
    \IFKDEBUILDCOLOUR{Yes} &
    \IFKDEBUILDCOLOUR{No} &
    \IFKDEBUILDCOLOUR{No} \\
}{}

\IFANYKDEBUILDELSE{
    \IFKDEBUILDCOLOUR{Ranged Dependencies} &
    \IFKDEBUILDCOLOUR{\compactfeatureref{ranged-deps}} &
    \IFKDEBUILDCOLOUR{No} &
    \IFKDEBUILDCOLOUR{No} &
    \IFKDEBUILDCOLOUR{Yes} &
    \IFKDEBUILDCOLOUR{No} &
    \IFKDEBUILDCOLOUR{No} \\
}{}

Slot dependencies &
    \compactfeatureref{slot-deps} &
    No &
    Named &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{Named and Operator} &}{}
    Named &
    Named and Operator \\

Use dependencies & \compactfeatureref{use-deps} & No & No &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{kdebuild-style} &}{} 2-style & 3-style \\

\t{!} blockers & \compactfeatureref{bang-strength} & Unspecified & Unspecified &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{Unspecified} &}{} Weak & Weak \\

\t{!!} blockers & \compactfeatureref{bang-strength} & Forbidden & Forbidden &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{Forbidden} &}{} Strong & Strong \\

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

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

\t{src\_prepare} & \compactfeatureref{src-prepare} & No & No &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{No} &}{} Yes & Yes \\

\t{src\_configure} & \compactfeatureref{src-configure} & No & No &
\IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{No} &}{} Yes & Yes \\

\t{src\_compile} style & \compactfeatureref{src-compile} & 0 & 1 &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{1} &}{} 2 & 2 \\

\t{src\_install} style & \compactfeatureref{src-install} & no-op & no-op &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{no-op} &}{} no-op & 3 \\

\IFANYKDEBUILDELSE{
    \IFKDEBUILDCOLOUR{\t{src\_test}} &
    \IFKDEBUILDCOLOUR{\compactfeatureref{src-test-required}} &
    \IFKDEBUILDCOLOUR{User option} &
    \IFKDEBUILDCOLOUR{User option} &
    \IFKDEBUILDCOLOUR{Required} &
    \IFKDEBUILDCOLOUR{User option} &
    \IFKDEBUILDCOLOUR{User option} \\
}{}

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

\t{default\_} phase functions & \compactfeatureref{default-phase-functions} & None & None &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{None} &}{}
    \parbox[t]{1in}{\t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure}, \t{src\_compile}, \t{src\_test}} &
    \parbox[t]{1in}{\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 &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{Yes} &}{} Yes & No \\

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

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

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

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

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

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

\IFANYKDEBUILDELSE{
    \IFKDEBUILDCOLOUR{\t{dohtml}} &
    \IFKDEBUILDCOLOUR{\compactfeatureref{banned-commands}} &
    \IFKDEBUILDCOLOUR{Yes} &
    \IFKDEBUILDCOLOUR{Yes} &
    \IFKDEBUILDCOLOUR{Banned} &
    \IFKDEBUILDCOLOUR{Yes} &
    \IFKDEBUILDCOLOUR{Yes} \\
}{}

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

\t{econf} arguments & \compactfeatureref{econf-options} &  &  &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{} &}{} &
    \parbox[t]{1in}{disable dependency tracking} \\

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

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

\t{doman} languages & \compactfeatureref{doman-langs} & No & No &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{No} &}{} Yes & Yes \\

\IFANYKDEBUILDELSE{
    \IFKDEBUILDCOLOUR{\t{dosym} does \t{dodir}} &
    \IFKDEBUILDCOLOUR{\compactfeatureref{dosym-dodir}} &
    \IFKDEBUILDCOLOUR{Yes} &
    \IFKDEBUILDCOLOUR{Yes} &
    \IFKDEBUILDCOLOUR{No} &
    \IFKDEBUILDCOLOUR{Yes} &
    \IFKDEBUILDCOLOUR{Yes} \\
}{}

Controllable compression & \compactfeatureref{controllable-compression} & No & No &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{No} &}{} No & Yes \\

\t{docompress} & \compactfeatureref{controllable-compression} & No & No &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{No} &}{} No & Yes \\

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

\t{default} function & \compactfeatureref{default-func} & No & No &
    \IFANYKDEBUILDELSE{\IFKDEBUILDCOLOUR{No} &}{} 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}

\IFKDEBUILDELSE
{
    \section*{EAPI kdebuild-1}

    EAPI kdebuild-1 is EAPI 1 with the following changes:

    \begin{compactitem}
    \item \t{scm} support, \featureref{scm}.
    \item \t{kdebuild-1} file extension, \featureref{file-extension}.
    \item \t{PROVIDE} banned, \featureref{provide}.
    \item Pre-source EAPI is \t{kdebuild-1}, \featureref{pre-source-eapi}.
    \item \t{SRC\_URI} arrows, \featureref{src-uri-arrows}.
    \item \t{SRC\_URI} labels, \featureref{src-uri-labels}.
    \item \t{PDEPEND} labels, \featureref{pdepend-labels}.
    \item Ranged dependencies, \featureref{ranged-deps}.
    \item Use dependencies, \featureref{use-deps}.
    \item \t{src\_test} mandatory, \featureref{src-test-required}.
    \item \t{pkg\_info} can run on non-installed packages, \featureref{pkg-info}.
    \item \t{dohard}, \t{dohtml}, \t{dosed} banned, \featureref{banned-commands}.
    \item \t{dosym} will not do \t{dodir}, \featureref{dosym-dodir}.
    \end{compactitem}
}{
}

\section*{EAPI 2}

EAPI 2 is EAPI 1 with the following changes:

\begin{compactitem}
\item \t{SRC\_URI} arrows, \featureref{src-uri-arrows}.
\item Use dependencies, \featureref{use-deps}.
\item \t{!} and \t{!!} blockers, \featureref{bang-strength}.
\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-functions}.
\item \t{doman} languages support, \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 \t{pkg\_pretend}, \featureref{pkg-pretend}.
\item Slot operator dependencies, \featureref{slot-operator-deps}.
\item Use dependency defaults, \featureref{use-dep-defaults}.
\item \t{DEFINED\_PHASES} support is mandatory, \featureref{defined-phases}.
\item \t{PROPERTIES} support is mandatory, \featureref{properties}.
\item Default \t{src\_install} no longer a no-op, \featureref{src-install-3}.
\item Controllable compression and \t{docompress}, \featureref{controllable-compression}.
\item \t{dodoc -r} support, \featureref{dodoc}.
\item \t{doins} supports symlinks, \featureref{doins}.
\item \t{dohard}, \t{dosed} banned, \featureref{banned-commands}.
\item \t{unpack} supports \t{.xz} and \t{.tar.xz}, \featureref{unpack-extensions}.
\item \t{econf} adds \t{-{}-disable-dependency-tracking}, \featureref{econf-options}.
\item \t{pkg\_info} can run on non-installed packages, \featureref{pkg-info}.
\item \t{USE} is calculated differently, \featureref{profile-iuse-injection}.
\item \t{AA} is gone, \featureref{aa}.
\item \t{KV} is gone, \featureref{kv}.
\item \t{REPLACING\_VERSIONS} and \t{REPLACED\_BY\_VERSION}, \featureref{replace-version-vars}.
\item \t{S} to \t{WORKDIR} fallback restricted, \featureref{s-workdir-fallback}.
\item \t{RDEPEND=DEPEND} no longer done, \featureref{rdepend-depend}.
\item Utilities now die on failure, \featureref{die-on-failure}, unless called under \t{nonfatal},
    \featureref{nonfatal}
\end{compactitem}

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

%%% Local Variables:
%%% mode: latex
%%% TeX-master: "pms"
%%% End:
