summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dependencies.tex')
-rw-r--r--dependencies.tex154
1 files changed, 132 insertions, 22 deletions
diff --git a/dependencies.tex b/dependencies.tex
index de29703..bd62649 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -25,16 +25,10 @@ be surrounded on both sides by whitespace, except at the start and end of the st
\item A package dependency specification. Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}.
\item A simple qualified package name. Permitted in \t{PROVIDE} (and inside \t{DEPEND} etc
via the previous item).
-\IFKDEBUILDELSE
-{
- \item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC\_URI} and \t{HOMEPAGE}.
- In EAPIs listed in table~\ref{uri-arrows-table} as supporting \t{SRC\_URI} arrows, may
- optionally be followed by whitespace, then \t{->}, then whitespace, then a simple filename
- when in \t{SRC\_URI}. For \t{SRC\_URI} behaviour, see section~\ref{src-uri-behaviour}.
-}{
- \item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC\_URI} and \t{HOMEPAGE}.
- For \t{SRC\_URI} behaviour, see section~\ref{src-uri-behaviour}.
-}
+\item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC\_URI} and \t{HOMEPAGE}.
+In EAPIs listed in table~\ref{uri-arrows-table} as supporting \t{SRC\_URI} arrows, may
+optionally be followed by whitespace, then \t{->}, then whitespace, then a simple filename
+when in \t{SRC\_URI}. For \t{SRC\_URI} behaviour, see section~\ref{src-uri-behaviour}.
\item A flat filename. Permitted in \t{SRC\_URI}.
\item A license name (e.g. \t{GPL-2}). Permitted in \t{LICENSE}.
\item A simple string. Permitted in \t{RESTRICT}.
@@ -66,9 +60,9 @@ be surrounded on both sides by whitespace, except at the start and end of the st
In particular, note that whitespace is not optional.
+\begin{centertable}{EAPIs supporting \t{SRC\_URI} arrows} \label{uri-arrows-table}
\IFKDEBUILDELSE
{
- \begin{centertable}{EAPIs supporting \t{SRC\_URI} arrows} \label{uri-arrows-table}
\begin{tabular}{ l l }
\toprule
\multicolumn{1}{c}{\textbf{EAPI}} &
@@ -77,10 +71,25 @@ In particular, note that whitespace is not optional.
\t{0} & No \\
\t{1} & No \\
\t{kdebuild-1} & Yes \\
+ \t{2} & Yes \\
\bottomrule
\end{tabular}
- \end{centertable}
+}{
+ \begin{tabular}{ l l }
+ \toprule
+ \multicolumn{1}{c}{\textbf{EAPI}} &
+ \multicolumn{1}{c}{\textbf{Supports \t{SRC\_URI} arrows?}} \\
+ \midrule
+ \t{0} & No \\
+ \t{1} & No \\
+ \t{2} & Yes \\
+ \bottomrule
+ \end{tabular}
+}
+\end{centertable}
+\IFKDEBUILDELSE
+{
\begin{centertable}{EAPIs supporting \t{SRC\_URI} labels} \label{uri-labels-table}
\begin{tabular}{ l l }
\toprule
@@ -90,6 +99,7 @@ In particular, note that whitespace is not optional.
\t{0} & No \\
\t{1} & No \\
\t{kdebuild-1} & Yes \\
+ \t{2} & No \\
\bottomrule
\end{tabular}
\end{centertable}
@@ -103,6 +113,7 @@ In particular, note that whitespace is not optional.
\t{0} & No \\
\t{1} & No \\
\t{kdebuild-1} & Yes \\
+ \t{2} & No \\
\bottomrule
\end{tabular}
\end{centertable}
@@ -166,15 +177,29 @@ EAPI not supporting \t{SLOT} dependencies.
specification that does not use an operator at the start may additionally be suffixed by one
\t{[range]} restriction, as described in section~\ref{range-dep}. A package manager must warn or
error if this feature is used with an EAPI not supporting ranged dependencies.
+}{
+}
- In EAPIs shown in table~\ref{use-deps-table} as supporting \t{USE} dependencies, a specification
- may additionally be suffixed by one or more \t{[use]} restrictions, as described in
- section~\ref{use-dep}. A package manager must warn or error if this feature is used with an EAPI
- not supporting use dependencies.
+\IFKDEBUILDELSE
+{
+ In EAPIs shown in table~\ref{use-deps-table} as supporting kdebuild-style \t{USE} dependencies,
+ a specification may additionally be suffixed by one or more kdebuild-style \t{[use]}
+ restrictions, as described in section~\ref{kdebuild-use-dep}. A package manager must warn or
+ error if this feature is used with an EAPI not supporting use dependencies.
+}{
+}
+In EAPIs shown in table~\ref{use-deps-table} as supporting 2-style \t{USE} dependencies, a specification
+may additionally be suffixed by at most one 2-style \t{[use]} restriction, as described in
+section~\ref{use-dep}. A package manager must warn or error if this feature is used with an EAPI
+not supporting use dependencies.
+
+\IFKDEBUILDELSE
+{
\note Order is important. The slot restriction must come before the range restriction, which
must come before use dependencies.
}{
+ \note Order is important. The slot restriction must come before use dependencies.
}
\begin{centertable}{EAPIs supporting \t{SLOT} dependencies} \label{slot-deps-table}
@@ -188,6 +213,7 @@ EAPI not supporting \t{SLOT} dependencies.
\t{0} & No \\
\t{1} & Named only \\
\t{kdebuild-1} & Named and operator \\
+ \t{2} & Named only \\
\bottomrule
\end{tabular}
}{
@@ -198,6 +224,7 @@ EAPI not supporting \t{SLOT} dependencies.
\midrule
\t{0} & No \\
\t{1} & Yes \\
+ \t{2} & Yes \\
\bottomrule
\end{tabular}
}
@@ -214,10 +241,15 @@ EAPI not supporting \t{SLOT} dependencies.
\t{0} & No \\
\t{1} & No \\
\t{kdebuild-1} & Yes \\
+ \t{2} & No \\
\bottomrule
\end{tabular}
\end{centertable}
+}{
+}
+\IFKDEBUILDELSE
+{
\begin{centertable}{EAPIs supporting \t{USE} dependencies} \label{use-deps-table}
\begin{tabular}{ l l }
\toprule
@@ -226,11 +258,24 @@ EAPI not supporting \t{SLOT} dependencies.
\midrule
\t{0} & No \\
\t{1} & No \\
- \t{kdebuild-1} & Yes \\
+ \t{kdebuild-1} & kdebuild-style \\
+ \t{2} & 2-style \\
\bottomrule
\end{tabular}
\end{centertable}
}{
+ \begin{centertable}{EAPIs supporting \t{USE} dependencies} \label{use-deps-table}
+ \begin{tabular}{ l l }
+ \toprule
+ \multicolumn{1}{c}{\textbf{EAPI}} &
+ \multicolumn{1}{c}{\textbf{Supports \t{USE} dependencies?}} \\
+ \midrule
+ \t{0} & No \\
+ \t{1} & No \\
+ \t{2} & 2-style \\
+ \bottomrule
+ \end{tabular}
+ \end{centertable}
}
\subsubsection{Operators}
@@ -254,8 +299,8 @@ The following operators are available:
\subsubsection{Block Operator}
-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, with the
+If the specification is prefixed with one or two exclamation marks, the named dependency is a block
+rather than a requirement---that is to say, the specified package must not be installed, with the
following exceptions:
\begin{compactitem}
@@ -263,6 +308,41 @@ following exceptions:
\item Blocks on the ebuild itself do not count.
\end{compactitem}
+There are two strengths of block: weak and strong. A weak block may be ignored by the package
+manager, so long as any blocked package will be uninstalled later on. A strong block must not be
+ignored. The mapping from one or two exclamation marks to strength is described in
+table~\ref{bang-strength-table}.
+
+\begin{centertable}{Exclamation mark strengths for EAPIs} \label{bang-strength-table}
+\IFKDEBUILDELSE
+{
+ \begin{tabular}{ l l l }
+ \toprule
+ \multicolumn{1}{c}{\textbf{EAPI}} &
+ \multicolumn{1}{c}{\textbf{\t{!}}} &
+ \multicolumn{1}{c}{\textbf{\t{!!}}} \\
+ \midrule
+ \t{0} & Unspecified & Forbidden \\
+ \t{1} & Unspecified & Forbidden \\
+ \t{kdebuild-1} & Unspecified & Forbidden \\
+ \t{2} & Weak & Strong \\
+ \bottomrule
+ \end{tabular}
+}{
+ \begin{tabular}{ l l l }
+ \toprule
+ \multicolumn{1}{c}{\textbf{EAPI}} &
+ \multicolumn{1}{c}{\textbf{\t{!}}} &
+ \multicolumn{1}{c}{\textbf{\t{!!}}} \\
+ \midrule
+ \t{0} & Unspecified & Forbidden \\
+ \t{1} & Unspecified & Forbidden \\
+ \t{2} & Weak & Strong \\
+ \bottomrule
+ \end{tabular}
+}
+\end{centertable}
+
\subsubsection{Slot Dependencies}
\label{slot-dep}
@@ -314,10 +394,10 @@ the match is treated as unsuccessful.
\IFKDEBUILDELSE
{
- \subsubsection{Use Dependencies}
- \label{use-dep}
+ \subsubsection{kdebuild Style Use Dependencies}
+ \label{kdebuild-use-dep}
- A use dependency consists of one of the following:
+ A kdebuild-style use dependency consists of one of the following:
\begin{description}
\item{[opt]} The flag must be enabled.
@@ -337,9 +417,39 @@ the match is treated as unsuccessful.
\end{description}
When multiple use dependencies are specified, all must match for a successful match.
+
+ It is an error for a use dependency to be applied to an ebuild which does not have the flag in
+ question in \t{IUSE}, or for an ebuild to use a conditional use dependency when that ebuild does
+ not have the flag in \t{IUSE}.
}{
}
+\subsubsection{2-Style Use Dependencies}
+\label{use-dep}
+
+A 2-style use dependency consists of one of the following:
+
+\begin{description}
+\item{[opt]} The flag must be enabled.
+\item{[opt=]} The flag must be enabled if the flag is enabled for the package with the
+ dependency, or disabled otherwise.
+\item{[!opt=]} The flag must be disabled if the flag is enabled for the package with the
+ dependency, or enabled otherwise.
+\item{[opt?]} The flag must be enabled if the flag is enabled for the package with the
+ dependency.
+\item{[!opt?]} The flag must be disabled if the use flag is disabled for the package with the
+ dependency.
+\item{[-opt]} The flag must be disabled.
+\end{description}
+
+Multiple requirements may be combined using commas, e.g. \t{[first,-second,third?]}.
+
+When multiple requirements are specified, all must match for a successful match.
+
+It is an error for a use dependency to be applied to an ebuild which does not have the flag in
+question in \t{IUSE}, or for an ebuild to use a conditional use dependency when that ebuild does
+not have the flag in \t{IUSE}.
+
\IFKDEBUILDELSE
{
\subsection{Package Dependency Labels}