summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCiaran McCreesh <ciaranm@ciaranm.org>2007-10-18 14:08:34 +0000
committerCiaran McCreesh <ciaranm@ciaranm.org>2007-10-18 14:08:34 +0000
commit8957745aae9a629e0d91793573b9b6f8b145880c (patch)
treef3ed619d1e48f795c82d73172c75c1228f3565f5
parentFormatting (diff)
downloadpms-8957745aae9a629e0d91793573b9b6f8b145880c.tar.gz
pms-8957745aae9a629e0d91793573b9b6f8b145880c.tar.bz2
pms-8957745aae9a629e0d91793573b9b6f8b145880c.zip
Add EAPI 1
git-svn-id: http://svn.repogirl.net/pms/trunk@169 a05a4626-2124-0410-b604-e6c5abf33261
-rw-r--r--dependencies.tex11
-rw-r--r--ebuild-functions.tex16
-rw-r--r--ebuild-vars.tex4
-rw-r--r--introduction.tex25
4 files changed, 51 insertions, 5 deletions
diff --git a/dependencies.tex b/dependencies.tex
index d92989d..7b09e7a 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -50,7 +50,7 @@ In particular, note that whitespace is not optional.
\subsection{Package Dependency Specifications}
-In EAPI-0, a package dependency can be in one of the following base formats:
+A package dependency can be in one of the following base formats:
\begin{bulletlist}
\item A simple \t{category/package} name.
@@ -58,6 +58,9 @@ In EAPI-0, a package dependency can be in one of the following base formats:
followed by a version specification.
\end{bulletlist}
+In EAPI 1, either of the above formats may additionally be suffixed by a \t{:slot}
+restriction.
+
The following operators are available:
\begin{description}
@@ -74,9 +77,9 @@ The following operators are available:
\item[\t{>}] Strictly greater than the specified version.
\end{description}
-If the operator is prefixed with an exclamation mark, the named dependency is a block
-rather than a requirement---that is to say, the specified package must not be
-installed, except with the following exceptions:
+If the specification is prefixed with an exclamation mark, the named dependency is a block rather
+than a requirement---that is to say, the specified package must not be installed, except with the
+following exceptions:
\begin{bulletlist}
\item Blocks on a package provided by the ebuild do not count. \label{provided-blocks}
diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 9139bd9..2fafeef 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -53,7 +53,8 @@ src_unpack() {
The \t{src\_compile} function configures the package's build environment and builds the package.
The initial working directory must be \t{S} if that exists, falling back to \t{WORKDIR} otherwise.
-The default implementation used when the ebuild lacks the \t{src\_compile} function is:
+
+For EAPI 0, the default implementation used when the ebuild lacks the \t{src\_compile} function is:
\begin{lstlisting}
src_compile() {
@@ -66,6 +67,19 @@ src_compile() {
}
\end{lstlisting}
+For EAPI 1, the default implementation used when the ebuild lacks the \t{src\_compile} function is:
+
+\begin{lstlisting}
+src_compile() {
+ if [ -x ${ECONF_SOURCE:-.}/configure ]; then
+ econf
+ fi
+ if [ -f Makefile ] || [ -f GNUmakefile ] || [ -f makefile ]; then
+ emake || die "emake failed"
+ fi
+}
+\end{lstlisting}
+
\subsection{src\_test}
\label{src-test-function}
diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 9e14a30..f10d28d 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -40,6 +40,10 @@ All ebuilds must define at least the following variables:
must list only flags used by the ebuild itself. Any eclass that works with \t{USE} flags
must also set \t{IUSE}, listing only the variables used by that eclass. The package manager is
responsible for merging these values.
+
+ In EAPI 1, any use flag name in \t{IUSE} may be prefixed by at most one of a plus or a minus
+ sign. If such a prefix is present, the package manager may use it as a suggestion as to the
+ default value of the use flag if no other configuration overrides it.
\item[KEYWORDS] A whitespace separated list of keywords for the ebuild. Each token must be a
valid keyword name, as per section \ref{keyword-names}. May include $-*$, which
indicates that the package will only work on explicitly listed archs. May include $-arch$,
diff --git a/introduction.tex b/introduction.tex
index 80c94b7..e54e67a 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -30,4 +30,29 @@ incompatibilities with any particular repository.
Text in \t{teletype} is used for filenames or variable names. \i{Italic} text is used for terms
with a particular technical meaning in places where there may otherwise be ambiguity.
+\section{EAPIs}
+
+An EAPI can be thought of as a 'version' of this specification to which a package conforms. An EAPI
+value is a string (all EAPIs defined by this specification currently use an integer, but package
+managers must not assume that this will hold in the future, and package managers must not assume
+that any kind of comparison other than equality between EAPI values makes sense). There are two
+EAPIs defined by this specification:
+
+\begin{description}
+\item[0] The 'original' base EAPI.
+\item[1] EAPI '1' contains a number of extensions to EAPI '0'. Except where explicitly noted, it is
+ in all other ways identical to EAPI '0'.
+\end{description}
+
+Except where explicitly noted, everything in this specification applies to both EAPIs.
+
+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.
+
+EAPIs whose value consists purely of an integer are reserved for future versions of this
+specification. EAPIs whose value starts with the string \t{paludis-} are reserved for experimental
+use by the Paludis package manager.
+
% vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :