\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, 2, 3, and~4 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.} % 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5 \ChangeWhenAddingAnEAPI{8} \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}{\textbf{Feature}} & \multicolumn{1}{c}{\textbf{Reference}} & \multicolumn{5}{c}{\textbf{EAPIs}} \\ \multicolumn{1}{c}{} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{0, 1, 2, 3, 4} & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{6} & \multicolumn{1}{c}{7} & \multicolumn{1}{c}{8} \\ \midrule \endfirsthead \midrule \multicolumn{1}{c}{\textbf{Feature}} & \multicolumn{1}{c}{\textbf{Reference}} & \multicolumn{5}{c}{\textbf{EAPIs}} \\ \multicolumn{1}{c}{} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{0, 1, 2, 3, 4} & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{6} & \multicolumn{1}{c}{7} & \multicolumn{1}{c}{8} \\ \midrule \endhead \midrule \endfoot \bottomrule \endlastfoot \t{package.mask} directory & \compactfeatureref{package-mask-dir} & No & No & No & Yes & Yes \\ Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} & No & No & No & No & Yes \\ Profile files as directories & \compactfeatureref{profile-file-dirs} & No & No & No & Yes & Yes \\ \t{package.provided} & \compactfeatureref{package-provided} & Optional & Optional & Optional & No & No \\ Stable use masking/forcing & \compactfeatureref{stablemask} & No & Yes & Yes & Yes & Yes \\ Bash version & \compactfeatureref{bash-version} & 3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\ \t{failglob} in global scope & \compactfeatureref{failglob} & No & No & Yes & Yes & Yes \\ \t{IUSE} defaults & \compactfeatureref{iuse-defaults} & * & Yes & Yes & Yes & Yes \\ \t{REQUIRED_USE} & \compactfeatureref{required-use} & * & Yes & Yes & Yes & Yes \\ \t{PROPERTIES} & \compactfeatureref{properties} & * & Yes & Yes & Yes & Yes \\ \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} & * & Yes & Yes & Yes & Yes \\ Selective URI restrictions & \compactfeatureref{uri-restrict} & No & No & No & No & Yes \\ \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} & * & No & No & No & No \\ \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} & * & Yes & Yes & Yes & Yes \\ \t{BDEPEND} & \compactfeatureref{bdepend} & No & No & No & Yes & Yes \\ \t{IDEPEND} & \compactfeatureref{idepend} & No & No & No & No & Yes \\ \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} & No & Yes & Yes & Yes & Yes \\ Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match & \compactfeatureref{empty-dep-groups} & Yes & Yes & Yes & No & No \\ Slot dependencies & \compactfeatureref{slot-deps} & * & Named and Operator & Named and Operator & Named and Operator & Named and Operator \\ Sub-slots & \compactfeatureref{sub-slot} & No & Yes & Yes & Yes & Yes \\ Use dependencies & \compactfeatureref{use-deps} & * & 4-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 \\ Working directory in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} & Any & Any & Any & Any & Empty \\ \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} & * & Conditional & Conditional & Conditional & Conditional \\ \t{pkg_pretend} & \compactfeatureref{pkg-pretend} & * & Yes & Yes & Yes & Yes \\ \t{src_prepare} & \compactfeatureref{src-prepare} & * & Yes & Yes & Yes & Yes \\ \t{src_prepare} style & \compactfeatureref{src-prepare} & * & no-op & 6 & 6 & 8 \\ \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 & Yes & Yes & Yes & Yes \\ \t{src_install} style & \compactfeatureref{src-install} & * & 4 & 6 & 6 & 6 \\ \t{pkg_info} & \compactfeatureref{pkg-info} & * & Both & 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{src_install} & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, \t{src_test}, \t{src_install} & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, \t{src_test}, \t{src_install} & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, \t{src_test}, \t{src_install} \\ Accumulate \t{RESTRICT} etc. & \compactfeatureref{accumulate-vars} & No & No & No & No & Yes \\ \t{AA} & \compactfeatureref{aa} & * & No & No & No & No \\ \t{PORTDIR} & \compactfeatureref{portdir} & Yes & Yes & Yes & No & No \\ \t{ECLASSDIR} & \compactfeatureref{eclassdir} & Yes & Yes & Yes & No & No \\ \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} & No & No & No & Yes & Yes \\ \t{BROOT} & \compactfeatureref{broot} & No & No & No & Yes & Yes \\ \t{DESTTREE} & \compactfeatureref{desttree} & Yes & Yes & Yes & No & No \\ \t{INSDESTTREE} & \compactfeatureref{insdesttree} & Yes & Yes & Yes & No & No \\ \t{KV} & \compactfeatureref{kv} & * & No & No & No & No \\ \t{EBUILD_PHASE_FUNC} & \compactfeatureref{ebuild-phase-func} & No & Yes & Yes & Yes & Yes \\ \t{MERGE_TYPE} & \compactfeatureref{merge-type} & * & Yes & Yes & Yes & Yes \\ \t{ENV_UNSET} & \compactfeatureref{env-unset} & No & No & No & Yes & Yes \\ Sane locale settings & \compactfeatureref{locale-settings} & Undefined & Undefined & Yes & Yes & Yes \\ Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} & No & Yes & Yes & Yes & Yes \\ \t{REPLACING_VERSIONS} & \compactfeatureref{replace-version-vars} & * & Yes & Yes & Yes & Yes \\ \t{REPLACED_BY_VERSION} & \compactfeatureref{replace-version-vars} & * & Yes & Yes & Yes & Yes \\ \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} & * & Yes & Yes & Yes & Yes \\ Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} & Yes & Yes & Yes & No & No \\ GNU \t{patch} version & \compactfeatureref{gnu-patch} & Any & Any & Any & 2.7 & 2.7 \\ \t{find} is GNU? & \compactfeatureref{gnu-find} & Undefined & Yes & Yes & Yes & Yes \\ Most utilities die & \compactfeatureref{die-on-failure} & * & Yes & Yes & Yes & Yes \\ \t{nonfatal} & \compactfeatureref{nonfatal} & * & Yes & Yes & Function / external & Function / external \\ \t{dohard} & \compactfeatureref{banned-commands} & * & Banned & Banned & Banned & Banned \\ \t{dosed} & \compactfeatureref{banned-commands} & * & Banned & Banned & Banned & Banned \\ \t{einstall} & \compactfeatureref{banned-commands} & Yes & Yes & Banned & Banned & Banned \\ \t{dohtml} & \compactfeatureref{banned-commands} & Yes & Yes & Yes & Banned & Banned \\ \t{dolib} & \compactfeatureref{banned-commands} & Yes & Yes & Yes & Banned & Banned \\ \t{libopts} & \compactfeatureref{banned-commands} & Yes & Yes & Yes & Banned & Banned \\ \t{useq} & \compactfeatureref{banned-commands} & Yes & Yes & Yes & Yes & Banned \\ \t{hasv} & \compactfeatureref{banned-commands} & Yes & Yes & Yes & Yes & Banned \\ \t{hasq} & \compactfeatureref{banned-commands} & Yes & Yes & Yes & Yes & Banned \\ Query command options & \compactfeatureref{pm-query-options} & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\ Output commands use stdout & \compactfeatureref{output-no-stdout} & Yes & Yes & Yes & No & No \\ \t{eqawarn} & \compactfeatureref{eqawarn} & No & No & No & Yes & Yes \\ \t{die -n} & \compactfeatureref{nonfatal-die} & No & No & Yes & Yes & Yes \\ \t{die} in subshell & \compactfeatureref{subshell-die} & No & No & No & Yes & Yes \\ \t{eapply} & \compactfeatureref{eapply} & No & No & Yes & Yes & Yes \\ \t{eapply_user} & \compactfeatureref{eapply-user} & No & No & Yes & Yes & Yes \\ \t{econf} arguments & \compactfeatureref{econf-options} & * & disable dependency tracking, disable silent rules & disable dependency tracking, disable silent rules, docdir, htmldir & disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot & disable dependency tracking, disable silent rules, disable static, datarootdir, docdir, htmldir, with sysroot \\ \t{dodoc -r} & \compactfeatureref{dodoc} & * & Yes & Yes & Yes & Yes \\ \t{doheader} & \compactfeatureref{doheader} & No & Yes & Yes & Yes & Yes \\ \t{doins} handles symlinks & \compactfeatureref{doins} & * & Yes & Yes & Yes & Yes \\ \t{doman} languages & \compactfeatureref{doman-langs} & * & Yes & Yes & Yes & Yes \\ \t{doman -i18n} precedence & \compactfeatureref{doman-langs} & * & Yes & Yes & Yes & Yes \\ \t{domo} destination path & \compactfeatureref{domo-path} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\ \t{new*} support stdin & \compactfeatureref{newfoo-stdin} & No & Yes & Yes & Yes & Yes \\ Controllable compression & \compactfeatureref{docompress} & * & Yes & Yes & Yes & Yes \\ \t{docompress} & \compactfeatureref{docompress} & * & Yes & Yes & Yes & Yes \\ Controllable stripping & \compactfeatureref{dostrip} & No & No & No & Yes & Yes \\ \t{dostrip} & \compactfeatureref{dostrip} & No & No & No & Yes & Yes \\ \t{use_with} empty third arg & \compactfeatureref{use-with} & * & Yes & Yes & Yes & Yes \\ \t{usex} & \compactfeatureref{usex} & No & Yes & Yes & Yes & Yes \\ \t{in_iuse} & \compactfeatureref{in-iuse} & No & No & Yes & Yes & Yes \\ \t{ver_*} commands & \compactfeatureref{ver-commands} & No & No & No & Yes & Yes \\ \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} & No & No & Yes & Yes & Yes \\ \t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} & * & Yes & Yes & Yes & Yes \\ \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} & No & No & Yes & Yes & Yes \\ \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} & No & No & Yes & Yes & Yes \\ \t{default} function & \compactfeatureref{default-func} & * & Yes & Yes & Yes & Yes \\ \t{einstalldocs} & \compactfeatureref{einstalldocs} & No & No & Yes & Yes & Yes \\ \t{get_libdir} & \compactfeatureref{get-libdir} & No & No & Yes & Yes & Yes \\ File mtimes preserved & \compactfeatureref{mtime-preserve} & * & 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}. \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}. \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{REQUIRED_USE}, \featureref{required-use}. \item \t{PROPERTIES} support is mandatory, \featureref{properties}. \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}. \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{pm-query-options}. \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 \t{failglob} is enabled in global scope, \featureref{failglob}. \item Default \t{src_prepare} no longer a no-op, \featureref{src-prepare}. \item Different \t{src_install} implementation, \featureref{src-install}. \item \t{LC_CTYPE} and \t{LC_COLLATE} compatible with POSIX locale, \featureref{locale-settings}. \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} \section{EAPI 7} EAPI 7 is EAPI 6 with the following changes: \begin{compactitem} \item \t{profiles/package.mask} can be a directory, \featureref{package-mask-dir}. \item \t{package.mask}, \t{package.use}, \t{use.*} and \t{package.use.*} in a profile can be directories, \featureref{profile-file-dirs}. \item \t{package.provided} in profiles banned, \featureref{package-provided}. \item Empty \t{||} and \t{\textasciicircum\textasciicircum} dependency groups no longer count as being matched, \featureref{empty-dep-groups}. \item \t{PORTDIR} is gone, \featureref{portdir}. \item \t{ECLASSDIR} is gone, \featureref{eclassdir}. \item \t{DESTTREE} is gone, \featureref{desttree}. \item \t{INSDESTTREE} is gone, \featureref{insdesttree}. \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash, \featureref{trailing-slash}. \item \t{SYSROOT} and \t{ESYSROOT}, \featureref{sysroot}. \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}. \item \t{BDEPEND}, \featureref{bdepend}. \item \t{BROOT}, \featureref{broot}. \item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} options instead of \t{-{}-host-root}, \featureref{pm-query-options}. \item \t{ENV_UNSET}, \featureref{env-unset}. \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}. \item \t{nonfatal} is both a shell function and an external command, \featureref{nonfatal}. \item \t{dohtml} banned, \featureref{banned-commands}. \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}. \item Output commands no longer use stdout, \featureref{output-no-stdout}. \item \t{eqawarn}, \featureref{eqawarn}. \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}. \item \t{domo} installs to \t{/usr}, \featureref{domo-path}. \item Controllable stripping and \t{dostrip}, \featureref{dostrip}. \item Version manipulation and comparison commands, \featureref{ver-commands}. \end{compactitem} \section{EAPI 8} EAPI 8 is EAPI 7 with the following changes: \begin{compactitem} \item Less strict naming rules for files in \t{updates} directory, \featureref{updates-filenames}. \item Bash version is 5.0, \featureref{bash-version}. \item Selective fetch/mirror restriction, \featureref{uri-restrict}. \item \t{IDEPEND}, \featureref{idepend}. \item Empty working directory in \t{pkg_*} phase functions, \featureref{phase-function-dir}. \item Different \t{src_prepare} implementation, \featureref{src-prepare}. \item \t{PROPERTIES} and \t{RESTRICT} accumulated across eclasses, \featureref{accumulate-vars}. \item \t{useq} banned, \featureref{banned-commands}. \item \t{hasv} and \t{hasq} banned, \featureref{banned-commands}. \item \t{econf} adds \t{-{}-datarootdir}, \featureref{econf-options}. \item \t{econf} adds \t{-{}-disable-static}, \featureref{econf-options}. \end{compactitem} \ChangeWhenAddingAnEAPI{8} % 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: