public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2015-12-05 20:15 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2015-12-05 20:15 UTC (permalink / raw
  To: gentoo-commits

commit:     837baf076e927538e63fde72c99d72ddcd0ab702
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 29 23:01:54 2015 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Dec  5 20:14:50 2015 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=837baf07

EAPI 7 supports directories for profile files.

Bug: 282296

 eapi-differences.tex |  5 +++++
 profiles.tex         | 38 +++++++++++++++++++++++++++++++-------
 2 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a66d388..6683488 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -44,6 +44,9 @@ of this document for a complete table of previous EAPIs.
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
     No & No & No & No & Yes \\
 
+Profile files as directories & \compactfeatureref{profile-file-dirs} &
+    No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
     No & No & Yes & Yes & Yes \\
 
@@ -377,6 +380,8 @@ EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
 \item \t{profiles/package.mask} can be a directory, \featureref{package-mask-dir}.
+\item \t{package.mask}, \t{package.use}, \t{use.*} and \t{package.use.*} in a profile can be
+    directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/profiles.tex b/profiles.tex
index 4a167ea..e56dce0 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -70,6 +70,27 @@ parent profile's list is taken, and the current profile's list appended. If any
 hyphen, then any lines previous to it whose contents are equal to the remainder of that line are
 removed from the list. Once again, blank lines and those beginning with a \# are discarded.
 
+\featurelabel{profile-file-dirs} In EAPIs listed in table~\ref{tab:profile-file-dirs} as supporting
+directories for profile files, any of the files \t{package.mask}, \t{package.use}, \t{use.*} and
+\t{package.use.*} mentioned below can be a directory instead of a regular file. Files contained
+in that directory, unless their name begins with a dot, will be concatenated in order of their
+filename in the POSIX locale and the result will be processed as if it were a single file.
+Any subdirectories will be ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting directories for profile files}
+    \label{tab:profile-file-dirs}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{packages}
 The \t{packages} file is used to define the `system set' for this profile.
 After the above rules for inheritance and comments are applied, its lines must take one of two
@@ -85,7 +106,8 @@ but is mentioned here for completeness.
 \subsection{package.mask}
 \t{package.mask} is used to prevent packages from being installed on a given profile. Each line
 contains one package dependency specification; anything matching this specification will not be
-installed unless unmasked by the user's configuration.
+installed unless unmasked by the user's configuration. In some EAPIs, \t{package.mask} can be a
+directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 Note that the \t{-spec} syntax can be used to remove a mask in a parent profile, but not
 necessarily a global mask (from \t{profiles/package.mask}, section~\ref{profiles-package.mask}).
@@ -100,18 +122,20 @@ has severe adverse effects on USE-based and slot-based dependencies, its use is
 and package manager support must be regarded as purely optional.
 
 \subsection{package.use}
-The \t{package.use} file may be used by the package manager to override the default USE flags specified
-by \t{make.defaults} on a per package basis.  The format is to have a package dependency specification,
-and then a space delimited list of USE flags to enable.  A USE flag in the form of \t{-flag} indicates
-that the package should have the USE flag disabled.  The package dependency specification is limited to
-the forms defined by the directory's EAPI.
+The \t{package.use} file may be used by the package manager to override the default USE flags
+specified by \t{make.defaults} on a per package basis. The format is to have a package dependency
+specification, and then a space delimited list of USE flags to enable. A USE flag in the form of
+\t{-flag} indicates that the package should have the USE flag disabled. The package dependency
+specification is limited to the forms defined by the directory's EAPI. In some EAPIs,
+\t{package.use} can be a directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 \subsection{USE masking and forcing}
 \label{sec:use-masking}
 This section covers the eight files \t{use.mask}, \t{use.force}, \t{use.stable.mask},
 \t{use.stable.force}, \t{package.use.mask}, \t{package.use.force}, \t{package.use.stable.mask},
 and \t{package.use.\allowbreak stable.force}. They are described together because they interact in
-a non-trivial manner.
+a non-trivial manner. In some EAPIs, these files can be directories instead of regular files as per
+section~\ref{sec:line-stacking}.
 
 Simply speaking, \t{use.mask} and \t{use.force} are used to say that a given USE flag must never or
 always, respectively, be enabled when using this profile. \t{package.use.mask} and


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2015-12-05 20:15 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2015-12-05 20:15 UTC (permalink / raw
  To: gentoo-commits

commit:     c8c76d0bf673bdb3e7271dd7bc55587a21b8d0a3
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 29 23:00:32 2015 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Nov 29 23:00:32 2015 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=c8c76d0b

EAPI 7 supports a directory for package.mask.

Bug: 282296

 eapi-differences.tex |  4 ++++
 tree-layout.tex      | 20 ++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6f4698c..a66d388 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.mask} directory & \compactfeatureref{package-mask-dir} &
+    No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
     No & No & Yes & Yes & Yes \\
 
@@ -373,6 +376,7 @@ EAPI 6 is EAPI 5 with the following changes:
 EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
+\item \t{profiles/package.mask} can be a directory, \featureref{package-mask-dir}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/tree-layout.tex b/tree-layout.tex
index 0554a64..9228338 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -112,6 +112,12 @@ manager must ignore any files in this directory that it does not recognise.
     Contains a list, one entry per line, of package dependency specifications (using the directory's
     EAPI). Any package version matching one of these is considered to be masked, and will not be
     installed regardless of profile unless it is unmasked by the user configuration.
+
+    \featurelabel{package-mask-dir} For EAPIs listed in table~\ref{tab:package-mask-dir} as
+    supporting it, \t{package.mask} can be a directory instead of a regular file. Files contained
+    in that directory, unless their name begins with a dot, will be concatenated in order of their
+    filename in the POSIX locale and the result will be processed as if it were a single file.
+    Any subdirectories will be ignored.
 \item[profiles.desc] Described below in section~\ref{sec:profiles.desc}.
 \item[repo\_name] Contains, on a single line, the name of this repository. The repository name must
     conform to section~\ref{sec:repository-names}.
@@ -128,6 +134,20 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
+    \label{tab:package-mask-dir}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{The profiles.desc file}
 \label{sec:profiles.desc}
 \t{profiles.desc} is a line-based file, with the standard commenting


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     4a5b7806995f8ee5c8aeb1beafb66d5f29fd38e0
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 26 10:15:37 2016 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Nov 26 10:15:37 2016 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=4a5b7806

ebuild-vars.tex: Fix typo in IUSE description.

 ebuild-vars.tex | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 996ad16..6c5a396 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -61,7 +61,7 @@ Ebuilds may define any of the following variables:
 \item[IUSE] The \t{USE} flags used by the ebuild. 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. See section~\ref{sec:use-iuse-handling} for discussion on
-    which values must be listed this variable.
+    which values must be listed in this variable.
 
     \featurelabel{iuse-defaults} In EAPIs shown in table~\ref{tab:iuse-defaults-table} as supporting
     \t{IUSE} defaults, any use flag name in \t{IUSE} may be prefixed by at most one of a plus or a


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
  2016-11-29  7:33 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2017-04-10 18:12 ` Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     3eb1886b944c912129f795b11a48ee2d14e71949
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 31 15:04:46 2016 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct 31 18:21:18 2016 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=3eb1886b

dependencies.tex: Explicitly require matching package for :=

Explicitly indicate that the ebuild is required to provide appropriate
DEPEND for := to have a matching package installed. Additionally ban
the cases where := can not be reliably used or does not make any sense:
PDEPEND (because by intent the dependency can not be in DEPEND),
and any-of groups (because the non-binding nature of any-of group
collides with binding nature of :=).

 dependencies.tex | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/dependencies.tex b/dependencies.tex
index 79801c4..9917bc4 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -296,6 +296,10 @@ slot/sub-slot pair between the colon and equals sign when saving the package's d
 sub-slot part must not be omitted here (when the SLOT variable omits the sub-slot part, the package
 is considered to have an implicit sub-slot which is equal to the regular slot).
 
+Whenever the equals slot operator is used in an enabled dependency group, the dependencies
+(\t{DEPEND}) must ensure that a matching package is installed at build time. It is invalid to use
+the equals slot operator inside \t{PDEPEND} or inside any-of dependency specifications.
+
 \subsubsection{2-Style and 4-Style Use Dependencies}
 \label{sec:use-dep}
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
  2017-02-08 20:15 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2017-04-10 18:12 ` Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     e56c6887eb850cfe6abbd7a358990aff89f8112e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Feb  8 20:00:29 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Feb  8 20:00:29 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e56c6887

Makefile: Remove some workarounds for tex4ht bugs.

Indentation and alignment of line numbers in the algorithmic environment
have been fixed in dev-tex/tex4ht-20090611_p1038-r5, so the sed hacks
working around these bugs are no longer necessary.

https://bugs.gentoo.org/580532
https://puszcza.gnu.org.ua/bugs/index.php?314

 Makefile | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/Makefile b/Makefile
index df536ff..5847f81 100644
--- a/Makefile
+++ b/Makefile
@@ -32,11 +32,6 @@ pms.html: $(LATEXFILES) pms.bbl vc.tex
 	@# work around irregularity in how links to longtables are
 	@# formatted in the List of Tables
 	LC_ALL=C sed -i -e '/<span class="lotToc" >&#x00A0;/{N;N;s/\(&#x00A0;<a \nhref="[^"]\+">\)\([0-9A-Z.]\+\)[ \n]/\2\1/}' pms.html
-	@# indent algorithms properly, and avoid adding extra vertical
-	@# space in Konqueror
-	LC_ALL=C sed -i -e 's/span style="width:/span style="display:-moz-inline-box;display:inline-block;height:1px;width:/' pms.html
-	@# align algorithm line numbers properly
-	LC_ALL=C sed -i -e '/<span class="ALCitem">/{N;s/\n\(class="[^"]\+">\)\([0-9]:<\/span>\)/\1\&#x2007;\2/}' pms.html
 	@# fix broken span on title page
 	LC_ALL=C sed -i -e '/<\/span><span $$/{N;s/<\/span><span [^>]*>\(&[a-z]uml;\)/\1/}' pms.html
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
  2017-02-11  7:58 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2017-04-10 18:12 ` Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     422fb36b981a1f352369534505340441a73cd62a
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Feb  9 09:38:32 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Feb  9 09:38:32 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=422fb36b

Makefile: Update sed command to remove span spam in tex4ht output.

 Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index c8a9b75..9ad1c21 100644
--- a/Makefile
+++ b/Makefile
@@ -32,8 +32,8 @@ pms.html: $(LATEXFILES) pms.bbl vc.tex
 	@# work around irregularity in how links to longtables are
 	@# formatted in the List of Tables
 	LC_ALL=C sed -i -e '/<span class="lotToc" >&#x00A0;/{N;N;s/\(&#x00A0;<a \nhref="[^"]\+">\)\([0-9A-Z.]\+\)[ \n]/\2\1/}' $@
-	@# fix broken span on title page
-	LC_ALL=C sed -i -e '/<\/span><span $$/{N;s/<\/span><span [^>]*>\(&[a-z]uml;\)/\1/}' $@
+	@# remove redundant span elements
+	LC_ALL=C sed -i -e ':x;/<span\(\s\+[^>]*\)\?$$/{N;bx;};:y;s/\(<span\s\+[^>]*>\)\([^<]*\)<\/span>\1/\1\2/;ty' $@
 
 pms.bbl: pms.bib pms.tex vc.tex eapi-cheatsheet.pdf
 	latex pms


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
  2017-02-11  7:58 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2017-04-10 18:12 ` Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     6d2b924cb02d447de5e764d3f9028e8e9548a65d
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Feb  9 09:35:51 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Feb  9 09:35:51 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=6d2b924c

Makefile: Use $@ rather than explicit target name.

 Makefile | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 5847f81..c8a9b75 100644
--- a/Makefile
+++ b/Makefile
@@ -26,14 +26,14 @@ pms.html: $(LATEXFILES) pms.bbl vc.tex
 	mk4ht xhlatex pms xhtml,fn-in
 	@# some www servers ignore meta tags, resulting in a wrong charset.
 	@# therefore recode the very few non-ascii characters
-	recode -d l1..h3 pms.html
+	recode -d l1..h3 $@
 	@# declare encoding as utf-8, although it is pure ascii
-	LC_ALL=C sed -i -e '/<?xml\|<meta/s/iso-8859-1/utf-8/' pms.html
+	LC_ALL=C sed -i -e '/<?xml\|<meta/s/iso-8859-1/utf-8/' $@
 	@# work around irregularity in how links to longtables are
 	@# formatted in the List of Tables
-	LC_ALL=C sed -i -e '/<span class="lotToc" >&#x00A0;/{N;N;s/\(&#x00A0;<a \nhref="[^"]\+">\)\([0-9A-Z.]\+\)[ \n]/\2\1/}' pms.html
+	LC_ALL=C sed -i -e '/<span class="lotToc" >&#x00A0;/{N;N;s/\(&#x00A0;<a \nhref="[^"]\+">\)\([0-9A-Z.]\+\)[ \n]/\2\1/}' $@
 	@# fix broken span on title page
-	LC_ALL=C sed -i -e '/<\/span><span $$/{N;s/<\/span><span [^>]*>\(&[a-z]uml;\)/\1/}' pms.html
+	LC_ALL=C sed -i -e '/<\/span><span $$/{N;s/<\/span><span [^>]*>\(&[a-z]uml;\)/\1/}' $@
 
 pms.bbl: pms.bib pms.tex vc.tex eapi-cheatsheet.pdf
 	latex pms


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     f9faa16a59659e176b2acf435bf5ec174c39b3ed
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 23 16:00:09 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Mar 23 16:00:09 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f9faa16a

A is legal in pkg_nofetch.

It is quite common and useful for existing ebuilds to access the A
variable in pkg_nofetch. Also package managers define the variable
there. Update the spec accordingly.

The same applies to AA (which is deprecated, but there is no reason
why its scope should be different from A).

Thanks to Michał Górny for pointing this out.

 ebuild-env-vars.tex | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index a3766a2..d8ccd6c 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -67,7 +67,7 @@ variable.
     Yes &
     Package version and revision (if any), for example \t{7.0.174} or \t{7.0.174-r1}. \\
 \t{A} &
-    \t{src\_*} &
+    \t{src\_*}, \t{pkg\_nofetch} &
     Yes &
     All source files available for the package, whitespace separated with no leading or trailing
     whitespace, and in the order in which the item first appears in a matched component of
@@ -77,7 +77,7 @@ variable.
     assume that the package manager sets it in the EAPIs supporting it. For example, a few
     configure scripts use this variable to find the \t{aalib} package; ebuilds calling such
     configure scripts must thus work around this.} &
-    \t{src\_*} &
+    Ditto &
     Yes &
     \featurelabel{aa} All source files that could be available for the package, including any that
     are disabled in \t{A} because of USE conditionals. The value is calculated from the base names


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     dc6afee300913559311996bb59efb1ba32c35dd6
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Mar 28 00:55:21 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Mar 28 00:55:21 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=dc6afee3

Makefile: Move cleanup of aux files into separate rule.

 Makefile | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/Makefile b/Makefile
index 70d1883..bc1ee51 100644
--- a/Makefile
+++ b/Makefile
@@ -8,11 +8,13 @@ clean :
 maintainer-clean: clean
 	rm -f vc.tex
 
-LATEXFILES := $(filter-out vc.tex,$(wildcard *.tex)) pms.cls
-
-pms.pdf: $(LATEXFILES) pms.bbl vc.tex eapi-cheatsheet.pdf
+aux-clean:
 	@# latex chokes on aux files produced by tex4ht, so remove them
 	if grep -q rEfLiNK pms.aux 2>/dev/null; then rm -f *.aux; fi
+
+LATEXFILES := $(filter-out vc.tex,$(wildcard *.tex)) pms.cls
+
+pms.pdf: $(LATEXFILES) pms.bbl vc.tex eapi-cheatsheet.pdf aux-clean
 	pdflatex pms
 	pdflatex pms
 	pdflatex eapi-cheatsheet
@@ -39,10 +41,10 @@ pms.bbl: pms.bib pms.tex vc.tex eapi-cheatsheet.pdf
 	latex pms
 	bibtex pms
 
-eapi-cheatsheet.pdf: vc.tex
+eapi-cheatsheet.pdf: vc.tex aux-clean
 	pdflatex eapi-cheatsheet
 
-eapi-cheatsheet-nocombine.pdf: vc.tex
+eapi-cheatsheet-nocombine.pdf: vc.tex aux-clean
 	@# cheat sheet with separate pages, for proofreading
 	pdflatex -jobname eapi-cheatsheet-nocombine \
 	  '\PassOptionsToClass{nocombine}{leaflet}\input{eapi-cheatsheet.tex}'
@@ -50,7 +52,7 @@ eapi-cheatsheet-nocombine.pdf: vc.tex
 vc.tex: $(LATEXFILES) vc vc-git.awk
 	/bin/sh ./vc
 
-pms.dvi: $(LATEXFILES) pms.bbl vc.tex
+pms.dvi: $(LATEXFILES) pms.bbl vc.tex aux-clean
 	latex pms
 	latex pms
 	latex pms
@@ -67,4 +69,4 @@ upload:
 
 .default: all
 
-.phony: clean maintainer-clean dist upload
+.phony: clean maintainer-clean aux-clean dist upload


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     3d0f218bc1e6a142af1f671a94a38c5d00eeec31
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Mar  4 08:53:48 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Mar  4 08:53:48 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=3d0f218b

Makefile: Add vc as prerequisite for vc.tex.

 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 9ad1c21..70d1883 100644
--- a/Makefile
+++ b/Makefile
@@ -47,7 +47,7 @@ eapi-cheatsheet-nocombine.pdf: vc.tex
 	pdflatex -jobname eapi-cheatsheet-nocombine \
 	  '\PassOptionsToClass{nocombine}{leaflet}\input{eapi-cheatsheet.tex}'
 
-vc.tex: $(LATEXFILES) vc-git.awk
+vc.tex: $(LATEXFILES) vc vc-git.awk
 	/bin/sh ./vc
 
 pms.dvi: $(LATEXFILES) pms.bbl vc.tex


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     1bf9b2283fa48c6fe6a2bd74e24522f2d64175fe
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Mar  4 08:59:57 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Mar  5 21:04:14 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=1bf9b228

Update copyright years.

 credits.tex | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/credits.tex b/credits.tex
index 0299a55..6c54e60 100644
--- a/credits.tex
+++ b/credits.tex
@@ -10,7 +10,7 @@ proof-reading and suggestions for fixes and/or clarification.
 
 \section*{Copyright and Licence}
 
-The bulk of this document is \textcopyright{} 2007--2016 Stephen Bennett, Christian Faulhammer,
+The bulk of this document is \textcopyright{} 2007--2017 Stephen Bennett, Christian Faulhammer,
 Ciaran McCreesh and Ulrich Müller. Contributions are owned by their respective authors, and may
 have been changed substantially before inclusion.
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     b18166a8482c01a365b11efa12d72282b88e4d86
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 18 07:30:40 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Mar 18 08:15:13 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=b18166a8

ebuild-env-vars: Require DISTDIR & FILESDIR to be consistent

Require both DISTDIR and FILESDIR variables to have consistent value
across phases. We need to guarantee that the value used in global scope
to propagate PATCHES array will be still valid in src_prepare().
Furthermore, as Ulrich Müller points out that PMS requires ebuilds to
recalculate any value derived from inconsistent variables, therefore
colliding with the global-scope assignment.

 ebuild-env-vars.tex | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 6b74d90..262bcf9 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -86,14 +86,14 @@ variable.
 \t{FILESDIR} &
     \t{src\_*}, global~scope\footnote{Not necessarily present when installing from a binary package.
     Ebuilds must not access the directory in global scope.} &
-    No &
+    Yes &
     The full path to a directory where the files from the package's files directory (used for
     small support files or patches) are available. See section~\ref{sec:package-dirs}. May or may
     not exist; if a repository provides no support files for the package in question then an ebuild
     must be prepared for the situation where \t{FILESDIR} points to a non-existent directory. \\
 \t{DISTDIR} &
     Ditto &
-    No &
+    Yes &
     The full path to the directory in which the files in the \t{A} variable are stored. \\
 \t{PORTDIR} &
     \t{src\_*} &


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
  2017-03-12 15:33 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2017-04-10 18:12 ` Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     01c2758ef0a91b81267fed85cc16d009c309bc9c
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Mar  4 08:56:36 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Mar  5 21:04:11 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=01c2758e

ebuild-env-vars.tex: PF has the same consistency behaviour as P.

PF may change if the package is updated, because the package name may
change.

 ebuild-env-vars.tex | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 469f0cd..99e13cf 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -42,6 +42,10 @@ variable.
     All &
     No\footnote{May change if a package has been updated (see~\ref{sec:updates-dir}).} &
     Package name and version, without the revision part. For example, \t{vim-7.0.174}. \\
+\t{PF} &
+    All &
+    Ditto &
+    Package name, version, and revision (if any), for example \t{vim-7.0.174-r1}. \\
 \t{PN} &
     All &
     Ditto &
@@ -62,10 +66,6 @@ variable.
     All &
     Yes &
     Package version and revision (if any), for example \t{7.0.174} or \t{7.0.174-r1}. \\
-\t{PF} &
-    All &
-    Yes &
-    Package name, version, and revision (if any), for example \t{vim-7.0.174-r1}. \\
 \t{A} &
     \t{src\_*} &
     Yes &


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
  2017-03-29  5:12 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2017-04-10 18:12 ` Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     4195eaae6e1e488477d97849fe3c2bf65f976258
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Mar 28 00:43:04 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Mar 28 00:43:04 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=4195eaae

Remove contradiction in historical curiosities chapter.

Be more specific in the introductory paragraph so that it doesn't
contradict the subsequent sections. Delete redundant sentence.

 appendices.tex | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/appendices.tex b/appendices.tex
index 16edce2..99429ec 100644
--- a/appendices.tex
+++ b/appendices.tex
@@ -26,9 +26,9 @@ been abused in the past.
 
 \chapter{Historical Curiosities}
 
-The items described in this chapter are included for information only. They were deprecated or
-abandoned long before \t{EAPI} was introduced. Ebuilds must not use these features, and package
-managers should not be changed to support them.
+The items described in this chapter are included for information only. Unless otherwise noted,
+they were deprecated or abandoned long before \t{EAPI} was introduced. Ebuilds must not use these
+features, and package managers should not be changed to support them.
 
 \section{If-else use blocks}
 
@@ -36,8 +36,6 @@ Historically, Portage supported if-else use conditionals, as shown by
 listing~\ref{lst:if-else-use-listing}. The block before the colon would be taken if the condition
 was met, and the block after the colon would be taken if the condition was not met.
 
-This feature was deprecated and removed from the tree long before the introduction of \t{EAPI}.
-
 \begin{listing}
 \caption{If-else use blocks} \label{lst:if-else-use-listing}
 \begin{verbatim}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
  2017-03-18  7:23 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2017-04-10 18:12 ` Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     f017d65aa75ee77857f01e47a441d2d4c9fb37c0
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 17 08:53:31 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Mar 17 08:53:31 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f017d65a

pms.cls: Drop unused color.sty.

 pms.cls | 1 -
 1 file changed, 1 deletion(-)

diff --git a/pms.cls b/pms.cls
index 57d7356..624d7c1 100644
--- a/pms.cls
+++ b/pms.cls
@@ -26,7 +26,6 @@
     typearea,	% Set page layout
     inputenc,	% Allow input methods apart from ASCII
     booktabs,	% Nicer formatting of tables
-    color,	% Support more than black&white
     ifthen,	% Comfortable conditional routines
     longtable,	% Extend tables over more than one page
     array,	% Extended tabular environments


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
  2017-04-10 18:11 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2017-04-10 18:12 ` Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     251bdc7a835b9a584e19d757191c24aa9bec9710
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 10 16:00:48 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 16:00:48 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=251bdc7a

In captions, use teletype font where appropriate.

 ebuild-functions.tex | 16 ++++++++--------
 ebuild-vars.tex      |  2 +-
 eclasses.tex         |  2 +-
 pkg-mgr-commands.tex | 14 +++++++-------
 profiles.tex         |  2 +-
 5 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index e808a6a..a744ae1 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -106,7 +106,7 @@ The initial working directory must be \t{WORKDIR}, and the default implementatio
 the ebuild lacks the \t{src\_unpack} function shall behave as:
 
 \begin{listing}[H]
-\caption{src\_unpack}
+\caption{\t{src\_unpack}}
 \begin{verbatim}
 src_unpack() {
     if [[ -n ${A} ]]; then
@@ -130,7 +130,7 @@ section~\ref{sec:s-to-workdir-fallback}.
 as:
 
 \begin{listing}[H]
-\caption{src\_prepare, format~6}
+\caption{\t{src\_prepare}, format~6}
 \begin{verbatim}
 src_prepare() {
     if declare -p PATCHES | grep -q "^declare -a "; then
@@ -174,7 +174,7 @@ The \t{src\_configure} function configures the package's build environment. The
 implementation used when the ebuild lacks the \t{src\_configure} function shall behave as:
 
 \begin{listing}[H]
-\caption{src\_configure}
+\caption{\t{src\_configure}}
 \begin{verbatim}
 src_configure() {
     if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then
@@ -211,7 +211,7 @@ section~\ref{sec:s-to-workdir-fallback}.
 as:
 
 \begin{listing}[H]
-\caption{src\_compile, format~0}
+\caption{\t{src\_compile}, format~0}
 \begin{verbatim}
 src_compile() {
     if [[ -x ./configure ]]; then
@@ -229,7 +229,7 @@ src_compile() {
 as:
 
 \begin{listing}[H]
-\caption{src\_compile, format~1}
+\caption{\t{src\_compile}, format~1}
 \begin{verbatim}
 src_compile() {
     if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then
@@ -247,7 +247,7 @@ src_compile() {
 as:
 
 \begin{listing}[H]
-\caption{src\_compile, format~2}
+\caption{\t{src\_compile}, format~2}
 \begin{verbatim}
 src_compile() {
     if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then
@@ -316,7 +316,7 @@ section~\ref{sec:s-to-workdir-fallback}.
 as:
 
 \begin{listing}[H]
-\caption{src\_install, format~4}
+\caption{\t{src\_install}, format~4}
 \begin{verbatim}
 src_install() {
     if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then
@@ -343,7 +343,7 @@ src_install() {
 as:
 
 \begin{listing}[H]
-\caption{src\_install, format~6}
+\caption{\t{src\_install}, format~6}
 \begin{verbatim}
 src_install() {
     if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 6c5a396..ecb50df 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -177,7 +177,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
 \t{RDEPEND}.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} Default}
+\begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} default}
     \label{tab:rdepend-depend-table}
     \begin{tabular}{ll}
       \toprule

diff --git a/eclasses.tex b/eclasses.tex
index 0f172f7..51c9a83 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -49,7 +49,7 @@ call the eclass-defined version from it. The use of it is best illustrated by an
 given in listing~\ref{lst:export-functions} and is a snippet from a hypothetical \t{foo.eclass}.
 
 \begin{listing}
-\caption{EXPORT\_FUNCTIONS example: foo.eclass} \label{lst:export-functions}
+\caption{\t{EXPORT\_FUNCTIONS} example: \t{foo.eclass}} \label{lst:export-functions}
 \begin{verbatim}
 foo_src_compile()
 {

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 0847e4c..929cb43 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -26,7 +26,7 @@ The following commands affect this behaviour:
 \end{description}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPI Command Failure Behaviour}
+\begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
     \begin{tabular}{lll}
       \toprule
@@ -166,7 +166,7 @@ Ebuilds must not run any of these commands once the current phase function has r
 \end{description}
 
 \begin{algorithm}
-\caption{eapply logic} \label{alg:eapply}
+\caption{\t{eapply} logic} \label{alg:eapply}
 \begin{algorithmic}[1]
 \IF{any parameter is equal to \t{"-{}-"}}
     \STATE collect all parameters before the first \t{"-{}-"} in the \t{options} array
@@ -283,7 +283,7 @@ current phase function has returned.
     \t{nonfatal}, in which case it must return non-zero exit status.
 
 \begin{algorithm}
-\caption{econf -{}-libdir logic} \label{alg:econf-libdir}
+\caption{\t{econf -{}-libdir} logic} \label{alg:econf-libdir}
 \begin{algorithmic}[1]
 \STATE let prefix=\$\{EPREFIX\}/usr
 \IF{the caller specified -{}-prefix=\$p}
@@ -323,7 +323,7 @@ current phase function has returned.
     Algorithm~\ref{alg:ebuild-libdir}.
 
 \begin{listing}[H]
-\caption{einstall command} \label{lst:einstall}
+\caption{\t{einstall} command} \label{lst:einstall}
 \begin{verbatim}
 emake \
    prefix="${ED}"/usr \
@@ -757,7 +757,7 @@ table~\ref{tab:use-list-strictness}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPI Behaviour for Use Queries not in IUSE\_EFFECTIVE}
+\begin{centertable}{EAPI behaviour for use queries not in \t{IUSE\_EFFECTIVE}}
     \label{tab:use-list-strictness}
     \begin{tabular}{ll}
       \toprule
@@ -928,7 +928,7 @@ has returned.
 \end{description}
 
 \begin{algorithm}
-\caption{einstalldocs logic} \label{alg:einstalldocs}
+\caption{\t{einstalldocs} logic} \label{alg:einstalldocs}
 \begin{algorithmic}[1]
 \STATE save the value of the install directory for \t{dodoc}
 \STATE set the install directory for \t{dodoc} to \t{/usr/share/doc/\$\{PF\}}
@@ -956,7 +956,7 @@ has returned.
 \end{algorithm}
 
 \begin{algorithm}
-\caption{get\_libdir logic} \label{alg:get-libdir}
+\caption{\t{get\_libdir} logic} \label{alg:get-libdir}
 \begin{algorithmic}[1]
 \STATE let libdir=lib
 \IF{the ABI environment variable is set}

diff --git a/profiles.tex b/profiles.tex
index 35f85b3..ff791ac 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -141,7 +141,7 @@ The precise manner in which the eight files interact is less simple, and is best
 of the algorithm used to determine whether a flag is masked for a given package version. This is
 described in Algorithm~\ref{alg:use-masking}.
 \begin{algorithm}
-\caption{USE masking logic} \label{alg:use-masking}
+\caption{\t{USE} masking logic} \label{alg:use-masking}
 \begin{algorithmic}[1]
 \STATE let masked = false
 \FOR{each profile in the inheritance tree, depth first}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
  2017-04-09  8:47 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2017-04-10 18:12 ` Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     38cda9b98e091514df60c0901306db6d30ceeb8e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Apr  6 10:29:52 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Apr  6 10:29:52 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=38cda9b9

All EAPIs supporting controllable compression are also prefix aware.

Thanks to Michał Górny for pointing this out.

 pkg-mgr-commands.tex | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 0323904..0847e4c 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -660,9 +660,8 @@ has returned.
 
 \featurelabel{docompress} In EAPIs listed in table~\ref{tab:compression-table} as supporting
 controllable compression, the package manager may optionally compress a subset of the files under
-the \t{ED} directory in offset-prefix aware EAPIs or the \t{D} directory in offset-prefix agnostic
-EAPIs. To control which directories may or may not be compressed, the package manager shall
-maintain two lists:
+the \t{ED} directory. To control which directories may or may not be compressed, the package manager
+shall maintain two lists:
 
 \begin{compactitem}
 \item An inclusion list, which initially contains \t{/usr/share/doc}, \t{/usr/share/info} and
@@ -672,8 +671,7 @@ maintain two lists:
 
 The optional compression shall be carried out after \t{src\_install} has completed, and before the
 execution of any subsequent phase function. For each item in the inclusion list, pretend it has the
-value of the \t{ED} variable in offset-prefix aware EAPIs or the \t{D}
-variable in offset-prefix agnostic EAPIs prepended, then:
+value of the \t{ED} variable prepended, then:
 
 \begin{compactitem}
 \item If it is a directory, act as if every file or directory immediately under this directory
@@ -683,8 +681,7 @@ variable in offset-prefix agnostic EAPIs prepended, then:
 \end{compactitem}
 
 Whether an item is to be excluded is determined as follows: For each item in the exclusion list,
-pretend it has the value of the \t{ED} variable in offset-prefix aware EAPIs or the \t{D} variable in
-offset-prefix agnostic EAPIs prepended, then:
+pretend it has the value of the \t{ED} variable prepended, then:
 
 \begin{compactitem}
 \item If it is a directory, act as if every file or directory immediately under this directory


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
  2017-02-23  7:46 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2017-04-10 18:12 ` Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     1dd04665efb56e67ee889cc0000ea38974790023
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 20 08:49:14 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Feb 20 08:49:14 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=1dd04665

pkg-mgr-commands.tex: LZMA Utils replaced by XZ Utils.

 pkg-mgr-commands.tex | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c370a12..0323904 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -864,9 +864,9 @@ has returned.
     \item deb packages (\t{*.deb}). Ebuilds must ensure that the deb2targz program is installed on
     those platforms where the GNU binutils ar program is not available and the installed ar program is
     incompatible with GNU archives. Otherwise, ebuilds must ensure that GNU binutils is installed.
-    \item lzma-compressed files (\t{*.lzma}). Ebuilds must ensure that LZMA Utils is installed.
-    \item lzma-compressed tar files (\t{*.tar.lzma}). Ebuilds must ensure that LZMA Utils and
-        GNU tar are installed.
+    \item lzma-compressed files (\t{*.lzma}). Ebuilds must ensure that XZ Utils is installed.
+    \item lzma-compressed tar files (\t{*.tar.lzma}). Ebuilds must ensure that XZ Utils and GNU tar
+        are installed.
     \item xz-compressed files (\t{*.xz}). Ebuilds must ensure that XZ Utils is installed. Only for
         EAPIs listed in table~\ref{tab:unpack-extensions-table} as supporting \t{.xz}.
     \item xz-compressed tar files (\t{*.tar.xz, *.txz}). Ebuilds must ensure that XZ Utils and


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
  2017-03-20 19:28 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2017-04-10 18:12 ` Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     00dfb42f757b356ed71693b962387dda0bc2f89a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 16 20:41:45 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Mar 18 07:27:39 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=00dfb42f

ebuild-env-vars: Allow FILESDIR to be a shadow directory

Rephrase the wording for FILESDIR to indicate that it does not need to
be the original files/ directory in the repository. It just needs to
be some directory containing the files from that directory.

 ebuild-env-vars.tex | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 99e13cf..6b74d90 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -87,10 +87,10 @@ variable.
     \t{src\_*}, global~scope\footnote{Not necessarily present when installing from a binary package.
     Ebuilds must not access the directory in global scope.} &
     No &
-    The full path to the package's files directory, used for small support files or patches.
-    See section~\ref{sec:package-dirs}. May or may not exist; if a repository provides no support
-    files for the package in question then an ebuild must be prepared for the situation where
-    \t{FILESDIR} points to a non-existent directory. \\
+    The full path to a directory where the files from the package's files directory (used for
+    small support files or patches) are available. See section~\ref{sec:package-dirs}. May or may
+    not exist; if a repository provides no support files for the package in question then an ebuild
+    must be prepared for the situation where \t{FILESDIR} points to a non-existent directory. \\
 \t{DISTDIR} &
     Ditto &
     No &


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     65d38361a953c0b6da4cc192d8727b0d6f1c64cc
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 18 14:18:25 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Mar 18 15:05:59 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=65d38361

WORKDIR and S have the same scope as FILESDIR and DISTDIR.

Both WORKDIR and S are defined in global scope, but ebuilds must not
access the actual directories. So the FILESDIR footnote applies to
them, too. Rearrange the table accordingly.

Also small change of wording ("in which" -> "where") to prevent an
awkward page break.

 ebuild-env-vars.tex | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 262bcf9..a3766a2 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -95,6 +95,18 @@ variable.
     Ditto &
     Yes &
     The full path to the directory in which the files in the \t{A} variable are stored. \\
+\t{WORKDIR} &
+    Ditto &
+    Yes &
+    The full path to the ebuild's working directory, where all build data should be contained.%
+    \label{env-var-WORKDIR} \\
+\t{S} &
+    Ditto &
+    Yes &
+    The full path to the temporary build directory, used by \t{src\_compile}, \t{src\_install} etc.
+    Defaults to \t{\$\{WORKDIR\}/\$\{P\}}. May be modified by ebuilds. If \t{S} is assigned in the
+    global scope of an ebuild, then the restrictions of section~\ref{sec:ebuild-env-state} for
+    global variables apply. \\
 \t{PORTDIR} &
     \t{src\_*} &
     No &
@@ -190,18 +202,6 @@ variable.
     was executed by the package manager. May be unset or any single word that is not any of the
     above when the ebuild is being sourced for other (e.\,g.\ metadata or QA) purposes. Only for
     EAPIs listed in table~\ref{tab:added-env-vars-table} as supporting \t{EBUILD\_PHASE\_FUNC}. \\
-\t{WORKDIR} &
-    \t{src\_*}, global~scope &
-    Yes &
-    The full path to the ebuild's working directory, in which all build data should be
-    contained. \label{env-var-WORKDIR} \\
-\t{S} &
-    \t{src\_*} &
-    Yes &
-    The full path to the temporary build directory, used by \t{src\_compile}, \t{src\_install} etc.
-    Defaults to \t{\$\{WORKDIR\}/\$\{P\}}. May be modified by ebuilds. If \t{S} is assigned in the
-    global scope of an ebuild, then the restrictions of section~\ref{sec:ebuild-env-state} for
-    global variables apply. \\
 \t{KV} &
     All &
     Yes &


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     e6238570c7d3d0bbc795e048944ac8c969fe88f8
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 29 23:01:54 2015 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 17:45:49 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e6238570

EAPI 7 supports directories for profile files.

Bug: 282296

 eapi-differences.tex |  5 +++++
 profiles.tex         | 38 +++++++++++++++++++++++++++++++-------
 2 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9219ce9..728f353 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -44,6 +44,9 @@ of this document for a complete table of previous EAPIs.
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
     No & No & No & No & Yes \\
 
+Profile files as directories & \compactfeatureref{profile-file-dirs} &
+    No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
     No & No & Yes & Yes & Yes \\
 
@@ -377,6 +380,8 @@ EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
 \item \t{profiles/package.mask} can be a directory, \featureref{package-mask-dir}.
+\item \t{package.mask}, \t{package.use}, \t{use.*} and \t{package.use.*} in a profile can be
+    directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/profiles.tex b/profiles.tex
index 943d7ec..b903e61 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -69,6 +69,27 @@ parent profile's list is taken, and the current profile's list appended. If any
 hyphen, then any lines previous to it whose contents are equal to the remainder of that line are
 removed from the list. Once again, blank lines and those beginning with a \# are discarded.
 
+\featurelabel{profile-file-dirs} In EAPIs listed in table~\ref{tab:profile-file-dirs} as supporting
+directories for profile files, any of the files \t{package.mask}, \t{package.use}, \t{use.*} and
+\t{package.use.*} mentioned below can be a directory instead of a regular file. Files contained
+in that directory, unless their name begins with a dot, will be concatenated in order of their
+filename in the POSIX locale and the result will be processed as if it were a single file.
+Any subdirectories will be ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting directories for profile files}
+    \label{tab:profile-file-dirs}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{packages}
 The \t{packages} file is used to define the `system set' for this profile.
 After the above rules for inheritance and comments are applied, its lines must take one of two
@@ -84,7 +105,8 @@ but is mentioned here for completeness.
 \subsection{package.mask}
 \t{package.mask} is used to prevent packages from being installed on a given profile. Each line
 contains one package dependency specification; anything matching this specification will not be
-installed unless unmasked by the user's configuration.
+installed unless unmasked by the user's configuration. In some EAPIs, \t{package.mask} can be a
+directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 Note that the \t{-spec} syntax can be used to remove a mask in a parent profile, but not
 necessarily a global mask (from \t{profiles/package.mask}, section~\ref{profiles-package.mask}).
@@ -99,17 +121,19 @@ has severe adverse effects on USE-based and slot-based dependencies, its use is
 and package manager support must be regarded as purely optional.
 
 \subsection{package.use}
-The \t{package.use} file may be used by the package manager to override the default USE flags specified
-by \t{make.defaults} on a per package basis.  The format is to have a package dependency specification,
-and then a space delimited list of USE flags to enable.  A USE flag in the form of \t{-flag} indicates
-that the package should have the USE flag disabled.  The package dependency specification is limited to
-the forms defined by the directory's EAPI.
+The \t{package.use} file may be used by the package manager to override the default USE flags
+specified by \t{make.defaults} on a per package basis. The format is to have a package dependency
+specification, and then a space delimited list of USE flags to enable. A USE flag in the form of
+\t{-flag} indicates that the package should have the USE flag disabled. The package dependency
+specification is limited to the forms defined by the directory's EAPI. In some EAPIs,
+\t{package.use} can be a directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 \subsection{USE masking and forcing}
 This section covers the eight files \t{use.mask}, \t{use.force}, \t{use.stable.mask},
 \t{use.stable.force}, \t{package.use.mask}, \t{package.use.force}, \t{package.use.stable.mask},
 and \t{package.use.\allowbreak stable.force}. They are described together because they interact in
-a non-trivial manner.
+a non-trivial manner. In some EAPIs, these files can be directories instead of regular files as per
+section~\ref{sec:line-stacking}.
 
 Simply speaking, \t{use.mask} and \t{use.force} are used to say that a given USE flag must never or
 always, respectively, be enabled when using this profile. \t{package.use.mask} and


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     48002706e4455e9bdc8031aa3e7a9a5fac81a003
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 15 17:19:43 2015 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 17:45:49 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=48002706

EAPI feature table: Consolidate EAPIs 0 to 3.

With the addition of EAPI 7, the table was too wide again.

 eapi-differences.tex | 143 +++++++++++++++++++++++++--------------------------
 1 file changed, 70 insertions(+), 73 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index da6507a..649b5a6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,22 +1,22 @@
 \chapter{Feature Availability by EAPI}
 
 \note This chapter is informative and for convenience only. Refer to the main text for specifics.
-For lack of space, EAPIs 0, 1, and~2 have been consolidated into a single column in the table
+For lack of space, EAPIs 0, 1, 2, and~3 have been consolidated into a single column in the table
 below; entries marked with an asterisk differ between these EAPIs. See the 2012-09-20 edition
 of this document for a complete table of previous EAPIs.
+% 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
 
 \ChangeWhenAddingAnEAPI{7}
 \begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\b{Feature}} &
 \multicolumn{1}{c}{\b{Reference}} &
-\multicolumn{6}{c}{\b{EAPIs}} \\
+\multicolumn{5}{c}{\b{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2} &
-\multicolumn{1}{c}{3} &
+\multicolumn{1}{c}{0, 1, 2, 3} &
 \multicolumn{1}{c}{4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
@@ -26,11 +26,10 @@ of this document for a complete table of previous EAPIs.
 \midrule
 \multicolumn{1}{c}{\b{Feature}} &
 \multicolumn{1}{c}{\b{Reference}} &
-\multicolumn{6}{c}{\b{EAPIs}} \\
+\multicolumn{5}{c}{\b{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2} &
-\multicolumn{1}{c}{3} &
+\multicolumn{1}{c}{0, 1, 2, 3} &
 \multicolumn{1}{c}{4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
@@ -43,79 +42,77 @@ of this document for a complete table of previous EAPIs.
 \endlastfoot
 
 Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 3.2 & 3.2 & 4.2 & 4.2 \\
+    3.2 & 3.2 & 3.2 & 4.2 & 4.2 \\
 
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{REQUIRED\_USE} & \compactfeatureref{required-use} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{PROPERTIES} & \compactfeatureref{properties} &
-    Optionally & Optionally & Yes & Yes & Yes & Yes \\
+    Optionally & Yes & Yes & Yes & Yes \\
 
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    Yes & Yes & No & No & No & No \\
+    Yes & No & No & No & No \\
 
 \t{DEFINED\_PHASES} & \compactfeatureref{defined-phases} &
-    Optionally & Optionally & Yes & Yes & Yes & Yes \\
+    Optionally & Yes & Yes & Yes & Yes \\
 
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{SRC\_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named & Named & Named and Operator & Named and Operator & Named and Operator \\
+    * & Named & Named and Operator & Named and Operator & Named and Operator \\
 
 Sub-slots & \compactfeatureref{sub-slot} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
-    * & 2-style & 4-style & 4-style & 4-style & 4-style \\
+    * & 4-style & 4-style & 4-style & 4-style \\
 
 \t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak & Weak \\
+    * & Weak & Weak & Weak & Weak \\
 
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong & Strong \\
+    * & Strong & Strong & Strong & Strong \\
 
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    Always & Always & Conditional & Conditional & Conditional & Conditional \\
+    Always & Conditional & Conditional & Conditional & Conditional \\
 
 \t{pkg\_pretend} & \compactfeatureref{pkg-pretend} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{src\_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{src\_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & no-op & no-op & 6 & 6 \\
+    * & no-op & no-op & 6 & 6 \\
 
 \t{src\_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{src\_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 & 2 \\
+    * & 2 & 2 & 2 & 2 \\
 
 Parallel tests & \compactfeatureref{parallel-tests} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{src\_install} style & \compactfeatureref{src-install} &
-    no-op & no-op & 4 & 4 & 6 & 6 \\
+    no-op & 4 & 4 & 6 & 6 \\
 
 \t{pkg\_info} & \compactfeatureref{pkg-info} &
-    Installed & Installed & Both & Both & Both & Both \\
+    Installed & Both & Both & Both & Both \\
 
 \t{default\_} phase functions & \compactfeatureref{default-phase-funcs} &
     * &
     \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
-        \t{src\_compile}, \t{src\_test} &
-    \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
         \t{src\_compile}, \t{src\_install}, \t{src\_test} &
     \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
         \t{src\_compile}, \t{src\_install}, \t{src\_test} &
@@ -125,127 +122,127 @@ Parallel tests & \compactfeatureref{parallel-tests} &
         \t{src\_compile}, \t{src\_install}, \t{src\_test} \\
 
 \t{AA} & \compactfeatureref{aa} &
-    Yes & Yes & No & No & No & No \\
+    Yes & No & No & No & No \\
 
 \t{KV} & \compactfeatureref{kv} &
-    Yes & Yes & No & No & No & No \\
+    Yes & No & No & No & No \\
 
 \t{EBUILD\_PHASE\_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{MERGE\_TYPE} & \compactfeatureref{merge-type} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Undefined & Undefined & Yes & Yes \\
+    Undefined & Undefined & Undefined & Yes & Yes \\
 
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{REPLACING\_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{REPLACED\_BY\_VERSION} & \compactfeatureref{replace-version-vars} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Undefined & Undefined & Yes & Yes & Yes \\
+    Undefined & Undefined & Yes & Yes & Yes \\
 
 Most utilities die & \compactfeatureref{die-on-failure} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned & Banned \\
+    Yes & Banned & Banned & Banned & Banned \\
 
 \t{dosed} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned & Banned \\
+    Yes & Banned & Banned & Banned & Banned \\
 
 \t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned \\
 
 Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{eapply} & \compactfeatureref{eapply} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{eapply\_user} & \compactfeatureref{eapply-user} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{econf} arguments & \compactfeatureref{econf-options} &
-    &  & disable dependency tracking &
+    & disable dependency tracking &
     disable dependency tracking, disable silent rules &
     disable dependency tracking, disable silent rules, docdir, htmldir &
     disable dependency tracking, disable silent rules, docdir, htmldir \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{doheader} & \compactfeatureref{doheader} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{doins} handles symlinks & \compactfeatureref{doins} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & No & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 Controllable compression & \compactfeatureref{docompress} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{docompress} & \compactfeatureref{docompress} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{use\_with} empty third arg & \compactfeatureref{use-with} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{usex} & \compactfeatureref{usex} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{in\_iuse} & \compactfeatureref{in-iuse} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{get\_libdir} & \compactfeatureref{get-libdir} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    Undefined & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \end{longtable}
 \end{landscape}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     8614d83ab0d6b8f33c20cf169951d6394efd32f0
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 30 21:25:26 2016 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 17:45:49 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=8614d83a

work in progress: package.provided

 profiles.tex | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/profiles.tex b/profiles.tex
index b903e61..72fa8a4 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -120,6 +120,20 @@ considered to be provided by the system regardless of whether it is actually ins
 has severe adverse effects on USE-based and slot-based dependencies, its use is strongly deprecated
 and package manager support must be regarded as purely optional.
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting \t{package.provided} in profiles}
+    \label{tab:removed-env-vars-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{package.provided}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & Yes \\
+      7                   & No  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{package.use}
 The \t{package.use} file may be used by the package manager to override the default USE flags
 specified by \t{make.defaults} on a per package basis. The format is to have a package dependency


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     f90b3c6a9ec8ecd4988c58e1c781307036e7949e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 10 16:10:36 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 16:10:36 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f90b3c6a

Improve positioning of tables and other floats.

No changes of text.

 names.tex            | 14 ++++++------
 pkg-mgr-commands.tex | 61 ++++++++++++++++++++++++++--------------------------
 2 files changed, 38 insertions(+), 37 deletions(-)

diff --git a/names.tex b/names.tex
index d26fed6..e4c3975 100644
--- a/names.tex
+++ b/names.tex
@@ -78,7 +78,7 @@ If a sub-algorithm returns a decision, then that is the result of the whole comp
 if it terminates without returning a decision, the process continues from the point
 from which it was invoked.
 
-\begin{algorithm}
+\begin{algorithm}[p]
 \caption{Version comparison top-level logic} \label{alg:version-comparison}
 \begin{algorithmic}[1]
     \STATE let $A$ and $B$ be the versions to be compared
@@ -90,7 +90,7 @@ from which it was invoked.
 \end{algorithmic}
 \end{algorithm}
 
-\begin{algorithm}
+\begin{algorithm}[p]
 \caption{Version comparison logic for numeric components} \label{alg:version-comparison-numeric}
 \begin{algorithmic}[1]
   \STATE define the notations $An_k$ and $Bn_k$ to mean the $k$\textsuperscript{th} numeric
@@ -113,7 +113,7 @@ from which it was invoked.
 \end{algorithmic}
 \end{algorithm}
 
-\begin{algorithm}
+\begin{algorithm}[p]
 \caption{Version comparison logic for each numeric component after the first}
 \label{alg:version-comparison-numeric-nonfirst}
 \begin{algorithmic}[1]
@@ -135,7 +135,7 @@ from which it was invoked.
 \end{algorithmic}
 \end{algorithm}
 
-\begin{algorithm}
+\begin{algorithm}[p]
 \caption{Version comparison logic for letter components} \label{alg:version-comparison-letter}
 \begin{algorithmic}[1]
   \STATE let $Al$ be the letter component of $A$ if any, otherwise the empty string
@@ -148,7 +148,7 @@ from which it was invoked.
 \end{algorithmic}
 \end{algorithm}
 
-\begin{algorithm}
+\begin{algorithm}[p]
 \caption{Version comparison logic for suffixes} \label{alg:version-comparison-suffix}
 \begin{algorithmic}[1]
   \STATE define the notations $As_k$ and $Bs_k$ to mean the $k$\textsuperscript{th} suffix of $A$
@@ -174,7 +174,7 @@ from which it was invoked.
 \end{algorithmic}
 \end{algorithm}
 
-\begin{algorithm}
+\begin{algorithm}[p]
 \caption{Version comparison logic for each suffix} \label{alg:version-comparison-suffix-each}
 \begin{algorithmic}[1]
   \IF{$As_i$ and $Bs_i$ are of the same type (\t{\_alpha} vs \t{\_beta} etc)}
@@ -194,7 +194,7 @@ from which it was invoked.
 \end{algorithmic}
 \end{algorithm}
 
-\begin{algorithm}
+\begin{algorithm}[p]
 \caption{Version comparison logic for revision components} \label{alg:version-comparison-revision}
 \begin{algorithmic}[1]
   \STATE let $Ar$ be the integer part of the revision component of $A$ if any, otherwise $\t{0}$

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 929cb43..389d8c0 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -92,6 +92,20 @@ to the host root instead of \t{ROOT}.
     matching version; otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{6}
+\begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*\_version} commands}
+    \label{tab:foo-version-host-root-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{*\_version} supports \t{-{}-host-root}?}} \\
+      \midrule
+      0, 1, 2, 3, 4     & No  \\
+      5, 6              & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Output commands}
 These commands display messages to the user. Unless otherwise stated, the entire argument list is
 used as a message, with backslash-escaped characters interpreted as for the \t{echo -e} command of
@@ -154,17 +168,6 @@ Ebuilds must not run any of these commands once the current phase function has r
     using \t{die}, unless run using \t{nonfatal}, in which case it returns non-zero exit status.
     Only available in EAPIs listed in table~\ref{tab:patch-commands} as supporting \t{eapply}.
 
-\item[eapply\_user] \featurelabel{eapply-user} Takes no arguments. Package managers supporting it
-    apply user-provided patches to the source tree in the current working directory. Exact behaviour
-    is implementation defined and beyond the scope of this specification. Package managers not
-    supporting it must implement the command as a no-op. Returns shell true (0) if patches applied
-    successfully, or if no patches were provided. Otherwise, aborts the build process, unless run
-    using \t{nonfatal}, in which case it returns non-zero exit status. Only available in EAPIs
-    listed in table~\ref{tab:patch-commands} as supporting \t{eapply\_user}. In EAPIs where it is
-    supported, \t{eapply\_user} must be called once in the \t{src\_prepare} phase. For any
-    subsequent calls, the command will do nothing and return~0.
-\end{description}
-
 \begin{algorithm}
 \caption{\t{eapply} logic} \label{alg:eapply}
 \begin{algorithmic}[1]
@@ -202,6 +205,17 @@ Ebuilds must not run any of these commands once the current phase function has r
 \end{algorithmic}
 \end{algorithm}
 
+\item[eapply\_user] \featurelabel{eapply-user} Takes no arguments. Package managers supporting it
+    apply user-provided patches to the source tree in the current working directory. Exact behaviour
+    is implementation defined and beyond the scope of this specification. Package managers not
+    supporting it must implement the command as a no-op. Returns shell true (0) if patches applied
+    successfully, or if no patches were provided. Otherwise, aborts the build process, unless run
+    using \t{nonfatal}, in which case it returns non-zero exit status. Only available in EAPIs
+    listed in table~\ref{tab:patch-commands} as supporting \t{eapply\_user}. In EAPIs where it is
+    supported, \t{eapply\_user} must be called once in the \t{src\_prepare} phase. For any
+    subsequent calls, the command will do nothing and return~0.
+\end{description}
+
 \ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{Patch commands for EAPIs}
     \label{tab:patch-commands}
@@ -607,20 +621,6 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*\_version} commands}
-    \label{tab:foo-version-host-root-table}
-    \begin{tabular}{ll}
-      \toprule
-      \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{*\_version} supports \t{-{}-host-root}?}} \\
-      \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
-      \bottomrule
-    \end{tabular}
-\end{centertable}
-
 \subsubsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees, all relative to \t{\$\{ED\}} in
 offset-prefix aware EAPIs and relative to \t{\$\{D\}} in offset-prefix agnostic EAPIs, used by the
@@ -922,11 +922,6 @@ has returned.
     returns a non-zero exit status, returns immediately with the same exit status. Only available
     in EAPIs listed in table~\ref{tab:misc-commands} as supporting \t{einstalldocs}.
 
-\item[get\_libdir] \featurelabel{get-libdir} Prints the libdir name obtained according to
-    Algorithm~\ref{alg:get-libdir}. Only available in EAPIs listed in table~\ref{tab:misc-commands}
-    as supporting \t{get\_libdir}.
-\end{description}
-
 \begin{algorithm}
 \caption{\t{einstalldocs} logic} \label{alg:einstalldocs}
 \begin{algorithmic}[1]
@@ -955,6 +950,10 @@ has returned.
 \end{algorithmic}
 \end{algorithm}
 
+\item[get\_libdir] \featurelabel{get-libdir} Prints the libdir name obtained according to
+    Algorithm~\ref{alg:get-libdir}. Only available in EAPIs listed in table~\ref{tab:misc-commands}
+    as supporting \t{get\_libdir}.
+
 \begin{algorithm}
 \caption{\t{get\_libdir} logic} \label{alg:get-libdir}
 \begin{algorithmic}[1]
@@ -969,6 +968,8 @@ has returned.
 \end{algorithmic}
 \end{algorithm}
 
+\end{description}
+
 \ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{Misc commands for EAPIs}
     \label{tab:misc-commands}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     a90a9c370dc769003174c90dd89790f744cf2968
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 15 17:20:13 2015 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 17:45:49 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=a90a9c37

EAPI 7: dohtml banned.

Bug: 520546

 eapi-differences.tex |  5 ++++-
 pkg-mgr-commands.tex | 16 ++++++++++------
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 649b5a6..f0a45bc 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -169,6 +169,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{einstall} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Banned & Banned \\
 
+\t{dohtml} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
     No & No & Yes & Yes & Yes \\
 
@@ -370,7 +373,7 @@ EAPI 6 is EAPI 5 with the following changes:
 EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
-\item None
+\item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index db63d6d..15faf58 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -49,18 +49,20 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{3}{c}{\textbf{Command banned?}} \\
+      \multicolumn{4}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
       \multicolumn{1}{c}{\textbf{\t{dosed}}} &
-      \multicolumn{1}{c}{\textbf{\t{einstall}}} \\
+      \multicolumn{1}{c}{\textbf{\t{einstall}}} &
+      \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  \\
-      4, 5              & Yes & Yes & No  \\
-      6, 7              & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  & No  \\
+      6                 & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -429,6 +431,8 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     offset-prefix.
 \end{description}
 
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
     Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
 
     It is undefined whether a failure shall occur if \t{-r} is not specified and a directory is


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     c1a525aa36b98b0f7b5015d7e1d6e35b61ab6e69
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 15 17:18:58 2015 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 17:45:49 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=c1a525aa

Add an EAPI 7 identical to EAPI 6.

 dependencies.tex        |  20 +++----
 eapi-differences.tex    | 151 ++++++++++++++++++++++++++----------------------
 eapis.tex               |   7 ++-
 ebuild-env-commands.tex |   4 +-
 ebuild-env-vars.tex     |  20 +++----
 ebuild-format.tex       |   4 +-
 ebuild-functions.tex    |  36 ++++++------
 ebuild-vars.tex         |  18 +++---
 merge.tex               |   4 +-
 pkg-mgr-commands.tex    |  70 +++++++++++-----------
 pms.tex                 |   4 +-
 profile-variables.tex   |   4 +-
 profiles.tex            |   4 +-
 13 files changed, 180 insertions(+), 166 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 9917bc4..1a0d56e 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -89,7 +89,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st
 
 In particular, note that whitespace is not optional.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{SRC\_URI} arrows}
     \label{tab:uri-arrows-table}
     \begin{tabular}{ll}
@@ -98,12 +98,12 @@ In particular, note that whitespace is not optional.
       \multicolumn{1}{c}{\textbf{Supports \t{SRC\_URI} arrows?}} \\
       \midrule
       0, 1              & No  \\
-      2, 3, 4, 5, 6     & Yes \\
+      2, 3, 4, 5, 6, 7  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{REQUIRED\_USE ??}\ groups}
     \label{tab:at-most-one-of-table}
     \begin{tabular}{ll}
@@ -112,7 +112,7 @@ In particular, note that whitespace is not optional.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED\_USE ??}\ groups?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      5, 6, 7           & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -183,7 +183,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
 
 \note Order is important. The slot restriction must come before use dependencies.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
     \label{tab:slot-deps-table}
     \begin{tabular}{lll}
@@ -194,12 +194,12 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0                 & No                 & No  \\
       1, 2, 3, 4        & Named only         & No  \\
-      5, 6              & Named and operator & Yes \\
+      5, 6, 7           & Named and operator & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
     \label{tab:use-deps-table}
     \begin{tabular}{ll}
@@ -209,7 +209,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0, 1              & No      \\
       2, 3              & 2-style \\
-      4, 5, 6           & 4-style \\
+      4, 5, 6, 7        & 4-style \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -248,7 +248,7 @@ ignored by the package manager, so long as any blocked package will be uninstall
 strong block must not be ignored. The mapping from one or two exclamation marks to strength is
 described in table~\ref{tab:bang-strength-table}.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Exclamation mark strengths for EAPIs}
     \label{tab:bang-strength-table}
     \begin{tabular}{lll}
@@ -258,7 +258,7 @@ described in table~\ref{tab:bang-strength-table}.
       \multicolumn{1}{c}{\textbf{\t{!!}}} \\
       \midrule
       0, 1              & Unspecified & Forbidden \\
-      2, 3, 4, 5, 6     & Weak        & Strong    \\
+      2, 3, 4, 5, 6, 7  & Weak        & Strong    \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index c552497..da6507a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -5,34 +5,36 @@ For lack of space, EAPIs 0, 1, and~2 have been consolidated into a single column
 below; entries marked with an asterisk differ between these EAPIs. See the 2012-09-20 edition
 of this document for a complete table of previous EAPIs.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\b{Feature}} &
 \multicolumn{1}{c}{\b{Reference}} &
-\multicolumn{5}{c}{\b{EAPIs}} \\
+\multicolumn{6}{c}{\b{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{0, 1, 2} &
 \multicolumn{1}{c}{3} &
 \multicolumn{1}{c}{4} &
 \multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} \\
+\multicolumn{1}{c}{6} &
+\multicolumn{1}{c}{7} \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\b{Feature}} &
 \multicolumn{1}{c}{\b{Reference}} &
-\multicolumn{5}{c}{\b{EAPIs}} \\
+\multicolumn{6}{c}{\b{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{0, 1, 2} &
 \multicolumn{1}{c}{3} &
 \multicolumn{1}{c}{4} &
 \multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} \\
+\multicolumn{1}{c}{6} &
+\multicolumn{1}{c}{7} \\
 \midrule
 \endhead
 \midrule
@@ -41,73 +43,73 @@ of this document for a complete table of previous EAPIs.
 \endlastfoot
 
 Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 3.2 & 3.2 & 4.2 \\
+    3.2 & 3.2 & 3.2 & 3.2 & 4.2 & 4.2 \\
 
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{REQUIRED\_USE} & \compactfeatureref{required-use} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{PROPERTIES} & \compactfeatureref{properties} &
-    Optionally & Optionally & Yes & Yes & Yes \\
+    Optionally & Optionally & Yes & Yes & Yes & Yes \\
 
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No & No \\
 
 \t{DEFINED\_PHASES} & \compactfeatureref{defined-phases} &
-    Optionally & Optionally & Yes & Yes & Yes \\
+    Optionally & Optionally & Yes & Yes & Yes & Yes \\
 
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{SRC\_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named & Named & Named and Operator & Named and Operator \\
+    * & Named & Named & Named and Operator & Named and Operator & Named and Operator \\
 
 Sub-slots & \compactfeatureref{sub-slot} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
-    * & 2-style & 4-style & 4-style & 4-style \\
+    * & 2-style & 4-style & 4-style & 4-style & 4-style \\
 
 \t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak \\
+    * & Weak & Weak & Weak & Weak & Weak \\
 
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong \\
+    * & Strong & Strong & Strong & Strong & Strong \\
 
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    Always & Always & Conditional & Conditional & Conditional \\
+    Always & Always & Conditional & Conditional & Conditional & Conditional \\
 
 \t{pkg\_pretend} & \compactfeatureref{pkg-pretend} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{src\_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src\_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & no-op & no-op & 6 \\
+    * & no-op & no-op & no-op & 6 & 6 \\
 
 \t{src\_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src\_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 \\
+    * & 2 & 2 & 2 & 2 & 2 \\
 
 Parallel tests & \compactfeatureref{parallel-tests} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{src\_install} style & \compactfeatureref{src-install} &
-    no-op & no-op & 4 & 4 & 6 \\
+    no-op & no-op & 4 & 4 & 6 & 6 \\
 
 \t{pkg\_info} & \compactfeatureref{pkg-info} &
-    Installed & Installed & Both & Both & Both \\
+    Installed & Installed & Both & Both & Both & Both \\
 
 \t{default\_} phase functions & \compactfeatureref{default-phase-funcs} &
     * &
@@ -118,129 +120,132 @@ Parallel tests & \compactfeatureref{parallel-tests} &
     \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
         \t{src\_compile}, \t{src\_install}, \t{src\_test} &
     \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
+        \t{src\_compile}, \t{src\_install}, \t{src\_test} &
+    \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
         \t{src\_compile}, \t{src\_install}, \t{src\_test} \\
 
 \t{AA} & \compactfeatureref{aa} &
-    Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No & No \\
 
 \t{KV} & \compactfeatureref{kv} &
-    Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No & No \\
 
 \t{EBUILD\_PHASE\_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{MERGE\_TYPE} & \compactfeatureref{merge-type} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Undefined & Undefined & Yes \\
+    Undefined & Undefined & Undefined & Undefined & Yes & Yes \\
 
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{REPLACING\_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{REPLACED\_BY\_VERSION} & \compactfeatureref{replace-version-vars} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Undefined & Undefined & Yes & Yes \\
+    Undefined & Undefined & Undefined & Yes & Yes & Yes \\
 
 Most utilities die & \compactfeatureref{die-on-failure} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned & Banned \\
 
 \t{dosed} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned & Banned \\
 
 \t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Yes & Yes & Banned & Banned \\
 
 Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{eapply} & \compactfeatureref{eapply} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{eapply\_user} & \compactfeatureref{eapply-user} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{econf} arguments & \compactfeatureref{econf-options} &
     &  & disable dependency tracking &
     disable dependency tracking, disable silent rules &
+    disable dependency tracking, disable silent rules, docdir, htmldir &
     disable dependency tracking, disable silent rules, docdir, htmldir \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{doheader} & \compactfeatureref{doheader} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{doins} handles symlinks & \compactfeatureref{doins} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & No & Yes & Yes & Yes \\
+    * & No & Yes & Yes & Yes & Yes \\
 
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 Controllable compression & \compactfeatureref{docompress} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{docompress} & \compactfeatureref{docompress} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{use\_with} empty third arg & \compactfeatureref{use-with} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{usex} & \compactfeatureref{usex} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{in\_iuse} & \compactfeatureref{in-iuse} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{get\_libdir} & \compactfeatureref{get-libdir} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    Undefined & Yes & Yes & Yes & Yes \\
+    Undefined & Yes & Yes & Yes & Yes & Yes \\
 
 \end{longtable}
 \end{landscape}
@@ -363,7 +368,15 @@ EAPI 6 is EAPI 5 with the following changes:
 \item \t{get\_libdir} support, \featureref{get-libdir}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{6}
+\section{EAPI 7}
+
+EAPI 7 is EAPI 6 with the following changes:
+
+\begin{compactitem}
+\item None
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{7}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 

diff --git a/eapis.tex b/eapis.tex
index 7178e5a..6c015a2 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -19,8 +19,8 @@ EAPIs are also used for profile directories, as described in section~\ref{sec:pr
 
 The following EAPIs are defined by this specification:
 
-\ChangeWhenAddingAnEAPI{6}
-\begin{description}
+\ChangeWhenAddingAnEAPI{7}
+\begin{compactdesc}
 \item[0] The `original' base EAPI.
 \item[1] EAPI `1' contains a number of extensions to EAPI `0'.
 \item[2] EAPI `2' contains a number of extensions to EAPI `1'.
@@ -28,7 +28,8 @@ The following EAPIs are defined by this specification:
 \item[4] EAPI `4' contains a number of extensions to EAPI `3'.
 \item[5] EAPI `5' contains a number of extensions to EAPI `4'.
 \item[6] EAPI `6' contains a number of extensions to EAPI `5'.
-\end{description}
+\item[7] EAPI `7' contains a number of extensions to EAPI `6'.
+\end{compactdesc}
 
 Except where explicitly noted, everything in this specification
 applies to all of the above EAPIs.%

diff --git a/ebuild-env-commands.tex b/ebuild-env-commands.tex
index 5deb388..b0ff348 100644
--- a/ebuild-env-commands.tex
+++ b/ebuild-env-commands.tex
@@ -38,7 +38,7 @@ The following commands must always be available in the ebuild environment:
 \t{failglob} option of bash is set in the global scope of ebuilds. If set, failed pattern matches
 during filename expansion result in an error when the ebuild is being sourced.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
     \begin{tabular}{lll}
@@ -49,7 +49,7 @@ during filename expansion result in an error when the ebuild is being sourced.
       \midrule
       0, 1, 2, 3, 4     & Undefined & No  \\
       5                 & Yes       & No  \\
-      6                 & Yes       & Yes \\
+      6, 7              & Yes       & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index d8ccd6c..fd9c7cd 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -232,7 +232,7 @@ variable.
 \end{longtable}
 \end{landscape}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
     \begin{tabular}{lllll}
@@ -245,12 +245,12 @@ variable.
       \midrule
       0, 1, 2, 3        & No  & No  & No  & No  \\
       4                 & Yes & Yes & Yes & No  \\
-      5, 6              & Yes & Yes & Yes & Yes \\
+      5, 6, 7           & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
     \begin{tabular}{lll}
@@ -260,12 +260,12 @@ variable.
       \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
       \midrule
       0, 1, 2, 3        & Yes & Yes \\
-      4, 5, 6           & No  & No  \\
+      4, 5, 6, 7        & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
     \begin{tabular}{llll}
@@ -276,7 +276,7 @@ variable.
       \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
       \midrule
       0, 1, 2           & No  & No  & No  \\
-      3, 4, 5, 6        & Yes & Yes & Yes \\
+      3, 4, 5, 6, 7     & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -298,7 +298,7 @@ must not be set.
 ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in
 table~\ref{tab:locale-settings}.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Locale settings for EAPIs}
     \label{tab:locale-settings}
     \begin{tabular}{ll}
@@ -307,7 +307,7 @@ table~\ref{tab:locale-settings}.
       \multicolumn{1}{c}{\textbf{Sane \t{LC\_CTYPE} and \t{LC\_COLLATE}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & Undefined \\
-      6                 & Yes       \\
+      6, 7              & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -396,7 +396,7 @@ contain at most one value.
 \subsection{Offset-prefix variables \t{EPREFIX}, \t{EROOT} and \t{ED}}
 \label{sec:offset-vars}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix}
     \label{tab:offset-support-table}
     \begin{tabular}{ll}
@@ -405,7 +405,7 @@ contain at most one value.
       \multicolumn{1}{c}{\textbf{Supports offset-prefix?}}\\
       \midrule
       0, 1, 2           & No  \\
-      3, 4, 5, 6        & Yes \\
+      3, 4, 5, 6, 7     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index db6d7a1..5f61b4a 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -12,7 +12,7 @@ certain variables and functions (see sections~\ref{sec:ebuild-vars} and~\ref{sec
 for specific information), and must not call any external programs, write anything to standard
 output or standard error, or modify the state of the system in any way.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Bash version}
     \label{tab:bash-version}
     \begin{tabular}{ll}
@@ -21,7 +21,7 @@ output or standard error, or modify the state of the system in any way.
       \multicolumn{1}{c}{\textbf{Bash version}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & 3.2 \\
-      6                 & 4.2 \\
+      6, 7              & 4.2 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index a744ae1..34cc3e5 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -43,7 +43,7 @@ fallback to \t{WORKDIR} is used:
     in \t{DEFINED\_PHASES}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
     \label{tab:s-fallback-table}
     \begin{tabular}{ll}
@@ -52,7 +52,7 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Fallback to \t{WORKDIR} permitted?}} \\
       \midrule
       0, 1, 2, 3        & Always            \\
-      4, 5, 6           & Conditional error \\
+      4, 5, 6, 7        & Conditional error \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -74,7 +74,7 @@ before the next phase is executed.
 
 \t{pkg\_pretend} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{pkg\_pretend}}
     \label{tab:pkg-pretend-table}
     \begin{tabular}{ll}
@@ -83,7 +83,7 @@ before the next phase is executed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg\_pretend}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6           & Yes \\
+      4, 5, 6, 7        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -146,7 +146,7 @@ src_prepare() {
 For other EAPIs supporting \t{src\_prepare}, the default implementation used when the ebuild lacks
 the \t{src\_prepare} function is a no-op.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{\t{src\_prepare} support and behaviour for EAPIs}
     \label{tab:src-prepare-table}
     \begin{tabular}{lll}
@@ -157,7 +157,7 @@ the \t{src\_prepare} function is a no-op.
       \midrule
       0, 1              & No  & Not applicable \\
       2, 3, 4, 5        & Yes & no-op          \\
-      6                 & Yes & 6              \\
+      6, 7              & Yes & 6              \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -184,7 +184,7 @@ src_configure() {
 \end{verbatim}
 \end{listing}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{src\_configure}}
     \label{tab:src-configure-table}
     \begin{tabular}{ll}
@@ -193,7 +193,7 @@ src_configure() {
       \multicolumn{1}{c}{\textbf{Supports \t{src\_configure}?}} \\
       \midrule
       0, 1              & No  \\
-      2, 3, 4, 5, 6     & Yes \\
+      2, 3, 4, 5, 6, 7  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -257,7 +257,7 @@ src_compile() {
 \end{verbatim}
 \end{listing}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{\t{src\_compile} behaviour for EAPIs}
     \label{tab:src-compile-table}
     \begin{tabular}{ll}
@@ -267,7 +267,7 @@ src_compile() {
       \midrule
       0                 & 0 \\
       1                 & 1 \\
-      2, 3, 4, 5, 6     & 2 \\
+      2, 3, 4, 5, 6, 7  & 2 \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -289,7 +289,7 @@ parallel tests, the \t{emake} command must be called with option \t{-j1}.
 The \t{src\_test} function may be disabled by \t{RESTRICT}\@. See section~\ref{sec:restrict}. It may
 be disabled by user too, using a PM-specific mechanism.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{\t{src\_test} behaviour for EAPIs}
     \label{tab:src-test-table}
     \begin{tabular}{ll}
@@ -298,7 +298,7 @@ be disabled by user too, using a PM-specific mechanism.
       \multicolumn{1}{c}{\textbf{Supports parallel tests?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      5, 6, 7           & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -357,7 +357,7 @@ src_install() {
 For other EAPIs, the default implementation used when the ebuild lacks the \t{src\_install} function
 is a no-op.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{\t{src\_install} behaviour for EAPIs}
     \label{tab:src-install-table}
     \begin{tabular}{ll}
@@ -367,7 +367,7 @@ is a no-op.
       \midrule
       0, 1, 2, 3        & no-op \\
       4, 5              & 4     \\
-      6                 & 6     \\
+      6, 7              & 6     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -425,7 +425,7 @@ that dependencies may not be installed.
 
 \t{pkg\_info} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{pkg\_info} on non-installed packages}
     \label{tab:pkg-info-table}
     \begin{tabular}{ll}
@@ -434,7 +434,7 @@ that dependencies may not be installed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg\_info} on non-installed packages?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6           & Yes \\
+      4, 5, 6, 7        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -456,7 +456,7 @@ named \t{default\_}(phase) that behaves as the default implementation for that E
 when executing any ebuild phase listed in the table. Ebuilds must not call these functions except
 when in the phase in question.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{default\_} phase functions}
     \label{tab:default-phase-function-table}
     \begin{tabular}{l P{26em}}
@@ -467,7 +467,7 @@ when in the phase in question.
       0, 1              & None \\
       2, 3              & \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
                           \t{src\_compile}, \t{src\_test} \\
-      4, 5, 6           & \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
+      4, 5, 6, 7        & \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
                           \t{src\_compile}, \t{src\_install}, \t{src\_test} \\
       \bottomrule
     \end{tabular}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index ecb50df..45cf5ab 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -85,7 +85,7 @@ Ebuilds may define any of the following variables:
 \item[PDEPEND] See section~\ref{sec:dependencies}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{IUSE} defaults}
     \label{tab:iuse-defaults-table}
     \begin{tabular}{ll}
@@ -93,13 +93,13 @@ Ebuilds may define any of the following variables:
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{IUSE} defaults?}} \\
       \midrule
-      0                 & No  \\
-      1, 2, 3, 4, 5, 6  & Yes \\
+      0                         & No  \\
+      1, 2, 3, 4, 5, 6, 7       & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
     \begin{tabular}{lll}
@@ -109,7 +109,7 @@ Ebuilds may define any of the following variables:
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED\_USE}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6           & Yes        & Yes \\
+      4, 5, 6, 7        & Yes        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -176,7 +176,7 @@ any \t{DEPEND} or \t{RDEPEND} set in an eclass does not change the implicit \t{R
 the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treated as being part of
 \t{RDEPEND}.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} default}
     \label{tab:rdepend-depend-table}
     \begin{tabular}{ll}
@@ -185,7 +185,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
       \multicolumn{1}{c}{\textbf{\t{RDEPEND=DEPEND}?}} \\
       \midrule
       0, 1, 2, 3        & Yes \\
-      4, 5, 6           & No  \\
+      4, 5, 6, 7        & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -219,7 +219,7 @@ this variable defined, and must treat an empty string as ``this information is n
 \note Thus, by extension of section~\ref{sec:metadata-invariance}, phase functions must not be defined
 based upon any variant condition.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{DEFINED\_PHASES}}
     \label{tab:defined-phases-table}
     \begin{tabular}{ll}
@@ -228,7 +228,7 @@ based upon any variant condition.
       \multicolumn{1}{c}{\textbf{Supports \t{DEFINED\_PHASES}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally \\
-      4, 5, 6           & Yes        \\
+      4, 5, 6, 7        & Yes        \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/merge.tex b/merge.tex
index 9da9631..9a5d01d 100644
--- a/merge.tex
+++ b/merge.tex
@@ -86,7 +86,7 @@ held under the original image directory.
 In other EAPIs, the behaviour with respect to file modification times
 is undefined.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Preservation of file modification times (mtimes)}
     \label{tab:mtime-preserve}
     \begin{tabular}{ll}
@@ -95,7 +95,7 @@ is undefined.
       \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\
       \midrule
       0, 1, 2           & Undefined \\
-      3, 4, 5, 6        & Yes       \\
+      3, 4, 5, 6, 7     & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 389d8c0..db63d6d 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -25,7 +25,7 @@ The following commands affect this behaviour:
     option and in EAPIs supporting this option, see table~\ref{tab:nonfatal-die}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
     \begin{tabular}{lll}
@@ -35,7 +35,7 @@ The following commands affect this behaviour:
       \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
       \midrule
       0, 1, 2, 3        & Non-zero exit & No  \\
-      4, 5, 6           & Aborts        & Yes \\
+      4, 5, 6, 7        & Aborts        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -46,7 +46,7 @@ The following commands affect this behaviour:
 \featurelabel{banned-commands} Some commands are banned in some EAPIs. If a banned command is
 called, the package manager must abort the build process indicating an error.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
     \begin{tabular}{llll}
@@ -60,7 +60,7 @@ called, the package manager must abort the build process indicating an error.
       \midrule
       0, 1, 2, 3        & No  & No  & No  \\
       4, 5              & Yes & Yes & No  \\
-      6                 & Yes & Yes & Yes \\
+      6, 7              & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -92,7 +92,7 @@ to the host root instead of \t{ROOT}.
     matching version; otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*\_version} commands}
     \label{tab:foo-version-host-root-table}
     \begin{tabular}{ll}
@@ -143,7 +143,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} commands}
     \label{tab:nonfatal-die}
     \begin{tabular}{ll}
@@ -152,7 +152,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
       \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & No  \\
-      6                 & Yes \\
+      6, 7              & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -216,7 +216,7 @@ Ebuilds must not run any of these commands once the current phase function has r
     subsequent calls, the command will do nothing and return~0.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Patch commands for EAPIs}
     \label{tab:patch-commands}
     \begin{tabular}{lll}
@@ -226,7 +226,7 @@ Ebuilds must not run any of these commands once the current phase function has r
       \multicolumn{1}{c}{\textbf{\t{eapply\_user}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
-      6                 & Yes & Yes \\
+      6, 7              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -267,7 +267,7 @@ current phase function has returned.
         in the output of \t{configure -{}-help}.
     \end{itemize}
 
-    \ChangeWhenAddingAnEAPI{6}
+    \ChangeWhenAddingAnEAPI{7}
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
         \begin{tabular}{lllll}
@@ -281,7 +281,7 @@ current phase function has returned.
           0, 1, 2, 3        & No  & No  & No  & No  \\
           4                 & Yes & No  & No  & No  \\
           5                 & Yes & Yes & No  & No  \\
-          6                 & Yes & Yes & Yes & Yes \\
+          6, 7              & Yes & Yes & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -549,7 +549,7 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{dodoc -r}}
     \label{tab:dodoc-table}
     \begin{tabular}{ll}
@@ -558,12 +558,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
       \multicolumn{1}{c}{\textbf{Supports \t{dodoc -r}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6           & Yes \\
+      4, 5, 6, 7        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}}
     \label{tab:doheader-table}
     \begin{tabular}{ll}
@@ -572,12 +572,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
       \multicolumn{1}{c}{\textbf{Supports \t{doheader} and \t{newheader}?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      5, 6, 7           & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting symlinks for \t{doins}}
     \label{tab:doins-table}
     \begin{tabular}{ll}
@@ -586,12 +586,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
       \multicolumn{1}{c}{\textbf{\t{doins} supports symlinks?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6           & Yes \\
+      4, 5, 6, 7        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{\t{doman} language support options for EAPIs}
     \label{tab:doman-table}
     \begin{tabular}{lll}
@@ -602,12 +602,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
       \midrule
       0, 1              & No  & Not applicable \\
       2, 3              & Yes & No             \\
-      4, 5, 6           & Yes & Yes            \\
+      4, 5, 6, 7        & Yes & Yes            \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting stdin for \t{new*} commands}
     \label{tab:newfoo-stdin-table}
     \begin{tabular}{ll}
@@ -616,7 +616,7 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
       \multicolumn{1}{c}{\textbf{\t{new*} can read from stdin?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      5, 6, 7           & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -703,7 +703,7 @@ exclusion list. Otherwise, add each argument to the inclusion list. Only availab
 in table~\ref{tab:compression-table} as supporting \t{docompress}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting controllable compression}
     \label{tab:compression-table}
     \begin{tabular}{lll}
@@ -713,7 +713,7 @@ in table~\ref{tab:compression-table} as supporting \t{docompress}.
       \multicolumn{1}{c}{\textbf{Supports \t{docompress}?}} \\
       \midrule
       0, 1, 2, 3        & No  & No  \\
-      4, 5, 6           & Yes & Yes \\
+      4, 5, 6, 7        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -756,7 +756,7 @@ table~\ref{tab:use-list-strictness}.
     table~\ref{tab:use-list-functions} as supporting \t{in\_iuse}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI behaviour for use queries not in \t{IUSE\_EFFECTIVE}}
     \label{tab:use-list-strictness}
     \begin{tabular}{ll}
@@ -765,12 +765,12 @@ table~\ref{tab:use-list-strictness}.
       \multicolumn{1}{c}{\textbf{Behaviour}} \\
       \midrule
       0, 1, 2, 3        & Undefined \\
-      4, 5, 6           & Error     \\
+      4, 5, 6, 7        & Error     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting empty third argument in \t{use\_with} and \t{use\_enable}}
     \label{tab:use-with-third-arg}
     \begin{tabular}{ll}
@@ -779,12 +779,12 @@ table~\ref{tab:use-list-strictness}.
       \multicolumn{1}{c}{\textbf{Supports empty third argument?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6           & Yes \\
+      4, 5, 6, 7        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{usex} and \t{in\_iuse}}
     \label{tab:use-list-functions}
     \begin{tabular}{lll}
@@ -795,7 +795,7 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3, 4     & No  & No  \\
       5                 & Yes & No  \\
-      6                 & Yes & Yes \\
+      6, 7              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -876,7 +876,7 @@ has returned.
     \featurelabel{unpack-ignore-case} \t{unpack} matches filename extensions in a case-insensitive
     manner, for EAPIs listed such in table~\ref{tab:unpack-behaviour}.
 
-    \ChangeWhenAddingAnEAPI{6}
+    \ChangeWhenAddingAnEAPI{7}
     \begin{centertable}{\t{unpack} behaviour for EAPIs}
         \label{tab:unpack-behaviour}
         \begin{tabular}{lll}
@@ -886,12 +886,12 @@ has returned.
           \multicolumn{1}{c}{\textbf{Case-insensitive matching?}} \\
           \midrule
           0, 1, 2, 3, 4, 5  & No  & No  \\
-          6                 & Yes & Yes \\
+          6, 7              & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
 
-    \ChangeWhenAddingAnEAPI{6}
+    \ChangeWhenAddingAnEAPI{7}
     \begin{centertable}{\t{unpack} extensions for EAPIs}
         \label{tab:unpack-extensions-table}
         \begin{tabular}{llll}
@@ -903,7 +903,7 @@ has returned.
           \midrule
           0, 1, 2           & No  & No  & No  \\
           3, 4, 5           & Yes & Yes & No  \\
-          6                 & Yes & Yes & Yes \\
+          6, 7              & Yes & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -970,7 +970,7 @@ has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Misc commands for EAPIs}
     \label{tab:misc-commands}
     \begin{tabular}{llll}
@@ -982,7 +982,7 @@ has returned.
       \midrule
       0, 1              & No  & No  & No  \\
       2, 3, 4, 5        & Yes & No  & No  \\
-      6                 & Yes & Yes & Yes \\
+      6, 7              & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pms.tex b/pms.tex
index 01dee98..96f5956 100644
--- a/pms.tex
+++ b/pms.tex
@@ -21,8 +21,8 @@
     pdfkeywords={Gentoo, package manager, specification},
 }
 
-\CurrentEAPIIs{6}
-\ChangeWhenAddingAnEAPI{6}
+\CurrentEAPIIs{7}
+\ChangeWhenAddingAnEAPI{7}
 
 \begin{document}
 \maketitle

diff --git a/profile-variables.tex b/profile-variables.tex
index c47b748..2419856 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -33,7 +33,7 @@ Other variables, except where they affect only package-manager-specific function
 Portage's \t{FEATURES} variable), must not be treated incrementally---later definitions shall
 completely override those in parent profiles.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs}
     \label{tab:profile-iuse-injection-table}
     \begin{tabular}{ll}
@@ -42,7 +42,7 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      5, 6, 7           & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/profiles.tex b/profiles.tex
index ff791ac..943d7ec 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -123,7 +123,7 @@ only act on packages that are merged due to a stable keyword in the sense of
 subsection~\ref{sec:keywords}. Thus, these files can be used to restrict the feature set deemed
 stable in a package.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Profile directory support for masking/forcing use flags in stable versions only}
     \label{tab:profile-stablemask}
     \begin{tabular}{ll}
@@ -132,7 +132,7 @@ stable in a package.
       \multicolumn{1}{c}{\textbf{Supports masking/forcing use flags in stable versions?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      5, 6, 7           & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-04-10 18:12 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-04-10 18:12 UTC (permalink / raw
  To: gentoo-commits

commit:     6fcfc9946698bdaee52443230281bea598b9af06
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 29 23:00:32 2015 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 17:45:49 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=6fcfc994

EAPI 7 supports a directory for package.mask.

Bug: 282296

 eapi-differences.tex |  4 ++++
 tree-layout.tex      | 20 ++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f0a45bc..9219ce9 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.mask} directory & \compactfeatureref{package-mask-dir} &
+    No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
     No & No & Yes & Yes & Yes \\
 
@@ -373,6 +376,7 @@ EAPI 6 is EAPI 5 with the following changes:
 EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
+\item \t{profiles/package.mask} can be a directory, \featureref{package-mask-dir}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/tree-layout.tex b/tree-layout.tex
index e215cf8..ee8b0a4 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -107,6 +107,12 @@ manager must ignore any files in this directory that it does not recognise.
     Contains a list, one entry per line, of package dependency specifications (using the directory's
     EAPI). Any package version matching one of these is considered to be masked, and will not be
     installed regardless of profile unless it is unmasked by the user configuration.
+
+    \featurelabel{package-mask-dir} For EAPIs listed in table~\ref{tab:package-mask-dir} as
+    supporting it, \t{package.mask} can be a directory instead of a regular file. Files contained
+    in that directory, unless their name begins with a dot, will be concatenated in order of their
+    filename in the POSIX locale and the result will be processed as if it were a single file.
+    Any subdirectories will be ignored.
 \item[profiles.desc] Described below in section~\ref{sec:profiles.desc}.
 \item[repo\_name] Contains, on a single line, the name of this repository. The repository name must
     conform to section~\ref{sec:repository-names}.
@@ -123,6 +129,20 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
+    \label{tab:package-mask-dir}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{The profiles.desc file}
 \label{sec:profiles.desc}
 \t{profiles.desc} is a line-based file, with the standard commenting


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-28 16:58 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-28 16:58 UTC (permalink / raw
  To: gentoo-commits

commit:     9c0e84b3c82b7fcb1ddae3f7a5288b61689fc787
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 14:10:20 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Sep 28 16:36:24 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=9c0e84b3

EAPI 7 disallows stdout output of output functions

Bug: https://bugs.gentoo.org/483240

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 17 +++++++++++------
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 34ee0c9..055e6c6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+Output cmds can use stdout & \compactfeatureref{output-no-stdout} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{eqawarn} & \compactfeatureref{eqawarn} &
     No & No & No & No & Yes \\
 
@@ -391,6 +394,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item Version manipulation and comparison functions added, \featureref{ver-functions}.
 \item \t{eqawarn} added, \featureref{eqawarn}.
+\item Output commands can no longer use stdout, \featureref{output-no-stdout}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c7f3696..5bb8b68 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -114,8 +114,12 @@ These commands display messages to the user. Unless otherwise stated, the entire
 used as a message, with backslash-escaped characters interpreted as for the \t{echo -e} command of
 bash, notably \t{\textbackslash t} for a horizontal tab, \t{\textbackslash n} for a new line, and
 \t{\textbackslash\textbackslash} for a literal backslash. Ebuilds must not run any of these commands
-once the current phase function has returned. Unless otherwise noted, output may be sent to stdout,
-stderr or some other appropriate facility.
+once the current phase function has returned.
+
+\featurelabel{output-no-stdout} Unless otherwise noted, output may be sent to stderr or some other
+appropriate facility. In EAPIs listed in table~\ref{tab:output-commands} as not allowing stdout
+output, using stdout as an output facility is forbidden.
+
 \begin{description}
 \item[einfo] Displays an informational message.
 \item[einfon] Displays an informational message without a trailing newline.
@@ -139,13 +143,14 @@ stderr or some other appropriate facility.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
-    \begin{tabular}{ll}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} &
+      \multicolumn{1}{c}{\textbf{can output to stdout?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6  & No  \\
-      7                    & Yes \\
+      0, 1, 2, 3, 4, 5, 6  & No  & Yes \\
+      7                    & Yes & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-28 16:58 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-28 16:58 UTC (permalink / raw
  To: gentoo-commits

commit:     16ab106d3059b88d0025ffee72901f8de3f69eb5
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 16:20:11 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Sep 28 16:36:43 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=16ab106d

EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED.

Bug: https://bugs.gentoo.org/465772

 eapi-differences.tex |  5 +++++
 ebuild-env-vars.tex  | 58 ++++++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 055e6c6..939c501 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+Trailing slash in \t{ROOT}, \t{D}... & \compactfeatureref{trailing-slash} &
+    Yes & Yes & Yes & Yes & No \\
+
 Output cmds can use stdout & \compactfeatureref{output-no-stdout} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -395,6 +398,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Version manipulation and comparison functions added, \featureref{ver-functions}.
 \item \t{eqawarn} added, \featureref{eqawarn}.
 \item Output commands can no longer use stdout, \featureref{output-no-stdout}.
+\item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
+    \featureref{trailing-slash}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 1851aba..fe61ac5 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -121,14 +121,15 @@ variable.
    The absolute path to the root directory into which the package is to be merged.  Phases which run
    with full filesystem access must not touch any files outside of the directory given in
    \t{ROOT}\@. Also of note is that in a cross-compiling environment, binaries inside of \t{ROOT}
-   will not be executable on the build machine, so ebuilds must not call them. \t{ROOT} must be
-   non-empty and end in a trailing slash. \\
+   will not be executable on the build machine, so ebuilds must not call them. The presence of
+   a trailing slash is EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{EROOT} &
     \t{pkg_*} &
     No &
-    Contains the path \t{\$\{ROOT\%/\}\$\{EPREFIX\}/} for convenience. See also the
-    \t{EPREFIX} variable. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as
-    supporting \t{EROOT}. \\
+    Contains the concatenation of the paths in \t{ROOT} and \t{EPREFIX} variables, for convenience.
+    See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}. The presence of a trailing
+    slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -159,18 +160,21 @@ variable.
     \t{src_install} &
     No &
     Contains the full path to the image directory into which the package should be installed.
-    Must be non-empty and end in a trailing slash. \\
+    The presence of a trailing slash is EAPI-dependent as listed in table~\ref{tab:trailing-slash}.
+    \\
 \t{D} (continued) &
     \t{pkg_preinst}, \t{pkg_postinst} &
     Yes &
-    Contains the full path to the image that is about to be or has just been merged. Must be
-    non-empty and end in a trailing slash. \\
+    Contains the full path to the image that is about to be or has just been merged.
+    The presence of a trailing slash is EAPI-dependent as listed in table~\ref{tab:trailing-slash}.
+    \\
 \t{ED} &
     \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst} &
     See \t{D} &
-    Contains the path \t{\$\{D\%/\}\$\{EPREFIX\}/} for convenience. See also the
-    \t{EPREFIX} variable. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as
-    supporting \t{ED}. \\
+    Contains the concatenation of the paths in \t{D} and \t{EPREFIX} variables, for convenience.
+    See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{ED}. The presence of a trailing
+    slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{DESTTREE} &
     \t{src_install} &
     No &
@@ -420,6 +424,38 @@ behaviour of offset-prefix aware and agnostic is the same when \t{EPREFIX} is se
 string in offset-prefix aware EAPIs. The latter do have the variables \t{ED} and \t{EROOT} properly
 set, though.
 
+\subsection{Path variables and trailing slash}
+\label{sec:trailing-slash}
+
+Unless specified otherwise, the paths provided through package manager variables do not end with
+a trailing slash and can not be empty. A few exceptions to that rule are listed
+in table~\ref{tab:trailing-slash} along with applicable EAPIs.
+
+For EAPIs where those variables are defined to always end with a trailing slash, the package manager
+guarantees that a trailing slash will always be appended to the path in question. If the path
+specifies the system root directory, it will consist of a single slash (\t{/}).
+
+\featurelabel{trailing-slash} For EAPIs where those variables are defined to never end with
+a trailing slash, the package manager guarantees that a trailing slash will never be present.
+If the path specifies the system root directory, it will be empty.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Variables that always or never end with a trailing slash}
+    \label{tab:trailing-slash}
+    \begin{tabular}{lll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{2}{c}{\textbf{Ends with a trailing slash?}} \\
+      &
+      \t{ROOT}, \t{EROOT} &
+      \t{D}, \t{ED} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & always & always \\
+      7                   & never  & never  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
 %%% Local Variables:


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-28 16:58 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-28 16:58 UTC (permalink / raw
  To: gentoo-commits

commit:     e89a0495b1a774edfa1a6fe277e5485453e1b80d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 14:05:38 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Sep 28 16:31:45 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e89a0495

EAPI 7 has eqawarn

Bug: https://bugs.gentoo.org/482884

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 18 ++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a56f1ff..34ee0c9 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{eqawarn} & \compactfeatureref{eqawarn} &
+    No & No & No & No & Yes \\
+
 \t{ver_*} functions & \compactfeatureref{ver-functions} &
     No & No & No & No & Yes \\
 
@@ -387,6 +390,7 @@ EAPI 7 is EAPI 6 with the following changes:
     directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item Version manipulation and comparison functions added, \featureref{ver-functions}.
+\item \t{eqawarn} added, \featureref{eqawarn}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 15bfcde..c7f3696 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -124,6 +124,10 @@ stderr or some other appropriate facility.
     example.
 \item[ewarn] Displays a warning message. Must not go to stdout.
 \item[eerror] Displays an error message. Must not go to stdout.
+\item[eqawarn] \featurelabel{eqawarn} Display a QA warning message intended for ebuild developers.
+    The package manager may provide appropriate mechanisms to skip those messages for normal users.
+    Must not go to stdout.  Only available in EAPIs listed in table~\ref{tab:output-commands} as
+    supporting \t{eqawarn}.
 \item[ebegin] Displays an informational message. Should be used when beginning a possibly
     lengthy process, and followed by a call to \t{eend}.
 \item[eend] Indicates that the process begun with an \t{ebegin} message has completed. Takes one
@@ -132,6 +136,20 @@ stderr or some other appropriate facility.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Output commands for EAPIs}
+    \label{tab:output-commands}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6  & No  \\
+      7                    & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Error commands}
 These commands are used when an error is detected that will prevent the build process from
 completing. Ebuilds must not run any of these commands once the current phase function has returned.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-28 16:58 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-28 16:58 UTC (permalink / raw
  To: gentoo-commits

commit:     62a8ce605351d6968db8102a70f84b9dead9a863
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 27 21:23:22 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Sep 28 16:30:48 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=62a8ce60

EAPI 7 has version manipulation and comparison functions

Bug: https://bugs.gentoo.org/482170

 eapi-differences.tex |  4 +++
 pkg-mgr-commands.tex | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 84 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 44869c0..a56f1ff 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{ver_*} functions & \compactfeatureref{ver-functions} &
+    No & No & No & No & Yes \\
+
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
     No & No & No & No & Yes \\
 
@@ -383,6 +386,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{package.mask}, \t{package.use}, \t{use.*} and \t{package.use.*} in a profile can be
     directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
+\item Version manipulation and comparison functions added, \featureref{ver-functions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index e8a6555..15bfcde 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -817,6 +817,86 @@ These functions check whitespace-separated lists for a particular value.
 \item[hasq] Deprecated synonym for \t{has}.
 \end{description}
 
+\subsubsection{Version manipulation and comparison commands}
+\featurelabel{ver-functions}
+Those functions provide routines to work with version strings. Their availability per EAPI is listed
+in table~\ref{tab:version-functions}.
+
+For the purpose of version manipulation functions, the specification provides a method for splitting
+an arbitrary version string (not necessarily conforming to \ref{sec:version-spec}) into a series of
+version components and version separators.
+
+A version component consists either purely of digits (\t{[0-9]+}) or purely of a combination of
+uppercase and lowercase letters (\t{[a-zA-Z]+}). A version separator is either a string of any other
+characters (\t{[\textasciicircum 0-9a-zA-Z]}) or it occurs at the transition between a sequence of digits
+and a sequence of letters, or vice versa. In the latter case, the version separator is an empty
+string.
+
+The version string is processed left-to-right, with the successive version components being assigned
+successive indices starting with 1. The separator following a version component is assigned
+the index of the preceding version component. If the first version component is preceded by
+a non-null string of version separator characters, this separator is assigned the index 0.
+
+The version components are presumed present if not empty. The version separators between version
+components are always presumed present, even if they are empty. The version separators preceding
+the first version component and following the last are only presumed present if they are not empty.
+
+Whenever the functions support ranges, the range is specified as a non-negative integer, optionally
+followed by a hyphen (\t{-}), which in turn is optionally followed by another non-negative integer.
+
+A single integer specifies a single component or separator index. An integer followed by a hyphen
+specifies all components or separators starting with the one at specified index. Two integers
+separated by a hyphen specify a range of versions starting at the index specified by the first
+and ending at the second, inclusively.
+
+\begin{description}
+\item[ver_cut] Takes a range as the first argument, and optionally a version string as the second.
+    Prints a substring of the version string starting at the version component specified as start
+    of the range and ending at the version component specified as end of the range. If the version
+    string is not specified, \t{\$\{PVR\}} is used.
+
+    If the range spans outside the present version components, the missing components and separators
+    are presumed empty. In particular, the range starting at zero includes zeroth version separator
+    if present, and the range spanning past the last version component includes the suffix following
+    it if present. A range that does not intersect with any present version components yields empty
+    string.
+
+\item[ver_rs] Takes one or more pairs of arguments, optionally followed by a version string. Every
+    argument pair specifies a range and a replacement string. Prints a version string after
+    performing the specified separator substitutions. If the version string is not specified,
+    \t{\$\{PVR\}} is used.
+
+    For every argument pair specified, each of the version separators present at indices specified
+    by the range is replaced with the replacement string, in order. If the range spans outside
+    the range of present version separators, it is silently truncated.
+
+\item[ver_test] Takes two or three arguments. In the 3-argument form, it takes a LHS version string,
+    followed by an operator, followed by RHS version string. In the 2-argument form, the first
+    version string is omitted and \t{\$\{PVR\}} is used as LHS version string. Returns 0
+    if the specified relation between LHS and RHS version strings is true.
+
+    The operator can be \t{-lt}, \t{-le}, \t{-eq}, \t{-ne}, \t{-ge} and \t{-gt} to test whether
+    LHS is respectively older than, older or equal, equal, not equal, newer or equal, and newer
+    than RHS. Both version strings must conform to the version specification
+    at~\ref{sec:version-spec}, the comparison is done using algorithm~\ref{alg:version-comparison}.
+\end{description}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting version manipulation commands}
+    \label{tab:version-functions}
+    \begin{tabular}{llll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
+      7                   & Yes & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Misc commands}
 The following commands are always available in the ebuild environment, but don't really fit in any
 of the above categories. Ebuilds must not run any of these commands once the current phase function


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-28 17:51 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-28 17:51 UTC (permalink / raw
  To: gentoo-commits

commit:     33c35fb395a52c31e99b0bd65c15a646b553e087
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 17:50:56 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Sep 28 17:51:04 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=33c35fb3

EAPI 7 requires GNU patch 2.7.

Bug: https://bugs.gentoo.org/593786

 eapi-differences.tex    |  4 ++++
 ebuild-env-commands.tex | 15 +++++++++------
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 939c501..9f39934 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+GNU patch version & \compactfeatureref{gnu-patch} &
+    Any & Any & Any & Any & 2.7 \\
+
 Trailing slash in \t{ROOT}, \t{D}... & \compactfeatureref{trailing-slash} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -400,6 +403,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Output commands can no longer use stdout, \featureref{output-no-stdout}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
+\item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-commands.tex b/ebuild-env-commands.tex
index 590f709..f5e1c07 100644
--- a/ebuild-env-commands.tex
+++ b/ebuild-env-commands.tex
@@ -26,7 +26,8 @@ The following commands must always be available in the ebuild environment:
     page~\pageref{tab:bash-version}.
 \item \t{sed} must be available, and must support all forms of invocations valid for GNU sed
     version 4 or later.
-\item \t{patch} must be available, and must support all inputs valid for GNU patch.
+\item \featurelabel{gnu-patch} \t{patch} must be available, and must support all inputs valid
+	for GNU patch, version as listed in table~\ref{tab:system-commands-table}.
 \item \featurelabel{gnu-find} \t{find} and \t{xargs} must be available, and must support all forms
     of invocations valid for GNU findutils version 4.4 or later. Only for EAPIs listed in
     table~\ref{tab:system-commands-table} as requiring GNU find.
@@ -41,15 +42,17 @@ during filename expansion result in an error when the ebuild is being sourced.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{GNU \t{find}?}} &
-      \multicolumn{1}{c}{\textbf{\t{failglob} in global scope?}} \\
+      \multicolumn{1}{c}{\textbf{\t{failglob} in global scope?}} &
+      \multicolumn{1}{c}{\textbf{GNU patch version}} \\
       \midrule
-      0, 1, 2, 3, 4     & Undefined & No  \\
-      5                 & Yes       & No  \\
-      6, 7              & Yes       & Yes \\
+      0, 1, 2, 3, 4     & Undefined & No  & Any \\
+      5                 & Yes       & No  & Any \\
+      6                 & Yes       & Yes & Any \\
+      7                 & Yes       & Yes & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-28 20:53 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-28 20:53 UTC (permalink / raw
  To: gentoo-commits

commit:     e3fcc9931dd072ced745d9d98a2e661cc323bcba
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 19 21:36:40 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Sep 28 20:38:48 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e3fcc993

EAPI 7: econf adds --with-sysroot

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  3 ++-
 pkg-mgr-commands.tex | 17 +++++++++++------
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f3c68f6..31cc5f6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -212,7 +212,7 @@ Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
     & disable dependency tracking &
     disable dependency tracking, disable silent rules &
     disable dependency tracking, disable silent rules, docdir, htmldir &
-    disable dependency tracking, disable silent rules, docdir, htmldir \\
+    disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
     No & Yes & Yes & Yes & Yes \\
@@ -408,6 +408,7 @@ EAPI 7 is EAPI 6 with the following changes:
     \featureref{trailing-slash}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
+\item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 5bb8b68..6a4415d 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -283,6 +283,9 @@ current phase function has returned.
     \item -{}-htmldir must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}/html}, if the EAPI is listed
         in table~\ref{tab:econf-options-table} as using it. This option will only be passed if the
         string \t{-{}-htmldir} occurs in the output of \t{configure -{}-help}.
+    \item -{}-with-sysroot must be \t{\$\{ESYSROOT\}}, if the EAPI is listed in
+        table~\ref{tab:econf-options-table} as using it. This option will only be passed if the
+        string \t{-{}-with-sysroot} occurs in the output of \t{configure -{}-help}.
     \item -{}-host must be the value of the \t{CHOST} environment variable.
     \item -{}-libdir must be set according to Algorithm~\ref{alg:econf-libdir}.
     \item -{}-disable-dependency-tracking, if the EAPI is listed in
@@ -296,18 +299,20 @@ current phase function has returned.
     \ChangeWhenAddingAnEAPI{7}
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
-        \begin{tabular}{lllll}
+        \begin{tabular}{llllll}
           \toprule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
           \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
           \multicolumn{1}{c}{\textbf{-{}-docdir}} &
-          \multicolumn{1}{c}{\textbf{-{}-htmldir}} \\
+          \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
+          \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
           \midrule
-          0, 1, 2, 3        & No  & No  & No  & No  \\
-          4                 & Yes & No  & No  & No  \\
-          5                 & Yes & Yes & No  & No  \\
-          6, 7              & Yes & Yes & Yes & Yes \\
+          0, 1, 2, 3        & No  & No  & No  & No  & No  \\
+          4                 & Yes & No  & No  & No  & No  \\
+          5                 & Yes & Yes & No  & No  & No  \\
+          6                 & Yes & Yes & Yes & Yes & No  \\
+          7                 & Yes & Yes & Yes & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-28 20:53 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-28 20:53 UTC (permalink / raw
  To: gentoo-commits

commit:     c1403cf5d93a5c4826a7328828f9bb4857988c9c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 23:46:32 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Sep 28 20:53:03 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=c1403cf5

dependencies: Provide a nice summary table for dep APIs

 dependencies.tex | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index a876b43..fa818b7 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -23,6 +23,21 @@
     \end{tabular}
 \end{centertable}
 
+\begin{centertable}{Summary of other interfaces related to dependency classes}
+    \label{tab:dependency-class-apis}
+    \begin{tabular}{lccc}
+      \toprule
+      & \t{BDEPEND} & \t{DEPEND} & \t{RDEPEND}, \t{PDEPEND} \\
+      \midrule
+      binary compatible with & \t{CBUILD} & \t{CHOST} & \t{CHOST} \\
+      base unprefixed path & \t{/} & \t{\$\{SYSROOT\}} & \t{\$\{ROOT\}} \\
+      relevant offset-prefix & \t{\$\{BROOT\}} & \t{\$\{EPREFIX\}} & \t{\$\{EPREFIX\}} \\
+      path combined with prefix & \t{\$\{BROOT\}} & \t{\$\{ESYSROOT\}} & \t{\$\{EROOT\}} \\
+      PM query option & \t{-b} & \t{-d} & \t{-r} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 There are three classes of dependencies supported by ebuilds:
 
 \begin{compactitem}
@@ -48,7 +63,8 @@ as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
 \end{compactitem}
 
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
-a particular phase function is executed.
+a particular phase function is executed. Table~\ref{tab:dependency-class-api} summarizes
+additional interfaces related to the dependency classes.
 
 In addition, \t{SRC_URI}, \t{HOMEPAGE}, \t{RESTRICT}, \t{PROPERTIES}, \t{LICENSE} and
 \t{REQUIRED_USE} use dependency-style specifications to specify their values.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-28 20:53 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-28 20:53 UTC (permalink / raw
  To: gentoo-commits

commit:     f05b7511d7f474f1b485442646d6ca53db46af42
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 19 21:17:57 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Sep 28 20:38:48 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f05b7511

EAPI 7 has BDEPEND

Bug: https://bugs.gentoo.org/317337

 dependencies.tex     | 28 +++++++++++++++++++++++++++-
 eapi-differences.tex |  4 ++++
 ebuild-vars.tex      |  1 +
 3 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 031960b..a876b43 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -14,7 +14,7 @@
       \t{pkg_pretend}, \t{pkg_setup}, \t{pkg_info}, \t{pkg_nofetch} &
           None (ebuilds can rely only on the packages in the system set) \\
       \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, \t{src_test},
-          \t{src_install} & \t{DEPEND} \\
+          \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
       \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
           \t{RDEPEND} (unless the particular dependency results in a circular dependency, in which
           case it may be installed later) \\
@@ -35,6 +35,18 @@ There are three classes of dependencies supported by ebuilds:
     the package manager finishes the batch of installs.
 \end{compactitem}
 
+\featurelabel{bdepend} Additionally, in EAPIs listed in table~\ref{tab:depend-table}
+as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
+
+\begin{compactitem}
+\item Build dependencies that are binary compatible with the native build system
+    / CBUILD (\t{BDEPEND}). The ebuild is allowed to call binary executables
+    installed by this kind of dependency.
+\item Build dependencies that are binary compatible with the system being built
+    / CHOST (\t{DEPEND}). The ebuild must not execute binary executables installed
+    by this kind of dependency.
+\end{compactitem}
+
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
 a particular phase function is executed.
 
@@ -90,6 +102,20 @@ be surrounded on both sides by whitespace, except at the start and end of the st
 In particular, note that whitespace is not optional.
 
 \ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting additional dependency types}
+    \label{tab:depend-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
     \label{tab:uri-arrows-table}
     \begin{tabular}{ll}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 31cc5f6..9205125 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{BDEPEND} & \compactfeatureref{bdepend} &
+    No & No & No & No & Yes \\
+
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
     No & No & No & No & Yes \\
 
@@ -409,6 +412,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
+\item \t{BDEPEND}, \featureref{bdepend}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 179ee6a..5180795 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -83,6 +83,7 @@ Ebuilds may define any of the following variables:
     for its value if unset and when used with an eclass. See section~\ref{sec:rdepend-depend} for
     details.
 \item[PDEPEND] See section~\ref{sec:dependencies}.
+\item[BDEPEND] See section~\ref{sec:dependencies}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-28 20:53 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-28 20:53 UTC (permalink / raw
  To: gentoo-commits

commit:     8052e3a1bc25ddd67ad83d8cc0ad36626578ba84
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:23:58 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Sep 28 20:38:45 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=8052e3a1

EAPI 7 has SYSROOT and ESYSROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 47 +++++++++++++++++++++++++++++++++--------------
 2 files changed, 37 insertions(+), 14 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9f39934..f3c68f6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
+    No & No & No & No & Yes \\
+
 GNU patch version & \compactfeatureref{gnu-patch} &
     Any & Any & Any & Any & 2.7 \\
 
@@ -404,6 +407,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
+\item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index fe61ac5..e24a065 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -130,6 +130,20 @@ variable.
     See also the \t{EPREFIX} variable. Only for EAPIs listed
     in table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}. The presence of a trailing
     slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{SYSROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{sysroot} The absolute path to the root directory containing build dependencies
+    satisfied by \t{DEPEND}.  Only for EAPIs listed in table~\ref{tab:added-env-vars-table}
+    as supporting \t{SYSROOT}. The presence of a trailing slash EAPI-dependent as listed
+    in table~\ref{tab:trailing-slash}. \\
+\t{ESYSROOT} &
+    \t{src_*} &
+    No &
+    Contains the concatenation of the paths in \t{SYSROOT} and \t{EPREFIX} variables,
+    for convenience.  See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. The presence of a trailing
+    slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -239,17 +253,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{llllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} \\
+      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  \\
-      5, 6, 7           & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -272,15 +288,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
       \multicolumn{1}{c}{\textbf{\t{EROOT}?}} &
-      \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{ED}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ESYSROOT}?}} \\
       \midrule
-      0, 1, 2           & No  & No  & No  \\
-      3, 4, 5, 6, 7     & Yes & Yes & Yes \\
+      0, 1, 2           & No  & No  & No  & No  \\
+      3, 4, 5, 6        & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -442,16 +460,17 @@ If the path specifies the system root directory, it will be empty.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{2}{c}{\textbf{Ends with a trailing slash?}} \\
+      \multicolumn{3}{c}{\textbf{Ends with a trailing slash?}} \\
       &
       \t{ROOT}, \t{EROOT} &
-      \t{D}, \t{ED} \\
+      \t{D}, \t{ED} &
+      \t{SYSROOT}, \t{ESYSROOT} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & always & always \\
-      7                   & never  & never  \\
+      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    \\
+      7                   & never  & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-28 20:53 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-28 20:53 UTC (permalink / raw
  To: gentoo-commits

commit:     215d9515b8f283888782e9c631c4246c16c9b049
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:39:27 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Sep 28 20:44:09 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=215d9515

EAPI 7 has BROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 33 +++++++++++++++++++++------------
 2 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9205125..af28b7a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{BROOT} & \compactfeatureref{broot} &
+    No & No & No & No & Yes \\
+
 \t{BDEPEND} & \compactfeatureref{bdepend} &
     No & No & No & No & Yes \\
 
@@ -413,6 +416,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
+\item \t{BROOT}, \featureref{broot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e24a065..e91f36e 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -144,6 +144,13 @@ variable.
     for convenience.  See also the \t{EPREFIX} variable. Only for EAPIs listed
     in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. The presence of a trailing
     slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{BROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{broot} The absolute path to the root directory containing build dependencies
+    satisfied by BDEPEND, typically executable build tools. This includes any applicable offset
+    prefix. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as supporting \t{BROOT}.
+    The presence of a trailing slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -253,19 +260,20 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{llllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} \\
+      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} &
+      \multicolumn{1}{P{6em}}{\textbf{\t{BROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  & No  \\
-      5, 6              & Yes & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -288,7 +296,7 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{llllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
@@ -460,17 +468,18 @@ If the path specifies the system root directory, it will be empty.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{3}{c}{\textbf{Ends with a trailing slash?}} \\
+      \multicolumn{4}{c}{\textbf{Ends with a trailing slash?}} \\
       &
       \t{ROOT}, \t{EROOT} &
       \t{D}, \t{ED} &
-      \t{SYSROOT}, \t{ESYSROOT} \\
+      \t{SYSROOT}, \t{ESYSROOT} &
+      \t{BROOT} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    \\
-      7                   & never  & never  & never  \\
+      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    & n/a    \\
+      7                   & never  & never  & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-28 20:53 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-28 20:53 UTC (permalink / raw
  To: gentoo-commits

commit:     3e8c15fe54855cf10f9dfbbaebcf62591c7f864d
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 20:53:59 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Sep 28 20:51:00 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=3e8c15fe

EAPI 7 drops --host-root in favor of -b, -d, and -r

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  8 +++++---
 pkg-mgr-commands.tex | 30 ++++++++++++++++++++----------
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index af28b7a..ace1f55 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -202,8 +202,8 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
-Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & No & Yes & Yes & Yes \\
+PM query options & \compactfeatureref{pm-query-options} &
+    No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
@@ -368,7 +368,7 @@ EAPI 5 is EAPI 4 with the following changes:
 \item \t{USE} is calculated differently, \featureref{profile-iuse-inject}.
 \item \t{find} is guaranteed to be GNU, \featureref{gnu-find}.
 \item \t{best_version} and \t{has_version} support the \t{-{}-host-root} option,
-    \featureref{host-root-option}.
+    \featureref{pm-query-options}.
 \item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}.
 \item \t{doheader} and \t{newheader} support, \featureref{doheader}.
 \item \t{new*} can read from standard input, \featureref{newfoo-stdin}.
@@ -417,6 +417,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
 \item \t{BROOT}, \featureref{broot}.
+\item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
+  \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 6a4415d..8ab8175 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -84,27 +84,37 @@ These commands are used to extract information about the system. Ebuilds must no
 these commands in parallel with any other package manager command. Ebuilds must not run any of
 these commands once the current phase function has returned.
 
-\featurelabel{host-root-option} In EAPIs listed in table~\ref{tab:foo-version-host-root-table} as
-supporting option \t{-{}-host-root}, this flag as the first argument will cause the query to apply
-to the host root instead of \t{ROOT}.
+\featurelabel{pm-query-options} In EAPIs listed in table~\ref{tab:pm-query-options-table}
+as supporting options \t{-b}, \t{-d}, and \t{-r}, these flags as the first argument will cause
+the query to apply to locations targetted by \t{BDEPEND}, \t{DEPEND}, and \t{RDEPEND} respectively.
+When none of these options are given, \t{-r} is assumed.
+
+In EAPIs listed in table~\ref{tab:pm-query-options-table} as supporting option \t{-{}-host-root},
+this flag as the first argument will cause the query to apply to the host root. Otherwise, it
+applies to \t{ROOT}.
+
 \begin{description}
 \item[has_version] Takes exactly one package dependency specification as an argument. Returns
-    true if a package matching the specification is installed in \t{ROOT}, and false otherwise.
+    true if a package matching the specification is installed, and false otherwise.
 \item[best_version] Takes exactly one package dependency specification as an argument. If a
     matching package is installed, prints the category, package name and version of the highest
     matching version; otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*_version} commands}
-    \label{tab:foo-version-host-root-table}
-    \begin{tabular}{ll}
+\begin{centertable}{Package manager query command options supported by EAPIs}
+    \label{tab:pm-query-options-table}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{*_version} supports \t{-{}-host-root}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{-{}-host-root}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-b}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-d}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-r}?}} \\
       \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      0, 1, 2, 3, 4     & No  & No  & No  & No  \\
+      5, 6              & Yes & No  & No  & No  \\
+      7                 & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-29  3:17 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-29  3:17 UTC (permalink / raw
  To: gentoo-commits

commit:     ced97710ef400b3ee68a96a0e37f1c15a1a06548
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:17:43 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Sep 29 03:17:43 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ced97710

EAPI 7 removes PORTDIR and ECLASSDIR.

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 18 +++++++++++-------
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6e82904..3e06916 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{PORTDIR} & \compactfeatureref{portdir} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{ECLASSDIR} & \compactfeatureref{eclassdir} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -431,6 +437,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \item \t{DESTTREE} removed, \featureref{desttree}.
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
+\item \t{PORTDIR} removed, \featureref{portdir}.
+\item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0434083..f495014 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -110,11 +110,13 @@ variable.
 \t{PORTDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's base directory. \\
+    \featurelabel{portdir} The full path to the master repository's base directory.  Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{PORTDIR}. \\
 \t{ECLASSDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's eclass directory. \\
+    \featurelabel{eclassdir} The full path to the master repository's eclass directory.  Only for
+    EAPIs listed in table~\ref{tab:removed-env-vars-table} as supporting \t{ECLASSDIR}.\\
 \t{ROOT} &
    \t{pkg_*} &
    No &
@@ -284,17 +286,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
       \multicolumn{1}{c}{\textbf{\t{KV}?}} &
       \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
-      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
-      4, 5, 6           & No  & No  & Yes & Yes \\
-      7                 & No  & No  & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
+      7                 & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-29  3:17 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-29  3:17 UTC (permalink / raw
  To: gentoo-commits

commit:     f865ce6843d0c2daf5af273e93af24ad07c6c109
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:13:57 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Sep 29 03:13:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f865ce68

EAPI 7 removes DESTTREE and INSDESTTREE.

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 18 ++++++++++++------
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d6bf6b7..6e82904 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{DESTTREE} & \compactfeatureref{desttree} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{INSDESTTREE} & \compactfeatureref{insdesttree} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{package.provided} & \compactfeatureref{package-provided} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -423,6 +429,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
+\item \t{DESTTREE} removed, \featureref{desttree}.
+\item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e91f36e..0434083 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -199,11 +199,14 @@ variable.
 \t{DESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{dobin}, \t{dolib}, \t{domo}, and \t{dosbin} install things. \\
+    \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, \t{domo},
+    and \t{dosbin} install things.  Only for EAPIs listed in table~\ref{tab:removed-env-vars-table}
+    as supporting \t{DESTTREE}. \\
 \t{INSDESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{doins} installs things. \\
+    \featurelabel{insdesttree} Controls the location where \t{doins} installs things. Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{INSDESTTREE}. \\
 \t{USE} &
     All &
     Yes &
@@ -281,14 +284,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
-      \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{KV}?}} &
+      \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes \\
-      4, 5, 6, 7        & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes \\
+      7                 & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-29  3:17 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-29  3:17 UTC (permalink / raw
  To: gentoo-commits

commit:     a31de7d86c26f49e755ad22e45c520b32f13a4cb
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:08:43 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Sep 29 03:08:43 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=a31de7d8

EAPI 7 bans package.provided

 eapi-differences.tex |  4 ++++
 profiles.tex         | 24 ++++++++++++++++++++----
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index ace1f55..d6bf6b7 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.provided} & \compactfeatureref{package-provided} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{BROOT} & \compactfeatureref{broot} &
     No & No & No & No & Yes \\
 
@@ -419,6 +422,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{BROOT}, \featureref{broot}.
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
+\item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/profiles.tex b/profiles.tex
index 99e84ea..edc17af 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -115,10 +115,26 @@ necessarily a global mask (from \t{profiles/package.mask}, section~\ref{profiles
     inherit tree when it comes to \t{-lines}. This behaviour may not be relied upon.
 
 \subsection{package.provided}
-\t{package.provided} is used to tell the package manager that a certain package version should be
-considered to be provided by the system regardless of whether it is actually installed. Because it
-has severe adverse effects on USE-based and slot-based dependencies, its use is strongly deprecated
-and package manager support must be regarded as purely optional.
+\featurelabel{package-provided} \t{package.provided} is used to tell the package manager that
+a certain package version should be considered to be provided by the system regardless of whether it
+is actually installed. Because it has severe adverse effects on USE-based and slot-based
+dependencies, its use is strongly deprecated and package manager support must be regarded as purely
+optional. Banned in EAPIs listed as not allowing \t{package.provided} in
+table~\ref{tab:profile-package-provided}.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Profile \t{package.provided} support}
+    \label{tab:profile-package-provided}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Allows \t{package.provided}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & Yes \\
+      7                   & No  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{package.use}
 The \t{package.use} file may be used by the package manager to override the default USE flags


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-29 13:42 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-29 13:42 UTC (permalink / raw
  To: gentoo-commits

commit:     04425199142505b734e05f53d44cc55354e079b9
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:41:52 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Sep 29 13:41:52 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=04425199

domo installs to /usr in EAPI 7.

 eapi-differences.tex |  8 ++++++++
 pkg-mgr-commands.tex | 25 ++++++++++++++++++++-----
 2 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 3e06916..d9b5558 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,13 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{domo} install path & \compactfeatureref{domo-path} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{/usr\slash share\slash locale} \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -439,6 +446,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
+\item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 8ab8175..bfc3e99 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -542,11 +542,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     the empty string. In EAPIs specified by table~\ref{tab:doman-table}, the \t{-i18n} option takes
     precedence over the language code in the filename.
 
-\item[domo] Installs the given \t{.mo} files with file mode \t{0644} into the appropriate
-    subdirectory of \t{DESTTREE\slash share\slash locale}, generated by taking the basename of the
-    file, removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed
-    files is the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
-    section~\ref{sec:failure-behaviour}.
+\item[domo] \featurelabel{domo-path} Installs the given \t{.mo} files with file mode \t{0644} into
+    the appropriate subdirectory of the locale tree, generated by taking the basename of the file,
+    removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed files is
+    the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
+    section~\ref{sec:failure-behaviour}. The locale tree location is EAPI dependent as per
+    table~\ref{tab:domo-path}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
@@ -666,6 +667,20 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPI-dependent install path for \t{domo} command}
+    \label{tab:domo-path}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{destination path}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}\slash share\slash locale} \\
+      7                   & \t{/usr/share/locale} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees, all relative to \t{\$\{ED\}} in
 offset-prefix aware EAPIs and relative to \t{\$\{D\}} in offset-prefix agnostic EAPIs, used by the


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-29 14:03 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-29 14:03 UTC (permalink / raw
  To: gentoo-commits

commit:     fed17acde8d4345aab1f64c793ab5f9b313d9f14
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:48:46 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Sep 29 13:48:46 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=fed17acd

pkg-mgr-commands: Redefine dolib* in terms of libdir.a

Since EAPI 7 removes dolib, it would be a bad fit to describe the two
other commands on top of one that is removed. Instead, start by defining
libdir.a and then define the two other commands on top of it.

This also clarifies that dolib.a & dolib.so do not respect libopts,
while the old wording was not clear on that. However, this is at least
how it was implemented in Portage (with dolib.a and dolib.so overriding
libopts completely).

 pkg-mgr-commands.tex | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index bfc3e99..ae9a615 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -494,15 +494,16 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     symlink is encountered. Failure behaviour is EAPI dependent as per
     section~\ref{sec:failure-behaviour}.
 
-\item[dolib] For each argument, installs it into the appropriate library subdirectory under
-    \t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files are installed by default
-    with file mode \t{0644}, or with the \t{install} options set by the most recent \t{libopts}
-    call. Any symlinks are installed into the same directory as relative links to their original
-    target. Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
+\item[dolib.a] For each argument, installs it into the appropriate library subdirectory under
+    \t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files are installed
+    with file mode \t{0644}. Any symlinks are installed into the same directory as relative links
+    to their original target. Failure behaviour is EAPI dependent as per
+    section~\ref{sec:failure-behaviour}.
 
-\item[dolib.a] As for \t{dolib} except each file is installed with mode \t{0644}.
+\item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
-\item[dolib.so] As for \t{dolib} except each file is installed with mode \t{0755}.
+\item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
+    the \t{install} options set by the most recent \t{libopts} call.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-29 14:03 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-29 14:03 UTC (permalink / raw
  To: gentoo-commits

commit:     2af1a9536605a3fe41e1b87d491f67889834b8d8
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:02:49 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Sep 29 14:02:49 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=2af1a953

EAPI 7 bans dolib and libopts.

 eapi-differences.tex |  7 +++++++
 pkg-mgr-commands.tex | 22 ++++++++++++++--------
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d9b5558..70eadb5 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -224,6 +224,12 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
+\t{dolib} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
+\t{libopts} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 PM query options & \compactfeatureref{pm-query-options} &
     No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -447,6 +453,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
+\item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ae9a615..f3849fc 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -50,20 +50,22 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{4}{c}{\textbf{Command banned?}} \\
+      \multicolumn{6}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
       \multicolumn{1}{c}{\textbf{\t{dosed}}} &
       \multicolumn{1}{c}{\textbf{\t{einstall}}} &
-      \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
+      \multicolumn{1}{c}{\textbf{\t{dohtml}}} &
+      \multicolumn{1}{c}{\textbf{\t{dolib}}} &
+      \multicolumn{1}{c}{\textbf{\t{libopts}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4, 5              & Yes & Yes & No  & No  \\
-      6                 & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  & No  & No  & No  \\
+      6                 & Yes & Yes & Yes & No  & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -503,7 +505,9 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 \item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
 \item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
-    the \t{install} options set by the most recent \t{libopts} call.
+    the \t{install} options set by the most recent \t{libopts} call. In EAPIs listed
+    in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}
@@ -714,6 +718,8 @@ has returned.
 \item[exeopts] Sets the options passed by \t{doexe} et al.\ to the \t{install} command.
 
 \item[libopts] Sets the options passed by \t{dolib} et al.\ to the \t{install} command.
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as
+    per section~\ref{sec:banned-commands}.
 
 \end{description}
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-29 14:33 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-29 14:33 UTC (permalink / raw
  To: gentoo-commits

commit:     61e07aa2093c913d93039c6404a49e838224f473
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:24:10 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Sep 29 14:24:10 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=61e07aa2

EAPI 7 provides command fallback for nonfatal.

 eapi-differences.tex |  5 +++++
 pkg-mgr-commands.tex | 17 ++++++++++++-----
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 70eadb5..fb469f6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{nonfatal} function+command & \compactfeatureref{nonfatal-fallback} &
+    No & No & No & No & Yes \\
+
 \t{domo} install path & \compactfeatureref{domo-path} &
     \t{\$\{DESTTREE\}\slash share\slash locale} &
     \t{\$\{DESTTREE\}\slash share\slash locale} &
@@ -454,6 +457,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
+\item \t{nonfatal} defined both as a shell function and external command,
+  \featureref{nonfatal-fallback}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index f3849fc..c17c9cc 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -22,6 +22,11 @@ The following commands affect this behaviour:
     the build process due to a failure, instead a non-zero exit status shall be returned. Only in
     EAPIs listed in table~\ref{tab:commands-die-table} as supporting \t{nonfatal}.
 
+    \featurelabel{nonfatal-fallback} In EAPIs listed in table~\ref{tab:commands-die-table}
+    as having \t{nonfatal} defined as both function and external command, the package manager must
+    provide both implementations to account both for calling in ebuild scope directly, and via
+    \t{xargs}.
+
     Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when called with the \t{-n}
     option and in EAPIs supporting this option, see table~\ref{tab:nonfatal-die}.
 \end{description}
@@ -29,14 +34,16 @@ The following commands affect this behaviour:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Command failure behaviour}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
+      \multicolumn{1}{P{8em}}{\textbf{Command failure behaviour}} &
+      \multicolumn{1}{P{6em}}{\textbf{Supports \t{nonfatal}?}} &
+      \multicolumn{1}{P{12em}}{\textbf{\t{nonfatal} as both function and external command?}} \\
       \midrule
-      0, 1, 2, 3        & Non-zero exit & No  \\
-      4, 5, 6, 7        & Aborts        & Yes \\
+      0, 1, 2, 3        & Non-zero exit & No  & n/a \\
+      4, 5, 6           & Aborts        & Yes & No  \\
+      7                 & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-09-29 14:33 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-09-29 14:33 UTC (permalink / raw
  To: gentoo-commits

commit:     1c4f4985480ca80b2ebae0b3bd0a9b034f2976d1
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:33:22 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Sep 29 14:33:22 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=1c4f4985

EAPI 7 allows die in subshell.

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 23 +++++++++++++++--------
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index fb469f6..a0d1f01 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{die} in subshell & \compactfeatureref{subshell-die} &
+    No & No & No & No & Yes \\
+
 \t{nonfatal} function+command & \compactfeatureref{nonfatal-fallback} &
     No & No & No & No & Yes \\
 
@@ -459,6 +462,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item \t{nonfatal} defined both as a shell function and external command,
   \featureref{nonfatal-fallback}.
+\item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c17c9cc..af4cd35 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -181,23 +181,30 @@ completing. Ebuilds must not run any of these commands once the current phase fu
 \item[die] \featurelabel{nonfatal-die} If called under the \t{nonfatal} command (as per
     section~\ref{sec:failure-behaviour}) and with \t{-n} as its first parameter, displays a failure
     message provided in its following argument and then returns a non-zero exit status. Only in
-    EAPIs listed in table~\ref{tab:nonfatal-die} as supporting option~\t{-n}. Otherwise, displays
+    EAPIs listed in table~\ref{tab:die-properties} as supporting option~\t{-n}. Otherwise, displays
     a failure message provided in its first and only argument, and then aborts the build process.
-    \t{die} is \e{not} guaranteed to work correctly if called from a subshell environment.
+
+    \featurelabel{subshell-die} In EAPIs listed in table~\ref{tab:die-properties} as not providing
+    subshell support, \t{die} is \e{not} guaranteed to work correctly if called from a subshell
+    environment.
 \item[assert] Checks the value of the shell's pipe status variable, and if any component is non-zero
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} commands}
-    \label{tab:nonfatal-die}
-    \begin{tabular}{ll}
+\begin{centertable}{EAPI-specific properties of \t{die} and \t{assert} commands}
+    \label{tab:die-properties}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
+      \multicolumn{2}{c}{\textbf{\t{die} and \t{assert}}} \\
+      &
+      \multicolumn{1}{c}{\textbf{support \t{-n}?}} &
+      \multicolumn{1}{c}{\textbf{work in subshell?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5  & No  \\
-      6, 7              & Yes \\
+      0, 1, 2, 3, 4, 5  & No  & No  \\
+      6                 & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-01  7:11 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-01  7:11 UTC (permalink / raw
  To: gentoo-commits

commit:     92d5586a5522db487b6dab304dc3fc3a113daaeb
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 30 23:06:39 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Oct  1 07:11:35 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=92d5586a

[WIP] EAPI 7 bans all-of groups in REQUIRED_USE.

Reword the allowed variable list for the all-of group to account for
additional restrictions of EAPI 7. The use in REQUIRED_USE is banned
explicitly as it leads to ambiguity in automatic solver actions.
The use in SRC_URI becomes meaningless given that it is only permitted
inside any-of, and any-of is not permitted there.

[TODO: add label & update eapi-differences]

Bug: https://bugs.gentoo.org/632000

 dependencies.tex | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index fd142bb..dca4a21 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -87,8 +87,9 @@ be surrounded on both sides by whitespace, except at the start and end of the st
 \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
     by a close parenthesis. More formally:
-    \t{all-of} \t{::=} \t{'(' whitespace (item whitespace)* ')'}. Permitted in all specification
-    style variables. Permitted inside groups listed in table~\ref{tab:depend-nesting}.
+    \t{all-of} \t{::=} \t{'(' whitespace (item whitespace)* ')'}. Permitted in variables listed
+    in table~\ref{tab:depend-group-variables}. Permitted inside groups listed
+    in table~\ref{tab:depend-nesting}.
 \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
     of (a dependency item of any kind followed by whitespace), followed by a close parenthesis.
@@ -188,6 +189,21 @@ In particular, note that whitespace is not optional.
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPI-specific group use restrictions}
+    \label{tab:depend-group-variables}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{all-of}} \\
+      & \multicolumn{1}{c}{\textbf{permitted inside}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & all specification style variables \\
+      7                   & \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{All-of dependency specifications}
 
 In an all-of group, all of the child elements must be matched.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-01  7:11 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-01  7:11 UTC (permalink / raw
  To: gentoo-commits

commit:     83161067ec7fd04a0a3d8dbd403732b72bf99238
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 30 21:59:50 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Oct  1 07:11:21 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=83161067

[WIP] EAPI 7 limits dependency group nesting.

Restrict allowed dependency group nesting in EAPI 7. Most of the groups
can only be used at top-level and inside USE-conditional groups (which
can be reduced predictably). All-of groups are only permitted where they
are really meaningful -- in any-of groups. Any more complex nesting is
forbidden.

This not only ensures that the dependency syntax variables stay more
readable but also put lower requirements on the dependency parser
and other mechanisms working with the variables.

[TODO: add label & update eapi-differences]

Bug: https://bugs.gentoo.org/632000

 dependencies.tex | 37 +++++++++++++++++++++++++++++++++----
 1 file changed, 33 insertions(+), 4 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index fa818b7..fd142bb 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,31 +88,36 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     followed by zero 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
-    style variables.
+    style variables. Permitted inside groups listed in table~\ref{tab:depend-nesting}.
 \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
     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)* ')'}.
     Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
+    Permitted inside groups listed in table~\ref{tab:depend-nesting}.
 \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
     parenthesis. More formally: \t{exactly-one-of} \t{::=} \t{'\textasciicircum\textasciicircum'
     whitespace '(' whitespace (item whitespace)* ')'}.
-    Permitted in \t{REQUIRED_USE}.
+    Permitted in \t{REQUIRED_USE}. Permitted inside groups listed in table~\ref{tab:depend-nesting}.
 \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{at-most-one-of} \t{::=} \t{'??'\ 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.
+    table~\ref{tab:at-most-one-of-table} as supporting \t{REQUIRED_USE ??}\ groups. Permitted inside
+    groups listed in table~\ref{tab:depend-nesting}.
+
+    In EAPIs blah blah permitted only at top-level and inside USE-conditional group.
 \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
     of any kind followed by whitespace), followed by a close parenthesis. More formally:
     \t{use-conditional} \t{::=} \t{'!'?\ flag-name '?'\ whitespace '(' whitespace (item
     whitespace)* ')'}.
-    Permitted in all specification style variables.
+    Permitted in all specification style variables. Permitted inside groups listed
+    in table~\ref{tab:depend-nesting}.
 \end{compactitem}
 
 In particular, note that whitespace is not optional.
@@ -159,6 +164,30 @@ In particular, note that whitespace is not optional.
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPI-specific group nesting restrictions}
+    \label{tab:depend-nesting}
+    \begin{tabular}{lP{4em}P{4em}P{4em}P{4em}P{4em}}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{all-of}} &
+      \multicolumn{1}{c}{\textbf{any-of}} &
+      \multicolumn{1}{c}{\textbf{exactly-one-of}} &
+      \multicolumn{1}{c}{\textbf{at-most-one-of}} &
+      \multicolumn{1}{c}{\textbf{use-conditional}} \\
+      & \multicolumn{5}{c}{\textbf{permitted inside}} \\
+      \midrule
+      0, 1, 2, 3, 4       & all groups & all groups & all groups & n/a        & all groups \\
+      5, 6                & all groups & all groups & all groups & all groups & all groups \\
+      7                   & any-of
+                          & top, use-conditional
+                          & top, use-conditional
+                          & top, use-conditional
+                          & top, use-conditional \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{All-of dependency specifications}
 
 In an all-of group, all of the child elements must be matched.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-01  7:11 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-01  7:11 UTC (permalink / raw
  To: gentoo-commits

commit:     9cf9fc132e3d7f4431ab3db43555bd5c123d692d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Oct  1 07:07:48 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Oct  1 07:11:40 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=9cf9fc13

[WIP] EAPI 7 forbids empty dependency groups.

[TODO: add label & update eapi-differences]

Bug: https://bugs.gentoo.org/632000

 dependencies.tex | 31 +++++++++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index dca4a21..0cad80e 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -208,6 +208,8 @@ In particular, note that whitespace is not optional.
 
 In an all-of group, all of the child elements must be matched.
 
+The behavior for an empty group is defined in table~\ref{tab:depend-group-empty}.
+
 \subsection{USE-conditional dependency specifications}
 
 In a use-conditional group, if the associated use flag is enabled (or disabled if it has an
@@ -216,6 +218,8 @@ exclamation mark prefix), all of the child elements must be matched.
 It is an error for a flag to be used if it is not included in \t{IUSE_EFFECTIVE} as described in
 section~\ref{sec:use-iuse-handling}.
 
+The behavior for an empty group is defined in table~\ref{tab:depend-group-empty}.
+
 \subsection{Any-of dependency specifications}
 
 Any use-conditional group that is an immediate child of an any-of group, if not enabled (disabled
@@ -225,7 +229,7 @@ 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.
+The behavior for an empty group is defined in table~\ref{tab:depend-group-empty}.
 
 \subsection{Exactly-one-of dependency specifications}
 
@@ -235,7 +239,7 @@ 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.
+The behavior for an empty group is defined in table~\ref{tab:depend-group-empty}.
 
 \subsection{At-most-one-of dependency specifications}
 
@@ -245,6 +249,29 @@ at-most-one-of group for match purposes.
 
 In an at-most-one-of group, at most one immediate child element must be matched.
 
+The behavior for an empty group is defined in table~\ref{tab:depend-group-empty}.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPI-specific empty group behavior}
+    \label{tab:depend-group-empty}
+    \begin{tabular}{llllll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{5}{c}{\textbf{Empty group counts as…}} \\
+	  &
+      \multicolumn{1}{c}{\textbf{all-of}} &
+      \multicolumn{1}{c}{\textbf{use-conditional}} &
+      \multicolumn{1}{c}{\textbf{any-of}} &
+      \multicolumn{1}{c}{\textbf{exactly-one-of}} &
+      \multicolumn{1}{c}{\textbf{at-most-one-of}} \\
+      \midrule
+      0, 1, 2, 3, 4 & undefined & undefined & matched   & matched   & n/a       \\
+      5, 6          & undefined & undefined & matched   & matched   & matched   \\
+      7             & forbidden & forbidden & forbidden & forbidden & forbidden \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Package dependency specifications}
 
 A package dependency can be in one of the following base formats. A package manager must warn or


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:10 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:10 UTC (permalink / raw
  To: gentoo-commits

commit:     5cda43ceeaf4ed87ad4938fd20dfc7d16bb32c0d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:10:08 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:10:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=5cda43ce

EAPI 7 has automatic USE enforcing.

 dependencies.tex     | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 eapi-differences.tex |  4 ++++
 profiles.tex         |  1 +
 3 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index fa818b7..617c1a3 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -379,16 +379,82 @@ It is an error for an ebuild to use a conditional use dependency when that ebuil
 flag in \t{IUSE_EFFECTIVE}.
 
 \subsection{USE state constraints}
+
 \label{sec:required-use}
 \t{REQUIRED_USE} contains a list of assertions that must be met by the configuration of \t{USE}
 flags to be valid for this ebuild. In order to be matched, a \t{USE} flag in a terminal element
 must be enabled (or disabled if it has an exclamation mark prefix).
 
 If the package manager encounters a package version where \t{REQUIRED_USE} assertions are not met,
-it must treat this package version as if it was masked. No phase functions must be called.
+it should attempt to automatically enforce the necessary flags as detailed
+in section~\ref{sec:enforce-required-use}. If this feature is not supported or it fails to resolve
+the problem, the package manager must treat this package version as if it was masked. No phase
+functions must be called in that case.
 
 It is an error for a flag to be used if it is not included in \t{IUSE_EFFECTIVE}.
 
+\subsubsection{Automatic enforcing of REQUIRED_USE}
+\label{sec:enforce-required-use}
+
+\featurelabel{auto-req-use} In EAPIs listed in table~\ref{tab:enforce-required-use-table} as
+supporting enforcing of \t{REQUIRED_USE}, the package manager can attempt to resolve unmet USE state
+constraints through automatically adjusting the effective USE flags for the package being built,
+according to the algorithm specified below. Any adjustments done this way must not affect
+the package version permanently. The package manager must reevaluate the flags using the original
+user configuration every time the package is being built.
+
+The package flags that are either masked or forced according to the section~\ref{sec:use-mask-force}
+are considered immutable. The enforcing process must not alter the values of immutable flags.
+If the \t{REQUIRED_USE} constraint can not be satisfied without altering immutable flags, automatic
+enforcing fails.
+
+In order to enforce \t{REQUIRED_USE}, the package manager should process every USE constraint,
+in order of listing, according to the following rules:
+
+\begin{compactitem}
+\item For an unmatched use flag, the package manager should negate the state of the specified flag
+    in order to make the constraint match.
+\item For an unmatched all-of group, the package manager should recursively enforce all
+    constraints inside the group, in order of listing.
+\item For an unmatched use-conditonal group, the package manager should recursively enforce all
+    constraints inside the group, in order of listing. The associated condition flag is not altered.
+\item For an unmatched any-of group, the package manager should recursively enforce the first item
+    inside the group that can be enforced without altering immutable flags, in order of listing.
+\item For an unmatched at-most-one-of group:
+    \begin{compactitem}
+    \item If two or more items match due to immutable flags, the package manager must report
+        failure.
+    \item If exactly one of the items match due to immutable flags, the package manager should
+        enforce all other items not to match, according to the rule specified below.
+    \item If none of the items match due to immutable flags, the package manager should enforce all
+        items not to match but the first item in order of listing that matches currently.
+    \end{compactitem}
+\item For an unmatched exactly-one-of group:
+    \begin{compactitem}
+    \item If none of the items match, the package manager should behave as for unmatched any-of
+        group.
+    \item If more than one item matches, the package manager should behave as for unmatched
+        at-most-one-of group.
+    \end{compactitem}
+\end{compactitem}
+
+In order to enforce a matched use flag item not to match, the package manager should negate
+the state of the flag. The method of enforcing any other item type not to match is undefined.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting automatic enforcing of \t{REQUIRED_USE}}
+    \label{tab:enforce-required-use-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports enforcing \t{REQUIRED_USE}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Restrict}
 \label{sec:restrict}
 

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a0d1f01..87ce708 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{REQUIRED_USE} autoenforced & \compactfeatureref{auto-req-use} &
+    No & No & No & No & Yes \\
+
 \t{die} in subshell & \compactfeatureref{subshell-die} &
     No & No & No & No & Yes \\
 
@@ -463,6 +466,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{nonfatal} defined both as a shell function and external command,
   \featureref{nonfatal-fallback}.
 \item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
+\item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/profiles.tex b/profiles.tex
index edc17af..46c7928 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -145,6 +145,7 @@ specification is limited to the forms defined by the directory's EAPI. In some E
 \t{package.use} can be a directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 \subsection{USE masking and forcing}
+\label{sec:use-mask-force}
 This section covers the eight files \t{use.mask}, \t{use.force}, \t{use.stable.mask},
 \t{use.stable.force}, \t{package.use.mask}, \t{package.use.force}, \t{package.use.stable.mask},
 and \t{package.use.\allowbreak stable.force}. They are described together because they interact in


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     5e37ba4a07bd42e4657cfe4790e8a82812aebdbd
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:23:58 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:18:35 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=5e37ba4a

EAPI 7 has SYSROOT and ESYSROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 47 +++++++++++++++++++++++++++++++++--------------
 2 files changed, 37 insertions(+), 14 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9f39934..f3c68f6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
+    No & No & No & No & Yes \\
+
 GNU patch version & \compactfeatureref{gnu-patch} &
     Any & Any & Any & Any & 2.7 \\
 
@@ -404,6 +407,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
+\item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index fe61ac5..e24a065 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -130,6 +130,20 @@ variable.
     See also the \t{EPREFIX} variable. Only for EAPIs listed
     in table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}. The presence of a trailing
     slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{SYSROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{sysroot} The absolute path to the root directory containing build dependencies
+    satisfied by \t{DEPEND}.  Only for EAPIs listed in table~\ref{tab:added-env-vars-table}
+    as supporting \t{SYSROOT}. The presence of a trailing slash EAPI-dependent as listed
+    in table~\ref{tab:trailing-slash}. \\
+\t{ESYSROOT} &
+    \t{src_*} &
+    No &
+    Contains the concatenation of the paths in \t{SYSROOT} and \t{EPREFIX} variables,
+    for convenience.  See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. The presence of a trailing
+    slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -239,17 +253,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{llllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} \\
+      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  \\
-      5, 6, 7           & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -272,15 +288,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
       \multicolumn{1}{c}{\textbf{\t{EROOT}?}} &
-      \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{ED}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ESYSROOT}?}} \\
       \midrule
-      0, 1, 2           & No  & No  & No  \\
-      3, 4, 5, 6, 7     & Yes & Yes & Yes \\
+      0, 1, 2           & No  & No  & No  & No  \\
+      3, 4, 5, 6        & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -442,16 +460,17 @@ If the path specifies the system root directory, it will be empty.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{2}{c}{\textbf{Ends with a trailing slash?}} \\
+      \multicolumn{3}{c}{\textbf{Ends with a trailing slash?}} \\
       &
       \t{ROOT}, \t{EROOT} &
-      \t{D}, \t{ED} \\
+      \t{D}, \t{ED} &
+      \t{SYSROOT}, \t{ESYSROOT} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & always & always \\
-      7                   & never  & never  \\
+      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    \\
+      7                   & never  & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     2074897629bcbbc1d91f92bbdab7dbb32365c6eb
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 16:20:11 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:18:35 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=20748976

EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED.

Bug: https://bugs.gentoo.org/465772

 eapi-differences.tex |  5 +++++
 ebuild-env-vars.tex  | 58 ++++++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 055e6c6..939c501 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+Trailing slash in \t{ROOT}, \t{D}... & \compactfeatureref{trailing-slash} &
+    Yes & Yes & Yes & Yes & No \\
+
 Output cmds can use stdout & \compactfeatureref{output-no-stdout} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -395,6 +398,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Version manipulation and comparison functions added, \featureref{ver-functions}.
 \item \t{eqawarn} added, \featureref{eqawarn}.
 \item Output commands can no longer use stdout, \featureref{output-no-stdout}.
+\item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
+    \featureref{trailing-slash}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 1851aba..fe61ac5 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -121,14 +121,15 @@ variable.
    The absolute path to the root directory into which the package is to be merged.  Phases which run
    with full filesystem access must not touch any files outside of the directory given in
    \t{ROOT}\@. Also of note is that in a cross-compiling environment, binaries inside of \t{ROOT}
-   will not be executable on the build machine, so ebuilds must not call them. \t{ROOT} must be
-   non-empty and end in a trailing slash. \\
+   will not be executable on the build machine, so ebuilds must not call them. The presence of
+   a trailing slash is EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{EROOT} &
     \t{pkg_*} &
     No &
-    Contains the path \t{\$\{ROOT\%/\}\$\{EPREFIX\}/} for convenience. See also the
-    \t{EPREFIX} variable. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as
-    supporting \t{EROOT}. \\
+    Contains the concatenation of the paths in \t{ROOT} and \t{EPREFIX} variables, for convenience.
+    See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}. The presence of a trailing
+    slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -159,18 +160,21 @@ variable.
     \t{src_install} &
     No &
     Contains the full path to the image directory into which the package should be installed.
-    Must be non-empty and end in a trailing slash. \\
+    The presence of a trailing slash is EAPI-dependent as listed in table~\ref{tab:trailing-slash}.
+    \\
 \t{D} (continued) &
     \t{pkg_preinst}, \t{pkg_postinst} &
     Yes &
-    Contains the full path to the image that is about to be or has just been merged. Must be
-    non-empty and end in a trailing slash. \\
+    Contains the full path to the image that is about to be or has just been merged.
+    The presence of a trailing slash is EAPI-dependent as listed in table~\ref{tab:trailing-slash}.
+    \\
 \t{ED} &
     \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst} &
     See \t{D} &
-    Contains the path \t{\$\{D\%/\}\$\{EPREFIX\}/} for convenience. See also the
-    \t{EPREFIX} variable. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as
-    supporting \t{ED}. \\
+    Contains the concatenation of the paths in \t{D} and \t{EPREFIX} variables, for convenience.
+    See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{ED}. The presence of a trailing
+    slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{DESTTREE} &
     \t{src_install} &
     No &
@@ -420,6 +424,38 @@ behaviour of offset-prefix aware and agnostic is the same when \t{EPREFIX} is se
 string in offset-prefix aware EAPIs. The latter do have the variables \t{ED} and \t{EROOT} properly
 set, though.
 
+\subsection{Path variables and trailing slash}
+\label{sec:trailing-slash}
+
+Unless specified otherwise, the paths provided through package manager variables do not end with
+a trailing slash and can not be empty. A few exceptions to that rule are listed
+in table~\ref{tab:trailing-slash} along with applicable EAPIs.
+
+For EAPIs where those variables are defined to always end with a trailing slash, the package manager
+guarantees that a trailing slash will always be appended to the path in question. If the path
+specifies the system root directory, it will consist of a single slash (\t{/}).
+
+\featurelabel{trailing-slash} For EAPIs where those variables are defined to never end with
+a trailing slash, the package manager guarantees that a trailing slash will never be present.
+If the path specifies the system root directory, it will be empty.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Variables that always or never end with a trailing slash}
+    \label{tab:trailing-slash}
+    \begin{tabular}{lll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{2}{c}{\textbf{Ends with a trailing slash?}} \\
+      &
+      \t{ROOT}, \t{EROOT} &
+      \t{D}, \t{ED} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & always & always \\
+      7                   & never  & never  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
 %%% Local Variables:


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     7ef8f9b6625d1c729835b3407fc161c08a2899ee
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 14:05:38 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:18:35 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=7ef8f9b6

EAPI 7 has eqawarn

Bug: https://bugs.gentoo.org/482884

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 18 ++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a56f1ff..34ee0c9 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{eqawarn} & \compactfeatureref{eqawarn} &
+    No & No & No & No & Yes \\
+
 \t{ver_*} functions & \compactfeatureref{ver-functions} &
     No & No & No & No & Yes \\
 
@@ -387,6 +390,7 @@ EAPI 7 is EAPI 6 with the following changes:
     directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item Version manipulation and comparison functions added, \featureref{ver-functions}.
+\item \t{eqawarn} added, \featureref{eqawarn}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 15bfcde..c7f3696 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -124,6 +124,10 @@ stderr or some other appropriate facility.
     example.
 \item[ewarn] Displays a warning message. Must not go to stdout.
 \item[eerror] Displays an error message. Must not go to stdout.
+\item[eqawarn] \featurelabel{eqawarn} Display a QA warning message intended for ebuild developers.
+    The package manager may provide appropriate mechanisms to skip those messages for normal users.
+    Must not go to stdout.  Only available in EAPIs listed in table~\ref{tab:output-commands} as
+    supporting \t{eqawarn}.
 \item[ebegin] Displays an informational message. Should be used when beginning a possibly
     lengthy process, and followed by a call to \t{eend}.
 \item[eend] Indicates that the process begun with an \t{ebegin} message has completed. Takes one
@@ -132,6 +136,20 @@ stderr or some other appropriate facility.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Output commands for EAPIs}
+    \label{tab:output-commands}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6  & No  \\
+      7                    & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Error commands}
 These commands are used when an error is detected that will prevent the build process from
 completing. Ebuilds must not run any of these commands once the current phase function has returned.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     facd8791f609c4162bbcbf48193762db3e80db8e
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 27 21:23:22 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:18:35 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=facd8791

EAPI 7 has version manipulation and comparison functions

Bug: https://bugs.gentoo.org/482170

 eapi-differences.tex |  4 +++
 pkg-mgr-commands.tex | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 84 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 44869c0..a56f1ff 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{ver_*} functions & \compactfeatureref{ver-functions} &
+    No & No & No & No & Yes \\
+
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
     No & No & No & No & Yes \\
 
@@ -383,6 +386,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{package.mask}, \t{package.use}, \t{use.*} and \t{package.use.*} in a profile can be
     directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
+\item Version manipulation and comparison functions added, \featureref{ver-functions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index e8a6555..15bfcde 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -817,6 +817,86 @@ These functions check whitespace-separated lists for a particular value.
 \item[hasq] Deprecated synonym for \t{has}.
 \end{description}
 
+\subsubsection{Version manipulation and comparison commands}
+\featurelabel{ver-functions}
+Those functions provide routines to work with version strings. Their availability per EAPI is listed
+in table~\ref{tab:version-functions}.
+
+For the purpose of version manipulation functions, the specification provides a method for splitting
+an arbitrary version string (not necessarily conforming to \ref{sec:version-spec}) into a series of
+version components and version separators.
+
+A version component consists either purely of digits (\t{[0-9]+}) or purely of a combination of
+uppercase and lowercase letters (\t{[a-zA-Z]+}). A version separator is either a string of any other
+characters (\t{[\textasciicircum 0-9a-zA-Z]}) or it occurs at the transition between a sequence of digits
+and a sequence of letters, or vice versa. In the latter case, the version separator is an empty
+string.
+
+The version string is processed left-to-right, with the successive version components being assigned
+successive indices starting with 1. The separator following a version component is assigned
+the index of the preceding version component. If the first version component is preceded by
+a non-null string of version separator characters, this separator is assigned the index 0.
+
+The version components are presumed present if not empty. The version separators between version
+components are always presumed present, even if they are empty. The version separators preceding
+the first version component and following the last are only presumed present if they are not empty.
+
+Whenever the functions support ranges, the range is specified as a non-negative integer, optionally
+followed by a hyphen (\t{-}), which in turn is optionally followed by another non-negative integer.
+
+A single integer specifies a single component or separator index. An integer followed by a hyphen
+specifies all components or separators starting with the one at specified index. Two integers
+separated by a hyphen specify a range of versions starting at the index specified by the first
+and ending at the second, inclusively.
+
+\begin{description}
+\item[ver_cut] Takes a range as the first argument, and optionally a version string as the second.
+    Prints a substring of the version string starting at the version component specified as start
+    of the range and ending at the version component specified as end of the range. If the version
+    string is not specified, \t{\$\{PVR\}} is used.
+
+    If the range spans outside the present version components, the missing components and separators
+    are presumed empty. In particular, the range starting at zero includes zeroth version separator
+    if present, and the range spanning past the last version component includes the suffix following
+    it if present. A range that does not intersect with any present version components yields empty
+    string.
+
+\item[ver_rs] Takes one or more pairs of arguments, optionally followed by a version string. Every
+    argument pair specifies a range and a replacement string. Prints a version string after
+    performing the specified separator substitutions. If the version string is not specified,
+    \t{\$\{PVR\}} is used.
+
+    For every argument pair specified, each of the version separators present at indices specified
+    by the range is replaced with the replacement string, in order. If the range spans outside
+    the range of present version separators, it is silently truncated.
+
+\item[ver_test] Takes two or three arguments. In the 3-argument form, it takes a LHS version string,
+    followed by an operator, followed by RHS version string. In the 2-argument form, the first
+    version string is omitted and \t{\$\{PVR\}} is used as LHS version string. Returns 0
+    if the specified relation between LHS and RHS version strings is true.
+
+    The operator can be \t{-lt}, \t{-le}, \t{-eq}, \t{-ne}, \t{-ge} and \t{-gt} to test whether
+    LHS is respectively older than, older or equal, equal, not equal, newer or equal, and newer
+    than RHS. Both version strings must conform to the version specification
+    at~\ref{sec:version-spec}, the comparison is done using algorithm~\ref{alg:version-comparison}.
+\end{description}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting version manipulation commands}
+    \label{tab:version-functions}
+    \begin{tabular}{llll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
+      7                   & Yes & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Misc commands}
 The following commands are always available in the ebuild environment, but don't really fit in any
 of the above categories. Ebuilds must not run any of these commands once the current phase function


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     f718767fbf5eca500ae4a13518cf81a944c706bd
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 15 17:19:43 2015 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:18:35 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f718767f

EAPI feature table: Consolidate EAPIs 0 to 3.

With the addition of EAPI 7, the table was too wide again.

 eapi-differences.tex | 143 +++++++++++++++++++++++++--------------------------
 1 file changed, 70 insertions(+), 73 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 590b42e..dbde139 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,22 +1,22 @@
 \chapter{Feature Availability by EAPI}
 
 \note This chapter is informative and for convenience only. Refer to the main text for specifics.
-For lack of space, EAPIs 0, 1, and~2 have been consolidated into a single column in the table
+For lack of space, EAPIs 0, 1, 2, and~3 have been consolidated into a single column in the table
 below; entries marked with an asterisk differ between these EAPIs. See the 2012-09-20 edition
 of this document for a complete table of previous EAPIs.
+% 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
 
 \ChangeWhenAddingAnEAPI{7}
 \begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\b{Feature}} &
 \multicolumn{1}{c}{\b{Reference}} &
-\multicolumn{6}{c}{\b{EAPIs}} \\
+\multicolumn{5}{c}{\b{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2} &
-\multicolumn{1}{c}{3} &
+\multicolumn{1}{c}{0, 1, 2, 3} &
 \multicolumn{1}{c}{4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
@@ -26,11 +26,10 @@ of this document for a complete table of previous EAPIs.
 \midrule
 \multicolumn{1}{c}{\b{Feature}} &
 \multicolumn{1}{c}{\b{Reference}} &
-\multicolumn{6}{c}{\b{EAPIs}} \\
+\multicolumn{5}{c}{\b{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2} &
-\multicolumn{1}{c}{3} &
+\multicolumn{1}{c}{0, 1, 2, 3} &
 \multicolumn{1}{c}{4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
@@ -43,79 +42,77 @@ of this document for a complete table of previous EAPIs.
 \endlastfoot
 
 Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 3.2 & 3.2 & 4.2 & 4.2 \\
+    3.2 & 3.2 & 3.2 & 4.2 & 4.2 \\
 
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{REQUIRED_USE} & \compactfeatureref{required-use} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{PROPERTIES} & \compactfeatureref{properties} &
-    Optionally & Optionally & Yes & Yes & Yes & Yes \\
+    Optionally & Yes & Yes & Yes & Yes \\
 
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    Yes & Yes & No & No & No & No \\
+    Yes & No & No & No & No \\
 
 \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-    Optionally & Optionally & Yes & Yes & Yes & Yes \\
+    Optionally & Yes & Yes & Yes & Yes \\
 
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named & Named & Named and Operator & Named and Operator & Named and Operator \\
+    * & Named & Named and Operator & Named and Operator & Named and Operator \\
 
 Sub-slots & \compactfeatureref{sub-slot} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
-    * & 2-style & 4-style & 4-style & 4-style & 4-style \\
+    * & 4-style & 4-style & 4-style & 4-style \\
 
 \t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak & Weak \\
+    * & Weak & Weak & Weak & Weak \\
 
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong & Strong \\
+    * & Strong & Strong & Strong & Strong \\
 
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    Always & Always & Conditional & Conditional & Conditional & Conditional \\
+    Always & Conditional & Conditional & Conditional & Conditional \\
 
 \t{pkg_pretend} & \compactfeatureref{pkg-pretend} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & no-op & no-op & 6 & 6 \\
+    * & no-op & no-op & 6 & 6 \\
 
 \t{src_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{src_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 & 2 \\
+    * & 2 & 2 & 2 & 2 \\
 
 Parallel tests & \compactfeatureref{parallel-tests} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{src_install} style & \compactfeatureref{src-install} &
-    no-op & no-op & 4 & 4 & 6 & 6 \\
+    no-op & 4 & 4 & 6 & 6 \\
 
 \t{pkg_info} & \compactfeatureref{pkg-info} &
-    Installed & Installed & Both & Both & Both & Both \\
+    Installed & Both & Both & Both & Both \\
 
 \t{default_} phase functions & \compactfeatureref{default-phase-funcs} &
     * &
     \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
         \t{src_compile}, \t{src_install}, \t{src_test} &
     \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
         \t{src_compile}, \t{src_install}, \t{src_test} &
@@ -125,127 +122,127 @@ Parallel tests & \compactfeatureref{parallel-tests} &
         \t{src_compile}, \t{src_install}, \t{src_test} \\
 
 \t{AA} & \compactfeatureref{aa} &
-    Yes & Yes & No & No & No & No \\
+    Yes & No & No & No & No \\
 
 \t{KV} & \compactfeatureref{kv} &
-    Yes & Yes & No & No & No & No \\
+    Yes & No & No & No & No \\
 
 \t{EBUILD_PHASE_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{MERGE_TYPE} & \compactfeatureref{merge-type} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Undefined & Undefined & Yes & Yes \\
+    Undefined & Undefined & Undefined & Yes & Yes \\
 
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{REPLACING_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{REPLACED_BY_VERSION} & \compactfeatureref{replace-version-vars} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Undefined & Undefined & Yes & Yes & Yes \\
+    Undefined & Undefined & Yes & Yes & Yes \\
 
 Most utilities die & \compactfeatureref{die-on-failure} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned & Banned \\
+    Yes & Banned & Banned & Banned & Banned \\
 
 \t{dosed} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned & Banned \\
+    Yes & Banned & Banned & Banned & Banned \\
 
 \t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned \\
 
 Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{eapply} & \compactfeatureref{eapply} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{eapply_user} & \compactfeatureref{eapply-user} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{econf} arguments & \compactfeatureref{econf-options} &
-    &  & disable dependency tracking &
+    & disable dependency tracking &
     disable dependency tracking, disable silent rules &
     disable dependency tracking, disable silent rules, docdir, htmldir &
     disable dependency tracking, disable silent rules, docdir, htmldir \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{doheader} & \compactfeatureref{doheader} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{doins} handles symlinks & \compactfeatureref{doins} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & No & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 Controllable compression & \compactfeatureref{docompress} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{docompress} & \compactfeatureref{docompress} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{usex} & \compactfeatureref{usex} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{in_iuse} & \compactfeatureref{in-iuse} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    Undefined & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \end{longtable}
 \end{landscape}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     b5c7c413ea66ccae1b309413560fb1fc8b24bb68
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 14:10:20 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:18:35 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=b5c7c413

EAPI 7 disallows stdout output of output functions

Bug: https://bugs.gentoo.org/483240

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 17 +++++++++++------
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 34ee0c9..055e6c6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+Output cmds can use stdout & \compactfeatureref{output-no-stdout} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{eqawarn} & \compactfeatureref{eqawarn} &
     No & No & No & No & Yes \\
 
@@ -391,6 +394,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item Version manipulation and comparison functions added, \featureref{ver-functions}.
 \item \t{eqawarn} added, \featureref{eqawarn}.
+\item Output commands can no longer use stdout, \featureref{output-no-stdout}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c7f3696..5bb8b68 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -114,8 +114,12 @@ These commands display messages to the user. Unless otherwise stated, the entire
 used as a message, with backslash-escaped characters interpreted as for the \t{echo -e} command of
 bash, notably \t{\textbackslash t} for a horizontal tab, \t{\textbackslash n} for a new line, and
 \t{\textbackslash\textbackslash} for a literal backslash. Ebuilds must not run any of these commands
-once the current phase function has returned. Unless otherwise noted, output may be sent to stdout,
-stderr or some other appropriate facility.
+once the current phase function has returned.
+
+\featurelabel{output-no-stdout} Unless otherwise noted, output may be sent to stderr or some other
+appropriate facility. In EAPIs listed in table~\ref{tab:output-commands} as not allowing stdout
+output, using stdout as an output facility is forbidden.
+
 \begin{description}
 \item[einfo] Displays an informational message.
 \item[einfon] Displays an informational message without a trailing newline.
@@ -139,13 +143,14 @@ stderr or some other appropriate facility.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
-    \begin{tabular}{ll}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} &
+      \multicolumn{1}{c}{\textbf{can output to stdout?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6  & No  \\
-      7                    & Yes \\
+      0, 1, 2, 3, 4, 5, 6  & No  & Yes \\
+      7                    & Yes & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     1fde5457ee59915a3e651a7cd2bc5bf4725f38a4
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 29 23:01:54 2015 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:18:35 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=1fde5457

EAPI 7 supports directories for profile files.

Bug: 282296

 eapi-differences.tex |  5 +++++
 profiles.tex         | 38 +++++++++++++++++++++++++++++++-------
 2 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9d7ec60..44869c0 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -44,6 +44,9 @@ of this document for a complete table of previous EAPIs.
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
     No & No & No & No & Yes \\
 
+Profile files as directories & \compactfeatureref{profile-file-dirs} &
+    No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
     No & No & Yes & Yes & Yes \\
 
@@ -377,6 +380,8 @@ EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
 \item \t{profiles/package.mask} can be a directory, \featureref{package-mask-dir}.
+\item \t{package.mask}, \t{package.use}, \t{use.*} and \t{package.use.*} in a profile can be
+    directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/profiles.tex b/profiles.tex
index 0d7164e..99e84ea 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -69,6 +69,27 @@ parent profile's list is taken, and the current profile's list appended. If any
 hyphen, then any lines previous to it whose contents are equal to the remainder of that line are
 removed from the list. Once again, blank lines and those beginning with a \# are discarded.
 
+\featurelabel{profile-file-dirs} In EAPIs listed in table~\ref{tab:profile-file-dirs} as supporting
+directories for profile files, any of the files \t{package.mask}, \t{package.use}, \t{use.*} and
+\t{package.use.*} mentioned below can be a directory instead of a regular file. Files contained
+in that directory, unless their name begins with a dot, will be concatenated in order of their
+filename in the POSIX locale and the result will be processed as if it were a single file.
+Any subdirectories will be ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting directories for profile files}
+    \label{tab:profile-file-dirs}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{packages}
 The \t{packages} file is used to define the `system set' for this profile.
 After the above rules for inheritance and comments are applied, its lines must take one of two
@@ -84,7 +105,8 @@ but is mentioned here for completeness.
 \subsection{package.mask}
 \t{package.mask} is used to prevent packages from being installed on a given profile. Each line
 contains one package dependency specification; anything matching this specification will not be
-installed unless unmasked by the user's configuration.
+installed unless unmasked by the user's configuration. In some EAPIs, \t{package.mask} can be a
+directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 Note that the \t{-spec} syntax can be used to remove a mask in a parent profile, but not
 necessarily a global mask (from \t{profiles/package.mask}, section~\ref{profiles-package.mask}).
@@ -99,17 +121,19 @@ has severe adverse effects on USE-based and slot-based dependencies, its use is
 and package manager support must be regarded as purely optional.
 
 \subsection{package.use}
-The \t{package.use} file may be used by the package manager to override the default USE flags specified
-by \t{make.defaults} on a per package basis.  The format is to have a package dependency specification,
-and then a space delimited list of USE flags to enable.  A USE flag in the form of \t{-flag} indicates
-that the package should have the USE flag disabled.  The package dependency specification is limited to
-the forms defined by the directory's EAPI.
+The \t{package.use} file may be used by the package manager to override the default USE flags
+specified by \t{make.defaults} on a per package basis. The format is to have a package dependency
+specification, and then a space delimited list of USE flags to enable. A USE flag in the form of
+\t{-flag} indicates that the package should have the USE flag disabled. The package dependency
+specification is limited to the forms defined by the directory's EAPI. In some EAPIs,
+\t{package.use} can be a directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 \subsection{USE masking and forcing}
 This section covers the eight files \t{use.mask}, \t{use.force}, \t{use.stable.mask},
 \t{use.stable.force}, \t{package.use.mask}, \t{package.use.force}, \t{package.use.stable.mask},
 and \t{package.use.\allowbreak stable.force}. They are described together because they interact in
-a non-trivial manner.
+a non-trivial manner. In some EAPIs, these files can be directories instead of regular files as per
+section~\ref{sec:line-stacking}.
 
 Simply speaking, \t{use.mask} and \t{use.force} are used to say that a given USE flag must never or
 always, respectively, be enabled when using this profile. \t{package.use.mask} and


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     55790fe5f62fbfe2b509f501546a7cb0f78ad586
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 15 17:20:13 2015 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:18:35 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=55790fe5

EAPI 7: dohtml banned.

Bug: 520546

 eapi-differences.tex |  5 ++++-
 pkg-mgr-commands.tex | 16 ++++++++++------
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index dbde139..d6e270a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -169,6 +169,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{einstall} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Banned & Banned \\
 
+\t{dohtml} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
     No & No & Yes & Yes & Yes \\
 
@@ -370,7 +373,7 @@ EAPI 6 is EAPI 5 with the following changes:
 EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
-\item None
+\item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index b94d689..e8a6555 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -50,18 +50,20 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{3}{c}{\textbf{Command banned?}} \\
+      \multicolumn{4}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
       \multicolumn{1}{c}{\textbf{\t{dosed}}} &
-      \multicolumn{1}{c}{\textbf{\t{einstall}}} \\
+      \multicolumn{1}{c}{\textbf{\t{einstall}}} &
+      \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  \\
-      4, 5              & Yes & Yes & No  \\
-      6, 7              & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  & No  \\
+      6                 & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -432,6 +434,8 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     offset-prefix.
 \end{description}
 
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
     Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
 
     It is undefined whether a failure shall occur if \t{-r} is not specified and a directory is


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     cdb90005dc23205b0add29ef023f2687f022cb40
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 17:50:56 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:18:35 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=cdb90005

EAPI 7 requires GNU patch 2.7.

Bug: https://bugs.gentoo.org/593786

 eapi-differences.tex    |  4 ++++
 ebuild-env-commands.tex | 15 +++++++++------
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 939c501..9f39934 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+GNU patch version & \compactfeatureref{gnu-patch} &
+    Any & Any & Any & Any & 2.7 \\
+
 Trailing slash in \t{ROOT}, \t{D}... & \compactfeatureref{trailing-slash} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -400,6 +403,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Output commands can no longer use stdout, \featureref{output-no-stdout}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
+\item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-commands.tex b/ebuild-env-commands.tex
index 590f709..f5e1c07 100644
--- a/ebuild-env-commands.tex
+++ b/ebuild-env-commands.tex
@@ -26,7 +26,8 @@ The following commands must always be available in the ebuild environment:
     page~\pageref{tab:bash-version}.
 \item \t{sed} must be available, and must support all forms of invocations valid for GNU sed
     version 4 or later.
-\item \t{patch} must be available, and must support all inputs valid for GNU patch.
+\item \featurelabel{gnu-patch} \t{patch} must be available, and must support all inputs valid
+	for GNU patch, version as listed in table~\ref{tab:system-commands-table}.
 \item \featurelabel{gnu-find} \t{find} and \t{xargs} must be available, and must support all forms
     of invocations valid for GNU findutils version 4.4 or later. Only for EAPIs listed in
     table~\ref{tab:system-commands-table} as requiring GNU find.
@@ -41,15 +42,17 @@ during filename expansion result in an error when the ebuild is being sourced.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{GNU \t{find}?}} &
-      \multicolumn{1}{c}{\textbf{\t{failglob} in global scope?}} \\
+      \multicolumn{1}{c}{\textbf{\t{failglob} in global scope?}} &
+      \multicolumn{1}{c}{\textbf{GNU patch version}} \\
       \midrule
-      0, 1, 2, 3, 4     & Undefined & No  \\
-      5                 & Yes       & No  \\
-      6, 7              & Yes       & Yes \\
+      0, 1, 2, 3, 4     & Undefined & No  & Any \\
+      5                 & Yes       & No  & Any \\
+      6                 & Yes       & Yes & Any \\
+      7                 & Yes       & Yes & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     cc1cb9ab27f048c77a92ba9819d26b693993f446
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 29 23:00:32 2015 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:18:35 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=cc1cb9ab

EAPI 7 supports a directory for package.mask.

Bug: 282296

 eapi-differences.tex |  4 ++++
 tree-layout.tex      | 20 ++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d6e270a..9d7ec60 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.mask} directory & \compactfeatureref{package-mask-dir} &
+    No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
     No & No & Yes & Yes & Yes \\
 
@@ -373,6 +376,7 @@ EAPI 6 is EAPI 5 with the following changes:
 EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
+\item \t{profiles/package.mask} can be a directory, \featureref{package-mask-dir}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/tree-layout.tex b/tree-layout.tex
index 1c23357..d09feef 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -107,6 +107,12 @@ manager must ignore any files in this directory that it does not recognise.
     Contains a list, one entry per line, of package dependency specifications (using the directory's
     EAPI). Any package version matching one of these is considered to be masked, and will not be
     installed regardless of profile unless it is unmasked by the user configuration.
+
+    \featurelabel{package-mask-dir} For EAPIs listed in table~\ref{tab:package-mask-dir} as
+    supporting it, \t{package.mask} can be a directory instead of a regular file. Files contained
+    in that directory, unless their name begins with a dot, will be concatenated in order of their
+    filename in the POSIX locale and the result will be processed as if it were a single file.
+    Any subdirectories will be ignored.
 \item[profiles.desc] Described below in section~\ref{sec:profiles.desc}.
 \item[repo_name] Contains, on a single line, the name of this repository. The repository name must
     conform to section~\ref{sec:repository-names}.
@@ -123,6 +129,20 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
+    \label{tab:package-mask-dir}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{The profiles.desc file}
 \label{sec:profiles.desc}
 \t{profiles.desc} is a line-based file, with the standard commenting


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     3bfcfb78fa8bd128789ab3114859167e8fc597f4
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 15 17:18:58 2015 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:18:35 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=3bfcfb78

Add an EAPI 7 identical to EAPI 6.

 dependencies.tex        |  20 +++----
 eapi-differences.tex    | 151 ++++++++++++++++++++++++++----------------------
 eapis.tex               |   7 ++-
 ebuild-env-commands.tex |   4 +-
 ebuild-env-vars.tex     |  20 +++----
 ebuild-format.tex       |   4 +-
 ebuild-functions.tex    |  36 ++++++------
 ebuild-vars.tex         |  18 +++---
 merge.tex               |   4 +-
 pkg-mgr-commands.tex    |  70 +++++++++++-----------
 pms.tex                 |   4 +-
 profile-variables.tex   |   4 +-
 profiles.tex            |   4 +-
 13 files changed, 180 insertions(+), 166 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 1aea135..258b394 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -92,7 +92,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st
 
 In particular, note that whitespace is not optional.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
     \label{tab:uri-arrows-table}
     \begin{tabular}{ll}
@@ -101,12 +101,12 @@ In particular, note that whitespace is not optional.
       \multicolumn{1}{c}{\textbf{Supports \t{SRC_URI} arrows?}} \\
       \midrule
       0, 1              & No  \\
-      2, 3, 4, 5, 6     & Yes \\
+      2, 3, 4, 5, 6, 7  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
     \label{tab:at-most-one-of-table}
     \begin{tabular}{ll}
@@ -115,7 +115,7 @@ In particular, note that whitespace is not optional.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      5, 6, 7           & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -184,7 +184,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
 
 \note Order is important. The slot restriction must come before use dependencies.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
     \label{tab:slot-deps-table}
     \begin{tabular}{lll}
@@ -195,12 +195,12 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0                 & No                 & No  \\
       1, 2, 3, 4        & Named only         & No  \\
-      5, 6              & Named and operator & Yes \\
+      5, 6, 7           & Named and operator & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
     \label{tab:use-deps-table}
     \begin{tabular}{ll}
@@ -210,7 +210,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0, 1              & No      \\
       2, 3              & 2-style \\
-      4, 5, 6           & 4-style \\
+      4, 5, 6, 7        & 4-style \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -249,7 +249,7 @@ ignored by the package manager, so long as any blocked package will be uninstall
 strong block must not be ignored. The mapping from one or two exclamation marks to strength is
 described in table~\ref{tab:bang-strength-table}.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Exclamation mark strengths for EAPIs}
     \label{tab:bang-strength-table}
     \begin{tabular}{lll}
@@ -259,7 +259,7 @@ described in table~\ref{tab:bang-strength-table}.
       \multicolumn{1}{c}{\textbf{\t{!!}}} \\
       \midrule
       0, 1              & Unspecified & Forbidden \\
-      2, 3, 4, 5, 6     & Weak        & Strong    \\
+      2, 3, 4, 5, 6, 7  & Weak        & Strong    \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8f8bf72..590b42e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -5,34 +5,36 @@ For lack of space, EAPIs 0, 1, and~2 have been consolidated into a single column
 below; entries marked with an asterisk differ between these EAPIs. See the 2012-09-20 edition
 of this document for a complete table of previous EAPIs.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\b{Feature}} &
 \multicolumn{1}{c}{\b{Reference}} &
-\multicolumn{5}{c}{\b{EAPIs}} \\
+\multicolumn{6}{c}{\b{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{0, 1, 2} &
 \multicolumn{1}{c}{3} &
 \multicolumn{1}{c}{4} &
 \multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} \\
+\multicolumn{1}{c}{6} &
+\multicolumn{1}{c}{7} \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\b{Feature}} &
 \multicolumn{1}{c}{\b{Reference}} &
-\multicolumn{5}{c}{\b{EAPIs}} \\
+\multicolumn{6}{c}{\b{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{0, 1, 2} &
 \multicolumn{1}{c}{3} &
 \multicolumn{1}{c}{4} &
 \multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} \\
+\multicolumn{1}{c}{6} &
+\multicolumn{1}{c}{7} \\
 \midrule
 \endhead
 \midrule
@@ -41,73 +43,73 @@ of this document for a complete table of previous EAPIs.
 \endlastfoot
 
 Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 3.2 & 3.2 & 4.2 \\
+    3.2 & 3.2 & 3.2 & 3.2 & 4.2 & 4.2 \\
 
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{REQUIRED_USE} & \compactfeatureref{required-use} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{PROPERTIES} & \compactfeatureref{properties} &
-    Optionally & Optionally & Yes & Yes & Yes \\
+    Optionally & Optionally & Yes & Yes & Yes & Yes \\
 
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No & No \\
 
 \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-    Optionally & Optionally & Yes & Yes & Yes \\
+    Optionally & Optionally & Yes & Yes & Yes & Yes \\
 
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named & Named & Named and Operator & Named and Operator \\
+    * & Named & Named & Named and Operator & Named and Operator & Named and Operator \\
 
 Sub-slots & \compactfeatureref{sub-slot} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
-    * & 2-style & 4-style & 4-style & 4-style \\
+    * & 2-style & 4-style & 4-style & 4-style & 4-style \\
 
 \t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak \\
+    * & Weak & Weak & Weak & Weak & Weak \\
 
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong \\
+    * & Strong & Strong & Strong & Strong & Strong \\
 
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    Always & Always & Conditional & Conditional & Conditional \\
+    Always & Always & Conditional & Conditional & Conditional & Conditional \\
 
 \t{pkg_pretend} & \compactfeatureref{pkg-pretend} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & no-op & no-op & 6 \\
+    * & no-op & no-op & no-op & 6 & 6 \\
 
 \t{src_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 \\
+    * & 2 & 2 & 2 & 2 & 2 \\
 
 Parallel tests & \compactfeatureref{parallel-tests} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{src_install} style & \compactfeatureref{src-install} &
-    no-op & no-op & 4 & 4 & 6 \\
+    no-op & no-op & 4 & 4 & 6 & 6 \\
 
 \t{pkg_info} & \compactfeatureref{pkg-info} &
-    Installed & Installed & Both & Both & Both \\
+    Installed & Installed & Both & Both & Both & Both \\
 
 \t{default_} phase functions & \compactfeatureref{default-phase-funcs} &
     * &
@@ -118,129 +120,132 @@ Parallel tests & \compactfeatureref{parallel-tests} &
     \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
         \t{src_compile}, \t{src_install}, \t{src_test} &
     \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
+        \t{src_compile}, \t{src_install}, \t{src_test} &
+    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
         \t{src_compile}, \t{src_install}, \t{src_test} \\
 
 \t{AA} & \compactfeatureref{aa} &
-    Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No & No \\
 
 \t{KV} & \compactfeatureref{kv} &
-    Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No & No \\
 
 \t{EBUILD_PHASE_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{MERGE_TYPE} & \compactfeatureref{merge-type} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Undefined & Undefined & Yes \\
+    Undefined & Undefined & Undefined & Undefined & Yes & Yes \\
 
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{REPLACING_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{REPLACED_BY_VERSION} & \compactfeatureref{replace-version-vars} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Undefined & Undefined & Yes & Yes \\
+    Undefined & Undefined & Undefined & Yes & Yes & Yes \\
 
 Most utilities die & \compactfeatureref{die-on-failure} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned & Banned \\
 
 \t{dosed} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned & Banned \\
 
 \t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Yes & Yes & Banned & Banned \\
 
 Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{eapply} & \compactfeatureref{eapply} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{eapply_user} & \compactfeatureref{eapply-user} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{econf} arguments & \compactfeatureref{econf-options} &
     &  & disable dependency tracking &
     disable dependency tracking, disable silent rules &
+    disable dependency tracking, disable silent rules, docdir, htmldir &
     disable dependency tracking, disable silent rules, docdir, htmldir \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{doheader} & \compactfeatureref{doheader} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{doins} handles symlinks & \compactfeatureref{doins} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & No & Yes & Yes & Yes \\
+    * & No & Yes & Yes & Yes & Yes \\
 
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 Controllable compression & \compactfeatureref{docompress} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{docompress} & \compactfeatureref{docompress} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{usex} & \compactfeatureref{usex} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{in_iuse} & \compactfeatureref{in-iuse} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    Undefined & Yes & Yes & Yes & Yes \\
+    Undefined & Yes & Yes & Yes & Yes & Yes \\
 
 \end{longtable}
 \end{landscape}
@@ -363,7 +368,15 @@ EAPI 6 is EAPI 5 with the following changes:
 \item \t{get_libdir} support, \featureref{get-libdir}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{6}
+\section{EAPI 7}
+
+EAPI 7 is EAPI 6 with the following changes:
+
+\begin{compactitem}
+\item None
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{7}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 

diff --git a/eapis.tex b/eapis.tex
index 7178e5a..6c015a2 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -19,8 +19,8 @@ EAPIs are also used for profile directories, as described in section~\ref{sec:pr
 
 The following EAPIs are defined by this specification:
 
-\ChangeWhenAddingAnEAPI{6}
-\begin{description}
+\ChangeWhenAddingAnEAPI{7}
+\begin{compactdesc}
 \item[0] The `original' base EAPI.
 \item[1] EAPI `1' contains a number of extensions to EAPI `0'.
 \item[2] EAPI `2' contains a number of extensions to EAPI `1'.
@@ -28,7 +28,8 @@ The following EAPIs are defined by this specification:
 \item[4] EAPI `4' contains a number of extensions to EAPI `3'.
 \item[5] EAPI `5' contains a number of extensions to EAPI `4'.
 \item[6] EAPI `6' contains a number of extensions to EAPI `5'.
-\end{description}
+\item[7] EAPI `7' contains a number of extensions to EAPI `6'.
+\end{compactdesc}
 
 Except where explicitly noted, everything in this specification
 applies to all of the above EAPIs.%

diff --git a/ebuild-env-commands.tex b/ebuild-env-commands.tex
index d1773f5..590f709 100644
--- a/ebuild-env-commands.tex
+++ b/ebuild-env-commands.tex
@@ -38,7 +38,7 @@ The following commands must always be available in the ebuild environment:
 \t{failglob} option of bash is set in the global scope of ebuilds. If set, failed pattern matches
 during filename expansion result in an error when the ebuild is being sourced.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
     \begin{tabular}{lll}
@@ -49,7 +49,7 @@ during filename expansion result in an error when the ebuild is being sourced.
       \midrule
       0, 1, 2, 3, 4     & Undefined & No  \\
       5                 & Yes       & No  \\
-      6                 & Yes       & Yes \\
+      6, 7              & Yes       & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 5d42cba..1851aba 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -232,7 +232,7 @@ variable.
 \end{longtable}
 \end{landscape}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
     \begin{tabular}{lllll}
@@ -245,12 +245,12 @@ variable.
       \midrule
       0, 1, 2, 3        & No  & No  & No  & No  \\
       4                 & Yes & Yes & Yes & No  \\
-      5, 6              & Yes & Yes & Yes & Yes \\
+      5, 6, 7           & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
     \begin{tabular}{lll}
@@ -260,12 +260,12 @@ variable.
       \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
       \midrule
       0, 1, 2, 3        & Yes & Yes \\
-      4, 5, 6           & No  & No  \\
+      4, 5, 6, 7        & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
     \begin{tabular}{llll}
@@ -276,7 +276,7 @@ variable.
       \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
       \midrule
       0, 1, 2           & No  & No  & No  \\
-      3, 4, 5, 6        & Yes & Yes & Yes \\
+      3, 4, 5, 6, 7     & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -298,7 +298,7 @@ must not be set.
 ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in
 table~\ref{tab:locale-settings}.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Locale settings for EAPIs}
     \label{tab:locale-settings}
     \begin{tabular}{ll}
@@ -307,7 +307,7 @@ table~\ref{tab:locale-settings}.
       \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & Undefined \\
-      6                 & Yes       \\
+      6, 7              & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -396,7 +396,7 @@ contain at most one value.
 \subsection{Offset-prefix variables}
 \label{sec:offset-vars}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix}
     \label{tab:offset-support-table}
     \begin{tabular}{ll}
@@ -405,7 +405,7 @@ contain at most one value.
       \multicolumn{1}{c}{\textbf{Supports offset-prefix?}}\\
       \midrule
       0, 1, 2           & No  \\
-      3, 4, 5, 6        & Yes \\
+      3, 4, 5, 6, 7     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 638f773..66259e0 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -12,7 +12,7 @@ certain variables and functions (see sections~\ref{sec:ebuild-vars} and~\ref{sec
 for specific information), and must not call any external programs, write anything to standard
 output or standard error, or modify the state of the system in any way.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Bash version}
     \label{tab:bash-version}
     \begin{tabular}{ll}
@@ -21,7 +21,7 @@ output or standard error, or modify the state of the system in any way.
       \multicolumn{1}{c}{\textbf{Bash version}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & 3.2 \\
-      6                 & 4.2 \\
+      6, 7              & 4.2 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index e90c050..e3d5602 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -43,7 +43,7 @@ fallback to \t{WORKDIR} is used:
     in \t{DEFINED_PHASES}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
     \label{tab:s-fallback-table}
     \begin{tabular}{ll}
@@ -52,7 +52,7 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Fallback to \t{WORKDIR} permitted?}} \\
       \midrule
       0, 1, 2, 3        & Always            \\
-      4, 5, 6           & Conditional error \\
+      4, 5, 6, 7        & Conditional error \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -74,7 +74,7 @@ before the next phase is executed.
 
 \t{pkg_pretend} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{pkg_pretend}}
     \label{tab:pkg-pretend-table}
     \begin{tabular}{ll}
@@ -83,7 +83,7 @@ before the next phase is executed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_pretend}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6           & Yes \\
+      4, 5, 6, 7        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -146,7 +146,7 @@ src_prepare() {
 For other EAPIs supporting \t{src_prepare}, the default implementation used when the ebuild lacks
 the \t{src_prepare} function is a no-op.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{\t{src_prepare} support and behaviour for EAPIs}
     \label{tab:src-prepare-table}
     \begin{tabular}{lll}
@@ -157,7 +157,7 @@ the \t{src_prepare} function is a no-op.
       \midrule
       0, 1              & No  & Not applicable \\
       2, 3, 4, 5        & Yes & no-op          \\
-      6                 & Yes & 6              \\
+      6, 7              & Yes & 6              \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -184,7 +184,7 @@ src_configure() {
 \end{verbatim}
 \end{listing}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{src_configure}}
     \label{tab:src-configure-table}
     \begin{tabular}{ll}
@@ -193,7 +193,7 @@ src_configure() {
       \multicolumn{1}{c}{\textbf{Supports \t{src_configure}?}} \\
       \midrule
       0, 1              & No  \\
-      2, 3, 4, 5, 6     & Yes \\
+      2, 3, 4, 5, 6, 7  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -257,7 +257,7 @@ src_compile() {
 \end{verbatim}
 \end{listing}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{\t{src_compile} behaviour for EAPIs}
     \label{tab:src-compile-table}
     \begin{tabular}{ll}
@@ -267,7 +267,7 @@ src_compile() {
       \midrule
       0                 & 0 \\
       1                 & 1 \\
-      2, 3, 4, 5, 6     & 2 \\
+      2, 3, 4, 5, 6, 7  & 2 \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -289,7 +289,7 @@ parallel tests, the \t{emake} command must be called with option \t{-j1}.
 The \t{src_test} function may be disabled by \t{RESTRICT}\@. See section~\ref{sec:restrict}. It may
 be disabled by user too, using a PM-specific mechanism.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{\t{src_test} behaviour for EAPIs}
     \label{tab:src-test-table}
     \begin{tabular}{ll}
@@ -298,7 +298,7 @@ be disabled by user too, using a PM-specific mechanism.
       \multicolumn{1}{c}{\textbf{Supports parallel tests?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      5, 6, 7           & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -357,7 +357,7 @@ src_install() {
 For other EAPIs, the default implementation used when the ebuild lacks the \t{src_install} function
 is a no-op.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{\t{src_install} behaviour for EAPIs}
     \label{tab:src-install-table}
     \begin{tabular}{ll}
@@ -367,7 +367,7 @@ is a no-op.
       \midrule
       0, 1, 2, 3        & no-op \\
       4, 5              & 4     \\
-      6                 & 6     \\
+      6, 7              & 6     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -425,7 +425,7 @@ that dependencies may not be installed.
 
 \t{pkg_info} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{pkg_info} on non-installed packages}
     \label{tab:pkg-info-table}
     \begin{tabular}{ll}
@@ -434,7 +434,7 @@ that dependencies may not be installed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_info} on non-installed packages?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6           & Yes \\
+      4, 5, 6, 7        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -456,7 +456,7 @@ named \t{default_}(phase) that behaves as the default implementation for that EA
 when executing any ebuild phase listed in the table. Ebuilds must not call these functions except
 when in the phase in question.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{default_} phase functions}
     \label{tab:default-phase-function-table}
     \begin{tabular}{l P{26em}}
@@ -467,7 +467,7 @@ when in the phase in question.
       0, 1              & None \\
       2, 3              & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test} \\
-      4, 5, 6           & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
+      4, 5, 6, 7        & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_install}, \t{src_test} \\
       \bottomrule
     \end{tabular}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 8c05ce9..32f853c 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -85,7 +85,7 @@ Ebuilds may define any of the following variables:
 \item[PDEPEND] See section~\ref{sec:dependencies}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{IUSE} defaults}
     \label{tab:iuse-defaults-table}
     \begin{tabular}{ll}
@@ -93,13 +93,13 @@ Ebuilds may define any of the following variables:
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{IUSE} defaults?}} \\
       \midrule
-      0                 & No  \\
-      1, 2, 3, 4, 5, 6  & Yes \\
+      0                         & No  \\
+      1, 2, 3, 4, 5, 6, 7       & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
     \begin{tabular}{lll}
@@ -109,7 +109,7 @@ Ebuilds may define any of the following variables:
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6           & Yes        & Yes \\
+      4, 5, 6, 7        & Yes        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -177,7 +177,7 @@ any \t{DEPEND} or \t{RDEPEND} set in an eclass does not change the implicit \t{R
 the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treated as being part of
 \t{RDEPEND}.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} default}
     \label{tab:rdepend-depend-table}
     \begin{tabular}{ll}
@@ -186,7 +186,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
       \multicolumn{1}{c}{\textbf{\t{RDEPEND=DEPEND}?}} \\
       \midrule
       0, 1, 2, 3        & Yes \\
-      4, 5, 6           & No  \\
+      4, 5, 6, 7        & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -220,7 +220,7 @@ this variable defined, and must treat an empty string as ``this information is n
 \note Thus, by extension of section~\ref{sec:metadata-invariance}, phase functions must not be defined
 based upon any variant condition.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{DEFINED_PHASES}}
     \label{tab:defined-phases-table}
     \begin{tabular}{ll}
@@ -229,7 +229,7 @@ based upon any variant condition.
       \multicolumn{1}{c}{\textbf{Supports \t{DEFINED_PHASES}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally \\
-      4, 5, 6           & Yes        \\
+      4, 5, 6, 7        & Yes        \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/merge.tex b/merge.tex
index ee40947..d23d5f0 100644
--- a/merge.tex
+++ b/merge.tex
@@ -86,7 +86,7 @@ held under the original image directory.
 In other EAPIs, the behaviour with respect to file modification times
 is undefined.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Preservation of file modification times (mtimes)}
     \label{tab:mtime-preserve}
     \begin{tabular}{ll}
@@ -95,7 +95,7 @@ is undefined.
       \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\
       \midrule
       0, 1, 2           & Undefined \\
-      3, 4, 5, 6        & Yes       \\
+      3, 4, 5, 6, 7     & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 6fd35ae..b94d689 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -26,7 +26,7 @@ The following commands affect this behaviour:
     option and in EAPIs supporting this option, see table~\ref{tab:nonfatal-die}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
     \begin{tabular}{lll}
@@ -36,7 +36,7 @@ The following commands affect this behaviour:
       \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
       \midrule
       0, 1, 2, 3        & Non-zero exit & No  \\
-      4, 5, 6           & Aborts        & Yes \\
+      4, 5, 6, 7        & Aborts        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -47,7 +47,7 @@ The following commands affect this behaviour:
 \featurelabel{banned-commands} Some commands are banned in some EAPIs. If a banned command is
 called, the package manager must abort the build process indicating an error.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
     \begin{tabular}{llll}
@@ -61,7 +61,7 @@ called, the package manager must abort the build process indicating an error.
       \midrule
       0, 1, 2, 3        & No  & No  & No  \\
       4, 5              & Yes & Yes & No  \\
-      6                 & Yes & Yes & Yes \\
+      6, 7              & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -93,7 +93,7 @@ to the host root instead of \t{ROOT}.
     matching version; otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*_version} commands}
     \label{tab:foo-version-host-root-table}
     \begin{tabular}{ll}
@@ -144,7 +144,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} commands}
     \label{tab:nonfatal-die}
     \begin{tabular}{ll}
@@ -153,7 +153,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
       \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & No  \\
-      6                 & Yes \\
+      6, 7              & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -217,7 +217,7 @@ Ebuilds must not run any of these commands once the current phase function has r
     subsequent calls, the command will do nothing and return~0.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Patch commands for EAPIs}
     \label{tab:patch-commands}
     \begin{tabular}{lll}
@@ -227,7 +227,7 @@ Ebuilds must not run any of these commands once the current phase function has r
       \multicolumn{1}{c}{\textbf{\t{eapply_user}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
-      6                 & Yes & Yes \\
+      6, 7              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -268,7 +268,7 @@ current phase function has returned.
         in the output of \t{configure -{}-help}.
     \end{itemize}
 
-    \ChangeWhenAddingAnEAPI{6}
+    \ChangeWhenAddingAnEAPI{7}
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
         \begin{tabular}{lllll}
@@ -282,7 +282,7 @@ current phase function has returned.
           0, 1, 2, 3        & No  & No  & No  & No  \\
           4                 & Yes & No  & No  & No  \\
           5                 & Yes & Yes & No  & No  \\
-          6                 & Yes & Yes & Yes & Yes \\
+          6, 7              & Yes & Yes & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -552,7 +552,7 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{dodoc -r}}
     \label{tab:dodoc-table}
     \begin{tabular}{ll}
@@ -561,12 +561,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
       \multicolumn{1}{c}{\textbf{Supports \t{dodoc -r}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6           & Yes \\
+      4, 5, 6, 7        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}}
     \label{tab:doheader-table}
     \begin{tabular}{ll}
@@ -575,12 +575,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
       \multicolumn{1}{c}{\textbf{Supports \t{doheader} and \t{newheader}?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      5, 6, 7           & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting symlinks for \t{doins}}
     \label{tab:doins-table}
     \begin{tabular}{ll}
@@ -589,12 +589,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
       \multicolumn{1}{c}{\textbf{\t{doins} supports symlinks?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6           & Yes \\
+      4, 5, 6, 7        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{\t{doman} language support options for EAPIs}
     \label{tab:doman-table}
     \begin{tabular}{lll}
@@ -605,12 +605,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
       \midrule
       0, 1              & No  & Not applicable \\
       2, 3              & Yes & No             \\
-      4, 5, 6           & Yes & Yes            \\
+      4, 5, 6, 7        & Yes & Yes            \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting stdin for \t{new*} commands}
     \label{tab:newfoo-stdin-table}
     \begin{tabular}{ll}
@@ -619,7 +619,7 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
       \multicolumn{1}{c}{\textbf{\t{new*} can read from stdin?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      5, 6, 7           & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -706,7 +706,7 @@ exclusion list. Otherwise, add each argument to the inclusion list. Only availab
 in table~\ref{tab:compression-table} as supporting \t{docompress}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting controllable compression}
     \label{tab:compression-table}
     \begin{tabular}{lll}
@@ -716,7 +716,7 @@ in table~\ref{tab:compression-table} as supporting \t{docompress}.
       \multicolumn{1}{c}{\textbf{Supports \t{docompress}?}} \\
       \midrule
       0, 1, 2, 3        & No  & No  \\
-      4, 5, 6           & Yes & Yes \\
+      4, 5, 6, 7        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -759,7 +759,7 @@ table~\ref{tab:use-list-strictness}.
     table~\ref{tab:use-list-functions} as supporting \t{in_iuse}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI behaviour for use queries not in \t{IUSE_EFFECTIVE}}
     \label{tab:use-list-strictness}
     \begin{tabular}{ll}
@@ -768,12 +768,12 @@ table~\ref{tab:use-list-strictness}.
       \multicolumn{1}{c}{\textbf{Behaviour}} \\
       \midrule
       0, 1, 2, 3        & Undefined \\
-      4, 5, 6           & Error     \\
+      4, 5, 6, 7        & Error     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting empty third argument in \t{use_with} and \t{use_enable}}
     \label{tab:use-with-third-arg}
     \begin{tabular}{ll}
@@ -782,12 +782,12 @@ table~\ref{tab:use-list-strictness}.
       \multicolumn{1}{c}{\textbf{Supports empty third argument?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6           & Yes \\
+      4, 5, 6, 7        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{usex} and \t{in_iuse}}
     \label{tab:use-list-functions}
     \begin{tabular}{lll}
@@ -798,7 +798,7 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3, 4     & No  & No  \\
       5                 & Yes & No  \\
-      6                 & Yes & Yes \\
+      6, 7              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -881,7 +881,7 @@ has returned.
     \featurelabel{unpack-ignore-case} \t{unpack} matches filename extensions in a case-insensitive
     manner, for EAPIs listed such in table~\ref{tab:unpack-behaviour}.
 
-    \ChangeWhenAddingAnEAPI{6}
+    \ChangeWhenAddingAnEAPI{7}
     \begin{centertable}{\t{unpack} behaviour for EAPIs}
         \label{tab:unpack-behaviour}
         \begin{tabular}{lll}
@@ -891,12 +891,12 @@ has returned.
           \multicolumn{1}{c}{\textbf{Case-insensitive matching?}} \\
           \midrule
           0, 1, 2, 3, 4, 5  & No  & No  \\
-          6                 & Yes & Yes \\
+          6, 7              & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
 
-    \ChangeWhenAddingAnEAPI{6}
+    \ChangeWhenAddingAnEAPI{7}
     \begin{centertable}{\t{unpack} extensions for EAPIs}
         \label{tab:unpack-extensions-table}
         \begin{tabular}{llll}
@@ -908,7 +908,7 @@ has returned.
           \midrule
           0, 1, 2           & No  & No  & No  \\
           3, 4, 5           & Yes & Yes & No  \\
-          6                 & Yes & Yes & Yes \\
+          6, 7              & Yes & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -975,7 +975,7 @@ has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Misc commands for EAPIs}
     \label{tab:misc-commands}
     \begin{tabular}{llll}
@@ -987,7 +987,7 @@ has returned.
       \midrule
       0, 1              & No  & No  & No  \\
       2, 3, 4, 5        & Yes & No  & No  \\
-      6                 & Yes & Yes & Yes \\
+      6, 7              & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pms.tex b/pms.tex
index 3f338fb..facf001 100644
--- a/pms.tex
+++ b/pms.tex
@@ -21,8 +21,8 @@
     pdfkeywords={Gentoo, package manager, specification},
 }
 
-\CurrentEAPIIs{6}
-\ChangeWhenAddingAnEAPI{6}
+\CurrentEAPIIs{7}
+\ChangeWhenAddingAnEAPI{7}
 
 \begin{document}
 \maketitle

diff --git a/profile-variables.tex b/profile-variables.tex
index 2c199aa..309f9e9 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -33,7 +33,7 @@ Other variables, except where they affect only package-manager-specific function
 Portage's \t{FEATURES} variable), must not be treated incrementally---later definitions shall
 completely override those in parent profiles.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs}
     \label{tab:profile-iuse-injection-table}
     \begin{tabular}{ll}
@@ -42,7 +42,7 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      5, 6, 7           & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/profiles.tex b/profiles.tex
index 1641428..0d7164e 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -123,7 +123,7 @@ only act on packages that are merged due to a stable keyword in the sense of
 subsection~\ref{sec:keywords}. Thus, these files can be used to restrict the feature set deemed
 stable in a package.
 
-\ChangeWhenAddingAnEAPI{6}
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Profile directory support for masking/forcing use flags in stable versions only}
     \label{tab:profile-stablemask}
     \begin{tabular}{ll}
@@ -132,7 +132,7 @@ stable in a package.
       \multicolumn{1}{c}{\textbf{Supports masking/forcing use flags in stable versions?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      5, 6, 7           & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     384fe826dfa866b075b0db44fb74b8a2a6e4d450
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:48:46 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:07 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=384fe826

pkg-mgr-commands: Redefine dolib* in terms of libdir.a

Since EAPI 7 removes dolib, it would be a bad fit to describe the two
other commands on top of one that is removed. Instead, start by defining
libdir.a and then define the two other commands on top of it.

This also clarifies that dolib.a & dolib.so do not respect libopts,
while the old wording was not clear on that. However, this is at least
how it was implemented in Portage (with dolib.a and dolib.so overriding
libopts completely).

 pkg-mgr-commands.tex | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index bfc3e99..ae9a615 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -494,15 +494,16 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     symlink is encountered. Failure behaviour is EAPI dependent as per
     section~\ref{sec:failure-behaviour}.
 
-\item[dolib] For each argument, installs it into the appropriate library subdirectory under
-    \t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files are installed by default
-    with file mode \t{0644}, or with the \t{install} options set by the most recent \t{libopts}
-    call. Any symlinks are installed into the same directory as relative links to their original
-    target. Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
+\item[dolib.a] For each argument, installs it into the appropriate library subdirectory under
+    \t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files are installed
+    with file mode \t{0644}. Any symlinks are installed into the same directory as relative links
+    to their original target. Failure behaviour is EAPI dependent as per
+    section~\ref{sec:failure-behaviour}.
 
-\item[dolib.a] As for \t{dolib} except each file is installed with mode \t{0644}.
+\item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
-\item[dolib.so] As for \t{dolib} except each file is installed with mode \t{0755}.
+\item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
+    the \t{install} options set by the most recent \t{libopts} call.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     0751f557ad639f5ed58eabc2632b5387dc8f58c4
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 23:46:32 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:06 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=0751f557

dependencies: Provide a nice summary table for dep APIs

 dependencies.tex | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index eef2d91..84e72bd 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -26,6 +26,21 @@
     \end{tabular}
 \end{centertable}
 
+\begin{centertable}{Summary of other interfaces related to dependency classes}
+    \label{tab:dependency-class-apis}
+    \begin{tabular}{lccc}
+      \toprule
+      & \t{BDEPEND} & \t{DEPEND} & \t{RDEPEND}, \t{PDEPEND} \\
+      \midrule
+      binary compatible with & \t{CBUILD} & \t{CHOST} & \t{CHOST} \\
+      base unprefixed path & \t{/} & \t{\$\{SYSROOT\}} & \t{\$\{ROOT\}} \\
+      relevant offset-prefix & \t{\$\{BROOT\}} & \t{\$\{EPREFIX\}} & \t{\$\{EPREFIX\}} \\
+      path combined with prefix & \t{\$\{BROOT\}} & \t{\$\{ESYSROOT\}} & \t{\$\{EROOT\}} \\
+      PM query option & \t{-b} & \t{-d} & \t{-r} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 There are three classes of dependencies supported by ebuilds:
 
 \begin{compactitem}
@@ -51,7 +66,8 @@ as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
 \end{compactitem}
 
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
-a particular phase function is executed.
+a particular phase function is executed. Table~\ref{tab:dependency-class-api} summarizes
+additional interfaces related to the dependency classes.
 
 In addition, \t{SRC_URI}, \t{HOMEPAGE}, \t{RESTRICT}, \t{PROPERTIES}, \t{LICENSE} and
 \t{REQUIRED_USE} use dependency-style specifications to specify their values.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     18d28b77582d9e75552866f6cc9dd098b98394e4
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:24:10 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:07 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=18d28b77

EAPI 7 provides command fallback for nonfatal.

 eapi-differences.tex |  5 +++++
 pkg-mgr-commands.tex | 17 ++++++++++++-----
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 70eadb5..fb469f6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{nonfatal} function+command & \compactfeatureref{nonfatal-fallback} &
+    No & No & No & No & Yes \\
+
 \t{domo} install path & \compactfeatureref{domo-path} &
     \t{\$\{DESTTREE\}\slash share\slash locale} &
     \t{\$\{DESTTREE\}\slash share\slash locale} &
@@ -454,6 +457,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
+\item \t{nonfatal} defined both as a shell function and external command,
+  \featureref{nonfatal-fallback}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index f3849fc..c17c9cc 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -22,6 +22,11 @@ The following commands affect this behaviour:
     the build process due to a failure, instead a non-zero exit status shall be returned. Only in
     EAPIs listed in table~\ref{tab:commands-die-table} as supporting \t{nonfatal}.
 
+    \featurelabel{nonfatal-fallback} In EAPIs listed in table~\ref{tab:commands-die-table}
+    as having \t{nonfatal} defined as both function and external command, the package manager must
+    provide both implementations to account both for calling in ebuild scope directly, and via
+    \t{xargs}.
+
     Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when called with the \t{-n}
     option and in EAPIs supporting this option, see table~\ref{tab:nonfatal-die}.
 \end{description}
@@ -29,14 +34,16 @@ The following commands affect this behaviour:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Command failure behaviour}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
+      \multicolumn{1}{P{8em}}{\textbf{Command failure behaviour}} &
+      \multicolumn{1}{P{6em}}{\textbf{Supports \t{nonfatal}?}} &
+      \multicolumn{1}{P{12em}}{\textbf{\t{nonfatal} as both function and external command?}} \\
       \midrule
-      0, 1, 2, 3        & Non-zero exit & No  \\
-      4, 5, 6, 7        & Aborts        & Yes \\
+      0, 1, 2, 3        & Non-zero exit & No  & n/a \\
+      4, 5, 6           & Aborts        & Yes & No  \\
+      7                 & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     8756a1604432139e818cd5ae4a10fbf0e9c49033
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:17:43 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:07 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=8756a160

EAPI 7 removes PORTDIR and ECLASSDIR.

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 18 +++++++++++-------
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6e82904..3e06916 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{PORTDIR} & \compactfeatureref{portdir} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{ECLASSDIR} & \compactfeatureref{eclassdir} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -431,6 +437,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \item \t{DESTTREE} removed, \featureref{desttree}.
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
+\item \t{PORTDIR} removed, \featureref{portdir}.
+\item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0434083..f495014 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -110,11 +110,13 @@ variable.
 \t{PORTDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's base directory. \\
+    \featurelabel{portdir} The full path to the master repository's base directory.  Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{PORTDIR}. \\
 \t{ECLASSDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's eclass directory. \\
+    \featurelabel{eclassdir} The full path to the master repository's eclass directory.  Only for
+    EAPIs listed in table~\ref{tab:removed-env-vars-table} as supporting \t{ECLASSDIR}.\\
 \t{ROOT} &
    \t{pkg_*} &
    No &
@@ -284,17 +286,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
       \multicolumn{1}{c}{\textbf{\t{KV}?}} &
       \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
-      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
-      4, 5, 6           & No  & No  & Yes & Yes \\
-      7                 & No  & No  & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
+      7                 & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     9a914abf9708c0b8c502561b35ac6bfa62f1d533
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:39:27 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:06 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=9a914abf

EAPI 7 has BROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 33 +++++++++++++++++++++------------
 2 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9205125..af28b7a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{BROOT} & \compactfeatureref{broot} &
+    No & No & No & No & Yes \\
+
 \t{BDEPEND} & \compactfeatureref{bdepend} &
     No & No & No & No & Yes \\
 
@@ -413,6 +416,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
+\item \t{BROOT}, \featureref{broot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e24a065..e91f36e 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -144,6 +144,13 @@ variable.
     for convenience.  See also the \t{EPREFIX} variable. Only for EAPIs listed
     in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. The presence of a trailing
     slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{BROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{broot} The absolute path to the root directory containing build dependencies
+    satisfied by BDEPEND, typically executable build tools. This includes any applicable offset
+    prefix. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as supporting \t{BROOT}.
+    The presence of a trailing slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -253,19 +260,20 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{llllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} \\
+      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} &
+      \multicolumn{1}{P{6em}}{\textbf{\t{BROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  & No  \\
-      5, 6              & Yes & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -288,7 +296,7 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{llllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
@@ -460,17 +468,18 @@ If the path specifies the system root directory, it will be empty.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{3}{c}{\textbf{Ends with a trailing slash?}} \\
+      \multicolumn{4}{c}{\textbf{Ends with a trailing slash?}} \\
       &
       \t{ROOT}, \t{EROOT} &
       \t{D}, \t{ED} &
-      \t{SYSROOT}, \t{ESYSROOT} \\
+      \t{SYSROOT}, \t{ESYSROOT} &
+      \t{BROOT} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    \\
-      7                   & never  & never  & never  \\
+      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    & n/a    \\
+      7                   & never  & never  & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     26b536d06f55ee9f43ac14553a7a3b6be8ff4f92
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:13:57 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:07 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=26b536d0

EAPI 7 removes DESTTREE and INSDESTTREE.

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 18 ++++++++++++------
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d6bf6b7..6e82904 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{DESTTREE} & \compactfeatureref{desttree} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{INSDESTTREE} & \compactfeatureref{insdesttree} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{package.provided} & \compactfeatureref{package-provided} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -423,6 +429,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
+\item \t{DESTTREE} removed, \featureref{desttree}.
+\item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e91f36e..0434083 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -199,11 +199,14 @@ variable.
 \t{DESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{dobin}, \t{dolib}, \t{domo}, and \t{dosbin} install things. \\
+    \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, \t{domo},
+    and \t{dosbin} install things.  Only for EAPIs listed in table~\ref{tab:removed-env-vars-table}
+    as supporting \t{DESTTREE}. \\
 \t{INSDESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{doins} installs things. \\
+    \featurelabel{insdesttree} Controls the location where \t{doins} installs things. Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{INSDESTTREE}. \\
 \t{USE} &
     All &
     Yes &
@@ -281,14 +284,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
-      \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{KV}?}} &
+      \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes \\
-      4, 5, 6, 7        & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes \\
+      7                 & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     1a3d5b2d768b788a79ac391a66dd5bc8e860fe25
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:41:52 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:07 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=1a3d5b2d

domo installs to /usr in EAPI 7.

 eapi-differences.tex |  8 ++++++++
 pkg-mgr-commands.tex | 25 ++++++++++++++++++++-----
 2 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 3e06916..d9b5558 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,13 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{domo} install path & \compactfeatureref{domo-path} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{/usr\slash share\slash locale} \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -439,6 +446,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
+\item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 8ab8175..bfc3e99 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -542,11 +542,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     the empty string. In EAPIs specified by table~\ref{tab:doman-table}, the \t{-i18n} option takes
     precedence over the language code in the filename.
 
-\item[domo] Installs the given \t{.mo} files with file mode \t{0644} into the appropriate
-    subdirectory of \t{DESTTREE\slash share\slash locale}, generated by taking the basename of the
-    file, removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed
-    files is the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
-    section~\ref{sec:failure-behaviour}.
+\item[domo] \featurelabel{domo-path} Installs the given \t{.mo} files with file mode \t{0644} into
+    the appropriate subdirectory of the locale tree, generated by taking the basename of the file,
+    removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed files is
+    the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
+    section~\ref{sec:failure-behaviour}. The locale tree location is EAPI dependent as per
+    table~\ref{tab:domo-path}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
@@ -666,6 +667,20 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPI-dependent install path for \t{domo} command}
+    \label{tab:domo-path}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{destination path}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}\slash share\slash locale} \\
+      7                   & \t{/usr/share/locale} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees, all relative to \t{\$\{ED\}} in
 offset-prefix aware EAPIs and relative to \t{\$\{D\}} in offset-prefix agnostic EAPIs, used by the


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     45ed5c83b63fa430c89b0027369f2e673b778e90
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 20:53:59 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:06 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=45ed5c83

EAPI 7 drops --host-root in favor of -b, -d, and -r

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  8 +++++---
 pkg-mgr-commands.tex | 30 ++++++++++++++++++++----------
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index af28b7a..ace1f55 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -202,8 +202,8 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
-Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & No & Yes & Yes & Yes \\
+PM query options & \compactfeatureref{pm-query-options} &
+    No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
@@ -368,7 +368,7 @@ EAPI 5 is EAPI 4 with the following changes:
 \item \t{USE} is calculated differently, \featureref{profile-iuse-inject}.
 \item \t{find} is guaranteed to be GNU, \featureref{gnu-find}.
 \item \t{best_version} and \t{has_version} support the \t{-{}-host-root} option,
-    \featureref{host-root-option}.
+    \featureref{pm-query-options}.
 \item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}.
 \item \t{doheader} and \t{newheader} support, \featureref{doheader}.
 \item \t{new*} can read from standard input, \featureref{newfoo-stdin}.
@@ -417,6 +417,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
 \item \t{BROOT}, \featureref{broot}.
+\item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
+  \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 6a4415d..8ab8175 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -84,27 +84,37 @@ These commands are used to extract information about the system. Ebuilds must no
 these commands in parallel with any other package manager command. Ebuilds must not run any of
 these commands once the current phase function has returned.
 
-\featurelabel{host-root-option} In EAPIs listed in table~\ref{tab:foo-version-host-root-table} as
-supporting option \t{-{}-host-root}, this flag as the first argument will cause the query to apply
-to the host root instead of \t{ROOT}.
+\featurelabel{pm-query-options} In EAPIs listed in table~\ref{tab:pm-query-options-table}
+as supporting options \t{-b}, \t{-d}, and \t{-r}, these flags as the first argument will cause
+the query to apply to locations targetted by \t{BDEPEND}, \t{DEPEND}, and \t{RDEPEND} respectively.
+When none of these options are given, \t{-r} is assumed.
+
+In EAPIs listed in table~\ref{tab:pm-query-options-table} as supporting option \t{-{}-host-root},
+this flag as the first argument will cause the query to apply to the host root. Otherwise, it
+applies to \t{ROOT}.
+
 \begin{description}
 \item[has_version] Takes exactly one package dependency specification as an argument. Returns
-    true if a package matching the specification is installed in \t{ROOT}, and false otherwise.
+    true if a package matching the specification is installed, and false otherwise.
 \item[best_version] Takes exactly one package dependency specification as an argument. If a
     matching package is installed, prints the category, package name and version of the highest
     matching version; otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*_version} commands}
-    \label{tab:foo-version-host-root-table}
-    \begin{tabular}{ll}
+\begin{centertable}{Package manager query command options supported by EAPIs}
+    \label{tab:pm-query-options-table}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{*_version} supports \t{-{}-host-root}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{-{}-host-root}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-b}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-d}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-r}?}} \\
       \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      0, 1, 2, 3, 4     & No  & No  & No  & No  \\
+      5, 6              & Yes & No  & No  & No  \\
+      7                 & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     b4dbddf8a81cfc55caefaeec88bde5497c01c67a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:19:16 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:02 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=b4dbddf8

EAPI 7 has BDEPEND

Bug: https://bugs.gentoo.org/317337

 dependencies.tex     | 33 ++++++++++++++++++++++++++++++---
 eapi-differences.tex |  4 ++++
 ebuild-vars.tex      |  1 +
 eclasses.tex         | 10 +++++-----
 metadata-cache.tex   |  2 ++
 5 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 258b394..eef2d91 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -15,7 +15,7 @@
           None (ebuilds can rely only on the packages in the system~set) \\
       \addlinespace
       \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, \t{src_test},
-          \t{src_install} & \t{DEPEND} \\
+          \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
       \addlinespace
       \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
           \t{RDEPEND} (unless the particular dependency results in a circular dependency, in which
@@ -38,6 +38,18 @@ There are three classes of dependencies supported by ebuilds:
     the package manager finishes the batch of installs.
 \end{compactitem}
 
+\featurelabel{bdepend} Additionally, in EAPIs listed in table~\ref{tab:depend-table}
+as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
+
+\begin{compactitem}
+\item Build dependencies that are binary compatible with the native build system
+    / CBUILD (\t{BDEPEND}). The ebuild is allowed to call binary executables
+    installed by this kind of dependency.
+\item Build dependencies that are binary compatible with the system being built
+    / CHOST (\t{DEPEND}). The ebuild must not execute binary executables installed
+    by this kind of dependency.
+\end{compactitem}
+
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
 a particular phase function is executed.
 
@@ -50,7 +62,8 @@ The following elements are recognised in at least one class of specification. Al
 be surrounded on both sides by whitespace, except at the start and end of the string.
 
 \begin{compactitem}
-\item A package dependency specification. Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}.
+\item A package dependency specification. Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND},
+    \t{PDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC_URI} and \t{HOMEPAGE}\@.
     In EAPIs listed in table~\ref{tab:uri-arrows-table} as supporting \t{SRC_URI} arrows, may
     optionally be followed by whitespace, then \t{->}, then whitespace, then a simple filename when
@@ -68,7 +81,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     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{any-of} \t{::=} \t{'||' whitespace '(' whitespace (item whitespace)* ')'}.
-    Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
+    Permitted in \t{DEPEND}, \t{BDEPEND}, \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
@@ -93,6 +106,20 @@ be surrounded on both sides by whitespace, except at the start and end of the st
 In particular, note that whitespace is not optional.
 
 \ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting additional dependency types}
+    \label{tab:depend-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
     \label{tab:uri-arrows-table}
     \begin{tabular}{ll}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 31cc5f6..9205125 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{BDEPEND} & \compactfeatureref{bdepend} &
+    No & No & No & No & Yes \\
+
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
     No & No & No & No & Yes \\
 
@@ -409,6 +412,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
+\item \t{BDEPEND}, \featureref{bdepend}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 32f853c..e4efcae 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -83,6 +83,7 @@ Ebuilds may define any of the following variables:
     for its value if unset and when used with an eclass. See section~\ref{sec:rdepend-depend} for
     details.
 \item[PDEPEND] See section~\ref{sec:dependencies}.
+\item[BDEPEND] See section~\ref{sec:dependencies}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/eclasses.tex b/eclasses.tex
index 49c6c4e..44683b5 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,11 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{RDEPEND} and \t{PDEPEND} variables are handled
-specially when set by an eclass. They must be accumulated across eclasses, appending the value set
-by each eclass to the resulting value after the previous one is loaded. Then the eclass-defined
-value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is done after the
-implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND} and \t{PDEPEND} variables are
+handled specially when set by an eclass. They must be accumulated across eclasses, appending
+the value set by each eclass to the resulting value after the previous one is loaded. Then
+the eclass-defined value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this
+is done after the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
 
 \section{EXPORT_FUNCTIONS}
 

diff --git a/metadata-cache.tex b/metadata-cache.tex
index 80018e4..df4b8ed 100644
--- a/metadata-cache.tex
+++ b/metadata-cache.tex
@@ -35,6 +35,8 @@ order. Other lines may be present following these; their meanings are not define
     metadata; see table~\ref{tab:optional-vars-table}.
 \item Defined phases (\t{DEFINED_PHASES}). In some EAPIs, may optionally be blank, regardless of
     ebuild metadata; see table~\ref{tab:defined-phases-table}.
+\item Build-time dependencies for \t{CBUILD} host (\t{BDEPEND}).
+    Blank in some EAPIs; see table~\ref{tab:depend-table}.
 \item Blank lines to pad the file to 22 lines long
 \end{compactenum}
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     e7c202a8507d75efb2aa49165008d624c0757157
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 19 21:36:40 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:18:36 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e7c202a8

EAPI 7: econf adds --with-sysroot

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  3 ++-
 pkg-mgr-commands.tex | 17 +++++++++++------
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f3c68f6..31cc5f6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -212,7 +212,7 @@ Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
     & disable dependency tracking &
     disable dependency tracking, disable silent rules &
     disable dependency tracking, disable silent rules, docdir, htmldir &
-    disable dependency tracking, disable silent rules, docdir, htmldir \\
+    disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
     No & Yes & Yes & Yes & Yes \\
@@ -408,6 +408,7 @@ EAPI 7 is EAPI 6 with the following changes:
     \featureref{trailing-slash}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
+\item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 5bb8b68..6a4415d 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -283,6 +283,9 @@ current phase function has returned.
     \item -{}-htmldir must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}/html}, if the EAPI is listed
         in table~\ref{tab:econf-options-table} as using it. This option will only be passed if the
         string \t{-{}-htmldir} occurs in the output of \t{configure -{}-help}.
+    \item -{}-with-sysroot must be \t{\$\{ESYSROOT\}}, if the EAPI is listed in
+        table~\ref{tab:econf-options-table} as using it. This option will only be passed if the
+        string \t{-{}-with-sysroot} occurs in the output of \t{configure -{}-help}.
     \item -{}-host must be the value of the \t{CHOST} environment variable.
     \item -{}-libdir must be set according to Algorithm~\ref{alg:econf-libdir}.
     \item -{}-disable-dependency-tracking, if the EAPI is listed in
@@ -296,18 +299,20 @@ current phase function has returned.
     \ChangeWhenAddingAnEAPI{7}
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
-        \begin{tabular}{lllll}
+        \begin{tabular}{llllll}
           \toprule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
           \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
           \multicolumn{1}{c}{\textbf{-{}-docdir}} &
-          \multicolumn{1}{c}{\textbf{-{}-htmldir}} \\
+          \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
+          \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
           \midrule
-          0, 1, 2, 3        & No  & No  & No  & No  \\
-          4                 & Yes & No  & No  & No  \\
-          5                 & Yes & Yes & No  & No  \\
-          6, 7              & Yes & Yes & Yes & Yes \\
+          0, 1, 2, 3        & No  & No  & No  & No  & No  \\
+          4                 & Yes & No  & No  & No  & No  \\
+          5                 & Yes & Yes & No  & No  & No  \\
+          6                 & Yes & Yes & Yes & Yes & No  \\
+          7                 & Yes & Yes & Yes & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     805af4ca685714e866a1b501ca2048b0feda3d5d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:33:22 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:07 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=805af4ca

EAPI 7 allows die in subshell.

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 23 +++++++++++++++--------
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index fb469f6..a0d1f01 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{die} in subshell & \compactfeatureref{subshell-die} &
+    No & No & No & No & Yes \\
+
 \t{nonfatal} function+command & \compactfeatureref{nonfatal-fallback} &
     No & No & No & No & Yes \\
 
@@ -459,6 +462,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item \t{nonfatal} defined both as a shell function and external command,
   \featureref{nonfatal-fallback}.
+\item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c17c9cc..af4cd35 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -181,23 +181,30 @@ completing. Ebuilds must not run any of these commands once the current phase fu
 \item[die] \featurelabel{nonfatal-die} If called under the \t{nonfatal} command (as per
     section~\ref{sec:failure-behaviour}) and with \t{-n} as its first parameter, displays a failure
     message provided in its following argument and then returns a non-zero exit status. Only in
-    EAPIs listed in table~\ref{tab:nonfatal-die} as supporting option~\t{-n}. Otherwise, displays
+    EAPIs listed in table~\ref{tab:die-properties} as supporting option~\t{-n}. Otherwise, displays
     a failure message provided in its first and only argument, and then aborts the build process.
-    \t{die} is \e{not} guaranteed to work correctly if called from a subshell environment.
+
+    \featurelabel{subshell-die} In EAPIs listed in table~\ref{tab:die-properties} as not providing
+    subshell support, \t{die} is \e{not} guaranteed to work correctly if called from a subshell
+    environment.
 \item[assert] Checks the value of the shell's pipe status variable, and if any component is non-zero
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} commands}
-    \label{tab:nonfatal-die}
-    \begin{tabular}{ll}
+\begin{centertable}{EAPI-specific properties of \t{die} and \t{assert} commands}
+    \label{tab:die-properties}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
+      \multicolumn{2}{c}{\textbf{\t{die} and \t{assert}}} \\
+      &
+      \multicolumn{1}{c}{\textbf{support \t{-n}?}} &
+      \multicolumn{1}{c}{\textbf{work in subshell?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5  & No  \\
-      6, 7              & Yes \\
+      0, 1, 2, 3, 4, 5  & No  & No  \\
+      6                 & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     099d7e99452b862e7642d1ee64d86974811fccbb
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:08:43 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:06 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=099d7e99

EAPI 7 bans package.provided

 eapi-differences.tex |  4 ++++
 profiles.tex         | 24 ++++++++++++++++++++----
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index ace1f55..d6bf6b7 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.provided} & \compactfeatureref{package-provided} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{BROOT} & \compactfeatureref{broot} &
     No & No & No & No & Yes \\
 
@@ -419,6 +422,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{BROOT}, \featureref{broot}.
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
+\item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/profiles.tex b/profiles.tex
index 99e84ea..edc17af 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -115,10 +115,26 @@ necessarily a global mask (from \t{profiles/package.mask}, section~\ref{profiles
     inherit tree when it comes to \t{-lines}. This behaviour may not be relied upon.
 
 \subsection{package.provided}
-\t{package.provided} is used to tell the package manager that a certain package version should be
-considered to be provided by the system regardless of whether it is actually installed. Because it
-has severe adverse effects on USE-based and slot-based dependencies, its use is strongly deprecated
-and package manager support must be regarded as purely optional.
+\featurelabel{package-provided} \t{package.provided} is used to tell the package manager that
+a certain package version should be considered to be provided by the system regardless of whether it
+is actually installed. Because it has severe adverse effects on USE-based and slot-based
+dependencies, its use is strongly deprecated and package manager support must be regarded as purely
+optional. Banned in EAPIs listed as not allowing \t{package.provided} in
+table~\ref{tab:profile-package-provided}.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Profile \t{package.provided} support}
+    \label{tab:profile-package-provided}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Allows \t{package.provided}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & Yes \\
+      7                   & No  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{package.use}
 The \t{package.use} file may be used by the package manager to override the default USE flags


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     cda928af4fad460d8aefcb4177f70851e7a49b12
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:02:49 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:07 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=cda928af

EAPI 7 bans dolib and libopts.

 eapi-differences.tex |  7 +++++++
 pkg-mgr-commands.tex | 22 ++++++++++++++--------
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d9b5558..70eadb5 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -224,6 +224,12 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
+\t{dolib} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
+\t{libopts} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 PM query options & \compactfeatureref{pm-query-options} &
     No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -447,6 +453,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
+\item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ae9a615..f3849fc 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -50,20 +50,22 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{4}{c}{\textbf{Command banned?}} \\
+      \multicolumn{6}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
       \multicolumn{1}{c}{\textbf{\t{dosed}}} &
       \multicolumn{1}{c}{\textbf{\t{einstall}}} &
-      \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
+      \multicolumn{1}{c}{\textbf{\t{dohtml}}} &
+      \multicolumn{1}{c}{\textbf{\t{dolib}}} &
+      \multicolumn{1}{c}{\textbf{\t{libopts}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4, 5              & Yes & Yes & No  & No  \\
-      6                 & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  & No  & No  & No  \\
+      6                 & Yes & Yes & Yes & No  & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -503,7 +505,9 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 \item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
 \item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
-    the \t{install} options set by the most recent \t{libopts} call.
+    the \t{install} options set by the most recent \t{libopts} call. In EAPIs listed
+    in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}
@@ -714,6 +718,8 @@ has returned.
 \item[exeopts] Sets the options passed by \t{doexe} et al.\ to the \t{install} command.
 
 \item[libopts] Sets the options passed by \t{dolib} et al.\ to the \t{install} command.
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as
+    per section~\ref{sec:banned-commands}.
 
 \end{description}
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:25 UTC (permalink / raw
  To: gentoo-commits

commit:     1b96eef7b1a0173d3605b4e0aa604d0dfe0ad8a2
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:10:08 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:25:07 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=1b96eef7

EAPI 7 has automatic USE enforcing.

 dependencies.tex     | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 eapi-differences.tex |  4 ++++
 profiles.tex         |  1 +
 3 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 84e72bd..e1a4247 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -383,16 +383,82 @@ It is an error for an ebuild to use a conditional use dependency when that ebuil
 flag in \t{IUSE_EFFECTIVE}.
 
 \subsection{USE state constraints}
+
 \label{sec:required-use}
 \t{REQUIRED_USE} contains a list of assertions that must be met by the configuration of \t{USE}
 flags to be valid for this ebuild. In order to be matched, a \t{USE} flag in a terminal element
 must be enabled (or disabled if it has an exclamation mark prefix).
 
 If the package manager encounters a package version where \t{REQUIRED_USE} assertions are not met,
-it must treat this package version as if it was masked. No phase functions must be called.
+it should attempt to automatically enforce the necessary flags as detailed
+in section~\ref{sec:enforce-required-use}. If this feature is not supported or it fails to resolve
+the problem, the package manager must treat this package version as if it was masked. No phase
+functions must be called in that case.
 
 It is an error for a flag to be used if it is not included in \t{IUSE_EFFECTIVE}.
 
+\subsubsection{Automatic enforcing of REQUIRED_USE}
+\label{sec:enforce-required-use}
+
+\featurelabel{auto-req-use} In EAPIs listed in table~\ref{tab:enforce-required-use-table} as
+supporting enforcing of \t{REQUIRED_USE}, the package manager can attempt to resolve unmet USE state
+constraints through automatically adjusting the effective USE flags for the package being built,
+according to the algorithm specified below. Any adjustments done this way must not affect
+the package version permanently. The package manager must reevaluate the flags using the original
+user configuration every time the package is being built.
+
+The package flags that are either masked or forced according to the section~\ref{sec:use-mask-force}
+are considered immutable. The enforcing process must not alter the values of immutable flags.
+If the \t{REQUIRED_USE} constraint can not be satisfied without altering immutable flags, automatic
+enforcing fails.
+
+In order to enforce \t{REQUIRED_USE}, the package manager should process every USE constraint,
+in order of listing, according to the following rules:
+
+\begin{compactitem}
+\item For an unmatched use flag, the package manager should negate the state of the specified flag
+    in order to make the constraint match.
+\item For an unmatched all-of group, the package manager should recursively enforce all
+    constraints inside the group, in order of listing.
+\item For an unmatched use-conditonal group, the package manager should recursively enforce all
+    constraints inside the group, in order of listing. The associated condition flag is not altered.
+\item For an unmatched any-of group, the package manager should recursively enforce the first item
+    inside the group that can be enforced without altering immutable flags, in order of listing.
+\item For an unmatched at-most-one-of group:
+    \begin{compactitem}
+    \item If two or more items match due to immutable flags, the package manager must report
+        failure.
+    \item If exactly one of the items match due to immutable flags, the package manager should
+        enforce all other items not to match, according to the rule specified below.
+    \item If none of the items match due to immutable flags, the package manager should enforce all
+        items not to match but the first item in order of listing that matches currently.
+    \end{compactitem}
+\item For an unmatched exactly-one-of group:
+    \begin{compactitem}
+    \item If none of the items match, the package manager should behave as for unmatched any-of
+        group.
+    \item If more than one item matches, the package manager should behave as for unmatched
+        at-most-one-of group.
+    \end{compactitem}
+\end{compactitem}
+
+In order to enforce a matched use flag item not to match, the package manager should negate
+the state of the flag. The method of enforcing any other item type not to match is undefined.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting automatic enforcing of \t{REQUIRED_USE}}
+    \label{tab:enforce-required-use-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports enforcing \t{REQUIRED_USE}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Restrict}
 \label{sec:restrict}
 

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a0d1f01..87ce708 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{REQUIRED_USE} autoenforced & \compactfeatureref{auto-req-use} &
+    No & No & No & No & Yes \\
+
 \t{die} in subshell & \compactfeatureref{subshell-die} &
     No & No & No & No & Yes \\
 
@@ -463,6 +466,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{nonfatal} defined both as a shell function and external command,
   \featureref{nonfatal-fallback}.
 \item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
+\item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/profiles.tex b/profiles.tex
index edc17af..46c7928 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -145,6 +145,7 @@ specification is limited to the forms defined by the directory's EAPI. In some E
 \t{package.use} can be a directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 \subsection{USE masking and forcing}
+\label{sec:use-mask-force}
 This section covers the eight files \t{use.mask}, \t{use.force}, \t{use.stable.mask},
 \t{use.stable.force}, \t{package.use.mask}, \t{package.use.force}, \t{package.use.stable.mask},
 and \t{package.use.\allowbreak stable.force}. They are described together because they interact in


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:42 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:42 UTC (permalink / raw
  To: gentoo-commits

commit:     59a2d7e1474b93e9437fb51e00a434aa5e9a3991
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:42:13 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:42:13 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=59a2d7e1

EAPI 7 has binding leftmost-of dep groups (||=).

Bug: https://bugs.gentoo.org/489458

 dependencies.tex     | 45 ++++++++++++++++++++++++++++++++++++++-------
 eapi-differences.tex |  4 ++++
 2 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index e1a4247..2e3183f 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -98,6 +98,12 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     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)* ')'}.
     Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
+\item \featurelabel{binding-leftmost-of} A binding leftmost-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{any-of} \t{::=} \t{'||=' whitespace '(' whitespace (item
+    whitespace)* ')'}.  Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND} in EAPIs
+    listed in table~\ref{tab:dep-group-table} as supporting \t{||=}\ groups.
 \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
@@ -109,7 +115,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     zero 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
-    table~\ref{tab:at-most-one-of-table} as supporting \t{REQUIRED_USE ??}\ groups.
+    table~\ref{tab:dep-group-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
@@ -150,15 +156,17 @@ In particular, note that whitespace is not optional.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
-    \label{tab:at-most-one-of-table}
-    \begin{tabular}{ll}
+\begin{centertable}{EAPIs supporting additional group types}
+    \label{tab:dep-group-table}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
+      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{||=}\ groups?}} \\
       \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6, 7           & Yes \\
+      0, 1, 2, 3, 4     & No  & No  \\
+      5, 6              & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -186,6 +194,29 @@ considered to be matched if its associated package dependency specification is n
 
 An empty any-of group counts as being matched.
 
+\subsection{Binding leftmost-of dependency specifications}
+
+Any use-conditional group that is an immediate child of a binding leftmost-of group, if not enabled
+(disabled for an exclamation mark prefixed use flag name), is not considered a member of the binding
+leftmost-of group for match purposes.
+
+In a binding leftmost-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.
+In addition, for runtime dependencies, indicates that the package will break unless the dependency
+corresponding to the first immediate child (in order of listing) matched at the time the package was
+built is satisfied.
+
+An empty binding leftmost-of group counts as being matched.
+
+To implement the binding leftmost-of operator, the package manager will need to store which of
+the immediate child elements were matched. This syntax is only for package manager use and must not
+be used by ebuilds. Only the first matched child element needs to be indicated.
+
+Whenever the binding leftmost-of group is used in an enabled dependency group, the dependencies
+(\t{DEPEND}) must ensure that at least one of the immediate child elements is also matched at build
+time. It is invalid to use the binding leftmost-of group inside PDEPEND or inside any-of dependency
+specifications.
+
 \subsection{Exactly-one-of dependency specifications}
 
 Any use-conditional group that is an immediate child of an exactly-one-of group, if not enabled

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 87ce708..a89f5f8 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{||=} dependency group & \compactfeatureref{binding-leftmost-of} &
+    No & No & No & No & Yes \\
+
 \t{REQUIRED_USE} autoenforced & \compactfeatureref{auto-req-use} &
     No & No & No & No & Yes \\
 
@@ -467,6 +470,7 @@ EAPI 7 is EAPI 6 with the following changes:
   \featureref{nonfatal-fallback}.
 \item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
 \item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
+\item binding leftmost-of (\t{||=}) dependency group is supported, \featureref{binding-leftmost-of}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     18cb7562d4cae1fbd41d6097ac1625c3a1511bf2
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:08:43 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=18cb7562

EAPI 7 bans package.provided

 eapi-differences.tex |  4 ++++
 profiles.tex         | 24 ++++++++++++++++++++----
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index ace1f55..d6bf6b7 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.provided} & \compactfeatureref{package-provided} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{BROOT} & \compactfeatureref{broot} &
     No & No & No & No & Yes \\
 
@@ -419,6 +422,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{BROOT}, \featureref{broot}.
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
+\item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/profiles.tex b/profiles.tex
index 99e84ea..edc17af 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -115,10 +115,26 @@ necessarily a global mask (from \t{profiles/package.mask}, section~\ref{profiles
     inherit tree when it comes to \t{-lines}. This behaviour may not be relied upon.
 
 \subsection{package.provided}
-\t{package.provided} is used to tell the package manager that a certain package version should be
-considered to be provided by the system regardless of whether it is actually installed. Because it
-has severe adverse effects on USE-based and slot-based dependencies, its use is strongly deprecated
-and package manager support must be regarded as purely optional.
+\featurelabel{package-provided} \t{package.provided} is used to tell the package manager that
+a certain package version should be considered to be provided by the system regardless of whether it
+is actually installed. Because it has severe adverse effects on USE-based and slot-based
+dependencies, its use is strongly deprecated and package manager support must be regarded as purely
+optional. Banned in EAPIs listed as not allowing \t{package.provided} in
+table~\ref{tab:profile-package-provided}.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Profile \t{package.provided} support}
+    \label{tab:profile-package-provided}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Allows \t{package.provided}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & Yes \\
+      7                   & No  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{package.use}
 The \t{package.use} file may be used by the package manager to override the default USE flags


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     412467790fe4c56bbc768f40e143fa711f5b07cc
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:39:27 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=41246779

EAPI 7 has BROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 33 +++++++++++++++++++++------------
 2 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9205125..af28b7a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{BROOT} & \compactfeatureref{broot} &
+    No & No & No & No & Yes \\
+
 \t{BDEPEND} & \compactfeatureref{bdepend} &
     No & No & No & No & Yes \\
 
@@ -413,6 +416,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
+\item \t{BROOT}, \featureref{broot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e24a065..e91f36e 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -144,6 +144,13 @@ variable.
     for convenience.  See also the \t{EPREFIX} variable. Only for EAPIs listed
     in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. The presence of a trailing
     slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{BROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{broot} The absolute path to the root directory containing build dependencies
+    satisfied by BDEPEND, typically executable build tools. This includes any applicable offset
+    prefix. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as supporting \t{BROOT}.
+    The presence of a trailing slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -253,19 +260,20 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{llllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} \\
+      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} &
+      \multicolumn{1}{P{6em}}{\textbf{\t{BROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  & No  \\
-      5, 6              & Yes & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -288,7 +296,7 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{llllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
@@ -460,17 +468,18 @@ If the path specifies the system root directory, it will be empty.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{3}{c}{\textbf{Ends with a trailing slash?}} \\
+      \multicolumn{4}{c}{\textbf{Ends with a trailing slash?}} \\
       &
       \t{ROOT}, \t{EROOT} &
       \t{D}, \t{ED} &
-      \t{SYSROOT}, \t{ESYSROOT} \\
+      \t{SYSROOT}, \t{ESYSROOT} &
+      \t{BROOT} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    \\
-      7                   & never  & never  & never  \\
+      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    & n/a    \\
+      7                   & never  & never  & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     992ceafb1650232d85b6fce8737a348a02b640ab
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 20:53:59 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=992ceafb

EAPI 7 drops --host-root in favor of -b, -d, and -r

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  8 +++++---
 pkg-mgr-commands.tex | 30 ++++++++++++++++++++----------
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index af28b7a..ace1f55 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -202,8 +202,8 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
-Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & No & Yes & Yes & Yes \\
+PM query options & \compactfeatureref{pm-query-options} &
+    No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
@@ -368,7 +368,7 @@ EAPI 5 is EAPI 4 with the following changes:
 \item \t{USE} is calculated differently, \featureref{profile-iuse-inject}.
 \item \t{find} is guaranteed to be GNU, \featureref{gnu-find}.
 \item \t{best_version} and \t{has_version} support the \t{-{}-host-root} option,
-    \featureref{host-root-option}.
+    \featureref{pm-query-options}.
 \item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}.
 \item \t{doheader} and \t{newheader} support, \featureref{doheader}.
 \item \t{new*} can read from standard input, \featureref{newfoo-stdin}.
@@ -417,6 +417,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
 \item \t{BROOT}, \featureref{broot}.
+\item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
+  \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 6a4415d..8ab8175 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -84,27 +84,37 @@ These commands are used to extract information about the system. Ebuilds must no
 these commands in parallel with any other package manager command. Ebuilds must not run any of
 these commands once the current phase function has returned.
 
-\featurelabel{host-root-option} In EAPIs listed in table~\ref{tab:foo-version-host-root-table} as
-supporting option \t{-{}-host-root}, this flag as the first argument will cause the query to apply
-to the host root instead of \t{ROOT}.
+\featurelabel{pm-query-options} In EAPIs listed in table~\ref{tab:pm-query-options-table}
+as supporting options \t{-b}, \t{-d}, and \t{-r}, these flags as the first argument will cause
+the query to apply to locations targetted by \t{BDEPEND}, \t{DEPEND}, and \t{RDEPEND} respectively.
+When none of these options are given, \t{-r} is assumed.
+
+In EAPIs listed in table~\ref{tab:pm-query-options-table} as supporting option \t{-{}-host-root},
+this flag as the first argument will cause the query to apply to the host root. Otherwise, it
+applies to \t{ROOT}.
+
 \begin{description}
 \item[has_version] Takes exactly one package dependency specification as an argument. Returns
-    true if a package matching the specification is installed in \t{ROOT}, and false otherwise.
+    true if a package matching the specification is installed, and false otherwise.
 \item[best_version] Takes exactly one package dependency specification as an argument. If a
     matching package is installed, prints the category, package name and version of the highest
     matching version; otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*_version} commands}
-    \label{tab:foo-version-host-root-table}
-    \begin{tabular}{ll}
+\begin{centertable}{Package manager query command options supported by EAPIs}
+    \label{tab:pm-query-options-table}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{*_version} supports \t{-{}-host-root}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{-{}-host-root}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-b}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-d}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-r}?}} \\
       \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      0, 1, 2, 3, 4     & No  & No  & No  & No  \\
+      5, 6              & Yes & No  & No  & No  \\
+      7                 & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     4329de684402ced99a0286645b5174cb9f63ecd6
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 23:46:32 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=4329de68

dependencies: Provide a nice summary table for dep APIs

 dependencies.tex | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 92e7bb9..63d8c53 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -26,6 +26,21 @@
     \end{tabular}
 \end{centertable}
 
+\begin{centertable}{Summary of other interfaces related to dependency classes}
+    \label{tab:dependency-class-apis}
+    \begin{tabular}{lccc}
+      \toprule
+      & \t{BDEPEND} & \t{DEPEND} & \t{RDEPEND}, \t{PDEPEND} \\
+      \midrule
+      binary compatible with & \t{CBUILD} & \t{CHOST} & \t{CHOST} \\
+      base unprefixed path & \t{/} & \t{\$\{SYSROOT\}} & \t{\$\{ROOT\}} \\
+      relevant offset-prefix & \t{\$\{BROOT\}} & \t{\$\{EPREFIX\}} & \t{\$\{EPREFIX\}} \\
+      path combined with prefix & \t{\$\{BROOT\}} & \t{\$\{ESYSROOT\}} & \t{\$\{EROOT\}} \\
+      PM query option & \t{-b} & \t{-d} & \t{-r} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 There are three classes of dependencies supported by ebuilds:
 
 \begin{compactitem}
@@ -51,7 +66,8 @@ as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
 \end{compactitem}
 
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
-a particular phase function is executed.
+a particular phase function is executed. Table~\ref{tab:dependency-class-api} summarizes
+additional interfaces related to the dependency classes.
 
 In addition, \t{SRC_URI}, \t{HOMEPAGE}, \t{RESTRICT}, \t{PROPERTIES}, \t{LICENSE} and
 \t{REQUIRED_USE} use dependency-style specifications to specify their values.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     ed54e81eb75bc941be5eb9c9d508da0a281daff0
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:19:16 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:02 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ed54e81e

EAPI 7 has BDEPEND

Bug: https://bugs.gentoo.org/317337

 dependencies.tex     | 36 ++++++++++++++++++++++++++++++++----
 eapi-differences.tex |  4 ++++
 ebuild-vars.tex      |  1 +
 eclasses.tex         | 10 +++++-----
 metadata-cache.tex   |  2 ++
 5 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 258b394..92e7bb9 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -15,7 +15,7 @@
           None (ebuilds can rely only on the packages in the system~set) \\
       \addlinespace
       \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, \t{src_test},
-          \t{src_install} & \t{DEPEND} \\
+          \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
       \addlinespace
       \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
           \t{RDEPEND} (unless the particular dependency results in a circular dependency, in which
@@ -38,6 +38,18 @@ There are three classes of dependencies supported by ebuilds:
     the package manager finishes the batch of installs.
 \end{compactitem}
 
+\featurelabel{bdepend} Additionally, in EAPIs listed in table~\ref{tab:depend-table}
+as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
+
+\begin{compactitem}
+\item Build dependencies that are binary compatible with the native build system
+    / CBUILD (\t{BDEPEND}). The ebuild is allowed to call binary executables
+    installed by this kind of dependency.
+\item Build dependencies that are binary compatible with the system being built
+    / CHOST (\t{DEPEND}). The ebuild must not execute binary executables installed
+    by this kind of dependency.
+\end{compactitem}
+
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
 a particular phase function is executed.
 
@@ -50,7 +62,8 @@ The following elements are recognised in at least one class of specification. Al
 be surrounded on both sides by whitespace, except at the start and end of the string.
 
 \begin{compactitem}
-\item A package dependency specification. Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}.
+\item A package dependency specification. Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND},
+    \t{PDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC_URI} and \t{HOMEPAGE}\@.
     In EAPIs listed in table~\ref{tab:uri-arrows-table} as supporting \t{SRC_URI} arrows, may
     optionally be followed by whitespace, then \t{->}, then whitespace, then a simple filename when
@@ -68,7 +81,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     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{any-of} \t{::=} \t{'||' whitespace '(' whitespace (item whitespace)* ')'}.
-    Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
+    Permitted in \t{DEPEND}, \t{BDEPEND}, \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
@@ -93,6 +106,20 @@ be surrounded on both sides by whitespace, except at the start and end of the st
 In particular, note that whitespace is not optional.
 
 \ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting additional dependency types}
+    \label{tab:depend-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
     \label{tab:uri-arrows-table}
     \begin{tabular}{ll}
@@ -285,7 +312,8 @@ indicates that the package will not break if the matched package is uninstalled
 a different matching package in a different slot.
 \item[=] Indicates that any slot value is acceptable. In addition, for runtime dependencies,
 indicates that the package will break unless a matching package with slot and sub-slot equal to the
-slot and sub-slot of the best installed version at the time the package was built is available.
+slot and sub-slot of the best version installed to \t{ESYSROOT} at the time the package was built
+is available.
 \item[slot=] Indicates that only a specific slot value is acceptable, and otherwise behaves
 identically to the plain equals slot operator.
 \end{description}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 31cc5f6..9205125 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{BDEPEND} & \compactfeatureref{bdepend} &
+    No & No & No & No & Yes \\
+
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
     No & No & No & No & Yes \\
 
@@ -409,6 +412,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
+\item \t{BDEPEND}, \featureref{bdepend}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 32f853c..e4efcae 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -83,6 +83,7 @@ Ebuilds may define any of the following variables:
     for its value if unset and when used with an eclass. See section~\ref{sec:rdepend-depend} for
     details.
 \item[PDEPEND] See section~\ref{sec:dependencies}.
+\item[BDEPEND] See section~\ref{sec:dependencies}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/eclasses.tex b/eclasses.tex
index 49c6c4e..44683b5 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,11 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{RDEPEND} and \t{PDEPEND} variables are handled
-specially when set by an eclass. They must be accumulated across eclasses, appending the value set
-by each eclass to the resulting value after the previous one is loaded. Then the eclass-defined
-value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is done after the
-implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND} and \t{PDEPEND} variables are
+handled specially when set by an eclass. They must be accumulated across eclasses, appending
+the value set by each eclass to the resulting value after the previous one is loaded. Then
+the eclass-defined value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this
+is done after the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
 
 \section{EXPORT_FUNCTIONS}
 

diff --git a/metadata-cache.tex b/metadata-cache.tex
index 80018e4..df4b8ed 100644
--- a/metadata-cache.tex
+++ b/metadata-cache.tex
@@ -35,6 +35,8 @@ order. Other lines may be present following these; their meanings are not define
     metadata; see table~\ref{tab:optional-vars-table}.
 \item Defined phases (\t{DEFINED_PHASES}). In some EAPIs, may optionally be blank, regardless of
     ebuild metadata; see table~\ref{tab:defined-phases-table}.
+\item Build-time dependencies for \t{CBUILD} host (\t{BDEPEND}).
+    Blank in some EAPIs; see table~\ref{tab:depend-table}.
 \item Blank lines to pad the file to 22 lines long
 \end{compactenum}
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     3d3687965ad3c3cfce6c3e88ff6c86ebcb643be2
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:13:57 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=3d368796

EAPI 7 removes DESTTREE and INSDESTTREE.

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 18 ++++++++++++------
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d6bf6b7..6e82904 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{DESTTREE} & \compactfeatureref{desttree} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{INSDESTTREE} & \compactfeatureref{insdesttree} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{package.provided} & \compactfeatureref{package-provided} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -423,6 +429,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
+\item \t{DESTTREE} removed, \featureref{desttree}.
+\item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e91f36e..0434083 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -199,11 +199,14 @@ variable.
 \t{DESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{dobin}, \t{dolib}, \t{domo}, and \t{dosbin} install things. \\
+    \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, \t{domo},
+    and \t{dosbin} install things.  Only for EAPIs listed in table~\ref{tab:removed-env-vars-table}
+    as supporting \t{DESTTREE}. \\
 \t{INSDESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{doins} installs things. \\
+    \featurelabel{insdesttree} Controls the location where \t{doins} installs things. Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{INSDESTTREE}. \\
 \t{USE} &
     All &
     Yes &
@@ -281,14 +284,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
-      \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{KV}?}} &
+      \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes \\
-      4, 5, 6, 7        & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes \\
+      7                 & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     d8de1f642681145078150b451f954dd6e81a9fb9
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:02:49 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=d8de1f64

EAPI 7 bans dolib and libopts.

 eapi-differences.tex |  7 +++++++
 pkg-mgr-commands.tex | 22 ++++++++++++++--------
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d9b5558..70eadb5 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -224,6 +224,12 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
+\t{dolib} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
+\t{libopts} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 PM query options & \compactfeatureref{pm-query-options} &
     No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -447,6 +453,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
+\item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ae9a615..f3849fc 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -50,20 +50,22 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{4}{c}{\textbf{Command banned?}} \\
+      \multicolumn{6}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
       \multicolumn{1}{c}{\textbf{\t{dosed}}} &
       \multicolumn{1}{c}{\textbf{\t{einstall}}} &
-      \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
+      \multicolumn{1}{c}{\textbf{\t{dohtml}}} &
+      \multicolumn{1}{c}{\textbf{\t{dolib}}} &
+      \multicolumn{1}{c}{\textbf{\t{libopts}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4, 5              & Yes & Yes & No  & No  \\
-      6                 & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  & No  & No  & No  \\
+      6                 & Yes & Yes & Yes & No  & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -503,7 +505,9 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 \item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
 \item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
-    the \t{install} options set by the most recent \t{libopts} call.
+    the \t{install} options set by the most recent \t{libopts} call. In EAPIs listed
+    in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}
@@ -714,6 +718,8 @@ has returned.
 \item[exeopts] Sets the options passed by \t{doexe} et al.\ to the \t{install} command.
 
 \item[libopts] Sets the options passed by \t{dolib} et al.\ to the \t{install} command.
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as
+    per section~\ref{sec:banned-commands}.
 
 \end{description}
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     b7d98a29242722f0224449f52d3cbabcf5c44c92
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:10:08 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=b7d98a29

EAPI 7 has automatic USE enforcing.

 dependencies.tex     | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 eapi-differences.tex |  4 ++++
 profiles.tex         |  1 +
 3 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 63d8c53..5773aef 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -384,16 +384,82 @@ It is an error for an ebuild to use a conditional use dependency when that ebuil
 flag in \t{IUSE_EFFECTIVE}.
 
 \subsection{USE state constraints}
+
 \label{sec:required-use}
 \t{REQUIRED_USE} contains a list of assertions that must be met by the configuration of \t{USE}
 flags to be valid for this ebuild. In order to be matched, a \t{USE} flag in a terminal element
 must be enabled (or disabled if it has an exclamation mark prefix).
 
 If the package manager encounters a package version where \t{REQUIRED_USE} assertions are not met,
-it must treat this package version as if it was masked. No phase functions must be called.
+it should attempt to automatically enforce the necessary flags as detailed
+in section~\ref{sec:enforce-required-use}. If this feature is not supported or it fails to resolve
+the problem, the package manager must treat this package version as if it was masked. No phase
+functions must be called in that case.
 
 It is an error for a flag to be used if it is not included in \t{IUSE_EFFECTIVE}.
 
+\subsubsection{Automatic enforcing of REQUIRED_USE}
+\label{sec:enforce-required-use}
+
+\featurelabel{auto-req-use} In EAPIs listed in table~\ref{tab:enforce-required-use-table} as
+supporting enforcing of \t{REQUIRED_USE}, the package manager can attempt to resolve unmet USE state
+constraints through automatically adjusting the effective USE flags for the package being built,
+according to the algorithm specified below. Any adjustments done this way must not affect
+the package version permanently. The package manager must reevaluate the flags using the original
+user configuration every time the package is being built.
+
+The package flags that are either masked or forced according to the section~\ref{sec:use-mask-force}
+are considered immutable. The enforcing process must not alter the values of immutable flags.
+If the \t{REQUIRED_USE} constraint can not be satisfied without altering immutable flags, automatic
+enforcing fails.
+
+In order to enforce \t{REQUIRED_USE}, the package manager should process every USE constraint,
+in order of listing, according to the following rules:
+
+\begin{compactitem}
+\item For an unmatched use flag, the package manager should negate the state of the specified flag
+    in order to make the constraint match.
+\item For an unmatched all-of group, the package manager should recursively enforce all
+    constraints inside the group, in order of listing.
+\item For an unmatched use-conditonal group, the package manager should recursively enforce all
+    constraints inside the group, in order of listing. The associated condition flag is not altered.
+\item For an unmatched any-of group, the package manager should recursively enforce the first item
+    inside the group that can be enforced without altering immutable flags, in order of listing.
+\item For an unmatched at-most-one-of group:
+    \begin{compactitem}
+    \item If two or more items match due to immutable flags, the package manager must report
+        failure.
+    \item If exactly one of the items match due to immutable flags, the package manager should
+        enforce all other items not to match, according to the rule specified below.
+    \item If none of the items match due to immutable flags, the package manager should enforce all
+        items not to match but the first item in order of listing that matches currently.
+    \end{compactitem}
+\item For an unmatched exactly-one-of group:
+    \begin{compactitem}
+    \item If none of the items match, the package manager should behave as for unmatched any-of
+        group.
+    \item If more than one item matches, the package manager should behave as for unmatched
+        at-most-one-of group.
+    \end{compactitem}
+\end{compactitem}
+
+In order to enforce a matched use flag item not to match, the package manager should negate
+the state of the flag. The method of enforcing any other item type not to match is undefined.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting automatic enforcing of \t{REQUIRED_USE}}
+    \label{tab:enforce-required-use-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports enforcing \t{REQUIRED_USE}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Restrict}
 \label{sec:restrict}
 

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a0d1f01..87ce708 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{REQUIRED_USE} autoenforced & \compactfeatureref{auto-req-use} &
+    No & No & No & No & Yes \\
+
 \t{die} in subshell & \compactfeatureref{subshell-die} &
     No & No & No & No & Yes \\
 
@@ -463,6 +466,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{nonfatal} defined both as a shell function and external command,
   \featureref{nonfatal-fallback}.
 \item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
+\item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/profiles.tex b/profiles.tex
index edc17af..46c7928 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -145,6 +145,7 @@ specification is limited to the forms defined by the directory's EAPI. In some E
 \t{package.use} can be a directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 \subsection{USE masking and forcing}
+\label{sec:use-mask-force}
 This section covers the eight files \t{use.mask}, \t{use.force}, \t{use.stable.mask},
 \t{use.stable.force}, \t{package.use.mask}, \t{package.use.force}, \t{package.use.stable.mask},
 and \t{package.use.\allowbreak stable.force}. They are described together because they interact in


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     0541925c829420b4ec2dc57b0eca3ba28cb6da76
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:24:10 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=0541925c

EAPI 7 provides command fallback for nonfatal.

 eapi-differences.tex |  5 +++++
 pkg-mgr-commands.tex | 17 ++++++++++++-----
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 70eadb5..fb469f6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{nonfatal} function+command & \compactfeatureref{nonfatal-fallback} &
+    No & No & No & No & Yes \\
+
 \t{domo} install path & \compactfeatureref{domo-path} &
     \t{\$\{DESTTREE\}\slash share\slash locale} &
     \t{\$\{DESTTREE\}\slash share\slash locale} &
@@ -454,6 +457,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
+\item \t{nonfatal} defined both as a shell function and external command,
+  \featureref{nonfatal-fallback}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index f3849fc..c17c9cc 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -22,6 +22,11 @@ The following commands affect this behaviour:
     the build process due to a failure, instead a non-zero exit status shall be returned. Only in
     EAPIs listed in table~\ref{tab:commands-die-table} as supporting \t{nonfatal}.
 
+    \featurelabel{nonfatal-fallback} In EAPIs listed in table~\ref{tab:commands-die-table}
+    as having \t{nonfatal} defined as both function and external command, the package manager must
+    provide both implementations to account both for calling in ebuild scope directly, and via
+    \t{xargs}.
+
     Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when called with the \t{-n}
     option and in EAPIs supporting this option, see table~\ref{tab:nonfatal-die}.
 \end{description}
@@ -29,14 +34,16 @@ The following commands affect this behaviour:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Command failure behaviour}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
+      \multicolumn{1}{P{8em}}{\textbf{Command failure behaviour}} &
+      \multicolumn{1}{P{6em}}{\textbf{Supports \t{nonfatal}?}} &
+      \multicolumn{1}{P{12em}}{\textbf{\t{nonfatal} as both function and external command?}} \\
       \midrule
-      0, 1, 2, 3        & Non-zero exit & No  \\
-      4, 5, 6, 7        & Aborts        & Yes \\
+      0, 1, 2, 3        & Non-zero exit & No  & n/a \\
+      4, 5, 6           & Aborts        & Yes & No  \\
+      7                 & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     4eb2ccf9c7bc7eaa64754e9b432290ba5ed631e9
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:42:13 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:48 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=4eb2ccf9

EAPI 7 has binding leftmost-of dep groups (||=).

Bug: https://bugs.gentoo.org/489458

 dependencies.tex     | 45 ++++++++++++++++++++++++++++++++++++++-------
 eapi-differences.tex |  4 ++++
 2 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 5773aef..d9592d9 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -98,6 +98,12 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     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)* ')'}.
     Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
+\item \featurelabel{binding-leftmost-of} A binding leftmost-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{any-of} \t{::=} \t{'||=' whitespace '(' whitespace (item
+    whitespace)* ')'}.  Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND} in EAPIs
+    listed in table~\ref{tab:dep-group-table} as supporting \t{||=}\ groups.
 \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
@@ -109,7 +115,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     zero 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
-    table~\ref{tab:at-most-one-of-table} as supporting \t{REQUIRED_USE ??}\ groups.
+    table~\ref{tab:dep-group-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
@@ -150,15 +156,17 @@ In particular, note that whitespace is not optional.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
-    \label{tab:at-most-one-of-table}
-    \begin{tabular}{ll}
+\begin{centertable}{EAPIs supporting additional group types}
+    \label{tab:dep-group-table}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
+      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{||=}\ groups?}} \\
       \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6, 7           & Yes \\
+      0, 1, 2, 3, 4     & No  & No  \\
+      5, 6              & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -186,6 +194,29 @@ considered to be matched if its associated package dependency specification is n
 
 An empty any-of group counts as being matched.
 
+\subsection{Binding leftmost-of dependency specifications}
+
+Any use-conditional group that is an immediate child of a binding leftmost-of group, if not enabled
+(disabled for an exclamation mark prefixed use flag name), is not considered a member of the binding
+leftmost-of group for match purposes.
+
+In a binding leftmost-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.
+In addition, for runtime dependencies, indicates that the package will break unless the dependency
+corresponding to the first immediate child (in order of listing) matched in \t{ESYSROOT} at the time
+the package was built is satisfied.
+
+An empty binding leftmost-of group counts as being matched.
+
+To implement the binding leftmost-of operator, the package manager will need to store which of
+the immediate child elements were matched. This syntax is only for package manager use and must not
+be used by ebuilds. Only the first matched child element needs to be indicated.
+
+Whenever the binding leftmost-of group is used in an enabled dependency group, the dependencies
+(\t{DEPEND}) must ensure that at least one of the immediate child elements is also matched at build
+time. It is invalid to use the binding leftmost-of group inside PDEPEND or inside any-of dependency
+specifications.
+
 \subsection{Exactly-one-of dependency specifications}
 
 Any use-conditional group that is an immediate child of an exactly-one-of group, if not enabled

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 87ce708..a89f5f8 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{||=} dependency group & \compactfeatureref{binding-leftmost-of} &
+    No & No & No & No & Yes \\
+
 \t{REQUIRED_USE} autoenforced & \compactfeatureref{auto-req-use} &
     No & No & No & No & Yes \\
 
@@ -467,6 +470,7 @@ EAPI 7 is EAPI 6 with the following changes:
   \featureref{nonfatal-fallback}.
 \item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
 \item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
+\item binding leftmost-of (\t{||=}) dependency group is supported, \featureref{binding-leftmost-of}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     eb0c072f137b7ff8b52270609640c398c16f9897
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:17:43 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=eb0c072f

EAPI 7 removes PORTDIR and ECLASSDIR.

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 18 +++++++++++-------
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6e82904..3e06916 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{PORTDIR} & \compactfeatureref{portdir} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{ECLASSDIR} & \compactfeatureref{eclassdir} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -431,6 +437,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \item \t{DESTTREE} removed, \featureref{desttree}.
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
+\item \t{PORTDIR} removed, \featureref{portdir}.
+\item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0434083..f495014 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -110,11 +110,13 @@ variable.
 \t{PORTDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's base directory. \\
+    \featurelabel{portdir} The full path to the master repository's base directory.  Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{PORTDIR}. \\
 \t{ECLASSDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's eclass directory. \\
+    \featurelabel{eclassdir} The full path to the master repository's eclass directory.  Only for
+    EAPIs listed in table~\ref{tab:removed-env-vars-table} as supporting \t{ECLASSDIR}.\\
 \t{ROOT} &
    \t{pkg_*} &
    No &
@@ -284,17 +286,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
       \multicolumn{1}{c}{\textbf{\t{KV}?}} &
       \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
-      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
-      4, 5, 6           & No  & No  & Yes & Yes \\
-      7                 & No  & No  & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
+      7                 & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     e37faa4b89a116bf65ab4ca1c456746ec52580a0
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:33:22 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e37faa4b

EAPI 7 allows die in subshell.

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 23 +++++++++++++++--------
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index fb469f6..a0d1f01 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{die} in subshell & \compactfeatureref{subshell-die} &
+    No & No & No & No & Yes \\
+
 \t{nonfatal} function+command & \compactfeatureref{nonfatal-fallback} &
     No & No & No & No & Yes \\
 
@@ -459,6 +462,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item \t{nonfatal} defined both as a shell function and external command,
   \featureref{nonfatal-fallback}.
+\item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c17c9cc..af4cd35 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -181,23 +181,30 @@ completing. Ebuilds must not run any of these commands once the current phase fu
 \item[die] \featurelabel{nonfatal-die} If called under the \t{nonfatal} command (as per
     section~\ref{sec:failure-behaviour}) and with \t{-n} as its first parameter, displays a failure
     message provided in its following argument and then returns a non-zero exit status. Only in
-    EAPIs listed in table~\ref{tab:nonfatal-die} as supporting option~\t{-n}. Otherwise, displays
+    EAPIs listed in table~\ref{tab:die-properties} as supporting option~\t{-n}. Otherwise, displays
     a failure message provided in its first and only argument, and then aborts the build process.
-    \t{die} is \e{not} guaranteed to work correctly if called from a subshell environment.
+
+    \featurelabel{subshell-die} In EAPIs listed in table~\ref{tab:die-properties} as not providing
+    subshell support, \t{die} is \e{not} guaranteed to work correctly if called from a subshell
+    environment.
 \item[assert] Checks the value of the shell's pipe status variable, and if any component is non-zero
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} commands}
-    \label{tab:nonfatal-die}
-    \begin{tabular}{ll}
+\begin{centertable}{EAPI-specific properties of \t{die} and \t{assert} commands}
+    \label{tab:die-properties}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
+      \multicolumn{2}{c}{\textbf{\t{die} and \t{assert}}} \\
+      &
+      \multicolumn{1}{c}{\textbf{support \t{-n}?}} &
+      \multicolumn{1}{c}{\textbf{work in subshell?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5  & No  \\
-      6, 7              & Yes \\
+      0, 1, 2, 3, 4, 5  & No  & No  \\
+      6                 & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     623c289e3404997fbd26653101a43e3a10323e7a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:41:52 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=623c289e

domo installs to /usr in EAPI 7.

 eapi-differences.tex |  8 ++++++++
 pkg-mgr-commands.tex | 25 ++++++++++++++++++++-----
 2 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 3e06916..d9b5558 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,13 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{domo} install path & \compactfeatureref{domo-path} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{/usr\slash share\slash locale} \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -439,6 +446,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
+\item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 8ab8175..bfc3e99 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -542,11 +542,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     the empty string. In EAPIs specified by table~\ref{tab:doman-table}, the \t{-i18n} option takes
     precedence over the language code in the filename.
 
-\item[domo] Installs the given \t{.mo} files with file mode \t{0644} into the appropriate
-    subdirectory of \t{DESTTREE\slash share\slash locale}, generated by taking the basename of the
-    file, removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed
-    files is the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
-    section~\ref{sec:failure-behaviour}.
+\item[domo] \featurelabel{domo-path} Installs the given \t{.mo} files with file mode \t{0644} into
+    the appropriate subdirectory of the locale tree, generated by taking the basename of the file,
+    removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed files is
+    the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
+    section~\ref{sec:failure-behaviour}. The locale tree location is EAPI dependent as per
+    table~\ref{tab:domo-path}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
@@ -666,6 +667,20 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPI-dependent install path for \t{domo} command}
+    \label{tab:domo-path}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{destination path}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}\slash share\slash locale} \\
+      7                   & \t{/usr/share/locale} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees, all relative to \t{\$\{ED\}} in
 offset-prefix aware EAPIs and relative to \t{\$\{D\}} in offset-prefix agnostic EAPIs, used by the


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 16:48 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 16:48 UTC (permalink / raw
  To: gentoo-commits

commit:     53c5ca4330f63c48585cb144880f11b671bde7f7
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:48:46 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 16:47:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=53c5ca43

pkg-mgr-commands: Redefine dolib* in terms of libdir.a

Since EAPI 7 removes dolib, it would be a bad fit to describe the two
other commands on top of one that is removed. Instead, start by defining
libdir.a and then define the two other commands on top of it.

This also clarifies that dolib.a & dolib.so do not respect libopts,
while the old wording was not clear on that. However, this is at least
how it was implemented in Portage (with dolib.a and dolib.so overriding
libopts completely).

 pkg-mgr-commands.tex | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index bfc3e99..ae9a615 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -494,15 +494,16 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     symlink is encountered. Failure behaviour is EAPI dependent as per
     section~\ref{sec:failure-behaviour}.
 
-\item[dolib] For each argument, installs it into the appropriate library subdirectory under
-    \t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files are installed by default
-    with file mode \t{0644}, or with the \t{install} options set by the most recent \t{libopts}
-    call. Any symlinks are installed into the same directory as relative links to their original
-    target. Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
+\item[dolib.a] For each argument, installs it into the appropriate library subdirectory under
+    \t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files are installed
+    with file mode \t{0644}. Any symlinks are installed into the same directory as relative links
+    to their original target. Failure behaviour is EAPI dependent as per
+    section~\ref{sec:failure-behaviour}.
 
-\item[dolib.a] As for \t{dolib} except each file is installed with mode \t{0644}.
+\item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
-\item[dolib.so] As for \t{dolib} except each file is installed with mode \t{0755}.
+\item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
+    the \t{install} options set by the most recent \t{libopts} call.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 17:36 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 17:36 UTC (permalink / raw
  To: gentoo-commits

commit:     1c9f1a26ca761f715d7e70d223b896b8a6eeddee
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 17:35:57 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 17:36:09 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=1c9f1a26

EAPI 7 supports runtime-modifiable USE flags.

Bug: https://bugs.gentoo.org/424283

 dependencies.tex     |  3 ++-
 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  |  5 ++++-
 ebuild-vars.tex      | 16 ++++++++++++----
 eclasses.tex         | 11 ++++++-----
 metadata-cache.tex   |  1 +
 pkg-mgr-commands.tex |  4 ++++
 7 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index d9592d9..acc447c 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -181,7 +181,8 @@ In a use-conditional group, if the associated use flag is enabled (or disabled i
 exclamation mark prefix), all of the child elements must be matched.
 
 It is an error for a flag to be used if it is not included in \t{IUSE_EFFECTIVE} as described in
-section~\ref{sec:use-iuse-handling}.
+section~\ref{sec:use-iuse-handling}. Flags listed in \t{IUSE_RUNTIME} can be used only
+in \t{RDEPEND}, \t{PDEPEND} and \t{REQUIRED_USE}.
 
 \subsection{Any-of dependency specifications}
 

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a89f5f8..441de70 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{IUSE_RUNTIME} & \compactfeatureref{iuse-runtime} &
+    No & No & No & No & Yes \\
+
 \t{||=} dependency group & \compactfeatureref{binding-leftmost-of} &
     No & No & No & No & Yes \\
 
@@ -471,6 +474,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
 \item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
 \item binding leftmost-of (\t{||=}) dependency group is supported, \featureref{binding-leftmost-of}.
+\item runtime-modifiable USE flags (\t{IUSE_RUNTIME}) are supported, \featureref{iuse-runtime}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index f495014..42bd3a2 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -355,10 +355,12 @@ table~\ref{tab:locale-settings}.
 \subsection{USE and IUSE handling}
 \label{sec:use-iuse-handling}
 
-This section discusses the handling of four variables:
+This section discusses the handling of five variables:
 
 \begin{description}
 \item[IUSE] is the variable calculated from the \t{IUSE} values defined in ebuilds and eclasses.
+\item[IUSE_RUNTIME] is the variable calculated from the \t{IUSE_RUNTIME} values defined in ebuilds
+    and eclasses.
 \item[IUSE_REFERENCEABLE] is a variable calculated from \t{IUSE} and a variety of other sources
     described below. It is purely a conceptual variable; it is not exported to the ebuild
     environment. Values in \t{IUSE_REFERENCEABLE} may legally be used in queries from other
@@ -392,6 +394,7 @@ as supporting profile defined \t{IUSE} injection, \t{IUSE_EFFECTIVE} contains th
 
 \begin{compactitem}
 \item All values in the calculated \t{IUSE} value.
+\item All values in the calculated \t{IUSE_RUNTIME} value, in EAPIs where this variable is defined.
 \item All values in the profile \t{IUSE_IMPLICIT} variable.
 \item All values in the profile variable named \t{USE_EXPAND_VALUES_\$\{v\}}, where \t{\$\{v\}}
     is any value in the intersection of the profile \t{USE_EXPAND_UNPREFIXED} and

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index e4efcae..17e40ed 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -67,6 +67,12 @@ Ebuilds may define any of the following variables:
     \t{IUSE} defaults, 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[IUSE_RUNTIME] \featurelabel{iuse-runtime} Additional \t{USE} flags used by the ebuild whose
+    values can be altered in place without rebuilding from source. The flags listed
+    in \t{IUSE_RUNTIME} must not alter the package built. They must not be referenced at build time,
+    except for informational purposes. A single flag can not be listed in both \t{IUSE_RUNTIME}
+    and \t{IUSE} simultaneously. Uses the same syntax as \t{IUSE}. Only in EAPIs listed
+    in table~\ref{tab:optional-vars-table} as supporting \t{IUSE_RUNTIME}.
 \item[REQUIRED_USE] \featurelabel{required-use} Zero or more assertions that must be met by the
     configuration of \t{USE} flags to be valid for this ebuild. See section~\ref{sec:required-use}
     for description and section~\ref{sec:dependencies} for full syntax. Only in EAPIs listed in
@@ -103,14 +109,16 @@ Ebuilds may define any of the following variables:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{PROPERTIES}?}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} \\
+      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{IUSE_RUNTIME}?}} \\
       \midrule
-      0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6, 7        & Yes        & Yes \\
+      0, 1, 2, 3        & Optionally & No  & No  \\
+      4, 5, 6           & Yes        & Yes & No  \\
+      7                 & Yes        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eclasses.tex b/eclasses.tex
index 44683b5..9c2b685 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,12 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND} and \t{PDEPEND} variables are
-handled specially when set by an eclass. They must be accumulated across eclasses, appending
-the value set by each eclass to the resulting value after the previous one is loaded. Then
-the eclass-defined value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this
-is done after the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+The \t{IUSE}, \t{IUSE_RUNTIME}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}
+and \t{PDEPEND} variables are handled specially when set by an eclass. They must be accumulated
+across eclasses, appending the value set by each eclass to the resulting value after the previous
+one is loaded. Then the eclass-defined value is appended to that defined by the ebuild. In the case
+of \t{RDEPEND}, this is done after the implicit \t{RDEPEND} rules in
+section~\ref{sec:rdepend-depend} are applied.
 
 \section{EXPORT_FUNCTIONS}
 

diff --git a/metadata-cache.tex b/metadata-cache.tex
index df4b8ed..3ec626e 100644
--- a/metadata-cache.tex
+++ b/metadata-cache.tex
@@ -37,6 +37,7 @@ order. Other lines may be present following these; their meanings are not define
     ebuild metadata; see table~\ref{tab:defined-phases-table}.
 \item Build-time dependencies for \t{CBUILD} host (\t{BDEPEND}).
     Blank in some EAPIs; see table~\ref{tab:depend-table}.
+\item Runtime-modifiable use flags that this package respects (\t{IUSE_RUNTIME})
 \item Blank lines to pad the file to 22 lines long
 \end{compactenum}
 

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index af4cd35..eac9bc8 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -808,6 +808,10 @@ Unless otherwise noted, if any of these functions is called with a flag value th
 in \t{IUSE_EFFECTIVE}, either behaviour is undefined or it is an error as decided by
 table~\ref{tab:use-list-strictness}.
 
+In EAPIs listed in table~\ref{tab:optional-vars-table} as supporting \t{IUSE_RUNTIME}, the flags
+listed in \t{IUSE_RUNTIME} can only be referenced in \t{pkg_*} phases. Passing any of those flags
+to one of the following functions during any other phase is an error.
+
 \begin{description}
 \item[use] Returns shell true (0) if the first argument (a \t{USE} flag name) is enabled, false
     otherwise.  If the flag name is prefixed with \t{!}, returns true if the flag is disabled, and


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 17:44 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 17:44 UTC (permalink / raw
  To: gentoo-commits

commit:     6294e7f0ecb82eb0f47cd3a6ea2aefd5d02edd86
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 17:44:06 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 17:44:06 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=6294e7f0

EAPI 7 has sandbox directory removal functions.

Bug: https://bugs.gentoo.org/630422

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 29 +++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 441de70..0055070 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{rm*} sandbox functions & \compactfeatureref{sandbox-rm} &
+    No & No & No & No & Yes \\
+
 \t{IUSE_RUNTIME} & \compactfeatureref{iuse-runtime} &
     No & No & No & No & Yes \\
 
@@ -475,6 +478,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
 \item binding leftmost-of (\t{||=}) dependency group is supported, \featureref{binding-leftmost-of}.
 \item runtime-modifiable USE flags (\t{IUSE_RUNTIME}) are supported, \featureref{iuse-runtime}.
+\item sandbox path removal flags (\t{rm*}) are supported, \featureref{sandbox-rm}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index eac9bc8..70f4d5b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -88,6 +88,35 @@ argument. Ebuilds must not run any of these commands once the current phase func
 \item[adddeny] Add a directory to the deny list.
 \end{description}
 
+\featurelabel{sandbox-rm} Additionally, in EAPIs listed in table~\ref{tab:sandbox-command-table}
+as supporting the respective commands, the following commands are available:
+\begin{description}
+\item[rmread] Remove a directory from the permitted read list.
+\item[rmwrite] Remove a directory from the permitted write list.
+\item[rmpredict] Remove a directory from the predict list.
+\item[rmdeny] Remove a directory from the deny list.
+\end{description}
+
+All of those commands match paths exactly. Removing a directory that is not present on the list
+is silently ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Additional sandbox commands by EAPI}
+    \label{tab:sandbox-command-table}
+    \begin{tabular}{lllll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{rmread}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmwrite}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmpredict}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmdeny}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+      7                   & Yes & Yes & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Package manager query commands}
 These commands are used to extract information about the system. Ebuilds must not run any of
 these commands in parallel with any other package manager command. Ebuilds must not run any of


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     1882a752641de7b1c63aa58207dda10a92f90f31
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 29 23:00:32 2015 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:50 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=1882a752

EAPI 7 supports a directory for package.mask.

Bug: https://bugs.gentoo.org/282296

 eapi-differences.tex |  4 ++++
 tree-layout.tex      | 20 ++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d6e270a..9d7ec60 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.mask} directory & \compactfeatureref{package-mask-dir} &
+    No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
     No & No & Yes & Yes & Yes \\
 
@@ -373,6 +376,7 @@ EAPI 6 is EAPI 5 with the following changes:
 EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
+\item \t{profiles/package.mask} can be a directory, \featureref{package-mask-dir}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/tree-layout.tex b/tree-layout.tex
index 1c23357..d09feef 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -107,6 +107,12 @@ manager must ignore any files in this directory that it does not recognise.
     Contains a list, one entry per line, of package dependency specifications (using the directory's
     EAPI). Any package version matching one of these is considered to be masked, and will not be
     installed regardless of profile unless it is unmasked by the user configuration.
+
+    \featurelabel{package-mask-dir} For EAPIs listed in table~\ref{tab:package-mask-dir} as
+    supporting it, \t{package.mask} can be a directory instead of a regular file. Files contained
+    in that directory, unless their name begins with a dot, will be concatenated in order of their
+    filename in the POSIX locale and the result will be processed as if it were a single file.
+    Any subdirectories will be ignored.
 \item[profiles.desc] Described below in section~\ref{sec:profiles.desc}.
 \item[repo_name] Contains, on a single line, the name of this repository. The repository name must
     conform to section~\ref{sec:repository-names}.
@@ -123,6 +129,20 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
+    \label{tab:package-mask-dir}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{The profiles.desc file}
 \label{sec:profiles.desc}
 \t{profiles.desc} is a line-based file, with the standard commenting


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     5cc99df1739e08f106fd79ad02ed4c4c2be310eb
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 29 23:01:54 2015 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:53 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=5cc99df1

EAPI 7 supports directories for profile files.

Bug: https://bugs.gentoo.org/282296

 eapi-differences.tex |  5 +++++
 profiles.tex         | 38 +++++++++++++++++++++++++++++++-------
 2 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9d7ec60..44869c0 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -44,6 +44,9 @@ of this document for a complete table of previous EAPIs.
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
     No & No & No & No & Yes \\
 
+Profile files as directories & \compactfeatureref{profile-file-dirs} &
+    No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
     No & No & Yes & Yes & Yes \\
 
@@ -377,6 +380,8 @@ EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
 \item \t{profiles/package.mask} can be a directory, \featureref{package-mask-dir}.
+\item \t{package.mask}, \t{package.use}, \t{use.*} and \t{package.use.*} in a profile can be
+    directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/profiles.tex b/profiles.tex
index 0d7164e..99e84ea 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -69,6 +69,27 @@ parent profile's list is taken, and the current profile's list appended. If any
 hyphen, then any lines previous to it whose contents are equal to the remainder of that line are
 removed from the list. Once again, blank lines and those beginning with a \# are discarded.
 
+\featurelabel{profile-file-dirs} In EAPIs listed in table~\ref{tab:profile-file-dirs} as supporting
+directories for profile files, any of the files \t{package.mask}, \t{package.use}, \t{use.*} and
+\t{package.use.*} mentioned below can be a directory instead of a regular file. Files contained
+in that directory, unless their name begins with a dot, will be concatenated in order of their
+filename in the POSIX locale and the result will be processed as if it were a single file.
+Any subdirectories will be ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting directories for profile files}
+    \label{tab:profile-file-dirs}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{packages}
 The \t{packages} file is used to define the `system set' for this profile.
 After the above rules for inheritance and comments are applied, its lines must take one of two
@@ -84,7 +105,8 @@ but is mentioned here for completeness.
 \subsection{package.mask}
 \t{package.mask} is used to prevent packages from being installed on a given profile. Each line
 contains one package dependency specification; anything matching this specification will not be
-installed unless unmasked by the user's configuration.
+installed unless unmasked by the user's configuration. In some EAPIs, \t{package.mask} can be a
+directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 Note that the \t{-spec} syntax can be used to remove a mask in a parent profile, but not
 necessarily a global mask (from \t{profiles/package.mask}, section~\ref{profiles-package.mask}).
@@ -99,17 +121,19 @@ has severe adverse effects on USE-based and slot-based dependencies, its use is
 and package manager support must be regarded as purely optional.
 
 \subsection{package.use}
-The \t{package.use} file may be used by the package manager to override the default USE flags specified
-by \t{make.defaults} on a per package basis.  The format is to have a package dependency specification,
-and then a space delimited list of USE flags to enable.  A USE flag in the form of \t{-flag} indicates
-that the package should have the USE flag disabled.  The package dependency specification is limited to
-the forms defined by the directory's EAPI.
+The \t{package.use} file may be used by the package manager to override the default USE flags
+specified by \t{make.defaults} on a per package basis. The format is to have a package dependency
+specification, and then a space delimited list of USE flags to enable. A USE flag in the form of
+\t{-flag} indicates that the package should have the USE flag disabled. The package dependency
+specification is limited to the forms defined by the directory's EAPI. In some EAPIs,
+\t{package.use} can be a directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 \subsection{USE masking and forcing}
 This section covers the eight files \t{use.mask}, \t{use.force}, \t{use.stable.mask},
 \t{use.stable.force}, \t{package.use.mask}, \t{package.use.force}, \t{package.use.stable.mask},
 and \t{package.use.\allowbreak stable.force}. They are described together because they interact in
-a non-trivial manner.
+a non-trivial manner. In some EAPIs, these files can be directories instead of regular files as per
+section~\ref{sec:line-stacking}.
 
 Simply speaking, \t{use.mask} and \t{use.force} are used to say that a given USE flag must never or
 always, respectively, be enabled when using this profile. \t{package.use.mask} and


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     7371f6f3720da1889de7bc02902656f4faf904a8
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 15 17:20:13 2015 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:42 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=7371f6f3

EAPI 7: dohtml banned.

Bug: https://bugs.gentoo.org/520546

 eapi-differences.tex |  5 ++++-
 pkg-mgr-commands.tex | 16 ++++++++++------
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index dbde139..d6e270a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -169,6 +169,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{einstall} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Banned & Banned \\
 
+\t{dohtml} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
     No & No & Yes & Yes & Yes \\
 
@@ -370,7 +373,7 @@ EAPI 6 is EAPI 5 with the following changes:
 EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
-\item None
+\item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index b94d689..e8a6555 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -50,18 +50,20 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{3}{c}{\textbf{Command banned?}} \\
+      \multicolumn{4}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
       \multicolumn{1}{c}{\textbf{\t{dosed}}} &
-      \multicolumn{1}{c}{\textbf{\t{einstall}}} \\
+      \multicolumn{1}{c}{\textbf{\t{einstall}}} &
+      \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  \\
-      4, 5              & Yes & Yes & No  \\
-      6, 7              & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  & No  \\
+      6                 & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -432,6 +434,8 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     offset-prefix.
 \end{description}
 
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
     Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
 
     It is undefined whether a failure shall occur if \t{-r} is not specified and a directory is


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     e4f4fc5c78e2c40716700ccbbdfb6017f3ac50cf
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 27 21:23:22 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e4f4fc5c

EAPI 7 has version manipulation and comparison functions

Bug: https://bugs.gentoo.org/482170

 eapi-differences.tex |  4 +++
 pkg-mgr-commands.tex | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 84 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 44869c0..a56f1ff 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{ver_*} functions & \compactfeatureref{ver-functions} &
+    No & No & No & No & Yes \\
+
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
     No & No & No & No & Yes \\
 
@@ -383,6 +386,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{package.mask}, \t{package.use}, \t{use.*} and \t{package.use.*} in a profile can be
     directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
+\item Version manipulation and comparison functions added, \featureref{ver-functions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index e8a6555..15bfcde 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -817,6 +817,86 @@ These functions check whitespace-separated lists for a particular value.
 \item[hasq] Deprecated synonym for \t{has}.
 \end{description}
 
+\subsubsection{Version manipulation and comparison commands}
+\featurelabel{ver-functions}
+Those functions provide routines to work with version strings. Their availability per EAPI is listed
+in table~\ref{tab:version-functions}.
+
+For the purpose of version manipulation functions, the specification provides a method for splitting
+an arbitrary version string (not necessarily conforming to \ref{sec:version-spec}) into a series of
+version components and version separators.
+
+A version component consists either purely of digits (\t{[0-9]+}) or purely of a combination of
+uppercase and lowercase letters (\t{[a-zA-Z]+}). A version separator is either a string of any other
+characters (\t{[\textasciicircum 0-9a-zA-Z]}) or it occurs at the transition between a sequence of digits
+and a sequence of letters, or vice versa. In the latter case, the version separator is an empty
+string.
+
+The version string is processed left-to-right, with the successive version components being assigned
+successive indices starting with 1. The separator following a version component is assigned
+the index of the preceding version component. If the first version component is preceded by
+a non-null string of version separator characters, this separator is assigned the index 0.
+
+The version components are presumed present if not empty. The version separators between version
+components are always presumed present, even if they are empty. The version separators preceding
+the first version component and following the last are only presumed present if they are not empty.
+
+Whenever the functions support ranges, the range is specified as a non-negative integer, optionally
+followed by a hyphen (\t{-}), which in turn is optionally followed by another non-negative integer.
+
+A single integer specifies a single component or separator index. An integer followed by a hyphen
+specifies all components or separators starting with the one at specified index. Two integers
+separated by a hyphen specify a range of versions starting at the index specified by the first
+and ending at the second, inclusively.
+
+\begin{description}
+\item[ver_cut] Takes a range as the first argument, and optionally a version string as the second.
+    Prints a substring of the version string starting at the version component specified as start
+    of the range and ending at the version component specified as end of the range. If the version
+    string is not specified, \t{\$\{PVR\}} is used.
+
+    If the range spans outside the present version components, the missing components and separators
+    are presumed empty. In particular, the range starting at zero includes zeroth version separator
+    if present, and the range spanning past the last version component includes the suffix following
+    it if present. A range that does not intersect with any present version components yields empty
+    string.
+
+\item[ver_rs] Takes one or more pairs of arguments, optionally followed by a version string. Every
+    argument pair specifies a range and a replacement string. Prints a version string after
+    performing the specified separator substitutions. If the version string is not specified,
+    \t{\$\{PVR\}} is used.
+
+    For every argument pair specified, each of the version separators present at indices specified
+    by the range is replaced with the replacement string, in order. If the range spans outside
+    the range of present version separators, it is silently truncated.
+
+\item[ver_test] Takes two or three arguments. In the 3-argument form, it takes a LHS version string,
+    followed by an operator, followed by RHS version string. In the 2-argument form, the first
+    version string is omitted and \t{\$\{PVR\}} is used as LHS version string. Returns 0
+    if the specified relation between LHS and RHS version strings is true.
+
+    The operator can be \t{-lt}, \t{-le}, \t{-eq}, \t{-ne}, \t{-ge} and \t{-gt} to test whether
+    LHS is respectively older than, older or equal, equal, not equal, newer or equal, and newer
+    than RHS. Both version strings must conform to the version specification
+    at~\ref{sec:version-spec}, the comparison is done using algorithm~\ref{alg:version-comparison}.
+\end{description}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting version manipulation commands}
+    \label{tab:version-functions}
+    \begin{tabular}{llll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
+      7                   & Yes & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Misc commands}
 The following commands are always available in the ebuild environment, but don't really fit in any
 of the above categories. Ebuilds must not run any of these commands once the current phase function


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     aa550740a8c8791b4ad5080963ce6b6e929e5f84
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 14:10:20 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=aa550740

EAPI 7 disallows stdout output of output functions

Bug: https://bugs.gentoo.org/483240

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 17 +++++++++++------
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 34ee0c9..055e6c6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+Output cmds can use stdout & \compactfeatureref{output-no-stdout} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{eqawarn} & \compactfeatureref{eqawarn} &
     No & No & No & No & Yes \\
 
@@ -391,6 +394,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item Version manipulation and comparison functions added, \featureref{ver-functions}.
 \item \t{eqawarn} added, \featureref{eqawarn}.
+\item Output commands can no longer use stdout, \featureref{output-no-stdout}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c7f3696..5bb8b68 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -114,8 +114,12 @@ These commands display messages to the user. Unless otherwise stated, the entire
 used as a message, with backslash-escaped characters interpreted as for the \t{echo -e} command of
 bash, notably \t{\textbackslash t} for a horizontal tab, \t{\textbackslash n} for a new line, and
 \t{\textbackslash\textbackslash} for a literal backslash. Ebuilds must not run any of these commands
-once the current phase function has returned. Unless otherwise noted, output may be sent to stdout,
-stderr or some other appropriate facility.
+once the current phase function has returned.
+
+\featurelabel{output-no-stdout} Unless otherwise noted, output may be sent to stderr or some other
+appropriate facility. In EAPIs listed in table~\ref{tab:output-commands} as not allowing stdout
+output, using stdout as an output facility is forbidden.
+
 \begin{description}
 \item[einfo] Displays an informational message.
 \item[einfon] Displays an informational message without a trailing newline.
@@ -139,13 +143,14 @@ stderr or some other appropriate facility.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
-    \begin{tabular}{ll}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} &
+      \multicolumn{1}{c}{\textbf{can output to stdout?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6  & No  \\
-      7                    & Yes \\
+      0, 1, 2, 3, 4, 5, 6  & No  & Yes \\
+      7                    & Yes & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     80003cdf6b067a5b654426259665e89f71faad4d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 14:05:38 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=80003cdf

EAPI 7 has eqawarn

Bug: https://bugs.gentoo.org/482884

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 18 ++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a56f1ff..34ee0c9 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{eqawarn} & \compactfeatureref{eqawarn} &
+    No & No & No & No & Yes \\
+
 \t{ver_*} functions & \compactfeatureref{ver-functions} &
     No & No & No & No & Yes \\
 
@@ -387,6 +390,7 @@ EAPI 7 is EAPI 6 with the following changes:
     directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item Version manipulation and comparison functions added, \featureref{ver-functions}.
+\item \t{eqawarn} added, \featureref{eqawarn}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 15bfcde..c7f3696 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -124,6 +124,10 @@ stderr or some other appropriate facility.
     example.
 \item[ewarn] Displays a warning message. Must not go to stdout.
 \item[eerror] Displays an error message. Must not go to stdout.
+\item[eqawarn] \featurelabel{eqawarn} Display a QA warning message intended for ebuild developers.
+    The package manager may provide appropriate mechanisms to skip those messages for normal users.
+    Must not go to stdout.  Only available in EAPIs listed in table~\ref{tab:output-commands} as
+    supporting \t{eqawarn}.
 \item[ebegin] Displays an informational message. Should be used when beginning a possibly
     lengthy process, and followed by a call to \t{eend}.
 \item[eend] Indicates that the process begun with an \t{ebegin} message has completed. Takes one
@@ -132,6 +136,20 @@ stderr or some other appropriate facility.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Output commands for EAPIs}
+    \label{tab:output-commands}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6  & No  \\
+      7                    & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Error commands}
 These commands are used when an error is detected that will prevent the build process from
 completing. Ebuilds must not run any of these commands once the current phase function has returned.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     8779c4199235f96e704a2585f2fabd6ac2603904
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:08:43 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=8779c419

EAPI 7 bans package.provided

Bug: https://bugs.gentoo.org/568884

 eapi-differences.tex |  4 ++++
 profiles.tex         | 24 ++++++++++++++++++++----
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index ace1f55..d6bf6b7 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.provided} & \compactfeatureref{package-provided} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{BROOT} & \compactfeatureref{broot} &
     No & No & No & No & Yes \\
 
@@ -419,6 +422,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{BROOT}, \featureref{broot}.
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
+\item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/profiles.tex b/profiles.tex
index 99e84ea..edc17af 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -115,10 +115,26 @@ necessarily a global mask (from \t{profiles/package.mask}, section~\ref{profiles
     inherit tree when it comes to \t{-lines}. This behaviour may not be relied upon.
 
 \subsection{package.provided}
-\t{package.provided} is used to tell the package manager that a certain package version should be
-considered to be provided by the system regardless of whether it is actually installed. Because it
-has severe adverse effects on USE-based and slot-based dependencies, its use is strongly deprecated
-and package manager support must be regarded as purely optional.
+\featurelabel{package-provided} \t{package.provided} is used to tell the package manager that
+a certain package version should be considered to be provided by the system regardless of whether it
+is actually installed. Because it has severe adverse effects on USE-based and slot-based
+dependencies, its use is strongly deprecated and package manager support must be regarded as purely
+optional. Banned in EAPIs listed as not allowing \t{package.provided} in
+table~\ref{tab:profile-package-provided}.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Profile \t{package.provided} support}
+    \label{tab:profile-package-provided}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Allows \t{package.provided}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & Yes \\
+      7                   & No  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{package.use}
 The \t{package.use} file may be used by the package manager to override the default USE flags


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     8a7ff2dabbbbae4afdb618c3f636039ef9b6a1b7
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:48:46 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:24:18 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=8a7ff2da

pkg-mgr-commands: Redefine dolib* in terms of libdir.a

Since EAPI 7 removes dolib, it would be a bad fit to describe the two
other commands on top of one that is removed. Instead, start by defining
libdir.a and then define the two other commands on top of it.

This also clarifies that dolib.a & dolib.so do not respect libopts,
while the old wording was not clear on that. However, this is at least
how it was implemented in Portage (with dolib.a and dolib.so overriding
libopts completely).

 pkg-mgr-commands.tex | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index bfc3e99..ae9a615 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -494,15 +494,16 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     symlink is encountered. Failure behaviour is EAPI dependent as per
     section~\ref{sec:failure-behaviour}.
 
-\item[dolib] For each argument, installs it into the appropriate library subdirectory under
-    \t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files are installed by default
-    with file mode \t{0644}, or with the \t{install} options set by the most recent \t{libopts}
-    call. Any symlinks are installed into the same directory as relative links to their original
-    target. Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
+\item[dolib.a] For each argument, installs it into the appropriate library subdirectory under
+    \t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files are installed
+    with file mode \t{0644}. Any symlinks are installed into the same directory as relative links
+    to their original target. Failure behaviour is EAPI dependent as per
+    section~\ref{sec:failure-behaviour}.
 
-\item[dolib.a] As for \t{dolib} except each file is installed with mode \t{0644}.
+\item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
-\item[dolib.so] As for \t{dolib} except each file is installed with mode \t{0755}.
+\item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
+    the \t{install} options set by the most recent \t{libopts} call.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     a7ee638eb9db7c6a31a2b9a14f051616c8944e22
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 16:20:11 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=a7ee638e

EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED.

Bug: https://bugs.gentoo.org/465772

 eapi-differences.tex |  5 +++++
 ebuild-env-vars.tex  | 58 ++++++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 055e6c6..939c501 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+Trailing slash in \t{ROOT}, \t{D}... & \compactfeatureref{trailing-slash} &
+    Yes & Yes & Yes & Yes & No \\
+
 Output cmds can use stdout & \compactfeatureref{output-no-stdout} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -395,6 +398,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Version manipulation and comparison functions added, \featureref{ver-functions}.
 \item \t{eqawarn} added, \featureref{eqawarn}.
 \item Output commands can no longer use stdout, \featureref{output-no-stdout}.
+\item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
+    \featureref{trailing-slash}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 1851aba..fe61ac5 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -121,14 +121,15 @@ variable.
    The absolute path to the root directory into which the package is to be merged.  Phases which run
    with full filesystem access must not touch any files outside of the directory given in
    \t{ROOT}\@. Also of note is that in a cross-compiling environment, binaries inside of \t{ROOT}
-   will not be executable on the build machine, so ebuilds must not call them. \t{ROOT} must be
-   non-empty and end in a trailing slash. \\
+   will not be executable on the build machine, so ebuilds must not call them. The presence of
+   a trailing slash is EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{EROOT} &
     \t{pkg_*} &
     No &
-    Contains the path \t{\$\{ROOT\%/\}\$\{EPREFIX\}/} for convenience. See also the
-    \t{EPREFIX} variable. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as
-    supporting \t{EROOT}. \\
+    Contains the concatenation of the paths in \t{ROOT} and \t{EPREFIX} variables, for convenience.
+    See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}. The presence of a trailing
+    slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -159,18 +160,21 @@ variable.
     \t{src_install} &
     No &
     Contains the full path to the image directory into which the package should be installed.
-    Must be non-empty and end in a trailing slash. \\
+    The presence of a trailing slash is EAPI-dependent as listed in table~\ref{tab:trailing-slash}.
+    \\
 \t{D} (continued) &
     \t{pkg_preinst}, \t{pkg_postinst} &
     Yes &
-    Contains the full path to the image that is about to be or has just been merged. Must be
-    non-empty and end in a trailing slash. \\
+    Contains the full path to the image that is about to be or has just been merged.
+    The presence of a trailing slash is EAPI-dependent as listed in table~\ref{tab:trailing-slash}.
+    \\
 \t{ED} &
     \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst} &
     See \t{D} &
-    Contains the path \t{\$\{D\%/\}\$\{EPREFIX\}/} for convenience. See also the
-    \t{EPREFIX} variable. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as
-    supporting \t{ED}. \\
+    Contains the concatenation of the paths in \t{D} and \t{EPREFIX} variables, for convenience.
+    See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{ED}. The presence of a trailing
+    slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{DESTTREE} &
     \t{src_install} &
     No &
@@ -420,6 +424,38 @@ behaviour of offset-prefix aware and agnostic is the same when \t{EPREFIX} is se
 string in offset-prefix aware EAPIs. The latter do have the variables \t{ED} and \t{EROOT} properly
 set, though.
 
+\subsection{Path variables and trailing slash}
+\label{sec:trailing-slash}
+
+Unless specified otherwise, the paths provided through package manager variables do not end with
+a trailing slash and can not be empty. A few exceptions to that rule are listed
+in table~\ref{tab:trailing-slash} along with applicable EAPIs.
+
+For EAPIs where those variables are defined to always end with a trailing slash, the package manager
+guarantees that a trailing slash will always be appended to the path in question. If the path
+specifies the system root directory, it will consist of a single slash (\t{/}).
+
+\featurelabel{trailing-slash} For EAPIs where those variables are defined to never end with
+a trailing slash, the package manager guarantees that a trailing slash will never be present.
+If the path specifies the system root directory, it will be empty.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Variables that always or never end with a trailing slash}
+    \label{tab:trailing-slash}
+    \begin{tabular}{lll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{2}{c}{\textbf{Ends with a trailing slash?}} \\
+      &
+      \t{ROOT}, \t{EROOT} &
+      \t{D}, \t{ED} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & always & always \\
+      7                   & never  & never  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
 %%% Local Variables:


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     ecc3bd85116971e05730c2e4ef5ac9b107a882e5
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:23:58 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ecc3bd85

EAPI 7 has SYSROOT and ESYSROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 47 +++++++++++++++++++++++++++++++++--------------
 2 files changed, 37 insertions(+), 14 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9f39934..f3c68f6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
+    No & No & No & No & Yes \\
+
 GNU patch version & \compactfeatureref{gnu-patch} &
     Any & Any & Any & Any & 2.7 \\
 
@@ -404,6 +407,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
+\item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index fe61ac5..e24a065 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -130,6 +130,20 @@ variable.
     See also the \t{EPREFIX} variable. Only for EAPIs listed
     in table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}. The presence of a trailing
     slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{SYSROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{sysroot} The absolute path to the root directory containing build dependencies
+    satisfied by \t{DEPEND}.  Only for EAPIs listed in table~\ref{tab:added-env-vars-table}
+    as supporting \t{SYSROOT}. The presence of a trailing slash EAPI-dependent as listed
+    in table~\ref{tab:trailing-slash}. \\
+\t{ESYSROOT} &
+    \t{src_*} &
+    No &
+    Contains the concatenation of the paths in \t{SYSROOT} and \t{EPREFIX} variables,
+    for convenience.  See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. The presence of a trailing
+    slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -239,17 +253,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{llllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} \\
+      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  \\
-      5, 6, 7           & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -272,15 +288,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
       \multicolumn{1}{c}{\textbf{\t{EROOT}?}} &
-      \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{ED}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ESYSROOT}?}} \\
       \midrule
-      0, 1, 2           & No  & No  & No  \\
-      3, 4, 5, 6, 7     & Yes & Yes & Yes \\
+      0, 1, 2           & No  & No  & No  & No  \\
+      3, 4, 5, 6        & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -442,16 +460,17 @@ If the path specifies the system root directory, it will be empty.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{2}{c}{\textbf{Ends with a trailing slash?}} \\
+      \multicolumn{3}{c}{\textbf{Ends with a trailing slash?}} \\
       &
       \t{ROOT}, \t{EROOT} &
-      \t{D}, \t{ED} \\
+      \t{D}, \t{ED} &
+      \t{SYSROOT}, \t{ESYSROOT} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & always & always \\
-      7                   & never  & never  \\
+      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    \\
+      7                   & never  & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     7bc5d9db8f69be67efc9093a5d8b9f689675a771
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 20:53:59 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=7bc5d9db

EAPI 7 drops --host-root in favor of -b, -d, and -r

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  8 +++++---
 pkg-mgr-commands.tex | 30 ++++++++++++++++++++----------
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index af28b7a..ace1f55 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -202,8 +202,8 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
-Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & No & Yes & Yes & Yes \\
+PM query options & \compactfeatureref{pm-query-options} &
+    No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
@@ -368,7 +368,7 @@ EAPI 5 is EAPI 4 with the following changes:
 \item \t{USE} is calculated differently, \featureref{profile-iuse-inject}.
 \item \t{find} is guaranteed to be GNU, \featureref{gnu-find}.
 \item \t{best_version} and \t{has_version} support the \t{-{}-host-root} option,
-    \featureref{host-root-option}.
+    \featureref{pm-query-options}.
 \item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}.
 \item \t{doheader} and \t{newheader} support, \featureref{doheader}.
 \item \t{new*} can read from standard input, \featureref{newfoo-stdin}.
@@ -417,6 +417,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
 \item \t{BROOT}, \featureref{broot}.
+\item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
+  \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 6a4415d..8ab8175 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -84,27 +84,37 @@ These commands are used to extract information about the system. Ebuilds must no
 these commands in parallel with any other package manager command. Ebuilds must not run any of
 these commands once the current phase function has returned.
 
-\featurelabel{host-root-option} In EAPIs listed in table~\ref{tab:foo-version-host-root-table} as
-supporting option \t{-{}-host-root}, this flag as the first argument will cause the query to apply
-to the host root instead of \t{ROOT}.
+\featurelabel{pm-query-options} In EAPIs listed in table~\ref{tab:pm-query-options-table}
+as supporting options \t{-b}, \t{-d}, and \t{-r}, these flags as the first argument will cause
+the query to apply to locations targetted by \t{BDEPEND}, \t{DEPEND}, and \t{RDEPEND} respectively.
+When none of these options are given, \t{-r} is assumed.
+
+In EAPIs listed in table~\ref{tab:pm-query-options-table} as supporting option \t{-{}-host-root},
+this flag as the first argument will cause the query to apply to the host root. Otherwise, it
+applies to \t{ROOT}.
+
 \begin{description}
 \item[has_version] Takes exactly one package dependency specification as an argument. Returns
-    true if a package matching the specification is installed in \t{ROOT}, and false otherwise.
+    true if a package matching the specification is installed, and false otherwise.
 \item[best_version] Takes exactly one package dependency specification as an argument. If a
     matching package is installed, prints the category, package name and version of the highest
     matching version; otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*_version} commands}
-    \label{tab:foo-version-host-root-table}
-    \begin{tabular}{ll}
+\begin{centertable}{Package manager query command options supported by EAPIs}
+    \label{tab:pm-query-options-table}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{*_version} supports \t{-{}-host-root}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{-{}-host-root}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-b}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-d}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-r}?}} \\
       \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      0, 1, 2, 3, 4     & No  & No  & No  & No  \\
+      5, 6              & Yes & No  & No  & No  \\
+      7                 & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     e7bd3ae55adcccce24e7a19b09bdbacb6cf246f8
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:19:16 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e7bd3ae5

EAPI 7 has BDEPEND

Bug: https://bugs.gentoo.org/317337

 dependencies.tex     | 36 ++++++++++++++++++++++++++++++++----
 eapi-differences.tex |  4 ++++
 ebuild-vars.tex      |  1 +
 eclasses.tex         | 10 +++++-----
 metadata-cache.tex   |  2 ++
 5 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 258b394..92e7bb9 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -15,7 +15,7 @@
           None (ebuilds can rely only on the packages in the system~set) \\
       \addlinespace
       \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, \t{src_test},
-          \t{src_install} & \t{DEPEND} \\
+          \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
       \addlinespace
       \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
           \t{RDEPEND} (unless the particular dependency results in a circular dependency, in which
@@ -38,6 +38,18 @@ There are three classes of dependencies supported by ebuilds:
     the package manager finishes the batch of installs.
 \end{compactitem}
 
+\featurelabel{bdepend} Additionally, in EAPIs listed in table~\ref{tab:depend-table}
+as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
+
+\begin{compactitem}
+\item Build dependencies that are binary compatible with the native build system
+    / CBUILD (\t{BDEPEND}). The ebuild is allowed to call binary executables
+    installed by this kind of dependency.
+\item Build dependencies that are binary compatible with the system being built
+    / CHOST (\t{DEPEND}). The ebuild must not execute binary executables installed
+    by this kind of dependency.
+\end{compactitem}
+
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
 a particular phase function is executed.
 
@@ -50,7 +62,8 @@ The following elements are recognised in at least one class of specification. Al
 be surrounded on both sides by whitespace, except at the start and end of the string.
 
 \begin{compactitem}
-\item A package dependency specification. Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}.
+\item A package dependency specification. Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND},
+    \t{PDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC_URI} and \t{HOMEPAGE}\@.
     In EAPIs listed in table~\ref{tab:uri-arrows-table} as supporting \t{SRC_URI} arrows, may
     optionally be followed by whitespace, then \t{->}, then whitespace, then a simple filename when
@@ -68,7 +81,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     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{any-of} \t{::=} \t{'||' whitespace '(' whitespace (item whitespace)* ')'}.
-    Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
+    Permitted in \t{DEPEND}, \t{BDEPEND}, \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
@@ -93,6 +106,20 @@ be surrounded on both sides by whitespace, except at the start and end of the st
 In particular, note that whitespace is not optional.
 
 \ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting additional dependency types}
+    \label{tab:depend-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
     \label{tab:uri-arrows-table}
     \begin{tabular}{ll}
@@ -285,7 +312,8 @@ indicates that the package will not break if the matched package is uninstalled
 a different matching package in a different slot.
 \item[=] Indicates that any slot value is acceptable. In addition, for runtime dependencies,
 indicates that the package will break unless a matching package with slot and sub-slot equal to the
-slot and sub-slot of the best installed version at the time the package was built is available.
+slot and sub-slot of the best version installed to \t{ESYSROOT} at the time the package was built
+is available.
 \item[slot=] Indicates that only a specific slot value is acceptable, and otherwise behaves
 identically to the plain equals slot operator.
 \end{description}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 31cc5f6..9205125 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{BDEPEND} & \compactfeatureref{bdepend} &
+    No & No & No & No & Yes \\
+
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
     No & No & No & No & Yes \\
 
@@ -409,6 +412,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
+\item \t{BDEPEND}, \featureref{bdepend}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 32f853c..e4efcae 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -83,6 +83,7 @@ Ebuilds may define any of the following variables:
     for its value if unset and when used with an eclass. See section~\ref{sec:rdepend-depend} for
     details.
 \item[PDEPEND] See section~\ref{sec:dependencies}.
+\item[BDEPEND] See section~\ref{sec:dependencies}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/eclasses.tex b/eclasses.tex
index 49c6c4e..44683b5 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,11 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{RDEPEND} and \t{PDEPEND} variables are handled
-specially when set by an eclass. They must be accumulated across eclasses, appending the value set
-by each eclass to the resulting value after the previous one is loaded. Then the eclass-defined
-value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is done after the
-implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND} and \t{PDEPEND} variables are
+handled specially when set by an eclass. They must be accumulated across eclasses, appending
+the value set by each eclass to the resulting value after the previous one is loaded. Then
+the eclass-defined value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this
+is done after the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
 
 \section{EXPORT_FUNCTIONS}
 

diff --git a/metadata-cache.tex b/metadata-cache.tex
index 80018e4..df4b8ed 100644
--- a/metadata-cache.tex
+++ b/metadata-cache.tex
@@ -35,6 +35,8 @@ order. Other lines may be present following these; their meanings are not define
     metadata; see table~\ref{tab:optional-vars-table}.
 \item Defined phases (\t{DEFINED_PHASES}). In some EAPIs, may optionally be blank, regardless of
     ebuild metadata; see table~\ref{tab:defined-phases-table}.
+\item Build-time dependencies for \t{CBUILD} host (\t{BDEPEND}).
+    Blank in some EAPIs; see table~\ref{tab:depend-table}.
 \item Blank lines to pad the file to 22 lines long
 \end{compactenum}
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     b000f78b21677fb5f574ef3a23ce299b6506996b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:13:57 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:23:21 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=b000f78b

EAPI 7 removes DESTTREE and INSDESTTREE.

Bug: https://bugs.gentoo.org/173630

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 18 ++++++++++++------
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d6bf6b7..6e82904 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{DESTTREE} & \compactfeatureref{desttree} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{INSDESTTREE} & \compactfeatureref{insdesttree} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{package.provided} & \compactfeatureref{package-provided} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -423,6 +429,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
+\item \t{DESTTREE} removed, \featureref{desttree}.
+\item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e91f36e..0434083 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -199,11 +199,14 @@ variable.
 \t{DESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{dobin}, \t{dolib}, \t{domo}, and \t{dosbin} install things. \\
+    \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, \t{domo},
+    and \t{dosbin} install things.  Only for EAPIs listed in table~\ref{tab:removed-env-vars-table}
+    as supporting \t{DESTTREE}. \\
 \t{INSDESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{doins} installs things. \\
+    \featurelabel{insdesttree} Controls the location where \t{doins} installs things. Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{INSDESTTREE}. \\
 \t{USE} &
     All &
     Yes &
@@ -281,14 +284,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
-      \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{KV}?}} &
+      \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes \\
-      4, 5, 6, 7        & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes \\
+      7                 & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     f6417996b3f032b0cf7587921f7946bdd1444ff6
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:39:27 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f6417996

EAPI 7 has BROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 33 +++++++++++++++++++++------------
 2 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9205125..af28b7a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{BROOT} & \compactfeatureref{broot} &
+    No & No & No & No & Yes \\
+
 \t{BDEPEND} & \compactfeatureref{bdepend} &
     No & No & No & No & Yes \\
 
@@ -413,6 +416,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
+\item \t{BROOT}, \featureref{broot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e24a065..e91f36e 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -144,6 +144,13 @@ variable.
     for convenience.  See also the \t{EPREFIX} variable. Only for EAPIs listed
     in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. The presence of a trailing
     slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{BROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{broot} The absolute path to the root directory containing build dependencies
+    satisfied by BDEPEND, typically executable build tools. This includes any applicable offset
+    prefix. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as supporting \t{BROOT}.
+    The presence of a trailing slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -253,19 +260,20 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{llllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} \\
+      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} &
+      \multicolumn{1}{P{6em}}{\textbf{\t{BROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  & No  \\
-      5, 6              & Yes & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -288,7 +296,7 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{llllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
@@ -460,17 +468,18 @@ If the path specifies the system root directory, it will be empty.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{3}{c}{\textbf{Ends with a trailing slash?}} \\
+      \multicolumn{4}{c}{\textbf{Ends with a trailing slash?}} \\
       &
       \t{ROOT}, \t{EROOT} &
       \t{D}, \t{ED} &
-      \t{SYSROOT}, \t{ESYSROOT} \\
+      \t{SYSROOT}, \t{ESYSROOT} &
+      \t{BROOT} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    \\
-      7                   & never  & never  & never  \\
+      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    & n/a    \\
+      7                   & never  & never  & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     162b78f32ca664709c902267ce322b133ce90ee0
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:41:52 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:23:53 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=162b78f3

domo installs to /usr in EAPI 7.

Bug: https://bugs.gentoo.org/595924

 eapi-differences.tex |  8 ++++++++
 pkg-mgr-commands.tex | 25 ++++++++++++++++++++-----
 2 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 3e06916..d9b5558 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,13 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{domo} install path & \compactfeatureref{domo-path} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{/usr\slash share\slash locale} \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -439,6 +446,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
+\item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 8ab8175..bfc3e99 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -542,11 +542,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     the empty string. In EAPIs specified by table~\ref{tab:doman-table}, the \t{-i18n} option takes
     precedence over the language code in the filename.
 
-\item[domo] Installs the given \t{.mo} files with file mode \t{0644} into the appropriate
-    subdirectory of \t{DESTTREE\slash share\slash locale}, generated by taking the basename of the
-    file, removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed
-    files is the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
-    section~\ref{sec:failure-behaviour}.
+\item[domo] \featurelabel{domo-path} Installs the given \t{.mo} files with file mode \t{0644} into
+    the appropriate subdirectory of the locale tree, generated by taking the basename of the file,
+    removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed files is
+    the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
+    section~\ref{sec:failure-behaviour}. The locale tree location is EAPI dependent as per
+    table~\ref{tab:domo-path}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
@@ -666,6 +667,20 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPI-dependent install path for \t{domo} command}
+    \label{tab:domo-path}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{destination path}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}\slash share\slash locale} \\
+      7                   & \t{/usr/share/locale} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees, all relative to \t{\$\{ED\}} in
 offset-prefix aware EAPIs and relative to \t{\$\{D\}} in offset-prefix agnostic EAPIs, used by the


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     85acabdf359a8fe02b8d1c485560b58cc07a3869
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 23:46:32 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=85acabdf

dependencies: Provide a nice summary table for dep APIs

 dependencies.tex | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 92e7bb9..63d8c53 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -26,6 +26,21 @@
     \end{tabular}
 \end{centertable}
 
+\begin{centertable}{Summary of other interfaces related to dependency classes}
+    \label{tab:dependency-class-apis}
+    \begin{tabular}{lccc}
+      \toprule
+      & \t{BDEPEND} & \t{DEPEND} & \t{RDEPEND}, \t{PDEPEND} \\
+      \midrule
+      binary compatible with & \t{CBUILD} & \t{CHOST} & \t{CHOST} \\
+      base unprefixed path & \t{/} & \t{\$\{SYSROOT\}} & \t{\$\{ROOT\}} \\
+      relevant offset-prefix & \t{\$\{BROOT\}} & \t{\$\{EPREFIX\}} & \t{\$\{EPREFIX\}} \\
+      path combined with prefix & \t{\$\{BROOT\}} & \t{\$\{ESYSROOT\}} & \t{\$\{EROOT\}} \\
+      PM query option & \t{-b} & \t{-d} & \t{-r} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 There are three classes of dependencies supported by ebuilds:
 
 \begin{compactitem}
@@ -51,7 +66,8 @@ as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
 \end{compactitem}
 
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
-a particular phase function is executed.
+a particular phase function is executed. Table~\ref{tab:dependency-class-api} summarizes
+additional interfaces related to the dependency classes.
 
 In addition, \t{SRC_URI}, \t{HOMEPAGE}, \t{RESTRICT}, \t{PROPERTIES}, \t{LICENSE} and
 \t{REQUIRED_USE} use dependency-style specifications to specify their values.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     4bb4357f781832ece312de01e3b90be9f63082ad
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 19 21:36:40 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=4bb4357f

EAPI 7: econf adds --with-sysroot

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  3 ++-
 pkg-mgr-commands.tex | 17 +++++++++++------
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f3c68f6..31cc5f6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -212,7 +212,7 @@ Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
     & disable dependency tracking &
     disable dependency tracking, disable silent rules &
     disable dependency tracking, disable silent rules, docdir, htmldir &
-    disable dependency tracking, disable silent rules, docdir, htmldir \\
+    disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
     No & Yes & Yes & Yes & Yes \\
@@ -408,6 +408,7 @@ EAPI 7 is EAPI 6 with the following changes:
     \featureref{trailing-slash}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
+\item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 5bb8b68..6a4415d 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -283,6 +283,9 @@ current phase function has returned.
     \item -{}-htmldir must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}/html}, if the EAPI is listed
         in table~\ref{tab:econf-options-table} as using it. This option will only be passed if the
         string \t{-{}-htmldir} occurs in the output of \t{configure -{}-help}.
+    \item -{}-with-sysroot must be \t{\$\{ESYSROOT\}}, if the EAPI is listed in
+        table~\ref{tab:econf-options-table} as using it. This option will only be passed if the
+        string \t{-{}-with-sysroot} occurs in the output of \t{configure -{}-help}.
     \item -{}-host must be the value of the \t{CHOST} environment variable.
     \item -{}-libdir must be set according to Algorithm~\ref{alg:econf-libdir}.
     \item -{}-disable-dependency-tracking, if the EAPI is listed in
@@ -296,18 +299,20 @@ current phase function has returned.
     \ChangeWhenAddingAnEAPI{7}
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
-        \begin{tabular}{lllll}
+        \begin{tabular}{llllll}
           \toprule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
           \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
           \multicolumn{1}{c}{\textbf{-{}-docdir}} &
-          \multicolumn{1}{c}{\textbf{-{}-htmldir}} \\
+          \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
+          \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
           \midrule
-          0, 1, 2, 3        & No  & No  & No  & No  \\
-          4                 & Yes & No  & No  & No  \\
-          5                 & Yes & Yes & No  & No  \\
-          6, 7              & Yes & Yes & Yes & Yes \\
+          0, 1, 2, 3        & No  & No  & No  & No  & No  \\
+          4                 & Yes & No  & No  & No  & No  \\
+          5                 & Yes & Yes & No  & No  & No  \\
+          6                 & Yes & Yes & Yes & Yes & No  \\
+          7                 & Yes & Yes & Yes & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     9559fbd6b367b2868a15f5d9d0e8789f4b40960f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:17:43 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:23:29 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=9559fbd6

EAPI 7 removes PORTDIR and ECLASSDIR.

Bug: https://bugs.gentoo.org/373349
Bug: https://bugs.gentoo.org/373351

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 18 +++++++++++-------
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6e82904..3e06916 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{PORTDIR} & \compactfeatureref{portdir} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{ECLASSDIR} & \compactfeatureref{eclassdir} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -431,6 +437,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \item \t{DESTTREE} removed, \featureref{desttree}.
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
+\item \t{PORTDIR} removed, \featureref{portdir}.
+\item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0434083..f495014 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -110,11 +110,13 @@ variable.
 \t{PORTDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's base directory. \\
+    \featurelabel{portdir} The full path to the master repository's base directory.  Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{PORTDIR}. \\
 \t{ECLASSDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's eclass directory. \\
+    \featurelabel{eclassdir} The full path to the master repository's eclass directory.  Only for
+    EAPIs listed in table~\ref{tab:removed-env-vars-table} as supporting \t{ECLASSDIR}.\\
 \t{ROOT} &
    \t{pkg_*} &
    No &
@@ -284,17 +286,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
       \multicolumn{1}{c}{\textbf{\t{KV}?}} &
       \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
-      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
-      4, 5, 6           & No  & No  & Yes & Yes \\
-      7                 & No  & No  & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
+      7                 & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     ff3825ec964e096bc02ff5c53827cd3c2b615a6a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 17:50:56 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:22:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ff3825ec

EAPI 7 requires GNU patch 2.7.

Bug: https://bugs.gentoo.org/593786

 eapi-differences.tex    |  4 ++++
 ebuild-env-commands.tex | 15 +++++++++------
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 939c501..9f39934 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+GNU patch version & \compactfeatureref{gnu-patch} &
+    Any & Any & Any & Any & 2.7 \\
+
 Trailing slash in \t{ROOT}, \t{D}... & \compactfeatureref{trailing-slash} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -400,6 +403,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Output commands can no longer use stdout, \featureref{output-no-stdout}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
+\item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-commands.tex b/ebuild-env-commands.tex
index 590f709..f5e1c07 100644
--- a/ebuild-env-commands.tex
+++ b/ebuild-env-commands.tex
@@ -26,7 +26,8 @@ The following commands must always be available in the ebuild environment:
     page~\pageref{tab:bash-version}.
 \item \t{sed} must be available, and must support all forms of invocations valid for GNU sed
     version 4 or later.
-\item \t{patch} must be available, and must support all inputs valid for GNU patch.
+\item \featurelabel{gnu-patch} \t{patch} must be available, and must support all inputs valid
+	for GNU patch, version as listed in table~\ref{tab:system-commands-table}.
 \item \featurelabel{gnu-find} \t{find} and \t{xargs} must be available, and must support all forms
     of invocations valid for GNU findutils version 4.4 or later. Only for EAPIs listed in
     table~\ref{tab:system-commands-table} as requiring GNU find.
@@ -41,15 +42,17 @@ during filename expansion result in an error when the ebuild is being sourced.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{GNU \t{find}?}} &
-      \multicolumn{1}{c}{\textbf{\t{failglob} in global scope?}} \\
+      \multicolumn{1}{c}{\textbf{\t{failglob} in global scope?}} &
+      \multicolumn{1}{c}{\textbf{GNU patch version}} \\
       \midrule
-      0, 1, 2, 3, 4     & Undefined & No  \\
-      5                 & Yes       & No  \\
-      6, 7              & Yes       & Yes \\
+      0, 1, 2, 3, 4     & Undefined & No  & Any \\
+      5                 & Yes       & No  & Any \\
+      6                 & Yes       & Yes & Any \\
+      7                 & Yes       & Yes & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     89207aec09bf4c82c8dc1abbc4feb11792ed5400
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 17:44:06 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:25:38 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=89207aec

EAPI 7 has sandbox directory removal functions.

Bug: https://bugs.gentoo.org/630422

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 29 +++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 441de70..0055070 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{rm*} sandbox functions & \compactfeatureref{sandbox-rm} &
+    No & No & No & No & Yes \\
+
 \t{IUSE_RUNTIME} & \compactfeatureref{iuse-runtime} &
     No & No & No & No & Yes \\
 
@@ -475,6 +478,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
 \item binding leftmost-of (\t{||=}) dependency group is supported, \featureref{binding-leftmost-of}.
 \item runtime-modifiable USE flags (\t{IUSE_RUNTIME}) are supported, \featureref{iuse-runtime}.
+\item sandbox path removal flags (\t{rm*}) are supported, \featureref{sandbox-rm}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index eac9bc8..70f4d5b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -88,6 +88,35 @@ argument. Ebuilds must not run any of these commands once the current phase func
 \item[adddeny] Add a directory to the deny list.
 \end{description}
 
+\featurelabel{sandbox-rm} Additionally, in EAPIs listed in table~\ref{tab:sandbox-command-table}
+as supporting the respective commands, the following commands are available:
+\begin{description}
+\item[rmread] Remove a directory from the permitted read list.
+\item[rmwrite] Remove a directory from the permitted write list.
+\item[rmpredict] Remove a directory from the predict list.
+\item[rmdeny] Remove a directory from the deny list.
+\end{description}
+
+All of those commands match paths exactly. Removing a directory that is not present on the list
+is silently ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Additional sandbox commands by EAPI}
+    \label{tab:sandbox-command-table}
+    \begin{tabular}{lllll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{rmread}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmwrite}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmpredict}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmdeny}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+      7                   & Yes & Yes & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Package manager query commands}
 These commands are used to extract information about the system. Ebuilds must not run any of
 these commands in parallel with any other package manager command. Ebuilds must not run any of


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     3d1573f9f686993713c37f2e7e806ddfd4d57f0c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 17:35:57 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:25:38 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=3d1573f9

EAPI 7 supports runtime-modifiable USE flags.

Bug: https://bugs.gentoo.org/424283

 dependencies.tex     |  3 ++-
 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  |  5 ++++-
 ebuild-vars.tex      | 16 ++++++++++++----
 eclasses.tex         | 11 ++++++-----
 metadata-cache.tex   |  1 +
 pkg-mgr-commands.tex |  4 ++++
 7 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index d9592d9..acc447c 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -181,7 +181,8 @@ In a use-conditional group, if the associated use flag is enabled (or disabled i
 exclamation mark prefix), all of the child elements must be matched.
 
 It is an error for a flag to be used if it is not included in \t{IUSE_EFFECTIVE} as described in
-section~\ref{sec:use-iuse-handling}.
+section~\ref{sec:use-iuse-handling}. Flags listed in \t{IUSE_RUNTIME} can be used only
+in \t{RDEPEND}, \t{PDEPEND} and \t{REQUIRED_USE}.
 
 \subsection{Any-of dependency specifications}
 

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a89f5f8..441de70 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{IUSE_RUNTIME} & \compactfeatureref{iuse-runtime} &
+    No & No & No & No & Yes \\
+
 \t{||=} dependency group & \compactfeatureref{binding-leftmost-of} &
     No & No & No & No & Yes \\
 
@@ -471,6 +474,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
 \item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
 \item binding leftmost-of (\t{||=}) dependency group is supported, \featureref{binding-leftmost-of}.
+\item runtime-modifiable USE flags (\t{IUSE_RUNTIME}) are supported, \featureref{iuse-runtime}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index f495014..42bd3a2 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -355,10 +355,12 @@ table~\ref{tab:locale-settings}.
 \subsection{USE and IUSE handling}
 \label{sec:use-iuse-handling}
 
-This section discusses the handling of four variables:
+This section discusses the handling of five variables:
 
 \begin{description}
 \item[IUSE] is the variable calculated from the \t{IUSE} values defined in ebuilds and eclasses.
+\item[IUSE_RUNTIME] is the variable calculated from the \t{IUSE_RUNTIME} values defined in ebuilds
+    and eclasses.
 \item[IUSE_REFERENCEABLE] is a variable calculated from \t{IUSE} and a variety of other sources
     described below. It is purely a conceptual variable; it is not exported to the ebuild
     environment. Values in \t{IUSE_REFERENCEABLE} may legally be used in queries from other
@@ -392,6 +394,7 @@ as supporting profile defined \t{IUSE} injection, \t{IUSE_EFFECTIVE} contains th
 
 \begin{compactitem}
 \item All values in the calculated \t{IUSE} value.
+\item All values in the calculated \t{IUSE_RUNTIME} value, in EAPIs where this variable is defined.
 \item All values in the profile \t{IUSE_IMPLICIT} variable.
 \item All values in the profile variable named \t{USE_EXPAND_VALUES_\$\{v\}}, where \t{\$\{v\}}
     is any value in the intersection of the profile \t{USE_EXPAND_UNPREFIXED} and

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index e4efcae..17e40ed 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -67,6 +67,12 @@ Ebuilds may define any of the following variables:
     \t{IUSE} defaults, 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[IUSE_RUNTIME] \featurelabel{iuse-runtime} Additional \t{USE} flags used by the ebuild whose
+    values can be altered in place without rebuilding from source. The flags listed
+    in \t{IUSE_RUNTIME} must not alter the package built. They must not be referenced at build time,
+    except for informational purposes. A single flag can not be listed in both \t{IUSE_RUNTIME}
+    and \t{IUSE} simultaneously. Uses the same syntax as \t{IUSE}. Only in EAPIs listed
+    in table~\ref{tab:optional-vars-table} as supporting \t{IUSE_RUNTIME}.
 \item[REQUIRED_USE] \featurelabel{required-use} Zero or more assertions that must be met by the
     configuration of \t{USE} flags to be valid for this ebuild. See section~\ref{sec:required-use}
     for description and section~\ref{sec:dependencies} for full syntax. Only in EAPIs listed in
@@ -103,14 +109,16 @@ Ebuilds may define any of the following variables:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{PROPERTIES}?}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} \\
+      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{IUSE_RUNTIME}?}} \\
       \midrule
-      0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6, 7        & Yes        & Yes \\
+      0, 1, 2, 3        & Optionally & No  & No  \\
+      4, 5, 6           & Yes        & Yes & No  \\
+      7                 & Yes        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eclasses.tex b/eclasses.tex
index 44683b5..9c2b685 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,12 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND} and \t{PDEPEND} variables are
-handled specially when set by an eclass. They must be accumulated across eclasses, appending
-the value set by each eclass to the resulting value after the previous one is loaded. Then
-the eclass-defined value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this
-is done after the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+The \t{IUSE}, \t{IUSE_RUNTIME}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}
+and \t{PDEPEND} variables are handled specially when set by an eclass. They must be accumulated
+across eclasses, appending the value set by each eclass to the resulting value after the previous
+one is loaded. Then the eclass-defined value is appended to that defined by the ebuild. In the case
+of \t{RDEPEND}, this is done after the implicit \t{RDEPEND} rules in
+section~\ref{sec:rdepend-depend} are applied.
 
 \section{EXPORT_FUNCTIONS}
 

diff --git a/metadata-cache.tex b/metadata-cache.tex
index df4b8ed..3ec626e 100644
--- a/metadata-cache.tex
+++ b/metadata-cache.tex
@@ -37,6 +37,7 @@ order. Other lines may be present following these; their meanings are not define
     ebuild metadata; see table~\ref{tab:defined-phases-table}.
 \item Build-time dependencies for \t{CBUILD} host (\t{BDEPEND}).
     Blank in some EAPIs; see table~\ref{tab:depend-table}.
+\item Runtime-modifiable use flags that this package respects (\t{IUSE_RUNTIME})
 \item Blank lines to pad the file to 22 lines long
 \end{compactenum}
 

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index af4cd35..eac9bc8 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -808,6 +808,10 @@ Unless otherwise noted, if any of these functions is called with a flag value th
 in \t{IUSE_EFFECTIVE}, either behaviour is undefined or it is an error as decided by
 table~\ref{tab:use-list-strictness}.
 
+In EAPIs listed in table~\ref{tab:optional-vars-table} as supporting \t{IUSE_RUNTIME}, the flags
+listed in \t{IUSE_RUNTIME} can only be referenced in \t{pkg_*} phases. Passing any of those flags
+to one of the following functions during any other phase is an error.
+
 \begin{description}
 \item[use] Returns shell true (0) if the first argument (a \t{USE} flag name) is enabled, false
     otherwise.  If the flag name is prefixed with \t{!}, returns true if the flag is disabled, and


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     b7fd31520f643c02541c9409733803e512aff048
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:10:08 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:24:46 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=b7fd3152

EAPI 7 has automatic USE enforcing.

Bug: https://bugs.gentoo.org/609338

 dependencies.tex     | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 eapi-differences.tex |  4 ++++
 profiles.tex         |  1 +
 3 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 63d8c53..5773aef 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -384,16 +384,82 @@ It is an error for an ebuild to use a conditional use dependency when that ebuil
 flag in \t{IUSE_EFFECTIVE}.
 
 \subsection{USE state constraints}
+
 \label{sec:required-use}
 \t{REQUIRED_USE} contains a list of assertions that must be met by the configuration of \t{USE}
 flags to be valid for this ebuild. In order to be matched, a \t{USE} flag in a terminal element
 must be enabled (or disabled if it has an exclamation mark prefix).
 
 If the package manager encounters a package version where \t{REQUIRED_USE} assertions are not met,
-it must treat this package version as if it was masked. No phase functions must be called.
+it should attempt to automatically enforce the necessary flags as detailed
+in section~\ref{sec:enforce-required-use}. If this feature is not supported or it fails to resolve
+the problem, the package manager must treat this package version as if it was masked. No phase
+functions must be called in that case.
 
 It is an error for a flag to be used if it is not included in \t{IUSE_EFFECTIVE}.
 
+\subsubsection{Automatic enforcing of REQUIRED_USE}
+\label{sec:enforce-required-use}
+
+\featurelabel{auto-req-use} In EAPIs listed in table~\ref{tab:enforce-required-use-table} as
+supporting enforcing of \t{REQUIRED_USE}, the package manager can attempt to resolve unmet USE state
+constraints through automatically adjusting the effective USE flags for the package being built,
+according to the algorithm specified below. Any adjustments done this way must not affect
+the package version permanently. The package manager must reevaluate the flags using the original
+user configuration every time the package is being built.
+
+The package flags that are either masked or forced according to the section~\ref{sec:use-mask-force}
+are considered immutable. The enforcing process must not alter the values of immutable flags.
+If the \t{REQUIRED_USE} constraint can not be satisfied without altering immutable flags, automatic
+enforcing fails.
+
+In order to enforce \t{REQUIRED_USE}, the package manager should process every USE constraint,
+in order of listing, according to the following rules:
+
+\begin{compactitem}
+\item For an unmatched use flag, the package manager should negate the state of the specified flag
+    in order to make the constraint match.
+\item For an unmatched all-of group, the package manager should recursively enforce all
+    constraints inside the group, in order of listing.
+\item For an unmatched use-conditonal group, the package manager should recursively enforce all
+    constraints inside the group, in order of listing. The associated condition flag is not altered.
+\item For an unmatched any-of group, the package manager should recursively enforce the first item
+    inside the group that can be enforced without altering immutable flags, in order of listing.
+\item For an unmatched at-most-one-of group:
+    \begin{compactitem}
+    \item If two or more items match due to immutable flags, the package manager must report
+        failure.
+    \item If exactly one of the items match due to immutable flags, the package manager should
+        enforce all other items not to match, according to the rule specified below.
+    \item If none of the items match due to immutable flags, the package manager should enforce all
+        items not to match but the first item in order of listing that matches currently.
+    \end{compactitem}
+\item For an unmatched exactly-one-of group:
+    \begin{compactitem}
+    \item If none of the items match, the package manager should behave as for unmatched any-of
+        group.
+    \item If more than one item matches, the package manager should behave as for unmatched
+        at-most-one-of group.
+    \end{compactitem}
+\end{compactitem}
+
+In order to enforce a matched use flag item not to match, the package manager should negate
+the state of the flag. The method of enforcing any other item type not to match is undefined.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting automatic enforcing of \t{REQUIRED_USE}}
+    \label{tab:enforce-required-use-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports enforcing \t{REQUIRED_USE}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Restrict}
 \label{sec:restrict}
 

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a0d1f01..87ce708 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{REQUIRED_USE} autoenforced & \compactfeatureref{auto-req-use} &
+    No & No & No & No & Yes \\
+
 \t{die} in subshell & \compactfeatureref{subshell-die} &
     No & No & No & No & Yes \\
 
@@ -463,6 +466,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{nonfatal} defined both as a shell function and external command,
   \featureref{nonfatal-fallback}.
 \item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
+\item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/profiles.tex b/profiles.tex
index edc17af..46c7928 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -145,6 +145,7 @@ specification is limited to the forms defined by the directory's EAPI. In some E
 \t{package.use} can be a directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 \subsection{USE masking and forcing}
+\label{sec:use-mask-force}
 This section covers the eight files \t{use.mask}, \t{use.force}, \t{use.stable.mask},
 \t{use.stable.force}, \t{package.use.mask}, \t{package.use.force}, \t{package.use.stable.mask},
 and \t{package.use.\allowbreak stable.force}. They are described together because they interact in


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     227a70ddc365d293cbfae86b214205a77fb4373d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:24:10 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:24:24 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=227a70dd

EAPI 7 provides command fallback for nonfatal.

Bug: https://bugs.gentoo.org/622894

 eapi-differences.tex |  5 +++++
 pkg-mgr-commands.tex | 17 ++++++++++++-----
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 70eadb5..fb469f6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{nonfatal} function+command & \compactfeatureref{nonfatal-fallback} &
+    No & No & No & No & Yes \\
+
 \t{domo} install path & \compactfeatureref{domo-path} &
     \t{\$\{DESTTREE\}\slash share\slash locale} &
     \t{\$\{DESTTREE\}\slash share\slash locale} &
@@ -454,6 +457,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
+\item \t{nonfatal} defined both as a shell function and external command,
+  \featureref{nonfatal-fallback}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index f3849fc..c17c9cc 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -22,6 +22,11 @@ The following commands affect this behaviour:
     the build process due to a failure, instead a non-zero exit status shall be returned. Only in
     EAPIs listed in table~\ref{tab:commands-die-table} as supporting \t{nonfatal}.
 
+    \featurelabel{nonfatal-fallback} In EAPIs listed in table~\ref{tab:commands-die-table}
+    as having \t{nonfatal} defined as both function and external command, the package manager must
+    provide both implementations to account both for calling in ebuild scope directly, and via
+    \t{xargs}.
+
     Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when called with the \t{-n}
     option and in EAPIs supporting this option, see table~\ref{tab:nonfatal-die}.
 \end{description}
@@ -29,14 +34,16 @@ The following commands affect this behaviour:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Command failure behaviour}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
+      \multicolumn{1}{P{8em}}{\textbf{Command failure behaviour}} &
+      \multicolumn{1}{P{6em}}{\textbf{Supports \t{nonfatal}?}} &
+      \multicolumn{1}{P{12em}}{\textbf{\t{nonfatal} as both function and external command?}} \\
       \midrule
-      0, 1, 2, 3        & Non-zero exit & No  \\
-      4, 5, 6, 7        & Aborts        & Yes \\
+      0, 1, 2, 3        & Non-zero exit & No  & n/a \\
+      4, 5, 6           & Aborts        & Yes & No  \\
+      7                 & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     a9c943e81a3f097db2be947d6fdc4ee96a572b2e
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:33:22 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:24:39 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=a9c943e8

EAPI 7 allows die in subshell.

Bug: https://bugs.gentoo.org/465008

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 23 +++++++++++++++--------
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index fb469f6..a0d1f01 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{die} in subshell & \compactfeatureref{subshell-die} &
+    No & No & No & No & Yes \\
+
 \t{nonfatal} function+command & \compactfeatureref{nonfatal-fallback} &
     No & No & No & No & Yes \\
 
@@ -459,6 +462,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item \t{nonfatal} defined both as a shell function and external command,
   \featureref{nonfatal-fallback}.
+\item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c17c9cc..af4cd35 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -181,23 +181,30 @@ completing. Ebuilds must not run any of these commands once the current phase fu
 \item[die] \featurelabel{nonfatal-die} If called under the \t{nonfatal} command (as per
     section~\ref{sec:failure-behaviour}) and with \t{-n} as its first parameter, displays a failure
     message provided in its following argument and then returns a non-zero exit status. Only in
-    EAPIs listed in table~\ref{tab:nonfatal-die} as supporting option~\t{-n}. Otherwise, displays
+    EAPIs listed in table~\ref{tab:die-properties} as supporting option~\t{-n}. Otherwise, displays
     a failure message provided in its first and only argument, and then aborts the build process.
-    \t{die} is \e{not} guaranteed to work correctly if called from a subshell environment.
+
+    \featurelabel{subshell-die} In EAPIs listed in table~\ref{tab:die-properties} as not providing
+    subshell support, \t{die} is \e{not} guaranteed to work correctly if called from a subshell
+    environment.
 \item[assert] Checks the value of the shell's pipe status variable, and if any component is non-zero
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} commands}
-    \label{tab:nonfatal-die}
-    \begin{tabular}{ll}
+\begin{centertable}{EAPI-specific properties of \t{die} and \t{assert} commands}
+    \label{tab:die-properties}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
+      \multicolumn{2}{c}{\textbf{\t{die} and \t{assert}}} \\
+      &
+      \multicolumn{1}{c}{\textbf{support \t{-n}?}} &
+      \multicolumn{1}{c}{\textbf{work in subshell?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5  & No  \\
-      6, 7              & Yes \\
+      0, 1, 2, 3, 4, 5  & No  & No  \\
+      6                 & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     e2757cd280f2904e3112f43464c0fc483634f0ec
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:02:49 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:24:18 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e2757cd2

EAPI 7 bans dolib and libopts.

Bug: https://bugs.gentoo.org/630416

 eapi-differences.tex |  7 +++++++
 pkg-mgr-commands.tex | 22 ++++++++++++++--------
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d9b5558..70eadb5 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -224,6 +224,12 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
+\t{dolib} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
+\t{libopts} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 PM query options & \compactfeatureref{pm-query-options} &
     No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -447,6 +453,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
+\item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ae9a615..f3849fc 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -50,20 +50,22 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{4}{c}{\textbf{Command banned?}} \\
+      \multicolumn{6}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
       \multicolumn{1}{c}{\textbf{\t{dosed}}} &
       \multicolumn{1}{c}{\textbf{\t{einstall}}} &
-      \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
+      \multicolumn{1}{c}{\textbf{\t{dohtml}}} &
+      \multicolumn{1}{c}{\textbf{\t{dolib}}} &
+      \multicolumn{1}{c}{\textbf{\t{libopts}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4, 5              & Yes & Yes & No  & No  \\
-      6                 & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  & No  & No  & No  \\
+      6                 & Yes & Yes & Yes & No  & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -503,7 +505,9 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 \item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
 \item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
-    the \t{install} options set by the most recent \t{libopts} call.
+    the \t{install} options set by the most recent \t{libopts} call. In EAPIs listed
+    in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}
@@ -714,6 +718,8 @@ has returned.
 \item[exeopts] Sets the options passed by \t{doexe} et al.\ to the \t{install} command.
 
 \item[libopts] Sets the options passed by \t{dolib} et al.\ to the \t{install} command.
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as
+    per section~\ref{sec:banned-commands}.
 
 \end{description}
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-04 20:25 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-10-04 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     7f8bb327a19ae6b510cee1df7613f2570ade01e0
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:42:13 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Oct  4 20:25:38 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=7f8bb327

EAPI 7 has binding leftmost-of dep groups (||=).

Bug: https://bugs.gentoo.org/489458

 dependencies.tex     | 45 ++++++++++++++++++++++++++++++++++++++-------
 eapi-differences.tex |  4 ++++
 2 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 5773aef..d9592d9 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -98,6 +98,12 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     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)* ')'}.
     Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
+\item \featurelabel{binding-leftmost-of} A binding leftmost-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{any-of} \t{::=} \t{'||=' whitespace '(' whitespace (item
+    whitespace)* ')'}.  Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND} in EAPIs
+    listed in table~\ref{tab:dep-group-table} as supporting \t{||=}\ groups.
 \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
@@ -109,7 +115,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     zero 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
-    table~\ref{tab:at-most-one-of-table} as supporting \t{REQUIRED_USE ??}\ groups.
+    table~\ref{tab:dep-group-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
@@ -150,15 +156,17 @@ In particular, note that whitespace is not optional.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
-    \label{tab:at-most-one-of-table}
-    \begin{tabular}{ll}
+\begin{centertable}{EAPIs supporting additional group types}
+    \label{tab:dep-group-table}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
+      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{||=}\ groups?}} \\
       \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6, 7           & Yes \\
+      0, 1, 2, 3, 4     & No  & No  \\
+      5, 6              & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -186,6 +194,29 @@ considered to be matched if its associated package dependency specification is n
 
 An empty any-of group counts as being matched.
 
+\subsection{Binding leftmost-of dependency specifications}
+
+Any use-conditional group that is an immediate child of a binding leftmost-of group, if not enabled
+(disabled for an exclamation mark prefixed use flag name), is not considered a member of the binding
+leftmost-of group for match purposes.
+
+In a binding leftmost-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.
+In addition, for runtime dependencies, indicates that the package will break unless the dependency
+corresponding to the first immediate child (in order of listing) matched in \t{ESYSROOT} at the time
+the package was built is satisfied.
+
+An empty binding leftmost-of group counts as being matched.
+
+To implement the binding leftmost-of operator, the package manager will need to store which of
+the immediate child elements were matched. This syntax is only for package manager use and must not
+be used by ebuilds. Only the first matched child element needs to be indicated.
+
+Whenever the binding leftmost-of group is used in an enabled dependency group, the dependencies
+(\t{DEPEND}) must ensure that at least one of the immediate child elements is also matched at build
+time. It is invalid to use the binding leftmost-of group inside PDEPEND or inside any-of dependency
+specifications.
+
 \subsection{Exactly-one-of dependency specifications}
 
 Any use-conditional group that is an immediate child of an exactly-one-of group, if not enabled

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 87ce708..a89f5f8 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{||=} dependency group & \compactfeatureref{binding-leftmost-of} &
+    No & No & No & No & Yes \\
+
 \t{REQUIRED_USE} autoenforced & \compactfeatureref{auto-req-use} &
     No & No & No & No & Yes \\
 
@@ -467,6 +470,7 @@ EAPI 7 is EAPI 6 with the following changes:
   \featureref{nonfatal-fallback}.
 \item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
 \item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
+\item binding leftmost-of (\t{||=}) dependency group is supported, \featureref{binding-leftmost-of}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     aba5a1ae1687bb6b6ec277581242d30c56038949
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 29 23:00:32 2015 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:06:22 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=aba5a1ae

EAPI 7 supports a directory for package.mask.

Bug: https://bugs.gentoo.org/282296

 eapi-differences.tex |  4 ++++
 tree-layout.tex      | 20 ++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 4c3ee67..0b41d71 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.mask} directory & \compactfeatureref{package-mask-dir} &
+    No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
     No & No & Yes & Yes & Yes \\
 
@@ -373,6 +376,7 @@ EAPI 6 is EAPI 5 with the following changes:
 EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
+\item \t{profiles/package.mask} can be a directory, \featureref{package-mask-dir}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/tree-layout.tex b/tree-layout.tex
index 1c23357..d09feef 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -107,6 +107,12 @@ manager must ignore any files in this directory that it does not recognise.
     Contains a list, one entry per line, of package dependency specifications (using the directory's
     EAPI). Any package version matching one of these is considered to be masked, and will not be
     installed regardless of profile unless it is unmasked by the user configuration.
+
+    \featurelabel{package-mask-dir} For EAPIs listed in table~\ref{tab:package-mask-dir} as
+    supporting it, \t{package.mask} can be a directory instead of a regular file. Files contained
+    in that directory, unless their name begins with a dot, will be concatenated in order of their
+    filename in the POSIX locale and the result will be processed as if it were a single file.
+    Any subdirectories will be ignored.
 \item[profiles.desc] Described below in section~\ref{sec:profiles.desc}.
 \item[repo_name] Contains, on a single line, the name of this repository. The repository name must
     conform to section~\ref{sec:repository-names}.
@@ -123,6 +129,20 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
+    \label{tab:package-mask-dir}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{The profiles.desc file}
 \label{sec:profiles.desc}
 \t{profiles.desc} is a line-based file, with the standard commenting


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     ef92bc885bcd57c6c129aeb65242d5f295d5f7bf
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 27 21:23:22 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:10:01 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ef92bc88

EAPI 7 has version manipulation and comparison functions

Bug: https://bugs.gentoo.org/482170

 eapi-differences.tex |  4 +++
 pkg-mgr-commands.tex | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 84 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index c68fffa..9f3f8be 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{ver_*} functions & \compactfeatureref{ver-functions} &
+    No & No & No & No & Yes \\
+
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
     No & No & No & No & Yes \\
 
@@ -383,6 +386,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{package.mask}, \t{package.use}, \t{use.*} and \t{package.use.*} in a profile can be
     directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
+\item Version manipulation and comparison functions added, \featureref{ver-functions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 495a4ce..5b65477 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -817,6 +817,86 @@ These functions check whitespace-separated lists for a particular value.
 \item[hasq] Deprecated synonym for \t{has}.
 \end{description}
 
+\subsection{Version manipulation and comparison commands}
+\featurelabel{ver-functions}
+Those functions provide routines to work with version strings. Their availability per EAPI is listed
+in table~\ref{tab:version-functions}.
+
+For the purpose of version manipulation functions, the specification provides a method for splitting
+an arbitrary version string (not necessarily conforming to \ref{sec:version-spec}) into a series of
+version components and version separators.
+
+A version component consists either purely of digits (\t{[0-9]+}) or purely of a combination of
+uppercase and lowercase letters (\t{[a-zA-Z]+}). A version separator is either a string of any other
+characters (\t{[\textasciicircum 0-9a-zA-Z]}) or it occurs at the transition between a sequence
+of digits and a sequence of letters, or vice versa. In the latter case, the version separator is
+an empty string.
+
+The version string is processed left-to-right, with the successive version components being assigned
+successive indices starting with 1. The separator following a version component is assigned
+the index of the preceding version component. If the first version component is preceded by
+a non-null string of version separator characters, this separator is assigned the index 0.
+
+The version components are presumed present if not empty. The version separators between version
+components are always presumed present, even if they are empty. The version separators preceding
+the first version component and following the last are only presumed present if they are not empty.
+
+Whenever the functions support ranges, the range is specified as a non-negative integer, optionally
+followed by a hyphen (\t{-}), which in turn is optionally followed by another non-negative integer.
+
+A single integer specifies a single component or separator index. An integer followed by a hyphen
+specifies all components or separators starting with the one at specified index. Two integers
+separated by a hyphen specify a range of versions starting at the index specified by the first
+and ending at the second, inclusively.
+
+\begin{description}
+\item[ver_cut] Takes a range as the first argument, and optionally a version string as the second.
+    Prints a substring of the version string starting at the version component specified as start
+    of the range and ending at the version component specified as end of the range. If the version
+    string is not specified, \t{\$\{PVR\}} is used.
+
+    If the range spans outside the present version components, the missing components and separators
+    are presumed empty. In particular, the range starting at zero includes zeroth version separator
+    if present, and the range spanning past the last version component includes the suffix following
+    it if present. A range that does not intersect with any present version components yields empty
+    string.
+
+\item[ver_rs] Takes one or more pairs of arguments, optionally followed by a version string. Every
+    argument pair specifies a range and a replacement string. Prints a version string after
+    performing the specified separator substitutions. If the version string is not specified,
+    \t{\$\{PVR\}} is used.
+
+    For every argument pair specified, each of the version separators present at indices specified
+    by the range is replaced with the replacement string, in order. If the range spans outside
+    the range of present version separators, it is silently truncated.
+
+\item[ver_test] Takes two or three arguments. In the 3-argument form, it takes a LHS version string,
+    followed by an operator, followed by RHS version string. In the 2-argument form, the first
+    version string is omitted and \t{\$\{PVR\}} is used as LHS version string. Returns 0
+    if the specified relation between LHS and RHS version strings is true.
+
+    The operator can be \t{-lt}, \t{-le}, \t{-eq}, \t{-ne}, \t{-ge} and \t{-gt} to test whether
+    LHS is respectively older than, older or equal, equal, not equal, newer or equal, and newer
+    than RHS. Both version strings must conform to the version specification
+    at~\ref{sec:version-spec}, the comparison is done using algorithm~\ref{alg:version-comparison}.
+\end{description}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting version manipulation commands}
+    \label{tab:version-functions}
+    \begin{tabular}{llll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
+      7                   & Yes & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Misc commands}
 The following commands are always available in the ebuild environment, but don't really fit in any
 of the above categories. Ebuilds must not run any of these commands once the current phase function


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     ab1881ea0543dde98f3c6a63398463a505308551
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 29 23:01:54 2015 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:06:22 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ab1881ea

EAPI 7 supports directories for profile files.

Bug: https://bugs.gentoo.org/282296

 eapi-differences.tex |  5 +++++
 profiles.tex         | 38 +++++++++++++++++++++++++++++++-------
 2 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0b41d71..c68fffa 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -44,6 +44,9 @@ of this document for a complete table of previous EAPIs.
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
     No & No & No & No & Yes \\
 
+Profile files as directories & \compactfeatureref{profile-file-dirs} &
+    No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
     No & No & Yes & Yes & Yes \\
 
@@ -377,6 +380,8 @@ EAPI 7 is EAPI 6 with the following changes:
 
 \begin{compactitem}
 \item \t{profiles/package.mask} can be a directory, \featureref{package-mask-dir}.
+\item \t{package.mask}, \t{package.use}, \t{use.*} and \t{package.use.*} in a profile can be
+    directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 

diff --git a/profiles.tex b/profiles.tex
index 0d7164e..99e84ea 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -69,6 +69,27 @@ parent profile's list is taken, and the current profile's list appended. If any
 hyphen, then any lines previous to it whose contents are equal to the remainder of that line are
 removed from the list. Once again, blank lines and those beginning with a \# are discarded.
 
+\featurelabel{profile-file-dirs} In EAPIs listed in table~\ref{tab:profile-file-dirs} as supporting
+directories for profile files, any of the files \t{package.mask}, \t{package.use}, \t{use.*} and
+\t{package.use.*} mentioned below can be a directory instead of a regular file. Files contained
+in that directory, unless their name begins with a dot, will be concatenated in order of their
+filename in the POSIX locale and the result will be processed as if it were a single file.
+Any subdirectories will be ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting directories for profile files}
+    \label{tab:profile-file-dirs}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{packages}
 The \t{packages} file is used to define the `system set' for this profile.
 After the above rules for inheritance and comments are applied, its lines must take one of two
@@ -84,7 +105,8 @@ but is mentioned here for completeness.
 \subsection{package.mask}
 \t{package.mask} is used to prevent packages from being installed on a given profile. Each line
 contains one package dependency specification; anything matching this specification will not be
-installed unless unmasked by the user's configuration.
+installed unless unmasked by the user's configuration. In some EAPIs, \t{package.mask} can be a
+directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 Note that the \t{-spec} syntax can be used to remove a mask in a parent profile, but not
 necessarily a global mask (from \t{profiles/package.mask}, section~\ref{profiles-package.mask}).
@@ -99,17 +121,19 @@ has severe adverse effects on USE-based and slot-based dependencies, its use is
 and package manager support must be regarded as purely optional.
 
 \subsection{package.use}
-The \t{package.use} file may be used by the package manager to override the default USE flags specified
-by \t{make.defaults} on a per package basis.  The format is to have a package dependency specification,
-and then a space delimited list of USE flags to enable.  A USE flag in the form of \t{-flag} indicates
-that the package should have the USE flag disabled.  The package dependency specification is limited to
-the forms defined by the directory's EAPI.
+The \t{package.use} file may be used by the package manager to override the default USE flags
+specified by \t{make.defaults} on a per package basis. The format is to have a package dependency
+specification, and then a space delimited list of USE flags to enable. A USE flag in the form of
+\t{-flag} indicates that the package should have the USE flag disabled. The package dependency
+specification is limited to the forms defined by the directory's EAPI. In some EAPIs,
+\t{package.use} can be a directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 \subsection{USE masking and forcing}
 This section covers the eight files \t{use.mask}, \t{use.force}, \t{use.stable.mask},
 \t{use.stable.force}, \t{package.use.mask}, \t{package.use.force}, \t{package.use.stable.mask},
 and \t{package.use.\allowbreak stable.force}. They are described together because they interact in
-a non-trivial manner.
+a non-trivial manner. In some EAPIs, these files can be directories instead of regular files as per
+section~\ref{sec:line-stacking}.
 
 Simply speaking, \t{use.mask} and \t{use.force} are used to say that a given USE flag must never or
 always, respectively, be enabled when using this profile. \t{package.use.mask} and


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     48e3b8835ff3932aad95871276eb3fbe24d45847
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 14:05:38 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:12:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=48e3b883

EAPI 7 has eqawarn

Bug: https://bugs.gentoo.org/482884

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 18 ++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9f3f8be..8a1e55a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{eqawarn} & \compactfeatureref{eqawarn} &
+    No & No & No & No & Yes \\
+
 \t{ver_*} functions & \compactfeatureref{ver-functions} &
     No & No & No & No & Yes \\
 
@@ -387,6 +390,7 @@ EAPI 7 is EAPI 6 with the following changes:
     directories, \featureref{profile-file-dirs}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item Version manipulation and comparison functions added, \featureref{ver-functions}.
+\item \t{eqawarn} added, \featureref{eqawarn}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 5b65477..91f38c0 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -124,6 +124,10 @@ stderr or some other appropriate facility.
     example.
 \item[ewarn] Displays a warning message. Must not go to stdout.
 \item[eerror] Displays an error message. Must not go to stdout.
+\item[eqawarn] \featurelabel{eqawarn} Display a QA warning message intended for ebuild developers.
+    The package manager may provide appropriate mechanisms to skip those messages for normal users.
+    Must not go to stdout. Only available in EAPIs listed in table~\ref{tab:output-commands} as
+    supporting \t{eqawarn}.
 \item[ebegin] Displays an informational message. Should be used when beginning a possibly
     lengthy process, and followed by a call to \t{eend}.
 \item[eend] Indicates that the process begun with an \t{ebegin} message has completed. Takes one
@@ -132,6 +136,20 @@ stderr or some other appropriate facility.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Output commands for EAPIs}
+    \label{tab:output-commands}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6  & No  \\
+      7                    & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Error commands}
 These commands are used when an error is detected that will prevent the build process from
 completing. Ebuilds must not run any of these commands once the current phase function has returned.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     179b5fc79659f5886b0e4d38cc38d560cdc1cf09
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 23:46:32 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:16:34 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=179b5fc7

dependencies: Provide a nice summary table for dep APIs

 dependencies.tex | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 0d8933b..6a92542 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -26,6 +26,21 @@
     \end{tabular}
 \end{centertable}
 
+\begin{centertable}{Summary of other interfaces related to dependency classes}
+    \label{tab:dependency-class-apis}
+    \begin{tabular}{lccc}
+      \toprule
+      & \t{BDEPEND} & \t{DEPEND} & \t{RDEPEND}, \t{PDEPEND} \\
+      \midrule
+      binary compatible with & \t{CBUILD} & \t{CHOST} & \t{CHOST} \\
+      base unprefixed path & \t{/} & \t{\$\{SYSROOT\}} & \t{\$\{ROOT\}} \\
+      relevant offset-prefix & \t{\$\{BROOT\}} & \t{\$\{EPREFIX\}} & \t{\$\{EPREFIX\}} \\
+      path combined with prefix & \t{\$\{BROOT\}} & \t{\$\{ESYSROOT\}} & \t{\$\{EROOT\}} \\
+      PM query option & \t{-b} & \t{-d} & \t{-r} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 There are three classes of dependencies supported by ebuilds:
 
 \begin{compactitem}
@@ -51,7 +66,8 @@ as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
 \end{compactitem}
 
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
-a particular phase function is executed.
+a particular phase function is executed. Table~\ref{tab:dependency-class-api} summarizes
+additional interfaces related to the dependency classes.
 
 In addition, \t{SRC_URI}, \t{HOMEPAGE}, \t{RESTRICT}, \t{PROPERTIES}, \t{LICENSE} and
 \t{REQUIRED_USE} use dependency-style specifications to specify their values.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     7a4c0f0bc4768c0522f4751bc9d6fa914ed51d77
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:41:52 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:20:10 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=7a4c0f0b

domo installs to /usr in EAPI 7.

Bug: https://bugs.gentoo.org/595924

 eapi-differences.tex |  8 ++++++++
 pkg-mgr-commands.tex | 25 ++++++++++++++++++++-----
 2 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 24da92c..3166208 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,13 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{domo} install path & \compactfeatureref{domo-path} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{\$\{DESTTREE\}\slash share\slash locale} &
+    \t{/usr\slash share\slash locale} \\
+
 \t{PORTDIR} & \compactfeatureref{portdir} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -439,6 +446,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
+\item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index d86b88b..1fa2053 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -542,11 +542,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     the empty string. In EAPIs specified by table~\ref{tab:doman-table}, the \t{-i18n} option takes
     precedence over the language code in the filename.
 
-\item[domo] Installs the given \t{.mo} files with file mode \t{0644} into the appropriate
-    subdirectory of \t{DESTTREE\slash share\slash locale}, generated by taking the basename of the
-    file, removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed
-    files is the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
-    section~\ref{sec:failure-behaviour}.
+\item[domo] \featurelabel{domo-path} Installs the given \t{.mo} files with file mode \t{0644} into
+    the appropriate subdirectory of the locale tree, generated by taking the basename of the file,
+    removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed files is
+    the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
+    section~\ref{sec:failure-behaviour}. The locale tree location is EAPI dependent as per
+    table~\ref{tab:domo-path}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
@@ -666,6 +667,20 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPI-dependent install path for \t{domo} command}
+    \label{tab:domo-path}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{destination path}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
+      7                   & \t{/usr/share/locale} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees, all relative to \t{\$\{ED\}} in
 offset-prefix aware EAPIs and relative to \t{\$\{D\}} in offset-prefix agnostic EAPIs, used by the


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     4201dcb2332281ed8d1bd24a042b6c5bd1aeb794
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 16:20:11 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:12:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=4201dcb2

EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED.

Bug: https://bugs.gentoo.org/465772

 eapi-differences.tex |  5 +++++
 ebuild-env-vars.tex  | 58 ++++++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0c47d9b..49e6be9 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+Trailing slash in \t{ROOT}, \t{D}... & \compactfeatureref{trailing-slash} &
+    Yes & Yes & Yes & Yes & No \\
+
 Output cmds can use stdout & \compactfeatureref{output-no-stdout} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -395,6 +398,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Version manipulation and comparison functions added, \featureref{ver-functions}.
 \item \t{eqawarn} added, \featureref{eqawarn}.
 \item Output commands can no longer use stdout, \featureref{output-no-stdout}.
+\item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
+    \featureref{trailing-slash}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 1851aba..fe61ac5 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -121,14 +121,15 @@ variable.
    The absolute path to the root directory into which the package is to be merged.  Phases which run
    with full filesystem access must not touch any files outside of the directory given in
    \t{ROOT}\@. Also of note is that in a cross-compiling environment, binaries inside of \t{ROOT}
-   will not be executable on the build machine, so ebuilds must not call them. \t{ROOT} must be
-   non-empty and end in a trailing slash. \\
+   will not be executable on the build machine, so ebuilds must not call them. The presence of
+   a trailing slash is EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{EROOT} &
     \t{pkg_*} &
     No &
-    Contains the path \t{\$\{ROOT\%/\}\$\{EPREFIX\}/} for convenience. See also the
-    \t{EPREFIX} variable. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as
-    supporting \t{EROOT}. \\
+    Contains the concatenation of the paths in \t{ROOT} and \t{EPREFIX} variables, for convenience.
+    See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}. The presence of a trailing
+    slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -159,18 +160,21 @@ variable.
     \t{src_install} &
     No &
     Contains the full path to the image directory into which the package should be installed.
-    Must be non-empty and end in a trailing slash. \\
+    The presence of a trailing slash is EAPI-dependent as listed in table~\ref{tab:trailing-slash}.
+    \\
 \t{D} (continued) &
     \t{pkg_preinst}, \t{pkg_postinst} &
     Yes &
-    Contains the full path to the image that is about to be or has just been merged. Must be
-    non-empty and end in a trailing slash. \\
+    Contains the full path to the image that is about to be or has just been merged.
+    The presence of a trailing slash is EAPI-dependent as listed in table~\ref{tab:trailing-slash}.
+    \\
 \t{ED} &
     \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst} &
     See \t{D} &
-    Contains the path \t{\$\{D\%/\}\$\{EPREFIX\}/} for convenience. See also the
-    \t{EPREFIX} variable. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as
-    supporting \t{ED}. \\
+    Contains the concatenation of the paths in \t{D} and \t{EPREFIX} variables, for convenience.
+    See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{ED}. The presence of a trailing
+    slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{DESTTREE} &
     \t{src_install} &
     No &
@@ -420,6 +424,38 @@ behaviour of offset-prefix aware and agnostic is the same when \t{EPREFIX} is se
 string in offset-prefix aware EAPIs. The latter do have the variables \t{ED} and \t{EROOT} properly
 set, though.
 
+\subsection{Path variables and trailing slash}
+\label{sec:trailing-slash}
+
+Unless specified otherwise, the paths provided through package manager variables do not end with
+a trailing slash and can not be empty. A few exceptions to that rule are listed
+in table~\ref{tab:trailing-slash} along with applicable EAPIs.
+
+For EAPIs where those variables are defined to always end with a trailing slash, the package manager
+guarantees that a trailing slash will always be appended to the path in question. If the path
+specifies the system root directory, it will consist of a single slash (\t{/}).
+
+\featurelabel{trailing-slash} For EAPIs where those variables are defined to never end with
+a trailing slash, the package manager guarantees that a trailing slash will never be present.
+If the path specifies the system root directory, it will be empty.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Variables that always or never end with a trailing slash}
+    \label{tab:trailing-slash}
+    \begin{tabular}{lll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{2}{c}{\textbf{Ends with a trailing slash?}} \\
+      &
+      \t{ROOT}, \t{EROOT} &
+      \t{D}, \t{ED} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & always & always \\
+      7                   & never  & never  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
 %%% Local Variables:


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     23f44cea243484e41000dc48ef4d69c20bbe870a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:13:57 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:16:34 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=23f44cea

EAPI 7 removes DESTTREE and INSDESTTREE.

Bug: https://bugs.gentoo.org/173630

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 18 ++++++++++++------
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 1bb0989..968dba1 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{DESTTREE} & \compactfeatureref{desttree} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{INSDESTTREE} & \compactfeatureref{insdesttree} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{package.provided} & \compactfeatureref{package-provided} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -423,6 +429,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
+\item \t{DESTTREE} removed, \featureref{desttree}.
+\item \t{INSDESTTREE} removed, \featureref{insdesttree}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e91f36e..0434083 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -199,11 +199,14 @@ variable.
 \t{DESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{dobin}, \t{dolib}, \t{domo}, and \t{dosbin} install things. \\
+    \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, \t{domo},
+    and \t{dosbin} install things.  Only for EAPIs listed in table~\ref{tab:removed-env-vars-table}
+    as supporting \t{DESTTREE}. \\
 \t{INSDESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{doins} installs things. \\
+    \featurelabel{insdesttree} Controls the location where \t{doins} installs things. Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{INSDESTTREE}. \\
 \t{USE} &
     All &
     Yes &
@@ -281,14 +284,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
-      \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{KV}?}} &
+      \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes \\
-      4, 5, 6, 7        & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes \\
+      7                 & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     e6205491820270d9747803e6c9789b4645ba95f9
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:19:16 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:16:34 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e6205491

EAPI 7 has BDEPEND

Bug: https://bugs.gentoo.org/317337

 dependencies.tex     | 36 ++++++++++++++++++++++++++++++++----
 eapi-differences.tex |  4 ++++
 ebuild-vars.tex      |  1 +
 eclasses.tex         | 10 +++++-----
 metadata-cache.tex   |  2 ++
 5 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index f812686..0d8933b 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -15,7 +15,7 @@
           None (ebuilds can rely only on the packages in the system~set) \\
       \addlinespace
       \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, \t{src_test},
-          \t{src_install} & \t{DEPEND} \\
+          \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
       \addlinespace
       \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
           \t{RDEPEND} (unless the particular dependency results in a circular dependency, in which
@@ -38,6 +38,18 @@ There are three classes of dependencies supported by ebuilds:
     the package manager finishes the batch of installs.
 \end{compactitem}
 
+\featurelabel{bdepend} Additionally, in EAPIs listed in table~\ref{tab:depend-table}
+as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
+
+\begin{compactitem}
+\item Build dependencies that are binary compatible with the native build system
+    / CBUILD (\t{BDEPEND}). The ebuild is allowed to call binary executables
+    installed by this kind of dependency.
+\item Build dependencies that are binary compatible with the system being built
+    / CHOST (\t{DEPEND}). The ebuild must not execute binary executables installed
+    by this kind of dependency.
+\end{compactitem}
+
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
 a particular phase function is executed.
 
@@ -50,7 +62,8 @@ The following elements are recognised in at least one class of specification. Al
 be surrounded on both sides by whitespace, except at the start and end of the string.
 
 \begin{compactitem}
-\item A package dependency specification. Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}.
+\item A package dependency specification. Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND},
+    \t{PDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC_URI} and \t{HOMEPAGE}\@.
     In EAPIs listed in table~\ref{tab:uri-arrows-table} as supporting \t{SRC_URI} arrows, may
     optionally be followed by whitespace, then \t{->}, then whitespace, then a simple filename when
@@ -68,7 +81,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     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)+ ')'}.
-    Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
+    Permitted in \t{DEPEND}, \t{BDEPEND}, \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
     one or more of (a dependency item of any kind followed by whitespace), followed by a close
@@ -93,6 +106,20 @@ be surrounded on both sides by whitespace, except at the start and end of the st
 In particular, note that whitespace is not optional.
 
 \ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting additional dependency types}
+    \label{tab:depend-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
+\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
     \label{tab:uri-arrows-table}
     \begin{tabular}{ll}
@@ -285,7 +312,8 @@ indicates that the package will not break if the matched package is uninstalled
 a different matching package in a different slot.
 \item[=] Indicates that any slot value is acceptable. In addition, for runtime dependencies,
 indicates that the package will break unless a matching package with slot and sub-slot equal to the
-slot and sub-slot of the best installed version at the time the package was built is available.
+slot and sub-slot of the best version installed to \t{ESYSROOT} at the time the package was built
+is available.
 \item[slot=] Indicates that only a specific slot value is acceptable, and otherwise behaves
 identically to the plain equals slot operator.
 \end{description}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 3932f15..1ee1bfe 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{BDEPEND} & \compactfeatureref{bdepend} &
+    No & No & No & No & Yes \\
+
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
     No & No & No & No & Yes \\
 
@@ -409,6 +412,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
+\item \t{BDEPEND}, \featureref{bdepend}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 32f853c..e4efcae 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -83,6 +83,7 @@ Ebuilds may define any of the following variables:
     for its value if unset and when used with an eclass. See section~\ref{sec:rdepend-depend} for
     details.
 \item[PDEPEND] See section~\ref{sec:dependencies}.
+\item[BDEPEND] See section~\ref{sec:dependencies}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/eclasses.tex b/eclasses.tex
index 49c6c4e..44683b5 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,11 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{RDEPEND} and \t{PDEPEND} variables are handled
-specially when set by an eclass. They must be accumulated across eclasses, appending the value set
-by each eclass to the resulting value after the previous one is loaded. Then the eclass-defined
-value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is done after the
-implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND} and \t{PDEPEND} variables are
+handled specially when set by an eclass. They must be accumulated across eclasses, appending
+the value set by each eclass to the resulting value after the previous one is loaded. Then
+the eclass-defined value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this
+is done after the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
 
 \section{EXPORT_FUNCTIONS}
 

diff --git a/metadata-cache.tex b/metadata-cache.tex
index 80018e4..df4b8ed 100644
--- a/metadata-cache.tex
+++ b/metadata-cache.tex
@@ -35,6 +35,8 @@ order. Other lines may be present following these; their meanings are not define
     metadata; see table~\ref{tab:optional-vars-table}.
 \item Defined phases (\t{DEFINED_PHASES}). In some EAPIs, may optionally be blank, regardless of
     ebuild metadata; see table~\ref{tab:defined-phases-table}.
+\item Build-time dependencies for \t{CBUILD} host (\t{BDEPEND}).
+    Blank in some EAPIs; see table~\ref{tab:depend-table}.
 \item Blank lines to pad the file to 22 lines long
 \end{compactenum}
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     395ea17897c271621edfa5f71b99d57182adc9aa
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:39:27 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:16:34 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=395ea178

EAPI 7 has BROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 33 +++++++++++++++++++++------------
 2 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 1ee1bfe..d6eab8d 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{BROOT} & \compactfeatureref{broot} &
+    No & No & No & No & Yes \\
+
 \t{BDEPEND} & \compactfeatureref{bdepend} &
     No & No & No & No & Yes \\
 
@@ -413,6 +416,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
+\item \t{BROOT}, \featureref{broot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e24a065..e91f36e 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -144,6 +144,13 @@ variable.
     for convenience.  See also the \t{EPREFIX} variable. Only for EAPIs listed
     in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. The presence of a trailing
     slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{BROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{broot} The absolute path to the root directory containing build dependencies
+    satisfied by BDEPEND, typically executable build tools. This includes any applicable offset
+    prefix. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as supporting \t{BROOT}.
+    The presence of a trailing slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -253,19 +260,20 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{llllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} \\
+      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} &
+      \multicolumn{1}{P{6em}}{\textbf{\t{BROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  & No  \\
-      5, 6              & Yes & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -288,7 +296,7 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{llllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
@@ -460,17 +468,18 @@ If the path specifies the system root directory, it will be empty.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{3}{c}{\textbf{Ends with a trailing slash?}} \\
+      \multicolumn{4}{c}{\textbf{Ends with a trailing slash?}} \\
       &
       \t{ROOT}, \t{EROOT} &
       \t{D}, \t{ED} &
-      \t{SYSROOT}, \t{ESYSROOT} \\
+      \t{SYSROOT}, \t{ESYSROOT} &
+      \t{BROOT} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    \\
-      7                   & never  & never  & never  \\
+      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    & n/a    \\
+      7                   & never  & never  & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     92a5b7554ec1eee656e61aff7ed85486ff177a17
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 20:53:59 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:16:34 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=92a5b755

EAPI 7 drops --host-root in favor of -b, -d, and -r

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  8 +++++---
 pkg-mgr-commands.tex | 30 ++++++++++++++++++++----------
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d6eab8d..8028471 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -202,8 +202,8 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
-Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & No & Yes & Yes & Yes \\
+PM query options & \compactfeatureref{pm-query-options} &
+    No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
@@ -368,7 +368,7 @@ EAPI 5 is EAPI 4 with the following changes:
 \item \t{USE} is calculated differently, \featureref{profile-iuse-inject}.
 \item \t{find} is guaranteed to be GNU, \featureref{gnu-find}.
 \item \t{best_version} and \t{has_version} support the \t{-{}-host-root} option,
-    \featureref{host-root-option}.
+    \featureref{pm-query-options}.
 \item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}.
 \item \t{doheader} and \t{newheader} support, \featureref{doheader}.
 \item \t{new*} can read from standard input, \featureref{newfoo-stdin}.
@@ -417,6 +417,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
 \item \t{BROOT}, \featureref{broot}.
+\item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
+  \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 96b9df4..d86b88b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -84,27 +84,37 @@ These commands are used to extract information about the system. Ebuilds must no
 these commands in parallel with any other package manager command. Ebuilds must not run any of
 these commands once the current phase function has returned.
 
-\featurelabel{host-root-option} In EAPIs listed in table~\ref{tab:foo-version-host-root-table} as
-supporting option \t{-{}-host-root}, this flag as the first argument will cause the query to apply
-to the host root instead of \t{ROOT}.
+\featurelabel{pm-query-options} In EAPIs listed in table~\ref{tab:pm-query-options-table}
+as supporting options \t{-b}, \t{-d}, and \t{-r}, these flags as the first argument will cause
+the query to apply to locations targetted by \t{BDEPEND}, \t{DEPEND}, and \t{RDEPEND} respectively.
+When none of these options are given, \t{-r} is assumed.
+
+In EAPIs listed in table~\ref{tab:pm-query-options-table} as supporting option \t{-{}-host-root},
+this flag as the first argument will cause the query to apply to the host root. Otherwise, it
+applies to \t{ROOT}.
+
 \begin{description}
 \item[has_version] Takes exactly one package dependency specification as an argument. Returns
-    true if a package matching the specification is installed in \t{ROOT}, and false otherwise.
+    true if a package matching the specification is installed, and false otherwise.
 \item[best_version] Takes exactly one package dependency specification as an argument. If a
     matching package is installed, prints the category, package name and version of the highest
     matching version; otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*_version} commands}
-    \label{tab:foo-version-host-root-table}
-    \begin{tabular}{ll}
+\begin{centertable}{Package manager query command options supported by EAPIs}
+    \label{tab:pm-query-options-table}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{*_version} supports \t{-{}-host-root}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{-{}-host-root}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-b}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-d}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-r}?}} \\
       \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      0, 1, 2, 3, 4     & No  & No  & No  & No  \\
+      5, 6              & Yes & No  & No  & No  \\
+      7                 & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     e608bb7a56048fcf8e44ff90c5b9ce5c8f70d8e1
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:08:43 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:16:34 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e608bb7a

EAPI 7 bans package.provided

Bug: https://bugs.gentoo.org/568884

 eapi-differences.tex |  4 ++++
 profiles.tex         | 24 ++++++++++++++++++++----
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8028471..1bb0989 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{package.provided} & \compactfeatureref{package-provided} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{BROOT} & \compactfeatureref{broot} &
     No & No & No & No & Yes \\
 
@@ -419,6 +422,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{BROOT}, \featureref{broot}.
 \item \t{best_version} and \t{has_version} drops the \t{-{}-host-root} option in favor of the
   \t{-b}, \t{-d}, and \t{-r} options, \featureref{pm-query-options}.
+\item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/profiles.tex b/profiles.tex
index 99e84ea..edc17af 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -115,10 +115,26 @@ necessarily a global mask (from \t{profiles/package.mask}, section~\ref{profiles
     inherit tree when it comes to \t{-lines}. This behaviour may not be relied upon.
 
 \subsection{package.provided}
-\t{package.provided} is used to tell the package manager that a certain package version should be
-considered to be provided by the system regardless of whether it is actually installed. Because it
-has severe adverse effects on USE-based and slot-based dependencies, its use is strongly deprecated
-and package manager support must be regarded as purely optional.
+\featurelabel{package-provided} \t{package.provided} is used to tell the package manager that
+a certain package version should be considered to be provided by the system regardless of whether it
+is actually installed. Because it has severe adverse effects on USE-based and slot-based
+dependencies, its use is strongly deprecated and package manager support must be regarded as purely
+optional. Banned in EAPIs listed as not allowing \t{package.provided} in
+table~\ref{tab:profile-package-provided}.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Profile \t{package.provided} support}
+    \label{tab:profile-package-provided}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Allows \t{package.provided}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & Yes \\
+      7                   & No  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{package.use}
 The \t{package.use} file may be used by the package manager to override the default USE flags


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     617268dc04e273b738008cba32d1c44d2338cad0
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 17:50:56 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:15:26 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=617268dc

EAPI 7 requires GNU patch 2.7.

Bug: https://bugs.gentoo.org/593786

 commands.tex         | 13 ++++++++-----
 eapi-differences.tex |  4 ++++
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/commands.tex b/commands.tex
index 86b4232..5ba9626 100644
--- a/commands.tex
+++ b/commands.tex
@@ -26,7 +26,8 @@ The following commands must always be available in the ebuild environment:
     page~\pageref{tab:bash-version}.
 \item \t{sed} must be available, and must support all forms of invocations valid for GNU sed
     version 4 or later.
-\item \t{patch} must be available, and must support all inputs valid for GNU patch.
+\item \featurelabel{gnu-patch} \t{patch} must be available, and must support all inputs valid
+    for GNU patch, version as listed in table~\ref{tab:system-commands-table}.
 \item \featurelabel{gnu-find} \t{find} and \t{xargs} must be available, and must support all forms
     of invocations valid for GNU findutils version 4.4 or later. Only for EAPIs listed in
     table~\ref{tab:system-commands-table} as requiring GNU find.
@@ -35,13 +36,15 @@ The following commands must always be available in the ebuild environment:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
-    \begin{tabular}{ll}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{GNU \t{find}?}} \\
+      \multicolumn{1}{c}{\textbf{GNU \t{find}?}} &
+      \multicolumn{1}{c}{\textbf{GNU \t{patch} version}} \\
       \midrule
-      0, 1, 2, 3, 4     & Undefined \\
-      5, 6, 7           & Yes       \\
+      0, 1, 2, 3, 4     & Undefined & Any \\
+      5, 6              & Yes       & Any \\
+      7                 & Yes       & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 49e6be9..f7f6b51 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+GNU patch version & \compactfeatureref{gnu-patch} &
+    Any & Any & Any & Any & 2.7 \\
+
 Trailing slash in \t{ROOT}, \t{D}... & \compactfeatureref{trailing-slash} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -400,6 +403,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Output commands can no longer use stdout, \featureref{output-no-stdout}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
+\item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     829d47f14a7858bfefd71dcc7507d99fdcaf3939
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 19 21:36:40 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:15:26 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=829d47f1

EAPI 7: econf adds --with-sysroot

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  3 ++-
 pkg-mgr-commands.tex | 17 +++++++++++------
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7871d5c..3932f15 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -212,7 +212,7 @@ Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
     & disable dependency tracking &
     disable dependency tracking, disable silent rules &
     disable dependency tracking, disable silent rules, docdir, htmldir &
-    disable dependency tracking, disable silent rules, docdir, htmldir \\
+    disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
     No & Yes & Yes & Yes & Yes \\
@@ -408,6 +408,7 @@ EAPI 7 is EAPI 6 with the following changes:
     \featureref{trailing-slash}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
+\item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 76f5bff..96b9df4 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -283,6 +283,9 @@ current phase function has returned.
     \item -{}-htmldir must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}/html}, if the EAPI is listed
         in table~\ref{tab:econf-options-table} as using it. This option will only be passed if the
         string \t{-{}-htmldir} occurs in the output of \t{configure -{}-help}.
+    \item -{}-with-sysroot must be \t{\$\{ESYSROOT\}}, if the EAPI is listed in
+        table~\ref{tab:econf-options-table} as using it. This option will only be passed if the
+        string \t{-{}-with-sysroot} occurs in the output of \t{configure -{}-help}.
     \item -{}-host must be the value of the \t{CHOST} environment variable.
     \item -{}-libdir must be set according to Algorithm~\ref{alg:econf-libdir}.
     \item -{}-disable-dependency-tracking, if the EAPI is listed in
@@ -296,18 +299,20 @@ current phase function has returned.
     \ChangeWhenAddingAnEAPI{7}
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
-        \begin{tabular}{lllll}
+        \begin{tabular}{llllll}
           \toprule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
           \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
           \multicolumn{1}{c}{\textbf{-{}-docdir}} &
-          \multicolumn{1}{c}{\textbf{-{}-htmldir}} \\
+          \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
+          \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
           \midrule
-          0, 1, 2, 3        & No  & No  & No  & No  \\
-          4                 & Yes & No  & No  & No  \\
-          5                 & Yes & Yes & No  & No  \\
-          6, 7              & Yes & Yes & Yes & Yes \\
+          0, 1, 2, 3        & No  & No  & No  & No  & No  \\
+          4                 & Yes & No  & No  & No  & No  \\
+          5                 & Yes & Yes & No  & No  & No  \\
+          6                 & Yes & Yes & Yes & Yes & No  \\
+          7                 & Yes & Yes & Yes & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     585c5309205ee69233bd0934976b852f9256e31b
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:23:58 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:15:26 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=585c5309

EAPI 7 has SYSROOT and ESYSROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 47 +++++++++++++++++++++++++++++++++--------------
 2 files changed, 37 insertions(+), 14 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f7f6b51..7871d5c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
+    No & No & No & No & Yes \\
+
 GNU patch version & \compactfeatureref{gnu-patch} &
     Any & Any & Any & Any & 2.7 \\
 
@@ -404,6 +407,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
+\item \t{SYSROOT} and \t{ESYSROOT} added, \featureref{sysroot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index fe61ac5..e24a065 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -130,6 +130,20 @@ variable.
     See also the \t{EPREFIX} variable. Only for EAPIs listed
     in table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}. The presence of a trailing
     slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{SYSROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{sysroot} The absolute path to the root directory containing build dependencies
+    satisfied by \t{DEPEND}.  Only for EAPIs listed in table~\ref{tab:added-env-vars-table}
+    as supporting \t{SYSROOT}. The presence of a trailing slash EAPI-dependent as listed
+    in table~\ref{tab:trailing-slash}. \\
+\t{ESYSROOT} &
+    \t{src_*} &
+    No &
+    Contains the concatenation of the paths in \t{SYSROOT} and \t{EPREFIX} variables,
+    for convenience.  See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. The presence of a trailing
+    slash EAPI-dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -239,17 +253,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{llllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} \\
+      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+      \multicolumn{1}{P{6em}}{\textbf{\t{SYSROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  \\
-      5, 6, 7           & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -272,15 +288,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
       \multicolumn{1}{c}{\textbf{\t{EROOT}?}} &
-      \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{ED}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ESYSROOT}?}} \\
       \midrule
-      0, 1, 2           & No  & No  & No  \\
-      3, 4, 5, 6, 7     & Yes & Yes & Yes \\
+      0, 1, 2           & No  & No  & No  & No  \\
+      3, 4, 5, 6        & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -442,16 +460,17 @@ If the path specifies the system root directory, it will be empty.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{2}{c}{\textbf{Ends with a trailing slash?}} \\
+      \multicolumn{3}{c}{\textbf{Ends with a trailing slash?}} \\
       &
       \t{ROOT}, \t{EROOT} &
-      \t{D}, \t{ED} \\
+      \t{D}, \t{ED} &
+      \t{SYSROOT}, \t{ESYSROOT} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & always & always \\
-      7                   & never  & never  \\
+      0, 1, 2, 3, 4, 5, 6 & always & always & n/a    \\
+      7                   & never  & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     7c59313e9621a2ca7d93ae5a60e3460198766f56
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 14:10:20 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:12:08 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=7c59313e

EAPI 7 disallows stdout output of output functions

Bug: https://bugs.gentoo.org/483240

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 17 +++++++++++------
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8a1e55a..0c47d9b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+Output cmds can use stdout & \compactfeatureref{output-no-stdout} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{eqawarn} & \compactfeatureref{eqawarn} &
     No & No & No & No & Yes \\
 
@@ -391,6 +394,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item Version manipulation and comparison functions added, \featureref{ver-functions}.
 \item \t{eqawarn} added, \featureref{eqawarn}.
+\item Output commands can no longer use stdout, \featureref{output-no-stdout}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 91f38c0..76f5bff 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -114,8 +114,12 @@ These commands display messages to the user. Unless otherwise stated, the entire
 used as a message, with backslash-escaped characters interpreted as for the \t{echo -e} command of
 bash, notably \t{\textbackslash t} for a horizontal tab, \t{\textbackslash n} for a new line, and
 \t{\textbackslash\textbackslash} for a literal backslash. Ebuilds must not run any of these commands
-once the current phase function has returned. Unless otherwise noted, output may be sent to stdout,
-stderr or some other appropriate facility.
+once the current phase function has returned.
+
+\featurelabel{output-no-stdout} Unless otherwise noted, output may be sent to stderr or some other
+appropriate facility. In EAPIs listed in table~\ref{tab:output-commands} as not allowing stdout
+output, using stdout as an output facility is forbidden.
+
 \begin{description}
 \item[einfo] Displays an informational message.
 \item[einfon] Displays an informational message without a trailing newline.
@@ -139,13 +143,14 @@ stderr or some other appropriate facility.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
-    \begin{tabular}{ll}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{eqawarn}?}} &
+      \multicolumn{1}{c}{\textbf{can output to stdout?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6  & No  \\
-      7                    & Yes \\
+      0, 1, 2, 3, 4, 5, 6  & No  & Yes \\
+      7                    & Yes & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     f08bdb13c8d65e0f5fe44dc97ae0a6b744aa20ba
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:17:43 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:16:34 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f08bdb13

EAPI 7 removes PORTDIR and ECLASSDIR.

Bug: https://bugs.gentoo.org/373349
Bug: https://bugs.gentoo.org/373351

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 18 +++++++++++-------
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 968dba1..24da92c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,12 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{PORTDIR} & \compactfeatureref{portdir} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{ECLASSDIR} & \compactfeatureref{eclassdir} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -431,6 +437,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{package.provided} in profiles banned, \featureref{package-provided}.
 \item \t{DESTTREE} removed, \featureref{desttree}.
 \item \t{INSDESTTREE} removed, \featureref{insdesttree}.
+\item \t{PORTDIR} removed, \featureref{portdir}.
+\item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0434083..f495014 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -110,11 +110,13 @@ variable.
 \t{PORTDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's base directory. \\
+    \featurelabel{portdir} The full path to the master repository's base directory.  Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{PORTDIR}. \\
 \t{ECLASSDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's eclass directory. \\
+    \featurelabel{eclassdir} The full path to the master repository's eclass directory.  Only for
+    EAPIs listed in table~\ref{tab:removed-env-vars-table} as supporting \t{ECLASSDIR}.\\
 \t{ROOT} &
    \t{pkg_*} &
    No &
@@ -284,17 +286,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
       \multicolumn{1}{c}{\textbf{\t{KV}?}} &
       \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
-      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
-      4, 5, 6           & No  & No  & Yes & Yes \\
-      7                 & No  & No  & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
+      7                 & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     c22ec77650eb8b343a4f3864f05bfb55d694a8c3
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:10:08 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:20:10 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=c22ec776

EAPI 7 has automatic USE enforcing.

Bug: https://bugs.gentoo.org/609338

 dependencies.tex     | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 eapi-differences.tex |  4 ++++
 profiles.tex         |  1 +
 3 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 6a92542..c4c23c1 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -384,16 +384,82 @@ It is an error for an ebuild to use a conditional use dependency when that ebuil
 flag in \t{IUSE_EFFECTIVE}.
 
 \subsection{USE state constraints}
+
 \label{sec:required-use}
 \t{REQUIRED_USE} contains a list of assertions that must be met by the configuration of \t{USE}
 flags to be valid for this ebuild. In order to be matched, a \t{USE} flag in a terminal element
 must be enabled (or disabled if it has an exclamation mark prefix).
 
 If the package manager encounters a package version where \t{REQUIRED_USE} assertions are not met,
-it must treat this package version as if it was masked. No phase functions must be called.
+it should attempt to automatically enforce the necessary flags as detailed
+in section~\ref{sec:enforce-required-use}. If this feature is not supported or it fails to resolve
+the problem, the package manager must treat this package version as if it was masked. No phase
+functions must be called in that case.
 
 It is an error for a flag to be used if it is not included in \t{IUSE_EFFECTIVE}.
 
+\subsubsection{Automatic enforcing of REQUIRED_USE}
+\label{sec:enforce-required-use}
+
+\featurelabel{auto-req-use} In EAPIs listed in table~\ref{tab:enforce-required-use-table} as
+supporting enforcing of \t{REQUIRED_USE}, the package manager can attempt to resolve unmet USE state
+constraints through automatically adjusting the effective USE flags for the package being built,
+according to the algorithm specified below. Any adjustments done this way must not affect
+the package version permanently. The package manager must reevaluate the flags using the original
+user configuration every time the package is being built.
+
+The package flags that are either masked or forced according to the section~\ref{sec:use-mask-force}
+are considered immutable. The enforcing process must not alter the values of immutable flags.
+If the \t{REQUIRED_USE} constraint can not be satisfied without altering immutable flags, automatic
+enforcing fails.
+
+In order to enforce \t{REQUIRED_USE}, the package manager should process every USE constraint,
+in order of listing, according to the following rules:
+
+\begin{compactitem}
+\item For an unmatched use flag, the package manager should negate the state of the specified flag
+    in order to make the constraint match.
+\item For an unmatched all-of group, the package manager should recursively enforce all
+    constraints inside the group, in order of listing.
+\item For an unmatched use-conditonal group, the package manager should recursively enforce all
+    constraints inside the group, in order of listing. The associated condition flag is not altered.
+\item For an unmatched any-of group, the package manager should recursively enforce the first item
+    inside the group that can be enforced without altering immutable flags, in order of listing.
+\item For an unmatched at-most-one-of group:
+    \begin{compactitem}
+    \item If two or more items match due to immutable flags, the package manager must report
+        failure.
+    \item If exactly one of the items match due to immutable flags, the package manager should
+        enforce all other items not to match, according to the rule specified below.
+    \item If none of the items match due to immutable flags, the package manager should enforce all
+        items not to match but the first item in order of listing that matches currently.
+    \end{compactitem}
+\item For an unmatched exactly-one-of group:
+    \begin{compactitem}
+    \item If none of the items match, the package manager should behave as for unmatched any-of
+        group.
+    \item If more than one item matches, the package manager should behave as for unmatched
+        at-most-one-of group.
+    \end{compactitem}
+\end{compactitem}
+
+In order to enforce a matched use flag item not to match, the package manager should negate
+the state of the flag. The method of enforcing any other item type not to match is undefined.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting automatic enforcing of \t{REQUIRED_USE}}
+    \label{tab:enforce-required-use-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports enforcing \t{REQUIRED_USE}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Restrict}
 \label{sec:restrict}
 

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9579272..eaeeeaf 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{REQUIRED_USE} autoenforced & \compactfeatureref{auto-req-use} &
+    No & No & No & No & Yes \\
+
 \t{die} in subshell & \compactfeatureref{subshell-die} &
     No & No & No & No & Yes \\
 
@@ -463,6 +466,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{nonfatal} defined both as a shell function and external command,
   \featureref{nonfatal-fallback}.
 \item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
+\item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/profiles.tex b/profiles.tex
index edc17af..46c7928 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -145,6 +145,7 @@ specification is limited to the forms defined by the directory's EAPI. In some E
 \t{package.use} can be a directory instead of a regular file as per section~\ref{sec:line-stacking}.
 
 \subsection{USE masking and forcing}
+\label{sec:use-mask-force}
 This section covers the eight files \t{use.mask}, \t{use.force}, \t{use.stable.mask},
 \t{use.stable.force}, \t{package.use.mask}, \t{package.use.force}, \t{package.use.stable.mask},
 and \t{package.use.\allowbreak stable.force}. They are described together because they interact in


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     9f9df93adeded14a0065ec6557cfba1db571e98f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:42:13 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:21:11 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=9f9df93a

EAPI 7 has binding leftmost-of dep groups (||=).

Bug: https://bugs.gentoo.org/489458

 dependencies.tex     | 45 ++++++++++++++++++++++++++++++++++++++-------
 eapi-differences.tex |  4 ++++
 2 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index c4c23c1..c66106e 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -98,6 +98,12 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     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)+ ')'}.
     Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
+\item \featurelabel{binding-leftmost-of} A binding leftmost-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{any-of} \t{::=} \t{'||=' whitespace '(' whitespace (item
+    whitespace)* ')'}.  Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND} in EAPIs
+    listed in table~\ref{tab:dep-group-table} as supporting \t{||=}\ groups.
 \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
     one or more of (a dependency item of any kind followed by whitespace), followed by a close
@@ -109,7 +115,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     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
-    table~\ref{tab:at-most-one-of-table} as supporting \t{REQUIRED_USE ??}\ groups.
+    table~\ref{tab:dep-group-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 one or more of (a dependency item
@@ -150,15 +156,17 @@ In particular, note that whitespace is not optional.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
-    \label{tab:at-most-one-of-table}
-    \begin{tabular}{ll}
+\begin{centertable}{EAPIs supporting additional group types}
+    \label{tab:dep-group-table}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
+      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{||=}\ groups?}} \\
       \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6, 7           & Yes \\
+      0, 1, 2, 3, 4     & No  & No  \\
+      5, 6              & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -186,6 +194,29 @@ considered to be matched if its associated package dependency specification is n
 
 An empty any-of group counts as being matched.
 
+\subsection{Binding leftmost-of dependency specifications}
+
+Any use-conditional group that is an immediate child of a binding leftmost-of group, if not enabled
+(disabled for an exclamation mark prefixed use flag name), is not considered a member of the binding
+leftmost-of group for match purposes.
+
+In a binding leftmost-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.
+In addition, for runtime dependencies, indicates that the package will break unless the dependency
+corresponding to the first immediate child (in order of listing) matched in \t{ESYSROOT} at the time
+the package was built is satisfied.
+
+An empty binding leftmost-of group counts as being matched.
+
+To implement the binding leftmost-of operator, the package manager will need to store which of
+the immediate child elements were matched. This syntax is only for package manager use and must not
+be used by ebuilds. Only the first matched child element needs to be indicated.
+
+Whenever the binding leftmost-of group is used in an enabled dependency group, the dependencies
+(\t{DEPEND}) must ensure that at least one of the immediate child elements is also matched at build
+time. It is invalid to use the binding leftmost-of group inside PDEPEND or inside any-of dependency
+specifications.
+
 \subsection{Exactly-one-of dependency specifications}
 
 Any use-conditional group that is an immediate child of an exactly-one-of group, if not enabled

diff --git a/eapi-differences.tex b/eapi-differences.tex
index eaeeeaf..ccd3b53 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{||=} dependency group & \compactfeatureref{binding-leftmost-of} &
+    No & No & No & No & Yes \\
+
 \t{REQUIRED_USE} autoenforced & \compactfeatureref{auto-req-use} &
     No & No & No & No & Yes \\
 
@@ -467,6 +470,7 @@ EAPI 7 is EAPI 6 with the following changes:
   \featureref{nonfatal-fallback}.
 \item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
 \item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
+\item binding leftmost-of (\t{||=}) dependency group is supported, \featureref{binding-leftmost-of}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     13538ac911d4047852643f1907b32ce09d461363
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:33:22 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:20:10 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=13538ac9

EAPI 7 allows die in subshell.

Bug: https://bugs.gentoo.org/465008

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 23 +++++++++++++++--------
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 1a137a0..9579272 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{die} in subshell & \compactfeatureref{subshell-die} &
+    No & No & No & No & Yes \\
+
 \t{nonfatal} function+command & \compactfeatureref{nonfatal-fallback} &
     No & No & No & No & Yes \\
 
@@ -459,6 +462,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item \t{nonfatal} defined both as a shell function and external command,
   \featureref{nonfatal-fallback}.
+\item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 02d987e..a7d3461 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -181,23 +181,30 @@ completing. Ebuilds must not run any of these commands once the current phase fu
 \item[die] \featurelabel{nonfatal-die} If called under the \t{nonfatal} command (as per
     section~\ref{sec:failure-behaviour}) and with \t{-n} as its first parameter, displays a failure
     message provided in its following argument and then returns a non-zero exit status. Only in
-    EAPIs listed in table~\ref{tab:nonfatal-die} as supporting option~\t{-n}. Otherwise, displays
+    EAPIs listed in table~\ref{tab:die-properties} as supporting option~\t{-n}. Otherwise, displays
     a failure message provided in its first and only argument, and then aborts the build process.
-    \t{die} is \e{not} guaranteed to work correctly if called from a subshell environment.
+
+    \featurelabel{subshell-die} In EAPIs listed in table~\ref{tab:die-properties} as not providing
+    subshell support, \t{die} is \e{not} guaranteed to work correctly if called from a subshell
+    environment.
 \item[assert] Checks the value of the shell's pipe status variable, and if any component is non-zero
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} commands}
-    \label{tab:nonfatal-die}
-    \begin{tabular}{ll}
+\begin{centertable}{EAPI-specific properties of \t{die} and \t{assert} commands}
+    \label{tab:die-properties}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
+      \multicolumn{2}{c}{\textbf{\t{die} and \t{assert}}} \\
+      &
+      \multicolumn{1}{c}{\textbf{support \t{-n}?}} &
+      \multicolumn{1}{c}{\textbf{work in subshell?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5  & No  \\
-      6, 7              & Yes \\
+      0, 1, 2, 3, 4, 5  & No  & No  \\
+      6                 & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     cc8a6a3b9cf0cddf08081c9fe169ccc4a0d60374
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:24:10 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:20:10 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=cc8a6a3b

EAPI 7 provides command fallback for nonfatal.

Bug: https://bugs.gentoo.org/622894

 eapi-differences.tex |  5 +++++
 pkg-mgr-commands.tex | 17 ++++++++++++-----
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 5bd7836..1a137a0 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{nonfatal} function+command & \compactfeatureref{nonfatal-fallback} &
+    No & No & No & No & Yes \\
+
 \t{domo} install path & \compactfeatureref{domo-path} &
     \t{\$\{DESTTREE\}\slash share\slash locale} &
     \t{\$\{DESTTREE\}\slash share\slash locale} &
@@ -454,6 +457,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
+\item \t{nonfatal} defined both as a shell function and external command,
+  \featureref{nonfatal-fallback}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 35ec54e..02d987e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -22,6 +22,11 @@ The following commands affect this behaviour:
     the build process due to a failure, instead a non-zero exit status shall be returned. Only in
     EAPIs listed in table~\ref{tab:commands-die-table} as supporting \t{nonfatal}.
 
+    \featurelabel{nonfatal-fallback} In EAPIs listed in table~\ref{tab:commands-die-table}
+    as having \t{nonfatal} defined as both function and external command, the package manager must
+    provide both implementations to account both for calling in ebuild scope directly, and via
+    \t{xargs}.
+
     Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when called with the \t{-n}
     option and in EAPIs supporting this option, see table~\ref{tab:nonfatal-die}.
 \end{description}
@@ -29,14 +34,16 @@ The following commands affect this behaviour:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Command failure behaviour}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
+      \multicolumn{1}{P{8em}}{\textbf{Command failure behaviour}} &
+      \multicolumn{1}{P{6em}}{\textbf{Supports \t{nonfatal}?}} &
+      \multicolumn{1}{P{12em}}{\textbf{\t{nonfatal} as both function and external command?}} \\
       \midrule
-      0, 1, 2, 3        & Non-zero exit & No  \\
-      4, 5, 6, 7        & Aborts        & Yes \\
+      0, 1, 2, 3        & Non-zero exit & No  & n/a \\
+      4, 5, 6           & Aborts        & Yes & No  \\
+      7                 & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     9fd2dcd9dd0f3f8c83d809771fcbaaf3d4ec2904
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 17:35:57 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:21:11 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=9fd2dcd9

EAPI 7 supports runtime-modifiable USE flags.

Bug: https://bugs.gentoo.org/424283

 dependencies.tex     |  3 ++-
 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  |  5 ++++-
 ebuild-vars.tex      | 16 ++++++++++++----
 eclasses.tex         | 11 ++++++-----
 metadata-cache.tex   |  1 +
 pkg-mgr-commands.tex |  4 ++++
 7 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index c66106e..b81b603 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -181,7 +181,8 @@ In a use-conditional group, if the associated use flag is enabled (or disabled i
 exclamation mark prefix), all of the child elements must be matched.
 
 It is an error for a flag to be used if it is not included in \t{IUSE_EFFECTIVE} as described in
-section~\ref{sec:use-iuse-handling}.
+section~\ref{sec:use-iuse-handling}. Flags listed in \t{IUSE_RUNTIME} can be used only
+in \t{RDEPEND}, \t{PDEPEND} and \t{REQUIRED_USE}.
 
 \subsection{Any-of dependency specifications}
 

diff --git a/eapi-differences.tex b/eapi-differences.tex
index ccd3b53..d08d461 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{IUSE_RUNTIME} & \compactfeatureref{iuse-runtime} &
+    No & No & No & No & Yes \\
+
 \t{||=} dependency group & \compactfeatureref{binding-leftmost-of} &
     No & No & No & No & Yes \\
 
@@ -471,6 +474,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{die} guaranteed to work in a subshell environment, \featureref{subshell-die}.
 \item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
 \item binding leftmost-of (\t{||=}) dependency group is supported, \featureref{binding-leftmost-of}.
+\item runtime-modifiable USE flags (\t{IUSE_RUNTIME}) are supported, \featureref{iuse-runtime}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index f495014..42bd3a2 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -355,10 +355,12 @@ table~\ref{tab:locale-settings}.
 \subsection{USE and IUSE handling}
 \label{sec:use-iuse-handling}
 
-This section discusses the handling of four variables:
+This section discusses the handling of five variables:
 
 \begin{description}
 \item[IUSE] is the variable calculated from the \t{IUSE} values defined in ebuilds and eclasses.
+\item[IUSE_RUNTIME] is the variable calculated from the \t{IUSE_RUNTIME} values defined in ebuilds
+    and eclasses.
 \item[IUSE_REFERENCEABLE] is a variable calculated from \t{IUSE} and a variety of other sources
     described below. It is purely a conceptual variable; it is not exported to the ebuild
     environment. Values in \t{IUSE_REFERENCEABLE} may legally be used in queries from other
@@ -392,6 +394,7 @@ as supporting profile defined \t{IUSE} injection, \t{IUSE_EFFECTIVE} contains th
 
 \begin{compactitem}
 \item All values in the calculated \t{IUSE} value.
+\item All values in the calculated \t{IUSE_RUNTIME} value, in EAPIs where this variable is defined.
 \item All values in the profile \t{IUSE_IMPLICIT} variable.
 \item All values in the profile variable named \t{USE_EXPAND_VALUES_\$\{v\}}, where \t{\$\{v\}}
     is any value in the intersection of the profile \t{USE_EXPAND_UNPREFIXED} and

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index e4efcae..17e40ed 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -67,6 +67,12 @@ Ebuilds may define any of the following variables:
     \t{IUSE} defaults, 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[IUSE_RUNTIME] \featurelabel{iuse-runtime} Additional \t{USE} flags used by the ebuild whose
+    values can be altered in place without rebuilding from source. The flags listed
+    in \t{IUSE_RUNTIME} must not alter the package built. They must not be referenced at build time,
+    except for informational purposes. A single flag can not be listed in both \t{IUSE_RUNTIME}
+    and \t{IUSE} simultaneously. Uses the same syntax as \t{IUSE}. Only in EAPIs listed
+    in table~\ref{tab:optional-vars-table} as supporting \t{IUSE_RUNTIME}.
 \item[REQUIRED_USE] \featurelabel{required-use} Zero or more assertions that must be met by the
     configuration of \t{USE} flags to be valid for this ebuild. See section~\ref{sec:required-use}
     for description and section~\ref{sec:dependencies} for full syntax. Only in EAPIs listed in
@@ -103,14 +109,16 @@ Ebuilds may define any of the following variables:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{PROPERTIES}?}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} \\
+      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{IUSE_RUNTIME}?}} \\
       \midrule
-      0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6, 7        & Yes        & Yes \\
+      0, 1, 2, 3        & Optionally & No  & No  \\
+      4, 5, 6           & Yes        & Yes & No  \\
+      7                 & Yes        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eclasses.tex b/eclasses.tex
index 44683b5..9c2b685 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,12 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND} and \t{PDEPEND} variables are
-handled specially when set by an eclass. They must be accumulated across eclasses, appending
-the value set by each eclass to the resulting value after the previous one is loaded. Then
-the eclass-defined value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this
-is done after the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+The \t{IUSE}, \t{IUSE_RUNTIME}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}
+and \t{PDEPEND} variables are handled specially when set by an eclass. They must be accumulated
+across eclasses, appending the value set by each eclass to the resulting value after the previous
+one is loaded. Then the eclass-defined value is appended to that defined by the ebuild. In the case
+of \t{RDEPEND}, this is done after the implicit \t{RDEPEND} rules in
+section~\ref{sec:rdepend-depend} are applied.
 
 \section{EXPORT_FUNCTIONS}
 

diff --git a/metadata-cache.tex b/metadata-cache.tex
index df4b8ed..3ec626e 100644
--- a/metadata-cache.tex
+++ b/metadata-cache.tex
@@ -37,6 +37,7 @@ order. Other lines may be present following these; their meanings are not define
     ebuild metadata; see table~\ref{tab:defined-phases-table}.
 \item Build-time dependencies for \t{CBUILD} host (\t{BDEPEND}).
     Blank in some EAPIs; see table~\ref{tab:depend-table}.
+\item Runtime-modifiable use flags that this package respects (\t{IUSE_RUNTIME})
 \item Blank lines to pad the file to 22 lines long
 \end{compactenum}
 

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index a7d3461..287c71d 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -808,6 +808,10 @@ Unless otherwise noted, if any of these functions is called with a flag value th
 in \t{IUSE_EFFECTIVE}, either behaviour is undefined or it is an error as decided by
 table~\ref{tab:use-list-strictness}.
 
+In EAPIs listed in table~\ref{tab:optional-vars-table} as supporting \t{IUSE_RUNTIME}, the flags
+listed in \t{IUSE_RUNTIME} can only be referenced in \t{pkg_*} phases. Passing any of those flags
+to one of the following functions during any other phase is an error.
+
 \begin{description}
 \item[use] Returns shell true (0) if the first argument (a \t{USE} flag name) is enabled, false
     otherwise.  If the flag name is prefixed with \t{!}, returns true if the flag is disabled, and


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     35900a461c1e0bb2cea225d9f7b3243b06c4245d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:48:46 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:20:10 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=35900a46

pkg-mgr-commands: Redefine dolib* in terms of libdir.a

Since EAPI 7 removes dolib, it would be a bad fit to describe the two
other commands on top of one that is removed. Instead, start by defining
libdir.a and then define the two other commands on top of it.

This also clarifies that dolib.a & dolib.so do not respect libopts,
while the old wording was not clear on that. However, this is at least
how it was implemented in Portage (with dolib.a and dolib.so overriding
libopts completely).

 pkg-mgr-commands.tex | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 1fa2053..907c883 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -494,15 +494,16 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     symlink is encountered. Failure behaviour is EAPI dependent as per
     section~\ref{sec:failure-behaviour}.
 
-\item[dolib] For each argument, installs it into the appropriate library subdirectory under
-    \t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files are installed by default
-    with file mode \t{0644}, or with the \t{install} options set by the most recent \t{libopts}
-    call. Any symlinks are installed into the same directory as relative links to their original
-    target. Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
+\item[dolib.a] For each argument, installs it into the appropriate library subdirectory under
+    \t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files are installed
+    with file mode \t{0644}. Any symlinks are installed into the same directory as relative links
+    to their original target. Failure behaviour is EAPI dependent as per
+    section~\ref{sec:failure-behaviour}.
 
-\item[dolib.a] As for \t{dolib} except each file is installed with mode \t{0644}.
+\item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
-\item[dolib.so] As for \t{dolib} except each file is installed with mode \t{0755}.
+\item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
+    the \t{install} options set by the most recent \t{libopts} call.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     73a013f3d662696de01c8f8c87b5add99fac8a32
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:02:49 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:20:10 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=73a013f3

EAPI 7 bans dolib and libopts.

Bug: https://bugs.gentoo.org/630416

 eapi-differences.tex |  7 +++++++
 pkg-mgr-commands.tex | 22 ++++++++++++++--------
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 3166208..5bd7836 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -224,6 +224,12 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
+\t{dolib} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
+\t{libopts} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 PM query options & \compactfeatureref{pm-query-options} &
     No & No & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -447,6 +453,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{PORTDIR} removed, \featureref{portdir}.
 \item \t{ECLASSDIR} removed, \featureref{eclassdir}.
 \item \t{domo} installs to \t{/usr/share/locale}, ignoring \t{into}, \featureref{domo-path}.
+\item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 907c883..35ec54e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -50,20 +50,22 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{4}{c}{\textbf{Command banned?}} \\
+      \multicolumn{6}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
       \multicolumn{1}{c}{\textbf{\t{dosed}}} &
       \multicolumn{1}{c}{\textbf{\t{einstall}}} &
-      \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
+      \multicolumn{1}{c}{\textbf{\t{dohtml}}} &
+      \multicolumn{1}{c}{\textbf{\t{dolib}}} &
+      \multicolumn{1}{c}{\textbf{\t{libopts}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4, 5              & Yes & Yes & No  & No  \\
-      6                 & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  & No  & No  & No  \\
+      6                 & Yes & Yes & Yes & No  & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -503,7 +505,9 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 \item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
 \item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
-    the \t{install} options set by the most recent \t{libopts} call.
+    the \t{install} options set by the most recent \t{libopts} call. In EAPIs listed
+    in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}
@@ -714,6 +718,8 @@ has returned.
 \item[exeopts] Sets the options passed by \t{doexe} et al.\ to the \t{install} command.
 
 \item[libopts] Sets the options passed by \t{dolib} et al.\ to the \t{install} command.
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as
+    per section~\ref{sec:banned-commands}.
 
 \end{description}
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-10-09 17:31 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-10-09 17:31 UTC (permalink / raw
  To: gentoo-commits

commit:     58a7ba247d84e26c60697127dcc0490cd59aa8f4
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 17:44:06 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct  9 17:22:19 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=58a7ba24

EAPI 7 has sandbox directory removal functions.

Bug: https://bugs.gentoo.org/630422

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 29 +++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d08d461..beba23f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -41,6 +41,9 @@ of this document for a complete table of previous EAPIs.
 \bottomrule
 \endlastfoot
 
+\t{rm*} sandbox functions & \compactfeatureref{sandbox-rm} &
+    No & No & No & No & Yes \\
+
 \t{IUSE_RUNTIME} & \compactfeatureref{iuse-runtime} &
     No & No & No & No & Yes \\
 
@@ -475,6 +478,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item automatic enforcing of \t{REQUIRED_USE} is supported, \featureref{auto-req-use}.
 \item binding leftmost-of (\t{||=}) dependency group is supported, \featureref{binding-leftmost-of}.
 \item runtime-modifiable USE flags (\t{IUSE_RUNTIME}) are supported, \featureref{iuse-runtime}.
+\item sandbox path removal flags (\t{rm*}) are supported, \featureref{sandbox-rm}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 287c71d..ff54d69 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -88,6 +88,35 @@ argument. Ebuilds must not run any of these commands once the current phase func
 \item[adddeny] Add a directory to the deny list.
 \end{description}
 
+\featurelabel{sandbox-rm} Additionally, in EAPIs listed in table~\ref{tab:sandbox-command-table}
+as supporting the respective commands, the following commands are available:
+\begin{description}
+\item[rmread] Remove a directory from the permitted read list.
+\item[rmwrite] Remove a directory from the permitted write list.
+\item[rmpredict] Remove a directory from the predict list.
+\item[rmdeny] Remove a directory from the deny list.
+\end{description}
+
+All of those commands match paths exactly. Removing a directory that is not present on the list
+is silently ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Additional sandbox commands by EAPI}
+    \label{tab:sandbox-command-table}
+    \begin{tabular}{lllll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{rmread}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmwrite}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmpredict}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmdeny}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+      7                   & Yes & Yes & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Package manager query commands}
 These commands are used to extract information about the system. Ebuilds must not run any of
 these commands in parallel with any other package manager command. Ebuilds must not run any of


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-11-07 17:23 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-11-07 17:23 UTC (permalink / raw
  To: gentoo-commits

commit:     058735c3cfb307dbaa597d1554ba034039e59974
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Nov  7 17:20:39 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Nov  7 17:20:46 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=058735c3

Add dilfridge and zmedico to acknowledgements.

 ebuild-vars.tex  | 1 +
 introduction.tex | 7 ++++---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 6f0e979..5169e0a 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -21,6 +21,7 @@ Globally defined ebuild variables without a special meaning must similarly not r
 variable data.
 
 \section{Mandatory Ebuild-defined Variables}
+\label{sec:mandatory-vars}
 
 All ebuilds must define at least the following variables:
 

diff --git a/introduction.tex b/introduction.tex
index fa47f7b..5990f86 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -61,9 +61,10 @@ applicable to tools or other applications that interact with ebuilds or ebuild r
 
 Thanks to Mike Kelly (package manager provided utilities, section~\ref{sec:pkg-mgr-commands}),
 Danny van Dyk (ebuild functions, section~\ref{sec:ebuild-functions}), David Leverton (various
-sections), Petteri Räty (environment state, section~\ref{sec:ebuild-env-state}) and Michał Górny
-(various sections) for contributions. Thanks also to Mike Frysinger and Brian Harring for
-proof-reading and suggestions for fixes and/or clarification.
+sections), Petteri Räty (environment state, section~\ref{sec:ebuild-env-state}), Michał Górny
+(various sections), Andreas K. Hüttel (stable use masking, section~\ref{sec:use-masking}) and
+Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) for contributions. Thanks also to
+Mike Frysinger and Brian Harring for proof-reading and suggestions for fixes and/or clarification.
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-11-07 17:23 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-11-07 17:23 UTC (permalink / raw
  To: gentoo-commits

commit:     529856bc8731d63ac5d511843fe939da0d292c4b
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Nov  7 17:21:09 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Nov  7 17:21:09 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=529856bc

Add chewi to acknowledgements.

 introduction.tex | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/introduction.tex b/introduction.tex
index 5990f86..afbe708 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -62,9 +62,10 @@ applicable to tools or other applications that interact with ebuilds or ebuild r
 Thanks to Mike Kelly (package manager provided utilities, section~\ref{sec:pkg-mgr-commands}),
 Danny van Dyk (ebuild functions, section~\ref{sec:ebuild-functions}), David Leverton (various
 sections), Petteri Räty (environment state, section~\ref{sec:ebuild-env-state}), Michał Górny
-(various sections), Andreas K. Hüttel (stable use masking, section~\ref{sec:use-masking}) and
-Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) for contributions. Thanks also to
-Mike Frysinger and Brian Harring for proof-reading and suggestions for fixes and/or clarification.
+(various sections), Andreas K. Hüttel (stable use masking, section~\ref{sec:use-masking}),
+Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) and James Le Cuirot (build dependencies,
+section~\ref{sec:ebuild-env-vars}) for contributions. Thanks also to Mike Frysinger and
+Brian Harring for proof-reading and suggestions for fixes and/or clarification.
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-11-07 18:22 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-11-07 18:22 UTC (permalink / raw
  To: gentoo-commits

commit:     7d9021e82e1232585bea6490f1f3b125a8ae44cb
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Nov  7 18:21:57 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Nov  7 18:21:57 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=7d9021e8

fixup a0c0b79 "EAPI 7 has BDEPEND"

 dependencies.tex | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index d1fe3c7..3f3ef79 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -57,14 +57,28 @@ There are three classes of dependencies supported by ebuilds:
 as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
 
 \begin{compactitem}
-\item Build dependencies that are binary compatible with the native build system
-    / CBUILD (\t{BDEPEND}). The ebuild is allowed to call binary executables
-    installed by this kind of dependency.
-\item Build dependencies that are binary compatible with the system being built
-    / CHOST (\t{DEPEND}). The ebuild must not execute binary executables installed
-    by this kind of dependency.
+\item \t{BDEPEND} build dependencies that are binary compatible with the native build system
+    (\t{CBUILD}). The ebuild is allowed to call binary executables installed by this kind of
+    dependency.
+    \item \t{DEPEND} build dependencies that are binary compatible with the system being built
+    (\t{CHOST}). The ebuild must not execute binary executables installed by this kind of
+    dependency.
 \end{compactitem}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting additional dependency types}
+    \label{tab:depend-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
 a particular phase function is executed. Table~\ref{tab:dep-class-api} summarises additional
 interfaces related to the dependency classes.
@@ -119,20 +133,6 @@ be surrounded on both sides by whitespace, except at the start and end of the st
 In particular, note that whitespace is not optional.
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting additional dependency types}
-    \label{tab:depend-table}
-    \begin{tabular}{ll}
-      \toprule
-      \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
-      \midrule
-      0, 1, 2, 3, 4, 5, 6 & No  \\
-      7                   & Yes \\
-      \bottomrule
-    \end{tabular}
-\end{centertable}
-
-\ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows}
     \label{tab:uri-arrows-table}
     \begin{tabular}{ll}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-11-09 16:51 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-11-09 16:51 UTC (permalink / raw
  To: gentoo-commits

commit:     7177e5fa5d5dd606bc634440868b9fa99700ec90
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Nov  9 16:33:34 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Nov  9 16:49:53 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=7177e5fa

EAPI 7 has ENV_BLACKLIST

 eapi-differences.tex  |  4 ++++
 ebuild-env-vars.tex   | 36 +++++++++++++++++++++++++++++-------
 profile-variables.tex |  4 ++++
 3 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b666500..3f25555 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -181,6 +181,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 Sane locale settings & \compactfeatureref{locale-settings} &
     Undefined & Undefined & Undefined & Yes & Yes \\
 
+\t{ENV_BLACKLIST} & \compactfeatureref{env-blacklist} &
+    No & No & No & No & Yes \\
+
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
     No & No & Yes & Yes & Yes \\
 
@@ -483,6 +486,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
 \item Version manipulation and comparison commands, \featureref{ver-commands}.
+\item \t{ENV_BLACKLIST}, \featureref{env-blacklist}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 32ed634..0382f04 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -334,22 +334,44 @@ must not be set.
 \featurelabel{locale-settings} The package manager must ensure that the \t{LC_CTYPE} and
 \t{LC_COLLATE} locale categories are equivalent to the POSIX locale, as far as characters in the
 ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in
-table~\ref{tab:locale-settings}.
+table~\ref{tab:system-env-vars}.
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{Locale settings for EAPIs}
-    \label{tab:locale-settings}
-    \begin{tabular}{ll}
+\begin{centertable}{System environment variables}
+    \label{tab:system-env-vars}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
+      \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ENV_BLACKLIST}?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5  & Undefined \\
-      6, 7              & Yes       \\
+      0, 1, 2, 3, 4, 5  & Undefined & No  \\
+      6                 & Yes       & No  \\
+      7                 & Yes       & Yes \\  
       \bottomrule
     \end{tabular}
 \end{centertable}
 
+\subsection{Environment variable blacklist}
+
+\featurelabel{env-blacklist} If the ebuild uses EAPI listed in table~\ref{tab:system-env-vars}
+as supporting the \t{ENV_BLACKLIST} variable, the package manager must construct the environment
+variable blacklist in the following manner.
+
+The value of the \t{ENV_BLACKLIST} variable as specified by the profile \t{make.defaults} files
+provides a whitespace-separated list of variable names. Each item can optionally be preceded
+by a hyphen. The blacklist is initially empty. For each item:
+
+\begin{compactitem}
+\item If the item is not preceded by a hyphen, then the variable is added to the blacklist.
+\item If the item is preceded by a hyphen, then the variable is removed from the blacklist.
+\item As a special case, \t{*} adds all the variables currently set in the environment
+   to the blacklist, except for variables explicitly set by the package manager.
+\end{compactitem}
+
+Once the blacklist is constructed, the package manager must ensure that all variable whose names
+are listed in it are unset in the ebuild environment.
+
 \subsection{USE and IUSE handling}
 \label{sec:use-iuse-handling}
 

diff --git a/profile-variables.tex b/profile-variables.tex
index 309f9e9..fa967b2 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -29,6 +29,10 @@ incrementally; otherwise, the following variables may or may not be treated incr
 \item \t{USE_EXPAND_UNPREFIXED}
 \end{compactitem}
 
+If the package manager supports any EAPI listed in table~\ref{tab:system-env-vars} as supporting
+\t{ENV_BLACKLIST} variable, this variable must be treated incrementally. Otherwise, it may or may
+not be treated incrementally.
+
 Other variables, except where they affect only package-manager-specific functionality (such as
 Portage's \t{FEATURES} variable), must not be treated incrementally---later definitions shall
 completely override those in parent profiles.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-11-09 20:57 Michał Górny
  0 siblings, 0 replies; 207+ messages in thread
From: Michał Górny @ 2017-11-09 20:57 UTC (permalink / raw
  To: gentoo-commits

commit:     49219c2e4cafe73711c48504fec45cf3a2db7bd0
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Nov  9 16:33:34 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Nov  9 20:28:02 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=49219c2e

EAPI 7 has ENV_BLACKLIST

 eapi-differences.tex  |  4 ++++
 ebuild-env-vars.tex   | 20 +++++++++++++-------
 profile-variables.tex |  4 ++++
 3 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b666500..3f25555 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -181,6 +181,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 Sane locale settings & \compactfeatureref{locale-settings} &
     Undefined & Undefined & Undefined & Yes & Yes \\
 
+\t{ENV_BLACKLIST} & \compactfeatureref{env-blacklist} &
+    No & No & No & No & Yes \\
+
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
     No & No & Yes & Yes & Yes \\
 
@@ -483,6 +486,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
 \item Version manipulation and comparison commands, \featureref{ver-commands}.
+\item \t{ENV_BLACKLIST}, \featureref{env-blacklist}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 32ed634..055fb89 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -334,18 +334,24 @@ must not be set.
 \featurelabel{locale-settings} The package manager must ensure that the \t{LC_CTYPE} and
 \t{LC_COLLATE} locale categories are equivalent to the POSIX locale, as far as characters in the
 ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in
-table~\ref{tab:locale-settings}.
+table~\ref{tab:system-env-vars}.
+
+\featurelabel{env-blacklist} If the ebuild uses EAPI listed in table~\ref{tab:system-env-vars}
+as supporting the \t{ENV_BLACKLIST} variable, then it specifies a whitespace-separated list
+of variable names. All variables whose names are included in that list must not be set.
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{Locale settings for EAPIs}
-    \label{tab:locale-settings}
-    \begin{tabular}{ll}
+\begin{centertable}{System environment variables}
+    \label{tab:system-env-vars}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
+      \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ENV_BLACKLIST}?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5  & Undefined \\
-      6, 7              & Yes       \\
+      0, 1, 2, 3, 4, 5  & Undefined & No  \\
+      6                 & Yes       & No  \\
+      7                 & Yes       & Yes \\  
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/profile-variables.tex b/profile-variables.tex
index 309f9e9..fa967b2 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -29,6 +29,10 @@ incrementally; otherwise, the following variables may or may not be treated incr
 \item \t{USE_EXPAND_UNPREFIXED}
 \end{compactitem}
 
+If the package manager supports any EAPI listed in table~\ref{tab:system-env-vars} as supporting
+\t{ENV_BLACKLIST} variable, this variable must be treated incrementally. Otherwise, it may or may
+not be treated incrementally.
+
 Other variables, except where they affect only package-manager-specific functionality (such as
 Portage's \t{FEATURES} variable), must not be treated incrementally---later definitions shall
 completely override those in parent profiles.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2017-11-12 19:14 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2017-11-12 19:14 UTC (permalink / raw
  To: gentoo-commits

commit:     fd86d4c8dd87a64980db9f492fc6f4e4dcc4bdb4
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 12 19:14:16 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Nov 12 19:14:16 2017 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=fd86d4c8

fixup dd298e8 "EAPI 7 has automatic USE enforcing."

 dependencies.tex | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 3f3ef79..3879dd3 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -456,7 +456,7 @@ in order of listing, according to the following rules:
     in order to make the constraint match.
 \item For an unmatched all-of group, the package manager should recursively enforce all constraints
     inside the group, in order of listing.
-\item For an unmatched use-conditonal group, the package manager should recursively enforce all
+\item For an unmatched use-conditional group, the package manager should recursively enforce all
     constraints inside the group, in order of listing. The associated condition flag is not altered.
 \item For an unmatched any-of group, the package manager should recursively enforce the first item
     inside the group that can be enforced without altering immutable flags, in order of listing.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     7dc54ec9b8ff7588057672f5053a1885d61516be
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:23:58 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=7dc54ec9

EAPI 7 has SYSROOT and ESYSROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 34 +++++++++++++++++++++++++---------
 2 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 21411eb..9c769b5 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -155,6 +155,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
     Yes & Yes & Yes & Yes & No \\
 
+\t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
+    No & No & No & No & Yes \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -420,6 +423,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
 \item \t{DESTTREE} is gone, \featureref{desttree}.
 \item \t{INSDESTTREE} is gone, \featureref{insdesttree}.
+\item \t{SYSROOT} and \t{ESYSROOT}, \featureref{sysroot}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
 \end{compactitem}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 27417bf..1e34488 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -132,6 +132,18 @@ variable.
     for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed in
     table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}\@. The presence of a trailing
     slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{SYSROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{sysroot} The absolute path to the root directory containing build dependencies
+    satisfied by \t{DEPEND}\@. Only for EAPIs listed in table~\ref{tab:added-env-vars-table}
+    as supporting \t{SYSROOT}. \\
+\t{ESYSROOT} &
+    \t{src_*} &
+    No &
+    Contains the concatenation of the paths in the \t{SYSROOT} and \t{EPREFIX} variables,
+    for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -244,17 +256,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{llllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} \\
+      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+      \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  \\
-      5, 6, 7           & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -282,15 +296,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
       \multicolumn{1}{c}{\textbf{\t{EROOT}?}} &
-      \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{ED}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ESYSROOT}?}} \\
       \midrule
-      0, 1, 2           & No  & No  & No  \\
-      3, 4, 5, 6, 7     & Yes & Yes & Yes \\
+      0, 1, 2           & No  & No  & No  & No  \\
+      3, 4, 5, 6        & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     df314a938acafe945989d8b98e608469448339a7
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:17:43 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=df314a93

EAPI 7 removes PORTDIR and ECLASSDIR.

Bug: https://bugs.gentoo.org/373349
Bug: https://bugs.gentoo.org/373351

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 17 +++++++++++------
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 326774d..f87e448 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -149,6 +149,12 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{AA} & \compactfeatureref{aa} &
     Yes & No & No & No & No \\
 
+\t{PORTDIR} & \compactfeatureref{portdir} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{ECLASSDIR} & \compactfeatureref{eclassdir} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{KV} & \compactfeatureref{kv} &
     Yes & No & No & No & No \\
 
@@ -401,6 +407,8 @@ EAPI 7 is EAPI 6 with the following changes:
     being matched, \featureref{empty-dep-groups}.
 \item \t{||=} dependency groups, \featureref{binding-any-of}.
 \item Automatic enforcing of \t{REQUIRED_USE}, \featureref{auto-req-use}.
+\item \t{PORTDIR} is gone, \featureref{portdir}.
+\item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 4545272..0258d1a 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -110,11 +110,13 @@ variable.
 \t{PORTDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's base directory. \\
+    \featurelabel{portdir} The full path to the master repository's base directory. Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{PORTDIR}. \\
 \t{ECLASSDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's eclass directory. \\
+    \featurelabel{eclassdir} The full path to the master repository's eclass directory. Only for
+    EAPIs listed in table~\ref{tab:removed-env-vars-table} as supporting \t{ECLASSDIR}. \\
 \t{ROOT} &
    \t{pkg_*} &
    No &
@@ -253,14 +255,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
-      \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{KV}?}} &
+      \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes \\
-      4, 5, 6, 7        & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes \\
+      7                 & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     48a11e8f9994131eb8db42a7aa6f4c1cedd94949
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:13:57 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=48a11e8f

EAPI 7 removes DESTTREE and INSDESTTREE.

Bug: https://bugs.gentoo.org/173630

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 19 ++++++++++++-------
 2 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f87e448..283891b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -155,6 +155,12 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
     Yes & Yes & Yes & Yes & No \\
 
+\t{DESTTREE} & \compactfeatureref{desttree} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{INSDESTTREE} & \compactfeatureref{insdesttree} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{KV} & \compactfeatureref{kv} &
     Yes & No & No & No & No \\
 
@@ -409,6 +415,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Automatic enforcing of \t{REQUIRED_USE}, \featureref{auto-req-use}.
 \item \t{PORTDIR} is gone, \featureref{portdir}.
 \item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
+\item \t{DESTTREE} is gone, \featureref{desttree}.
+\item \t{INSDESTTREE} is gone, \featureref{insdesttree}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0258d1a..2d79f20 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -176,11 +176,14 @@ variable.
 \t{DESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{dobin}, \t{dolib}, \t{domo}, and \t{dosbin} install things. \\
+    \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, \t{domo},
+    and \t{dosbin} install things. Only for EAPIs listed in table~\ref{tab:removed-env-vars-table}
+    as supporting \t{DESTTREE}. \\
 \t{INSDESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{doins} installs things. \\
+    \featurelabel{insdesttree} Controls the location where \t{doins} installs things. Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{INSDESTTREE}. \\
 \t{USE} &
     All &
     Yes &
@@ -255,17 +258,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
       \multicolumn{1}{c}{\textbf{\t{KV}?}} &
       \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
-      \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} &
+      \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
-      4, 5, 6           & No  & No  & Yes & Yes \\
-      7                 & No  & No  & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
+      7                 & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     85043ede127fd161eefeaf4ecc0ca995e3bb1735
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 19 21:36:40 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=85043ede

EAPI 7: econf adds --with-sysroot

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  3 ++-
 pkg-mgr-commands.tex | 17 +++++++++++------
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9c769b5..0f6371b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -225,7 +225,7 @@ Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
     None & disable dependency tracking &
     disable dependency tracking, disable silent rules &
     disable dependency tracking, disable silent rules, docdir, htmldir &
-    disable dependency tracking, disable silent rules, docdir, htmldir \\
+    disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
     No & Yes & Yes & Yes & Yes \\
@@ -426,6 +426,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{SYSROOT} and \t{ESYSROOT}, \featureref{sysroot}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
+\item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ad5000c..56df22d 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -258,6 +258,9 @@ current phase function has returned.
     \item -{}-htmldir must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}/html}, if the EAPI is listed
         in table~\ref{tab:econf-options-table} as using it. This option will only be passed if the
         string \t{-{}-htmldir} occurs in the output of \t{configure -{}-help}.
+    \item -{}-with-sysroot must be \t{\$\{ESYSROOT\}}, if the EAPI is listed in
+        table~\ref{tab:econf-options-table} as using it. This option will only be passed if the
+        string \t{-{}-with-sysroot} occurs in the output of \t{configure -{}-help}.
     \item -{}-host must be the value of the \t{CHOST} environment variable.
     \item -{}-libdir must be set according to Algorithm~\ref{alg:econf-libdir}.
     \item -{}-disable-dependency-tracking, if the EAPI is listed in
@@ -271,18 +274,20 @@ current phase function has returned.
     \ChangeWhenAddingAnEAPI{7}
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
-        \begin{tabular}{lllll}
+        \begin{tabular}{llllll}
           \toprule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
           \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
           \multicolumn{1}{c}{\textbf{-{}-docdir}} &
-          \multicolumn{1}{c}{\textbf{-{}-htmldir}} \\
+          \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
+          \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
           \midrule
-          0, 1, 2, 3        & No  & No  & No  & No  \\
-          4                 & Yes & No  & No  & No  \\
-          5                 & Yes & Yes & No  & No  \\
-          6, 7              & Yes & Yes & Yes & Yes \\
+          0, 1, 2, 3        & No  & No  & No  & No  & No  \\
+          4                 & Yes & No  & No  & No  & No  \\
+          5                 & Yes & Yes & No  & No  & No  \\
+          6                 & Yes & Yes & Yes & Yes & No  \\
+          7                 & Yes & Yes & Yes & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     31b270ea4638bd18917a80c5615f1082ad91dd9c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 16:20:11 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=31b270ea

EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED.

Bug: https://bugs.gentoo.org/465772

 eapi-differences.tex |  5 +++++
 ebuild-env-vars.tex  | 58 ++++++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 283891b..21411eb 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -185,6 +185,9 @@ Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
     * & Yes & Yes & Yes & Yes \\
 
+Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
     Undefined & Undefined & Yes & Yes & Yes \\
 
@@ -417,6 +420,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
 \item \t{DESTTREE} is gone, \featureref{desttree}.
 \item \t{INSDESTTREE} is gone, \featureref{insdesttree}.
+\item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
+    \featureref{trailing-slash}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 2d79f20..27417bf 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -123,14 +123,15 @@ variable.
    The absolute path to the root directory into which the package is to be merged.  Phases which run
    with full filesystem access must not touch any files outside of the directory given in
    \t{ROOT}\@. Also of note is that in a cross-compiling environment, binaries inside of \t{ROOT}
-   will not be executable on the build machine, so ebuilds must not call them. \t{ROOT} must be
-   non-empty and end in a trailing slash. \\
+   will not be executable on the build machine, so ebuilds must not call them. The presence of
+   a trailing slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{EROOT} &
     \t{pkg_*} &
     No &
-    Contains the path \t{\$\{ROOT\%/\}\$\{EPREFIX\}/} for convenience. See also the
-    \t{EPREFIX} variable. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as
-    supporting \t{EROOT}. \\
+    Contains the concatenation of the paths in the \t{ROOT} and \t{EPREFIX} variables,
+    for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed in
+    table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}\@. The presence of a trailing
+    slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -161,18 +162,21 @@ variable.
     \t{src_install} &
     No &
     Contains the full path to the image directory into which the package should be installed.
-    Must be non-empty and end in a trailing slash. \\
+    The presence of a trailing slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}.
+    \\
 \t{D} (continued) &
     \t{pkg_preinst}, \t{pkg_postinst} &
     Yes &
-    Contains the full path to the image that is about to be or has just been merged. Must be
-    non-empty and end in a trailing slash. \\
+    Contains the full path to the image that is about to be or has just been merged.
+    The presence of a trailing slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}.
+    \\
 \t{ED} &
     \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst} &
     See \t{D} &
-    Contains the path \t{\$\{D\%/\}\$\{EPREFIX\}/} for convenience. See also the
-    \t{EPREFIX} variable. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as
-    supporting \t{ED}. \\
+    Contains the concatenation of the paths in the \t{D} and \t{EPREFIX} variables,
+    for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed in
+    table~\ref{tab:offset-env-vars-table} as supporting \t{ED}\@. The presence of a trailing slash
+    is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{DESTTREE} &
     \t{src_install} &
     No &
@@ -433,6 +437,38 @@ behaviour of offset-prefix aware and agnostic is the same when \t{EPREFIX} is se
 string in offset-prefix aware EAPIs. The latter do have the variables \t{ED} and \t{EROOT} properly
 set, though.
 
+\subsection{Path variables and trailing slash}
+\label{sec:trailing-slash}
+
+Unless specified otherwise, the paths provided through package manager variables do not end with
+a trailing slash and cannot be empty. A few exceptions to that rule are listed
+in table~\ref{tab:trailing-slash} along with applicable EAPIs.
+
+For EAPIs where those variables are defined to always end with a trailing slash, the package manager
+guarantees that a trailing slash will always be appended to the path in question. If the path
+specifies the system root directory, it will consist of a single slash (\t{/}).
+
+\featurelabel{trailing-slash} For EAPIs where those variables are defined to never end with
+a trailing slash, the package manager guarantees that a trailing slash will never be present.
+If the path specifies the system root directory, it will be empty.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Variables that always or never end with a trailing slash}
+    \label{tab:trailing-slash}
+    \begin{tabular}{lll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{2}{c}{\textbf{Ends with a trailing slash?}} \\
+      &
+      \t{ROOT}, \t{EROOT} &
+      \t{D}, \t{ED} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & always & always \\
+      7                   & never  & never  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
 %%% Local Variables:


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     45ce19f6152061277ad7b91662336b4b8ae32fa5
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 14:05:38 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=45ce19f6

EAPI 7 has eqawarn

Bug: https://bugs.gentoo.org/482884

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 13 +++++++++----
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d7153a8..97ca9ad 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -239,6 +239,9 @@ Query command options & \compactfeatureref{pm-query-options} &
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
     Yes & Yes & Yes & Yes & No \\
 
+\t{eqawarn} & \compactfeatureref{eqawarn} &
+    No & No & No & No & Yes \\
+
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
 
@@ -465,6 +468,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item Sandbox path removal commands, \featureref{sandbox-rm}.
 \item Output commands no longer use stdout, \featureref{output-no-stdout}.
+\item \t{eqawarn}, \featureref{eqawarn}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4f74fc4..9820340 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -174,6 +174,10 @@ output, using stdout as an output facility is forbidden.
     manager may choose to log \t{elog} messages by default where \t{einfo} messages are not, for
     example.
 \item[ewarn] Displays a warning message. Must not go to stdout.
+\item[eqawarn] \featurelabel{eqawarn} Display a QA warning message intended for ebuild developers.
+    The package manager may provide appropriate mechanisms to skip those messages for normal users.
+    Must not go to stdout. Only available in EAPIs listed in table~\ref{tab:output-commands} as
+    supporting \t{eqawarn}.
 \item[eerror] Displays an error message. Must not go to stdout.
 \item[ebegin] Displays an informational message. Should be used when beginning a possibly
     lengthy process, and followed by a call to \t{eend}.
@@ -186,13 +190,14 @@ output, using stdout as an output facility is forbidden.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
-    \begin{tabular}{ll}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Commands can output to stdout?}} \\
+      \multicolumn{1}{c}{\textbf{Commands can output to stdout?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{eqawarn}?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & Yes \\
-      7                   & No  \\
+      0, 1, 2, 3, 4, 5, 6 & Yes & No  \\
+      7                   & No  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     8b3ea676afd53d610dac29478600d1e5be2fd58f
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:39:27 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=8b3ea676

EAPI 7 has BROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 20 ++++++++++++++------
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8f7db7e..989784c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -161,6 +161,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
     No & No & No & No & Yes \\
 
+\t{BROOT} & \compactfeatureref{broot} &
+    No & No & No & No & Yes \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -431,6 +434,7 @@ EAPI 7 is EAPI 6 with the following changes:
     \featureref{trailing-slash}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
+\item \t{BROOT}, \featureref{broot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 1e34488..e121987 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -144,6 +144,13 @@ variable.
     Contains the concatenation of the paths in the \t{SYSROOT} and \t{EPREFIX} variables,
     for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed
     in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. \\
+\t{BROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{broot} The absolute path to the root directory containing build dependencies
+    satisfied by \t{BDEPEND}, typically executable build tools. This includes any applicable offset
+    prefix. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as supporting \t{BROOT}.
+    \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -256,19 +263,20 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{llllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
-      \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} &
+      \multicolumn{1}{c}{\textbf{\t{BROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  & No  \\
-      5, 6              & Yes & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     0ce5b9ac6aea99547c18bb914a92381c4f093d31
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 20:53:59 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=0ce5b9ac

EAPI 7 drops --host-root in favor of -b, -d, and -r

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  8 +++++---
 pkg-mgr-commands.tex | 30 ++++++++++++++++++++----------
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 989784c..df8ef98 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -215,8 +215,8 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{einstall} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Banned & Banned \\
 
-Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & No & Yes & Yes & Yes \\
+Query command options & \compactfeatureref{pm-query-options} &
+    None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
@@ -381,7 +381,7 @@ EAPI 5 is EAPI 4 with the following changes:
 \item \t{USE} is calculated differently, \featureref{profile-iuse-inject}.
 \item \t{find} is guaranteed to be GNU, \featureref{gnu-find}.
 \item \t{best_version} and \t{has_version} support the \t{-{}-host-root} option,
-    \featureref{host-root-option}.
+    \featureref{pm-query-options}.
 \item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}.
 \item \t{doheader} and \t{newheader} support, \featureref{doheader}.
 \item \t{new*} can read from standard input, \featureref{newfoo-stdin}.
@@ -435,6 +435,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
 \item \t{BROOT}, \featureref{broot}.
+\item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} options instead of
+    \t{-{}-host-root}, \featureref{pm-query-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 56df22d..16b3aa4 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -82,27 +82,37 @@ These commands are used to extract information about the system. Ebuilds must no
 these commands in parallel with any other package manager command. Ebuilds must not run any of
 these commands once the current phase function has returned.
 
-\featurelabel{host-root-option} In EAPIs listed in table~\ref{tab:foo-version-host-root-table} as
-supporting option \t{-{}-host-root}, this flag as the first argument will cause the query to apply
-to the host root instead of \t{ROOT}.
+\featurelabel{pm-query-options} In EAPIs listed in table~\ref{tab:pm-query-options} as supporting
+option \t{-{}-host-root}, this flag as the first argument will cause the query to apply to the
+host root. Otherwise, it applies to \t{ROOT}.
+
+In EAPIs listed in table~\ref{tab:pm-query-options} as supporting options \t{-b}, \t{-d} and \t{-r},
+these mutually exclusive flags as the first argument will cause the query to apply to locations
+targetted by \t{BDEPEND}, \t{DEPEND} and \t{RDEPEND}, respectively. When none of these options
+are given, \t{-r} is assumed.
+
 \begin{description}
 \item[has_version] Takes exactly one package dependency specification as an argument. Returns
-    true if a package matching the specification is installed in \t{ROOT}, and false otherwise.
+    true if a package matching the specification is installed, and false otherwise.
 \item[best_version] Takes exactly one package dependency specification as an argument. If a
     matching package is installed, prints the category, package name and version of the highest
     matching version; otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*_version} commands}
-    \label{tab:foo-version-host-root-table}
-    \begin{tabular}{ll}
+\begin{centertable}{Package manager query command options supported by EAPIs}
+    \label{tab:pm-query-options}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{*_version} supports \t{-{}-host-root}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{-{}-host-root}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-b}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-d}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-r}?}} \\
       \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      0, 1, 2, 3, 4     & No  & No  & No  & No  \\
+      5, 6              & Yes & No  & No  & No  \\
+      7                 & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     18b9065706905032ad2cf73c008c5b1fb6ca3a00
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 23:46:32 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=18b90657

dependencies: Provide a nice summary table for dep APIs

 dependencies.tex | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index e53cff6..696f478 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -26,6 +26,21 @@
     \end{tabular}
 \end{centertable}
 
+\begin{centertable}{Summary of other interfaces related to dependency classes}
+    \label{tab:dep-class-api}
+    \begin{tabular}{llll}
+      \toprule
+                                & \t{BDEPEND}     & \t{DEPEND}         & \t{RDEPEND}, \t{PDEPEND} \\
+      \midrule
+      Binary compatible with    & \t{CBUILD}      & \t{CHOST}          & \t{CHOST}         \\
+      Base unprefixed path      & \t{/}           & \t{\$\{SYSROOT\}}  & \t{\$\{ROOT\}}    \\
+      Relevant offset-prefix    & \t{\$\{BROOT\}} & \t{\$\{EPREFIX\}}  & \t{\$\{EPREFIX\}} \\
+      Path combined with prefix & \t{\$\{BROOT\}} & \t{\$\{ESYSROOT\}} & \t{\$\{EROOT\}}   \\
+      PM query command option   & \t{-b}          & \t{-d}             & \t{-r}            \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 There are three classes of dependencies supported by ebuilds:
 
 \begin{compactitem}
@@ -65,7 +80,8 @@ as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
 \end{centertable}
 
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
-a particular phase function is executed.
+a particular phase function is executed. Table~\ref{tab:dep-class-api} summarises additional
+interfaces related to the dependency classes.
 
 In addition, \t{SRC_URI}, \t{HOMEPAGE}, \t{RESTRICT}, \t{PROPERTIES}, \t{LICENSE} and
 \t{REQUIRED_USE} use dependency-style specifications to specify their values.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     872cc8e4bdf7a2eb937c8969e875b03b14e5a313
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 10 13:51:41 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=872cc8e4

EAPI 7 has ENV_UNSET.

Thanks to mgorny for providing the initial wording.

Bug: https://bugs.gentoo.org/499288

 eapi-differences.tex  |  4 ++++
 ebuild-env-vars.tex   |  2 ++
 profile-variables.tex | 23 +++++++++++++++++++++++
 3 files changed, 29 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index df8ef98..d738efe 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -179,6 +179,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{MERGE_TYPE} & \compactfeatureref{merge-type} &
     No & Yes & Yes & Yes & Yes \\
 
+\t{ENV_UNSET} & \compactfeatureref{env-unset} &
+    No & No & No & No & Yes \\
+
 Sane locale settings & \compactfeatureref{locale-settings} &
     Undefined & Undefined & Undefined & Yes & Yes \\
 
@@ -437,6 +440,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{BROOT}, \featureref{broot}.
 \item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} options instead of
     \t{-{}-host-root}, \featureref{pm-query-options}.
+\item \t{ENV_UNSET}, \featureref{env-unset}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e121987..c9ebf9b 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -330,6 +330,8 @@ package manager specific directories.
 
 \t{GZIP}, \t{BZIP}, \t{BZIP2}, \t{CDPATH}, \t{GREP_OPTIONS}, \t{GREP_COLOR} and \t{GLOBIGNORE}
 must not be set.
+\featurelabel{env-unset} In addition, any variable whose name appears in the \t{ENV_UNSET} variable
+must be unset, for EAPIs listed in table~\ref{tab:profile-env-unset} as supporting \t{ENV_UNSET}.
 
 \featurelabel{locale-settings} The package manager must ensure that the \t{LC_CTYPE} and
 \t{LC_COLLATE} locale categories are equivalent to the POSIX locale, as far as characters in the

diff --git a/profile-variables.tex b/profile-variables.tex
index 309f9e9..6cd770c 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -29,6 +29,13 @@ incrementally; otherwise, the following variables may or may not be treated incr
 \item \t{USE_EXPAND_UNPREFIXED}
 \end{compactitem}
 
+If the package manager supports any EAPI listed in table~\ref{tab:profile-env-unset} as using
+\t{ENV_UNSET}, the following variable must also be treated incrementally; otherwise, it may or
+may not be treated incrementally:
+\begin{compactitem}
+\item \t{ENV_UNSET}
+\end{compactitem}
+
 Other variables, except where they affect only package-manager-specific functionality (such as
 Portage's \t{FEATURES} variable), must not be treated incrementally---later definitions shall
 completely override those in parent profiles.
@@ -47,6 +54,20 @@ completely override those in parent profiles.
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Profile-defined unsetting of variables in EAPIs}
+    \label{tab:profile-env-unset}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{ENV_UNSET}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Specific variables and their meanings}
 The following variables have specific meanings when set in profiles.
 \begin{description}
@@ -69,6 +90,8 @@ The following variables have specific meanings when set in profiles.
     displaying uninteresting or unhelpful information to an end user.
 \item[USE_EXPAND_IMPLICIT, IUSE_IMPLICIT] Used to inject implicit values into \t{IUSE}\@. See
     section~\ref{sec:use-iuse-handling} for details.
+\item[ENV_UNSET] Contains a whitespace-delimited list of variables that the package manager shall
+    unset. See section~\ref{sec:ebuild-env-vars} for details.
 \end{description}
 
 In addition, for EAPIs listed in table~\ref{tab:profile-iuse-injection-table} as supporting profile


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     6c4a2260413acf81287324697379dfbe335a6518
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 17:44:06 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=6c4a2260

EAPI 7 has sandbox directory removal functions.

Bug: https://bugs.gentoo.org/630422

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 29 +++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7bddf41..96e0c0c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -230,6 +230,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{libopts} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
+Sandbox \t{rm*} commands & \compactfeatureref{sandbox-rm} &
+    No & No & No & No & Yes \\
+
 Query command options & \compactfeatureref{pm-query-options} &
     None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -457,6 +460,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{nonfatal} is both a shell function and an external command, \featureref{nonfatal}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
+\item Sandbox path removal commands, \featureref{sandbox-rm}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ea002f2..2d23075 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -87,6 +87,35 @@ argument. Ebuilds must not run any of these commands once the current phase func
 \item[adddeny] Add a directory to the deny list.
 \end{description}
 
+\featurelabel{sandbox-rm} Additionally, in EAPIs listed in table~\ref{tab:sandbox-command-table}
+as supporting the respective commands, the following commands are available:
+\begin{description}
+\item[rmread] Remove a directory from the permitted read list.
+\item[rmwrite] Remove a directory from the permitted write list.
+\item[rmpredict] Remove a directory from the predict list.
+\item[rmdeny] Remove a directory from the deny list.
+\end{description}
+
+All of these commands match paths exactly. Removing a directory that is not present on the list
+is silently ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Additional sandbox commands in EAPIs}
+    \label{tab:sandbox-command-table}
+    \begin{tabular}{lllll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{rmread}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmwrite}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmpredict}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmdeny}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+      7                   & Yes & Yes & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Package manager query commands}
 These commands are used to extract information about the system. Ebuilds must not run any of
 these commands in parallel with any other package manager command. Ebuilds must not run any of


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     a7baf55ca138f5f3fae7239d03c90ab88151bc41
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 17:50:56 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=a7baf55c

EAPI 7 requires GNU patch 2.7.

Bug: https://bugs.gentoo.org/593786

 commands.tex         | 13 ++++++++-----
 eapi-differences.tex |  4 ++++
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/commands.tex b/commands.tex
index 86b4232..5ba9626 100644
--- a/commands.tex
+++ b/commands.tex
@@ -26,7 +26,8 @@ The following commands must always be available in the ebuild environment:
     page~\pageref{tab:bash-version}.
 \item \t{sed} must be available, and must support all forms of invocations valid for GNU sed
     version 4 or later.
-\item \t{patch} must be available, and must support all inputs valid for GNU patch.
+\item \featurelabel{gnu-patch} \t{patch} must be available, and must support all inputs valid
+    for GNU patch, version as listed in table~\ref{tab:system-commands-table}.
 \item \featurelabel{gnu-find} \t{find} and \t{xargs} must be available, and must support all forms
     of invocations valid for GNU findutils version 4.4 or later. Only for EAPIs listed in
     table~\ref{tab:system-commands-table} as requiring GNU find.
@@ -35,13 +36,15 @@ The following commands must always be available in the ebuild environment:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
-    \begin{tabular}{ll}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{GNU \t{find}?}} \\
+      \multicolumn{1}{c}{\textbf{GNU \t{find}?}} &
+      \multicolumn{1}{c}{\textbf{GNU \t{patch} version}} \\
       \midrule
-      0, 1, 2, 3, 4     & Undefined \\
-      5, 6, 7           & Yes       \\
+      0, 1, 2, 3, 4     & Undefined & Any \\
+      5, 6              & Yes       & Any \\
+      7                 & Yes       & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d738efe..47c6950 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -200,6 +200,9 @@ Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
     Yes & Yes & Yes & Yes & No \\
 
+GNU \t{patch} version & \compactfeatureref{gnu-patch} &
+    Any & Any & Any & Any & 2.7 \\
+
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
     Undefined & Undefined & Yes & Yes & Yes \\
 
@@ -441,6 +444,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} options instead of
     \t{-{}-host-root}, \featureref{pm-query-options}.
 \item \t{ENV_UNSET}, \featureref{env-unset}.
+\item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     8fbdd07ea357df6ebf05e9b4190a05beeb0c7ebd
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:24:10 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=8fbdd07e

EAPI 7 provides command fallback for nonfatal.

Bug: https://bugs.gentoo.org/622894

 eapi-differences.tex |  3 ++-
 pkg-mgr-commands.tex | 16 +++++++++++-----
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 47c6950..f47a8c6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -210,7 +210,7 @@ Most utilities die & \compactfeatureref{die-on-failure} &
     No & Yes & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Function / external \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
     Yes & Banned & Banned & Banned & Banned \\
@@ -445,6 +445,7 @@ EAPI 7 is EAPI 6 with the following changes:
     \t{-{}-host-root}, \featureref{pm-query-options}.
 \item \t{ENV_UNSET}, \featureref{env-unset}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
+\item \t{nonfatal} is both a shell function and an external command, \featureref{nonfatal}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 16b3aa4..2312f81 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -22,6 +22,10 @@ The following commands affect this behaviour:
     the build process due to a failure, instead a non-zero exit status shall be returned. Only in
     EAPIs listed in table~\ref{tab:commands-die-table} as supporting \t{nonfatal}.
 
+    In EAPIs listed in table~\ref{tab:commands-die-table} as having \t{nonfatal} defined both
+    as a shell function and as an external command, the package manager must provide both
+    implementations to account for calling directly in ebuild scope or through \t{xargs}.
+
     Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when called with the \t{-n}
     option and in EAPIs supporting this option, see table~\ref{tab:nonfatal-die}.
 \end{description}
@@ -29,14 +33,16 @@ The following commands affect this behaviour:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Command failure behaviour}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
+      \multicolumn{1}{P{8em}}{\textbf{Command failure behaviour}} &
+      \multicolumn{1}{P{5em}}{\textbf{Supports \t{nonfatal}?}} &
+      \multicolumn{1}{P{12em}}{\textbf{\t{nonfatal} is both a function and an external command?}} \\
       \midrule
-      0, 1, 2, 3        & Non-zero exit & No  \\
-      4, 5, 6, 7        & Aborts        & Yes \\
+      0, 1, 2, 3        & Non-zero exit & No  & n/a \\
+      4, 5, 6           & Aborts        & Yes & No  \\
+      7                 & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     2ee8c377bc18dc5a31020ab7f0f26e4258ecd581
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 15 17:20:13 2015 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=2ee8c377

EAPI 7: dohtml banned.

Bug: https://bugs.gentoo.org/520546

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 16 ++++++++++------
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f47a8c6..12ece88 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -221,6 +221,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{einstall} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Banned & Banned \\
 
+\t{dohtml} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
     None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -446,6 +449,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ENV_UNSET}, \featureref{env-unset}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{nonfatal} is both a shell function and an external command, \featureref{nonfatal}.
+\item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 2312f81..ac3d460 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -56,18 +56,20 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{3}{c}{\textbf{Command banned?}} \\
+      \multicolumn{4}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
       \multicolumn{1}{c}{\textbf{\t{dosed}}} &
-      \multicolumn{1}{c}{\textbf{\t{einstall}}} \\
+      \multicolumn{1}{c}{\textbf{\t{einstall}}} &
+      \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  \\
-      4, 5              & Yes & Yes & No  \\
-      6, 7              & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  & No  \\
+      6                 & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -453,6 +455,8 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     offset-prefix.
 \end{description}
 
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
     Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
 
     It is undefined whether a failure shall occur if \t{-r} is not specified and a directory is


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     43cca722f6a71369009324a8f99f032fb00c1eb9
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:19:16 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=43cca722

EAPI 7 has BDEPEND

Bug: https://bugs.gentoo.org/317337

 dependencies.tex     | 33 ++++++++++++++++++++++++++++++---
 eapi-differences.tex |  4 ++++
 ebuild-vars.tex      |  1 +
 eclasses.tex         | 11 ++++++-----
 metadata-cache.tex   |  3 ++-
 5 files changed, 43 insertions(+), 9 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 51c67a4..e53cff6 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -15,7 +15,7 @@
           None (ebuilds can rely only on the packages in the system~set) \\
       \addlinespace
       \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, \t{src_test},
-          \t{src_install} & \t{DEPEND} \\
+          \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
       \addlinespace
       \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
           \t{RDEPEND} (unless the particular dependency results in a circular dependency, in which
@@ -38,6 +38,32 @@ There are three classes of dependencies supported by ebuilds:
     the package manager finishes the batch of installs.
 \end{compactitem}
 
+\featurelabel{bdepend} Additionally, in EAPIs listed in table~\ref{tab:depend-table}
+as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
+
+\begin{compactitem}
+\item \t{BDEPEND} build dependencies that are binary compatible with the native build system
+    (\t{CBUILD}). The ebuild is allowed to call binary executables installed by this kind of
+    dependency.
+    \item \t{DEPEND} build dependencies that are binary compatible with the system being built
+    (\t{CHOST}). The ebuild must not execute binary executables installed by this kind of
+    dependency.
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting additional dependency types}
+    \label{tab:depend-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
 a particular phase function is executed.
 
@@ -51,7 +77,8 @@ The following elements are recognised in at least one class of specification. Al
 be surrounded on both sides by whitespace, except at the start and end of the string.
 
 \begin{compactitem}
-\item A package dependency specification. Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}.
+\item A package dependency specification. Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND},
+    \t{PDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC_URI} and \t{HOMEPAGE}\@.
     In EAPIs listed in table~\ref{tab:uri-arrows-table} as supporting \t{SRC_URI} arrows, may
     optionally be followed by whitespace, then \t{->}, then whitespace, then a simple filename when
@@ -69,7 +96,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     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)+ ')'}.
-    Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
+    Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
 \item \featurelabel{binding-any-of} A binding-any-of group, which has the same format as the any-of
     group, but begins with the string \t{||=} instead. Permitted in \t{DEPEND}, \t{RDEPEND} in EAPIs
     listed in table~\ref{tab:dep-groups} as supporting \t{||=} groups.

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0f6371b..8f7db7e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -77,6 +77,9 @@ Bash version & \compactfeatureref{bash-version} &
 \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
     Optionally & Yes & Yes & Yes & Yes \\
 
+\t{BDEPEND} & \compactfeatureref{bdepend} &
+    No & No & No & No & Yes \\
+
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
     Yes & Yes & Yes & Yes & No \\
@@ -427,6 +430,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
+\item \t{BDEPEND}, \featureref{bdepend}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b871b3a..b873051 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -90,6 +90,7 @@ Ebuilds may define any of the following variables:
     for its value if unset and when used with an eclass. See section~\ref{sec:rdepend-depend} for
     details.
 \item[PDEPEND] See section~\ref{sec:dependencies}.
+\item[BDEPEND] See section~\ref{sec:dependencies}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/eclasses.tex b/eclasses.tex
index fc72508..c00070d 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,12 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{IUSE_RUNTIME}, \t{REQUIRED_USE}, \t{DEPEND}, \t{RDEPEND} and \t{PDEPEND} variables
-are handled specially when set by an eclass. They must be accumulated across eclasses, appending
-the value set by each eclass to the resulting value after the previous one is loaded. Then the
-eclass-defined value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is
-done after the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+The \t{IUSE}, \t{IUSE_RUNTIME}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND} and
+\t{PDEPEND} variables are handled specially when set by an eclass. They must be accumulated across
+eclasses, appending the value set by each eclass to the resulting value after the previous one is
+loaded. Then the eclass-defined value is appended to that defined by the ebuild. In the case of
+\t{RDEPEND}, this is done after the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend}
+are applied.
 
 \section{EXPORT_FUNCTIONS}
 

diff --git a/metadata-cache.tex b/metadata-cache.tex
index 38e54a4..eb0a79a 100644
--- a/metadata-cache.tex
+++ b/metadata-cache.tex
@@ -29,7 +29,8 @@ order. Other lines may be present following these; their meanings are not define
 \item Use flags that this package requires (\t{REQUIRED_USE}).
     Blank in some EAPIs; see table~\ref{tab:optional-vars-table}.
 \item Post dependencies (\t{PDEPEND})
-\item Unused; previously used for old-style virtual \t{PROVIDE}.
+\item Build-time dependencies for \t{CBUILD} host (\t{BDEPEND}).
+    Blank in some EAPIs; see table~\ref{tab:depend-table}.
 \item The ebuild API version to which this package conforms (\t{EAPI})
 \item Properties (\t{PROPERTIES}). In some EAPIs, may optionally be blank, regardless of ebuild
     metadata; see table~\ref{tab:optional-vars-table}.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     1752fe99b83269bf7a6e7c3b19d68a039d25840a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:02:49 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=1752fe99

EAPI 7 bans dolib and libopts.

Bug: https://bugs.gentoo.org/630416

 eapi-differences.tex |  7 +++++++
 pkg-mgr-commands.tex | 22 ++++++++++++++--------
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 12ece88..7bddf41 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -224,6 +224,12 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
+\t{dolib} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
+\t{libopts} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
     None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -450,6 +456,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{nonfatal} is both a shell function and an external command, \featureref{nonfatal}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
+\item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 3ce2611..ea002f2 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -56,20 +56,22 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{4}{c}{\textbf{Command banned?}} \\
+      \multicolumn{6}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
       \multicolumn{1}{c}{\textbf{\t{dosed}}} &
       \multicolumn{1}{c}{\textbf{\t{einstall}}} &
-      \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
+      \multicolumn{1}{c}{\textbf{\t{dohtml}}} &
+      \multicolumn{1}{c}{\textbf{\t{dolib}}} &
+      \multicolumn{1}{c}{\textbf{\t{libopts}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4, 5              & Yes & Yes & No  & No  \\
-      6                 & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  & No  & No  & No  \\
+      6                 & Yes & Yes & Yes & No  & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -485,7 +487,9 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 \item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
 \item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
-    the \t{install} options set by the most recent \t{libopts} call.
+    the \t{install} options set by the most recent \t{libopts} call. In EAPIs listed
+    in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}
@@ -681,6 +685,8 @@ has returned.
 \item[exeopts] Sets the options passed by \t{doexe} et al.\ to the \t{install} command.
 
 \item[libopts] Sets the options passed by \t{dolib} et al.\ to the \t{install} command.
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as
+    per section~\ref{sec:banned-commands}.
 
 \end{description}
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     a4b50120a051eb5e948f1a1ff60af53f91967e0b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:48:46 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=a4b50120

pkg-mgr-commands: Redefine dolib* in terms of libdir.a

Since EAPI 7 removes dolib, it would be a bad fit to describe the two
other commands on top of one that is removed. Instead, start by defining
libdir.a and then define the two other commands on top of it.

This also clarifies that dolib.a & dolib.so do not respect libopts,
while the old wording was not clear on that. However, this is at least
how it was implemented in Portage (with dolib.a and dolib.so overriding
libopts completely).

 pkg-mgr-commands.tex | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ac3d460..3ce2611 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -477,15 +477,15 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     symlink is encountered. Failure behaviour is EAPI dependent as per
     section~\ref{sec:failure-behaviour}.
 
-\item[dolib] For each argument, installs it into the appropriate library subdirectory under
-    \t{DESTTREE}, as determined by Algorithm~\ref{alg:ebuild-libdir}. Files are installed by default
-    with file mode \t{0644}, or with the \t{install} options set by the most recent \t{libopts}
-    call. Any symlinks are installed into the same directory as relative links to their original
-    target. Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
+\item[dolib.a] For each argument, installs it into the appropriate library subdirectory under
+    \t{DESTTREE}, as determined by algorithm~\ref{alg:ebuild-libdir}. Files are installed with file
+    mode \t{0644}. Any symlinks are installed into the same directory as relative links to their
+    original target. Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
 
-\item[dolib.a] As for \t{dolib} except each file is installed with mode \t{0644}.
+\item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
-\item[dolib.so] As for \t{dolib} except each file is installed with mode \t{0755}.
+\item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
+    the \t{install} options set by the most recent \t{libopts} call.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     bc3575df2a027e714b2a11365a5f5dcedd7eb7b7
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 14:10:20 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=bc3575df

EAPI 7 disallows stdout output of output functions

Bug: https://bugs.gentoo.org/483240

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 22 ++++++++++++++++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 96e0c0c..d7153a8 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -236,6 +236,9 @@ Sandbox \t{rm*} commands & \compactfeatureref{sandbox-rm} &
 Query command options & \compactfeatureref{pm-query-options} &
     None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
+Output commands use stdout & \compactfeatureref{output-no-stdout} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
 
@@ -461,6 +464,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item Sandbox path removal commands, \featureref{sandbox-rm}.
+\item Output commands no longer use stdout, \featureref{output-no-stdout}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 2d23075..4f74fc4 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -161,8 +161,12 @@ These commands display messages to the user. Unless otherwise stated, the entire
 used as a message, with backslash-escaped characters interpreted as for the \t{echo -e} command of
 bash, notably \t{\textbackslash t} for a horizontal tab, \t{\textbackslash n} for a new line, and
 \t{\textbackslash\textbackslash} for a literal backslash. Ebuilds must not run any of these commands
-once the current phase function has returned. Unless otherwise noted, output may be sent to stdout,
-stderr or some other appropriate facility.
+once the current phase function has returned.
+
+\featurelabel{output-no-stdout} Unless otherwise noted, output may be sent to stderr or some other
+appropriate facility. In EAPIs listed in table~\ref{tab:output-commands} as not allowing stdout
+output, using stdout as an output facility is forbidden.
+
 \begin{description}
 \item[einfo] Displays an informational message.
 \item[einfon] Displays an informational message without a trailing newline.
@@ -179,6 +183,20 @@ stderr or some other appropriate facility.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Output commands for EAPIs}
+    \label{tab:output-commands}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Commands can output to stdout?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & Yes \\
+      7                   & No  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Error commands}
 These commands are used when an error is detected that will prevent the build process from
 completing. Ebuilds must not run any of these commands once the current phase function has returned.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     e2c4c085730ea4a31af288cbb6578f8da1a426a4
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov  5 16:08:23 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e2c4c085

pkg-mgr-commands.tex: Join docompress and dostrip sections.

 dependencies.tex     |   4 +-
 pkg-mgr-commands.tex | 130 +++++++++++++++++++--------------------------------
 2 files changed, 49 insertions(+), 85 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index deede34..7ae119b 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -507,8 +507,8 @@ The following tokens are permitted inside \t{RESTRICT}:
 \item[fetch] The package's \t{SRC_URI} entries may not be downloaded automatically. If
     entries are not available, \t{pkg_nofetch} is called. Implies \t{mirror}.
 \item[strip] No stripping of debug symbols from files to be installed may be performed. In EAPIs
-    listed in table~\ref{tab:dostrip} as supporting controllable stripping, this behaviour may be
-    altered by the \t{dostrip} command.
+    listed in table~\ref{tab:staging-area-commands} as supporting controllable stripping, this
+    behaviour may be altered by the \t{dostrip} command.
 \item[userpriv] The package manager may not drop root privileges when building the package.
 \item[test] The \t{src_test} phase must not be run.
 \end{description}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 0e4cd60..5ce9569 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -764,27 +764,25 @@ has returned.
 
 \end{description}
 
-\subsection{Commands affecting install compression}
+\subsection{Commands controlling manipulation of files in the staging area}
+These commands are used to control optional manipulations that the package manager may perform on
+files in the staging directory \t{ED}, like compressing files or stripping symbols from object
+files.
 
-\featurelabel{docompress} In EAPIs listed in table~\ref{tab:compression-table} as supporting
-controllable compression, the package manager may optionally compress a subset of the files under
-the \t{ED} directory. To control which directories may or may not be compressed, the package manager
-shall maintain two lists:
-
-\begin{compactitem}
-\item An inclusion list, which initially contains \t{/usr/share/doc}, \t{/usr/share/info} and
-    \t{/usr/share/man}.
-\item An exclusion list, which initially contains \t{/usr/share/doc/\$\{PF\}/html}.
-\end{compactitem}
+For each of the operations mentioned below, the package manager shall maintain an inclusion list
+and an exclusion list, in order to control which directories and files the operation may or may not
+be performed upon. The initial contents of the two lists is specified below for each of the
+commands, respectively.
 
-The optional compression shall be carried out after \t{src_install} has completed, and before the
-execution of any subsequent phase function. For each item in the inclusion list, pretend it has the
-value of the \t{ED} variable prepended, then:
+Any of these operations shall be carried out after \t{src_install} has completed, and before the
+execution of any subsequent phase function. For each item in the inclusion list, pretend it has
+the value of the \t{ED} variable prepended, then:
 
 \begin{compactitem}
 \item If it is a directory, act as if every file or directory immediately under this directory
     were in the inclusion list.
-\item If the item is a file, it may be compressed unless it has been excluded as described below.
+\item If the item is a file, the operation may be performed on it, unless it has been excluded as
+    described below.
 \item If the item does not exist, it is ignored.
 \end{compactitem}
 
@@ -794,96 +792,62 @@ pretend it has the value of the \t{ED} variable prepended, then:
 \begin{compactitem}
 \item If it is a directory, act as if every file or directory immediately under this directory
     were in the exclusion list.
-\item If the item is a file, it shall not be compressed.
+\item If the item is a file, the operation shall not be performed on it.
 \item If the item does not exist, it is ignored.
 \end{compactitem}
 
-The package manager shall take appropriate steps to ensure that its compression mechanisms behave
-sensibly even if an item is listed in the inclusion list multiple times, if an item is a symlink,
-or if a file is already compressed.
-
-The following commands may be used in \t{src_install} to alter these lists. It is an error to call
-any of these functions from any other phase.
-
-\begin{description}
-\item[docompress] If the first argument is \t{-x}, add each of its subsequent arguments to the
-exclusion list. Otherwise, add each argument to the inclusion list. Only available in EAPIs listed
-in table~\ref{tab:compression-table} as supporting \t{docompress}.
-\end{description}
-
-\ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting controllable compression}
-    \label{tab:compression-table}
-    \begin{tabular}{lll}
-      \toprule
-      \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports controllable compression?}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{docompress}?}} \\
-      \midrule
-      0, 1, 2, 3        & No  & No  \\
-      4, 5, 6, 7        & Yes & Yes \\
-      \bottomrule
-    \end{tabular}
-\end{centertable}
-
-\subsection{Commands affecting stripping of symbols}
+The package manager shall take appropriate steps to ensure that any operations that it performs on
+files in the staging area behave sensibly even if an item is listed in the inclusion list multiple
+times or if an item is a symlink.
 
-\featurelabel{dostrip} In EAPIs listed in table~\ref{tab:dostrip} as supporting controllable
-stripping of symbols, the package manager may strip a subset of the files under the \t{ED}
-directory. To control which files may or may not be stripped, the package manager shall maintain
-two lists:
+\featurelabel{docompress} In EAPIs listed in table~\ref{tab:staging-area-commands} as supporting
+controllable compression, the package manager may optionally compress a subset of the files under
+the \t{ED} directory. The package manager shall ensure that its compression mechanisms behave
+sensibly even if a file is already compressed. For compression, the initial values of the two lists
+are as follows:
 
 \begin{compactitem}
-\item An inclusion list. If the \t{RESTRICT} variable described in section~\ref{sec:restrict}
-    enables a \t{strip} token, this list is initially empty; otherwise it initially contains \t{/}
-    (the root path).
-\item An exclusion list, which initially is empty.
+\item The inclusion list contains \t{/usr/share/doc}, \t{/usr/share/info} and \t{/usr/share/man}.
+\item The exclusion list contains \t{/usr/share/doc/\$\{PF\}/html}.
 \end{compactitem}
 
-Stripping of symbols shall be carried out after \t{src_install} has completed, and before the
-execution of any subsequent phase function. For each item in the inclusion list, pretend it has the
-value of the \t{ED} variable prepended, then:
+\featurelabel{dostrip} In EAPIs listed in table~\ref{tab:staging-area-commands} as supporting
+controllable stripping of symbols, the package manager may strip a subset of the files under the
+\t{ED} directory. For stripping of symbols, the initial values of the two lists are as follows:
 
 \begin{compactitem}
-\item If it is a directory, act as if every file or directory immediately under this directory
-    were in the inclusion list.
-\item If the item is a file, it may be stripped unless it has been excluded as described below.
-\item If the item does not exist, it is ignored.
+\item If the \t{RESTRICT} variable described in section~\ref{sec:restrict} enables a \t{strip}
+    token, the inclusion list is empty; otherwise it contains \t{/} (the root path).
+\item The exclusion list is empty.
 \end{compactitem}
 
-Whether an item is to be excluded is determined as follows: For each item in the exclusion list,
-pretend it has the value of the \t{ED} variable prepended, then:
-
-\begin{compactitem}
-\item If it is a directory, act as if every file or directory immediately under this directory
-    were in the exclusion list.
-\item If the item is a file, it shall not be stripped.
-\item If the item does not exist, it is ignored.
-\end{compactitem}
-
-The package manager shall take appropriate steps to ensure that its stripping mechanisms behave
-sensibly even if an item is listed in the inclusion list multiple times or if an item is a symlink.
-
-The following command may be used in \t{src_install} to alter these lists. It is an error to call
-this function from any other phase.
+The following commands may be used in \t{src_install} to alter these lists. It is an error to call
+any of these functions from any other phase.
 
 \begin{description}
+\item[docompress] If the first argument is \t{-x}, add each of its subsequent arguments to the
+    exclusion list for compression. Otherwise, add each argument to the respective inclusion list.
+    Only available in EAPIs listed in table~\ref{tab:staging-area-commands} as supporting
+    \t{docompress}.
+
 \item[dostrip] If the first argument is \t{-x}, add each of its subsequent arguments to the
-    exclusion list. Otherwise, add each argument to the inclusion list. Only available in EAPIs
-    listed in table~\ref{tab:dostrip} as supporting \t{dostrip}.
+    exclusion list for stripping of symbols. Otherwise, add each argument to the respective
+    inclusion list. Only available in EAPIs listed in table~\ref{tab:staging-area-commands} as
+    supporting \t{dostrip}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting controllable stripping}
-    \label{tab:dostrip}
+\begin{centertable}{Commands controlling manipulation of files in the staging area in EAPIs}
+    \label{tab:staging-area-commands}
     \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports controllable stripping?}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{dostrip}?}} \\
+      \multicolumn{1}{P{13.5em}}{\textbf{Supports controllable compression and \t{docompress}?}} &
+      \multicolumn{1}{P{10.5em}}{\textbf{Supports controllable stripping and \t{dostrip}?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & No  & No  \\
-      7                   & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  \\
+      4, 5, 6           & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     9ae037759543f74ba80b44f97475e48fc515fb99
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 31 18:19:03 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=9ae03775

Trim the width of several tables.

tab:optional-vars-table: Reduce column separation very slightly
(by 0.1pt) to make the width of the table fit.

tab:added-env-vars-table was also too wide, which is fixed by reducing
the width of the paragraph type columns.

tab:econf-options-table: Change columns with overlong headers to
paragraph type, in order to allow line breaks.

 ebuild-env-vars.tex  | 8 ++++----
 ebuild-vars.tex      | 1 +
 pkg-mgr-commands.tex | 4 ++--
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index c9ebf9b..7836bd9 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -266,10 +266,10 @@ variable.
     \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+      \multicolumn{1}{P{3.25em}}{\textbf{\t{MERGE_TYPE}?}} &
+      \multicolumn{1}{P{5.25em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
+      \multicolumn{1}{P{5.75em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
+      \multicolumn{1}{P{5.75em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
       \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} &
       \multicolumn{1}{c}{\textbf{\t{BROOT}?}} \\
       \midrule

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b873051..5169e0a 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -110,6 +110,7 @@ Ebuilds may define any of the following variables:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
+    \addtolength{\tabcolsep}{-0.1pt} % table is very slightly too wide
     \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index bb244c8..a5597fc 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -356,8 +356,8 @@ current phase function has returned.
         \begin{tabular}{llllll}
           \toprule
           \multicolumn{1}{c}{\textbf{EAPI}} &
-          \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
-          \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
+          \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
+          \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
           \multicolumn{1}{c}{\textbf{-{}-docdir}} &
           \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
           \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     126916b74c85e600749fa8342afbf38f5ade0611
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Nov  7 17:21:09 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=126916b7

Add chewi to acknowledgements.

 introduction.tex | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/introduction.tex b/introduction.tex
index 5990f86..afbe708 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -62,9 +62,10 @@ applicable to tools or other applications that interact with ebuilds or ebuild r
 Thanks to Mike Kelly (package manager provided utilities, section~\ref{sec:pkg-mgr-commands}),
 Danny van Dyk (ebuild functions, section~\ref{sec:ebuild-functions}), David Leverton (various
 sections), Petteri Räty (environment state, section~\ref{sec:ebuild-env-state}), Michał Górny
-(various sections), Andreas K. Hüttel (stable use masking, section~\ref{sec:use-masking}) and
-Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) for contributions. Thanks also to
-Mike Frysinger and Brian Harring for proof-reading and suggestions for fixes and/or clarification.
+(various sections), Andreas K. Hüttel (stable use masking, section~\ref{sec:use-masking}),
+Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) and James Le Cuirot (build dependencies,
+section~\ref{sec:ebuild-env-vars}) for contributions. Thanks also to Mike Frysinger and
+Brian Harring for proof-reading and suggestions for fixes and/or clarification.
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     f162015a61954fc60e07453912b7a5136eb1ceac
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:33:22 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f162015a

EAPI 7 allows die in subshell.

Bug: https://bugs.gentoo.org/465008

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 25 ++++++++++++++++---------
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 97ca9ad..ddf480e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -245,6 +245,9 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
 
+\t{die} in subshell & \compactfeatureref{subshell-die} &
+    No & No & No & No & Yes \\
+
 \t{eapply} & \compactfeatureref{eapply} &
     No & No & No & Yes & Yes \\
 
@@ -469,6 +472,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Sandbox path removal commands, \featureref{sandbox-rm}.
 \item Output commands no longer use stdout, \featureref{output-no-stdout}.
 \item \t{eqawarn}, \featureref{eqawarn}.
+\item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 9820340..91c19b6 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -27,7 +27,7 @@ The following commands affect this behaviour:
     implementations to account for calling directly in ebuild scope or through \t{xargs}.
 
     Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when called with the \t{-n}
-    option and in EAPIs supporting this option, see table~\ref{tab:nonfatal-die}.
+    option and in EAPIs supporting this option, see table~\ref{tab:die-properties}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
@@ -209,23 +209,30 @@ completing. Ebuilds must not run any of these commands once the current phase fu
 \item[die] \featurelabel{nonfatal-die} If called under the \t{nonfatal} command (as per
     section~\ref{sec:failure-behaviour}) and with \t{-n} as its first parameter, displays a failure
     message provided in its following argument and then returns a non-zero exit status. Only in
-    EAPIs listed in table~\ref{tab:nonfatal-die} as supporting option~\t{-n}. Otherwise, displays
+    EAPIs listed in table~\ref{tab:die-properties} as supporting option~\t{-n}. Otherwise, displays
     a failure message provided in its first and only argument, and then aborts the build process.
-    \t{die} is \e{not} guaranteed to work correctly if called from a subshell environment.
+
+    \featurelabel{subshell-die} In EAPIs listed in table~\ref{tab:die-properties} as not providing
+    subshell support, \t{die} is \e{not} guaranteed to work correctly if called from a subshell
+    environment.
 \item[assert] Checks the value of the shell's pipe status variable, and if any component is non-zero
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} commands}
-    \label{tab:nonfatal-die}
-    \begin{tabular}{ll}
+\begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
+    \label{tab:die-properties}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
+      \multicolumn{2}{c}{\textbf{\t{die} and \t{assert}}} \\
+      &
+      \multicolumn{1}{c}{\textbf{support \t{-n}?}} &
+      \multicolumn{1}{c}{\textbf{work in subshell?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5  & No  \\
-      6, 7              & Yes \\
+      0, 1, 2, 3, 4, 5  & No  & No  \\
+      6                 & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     956e8c51addcf872ecbb9da2a75e60d5c86da682
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Oct 29 09:30:43 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=956e8c51

EAPI 7 has controllable stripping and dostrip.

Bug: https://bugs.gentoo.org/203891

 dependencies.tex     |  4 +++-
 eapi-differences.tex |  7 ++++++
 pkg-mgr-commands.tex | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 696f478..deede34 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -506,7 +506,9 @@ The following tokens are permitted inside \t{RESTRICT}:
     be checked when fetching.
 \item[fetch] The package's \t{SRC_URI} entries may not be downloaded automatically. If
     entries are not available, \t{pkg_nofetch} is called. Implies \t{mirror}.
-\item[strip] No stripping of debug symbols from files to be installed may be performed.
+\item[strip] No stripping of debug symbols from files to be installed may be performed. In EAPIs
+    listed in table~\ref{tab:dostrip} as supporting controllable stripping, this behaviour may be
+    altered by the \t{dostrip} command.
 \item[userpriv] The package manager may not drop root privileges when building the package.
 \item[test] The \t{src_test} phase must not be run.
 \end{description}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 5fb2568..6a2cab7 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -287,6 +287,12 @@ Controllable compression & \compactfeatureref{docompress} &
 \t{docompress} & \compactfeatureref{docompress} &
     No & Yes & Yes & Yes & Yes \\
 
+Controllable stripping & \compactfeatureref{dostrip} &
+    No & No & No & No & Yes \\
+
+\t{dostrip} & \compactfeatureref{dostrip} &
+    No & No & No & No & Yes \\
+
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
     No & Yes & Yes & Yes & Yes \\
 
@@ -477,6 +483,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{eqawarn}, \featureref{eqawarn}.
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
+\item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c02f136..0e4cd60 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -826,6 +826,68 @@ in table~\ref{tab:compression-table} as supporting \t{docompress}.
     \end{tabular}
 \end{centertable}
 
+\subsection{Commands affecting stripping of symbols}
+
+\featurelabel{dostrip} In EAPIs listed in table~\ref{tab:dostrip} as supporting controllable
+stripping of symbols, the package manager may strip a subset of the files under the \t{ED}
+directory. To control which files may or may not be stripped, the package manager shall maintain
+two lists:
+
+\begin{compactitem}
+\item An inclusion list. If the \t{RESTRICT} variable described in section~\ref{sec:restrict}
+    enables a \t{strip} token, this list is initially empty; otherwise it initially contains \t{/}
+    (the root path).
+\item An exclusion list, which initially is empty.
+\end{compactitem}
+
+Stripping of symbols shall be carried out after \t{src_install} has completed, and before the
+execution of any subsequent phase function. For each item in the inclusion list, pretend it has the
+value of the \t{ED} variable prepended, then:
+
+\begin{compactitem}
+\item If it is a directory, act as if every file or directory immediately under this directory
+    were in the inclusion list.
+\item If the item is a file, it may be stripped unless it has been excluded as described below.
+\item If the item does not exist, it is ignored.
+\end{compactitem}
+
+Whether an item is to be excluded is determined as follows: For each item in the exclusion list,
+pretend it has the value of the \t{ED} variable prepended, then:
+
+\begin{compactitem}
+\item If it is a directory, act as if every file or directory immediately under this directory
+    were in the exclusion list.
+\item If the item is a file, it shall not be stripped.
+\item If the item does not exist, it is ignored.
+\end{compactitem}
+
+The package manager shall take appropriate steps to ensure that its stripping mechanisms behave
+sensibly even if an item is listed in the inclusion list multiple times or if an item is a symlink.
+
+The following command may be used in \t{src_install} to alter these lists. It is an error to call
+this function from any other phase.
+
+\begin{description}
+\item[dostrip] If the first argument is \t{-x}, add each of its subsequent arguments to the
+    exclusion list. Otherwise, add each argument to the inclusion list. Only available in EAPIs
+    listed in table~\ref{tab:dostrip} as supporting \t{dostrip}.
+\end{description}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting controllable stripping}
+    \label{tab:dostrip}
+    \begin{tabular}{lll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports controllable stripping?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{dostrip}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  \\
+      7                   & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{USE list functions}
 These functions provide behaviour based upon set or unset use flags. Ebuilds must not run any of
 these commands once the current phase function has returned. It is an error if an ebuild calls any


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     733350875b1559ce66cd917e380f2b27da3f2110
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 27 21:23:22 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=73335087

EAPI 7 has version manipulation and comparison functions

Bug: https://bugs.gentoo.org/482170

 eapi-differences.tex |  4 +++
 pkg-mgr-commands.tex | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 84 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6a2cab7..8deba55 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -302,6 +302,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{in_iuse} & \compactfeatureref{in-iuse} &
     No & No & No & Yes & Yes \\
 
+\t{ver_*} commands & \compactfeatureref{ver-commands} &
+    No & No & No & No & Yes \\
+
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
     No & No & No & Yes & Yes \\
 
@@ -484,6 +487,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
+\item Version manipulation and comparison commands, \featureref{ver-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 5ce9569..bb244c8 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -948,6 +948,86 @@ These functions check whitespace-separated lists for a particular value.
 \item[hasq] Deprecated synonym for \t{has}.
 \end{description}
 
+\subsection{Version manipulation and comparison commands}
+\featurelabel{ver-commands}
+These commands provide utilities for working with version strings. Their availability per EAPI is
+listed in table~\ref{tab:version-commands}.
+
+For the purpose of version manipulation commands, the specification provides a method for splitting
+an arbitrary version string (not necessarily conforming to section~\ref{sec:version-spec}) into
+a series of version components and version separators.
+
+A version component consists either purely of digits (\t{[0-9]+}) or purely of uppercase and
+lowercase ASCII letters (\t{[A-Za-z]+}). A version separator is either a string of any other
+characters (\t{[\textasciicircum A-Za-z0-9]}) or it occurs at the transition between a sequence
+of digits and a sequence of letters, or vice versa. In the latter case, the version separator is
+an empty string.
+
+The version string is processed left-to-right, with the successive version components being assigned
+successive indices starting with 1. The separator following a version component is assigned
+the index of the preceding version component. If the first version component is preceded by
+a non-empty string of version separator characters, this separator is assigned the index 0.
+
+The version components are presumed present if not empty. The version separators between version
+components are always presumed present, even if they are empty. The version separators preceding
+the first version component and following the last are only presumed present if they are not empty.
+
+Whenever the commands support ranges, the range is specified as a non-negative integer, optionally
+followed by a hyphen (\t{-}), which in turn is optionally followed by another non-negative integer.
+
+A single integer specifies a single component or separator index. An integer followed by a hyphen
+specifies all components or separators starting with the one at the specified index. Two integers
+separated by a hyphen specify a range of versions starting at the index specified by the first
+and ending at the second, inclusively.
+
+\begin{description}
+\item[ver_cut] Takes a range as the first argument, and optionally a version string as the second.
+    Prints a substring of the version string starting at the version component specified as start
+    of the range and ending at the version component specified as end of the range. If the version
+    string is not specified, \t{\$\{PVR\}} is used.
+
+    If the range spans outside the present version components, the missing components and separators
+    are presumed empty. In particular, the range starting at zero includes the zeroth version
+    separator if present, and the range spanning past the last version component includes the suffix
+    following it if present. A range that does not intersect with any present version components
+    yields an empty string.
+
+\item[ver_rs] Takes one or more pairs of arguments, optionally followed by a version string.
+    Every argument pair specifies a range and a replacement string. Prints a version string after
+    performing the specified separator substitutions. If the version string is not specified,
+    \t{\$\{PVR\}} is used.
+
+    For every argument pair specified, each of the version separators present at indices specified
+    by the range is replaced with the replacement string, in order. If the range spans outside
+    the range of present version separators, it is silently truncated.
+
+\item[ver_test] Takes two or three arguments. In the 3-argument form, takes an LHS version string,
+    followed by an operator, followed by an RHS version string. In the 2-argument form, the first
+    version string is omitted and \t{\$\{PVR\}} is used as LHS version string. The operator can be
+    \t{-eq} (equal to), \t{-ne} (not equal to), \t{-gt} (greater than), \t{-ge} (greater than or
+    equal to), \t{-lt} (less than) or \t{-le} (less than or equal to). Returns shell true (0) if
+    the specified relation between the LHS and RHS version strings is fulfilled.
+
+    Both version strings must conform to the version specification in
+    section~\ref{sec:version-spec}. Comparison is done using algorithm~\ref{alg:version-comparison}.
+\end{description}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting version manipulation commands}
+    \label{tab:version-commands}
+    \begin{tabular}{llll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
+      7                   & Yes & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Misc commands}
 The following commands are always available in the ebuild environment, but don't really fit in any
 of the above categories. Ebuilds must not run any of these commands once the current phase function


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-18 13:36 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-18 13:36 UTC (permalink / raw
  To: gentoo-commits

commit:     3222485957d109257f3b727b9d6d96a319c8c35d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:41:52 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 18 13:35:54 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=32224859

EAPI 7: domo installs to /usr.

Bug: https://bugs.gentoo.org/595924

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 25 ++++++++++++++++++++-----
 2 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index ddf480e..5fb2568 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -275,6 +275,9 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
     * & Yes & Yes & Yes & Yes \\
 
+\t{domo} destination path & \compactfeatureref{domo-path} &
+    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} \\
+
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
     No & No & Yes & Yes & Yes \\
 
@@ -473,6 +476,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Output commands no longer use stdout, \featureref{output-no-stdout}.
 \item \t{eqawarn}, \featureref{eqawarn}.
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
+\item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 91c19b6..c02f136 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -588,11 +588,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     the empty string. In EAPIs specified by table~\ref{tab:doman-table}, the \t{-i18n} option takes
     precedence over the language code in the filename.
 
-\item[domo] Installs the given \t{.mo} files with file mode \t{0644} into the appropriate
-    subdirectory of \t{DESTTREE\slash share\slash locale}, generated by taking the basename of the
-    file, removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed
-    files is the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
-    section~\ref{sec:failure-behaviour}.
+\item[domo] \featurelabel{domo-path} Installs the given \t{.mo} files with file mode \t{0644} into
+    the appropriate subdirectory of the locale tree, generated by taking the basename of the file,
+    removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed files
+    is the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
+    section~\ref{sec:failure-behaviour}. The locale tree location is EAPI dependent as per
+    table~\ref{tab:domo-path}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
@@ -712,6 +713,20 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{\t{domo} destination path in EAPIs}
+    \label{tab:domo-path}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Destination path}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
+      7                   & \t{/usr/share/locale} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees, all relative to \t{\$\{ED\}} in
 offset-prefix aware EAPIs and relative to \t{\$\{D\}} in offset-prefix agnostic EAPIs, used by the


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     57757371ebb99d7b3bc65cb833e17bb3ab671ba1
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:13:57 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=57757371

EAPI 7 removes DESTTREE and INSDESTTREE.

Bug: https://bugs.gentoo.org/173630

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 19 ++++++++++++-------
 2 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f87e448..283891b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -155,6 +155,12 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
     Yes & Yes & Yes & Yes & No \\
 
+\t{DESTTREE} & \compactfeatureref{desttree} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{INSDESTTREE} & \compactfeatureref{insdesttree} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{KV} & \compactfeatureref{kv} &
     Yes & No & No & No & No \\
 
@@ -409,6 +415,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Automatic enforcing of \t{REQUIRED_USE}, \featureref{auto-req-use}.
 \item \t{PORTDIR} is gone, \featureref{portdir}.
 \item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
+\item \t{DESTTREE} is gone, \featureref{desttree}.
+\item \t{INSDESTTREE} is gone, \featureref{insdesttree}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0258d1a..2d79f20 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -176,11 +176,14 @@ variable.
 \t{DESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{dobin}, \t{dolib}, \t{domo}, and \t{dosbin} install things. \\
+    \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, \t{domo},
+    and \t{dosbin} install things. Only for EAPIs listed in table~\ref{tab:removed-env-vars-table}
+    as supporting \t{DESTTREE}. \\
 \t{INSDESTTREE} &
     \t{src_install} &
     No &
-    Controls the location where \t{doins} installs things. \\
+    \featurelabel{insdesttree} Controls the location where \t{doins} installs things. Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{INSDESTTREE}. \\
 \t{USE} &
     All &
     Yes &
@@ -255,17 +258,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
       \multicolumn{1}{c}{\textbf{\t{KV}?}} &
       \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
-      \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} &
+      \multicolumn{1}{c}{\textbf{\t{DESTTREE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{INSDESTTREE}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
-      4, 5, 6           & No  & No  & Yes & Yes \\
-      7                 & No  & No  & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
+      7                 & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     ed38165fb16dfbb7fed458d63530382d59643493
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 16:20:11 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ed38165f

EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED.

Bug: https://bugs.gentoo.org/465772

 eapi-differences.tex |  5 +++++
 ebuild-env-vars.tex  | 58 ++++++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 283891b..21411eb 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -185,6 +185,9 @@ Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
     * & Yes & Yes & Yes & Yes \\
 
+Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
     Undefined & Undefined & Yes & Yes & Yes \\
 
@@ -417,6 +420,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
 \item \t{DESTTREE} is gone, \featureref{desttree}.
 \item \t{INSDESTTREE} is gone, \featureref{insdesttree}.
+\item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
+    \featureref{trailing-slash}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 2d79f20..27417bf 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -123,14 +123,15 @@ variable.
    The absolute path to the root directory into which the package is to be merged.  Phases which run
    with full filesystem access must not touch any files outside of the directory given in
    \t{ROOT}\@. Also of note is that in a cross-compiling environment, binaries inside of \t{ROOT}
-   will not be executable on the build machine, so ebuilds must not call them. \t{ROOT} must be
-   non-empty and end in a trailing slash. \\
+   will not be executable on the build machine, so ebuilds must not call them. The presence of
+   a trailing slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{EROOT} &
     \t{pkg_*} &
     No &
-    Contains the path \t{\$\{ROOT\%/\}\$\{EPREFIX\}/} for convenience. See also the
-    \t{EPREFIX} variable. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as
-    supporting \t{EROOT}. \\
+    Contains the concatenation of the paths in the \t{ROOT} and \t{EPREFIX} variables,
+    for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed in
+    table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}\@. The presence of a trailing
+    slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -161,18 +162,21 @@ variable.
     \t{src_install} &
     No &
     Contains the full path to the image directory into which the package should be installed.
-    Must be non-empty and end in a trailing slash. \\
+    The presence of a trailing slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}.
+    \\
 \t{D} (continued) &
     \t{pkg_preinst}, \t{pkg_postinst} &
     Yes &
-    Contains the full path to the image that is about to be or has just been merged. Must be
-    non-empty and end in a trailing slash. \\
+    Contains the full path to the image that is about to be or has just been merged.
+    The presence of a trailing slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}.
+    \\
 \t{ED} &
     \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst} &
     See \t{D} &
-    Contains the path \t{\$\{D\%/\}\$\{EPREFIX\}/} for convenience. See also the
-    \t{EPREFIX} variable. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as
-    supporting \t{ED}. \\
+    Contains the concatenation of the paths in the \t{D} and \t{EPREFIX} variables,
+    for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed in
+    table~\ref{tab:offset-env-vars-table} as supporting \t{ED}\@. The presence of a trailing slash
+    is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{DESTTREE} &
     \t{src_install} &
     No &
@@ -433,6 +437,38 @@ behaviour of offset-prefix aware and agnostic is the same when \t{EPREFIX} is se
 string in offset-prefix aware EAPIs. The latter do have the variables \t{ED} and \t{EROOT} properly
 set, though.
 
+\subsection{Path variables and trailing slash}
+\label{sec:trailing-slash}
+
+Unless specified otherwise, the paths provided through package manager variables do not end with
+a trailing slash and cannot be empty. A few exceptions to that rule are listed
+in table~\ref{tab:trailing-slash} along with applicable EAPIs.
+
+For EAPIs where those variables are defined to always end with a trailing slash, the package manager
+guarantees that a trailing slash will always be appended to the path in question. If the path
+specifies the system root directory, it will consist of a single slash (\t{/}).
+
+\featurelabel{trailing-slash} For EAPIs where those variables are defined to never end with
+a trailing slash, the package manager guarantees that a trailing slash will never be present.
+If the path specifies the system root directory, it will be empty.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Variables that always or never end with a trailing slash}
+    \label{tab:trailing-slash}
+    \begin{tabular}{lll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{2}{c}{\textbf{Ends with a trailing slash?}} \\
+      &
+      \t{ROOT}, \t{EROOT} &
+      \t{D}, \t{ED} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & always & always \\
+      7                   & never  & never  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
 %%% Local Variables:


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     f158293c3d7a53d7ba7693c31ff65a8ddf40baa3
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 19 21:36:40 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f158293c

EAPI 7: econf adds --with-sysroot

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  3 ++-
 pkg-mgr-commands.tex | 17 +++++++++++------
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9c769b5..0f6371b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -225,7 +225,7 @@ Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
     None & disable dependency tracking &
     disable dependency tracking, disable silent rules &
     disable dependency tracking, disable silent rules, docdir, htmldir &
-    disable dependency tracking, disable silent rules, docdir, htmldir \\
+    disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
     No & Yes & Yes & Yes & Yes \\
@@ -426,6 +426,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{SYSROOT} and \t{ESYSROOT}, \featureref{sysroot}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
+\item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 50a3748..13eed79 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -258,6 +258,9 @@ current phase function has returned.
     \item -{}-htmldir must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}/html}, if the EAPI is listed
         in table~\ref{tab:econf-options-table} as using it. This option will only be passed if the
         string \t{-{}-htmldir} occurs in the output of \t{configure -{}-help}.
+    \item -{}-with-sysroot must be \t{\$\{ESYSROOT\}}, if the EAPI is listed in
+        table~\ref{tab:econf-options-table} as using it. This option will only be passed if the
+        string \t{-{}-with-sysroot} occurs in the output of \t{configure -{}-help}.
     \item -{}-build must be the value of the \t{CBUILD} environment variable. This option will only
         be passed if \t{CBUILD} is non-empty.
     \item -{}-host must be the value of the \t{CHOST} environment variable.
@@ -275,18 +278,20 @@ current phase function has returned.
     \ChangeWhenAddingAnEAPI{7}
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
-        \begin{tabular}{lllll}
+        \begin{tabular}{llllll}
           \toprule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
           \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
           \multicolumn{1}{c}{\textbf{-{}-docdir}} &
-          \multicolumn{1}{c}{\textbf{-{}-htmldir}} \\
+          \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
+          \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\
           \midrule
-          0, 1, 2, 3        & No  & No  & No  & No  \\
-          4                 & Yes & No  & No  & No  \\
-          5                 & Yes & Yes & No  & No  \\
-          6, 7              & Yes & Yes & Yes & Yes \\
+          0, 1, 2, 3        & No  & No  & No  & No  & No  \\
+          4                 & Yes & No  & No  & No  & No  \\
+          5                 & Yes & Yes & No  & No  & No  \\
+          6                 & Yes & Yes & Yes & Yes & No  \\
+          7                 & Yes & Yes & Yes & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     73a1a862fd41115cbd000a2f62ac94ead1c421f1
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 03:17:43 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=73a1a862

EAPI 7 removes PORTDIR and ECLASSDIR.

Bug: https://bugs.gentoo.org/373349
Bug: https://bugs.gentoo.org/373351

 eapi-differences.tex |  8 ++++++++
 ebuild-env-vars.tex  | 17 +++++++++++------
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 326774d..f87e448 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -149,6 +149,12 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{AA} & \compactfeatureref{aa} &
     Yes & No & No & No & No \\
 
+\t{PORTDIR} & \compactfeatureref{portdir} &
+    Yes & Yes & Yes & Yes & No \\
+
+\t{ECLASSDIR} & \compactfeatureref{eclassdir} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{KV} & \compactfeatureref{kv} &
     Yes & No & No & No & No \\
 
@@ -401,6 +407,8 @@ EAPI 7 is EAPI 6 with the following changes:
     being matched, \featureref{empty-dep-groups}.
 \item \t{||=} dependency groups, \featureref{binding-any-of}.
 \item Automatic enforcing of \t{REQUIRED_USE}, \featureref{auto-req-use}.
+\item \t{PORTDIR} is gone, \featureref{portdir}.
+\item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 4545272..0258d1a 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -110,11 +110,13 @@ variable.
 \t{PORTDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's base directory. \\
+    \featurelabel{portdir} The full path to the master repository's base directory. Only for EAPIs
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{PORTDIR}. \\
 \t{ECLASSDIR} &
     \t{src_*} &
     No &
-    The full path to the master repository's eclass directory. \\
+    \featurelabel{eclassdir} The full path to the master repository's eclass directory. Only for
+    EAPIs listed in table~\ref{tab:removed-env-vars-table} as supporting \t{ECLASSDIR}. \\
 \t{ROOT} &
    \t{pkg_*} &
    No &
@@ -253,14 +255,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{AA}?}} &
-      \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{KV}?}} &
+      \multicolumn{1}{c}{\textbf{\t{PORTDIR}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ECLASSDIR}?}} \\
       \midrule
-      0, 1, 2, 3        & Yes & Yes \\
-      4, 5, 6, 7        & No  & No  \\
+      0, 1, 2, 3        & Yes & Yes & Yes & Yes \\
+      4, 5, 6           & No  & No  & Yes & Yes \\
+      7                 & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     080a25221d9d5920738b046f2f3ccaf94a0c9ab6
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 16:19:16 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=080a2522

EAPI 7 has BDEPEND

Bug: https://bugs.gentoo.org/317337

 dependencies.tex     | 33 ++++++++++++++++++++++++++++++---
 eapi-differences.tex |  4 ++++
 ebuild-vars.tex      |  1 +
 eclasses.tex         | 11 ++++++-----
 metadata-cache.tex   |  3 ++-
 5 files changed, 43 insertions(+), 9 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 51c67a4..e53cff6 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -15,7 +15,7 @@
           None (ebuilds can rely only on the packages in the system~set) \\
       \addlinespace
       \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile}, \t{src_test},
-          \t{src_install} & \t{DEPEND} \\
+          \t{src_install} & \t{DEPEND}, \t{BDEPEND} \\
       \addlinespace
       \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm}, \t{pkg_postrm} &
           \t{RDEPEND} (unless the particular dependency results in a circular dependency, in which
@@ -38,6 +38,32 @@ There are three classes of dependencies supported by ebuilds:
     the package manager finishes the batch of installs.
 \end{compactitem}
 
+\featurelabel{bdepend} Additionally, in EAPIs listed in table~\ref{tab:depend-table}
+as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
+
+\begin{compactitem}
+\item \t{BDEPEND} build dependencies that are binary compatible with the native build system
+    (\t{CBUILD}). The ebuild is allowed to call binary executables installed by this kind of
+    dependency.
+    \item \t{DEPEND} build dependencies that are binary compatible with the system being built
+    (\t{CHOST}). The ebuild must not execute binary executables installed by this kind of
+    dependency.
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting additional dependency types}
+    \label{tab:depend-table}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{BDEPEND}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
 a particular phase function is executed.
 
@@ -51,7 +77,8 @@ The following elements are recognised in at least one class of specification. Al
 be surrounded on both sides by whitespace, except at the start and end of the string.
 
 \begin{compactitem}
-\item A package dependency specification. Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}.
+\item A package dependency specification. Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND},
+    \t{PDEPEND}.
 \item A URI, in the form \t{proto://host/path}. Permitted in \t{SRC_URI} and \t{HOMEPAGE}\@.
     In EAPIs listed in table~\ref{tab:uri-arrows-table} as supporting \t{SRC_URI} arrows, may
     optionally be followed by whitespace, then \t{->}, then whitespace, then a simple filename when
@@ -69,7 +96,7 @@ be surrounded on both sides by whitespace, except at the start and end of the st
     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)+ ')'}.
-    Permitted in \t{DEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
+    Permitted in \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND}, \t{PDEPEND}, \t{LICENSE}, \t{REQUIRED_USE}.
 \item \featurelabel{binding-any-of} A binding-any-of group, which has the same format as the any-of
     group, but begins with the string \t{||=} instead. Permitted in \t{DEPEND}, \t{RDEPEND} in EAPIs
     listed in table~\ref{tab:dep-groups} as supporting \t{||=} groups.

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0f6371b..8f7db7e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -77,6 +77,9 @@ Bash version & \compactfeatureref{bash-version} &
 \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
     Optionally & Yes & Yes & Yes & Yes \\
 
+\t{BDEPEND} & \compactfeatureref{bdepend} &
+    No & No & No & No & Yes \\
+
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
     Yes & Yes & Yes & Yes & No \\
@@ -427,6 +430,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
+\item \t{BDEPEND}, \featureref{bdepend}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b871b3a..b873051 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -90,6 +90,7 @@ Ebuilds may define any of the following variables:
     for its value if unset and when used with an eclass. See section~\ref{sec:rdepend-depend} for
     details.
 \item[PDEPEND] See section~\ref{sec:dependencies}.
+\item[BDEPEND] See section~\ref{sec:dependencies}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/eclasses.tex b/eclasses.tex
index fc72508..c00070d 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -34,11 +34,12 @@ The \t{inherit} command must also ensure that:
 
 \section{Eclass-defined Metadata Keys}
 
-The \t{IUSE}, \t{IUSE_RUNTIME}, \t{REQUIRED_USE}, \t{DEPEND}, \t{RDEPEND} and \t{PDEPEND} variables
-are handled specially when set by an eclass. They must be accumulated across eclasses, appending
-the value set by each eclass to the resulting value after the previous one is loaded. Then the
-eclass-defined value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is
-done after the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
+The \t{IUSE}, \t{IUSE_RUNTIME}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND} and
+\t{PDEPEND} variables are handled specially when set by an eclass. They must be accumulated across
+eclasses, appending the value set by each eclass to the resulting value after the previous one is
+loaded. Then the eclass-defined value is appended to that defined by the ebuild. In the case of
+\t{RDEPEND}, this is done after the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend}
+are applied.
 
 \section{EXPORT_FUNCTIONS}
 

diff --git a/metadata-cache.tex b/metadata-cache.tex
index 38e54a4..eb0a79a 100644
--- a/metadata-cache.tex
+++ b/metadata-cache.tex
@@ -29,7 +29,8 @@ order. Other lines may be present following these; their meanings are not define
 \item Use flags that this package requires (\t{REQUIRED_USE}).
     Blank in some EAPIs; see table~\ref{tab:optional-vars-table}.
 \item Post dependencies (\t{PDEPEND})
-\item Unused; previously used for old-style virtual \t{PROVIDE}.
+\item Build-time dependencies for \t{CBUILD} host (\t{BDEPEND}).
+    Blank in some EAPIs; see table~\ref{tab:depend-table}.
 \item The ebuild API version to which this package conforms (\t{EAPI})
 \item Properties (\t{PROPERTIES}). In some EAPIs, may optionally be blank, regardless of ebuild
     metadata; see table~\ref{tab:optional-vars-table}.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     dde8b8b1253408be9181a58b4b08e6e0b3866487
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 20:53:59 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=dde8b8b1

EAPI 7 drops --host-root in favor of -b, -d, and -r

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  8 +++++---
 pkg-mgr-commands.tex | 30 ++++++++++++++++++++----------
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 989784c..df8ef98 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -215,8 +215,8 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{einstall} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Banned & Banned \\
 
-Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & No & Yes & Yes & Yes \\
+Query command options & \compactfeatureref{pm-query-options} &
+    None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
@@ -381,7 +381,7 @@ EAPI 5 is EAPI 4 with the following changes:
 \item \t{USE} is calculated differently, \featureref{profile-iuse-inject}.
 \item \t{find} is guaranteed to be GNU, \featureref{gnu-find}.
 \item \t{best_version} and \t{has_version} support the \t{-{}-host-root} option,
-    \featureref{host-root-option}.
+    \featureref{pm-query-options}.
 \item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}.
 \item \t{doheader} and \t{newheader} support, \featureref{doheader}.
 \item \t{new*} can read from standard input, \featureref{newfoo-stdin}.
@@ -435,6 +435,8 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
 \item \t{BROOT}, \featureref{broot}.
+\item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} options instead of
+    \t{-{}-host-root}, \featureref{pm-query-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 13eed79..e3c27f7 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -82,27 +82,37 @@ These commands are used to extract information about the system. Ebuilds must no
 these commands in parallel with any other package manager command. Ebuilds must not run any of
 these commands once the current phase function has returned.
 
-\featurelabel{host-root-option} In EAPIs listed in table~\ref{tab:foo-version-host-root-table} as
-supporting option \t{-{}-host-root}, this flag as the first argument will cause the query to apply
-to the host root instead of \t{ROOT}.
+\featurelabel{pm-query-options} In EAPIs listed in table~\ref{tab:pm-query-options} as supporting
+option \t{-{}-host-root}, this flag as the first argument will cause the query to apply to the
+host root. Otherwise, it applies to \t{ROOT}.
+
+In EAPIs listed in table~\ref{tab:pm-query-options} as supporting options \t{-b}, \t{-d} and \t{-r},
+these mutually exclusive flags as the first argument will cause the query to apply to locations
+targetted by \t{BDEPEND}, \t{DEPEND} and \t{RDEPEND}, respectively. When none of these options
+are given, \t{-r} is assumed.
+
 \begin{description}
 \item[has_version] Takes exactly one package dependency specification as an argument. Returns
-    true if a package matching the specification is installed in \t{ROOT}, and false otherwise.
+    true if a package matching the specification is installed, and false otherwise.
 \item[best_version] Takes exactly one package dependency specification as an argument. If a
     matching package is installed, prints the category, package name and version of the highest
     matching version; otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*_version} commands}
-    \label{tab:foo-version-host-root-table}
-    \begin{tabular}{ll}
+\begin{centertable}{Package manager query command options supported by EAPIs}
+    \label{tab:pm-query-options}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{*_version} supports \t{-{}-host-root}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{-{}-host-root}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-b}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-d}?}} &
+      \multicolumn{1}{c}{\textbf{\t{-r}?}} \\
       \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
+      0, 1, 2, 3, 4     & No  & No  & No  & No  \\
+      5, 6              & Yes & No  & No  & No  \\
+      7                 & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     c338011544c5745bc373141bcac536c1b67faacb
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:23:58 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=c3380115

EAPI 7 has SYSROOT and ESYSROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 34 +++++++++++++++++++++++++---------
 2 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 21411eb..9c769b5 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -155,6 +155,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
     Yes & Yes & Yes & Yes & No \\
 
+\t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
+    No & No & No & No & Yes \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -420,6 +423,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ECLASSDIR} is gone, \featureref{eclassdir}.
 \item \t{DESTTREE} is gone, \featureref{desttree}.
 \item \t{INSDESTTREE} is gone, \featureref{insdesttree}.
+\item \t{SYSROOT} and \t{ESYSROOT}, \featureref{sysroot}.
 \item \t{ROOT}, \t{EROOT}, \t{D}, \t{ED} no longer end with a trailing slash,
     \featureref{trailing-slash}.
 \end{compactitem}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 27417bf..1e34488 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -132,6 +132,18 @@ variable.
     for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed in
     table~\ref{tab:offset-env-vars-table} as supporting \t{EROOT}\@. The presence of a trailing
     slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
+\t{SYSROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{sysroot} The absolute path to the root directory containing build dependencies
+    satisfied by \t{DEPEND}\@. Only for EAPIs listed in table~\ref{tab:added-env-vars-table}
+    as supporting \t{SYSROOT}. \\
+\t{ESYSROOT} &
+    \t{src_*} &
+    No &
+    Contains the concatenation of the paths in the \t{SYSROOT} and \t{EPREFIX} variables,
+    for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed
+    in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -244,17 +256,19 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{llllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} \\
+      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+      \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  \\
-      5, 6, 7           & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -282,15 +296,17 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
       \multicolumn{1}{c}{\textbf{\t{EROOT}?}} &
-      \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{ED}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ESYSROOT}?}} \\
       \midrule
-      0, 1, 2           & No  & No  & No  \\
-      3, 4, 5, 6, 7     & Yes & Yes & Yes \\
+      0, 1, 2           & No  & No  & No  & No  \\
+      3, 4, 5, 6        & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     45c28df6cf1a8b333f310afcf635d05478d621b5
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 21:39:27 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=45c28df6

EAPI 7 has BROOT

Bug: https://bugs.gentoo.org/317337

 eapi-differences.tex |  4 ++++
 ebuild-env-vars.tex  | 20 ++++++++++++++------
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8f7db7e..989784c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -161,6 +161,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
     No & No & No & No & Yes \\
 
+\t{BROOT} & \compactfeatureref{broot} &
+    No & No & No & No & Yes \\
+
 \t{DESTTREE} & \compactfeatureref{desttree} &
     Yes & Yes & Yes & Yes & No \\
 
@@ -431,6 +434,7 @@ EAPI 7 is EAPI 6 with the following changes:
     \featureref{trailing-slash}.
 \item \t{econf} adds \t{-{}-with-sysroot}, \featureref{econf-options}.
 \item \t{BDEPEND}, \featureref{bdepend}.
+\item \t{BROOT}, \featureref{broot}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 1e34488..e121987 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -144,6 +144,13 @@ variable.
     Contains the concatenation of the paths in the \t{SYSROOT} and \t{EPREFIX} variables,
     for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed
     in table~\ref{tab:offset-env-vars-table} as supporting \t{ESYSROOT}. \\
+\t{BROOT} &
+    \t{src_*} &
+    No &
+    \featurelabel{broot} The absolute path to the root directory containing build dependencies
+    satisfied by \t{BDEPEND}, typically executable build tools. This includes any applicable offset
+    prefix. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table} as supporting \t{BROOT}.
+    \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -256,19 +263,20 @@ variable.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
-    \begin{tabular}{llllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
       \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
-      \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} &
+      \multicolumn{1}{c}{\textbf{\t{BROOT}?}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  & No  \\
-      4                 & Yes & Yes & Yes & No  & No  \\
-      5, 6              & Yes & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  & No  & No  \\
+      5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     53277f65792615a2b4442454543e95c0897f42b8
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 23:46:32 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=53277f65

dependencies: Provide a nice summary table for dep APIs

 dependencies.tex | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index e53cff6..696f478 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -26,6 +26,21 @@
     \end{tabular}
 \end{centertable}
 
+\begin{centertable}{Summary of other interfaces related to dependency classes}
+    \label{tab:dep-class-api}
+    \begin{tabular}{llll}
+      \toprule
+                                & \t{BDEPEND}     & \t{DEPEND}         & \t{RDEPEND}, \t{PDEPEND} \\
+      \midrule
+      Binary compatible with    & \t{CBUILD}      & \t{CHOST}          & \t{CHOST}         \\
+      Base unprefixed path      & \t{/}           & \t{\$\{SYSROOT\}}  & \t{\$\{ROOT\}}    \\
+      Relevant offset-prefix    & \t{\$\{BROOT\}} & \t{\$\{EPREFIX\}}  & \t{\$\{EPREFIX\}} \\
+      Path combined with prefix & \t{\$\{BROOT\}} & \t{\$\{ESYSROOT\}} & \t{\$\{EROOT\}}   \\
+      PM query command option   & \t{-b}          & \t{-d}             & \t{-r}            \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 There are three classes of dependencies supported by ebuilds:
 
 \begin{compactitem}
@@ -65,7 +80,8 @@ as supporting \t{BDEPEND}, the build dependencies are split into two subclasses:
 \end{centertable}
 
 Table~\ref{tab:phase-function-dependency-classes} lists dependencies which must be satisfied before
-a particular phase function is executed.
+a particular phase function is executed. Table~\ref{tab:dep-class-api} summarises additional
+interfaces related to the dependency classes.
 
 In addition, \t{SRC_URI}, \t{HOMEPAGE}, \t{RESTRICT}, \t{PROPERTIES}, \t{LICENSE} and
 \t{REQUIRED_USE} use dependency-style specifications to specify their values.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     110fcdd34330052c16aa25d10c082530c8b1ba40
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 10 13:51:41 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=110fcdd3

EAPI 7 has ENV_UNSET.

Thanks to mgorny for providing the initial wording.

Bug: https://bugs.gentoo.org/499288

 eapi-differences.tex  |  4 ++++
 ebuild-env-vars.tex   |  2 ++
 profile-variables.tex | 23 +++++++++++++++++++++++
 3 files changed, 29 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index df8ef98..d738efe 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -179,6 +179,9 @@ Parallel tests & \compactfeatureref{parallel-tests} &
 \t{MERGE_TYPE} & \compactfeatureref{merge-type} &
     No & Yes & Yes & Yes & Yes \\
 
+\t{ENV_UNSET} & \compactfeatureref{env-unset} &
+    No & No & No & No & Yes \\
+
 Sane locale settings & \compactfeatureref{locale-settings} &
     Undefined & Undefined & Undefined & Yes & Yes \\
 
@@ -437,6 +440,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{BROOT}, \featureref{broot}.
 \item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} options instead of
     \t{-{}-host-root}, \featureref{pm-query-options}.
+\item \t{ENV_UNSET}, \featureref{env-unset}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index e121987..c9ebf9b 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -330,6 +330,8 @@ package manager specific directories.
 
 \t{GZIP}, \t{BZIP}, \t{BZIP2}, \t{CDPATH}, \t{GREP_OPTIONS}, \t{GREP_COLOR} and \t{GLOBIGNORE}
 must not be set.
+\featurelabel{env-unset} In addition, any variable whose name appears in the \t{ENV_UNSET} variable
+must be unset, for EAPIs listed in table~\ref{tab:profile-env-unset} as supporting \t{ENV_UNSET}.
 
 \featurelabel{locale-settings} The package manager must ensure that the \t{LC_CTYPE} and
 \t{LC_COLLATE} locale categories are equivalent to the POSIX locale, as far as characters in the

diff --git a/profile-variables.tex b/profile-variables.tex
index 309f9e9..6cd770c 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -29,6 +29,13 @@ incrementally; otherwise, the following variables may or may not be treated incr
 \item \t{USE_EXPAND_UNPREFIXED}
 \end{compactitem}
 
+If the package manager supports any EAPI listed in table~\ref{tab:profile-env-unset} as using
+\t{ENV_UNSET}, the following variable must also be treated incrementally; otherwise, it may or
+may not be treated incrementally:
+\begin{compactitem}
+\item \t{ENV_UNSET}
+\end{compactitem}
+
 Other variables, except where they affect only package-manager-specific functionality (such as
 Portage's \t{FEATURES} variable), must not be treated incrementally---later definitions shall
 completely override those in parent profiles.
@@ -47,6 +54,20 @@ completely override those in parent profiles.
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Profile-defined unsetting of variables in EAPIs}
+    \label{tab:profile-env-unset}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{ENV_UNSET}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  \\
+      7                   & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Specific variables and their meanings}
 The following variables have specific meanings when set in profiles.
 \begin{description}
@@ -69,6 +90,8 @@ The following variables have specific meanings when set in profiles.
     displaying uninteresting or unhelpful information to an end user.
 \item[USE_EXPAND_IMPLICIT, IUSE_IMPLICIT] Used to inject implicit values into \t{IUSE}\@. See
     section~\ref{sec:use-iuse-handling} for details.
+\item[ENV_UNSET] Contains a whitespace-delimited list of variables that the package manager shall
+    unset. See section~\ref{sec:ebuild-env-vars} for details.
 \end{description}
 
 In addition, for EAPIs listed in table~\ref{tab:profile-iuse-injection-table} as supporting profile


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     17ac1d44eb5ef2ce48370d162d4abec3eba2bc5a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:48:46 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=17ac1d44

pkg-mgr-commands: Redefine dolib* in terms of libdir.a

Since EAPI 7 removes dolib, it would be a bad fit to describe the two
other commands on top of one that is removed. Instead, start by defining
libdir.a and then define the two other commands on top of it.

This also clarifies that dolib.a & dolib.so do not respect libopts,
while the old wording was not clear on that. However, this is at least
how it was implemented in Portage (with dolib.a and dolib.so overriding
libopts completely).

 pkg-mgr-commands.tex | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 9e7390c..82e48ca 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -481,15 +481,15 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     symlink is encountered. Failure behaviour is EAPI dependent as per
     section~\ref{sec:failure-behaviour}.
 
-\item[dolib] For each argument, installs it into the appropriate library subdirectory under
-    \t{DESTTREE}, as determined by algorithm~\ref{alg:ebuild-libdir}. Files are installed by default
-    with file mode \t{0644}, or with the \t{install} options set by the most recent \t{libopts}
-    call. Any symlinks are installed into the same directory as relative links to their original
-    target. Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
+\item[dolib.a] For each argument, installs it into the appropriate library subdirectory under
+    \t{DESTTREE}, as determined by algorithm~\ref{alg:ebuild-libdir}. Files are installed with file
+    mode \t{0644}. Any symlinks are installed into the same directory as relative links to their
+    original target. Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
 
-\item[dolib.a] As for \t{dolib} except each file is installed with mode \t{0644}.
+\item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
-\item[dolib.so] As for \t{dolib} except each file is installed with mode \t{0755}.
+\item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
+    the \t{install} options set by the most recent \t{libopts} call.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     3f34e25d1eaa27d3a7969910858939fb89b25500
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:24:10 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=3f34e25d

EAPI 7 provides command fallback for nonfatal.

Bug: https://bugs.gentoo.org/622894

 eapi-differences.tex |  3 ++-
 pkg-mgr-commands.tex | 16 +++++++++++-----
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 47c6950..f47a8c6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -210,7 +210,7 @@ Most utilities die & \compactfeatureref{die-on-failure} &
     No & Yes & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Function / external \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
     Yes & Banned & Banned & Banned & Banned \\
@@ -445,6 +445,7 @@ EAPI 7 is EAPI 6 with the following changes:
     \t{-{}-host-root}, \featureref{pm-query-options}.
 \item \t{ENV_UNSET}, \featureref{env-unset}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
+\item \t{nonfatal} is both a shell function and an external command, \featureref{nonfatal}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index e3c27f7..fdf80e0 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -22,6 +22,10 @@ The following commands affect this behaviour:
     the build process due to a failure, instead a non-zero exit status shall be returned. Only in
     EAPIs listed in table~\ref{tab:commands-die-table} as supporting \t{nonfatal}.
 
+    In EAPIs listed in table~\ref{tab:commands-die-table} as having \t{nonfatal} defined both
+    as a shell function and as an external command, the package manager must provide both
+    implementations to account for calling directly in ebuild scope or through \t{xargs}.
+
     Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when called with the \t{-n}
     option and in EAPIs supporting this option, see table~\ref{tab:nonfatal-die}.
 \end{description}
@@ -29,14 +33,16 @@ The following commands affect this behaviour:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
-    \begin{tabular}{lll}
+    \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Command failure behaviour}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
+      \multicolumn{1}{P{8em}}{\textbf{Command failure behaviour}} &
+      \multicolumn{1}{P{5em}}{\textbf{Supports \t{nonfatal}?}} &
+      \multicolumn{1}{P{12em}}{\textbf{\t{nonfatal} is both a function and an external command?}} \\
       \midrule
-      0, 1, 2, 3        & Non-zero exit & No  \\
-      4, 5, 6, 7        & Aborts        & Yes \\
+      0, 1, 2, 3        & Non-zero exit & No  & n/a \\
+      4, 5, 6           & Aborts        & Yes & No  \\
+      7                 & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     a8045b4be82742641a2c424dd4606f1e35605b41
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:33:22 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=a8045b4b

EAPI 7 allows die in subshell.

Bug: https://bugs.gentoo.org/465008

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 25 ++++++++++++++++---------
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 97ca9ad..ddf480e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -245,6 +245,9 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
 
+\t{die} in subshell & \compactfeatureref{subshell-die} &
+    No & No & No & No & Yes \\
+
 \t{eapply} & \compactfeatureref{eapply} &
     No & No & No & Yes & Yes \\
 
@@ -469,6 +472,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Sandbox path removal commands, \featureref{sandbox-rm}.
 \item Output commands no longer use stdout, \featureref{output-no-stdout}.
 \item \t{eqawarn}, \featureref{eqawarn}.
+\item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 64d1bd1..0a0997a 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -27,7 +27,7 @@ The following commands affect this behaviour:
     implementations to account for calling directly in ebuild scope or through \t{xargs}.
 
     Explicit \t{die} or \t{assert} commands only respect \t{nonfatal} when called with the \t{-n}
-    option and in EAPIs supporting this option, see table~\ref{tab:nonfatal-die}.
+    option and in EAPIs supporting this option, see table~\ref{tab:die-properties}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
@@ -209,23 +209,30 @@ completing. Ebuilds must not run any of these commands once the current phase fu
 \item[die] \featurelabel{nonfatal-die} If called under the \t{nonfatal} command (as per
     section~\ref{sec:failure-behaviour}) and with \t{-n} as its first parameter, displays a failure
     message provided in its following argument and then returns a non-zero exit status. Only in
-    EAPIs listed in table~\ref{tab:nonfatal-die} as supporting option~\t{-n}. Otherwise, displays
+    EAPIs listed in table~\ref{tab:die-properties} as supporting option~\t{-n}. Otherwise, displays
     a failure message provided in its first and only argument, and then aborts the build process.
-    \t{die} is \e{not} guaranteed to work correctly if called from a subshell environment.
+
+    \featurelabel{subshell-die} In EAPIs listed in table~\ref{tab:die-properties} as not providing
+    subshell support, \t{die} is \e{not} guaranteed to work correctly if called from a subshell
+    environment.
 \item[assert] Checks the value of the shell's pipe status variable, and if any component is non-zero
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} commands}
-    \label{tab:nonfatal-die}
-    \begin{tabular}{ll}
+\begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
+    \label{tab:die-properties}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
+      \multicolumn{2}{c}{\textbf{\t{die} and \t{assert}}} \\
+      &
+      \multicolumn{1}{c}{\textbf{support \t{-n}?}} &
+      \multicolumn{1}{c}{\textbf{work in subshell?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5  & No  \\
-      6, 7              & Yes \\
+      0, 1, 2, 3, 4, 5  & No  & No  \\
+      6                 & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     26c4b5e6329cef8bbc24d80dff159faa0a10aa5e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 15 17:20:13 2015 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=26c4b5e6

EAPI 7: dohtml banned.

Bug: https://bugs.gentoo.org/520546

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 16 ++++++++++------
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f47a8c6..12ece88 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -221,6 +221,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{einstall} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Banned & Banned \\
 
+\t{dohtml} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
     None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -446,6 +449,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{ENV_UNSET}, \featureref{env-unset}.
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{nonfatal} is both a shell function and an external command, \featureref{nonfatal}.
+\item \t{dohtml} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index fdf80e0..9e7390c 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -56,18 +56,20 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{llll}
+    \begin{tabular}{lllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{3}{c}{\textbf{Command banned?}} \\
+      \multicolumn{4}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
       \multicolumn{1}{c}{\textbf{\t{dosed}}} &
-      \multicolumn{1}{c}{\textbf{\t{einstall}}} \\
+      \multicolumn{1}{c}{\textbf{\t{einstall}}} &
+      \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  \\
-      4, 5              & Yes & Yes & No  \\
-      6, 7              & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  & No  \\
+      6                 & Yes & Yes & Yes & No  \\
+      7                 & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -457,6 +459,8 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     offset-prefix.
 \end{description}
 
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
     Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
 
     It is undefined whether a failure shall occur if \t{-r} is not specified and a directory is


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     34a7b3903ba14f05b7702784d83e3ef7ae1dc5f1
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  4 17:44:06 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=34a7b390

EAPI 7 has sandbox directory removal functions.

Bug: https://bugs.gentoo.org/630422

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 29 +++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7bddf41..96e0c0c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -230,6 +230,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{libopts} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
+Sandbox \t{rm*} commands & \compactfeatureref{sandbox-rm} &
+    No & No & No & No & Yes \\
+
 Query command options & \compactfeatureref{pm-query-options} &
     None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -457,6 +460,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{nonfatal} is both a shell function and an external command, \featureref{nonfatal}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
+\item Sandbox path removal commands, \featureref{sandbox-rm}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7b01ab8..db871c3 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -87,6 +87,35 @@ argument. Ebuilds must not run any of these commands once the current phase func
 \item[adddeny] Add a directory to the deny list.
 \end{description}
 
+\featurelabel{sandbox-rm} Additionally, in EAPIs listed in table~\ref{tab:sandbox-command-table}
+as supporting the respective commands, the following commands are available:
+\begin{description}
+\item[rmread] Remove a directory from the permitted read list.
+\item[rmwrite] Remove a directory from the permitted write list.
+\item[rmpredict] Remove a directory from the predict list.
+\item[rmdeny] Remove a directory from the deny list.
+\end{description}
+
+All of these commands match paths exactly. Removing a directory that is not present on the list
+is silently ignored.
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Additional sandbox commands in EAPIs}
+    \label{tab:sandbox-command-table}
+    \begin{tabular}{lllll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{rmread}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmwrite}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmpredict}?}} &
+      \multicolumn{1}{c}{\textbf{\t{rmdeny}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  & No  & No  \\
+      7                   & Yes & Yes & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Package manager query commands}
 These commands are used to extract information about the system. Ebuilds must not run any of
 these commands in parallel with any other package manager command. Ebuilds must not run any of


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     d6d6c4d480ae2e4961a480fcf6c7cd2fdd0c892a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 14:10:20 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=d6d6c4d4

EAPI 7 disallows stdout output of output functions

Bug: https://bugs.gentoo.org/483240

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 22 ++++++++++++++++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 96e0c0c..d7153a8 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -236,6 +236,9 @@ Sandbox \t{rm*} commands & \compactfeatureref{sandbox-rm} &
 Query command options & \compactfeatureref{pm-query-options} &
     None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
+Output commands use stdout & \compactfeatureref{output-no-stdout} &
+    Yes & Yes & Yes & Yes & No \\
+
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
 
@@ -461,6 +464,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dohtml} banned, \featureref{banned-commands}.
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item Sandbox path removal commands, \featureref{sandbox-rm}.
+\item Output commands no longer use stdout, \featureref{output-no-stdout}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index db871c3..d3b904c 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -161,8 +161,12 @@ These commands display messages to the user. Unless otherwise stated, the entire
 used as a message, with backslash-escaped characters interpreted as for the \t{echo -e} command of
 bash, notably \t{\textbackslash t} for a horizontal tab, \t{\textbackslash n} for a new line, and
 \t{\textbackslash\textbackslash} for a literal backslash. Ebuilds must not run any of these commands
-once the current phase function has returned. Unless otherwise noted, output may be sent to stdout,
-stderr or some other appropriate facility.
+once the current phase function has returned.
+
+\featurelabel{output-no-stdout} Unless otherwise noted, output may be sent to stderr or some other
+appropriate facility. In EAPIs listed in table~\ref{tab:output-commands} as not allowing stdout
+output, using stdout as an output facility is forbidden.
+
 \begin{description}
 \item[einfo] Displays an informational message.
 \item[einfon] Displays an informational message without a trailing newline.
@@ -179,6 +183,20 @@ stderr or some other appropriate facility.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{Output commands for EAPIs}
+    \label{tab:output-commands}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Commands can output to stdout?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & Yes \\
+      7                   & No  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Error commands}
 These commands are used when an error is detected that will prevent the build process from
 completing. Ebuilds must not run any of these commands once the current phase function has returned.


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     250180442377dc45ba37884a62f174ba6877e5a2
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 14:02:49 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=25018044

EAPI 7 bans dolib and libopts.

Bug: https://bugs.gentoo.org/630416

 eapi-differences.tex |  7 +++++++
 pkg-mgr-commands.tex | 22 ++++++++++++++--------
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 12ece88..7bddf41 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -224,6 +224,12 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dohtml} & \compactfeatureref{banned-commands} &
     Yes & Yes & Yes & Yes & Banned \\
 
+\t{dolib} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
+\t{libopts} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 Query command options & \compactfeatureref{pm-query-options} &
     None & None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} \\
 
@@ -450,6 +456,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \item \t{nonfatal} is both a shell function and an external command, \featureref{nonfatal}.
 \item \t{dohtml} banned, \featureref{banned-commands}.
+\item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 82e48ca..7b01ab8 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -56,20 +56,22 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{lllll}
+    \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{4}{c}{\textbf{Command banned?}} \\
+      \multicolumn{6}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
       \multicolumn{1}{c}{\textbf{\t{dosed}}} &
       \multicolumn{1}{c}{\textbf{\t{einstall}}} &
-      \multicolumn{1}{c}{\textbf{\t{dohtml}}} \\
+      \multicolumn{1}{c}{\textbf{\t{dohtml}}} &
+      \multicolumn{1}{c}{\textbf{\t{dolib}}} &
+      \multicolumn{1}{c}{\textbf{\t{libopts}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  & No  & No  \\
-      4, 5              & Yes & Yes & No  & No  \\
-      6                 & Yes & Yes & Yes & No  \\
-      7                 & Yes & Yes & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  & No  & No  & No  \\
+      6                 & Yes & Yes & Yes & No  & No  & No  \\
+      7                 & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -489,7 +491,9 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 \item[dolib.so] As for \t{dolib.a} except each file is installed with mode \t{0755}.
 
 \item[dolib] As for \t{dolib.a} except that the default install mode can be overriden with
-    the \t{install} options set by the most recent \t{libopts} call.
+    the \t{install} options set by the most recent \t{libopts} call. In EAPIs listed
+    in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
 
 \begin{algorithm}
 \caption{Determining the library directory} \label{alg:ebuild-libdir}
@@ -685,6 +689,8 @@ has returned.
 \item[exeopts] Sets the options passed by \t{doexe} et al.\ to the \t{install} command.
 
 \item[libopts] Sets the options passed by \t{dolib} et al.\ to the \t{install} command.
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as
+    per section~\ref{sec:banned-commands}.
 
 \end{description}
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     08a0e2b36761cf63e4a5a77f27c026b4dab9789b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 14:05:38 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=08a0e2b3

EAPI 7 has eqawarn

Bug: https://bugs.gentoo.org/482884

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 13 +++++++++----
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d7153a8..97ca9ad 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -239,6 +239,9 @@ Query command options & \compactfeatureref{pm-query-options} &
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
     Yes & Yes & Yes & Yes & No \\
 
+\t{eqawarn} & \compactfeatureref{eqawarn} &
+    No & No & No & No & Yes \\
+
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & Yes & Yes \\
 
@@ -465,6 +468,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{dolib} and \t{libopts} banned, \featureref{banned-commands}.
 \item Sandbox path removal commands, \featureref{sandbox-rm}.
 \item Output commands no longer use stdout, \featureref{output-no-stdout}.
+\item \t{eqawarn}, \featureref{eqawarn}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index d3b904c..64d1bd1 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -174,6 +174,10 @@ output, using stdout as an output facility is forbidden.
     manager may choose to log \t{elog} messages by default where \t{einfo} messages are not, for
     example.
 \item[ewarn] Displays a warning message. Must not go to stdout.
+\item[eqawarn] \featurelabel{eqawarn} Display a QA warning message intended for ebuild developers.
+    The package manager may provide appropriate mechanisms to skip those messages for normal users.
+    Must not go to stdout. Only available in EAPIs listed in table~\ref{tab:output-commands} as
+    supporting \t{eqawarn}.
 \item[eerror] Displays an error message. Must not go to stdout.
 \item[ebegin] Displays an informational message. Should be used when beginning a possibly
     lengthy process, and followed by a call to \t{eend}.
@@ -186,13 +190,14 @@ output, using stdout as an output facility is forbidden.
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
-    \begin{tabular}{ll}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Commands can output to stdout?}} \\
+      \multicolumn{1}{c}{\textbf{Commands can output to stdout?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{eqawarn}?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & Yes \\
-      7                   & No  \\
+      0, 1, 2, 3, 4, 5, 6 & Yes & No  \\
+      7                   & No  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     90e5c41d89bedfc54e3b3967cd5cbca7f8ceea9a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 28 17:50:56 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=90e5c41d

EAPI 7 requires GNU patch 2.7.

Bug: https://bugs.gentoo.org/593786

 commands.tex         | 13 ++++++++-----
 eapi-differences.tex |  4 ++++
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/commands.tex b/commands.tex
index 86b4232..5ba9626 100644
--- a/commands.tex
+++ b/commands.tex
@@ -26,7 +26,8 @@ The following commands must always be available in the ebuild environment:
     page~\pageref{tab:bash-version}.
 \item \t{sed} must be available, and must support all forms of invocations valid for GNU sed
     version 4 or later.
-\item \t{patch} must be available, and must support all inputs valid for GNU patch.
+\item \featurelabel{gnu-patch} \t{patch} must be available, and must support all inputs valid
+    for GNU patch, version as listed in table~\ref{tab:system-commands-table}.
 \item \featurelabel{gnu-find} \t{find} and \t{xargs} must be available, and must support all forms
     of invocations valid for GNU findutils version 4.4 or later. Only for EAPIs listed in
     table~\ref{tab:system-commands-table} as requiring GNU find.
@@ -35,13 +36,15 @@ The following commands must always be available in the ebuild environment:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
-    \begin{tabular}{ll}
+    \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{GNU \t{find}?}} \\
+      \multicolumn{1}{c}{\textbf{GNU \t{find}?}} &
+      \multicolumn{1}{c}{\textbf{GNU \t{patch} version}} \\
       \midrule
-      0, 1, 2, 3, 4     & Undefined \\
-      5, 6, 7           & Yes       \\
+      0, 1, 2, 3, 4     & Undefined & Any \\
+      5, 6              & Yes       & Any \\
+      7                 & Yes       & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d738efe..47c6950 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -200,6 +200,9 @@ Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
     Yes & Yes & Yes & Yes & No \\
 
+GNU \t{patch} version & \compactfeatureref{gnu-patch} &
+    Any & Any & Any & Any & 2.7 \\
+
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
     Undefined & Undefined & Yes & Yes & Yes \\
 
@@ -441,6 +444,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{best_version} and \t{has_version} support \t{-b}, \t{-d} and \t{-r} options instead of
     \t{-{}-host-root}, \featureref{pm-query-options}.
 \item \t{ENV_UNSET}, \featureref{env-unset}.
+\item \t{patch} is compatible with GNU patch 2.7, \featureref{gnu-patch}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     cbdee0efb3f2c00e7290fd8e66ff34fd415584de
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Oct 29 09:30:43 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=cbdee0ef

EAPI 7 has controllable stripping and dostrip.

Bug: https://bugs.gentoo.org/203891

 dependencies.tex     |  4 +++-
 eapi-differences.tex |  7 ++++++
 pkg-mgr-commands.tex | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/dependencies.tex b/dependencies.tex
index 696f478..deede34 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -506,7 +506,9 @@ The following tokens are permitted inside \t{RESTRICT}:
     be checked when fetching.
 \item[fetch] The package's \t{SRC_URI} entries may not be downloaded automatically. If
     entries are not available, \t{pkg_nofetch} is called. Implies \t{mirror}.
-\item[strip] No stripping of debug symbols from files to be installed may be performed.
+\item[strip] No stripping of debug symbols from files to be installed may be performed. In EAPIs
+    listed in table~\ref{tab:dostrip} as supporting controllable stripping, this behaviour may be
+    altered by the \t{dostrip} command.
 \item[userpriv] The package manager may not drop root privileges when building the package.
 \item[test] The \t{src_test} phase must not be run.
 \end{description}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 5fb2568..6a2cab7 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -287,6 +287,12 @@ Controllable compression & \compactfeatureref{docompress} &
 \t{docompress} & \compactfeatureref{docompress} &
     No & Yes & Yes & Yes & Yes \\
 
+Controllable stripping & \compactfeatureref{dostrip} &
+    No & No & No & No & Yes \\
+
+\t{dostrip} & \compactfeatureref{dostrip} &
+    No & No & No & No & Yes \\
+
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
     No & Yes & Yes & Yes & Yes \\
 
@@ -477,6 +483,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{eqawarn}, \featureref{eqawarn}.
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
+\item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index b0ed22e..dd0b02d 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -830,6 +830,68 @@ in table~\ref{tab:compression-table} as supporting \t{docompress}.
     \end{tabular}
 \end{centertable}
 
+\subsection{Commands affecting stripping of symbols}
+
+\featurelabel{dostrip} In EAPIs listed in table~\ref{tab:dostrip} as supporting controllable
+stripping of symbols, the package manager may strip a subset of the files under the \t{ED}
+directory. To control which files may or may not be stripped, the package manager shall maintain
+two lists:
+
+\begin{compactitem}
+\item An inclusion list. If the \t{RESTRICT} variable described in section~\ref{sec:restrict}
+    enables a \t{strip} token, this list is initially empty; otherwise it initially contains \t{/}
+    (the root path).
+\item An exclusion list, which initially is empty.
+\end{compactitem}
+
+Stripping of symbols shall be carried out after \t{src_install} has completed, and before the
+execution of any subsequent phase function. For each item in the inclusion list, pretend it has the
+value of the \t{ED} variable prepended, then:
+
+\begin{compactitem}
+\item If it is a directory, act as if every file or directory immediately under this directory
+    were in the inclusion list.
+\item If the item is a file, it may be stripped unless it has been excluded as described below.
+\item If the item does not exist, it is ignored.
+\end{compactitem}
+
+Whether an item is to be excluded is determined as follows: For each item in the exclusion list,
+pretend it has the value of the \t{ED} variable prepended, then:
+
+\begin{compactitem}
+\item If it is a directory, act as if every file or directory immediately under this directory
+    were in the exclusion list.
+\item If the item is a file, it shall not be stripped.
+\item If the item does not exist, it is ignored.
+\end{compactitem}
+
+The package manager shall take appropriate steps to ensure that its stripping mechanisms behave
+sensibly even if an item is listed in the inclusion list multiple times or if an item is a symlink.
+
+The following command may be used in \t{src_install} to alter these lists. It is an error to call
+this function from any other phase.
+
+\begin{description}
+\item[dostrip] If the first argument is \t{-x}, add each of its subsequent arguments to the
+    exclusion list. Otherwise, add each argument to the inclusion list. Only available in EAPIs
+    listed in table~\ref{tab:dostrip} as supporting \t{dostrip}.
+\end{description}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting controllable stripping}
+    \label{tab:dostrip}
+    \begin{tabular}{lll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports controllable stripping?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{dostrip}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  \\
+      7                   & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{USE list functions}
 These functions provide behaviour based upon set or unset use flags. Ebuilds must not run any of
 these commands once the current phase function has returned. It is an error if an ebuild calls any


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     f93f456838edc1206228e98fbdaed0281bbca50e
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 29 13:41:52 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f93f4568

EAPI 7: domo installs to /usr.

Bug: https://bugs.gentoo.org/595924

 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 25 ++++++++++++++++++++-----
 2 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index ddf480e..5fb2568 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -275,6 +275,9 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
     * & Yes & Yes & Yes & Yes \\
 
+\t{domo} destination path & \compactfeatureref{domo-path} &
+    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} \\
+
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
     No & No & Yes & Yes & Yes \\
 
@@ -473,6 +476,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Output commands no longer use stdout, \featureref{output-no-stdout}.
 \item \t{eqawarn}, \featureref{eqawarn}.
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
+\item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 0a0997a..b0ed22e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -592,11 +592,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     the empty string. In EAPIs specified by table~\ref{tab:doman-table}, the \t{-i18n} option takes
     precedence over the language code in the filename.
 
-\item[domo] Installs the given \t{.mo} files with file mode \t{0644} into the appropriate
-    subdirectory of \t{DESTTREE\slash share\slash locale}, generated by taking the basename of the
-    file, removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed
-    files is the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
-    section~\ref{sec:failure-behaviour}.
+\item[domo] \featurelabel{domo-path} Installs the given \t{.mo} files with file mode \t{0644} into
+    the appropriate subdirectory of the locale tree, generated by taking the basename of the file,
+    removing the \t{.*} suffix, and appending \t{/LC_MESSAGES}\@. The name of the installed files
+    is the package name with \t{.mo} appended. Failure behaviour is EAPI dependent as per
+    section~\ref{sec:failure-behaviour}. The locale tree location is EAPI dependent as per
+    table~\ref{tab:domo-path}.
 
 \item[dosbin] As \t{dobin}, but installs to \t{DESTTREE/sbin}.
 
@@ -716,6 +717,20 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{\t{domo} destination path in EAPIs}
+    \label{tab:domo-path}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Destination path}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
+      7                   & \t{/usr/share/locale} \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Commands affecting install destinations}
 The following commands are used to set the various destination trees, all relative to \t{\$\{ED\}} in
 offset-prefix aware EAPIs and relative to \t{\$\{D\}} in offset-prefix agnostic EAPIs, used by the


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     38bce18a82faf919a76c066485c92ea8dff9d31b
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 31 18:19:03 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=38bce18a

Trim the width of several tables.

tab:optional-vars-table: Reduce column separation very slightly
(by 0.1pt) to make the width of the table fit.

tab:added-env-vars-table was also too wide, which is fixed by reducing
the width of the paragraph type columns.

tab:econf-options-table: Change columns with overlong headers to
paragraph type, in order to allow line breaks.

 ebuild-env-vars.tex  | 8 ++++----
 ebuild-vars.tex      | 1 +
 pkg-mgr-commands.tex | 4 ++--
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index c9ebf9b..7836bd9 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -266,10 +266,10 @@ variable.
     \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+      \multicolumn{1}{P{3.25em}}{\textbf{\t{MERGE_TYPE}?}} &
+      \multicolumn{1}{P{5.25em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
+      \multicolumn{1}{P{5.75em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
+      \multicolumn{1}{P{5.75em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
       \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} &
       \multicolumn{1}{c}{\textbf{\t{BROOT}?}} \\
       \midrule

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b873051..5169e0a 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -110,6 +110,7 @@ Ebuilds may define any of the following variables:
 \ChangeWhenAddingAnEAPI{7}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
+    \addtolength{\tabcolsep}{-0.1pt} % table is very slightly too wide
     \begin{tabular}{llll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index b49e9b3..266fc36 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -360,8 +360,8 @@ current phase function has returned.
         \begin{tabular}{llllll}
           \toprule
           \multicolumn{1}{c}{\textbf{EAPI}} &
-          \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
-          \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
+          \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
+          \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
           \multicolumn{1}{c}{\textbf{-{}-docdir}} &
           \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
           \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     6bda8dc5d0d1b10bcdd6ef79db2947382706e7a8
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov  5 16:08:23 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=6bda8dc5

pkg-mgr-commands.tex: Join docompress and dostrip sections.

 dependencies.tex     |   4 +-
 pkg-mgr-commands.tex | 130 +++++++++++++++++++--------------------------------
 2 files changed, 49 insertions(+), 85 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index deede34..7ae119b 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -507,8 +507,8 @@ The following tokens are permitted inside \t{RESTRICT}:
 \item[fetch] The package's \t{SRC_URI} entries may not be downloaded automatically. If
     entries are not available, \t{pkg_nofetch} is called. Implies \t{mirror}.
 \item[strip] No stripping of debug symbols from files to be installed may be performed. In EAPIs
-    listed in table~\ref{tab:dostrip} as supporting controllable stripping, this behaviour may be
-    altered by the \t{dostrip} command.
+    listed in table~\ref{tab:staging-area-commands} as supporting controllable stripping, this
+    behaviour may be altered by the \t{dostrip} command.
 \item[userpriv] The package manager may not drop root privileges when building the package.
 \item[test] The \t{src_test} phase must not be run.
 \end{description}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index dd0b02d..ed3af1b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -768,27 +768,25 @@ has returned.
 
 \end{description}
 
-\subsection{Commands affecting install compression}
+\subsection{Commands controlling manipulation of files in the staging area}
+These commands are used to control optional manipulations that the package manager may perform on
+files in the staging directory \t{ED}, like compressing files or stripping symbols from object
+files.
 
-\featurelabel{docompress} In EAPIs listed in table~\ref{tab:compression-table} as supporting
-controllable compression, the package manager may optionally compress a subset of the files under
-the \t{ED} directory. To control which directories may or may not be compressed, the package manager
-shall maintain two lists:
-
-\begin{compactitem}
-\item An inclusion list, which initially contains \t{/usr/share/doc}, \t{/usr/share/info} and
-    \t{/usr/share/man}.
-\item An exclusion list, which initially contains \t{/usr/share/doc/\$\{PF\}/html}.
-\end{compactitem}
+For each of the operations mentioned below, the package manager shall maintain an inclusion list
+and an exclusion list, in order to control which directories and files the operation may or may not
+be performed upon. The initial contents of the two lists is specified below for each of the
+commands, respectively.
 
-The optional compression shall be carried out after \t{src_install} has completed, and before the
-execution of any subsequent phase function. For each item in the inclusion list, pretend it has the
-value of the \t{ED} variable prepended, then:
+Any of these operations shall be carried out after \t{src_install} has completed, and before the
+execution of any subsequent phase function. For each item in the inclusion list, pretend it has
+the value of the \t{ED} variable prepended, then:
 
 \begin{compactitem}
 \item If it is a directory, act as if every file or directory immediately under this directory
     were in the inclusion list.
-\item If the item is a file, it may be compressed unless it has been excluded as described below.
+\item If the item is a file, the operation may be performed on it, unless it has been excluded as
+    described below.
 \item If the item does not exist, it is ignored.
 \end{compactitem}
 
@@ -798,96 +796,62 @@ pretend it has the value of the \t{ED} variable prepended, then:
 \begin{compactitem}
 \item If it is a directory, act as if every file or directory immediately under this directory
     were in the exclusion list.
-\item If the item is a file, it shall not be compressed.
+\item If the item is a file, the operation shall not be performed on it.
 \item If the item does not exist, it is ignored.
 \end{compactitem}
 
-The package manager shall take appropriate steps to ensure that its compression mechanisms behave
-sensibly even if an item is listed in the inclusion list multiple times, if an item is a symlink,
-or if a file is already compressed.
-
-The following commands may be used in \t{src_install} to alter these lists. It is an error to call
-any of these functions from any other phase.
-
-\begin{description}
-\item[docompress] If the first argument is \t{-x}, add each of its subsequent arguments to the
-exclusion list. Otherwise, add each argument to the inclusion list. Only available in EAPIs listed
-in table~\ref{tab:compression-table} as supporting \t{docompress}.
-\end{description}
-
-\ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting controllable compression}
-    \label{tab:compression-table}
-    \begin{tabular}{lll}
-      \toprule
-      \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports controllable compression?}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{docompress}?}} \\
-      \midrule
-      0, 1, 2, 3        & No  & No  \\
-      4, 5, 6, 7        & Yes & Yes \\
-      \bottomrule
-    \end{tabular}
-\end{centertable}
-
-\subsection{Commands affecting stripping of symbols}
+The package manager shall take appropriate steps to ensure that any operations that it performs on
+files in the staging area behave sensibly even if an item is listed in the inclusion list multiple
+times or if an item is a symlink.
 
-\featurelabel{dostrip} In EAPIs listed in table~\ref{tab:dostrip} as supporting controllable
-stripping of symbols, the package manager may strip a subset of the files under the \t{ED}
-directory. To control which files may or may not be stripped, the package manager shall maintain
-two lists:
+\featurelabel{docompress} In EAPIs listed in table~\ref{tab:staging-area-commands} as supporting
+controllable compression, the package manager may optionally compress a subset of the files under
+the \t{ED} directory. The package manager shall ensure that its compression mechanisms behave
+sensibly even if a file is already compressed. For compression, the initial values of the two lists
+are as follows:
 
 \begin{compactitem}
-\item An inclusion list. If the \t{RESTRICT} variable described in section~\ref{sec:restrict}
-    enables a \t{strip} token, this list is initially empty; otherwise it initially contains \t{/}
-    (the root path).
-\item An exclusion list, which initially is empty.
+\item The inclusion list contains \t{/usr/share/doc}, \t{/usr/share/info} and \t{/usr/share/man}.
+\item The exclusion list contains \t{/usr/share/doc/\$\{PF\}/html}.
 \end{compactitem}
 
-Stripping of symbols shall be carried out after \t{src_install} has completed, and before the
-execution of any subsequent phase function. For each item in the inclusion list, pretend it has the
-value of the \t{ED} variable prepended, then:
+\featurelabel{dostrip} In EAPIs listed in table~\ref{tab:staging-area-commands} as supporting
+controllable stripping of symbols, the package manager may strip a subset of the files under the
+\t{ED} directory. For stripping of symbols, the initial values of the two lists are as follows:
 
 \begin{compactitem}
-\item If it is a directory, act as if every file or directory immediately under this directory
-    were in the inclusion list.
-\item If the item is a file, it may be stripped unless it has been excluded as described below.
-\item If the item does not exist, it is ignored.
+\item If the \t{RESTRICT} variable described in section~\ref{sec:restrict} enables a \t{strip}
+    token, the inclusion list is empty; otherwise it contains \t{/} (the root path).
+\item The exclusion list is empty.
 \end{compactitem}
 
-Whether an item is to be excluded is determined as follows: For each item in the exclusion list,
-pretend it has the value of the \t{ED} variable prepended, then:
-
-\begin{compactitem}
-\item If it is a directory, act as if every file or directory immediately under this directory
-    were in the exclusion list.
-\item If the item is a file, it shall not be stripped.
-\item If the item does not exist, it is ignored.
-\end{compactitem}
-
-The package manager shall take appropriate steps to ensure that its stripping mechanisms behave
-sensibly even if an item is listed in the inclusion list multiple times or if an item is a symlink.
-
-The following command may be used in \t{src_install} to alter these lists. It is an error to call
-this function from any other phase.
+The following commands may be used in \t{src_install} to alter these lists. It is an error to call
+any of these functions from any other phase.
 
 \begin{description}
+\item[docompress] If the first argument is \t{-x}, add each of its subsequent arguments to the
+    exclusion list for compression. Otherwise, add each argument to the respective inclusion list.
+    Only available in EAPIs listed in table~\ref{tab:staging-area-commands} as supporting
+    \t{docompress}.
+
 \item[dostrip] If the first argument is \t{-x}, add each of its subsequent arguments to the
-    exclusion list. Otherwise, add each argument to the inclusion list. Only available in EAPIs
-    listed in table~\ref{tab:dostrip} as supporting \t{dostrip}.
+    exclusion list for stripping of symbols. Otherwise, add each argument to the respective
+    inclusion list. Only available in EAPIs listed in table~\ref{tab:staging-area-commands} as
+    supporting \t{dostrip}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{7}
-\begin{centertable}{EAPIs supporting controllable stripping}
-    \label{tab:dostrip}
+\begin{centertable}{Commands controlling manipulation of files in the staging area in EAPIs}
+    \label{tab:staging-area-commands}
     \begin{tabular}{lll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports controllable stripping?}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{dostrip}?}} \\
+      \multicolumn{1}{P{13.5em}}{\textbf{Supports controllable compression and \t{docompress}?}} &
+      \multicolumn{1}{P{10.5em}}{\textbf{Supports controllable stripping and \t{dostrip}?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5, 6 & No  & No  \\
-      7                   & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  \\
+      4, 5, 6           & Yes & No  \\
+      7                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     c93d358570ce434f444c0ee59999add7bc9d9a58
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 27 21:23:22 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=c93d3585

EAPI 7 has version manipulation and comparison functions

Bug: https://bugs.gentoo.org/482170

 eapi-differences.tex |  4 +++
 pkg-mgr-commands.tex | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 84 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6a2cab7..8deba55 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -302,6 +302,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{in_iuse} & \compactfeatureref{in-iuse} &
     No & No & No & Yes & Yes \\
 
+\t{ver_*} commands & \compactfeatureref{ver-commands} &
+    No & No & No & No & Yes \\
+
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
     No & No & No & Yes & Yes \\
 
@@ -484,6 +487,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
+\item Version manipulation and comparison commands, \featureref{ver-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ed3af1b..b49e9b3 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -952,6 +952,86 @@ These functions check whitespace-separated lists for a particular value.
 \item[hasq] Deprecated synonym for \t{has}.
 \end{description}
 
+\subsection{Version manipulation and comparison commands}
+\featurelabel{ver-commands}
+These commands provide utilities for working with version strings. Their availability per EAPI is
+listed in table~\ref{tab:version-commands}.
+
+For the purpose of version manipulation commands, the specification provides a method for splitting
+an arbitrary version string (not necessarily conforming to section~\ref{sec:version-spec}) into
+a series of version components and version separators.
+
+A version component consists either purely of digits (\t{[0-9]+}) or purely of uppercase and
+lowercase ASCII letters (\t{[A-Za-z]+}). A version separator is either a string of any other
+characters (\t{[\textasciicircum A-Za-z0-9]}) or it occurs at the transition between a sequence
+of digits and a sequence of letters, or vice versa. In the latter case, the version separator is
+an empty string.
+
+The version string is processed left-to-right, with the successive version components being assigned
+successive indices starting with 1. The separator following a version component is assigned
+the index of the preceding version component. If the first version component is preceded by
+a non-empty string of version separator characters, this separator is assigned the index 0.
+
+The version components are presumed present if not empty. The version separators between version
+components are always presumed present, even if they are empty. The version separators preceding
+the first version component and following the last are only presumed present if they are not empty.
+
+Whenever the commands support ranges, the range is specified as a non-negative integer, optionally
+followed by a hyphen (\t{-}), which in turn is optionally followed by another non-negative integer.
+
+A single integer specifies a single component or separator index. An integer followed by a hyphen
+specifies all components or separators starting with the one at the specified index. Two integers
+separated by a hyphen specify a range of versions starting at the index specified by the first
+and ending at the second, inclusively.
+
+\begin{description}
+\item[ver_cut] Takes a range as the first argument, and optionally a version string as the second.
+    Prints a substring of the version string starting at the version component specified as start
+    of the range and ending at the version component specified as end of the range. If the version
+    string is not specified, \t{\$\{PVR\}} is used.
+
+    If the range spans outside the present version components, the missing components and separators
+    are presumed empty. In particular, the range starting at zero includes the zeroth version
+    separator if present, and the range spanning past the last version component includes the suffix
+    following it if present. A range that does not intersect with any present version components
+    yields an empty string.
+
+\item[ver_rs] Takes one or more pairs of arguments, optionally followed by a version string.
+    Every argument pair specifies a range and a replacement string. Prints a version string after
+    performing the specified separator substitutions. If the version string is not specified,
+    \t{\$\{PVR\}} is used.
+
+    For every argument pair specified, each of the version separators present at indices specified
+    by the range is replaced with the replacement string, in order. If the range spans outside
+    the range of present version separators, it is silently truncated.
+
+\item[ver_test] Takes two or three arguments. In the 3-argument form, takes an LHS version string,
+    followed by an operator, followed by an RHS version string. In the 2-argument form, the first
+    version string is omitted and \t{\$\{PVR\}} is used as LHS version string. The operator can be
+    \t{-eq} (equal to), \t{-ne} (not equal to), \t{-gt} (greater than), \t{-ge} (greater than or
+    equal to), \t{-lt} (less than) or \t{-le} (less than or equal to). Returns shell true (0) if
+    the specified relation between the LHS and RHS version strings is fulfilled.
+
+    Both version strings must conform to the version specification in
+    section~\ref{sec:version-spec}. Comparison is done using algorithm~\ref{alg:version-comparison}.
+\end{description}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting version manipulation commands}
+    \label{tab:version-commands}
+    \begin{tabular}{llll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
+      7                   & Yes & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Misc commands}
 The following commands are always available in the ebuild environment, but don't really fit in any
 of the above categories. Ebuilds must not run any of these commands once the current phase function


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-02-24 12:58 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-02-24 12:58 UTC (permalink / raw
  To: gentoo-commits

commit:     e21634017ce2cd3f7b63954cd122f315f2b97e40
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Nov  7 17:21:09 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Feb 24 12:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e2163401

Add chewi to acknowledgements.

 introduction.tex | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/introduction.tex b/introduction.tex
index 5990f86..afbe708 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -62,9 +62,10 @@ applicable to tools or other applications that interact with ebuilds or ebuild r
 Thanks to Mike Kelly (package manager provided utilities, section~\ref{sec:pkg-mgr-commands}),
 Danny van Dyk (ebuild functions, section~\ref{sec:ebuild-functions}), David Leverton (various
 sections), Petteri Räty (environment state, section~\ref{sec:ebuild-env-state}), Michał Górny
-(various sections), Andreas K. Hüttel (stable use masking, section~\ref{sec:use-masking}) and
-Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) for contributions. Thanks also to
-Mike Frysinger and Brian Harring for proof-reading and suggestions for fixes and/or clarification.
+(various sections), Andreas K. Hüttel (stable use masking, section~\ref{sec:use-masking}),
+Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) and James Le Cuirot (build dependencies,
+section~\ref{sec:ebuild-env-vars}) for contributions. Thanks also to Mike Frysinger and
+Brian Harring for proof-reading and suggestions for fixes and/or clarification.
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-03-09 16:51 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-03-09 16:51 UTC (permalink / raw
  To: gentoo-commits

commit:     42ee1314dd89baf5a7323e2f763c4e26d1fe99aa
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Mar  3 13:02:22 2018 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Mar  3 13:02:22 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=42ee1314

EAPI 7: DESTTREE and INSDESTTREE retained as conceptual variables.

 ebuild-env-vars.tex | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 7836bd9..2207539 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -201,12 +201,14 @@ variable.
     No &
     \featurelabel{desttree} Controls the location where \t{dobin}, \t{dolib}, \t{domo},
     and \t{dosbin} install things. Only for EAPIs listed in table~\ref{tab:removed-env-vars-table}
-    as supporting \t{DESTTREE}. \\
+    as supporting \t{DESTTREE}. In all other EAPIs, this is retained as a conceptual variable not
+    exported to the ebuild environment. \\
 \t{INSDESTTREE} &
     \t{src_install} &
     No &
     \featurelabel{insdesttree} Controls the location where \t{doins} installs things. Only for EAPIs
-    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{INSDESTTREE}. \\
+    listed in table~\ref{tab:removed-env-vars-table} as supporting \t{INSDESTTREE}. In all other
+    EAPIs, this is retained as a conceptual variable not exported to the ebuild environment. \\
 \t{USE} &
     All &
     Yes &


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-04-05 16:57 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-04-05 16:57 UTC (permalink / raw
  To: gentoo-commits

commit:     508ee860a3bf03ed903f5987a9e48fd7bb6c3a01
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 31 18:19:03 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Apr  5 16:48:17 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=508ee860

Trim the width of several tables.

tab:added-env-vars-table was too wide, which is fixed by reducing
the width of the paragraph type columns.

tab:econf-options-table: Change columns with overlong headers to
paragraph type, in order to allow line breaks.

 ebuild-env-vars.tex  | 8 ++++----
 pkg-mgr-commands.tex | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 526f8e3..f84263d 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -268,10 +268,10 @@ variable.
     \begin{tabular}{lllllll}
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{MERGE_TYPE}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
-      \multicolumn{1}{P{6em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
+      \multicolumn{1}{P{3.25em}}{\textbf{\t{MERGE_TYPE}?}} &
+      \multicolumn{1}{P{5.25em}}{\textbf{\t{REPLACING_VERSIONS}?}} &
+      \multicolumn{1}{P{5.75em}}{\textbf{\t{REPLACED_BY_VERSION}?}} &
+      \multicolumn{1}{P{5.75em}}{\textbf{\t{EBUILD_PHASE_FUNC}?}} &
       \multicolumn{1}{c}{\textbf{\t{SYSROOT}?}} &
       \multicolumn{1}{c}{\textbf{\t{BROOT}?}} \\
       \midrule

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 09515ef..506673b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -332,8 +332,8 @@ current phase function has returned.
         \begin{tabular}{llllll}
           \toprule
           \multicolumn{1}{c}{\textbf{EAPI}} &
-          \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
-          \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
+          \multicolumn{1}{P{9em}}{\textbf{-{}-disable-dependency-tracking}} &
+          \multicolumn{1}{P{5em}}{\textbf{-{}-disable-silent-rules}} &
           \multicolumn{1}{c}{\textbf{-{}-docdir}} &
           \multicolumn{1}{c}{\textbf{-{}-htmldir}} &
           \multicolumn{1}{c}{\textbf{-{}-with-sysroot}} \\


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-04-05 16:57 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-04-05 16:57 UTC (permalink / raw
  To: gentoo-commits

commit:     fc07858c8ea68705d46be53783813ab726b27703
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Nov  7 17:21:09 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Apr  5 16:48:17 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=fc07858c

Add chewi to acknowledgements.

 introduction.tex | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/introduction.tex b/introduction.tex
index 5990f86..afbe708 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -62,9 +62,10 @@ applicable to tools or other applications that interact with ebuilds or ebuild r
 Thanks to Mike Kelly (package manager provided utilities, section~\ref{sec:pkg-mgr-commands}),
 Danny van Dyk (ebuild functions, section~\ref{sec:ebuild-functions}), David Leverton (various
 sections), Petteri Räty (environment state, section~\ref{sec:ebuild-env-state}), Michał Górny
-(various sections), Andreas K. Hüttel (stable use masking, section~\ref{sec:use-masking}) and
-Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) for contributions. Thanks also to
-Mike Frysinger and Brian Harring for proof-reading and suggestions for fixes and/or clarification.
+(various sections), Andreas K. Hüttel (stable use masking, section~\ref{sec:use-masking}),
+Zac Medico (sub-slots, section~\ref{sec:mandatory-vars}) and James Le Cuirot (build dependencies,
+section~\ref{sec:ebuild-env-vars}) for contributions. Thanks also to Mike Frysinger and
+Brian Harring for proof-reading and suggestions for fixes and/or clarification.
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-04-05 16:57 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-04-05 16:57 UTC (permalink / raw
  To: gentoo-commits

commit:     c9c5a2f0cf7671d73a78a544d28c361ecd5a2b3c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 27 21:23:22 2017 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Apr  5 16:48:17 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=c9c5a2f0

EAPI 7 has version manipulation and comparison functions

Bug: https://bugs.gentoo.org/482170

 eapi-differences.tex |  4 +++
 pkg-mgr-commands.tex | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 84 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a203f89..a626b74 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -290,6 +290,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{in_iuse} & \compactfeatureref{in-iuse} &
     No & No & No & Yes & Yes \\
 
+\t{ver_*} commands & \compactfeatureref{ver-commands} &
+    No & No & No & No & Yes \\
+
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
     No & No & No & Yes & Yes \\
 
@@ -468,6 +471,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item \t{die} is guaranteed to work in a subshell, \featureref{subshell-die}.
 \item \t{domo} installs to \t{/usr}, \featureref{domo-path}.
 \item Controllable stripping and \t{dostrip}, \featureref{dostrip}.
+\item Version manipulation and comparison commands, \featureref{ver-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{7}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index f84f13d..09515ef 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -922,6 +922,86 @@ These functions check whitespace-separated lists for a particular value.
 \item[hasq] Deprecated synonym for \t{has}.
 \end{description}
 
+\subsection{Version manipulation and comparison commands}
+\featurelabel{ver-commands}
+These commands provide utilities for working with version strings. Their availability per EAPI is
+listed in table~\ref{tab:version-commands}.
+
+For the purpose of version manipulation commands, the specification provides a method for splitting
+an arbitrary version string (not necessarily conforming to section~\ref{sec:version-spec}) into
+a series of version components and version separators.
+
+A version component consists either purely of digits (\t{[0-9]+}) or purely of uppercase and
+lowercase ASCII letters (\t{[A-Za-z]+}). A version separator is either a string of any other
+characters (\t{[\textasciicircum A-Za-z0-9]}) or it occurs at the transition between a sequence
+of digits and a sequence of letters, or vice versa. In the latter case, the version separator is
+an empty string.
+
+The version string is processed left-to-right, with the successive version components being assigned
+successive indices starting with 1. The separator following a version component is assigned
+the index of the preceding version component. If the first version component is preceded by
+a non-empty string of version separator characters, this separator is assigned the index 0.
+
+The version components are presumed present if not empty. The version separators between version
+components are always presumed present, even if they are empty. The version separators preceding
+the first version component and following the last are only presumed present if they are not empty.
+
+Whenever the commands support ranges, the range is specified as an unsigned integer, optionally
+followed by a hyphen (\t{-}), which in turn is optionally followed by another unsigned integer.
+
+A single integer specifies a single component or separator index. An integer followed by a hyphen
+specifies all components or separators starting with the one at the specified index. Two integers
+separated by a hyphen specify a range of versions starting at the index specified by the first
+and ending at the second, inclusively.
+
+\begin{description}
+\item[ver_cut] Takes a range as the first argument, and optionally a version string as the second.
+    Prints a substring of the version string starting at the version component specified as start
+    of the range and ending at the version component specified as end of the range. If the version
+    string is not specified, \t{\$\{PVR\}} is used.
+
+    If the range spans outside the present version components, the missing components and separators
+    are presumed empty. In particular, the range starting at zero includes the zeroth version
+    separator if present, and the range spanning past the last version component includes the suffix
+    following it if present. A range that does not intersect with any present version components
+    yields an empty string.
+
+\item[ver_rs] Takes one or more pairs of arguments, optionally followed by a version string.
+    Every argument pair specifies a range and a replacement string. Prints a version string after
+    performing the specified separator substitutions. If the version string is not specified,
+    \t{\$\{PVR\}} is used.
+
+    For every argument pair specified, each of the version separators present at indices specified
+    by the range is replaced with the replacement string, in order. If the range spans outside
+    the range of present version separators, it is silently truncated.
+
+\item[ver_test] Takes two or three arguments. In the 3-argument form, takes an LHS version string,
+    followed by an operator, followed by an RHS version string. In the 2-argument form, the first
+    version string is omitted and \t{\$\{PVR\}} is used as LHS version string. The operator can be
+    \t{-eq} (equal to), \t{-ne} (not equal to), \t{-gt} (greater than), \t{-ge} (greater than or
+    equal to), \t{-lt} (less than) or \t{-le} (less than or equal to). Returns shell true (0) if
+    the specified relation between the LHS and RHS version strings is fulfilled.
+
+    Both version strings must conform to the version specification in
+    section~\ref{sec:version-spec}. Comparison is done using algorithm~\ref{alg:version-comparison}.
+\end{description}
+
+\ChangeWhenAddingAnEAPI{7}
+\begin{centertable}{EAPIs supporting version manipulation commands}
+    \label{tab:version-commands}
+    \begin{tabular}{llll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_cut}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_rs}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
+      7                   & Yes & Yes & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsection{Misc commands}
 The following commands are always available in the ebuild environment, but don't really fit in any
 of the above categories. Ebuilds must not run any of these commands once the current phase function


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-04-26  6:30 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-04-26  6:30 UTC (permalink / raw
  To: gentoo-commits

commit:     826ff37e9f2d1f6b9808e8eccfbf87d3b0509e12
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Apr  5 16:53:09 2018 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Apr  5 16:53:09 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=826ff37e

Cheat sheet: Fix undefined reference.

 eapi-cheatsheet.tex | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 6833c79..14ca8ca 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -297,7 +297,7 @@ differences between these previous EAPIs.
     \item[\code{has_version} and \code{best_version} changes]
     The two helpers support a \code{-{}-host-root} option that causes
     the query to apply to the host root instead of \code{ROOT}.
-    See~\featureref{host-root-option}.
+    See~\featureref{pm-query-options}.
     \item[\code{usex}] Usage for this helper function is
     \code{usex} \emph{<USE flag> [true1] [false1] [true2] [false2]}.
     If the USE flag is set, outputs \emph{[true1][true2]}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-04-26 20:16 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-04-26 20:16 UTC (permalink / raw
  To: gentoo-commits

commit:     49fa11cf4db1d10f311ff738531e5477cfeb4dbc
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Apr 25 17:10:23 2018 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Apr 26 04:59:26 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=49fa11cf

Cheat sheet: Update for EAPI 7.

 eapi-cheatsheet.tex | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 117 insertions(+), 1 deletion(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index cce3218..7095705 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -14,7 +14,7 @@
 \usepackage[nohyphen]{underscore}
 \newcommand{\code}[1]{\texttt{#1}}
 % This should reflect the latest approved EAPI version
-\newcommand{\version}{6.0}
+\newcommand{\version}{7.0}
 \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
 \renewcommand{\familydefault}{\sfdefault}
 \urlstyle{sf}
@@ -401,6 +401,122 @@ differences between these previous EAPIs.
     as replacement.
     See \featureref{banned-commands}.
 \end{description}
+
+\section{EAPI 7}
+\label{sec:cs:eapi7}
+\subsection{Additions/Changes}
+\label{sec:cs:eapi7-additions}
+\begin{description}
+    \item[\code{package.*} and \code{use.*}] These profile files can
+    be directories instead of regular files. This is intended to be
+    used in overlays only.
+    See \featureref{package-mask-dir} and \featureref{profile-file-dirs}.
+    \item[\code{||} and \code{\textasciicircum\textasciicircum}
+    dependency groups] These groups now evaluate to false when they
+    are empty (for example, if there are only unmatched use
+    dependencies inside of them).
+    See \featureref{empty-dep-groups}.
+    \item[No trailing slash] The paths specified by \code{ROOT},
+    \code{EROOT}, \code{D}, and \code{ED} no longer end with a slash.
+    Thus, default \code{ROOT} is empty now.
+    See \featureref{trailing-slash}.
+    \item[Cross compilation support] Several variables have been added
+    and some commands have been extended for better cross compilation
+    support:
+    \begin{description}
+        \item[\code{BDEPEND}] Build dependencies are divided into two
+        classes: \code{BDEPEND} for native build tools (\code{CBUILD});
+        \code{DEPEND} for dependencies compatible with the system
+        being built (\code{CHOST}).
+        See \featureref{bdepend}.
+        \item[\code{SYSROOT}] The path to the root directory for
+        \code{DEPEND} type dependencies.
+        See \featureref{sysroot}.
+        \item[\code{ESYSROOT}] The concatenation of the \code{SYSROOT}
+        and \code{EPREFIX} paths, for convenience.
+        \item[\code{BROOT}] The prefixed root directory path for
+        \code{BDEPEND} type dependencies, typically executable build
+        tools.
+        See \featureref{broot}.
+        \item[\code{econf}]
+        Option \code{-{}-with-sysroot=\$\{ESYSROOT\}} is passed to
+        configure, if this option is supported.
+        See \featureref{econf-options}.
+        \item[\code{has_version} and \code{best_version}] These
+        helpers support \code{-b}, \code{-d} or \code{-r} options,
+        causing the query to apply to \code{BDEPEND}, \code{DEPEND}
+        or \code{RDEPEND} (the default). This replaces the
+        \code{-{}-host-root} option.
+        See \featureref{pm-query-options}.
+    \end{description}
+    \item[Environment blacklist] Any environment variable listed in
+    the profile-defined \code{ENV_UNSET} variable will be unset by the
+    package manager.
+    See \featureref{env-unset}.
+    \item[\code{patch}] All inputs valid for GNU patch version 2.7
+    are supported. Especially, this includes support for git-formatted
+    patches.
+    See \featureref{gnu-patch}.
+    \item[\code{nonfatal}] In addition to its definition as a shell
+    function, the \code{nonfatal} wrapper has now a fallback
+    implementation as an external command. Thus, it can be called
+    from other commands.
+    See \featureref{nonfatal}.
+    \item[Output commands] \code{einfo} and friends no longer use
+    stdout, so inside of command substitution their output won't be
+    caught.
+    See \featureref{output-no-stdout}.
+    \item[\code{eqawarn}] The \code{eqawarn} output command is
+    supported in the package manager itself.
+    See \featureref{eqawarn}.
+    \item[\code{die} in subshell] The \code{die} command is guaranteed
+    to work in a subshell context.
+    See \featureref{subshell-die}.
+    \item[\code{domo} destination] \code{domo} installs the specified
+    files under \code{/usr/share/locale} instead of
+    \code{\$\{DESTTREE\}/\allowbreak share/locale}.
+    See \featureref{domo-path}.
+    \item[Controllable stripping] The \code{dostrip -x} command can be
+    used to add paths to an exclusion list for stripping of debug
+    symbols, to allow more fine-grained control than with
+    \code{RESTRICT="strip"}.
+    See \featureref{dostrip}.
+    \item[Version manipulation and comparison commands] \mbox{}
+    \begin{description}
+        \item[\code{ver_cut} \emph{range} {[\emph{version}]}]
+        Print the version substring specified by \emph{range}.
+        \emph{version} defaults to \code{PV}.
+        \item[\code{ver_rs} \emph{range repl} \dots\ {[\emph{version}]}]
+        Replace all version separators in \emph{range} by string
+        \emph{repl}. Multiple \emph{range repl} pairs are allowed.
+        \emph{version} defaults to \code{PV}.
+        \item[\code{ver_test} {[\emph{v1}]} \emph{op  v2}]
+        Check if the relation \emph{v1 op v2} is true.
+        \emph{v1} defaults to \code{PVR}; \emph{op} can be \code{-eq},
+        \code{-ne}, \code{-gt}, \code{-ge}, \code{-lt} or \code{-le}.
+    \end{description}
+    See \featureref{ver-commands}.
+\end{description}
+\subsection{Removals/Bans}
+\label{sec:cs:eapi7-removalsbans}
+\begin{description}
+    \item[\code{package.provided}] Deprecated since a long time and
+    finally dropped.
+    See \featureref{package-provided}.
+    \item[\code{PORTDIR} and \code{ECLASSDIR}] No longer defined,
+    because ebuilds should not directly access files in the repository.
+    See \featureref{portdir} and \featureref{eclassdir}.
+    \item[\code{DESTTREE} and \code{INSDESTTREE}] Not defined any
+    more. Use the \code{into} and \code{insinto} commands instead.
+    See \featureref{desttree} and \featureref{insdesttree}.
+    \item[\code{dohtml}] No longer allowed. \code{doins -r} can be
+    used as a replacement.
+    See \featureref{banned-commands}.
+    \item[\code{dolib} and \code{libopts}] No longer allowed.
+    The specific \code{dolib.a} or \code{dolib.so} commands should be
+    used as replacement.
+    See \featureref{banned-commands}.
+\end{description}
 \end{document}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=70 spell spelllang=en :


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-04-26 20:16 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-04-26 20:16 UTC (permalink / raw
  To: gentoo-commits

commit:     4ff018d6b84566535ae4c218fb02397a7a0ccf2b
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Apr  5 16:54:30 2018 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Apr  5 16:54:30 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=4ff018d6

Cheat sheet: Remove EAPIs 3 and 4 to make room for EAPI 7.

 eapi-cheatsheet.tex | 202 ++++++++++++++++++++++++++--------------------------
 1 file changed, 101 insertions(+), 101 deletions(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 14ca8ca..cce3218 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -76,7 +76,7 @@
     \footnote{\url{http://creativecommons.org/licenses/by-sa/3.0/}}
 \end{abstract}
 
-\section{EAPIs 0, 1, and 2}
+\section{EAPIs 0, 1, 2, 3, and 4}
 \label{sec:cs:eapi0-2}
 Omitted for lack of space. See version~5.0 of this document for
 differences between these previous EAPIs.
@@ -154,107 +154,107 @@ differences between these previous EAPIs.
 %     \code{-i18n} switch with EAPI 4.  See \featureref{doman-langs}.
 % \end{description}
 
-\section{EAPI 3 (2010-01-18)}
-\label{sec:cs:eapi3}
-\subsection{Additions/Changes}
-\label{sec:cs:eapi3-additions}
-\begin{description}
-    \item[Support for \code{.xz}] Unpack of \code{.xz} and
-    \code{.tar.xz} files is possible without any custom
-    \code{src_unpack} functions.  See \featureref{unpack-extensions}.
-    \item[Offset prefix] Supporting installation on Prefix-enabled
-    systems will be easier with this EAPI.
-\end{description}
+% \section{EAPI 3 (2010-01-18)}
+% \label{sec:cs:eapi3}
+% \subsection{Additions/Changes}
+% \label{sec:cs:eapi3-additions}
+% \begin{description}
+%     \item[Support for \code{.xz}] Unpack of \code{.xz} and
+%     \code{.tar.xz} files is possible without any custom
+%     \code{src_unpack} functions.  See \featureref{unpack-extensions}.
+%     \item[Offset prefix] Supporting installation on Prefix-enabled
+%     systems will be easier with this EAPI.
+% \end{description}
 
-\section{EAPI 4 (2011-01-17)}
-\label{sec:cs:eapi4}
-\subsection{Additions/Changes}
-\label{sec:cs:eapi4-additions}
-\begin{description}
-    \item[\code{pkg_pretend}] Some useful checks (kernel options for
-    example) can be placed in this new phase to inform the user early
-    (when just pretending to emerge the package).  Most checks should
-    usually be repeated in \code{pkg_setup}.
-    See \featureref{pkg-pretend}.
-    \item[\code{src_install}] The \code{src_install} phase is no
-    longer empty but has a default now.  This comes along with an
-    accompanying \code{default} function.
-    See \featureref{src-install-4}.
-    \item[\code{pkg_info} on non-installed packages] The
-    \code{pkg_info} phase can be called even for non-installed
-    packages.  Be warned that dependencies might not have been
-    installed at execution time.  See \featureref{pkg-info}.
-    \item[\code{econf} changes] The helper function now always
-    activates \code{-{}-disable-dependency-tracking}.
-    See \featureref{econf-options}.
-    \item[USE dependency defaults] In addition to the features offered
-    in EAPI 2 for USE dependencies, a \code{(+)} or \code{(-)} can be
-    added after a USE flag (mind the parentheses).  The former
-    specifies that flags not in IUSE should be treated as enabled; the
-    latter, disabled. Cannot be used with USE_EXPAND flags.  This
-    mimics parts of the behaviour of \code{-{}-missing} in
-    \code{built_with_use}.  See \featureref{use-dep-defaults}.
-    \item[Controllable compression] All items in the \code{doc},
-    \code{info}, \code{man} subdirectories of \code{/usr/share/} may
-    be compressed on-disk after \code{src_install}, except for
-    \code{/usr/share/doc/\$\{PF\}/html}.  \code{docompress path \dots}
-    adds paths to the inclusion list for compression.
-    \code{docompress -x path \dots} adds paths to the exclusion list.
-    See \featureref{docompress}.
-    \item[\code{nonfatal} for commands] If you call \code{nonfatal}
-    the command given as argument will not abort the build process in
-    case of a failure (as is the default) but will return non-zero on
-    failure.
-    See \featureref{nonfatal}.
-    \item[\code{dodoc} recursion] If the \code{-r} switch is given as
-    first argument and followed by directories, files from there are
-    installed recursively.  See \featureref{dodoc}.
-    \item[\code{doins} symlink support] Symbolic links are now
-    properly installed when using recursion (\code{-r} switch).
-    See \featureref{doins}.
-    \item[\code{PROPERTIES}] Is mandatory for all package managers now
-    to support interactive installs.
-    \item[\code{REQUIRED_USE}] This variable can be used similar to
-    the \code{(R|P)DEPEND} variables and define sets of USE flag
-    combinations that are not allowed.  All elements can be further
-    nested to achieve more functionality.
-    \begin{description}
-        \item[Illegal combination] To prevent activation of
-        \code{flag1} if \code{flag2} is enabled use
-        "\code{flag2?\ ( !flag1 )}".
-        \item[OR] If at least one USE flag out of many must be
-        activated on \code{flag1} use
-        "\code{flag1?\ ( || ( flag2 flag3 \dots\ ) )}".
-        \item[XOR] To allow exactly one USE flag out of many use
-        "\code{\textasciicircum\textasciicircum ( flag1 flag2 \dots\ )}".
-    \end{description}
-    See \featureref{required-use}.
-    \item[\code{MERGE_TYPE}] This variable contains one of three
-    possible values to allow checks if it is normal merge with
-    compilation and installation (\code{source}), installation of a
-    binary package (\code{binary}), or a compilation without
-    installation (\code{buildonly}).  See \featureref{merge-type}.
-    \item[\code{REPLACING_VERSIONS}, \code{REPLACED_BY_VERSION}]
-    These variables, valid in \code{pkg_*}, contain a list of all
-    versions (\code{PVR}) of this package that we are replacing, and
-    the version that is replacing the current one, respectively.
-    See \featureref{replace-version-vars}.
-\end{description}
-\subsection{Removals/Bans}
-\label{sec:cs:eapi4-removalsbans}
-\begin{description}
-    \item[\code{dohard}, \code{dosed}] Both functions are not allowed
-    any more.  See \featureref{banned-commands}.
-    \item[No \code{RDEPEND} fall-back] The package manager will not
-    fall back to \code{RDEPEND=DEPEND} if \code{RDEPEND} is undefined.
-    See \featureref{rdepend-depend}.
-    \item[\code{S} fallback changes] The value of the variable
-    \code{S} will not automatically be changed to \code{WORKDIR}, if
-    \code{S} is not a directory, but abort.  Virtual packages are the
-    only exception.  See \featureref{s-workdir-fallback}.
-    \item[\code{AA}, \code{KV}] These variables are not defined
-    any more.  See \featureref{aa} and \featureref{kv}.
-\end{description}
+% \section{EAPI 4 (2011-01-17)}
+% \label{sec:cs:eapi4}
+% \subsection{Additions/Changes}
+% \label{sec:cs:eapi4-additions}
+% \begin{description}
+%     \item[\code{pkg_pretend}] Some useful checks (kernel options for
+%     example) can be placed in this new phase to inform the user early
+%     (when just pretending to emerge the package).  Most checks should
+%     usually be repeated in \code{pkg_setup}.
+%     See \featureref{pkg-pretend}.
+%     \item[\code{src_install}] The \code{src_install} phase is no
+%     longer empty but has a default now.  This comes along with an
+%     accompanying \code{default} function.
+%     See \featureref{src-install-4}.
+%     \item[\code{pkg_info} on non-installed packages] The
+%     \code{pkg_info} phase can be called even for non-installed
+%     packages.  Be warned that dependencies might not have been
+%     installed at execution time.  See \featureref{pkg-info}.
+%     \item[\code{econf} changes] The helper function now always
+%     activates \code{-{}-disable-dependency-tracking}.
+%     See \featureref{econf-options}.
+%     \item[USE dependency defaults] In addition to the features offered
+%     in EAPI 2 for USE dependencies, a \code{(+)} or \code{(-)} can be
+%     added after a USE flag (mind the parentheses).  The former
+%     specifies that flags not in IUSE should be treated as enabled; the
+%     latter, disabled. Cannot be used with USE_EXPAND flags.  This
+%     mimics parts of the behaviour of \code{-{}-missing} in
+%     \code{built_with_use}.  See \featureref{use-dep-defaults}.
+%     \item[Controllable compression] All items in the \code{doc},
+%     \code{info}, \code{man} subdirectories of \code{/usr/share/} may
+%     be compressed on-disk after \code{src_install}, except for
+%     \code{/usr/share/doc/\$\{PF\}/html}.  \code{docompress path \dots}
+%     adds paths to the inclusion list for compression.
+%     \code{docompress -x path \dots} adds paths to the exclusion list.
+%     See \featureref{docompress}.
+%     \item[\code{nonfatal} for commands] If you call \code{nonfatal}
+%     the command given as argument will not abort the build process in
+%     case of a failure (as is the default) but will return non-zero on
+%     failure.
+%     See \featureref{nonfatal}.
+%     \item[\code{dodoc} recursion] If the \code{-r} switch is given as
+%     first argument and followed by directories, files from there are
+%     installed recursively.  See \featureref{dodoc}.
+%     \item[\code{doins} symlink support] Symbolic links are now
+%     properly installed when using recursion (\code{-r} switch).
+%     See \featureref{doins}.
+%     \item[\code{PROPERTIES}] Is mandatory for all package managers now
+%     to support interactive installs.
+%     \item[\code{REQUIRED_USE}] This variable can be used similar to
+%     the \code{(R|P)DEPEND} variables and define sets of USE flag
+%     combinations that are not allowed.  All elements can be further
+%     nested to achieve more functionality.
+%     \begin{description}
+%         \item[Illegal combination] To prevent activation of
+%         \code{flag1} if \code{flag2} is enabled use
+%         "\code{flag2?\ ( !flag1 )}".
+%         \item[OR] If at least one USE flag out of many must be
+%         activated on \code{flag1} use
+%         "\code{flag1?\ ( || ( flag2 flag3 \dots\ ) )}".
+%         \item[XOR] To allow exactly one USE flag out of many use
+%         "\code{\textasciicircum\textasciicircum ( flag1 flag2 \dots\ )}".
+%     \end{description}
+%     See \featureref{required-use}.
+%     \item[\code{MERGE_TYPE}] This variable contains one of three
+%     possible values to allow checks if it is normal merge with
+%     compilation and installation (\code{source}), installation of a
+%     binary package (\code{binary}), or a compilation without
+%     installation (\code{buildonly}).  See \featureref{merge-type}.
+%     \item[\code{REPLACING_VERSIONS}, \code{REPLACED_BY_VERSION}]
+%     These variables, valid in \code{pkg_*}, contain a list of all
+%     versions (\code{PVR}) of this package that we are replacing, and
+%     the version that is replacing the current one, respectively.
+%     See \featureref{replace-version-vars}.
+% \end{description}
+% \subsection{Removals/Bans}
+% \label{sec:cs:eapi4-removalsbans}
+% \begin{description}
+%     \item[\code{dohard}, \code{dosed}] Both functions are not allowed
+%     any more.  See \featureref{banned-commands}.
+%     \item[No \code{RDEPEND} fall-back] The package manager will not
+%     fall back to \code{RDEPEND=DEPEND} if \code{RDEPEND} is undefined.
+%     See \featureref{rdepend-depend}.
+%     \item[\code{S} fallback changes] The value of the variable
+%     \code{S} will not automatically be changed to \code{WORKDIR}, if
+%     \code{S} is not a directory, but abort.  Virtual packages are the
+%     only exception.  See \featureref{s-workdir-fallback}.
+%     \item[\code{AA}, \code{KV}] These variables are not defined
+%     any more.  See \featureref{aa} and \featureref{kv}.
+% \end{description}
 
 \section{EAPI 5 (2012-09-20)}
 \label{sec:cs:eapi5}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

* [gentoo-commits] proj/pms:eapi-7 commit in: /
@ 2018-04-30 22:13 Ulrich Müller
  0 siblings, 0 replies; 207+ messages in thread
From: Ulrich Müller @ 2018-04-30 22:13 UTC (permalink / raw
  To: gentoo-commits

commit:     5933101e2c7c388165608760febdb4fb442b7f71
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 30 22:13:04 2018 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 30 22:13:04 2018 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=5933101e

EAPI 7 has been approved by the Council.

Bug: https://bugs.gentoo.org/654262

 eapi-cheatsheet.tex | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 7095705..2dc8fcd 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -402,7 +402,7 @@ differences between these previous EAPIs.
     See \featureref{banned-commands}.
 \end{description}
 
-\section{EAPI 7}
+\section{EAPI 7 (2018-04-30)}
 \label{sec:cs:eapi7}
 \subsection{Additions/Changes}
 \label{sec:cs:eapi7-additions}


^ permalink raw reply related	[flat|nested] 207+ messages in thread

end of thread, other threads:[~2018-04-30 22:13 UTC | newest]

Thread overview: 207+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-24 12:58 [gentoo-commits] proj/pms:eapi-7 commit in: / Ulrich Müller
  -- strict thread matches above, loose matches on Subject: below --
2018-04-30 22:13 Ulrich Müller
2018-04-26 20:16 Ulrich Müller
2018-04-26 20:16 Ulrich Müller
2018-04-26  6:30 Ulrich Müller
2018-04-05 16:57 Ulrich Müller
2018-04-05 16:57 Ulrich Müller
2018-04-05 16:57 Ulrich Müller
2018-03-09 16:51 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-24 12:58 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2018-02-18 13:36 Ulrich Müller
2017-11-12 19:14 Ulrich Müller
2017-11-09 20:57 Michał Górny
2017-11-09 16:51 Michał Górny
2017-11-07 18:22 Ulrich Müller
2017-11-07 17:23 Ulrich Müller
2017-11-07 17:23 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-09 17:31 Ulrich Müller
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 20:25 Michał Górny
2017-10-04 17:44 Michał Górny
2017-10-04 17:36 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:48 Michał Górny
2017-10-04 16:42 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:25 Michał Górny
2017-10-04 16:10 Michał Górny
2017-10-01  7:11 Michał Górny
2017-10-01  7:11 Michał Górny
2017-10-01  7:11 Michał Górny
2017-09-29 14:33 Michał Górny
2017-09-29 14:33 Michał Górny
2017-09-29 14:03 Michał Górny
2017-09-29 14:03 Michał Górny
2017-09-29 13:42 Michał Górny
2017-09-29  3:17 Michał Górny
2017-09-29  3:17 Michał Górny
2017-09-29  3:17 Michał Górny
2017-09-28 20:53 Michał Górny
2017-09-28 20:53 Michał Górny
2017-09-28 20:53 Michał Górny
2017-09-28 20:53 Michał Górny
2017-09-28 20:53 Michał Górny
2017-09-28 20:53 Michał Górny
2017-09-28 17:51 Michał Górny
2017-09-28 16:58 Michał Górny
2017-09-28 16:58 Michał Górny
2017-09-28 16:58 Michał Górny
2017-09-28 16:58 Michał Górny
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:12 Ulrich Müller
2017-04-10 18:11 [gentoo-commits] proj/pms:master " Ulrich Müller
2017-04-10 18:12 ` [gentoo-commits] proj/pms:eapi-7 " Ulrich Müller
2017-04-09  8:47 [gentoo-commits] proj/pms:master " Ulrich Müller
2017-04-10 18:12 ` [gentoo-commits] proj/pms:eapi-7 " Ulrich Müller
2017-03-29  5:12 [gentoo-commits] proj/pms:master " Ulrich Müller
2017-04-10 18:12 ` [gentoo-commits] proj/pms:eapi-7 " Ulrich Müller
2017-03-20 19:28 [gentoo-commits] proj/pms:master " Ulrich Müller
2017-04-10 18:12 ` [gentoo-commits] proj/pms:eapi-7 " Ulrich Müller
2017-03-18  7:23 [gentoo-commits] proj/pms:master " Ulrich Müller
2017-04-10 18:12 ` [gentoo-commits] proj/pms:eapi-7 " Ulrich Müller
2017-03-12 15:33 [gentoo-commits] proj/pms:master " Ulrich Müller
2017-04-10 18:12 ` [gentoo-commits] proj/pms:eapi-7 " Ulrich Müller
2017-02-23  7:46 [gentoo-commits] proj/pms:master " Ulrich Müller
2017-04-10 18:12 ` [gentoo-commits] proj/pms:eapi-7 " Ulrich Müller
2017-02-11  7:58 [gentoo-commits] proj/pms:master " Ulrich Müller
2017-04-10 18:12 ` [gentoo-commits] proj/pms:eapi-7 " Ulrich Müller
2017-02-11  7:58 [gentoo-commits] proj/pms:master " Ulrich Müller
2017-04-10 18:12 ` [gentoo-commits] proj/pms:eapi-7 " Ulrich Müller
2017-02-08 20:15 [gentoo-commits] proj/pms:master " Ulrich Müller
2017-04-10 18:12 ` [gentoo-commits] proj/pms:eapi-7 " Ulrich Müller
2016-11-29  7:33 [gentoo-commits] proj/pms:master " Ulrich Müller
2017-04-10 18:12 ` [gentoo-commits] proj/pms:eapi-7 " Ulrich Müller
2015-12-05 20:15 Ulrich Müller
2015-12-05 20:15 Ulrich Müller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox