From: "Ulrich Müller" <ulm@gentoo.org>
To: gentoo-pms@lists.gentoo.org
Subject: [gentoo-pms] [PATCH] Ban empty groups in dependency specifications.
Date: Wed, 23 Aug 2017 19:48:22 +0200 [thread overview]
Message-ID: <22941.49918.450542.907616@a1i15.kph.uni-mainz.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 5345 bytes --]
The specification for empty groups was originally added to match
historical Portage behaviour, but deviates from the usual convention
that empty OR operations should evaluate to false.
However, Portage was changed in 2011 to treat empty dependency groups
as an error, therefore ebuilds cannot rely on any definite behaviour.
Consequently, empty groups are not used by any ebuild or eclass in the
Gentoo repository.
This is an retroactive change for all EAPIs.
Bug: 370565
---
dependencies.tex | 26 ++++++++++----------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/dependencies.tex b/dependencies.tex
index d9a6f1a..62cd669 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -57,33 +57,33 @@ be surrounded on both sides by whitespace, except at the start and end of the st
\item A use flag name, optionally preceded by an exclamation mark. Permitted in \t{REQUIRED_USE}.
\item A simple string. Permitted in \t{RESTRICT} and \t{PROPERTIES}.
\item An all-of group, which consists of an open parenthesis, followed by whitespace,
- followed by zero or more of (a dependency item of any kind followed by whitespace), followed
+ followed by one or more of (a dependency item of any kind followed by whitespace), followed
by a close parenthesis. More formally:
- \t{all-of} \t{::=} \t{'(' whitespace (item whitespace)* ')'}. Permitted in all specification
+ \t{all-of} \t{::=} \t{'(' whitespace (item whitespace)+ ')'}. Permitted in all specification
style variables.
\item An any-of group, which consists of the string \t{||}, followed by whitespace,
- followed by an open parenthesis, followed by whitespace, followed by zero or more
+ followed by an open parenthesis, followed by whitespace, followed by one or more
of (a dependency item of any kind followed by whitespace), followed by a close parenthesis.
- More formally: \t{any-of} \t{::=} \t{'||' whitespace '(' whitespace (item whitespace)* ')'}.
+ More formally: \t{any-of} \t{::=} \t{'||' whitespace '(' whitespace (item whitespace)+ ')'}.
Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
\item An exactly-one-of group, which consists of the string \t{\textasciicircum\textasciicircum},
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
+ one or more of (a dependency item of any kind followed by whitespace), followed by a close
parenthesis. More formally: \t{exactly-one-of} \t{::=} \t{'\textasciicircum\textasciicircum'
- whitespace '(' whitespace (item whitespace)* ')'}.
+ 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
+ one or more of (a dependency item of any kind followed by whitespace), followed by a close
parenthesis. More formally: \t{at-most-one-of} \t{::=} \t{'??'\ whitespace '(' whitespace
- (item whitespace)* ')'}. Permitted in \t{REQUIRED_USE} in EAPIs listed in
+ (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
+ an open parenthesis, followed by whitespace, followed by one or more of (a dependency item
of any kind followed by whitespace), followed by a close parenthesis. More formally:
\t{use-conditional} \t{::=} \t{'!'?\ flag-name '?'\ whitespace '(' whitespace (item
- whitespace)* ')'}.
+ whitespace)+ ')'}.
Permitted in all specification style variables.
\end{compactitem}
@@ -138,8 +138,6 @@ for match purposes.
In an any-of group, at least one immediate child element must be matched. A blocker is
considered to be matched if its associated package dependency specification is not matched.
-An empty any-of group counts as being matched.
-
\subsection{Exactly-one-of dependency specifications}
Any use-conditional group that is an immediate child of an exactly-one-of group, if not enabled
@@ -148,8 +146,6 @@ exactly-one-of group for match purposes.
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
@@ -158,8 +154,6 @@ 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
--
2.14.1
[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]
next reply other threads:[~2017-08-23 18:01 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-23 17:48 Ulrich Müller [this message]
2017-10-02 16:45 ` [gentoo-pms] [PATCH] Ban empty groups in dependency specifications Michał Górny
-- strict thread matches above, loose matches on Subject: below --
2017-10-02 16:52 Michał Górny
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=22941.49918.450542.907616@a1i15.kph.uni-mainz.de \
--to=ulm@gentoo.org \
--cc=gentoo-pms@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox