summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCiaran McCreesh <ciaran.mccreesh@googlemail.com>2012-05-06 18:05:31 +0100
committerUlrich Müller <ulm@gentoo.org>2012-09-13 08:28:16 +0200
commit6411e547f7ca417ce12c05289211ec96b2d11042 (patch)
tree63d8b37cf8d9496cc1ecace0e13852b42e878615
parentProfile IUSE injection is in EAPI 5. (diff)
downloadpms-6411e547f7ca417ce12c05289211ec96b2d11042.tar.gz
pms-6411e547f7ca417ce12c05289211ec96b2d11042.tar.bz2
pms-6411e547f7ca417ce12c05289211ec96b2d11042.zip
EAPI 5 supports ?? ( ) groups
See bug 354219
-rw-r--r--dependencies.tex33
-rw-r--r--eapi-differences.tex4
2 files changed, 37 insertions, 0 deletions
diff --git a/dependencies.tex b/dependencies.tex
index 8f78f3d..ff12299 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -66,6 +66,12 @@ be surrounded on both sides by whitespace, except at the start and end of the st
parenthesis. More formally: \t{exactly-one-of ::= '\textasciicircum\textasciicircum' whitespace
'(' whitespace (item whitespace)* ')'}.
Permitted in \t{REQUIRED\_USE}.
+\item \featurelabel{at-most-one-of} An at-most-one-of group, which consists of the string \t{??},
+ followed by whitespace, followed by an open parenthesis, followed by whitespace, followed by
+ zero or more of (a dependency item of any kind followed by whitespace), followed by a close
+ parenthesis. More formally: \t{exactly-one-of ::= '??' whitespace '(' whitespace (item
+ whitespace)* ')'}. Permitted in \t{REQUIRED\_USE} in EAPIs listed in
+ table~\ref{tab:at-most-one-of-table} as supporting \t{REQUIRED\_USE ??}\ groups.
\item A use-conditional group, which consists of an optional exclamation mark, followed by
a use flag name, followed by a question mark, followed by whitespace, followed by
an open parenthesis, followed by whitespace, followed by zero or more of (a dependency item
@@ -93,6 +99,23 @@ In particular, note that whitespace is not optional.
\end{tabular}
\end{centertable}
+\ChangeWhenAddingAnEAPI{5}
+\begin{centertable}{EAPIs supporting \t{REQUIRED\_USE ??}\ groups} \label{tab:at-most-one-of-table}
+ \begin{tabular}{ l l }
+ \toprule
+ \multicolumn{1}{c}{\textbf{EAPI}} &
+ \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED\_USE ??}\ groups?}} \\
+ \midrule
+ \t{0} & No \\
+ \t{1} & No \\
+ \t{2} & No \\
+ \t{3} & No \\
+ \t{4} & No \\
+ \t{5} & Yes \\
+ \bottomrule
+ \end{tabular}
+\end{centertable}
+
\subsection{All-of Dependency Specifications}
In an all-of group, all of the child elements must be matched.
@@ -126,6 +149,16 @@ In an exactly-one-of group, exactly one immediate child element must be matched.
An empty exactly-one-of group counts as being matched.
+\subsection{At-most-one-of Dependency Specifications}
+
+Any use-conditional group that is an immediate child of an at-most-one-of group, if not enabled
+(disabled for an exclamation mark prefixed use flag name), is not considered a member of the
+at-most-one-of group for match purposes.
+
+In an at-most-one-of group, at most one immediate child element must be matched.
+
+An empty at-most-one-of group counts as being matched.
+
\subsection{Package Dependency Specifications}
A package dependency can be in one of the following base formats. A package manager must warn or
diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8ece012..3e4bf27 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -55,6 +55,9 @@
\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 \\
@@ -248,6 +251,7 @@ EAPI 4 is EAPI 3 with the following changes:
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{USE} is calculated differently, \featureref{profile-iuse-injection}.
\item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}.