\chapter{Feature Availability by EAPI} \note This chapter is informative and for convenience only. Refer to the main text for specifics. \ChangeWhenAddingAnEAPI{5} \begin{landscape} \newcolumntype{P}[1]{>{\setlength{\rightskip}{0pt plus 1fil}}p{#1}} \begin{longtable}{llP{5em}P{5em}P{6em}P{6em}P{6em}P{6em}} \caption{Features in EAPIs}\\ \toprule \multicolumn{1}{c}{\b{Feature}} & \multicolumn{1}{c}{\b{Reference}} & \multicolumn{4}{c}{\b{EAPIs}} \\ \multicolumn{1}{c}{} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{0} & \multicolumn{1}{c}{1} & \multicolumn{1}{c}{2} & \multicolumn{1}{c}{3} & \multicolumn{1}{c}{4} & \multicolumn{1}{c}{5} \\ \midrule \endfirsthead \midrule \multicolumn{1}{c}{\b{Feature}} & \multicolumn{1}{c}{\b{Reference}} & \multicolumn{4}{c}{\b{EAPIs}} \\ \multicolumn{1}{c}{} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{0} & \multicolumn{1}{c}{1} & \multicolumn{1}{c}{2} & \multicolumn{1}{c}{3} & \multicolumn{1}{c}{4} & \multicolumn{1}{c}{5} \\ \midrule \endhead \midrule \endfoot \bottomrule \endlastfoot \t{IUSE} defaults & \compactfeatureref{iuse-defaults} & No & Yes & Yes & Yes & Yes & Yes \\ \t{REQUIRED\_USE} & \compactfeatureref{required-use} & No & No & No & No & Yes & Yes \\ \t{PROPERTIES} & \compactfeatureref{properties} & Optionally & Optionally & Optionally & Optionally & Yes & Yes \\ \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} & Yes & Yes & Yes & Yes & No & No \\ \t{DEFINED\_PHASES} & \compactfeatureref{defined-phases} & Optionally & Optionally & Optionally & Optionally & Yes & Yes \\ \t{?? ( ) groups} & \compactfeatureref{at-most-one-of} & No & No & No & No & No & Yes \\ \t{SRC\_URI} arrows & \compactfeatureref{src-uri-arrows} & No & No & Yes & Yes & Yes & Yes \\ Slot dependencies & \compactfeatureref{slot-deps} & No & Named & Named & Named & Named & Named and Operator \\ Use dependencies & \compactfeatureref{use-deps} & No & No & 2-style & 2-style & 4-style & 4-style \\ \t{!} blockers & \compactfeatureref{bang-strength} & Unspecified & Unspecified & Weak & Weak & Weak & Weak \\ \t{!!} blockers & \compactfeatureref{bang-strength} & Forbidden & Forbidden & Strong & Strong & Strong & Strong \\ \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} & Always & Always & Always & Always & Conditional & Conditional \\ \t{pkg\_pretend} & \compactfeatureref{pkg-pretend} & No & No & No & No & Yes & Yes \\ \t{src\_prepare} & \compactfeatureref{src-prepare} & No & No & Yes & Yes & Yes & Yes \\ \t{src\_configure} & \compactfeatureref{src-configure} & No & No & Yes & Yes & Yes & Yes \\ \t{src\_compile} style & \compactfeatureref{src-compile} & 0 & 1 & 2 & 2 & 2 & 2 \\ \t{src\_install} style & \compactfeatureref{src-install} & no-op & no-op & no-op & no-op & 4 & 4 \\ \t{pkg\_info} & \compactfeatureref{pkg-info} & Installed & Installed & Installed & Installed & Both & Both \\ \t{default\_} phase functions & \compactfeatureref{default-phase-funcs} & None & None & \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\_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 & Yes & Yes & No & No \\ \t{KV} & \compactfeatureref{kv} & Yes & Yes & Yes & Yes & No & No \\ \t{EBUILD\_PHASE\_FUNC} & \compactfeatureref{ebuild-phase-func} & No & No & No & No & No & Yes \\ \t{MERGE\_TYPE} & \compactfeatureref{merge-type} & No & No & No & No & Yes & Yes \\ Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-injection} & No & No & No & No & No & Yes \\ \t{REPLACING\_VERSIONS} & \compactfeatureref{replace-version-vars} & No & No & No & No & Yes & Yes \\ \t{REPLACED\_BY\_VERSION} & \compactfeatureref{replace-version-vars} & No & No & No & No & Yes & Yes \\ \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} & No & No & No & Yes & Yes & Yes \\ \t{find} is GNU? & \compactfeatureref{gnu-find} & Undefined & Undefined & Undefined & Undefined & Undefined & Yes \\ Most utilities die & \compactfeatureref{die-on-failure} & No & No & No & No & Yes & Yes \\ \t{nonfatal} & \compactfeatureref{nonfatal} & No & No & No & No & Yes & Yes \\ \t{dohard} & \compactfeatureref{banned-commands} & Yes & Yes & Yes & Yes & Banned & Banned \\ \t{dosed} & \compactfeatureref{banned-commands} & Yes & Yes & Yes & Yes & Banned & Banned \\ \t{econf} arguments & \compactfeatureref{econf-options} & & & & & disable dependency tracking & disable dependency tracking, disable silent rules \\ \t{dodoc -r} & \compactfeatureref{dodoc} & No & No & No & No & Yes & Yes \\ \t{doins} handles symlinks & \compactfeatureref{doins} & No & No & No & No & Yes & Yes \\ \t{doman} languages & \compactfeatureref{doman-langs} & No & No & Yes & Yes & Yes & Yes \\ \t{doman -i18n} precedence & \compactfeatureref{doman-langs} & N/A & N/A & No & No & Yes & Yes \\ \t{new*} support stdin & \compactfeatureref{newfoo-stdin} & No & No & No & No & No & Yes \\ Controllable compression & \compactfeatureref{controllable-compress} & No & No & No & No & Yes & Yes \\ \t{docompress} & \compactfeatureref{controllable-compress} & No & No & No & No & Yes & Yes \\ \t{use\_with} empty third arg & \compactfeatureref{use-with} & No & No & No & No & Yes & Yes \\ \t{unpack} support for \t{xz}? & \compactfeatureref{unpack-extensions} & No & No & No & Yes & Yes & Yes \\ \t{default} function & \compactfeatureref{default-func} & No & No & Yes & Yes & Yes & Yes \\ File mtimes preserved & \compactfeatureref{mtime-preserve} & Undefined & Undefined & Undefined & 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{controllable-compress}. \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 \t{REQUIRED\_USE} now supports \t{??} groups, \featureref{at-most-one-of}. \item Slot operator dependencies, \featureref{slot-operator-deps}. \item \t{EBUILD\_PHASE\_FUNC}, \featureref{ebuild-phase-func}. \item \t{USE} is calculated differently, \featureref{profile-iuse-injection}. \item \t{find} is guaranteed to be GNU, \featureref{gnu-find}. \item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}. \item \t{new*} can read from standard input, \featureref{newfoo-stdin}. \end{compactitem} \ChangeWhenAddingAnEAPI{5} % 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 %%% End: