1 |
Bug: https://bugs.gentoo.org/489458 |
2 |
--- |
3 |
dependencies.tex | 45 ++++++++++++++++++++++++++++++++++++++------- |
4 |
eapi-differences.tex | 4 ++++ |
5 |
2 files changed, 42 insertions(+), 7 deletions(-) |
6 |
|
7 |
diff --git a/dependencies.tex b/dependencies.tex |
8 |
index 5773aef..d9592d9 100644 |
9 |
--- a/dependencies.tex |
10 |
+++ b/dependencies.tex |
11 |
@@ -98,6 +98,12 @@ be surrounded on both sides by whitespace, except at the start and end of the st |
12 |
of (a dependency item of any kind followed by whitespace), followed by a close parenthesis. |
13 |
More formally: \t{any-of} \t{::=} \t{'||' whitespace '(' whitespace (item whitespace)* ')'}. |
14 |
Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}. |
15 |
+\item \featurelabel{binding-leftmost-of} A binding leftmost-of group, which consists of the string |
16 |
+ \t{||=}, followed by whitespace, followed by an open parenthesis, followed by whitespace, |
17 |
+ followed by zero or more of (a dependency item of any kind followed by whitespace), followed by |
18 |
+ a close parenthesis. More formally: \t{any-of} \t{::=} \t{'||=' whitespace '(' whitespace (item |
19 |
+ whitespace)* ')'}. Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND} in EAPIs |
20 |
+ listed in table~\ref{tab:dep-group-table} as supporting \t{||=}\ groups. |
21 |
\item An exactly-one-of group, which consists of the string \t{\textasciicircum\textasciicircum}, |
22 |
followed by whitespace, followed by an open parenthesis, followed by whitespace, followed by |
23 |
zero or more of (a dependency item of any kind followed by whitespace), followed by a close |
24 |
@@ -109,7 +115,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st |
25 |
zero or more of (a dependency item of any kind followed by whitespace), followed by a close |
26 |
parenthesis. More formally: \t{at-most-one-of} \t{::=} \t{'??'\ whitespace '(' whitespace |
27 |
(item whitespace)* ')'}. Permitted in \t{REQUIRED_USE} in EAPIs listed in |
28 |
- table~\ref{tab:at-most-one-of-table} as supporting \t{REQUIRED_USE ??}\ groups. |
29 |
+ table~\ref{tab:dep-group-table} as supporting \t{REQUIRED_USE ??}\ groups. |
30 |
\item A use-conditional group, which consists of an optional exclamation mark, followed by |
31 |
a use flag name, followed by a question mark, followed by whitespace, followed by |
32 |
an open parenthesis, followed by whitespace, followed by zero or more of (a dependency item |
33 |
@@ -150,15 +156,17 @@ In particular, note that whitespace is not optional. |
34 |
\end{centertable} |
35 |
|
36 |
\ChangeWhenAddingAnEAPI{7} |
37 |
-\begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups} |
38 |
- \label{tab:at-most-one-of-table} |
39 |
- \begin{tabular}{ll} |
40 |
+\begin{centertable}{EAPIs supporting additional group types} |
41 |
+ \label{tab:dep-group-table} |
42 |
+ \begin{tabular}{lll} |
43 |
\toprule |
44 |
\multicolumn{1}{c}{\textbf{EAPI}} & |
45 |
- \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\ |
46 |
+ \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} & |
47 |
+ \multicolumn{1}{c}{\textbf{Supports \t{||=}\ groups?}} \\ |
48 |
\midrule |
49 |
- 0, 1, 2, 3, 4 & No \\ |
50 |
- 5, 6, 7 & Yes \\ |
51 |
+ 0, 1, 2, 3, 4 & No & No \\ |
52 |
+ 5, 6 & Yes & No \\ |
53 |
+ 7 & Yes & Yes \\ |
54 |
\bottomrule |
55 |
\end{tabular} |
56 |
\end{centertable} |
57 |
@@ -186,6 +194,29 @@ considered to be matched if its associated package dependency specification is n |
58 |
|
59 |
An empty any-of group counts as being matched. |
60 |
|
61 |
+\subsection{Binding leftmost-of dependency specifications} |
62 |
+ |
63 |
+Any use-conditional group that is an immediate child of a binding leftmost-of group, if not enabled |
64 |
+(disabled for an exclamation mark prefixed use flag name), is not considered a member of the binding |
65 |
+leftmost-of group for match purposes. |
66 |
+ |
67 |
+In a binding leftmost-of group, at least one immediate child element must be matched. A blocker is |
68 |
+considered to be matched if its associated package dependency specification is not matched. |
69 |
+In addition, for runtime dependencies, indicates that the package will break unless the dependency |
70 |
+corresponding to the first immediate child (in order of listing) matched in \t{ESYSROOT} at the time |
71 |
+the package was built is satisfied. |
72 |
+ |
73 |
+An empty binding leftmost-of group counts as being matched. |
74 |
+ |
75 |
+To implement the binding leftmost-of operator, the package manager will need to store which of |
76 |
+the immediate child elements were matched. This syntax is only for package manager use and must not |
77 |
+be used by ebuilds. Only the first matched child element needs to be indicated. |
78 |
+ |
79 |
+Whenever the binding leftmost-of group is used in an enabled dependency group, the dependencies |
80 |
+(\t{DEPEND}) must ensure that at least one of the immediate child elements is also matched at build |
81 |
+time. It is invalid to use the binding leftmost-of group inside PDEPEND or inside any-of dependency |
82 |
+specifications. |
83 |
+ |
84 |
\subsection{Exactly-one-of dependency specifications} |
85 |
|
86 |
Any use-conditional group that is an immediate child of an exactly-one-of group, if not enabled |
87 |
diff --git a/eapi-differences.tex b/eapi-differences.tex |
88 |
index 87ce708..a89f5f8 100644 |
89 |
--- a/eapi-differences.tex |
90 |
+++ b/eapi-differences.tex |
91 |
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs. |
92 |
\bottomrule |
93 |
\endlastfoot |
94 |
|
95 |
+\t{||=} dependency group & \compactfeatureref{binding-leftmost-of} & |
96 |
+ No & No & No & No & Yes \\ |
97 |
+ |
98 |
\t{REQUIRED_USE} autoenforced & \compactfeatureref{auto-req-use} & |
99 |
No & No & No & No & Yes \\ |
100 |
|
101 |
@@ -467,6 +470,7 @@ EAPI 7 is EAPI 6 with the following changes: |
102 |
\featureref{nonfatal-fallback}. |
103 |
\item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}. |
104 |
\item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}. |
105 |
+\item binding leftmost-of (\t{||=}) dependency group is supported, \featureref{binding-leftmost-of}. |
106 |
\end{compactitem} |
107 |
|
108 |
\ChangeWhenAddingAnEAPI{7} |
109 |
-- |
110 |
2.14.2 |