\chapter{EAPIs}

\section{Definition}

An EAPI can be thought of as a `version' of this specification to which a package conforms. An EAPI
value is a string as per section~\ref{sec:eapi-names}, and is part of an ebuild's metadata.

If a package manager encounters a package version with an unrecognised EAPI, it must not attempt to
perform any operations upon it. It could, for example, ignore the package version entirely (although
this can lead to user confusion), or it could mark the package version as masked. A package manager
must not use any metadata generated from a package with an unrecognised EAPI.

The package manager must not attempt to perform any kind of comparison test other than equality upon
EAPIs.

EAPIs are also used for profile directories, as described in section~\ref{sec:profile-eapi}.

\section{Defined EAPIs}

\ChangeWhenAddingAnEAPI{8}
This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', and~`8'.
EAPI~`0' is the `original' base EAPI\@. Each of the later EAPIs contains a number of extensions
to its predecessor.

Except where explicitly noted, everything in this specification
applies to all of the above EAPIs.

\section{Reserved EAPIs}

\begin{compactitem}
\item EAPIs whose value consists purely of an integer are reserved for future versions of this
    specification.
\item EAPIs whose value starts with the string \t{paludis-} are reserved for experimental
    use by the Paludis package manager.
\end{compactitem}

% 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:
