public inbox for gentoo-pms@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-pms] [PATCHES] EAPI 7, first draft for review
@ 2017-10-04 20:46 Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 01/28] Add an EAPI 7 identical to EAPI 6 Michał Górny
                   ` (27 more replies)
  0 siblings, 28 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms

Hi, everyone.

Here's an early version of EAPI 7 specification for review. It includes
all the items from the wiki page [1]. It is most likely still subject
to changes (including major refactoring wrt other patches around here)
but I'd appreciate your early feedback on the wording and the features
included.

PDF version:  https://dev.gentoo.org/~mgorny/eapi-7/pms.pdf
HTML version: https://dev.gentoo.org/~mgorny/eapi-7/pms.html

The patches are joint work of Ulrich Müller, James Le Cuirot and myself.

[1]:https://wiki.gentoo.org/wiki/Future_EAPI/EAPI_7_tentative_features

--
Best regards,
Michał Górny



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

* [gentoo-pms] [PATCH 01/28] Add an EAPI 7 identical to EAPI 6.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 02/28] EAPI feature table: Consolidate EAPIs 0 to 3 Michał Górny
                   ` (26 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: Ulrich Müller

From: Ulrich Müller <ulm@gentoo.org>

---
 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} &
     * &
@@ -117,130 +119,133 @@ Parallel tests & \compactfeatureref{parallel-tests} &
         \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{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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 02/28] EAPI feature table: Consolidate EAPIs 0 to 3.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 01/28] Add an EAPI 7 identical to EAPI 6 Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 03/28] EAPI 7: dohtml banned Michał Górny
                   ` (25 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: Ulrich Müller

From: Ulrich Müller <ulm@gentoo.org>

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,78 +42,76 @@ 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},
@@ -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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 03/28] EAPI 7: dohtml banned.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 01/28] Add an EAPI 7 identical to EAPI 6 Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 02/28] EAPI feature table: Consolidate EAPIs 0 to 3 Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 04/28] EAPI 7 supports a directory for package.mask Michał Górny
                   ` (24 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: Ulrich Müller

From: Ulrich Müller <ulm@gentoo.org>

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
-- 
2.14.2



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

* [gentoo-pms] [PATCH 04/28] EAPI 7 supports a directory for package.mask.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (2 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 03/28] EAPI 7: dohtml banned Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 05/28] EAPI 7 supports directories for profile files Michał Górny
                   ` (23 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: Ulrich Müller

From: Ulrich Müller <ulm@gentoo.org>

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
-- 
2.14.2



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

* [gentoo-pms] [PATCH 05/28] EAPI 7 supports directories for profile files.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (3 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 04/28] EAPI 7 supports a directory for package.mask Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 06/28] EAPI 7 has version manipulation and comparison functions Michał Górny
                   ` (22 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: Ulrich Müller

From: Ulrich Müller <ulm@gentoo.org>

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
-- 
2.14.2



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

* [gentoo-pms] [PATCH 06/28] EAPI 7 has version manipulation and comparison functions
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (4 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 05/28] EAPI 7 supports directories for profile files Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 07/28] EAPI 7 has eqawarn Michał Górny
                   ` (21 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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
-- 
2.14.2



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

* [gentoo-pms] [PATCH 07/28] EAPI 7 has eqawarn
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (5 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 06/28] EAPI 7 has version manipulation and comparison functions Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 08/28] EAPI 7 disallows stdout output of output functions Michał Górny
                   ` (20 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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.
-- 
2.14.2



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

* [gentoo-pms] [PATCH 08/28] EAPI 7 disallows stdout output of output functions
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (6 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 07/28] EAPI 7 has eqawarn Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 09/28] EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED Michał Górny
                   ` (19 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 09/28] EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (7 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 08/28] EAPI 7 disallows stdout output of output functions Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 10/28] EAPI 7 requires GNU patch 2.7 Michał Górny
                   ` (18 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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:
-- 
2.14.2



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

* [gentoo-pms] [PATCH 10/28] EAPI 7 requires GNU patch 2.7.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (8 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 09/28] EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 11/28] EAPI 7 has SYSROOT and ESYSROOT Michał Górny
                   ` (17 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 11/28] EAPI 7 has SYSROOT and ESYSROOT
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (9 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 10/28] EAPI 7 requires GNU patch 2.7 Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 12/28] EAPI 7: econf adds --with-sysroot Michał Górny
                   ` (16 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: James Le Cuirot

From: James Le Cuirot <chewi@gentoo.org>

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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 12/28] EAPI 7: econf adds --with-sysroot
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (10 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 11/28] EAPI 7 has SYSROOT and ESYSROOT Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 13/28] EAPI 7 has BDEPEND Michał Górny
                   ` (15 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: James Le Cuirot

From: James Le Cuirot <chewi@gentoo.org>

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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 13/28] EAPI 7 has BDEPEND
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (11 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 12/28] EAPI 7: econf adds --with-sysroot Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 14/28] EAPI 7 has BROOT Michał Górny
                   ` (14 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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
@@ -92,6 +105,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}
@@ -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}
 
-- 
2.14.2



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

* [gentoo-pms] [PATCH 14/28] EAPI 7 has BROOT
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (12 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 13/28] EAPI 7 has BDEPEND Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 15/28] EAPI 7 drops --host-root in favor of -b, -d, and -r Michał Górny
                   ` (13 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: James Le Cuirot

From: James Le Cuirot <chewi@gentoo.org>

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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 15/28] EAPI 7 drops --host-root in favor of -b, -d, and -r
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (13 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 14/28] EAPI 7 has BROOT Michał Górny
@ 2017-10-04 20:46 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 16/28] dependencies: Provide a nice summary table for dep APIs Michał Górny
                   ` (12 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:46 UTC (permalink / raw
  To: gentoo-pms; +Cc: James Le Cuirot

From: James Le Cuirot <chewi@gentoo.org>

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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 16/28] dependencies: Provide a nice summary table for dep APIs
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (14 preceding siblings ...)
  2017-10-04 20:46 ` [gentoo-pms] [PATCH 15/28] EAPI 7 drops --host-root in favor of -b, -d, and -r Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 17/28] EAPI 7 bans package.provided Michał Górny
                   ` (11 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

---
 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.
-- 
2.14.2



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

* [gentoo-pms] [PATCH 17/28] EAPI 7 bans package.provided
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (15 preceding siblings ...)
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 16/28] dependencies: Provide a nice summary table for dep APIs Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 18/28] EAPI 7 removes DESTTREE and INSDESTTREE Michał Górny
                   ` (10 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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
-- 
2.14.2



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

* [gentoo-pms] [PATCH 18/28] EAPI 7 removes DESTTREE and INSDESTTREE.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (16 preceding siblings ...)
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 17/28] EAPI 7 bans package.provided Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 19/28] EAPI 7 removes PORTDIR and ECLASSDIR Michał Górny
                   ` (9 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 19/28] EAPI 7 removes PORTDIR and ECLASSDIR.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (17 preceding siblings ...)
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 18/28] EAPI 7 removes DESTTREE and INSDESTTREE Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 20/28] domo installs to /usr in EAPI 7 Michał Górny
                   ` (8 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 20/28] domo installs to /usr in EAPI 7.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (18 preceding siblings ...)
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 19/28] EAPI 7 removes PORTDIR and ECLASSDIR Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 21/28] pkg-mgr-commands: Redefine dolib* in terms of libdir.a Michał Górny
                   ` (7 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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
-- 
2.14.2



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

* [gentoo-pms] [PATCH 21/28] pkg-mgr-commands: Redefine dolib* in terms of libdir.a
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (19 preceding siblings ...)
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 20/28] domo installs to /usr in EAPI 7 Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 22/28] EAPI 7 bans dolib and libopts Michał Górny
                   ` (6 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 22/28] EAPI 7 bans dolib and libopts.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (20 preceding siblings ...)
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 21/28] pkg-mgr-commands: Redefine dolib* in terms of libdir.a Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 23/28] EAPI 7 provides command fallback for nonfatal Michał Górny
                   ` (5 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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}
 
-- 
2.14.2



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

* [gentoo-pms] [PATCH 23/28] EAPI 7 provides command fallback for nonfatal.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (21 preceding siblings ...)
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 22/28] EAPI 7 bans dolib and libopts Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 24/28] EAPI 7 allows die in subshell Michał Górny
                   ` (4 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 24/28] EAPI 7 allows die in subshell.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (22 preceding siblings ...)
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 23/28] EAPI 7 provides command fallback for nonfatal Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 25/28] EAPI 7 has automatic USE enforcing Michał Górny
                   ` (3 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 25/28] EAPI 7 has automatic USE enforcing.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (23 preceding siblings ...)
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 24/28] EAPI 7 allows die in subshell Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 26/28] EAPI 7 has binding leftmost-of dep groups (||=) Michał Górny
                   ` (2 subsequent siblings)
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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
-- 
2.14.2



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

* [gentoo-pms] [PATCH 26/28] EAPI 7 has binding leftmost-of dep groups (||=).
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (24 preceding siblings ...)
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 25/28] EAPI 7 has automatic USE enforcing Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 27/28] EAPI 7 supports runtime-modifiable USE flags Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 28/28] EAPI 7 has sandbox directory removal functions Michał Górny
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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}
-- 
2.14.2



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

* [gentoo-pms] [PATCH 27/28] EAPI 7 supports runtime-modifiable USE flags.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (25 preceding siblings ...)
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 26/28] EAPI 7 has binding leftmost-of dep groups (||=) Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 28/28] EAPI 7 has sandbox directory removal functions Michał Górny
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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
-- 
2.14.2



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

* [gentoo-pms] [PATCH 28/28] EAPI 7 has sandbox directory removal functions.
  2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
                   ` (26 preceding siblings ...)
  2017-10-04 20:47 ` [gentoo-pms] [PATCH 27/28] EAPI 7 supports runtime-modifiable USE flags Michał Górny
@ 2017-10-04 20:47 ` Michał Górny
  27 siblings, 0 replies; 29+ messages in thread
From: Michał Górny @ 2017-10-04 20:47 UTC (permalink / raw
  To: gentoo-pms; +Cc: Michał Górny

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
-- 
2.14.2



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

end of thread, other threads:[~2017-10-04 20:48 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-04 20:46 [gentoo-pms] [PATCHES] EAPI 7, first draft for review Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 01/28] Add an EAPI 7 identical to EAPI 6 Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 02/28] EAPI feature table: Consolidate EAPIs 0 to 3 Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 03/28] EAPI 7: dohtml banned Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 04/28] EAPI 7 supports a directory for package.mask Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 05/28] EAPI 7 supports directories for profile files Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 06/28] EAPI 7 has version manipulation and comparison functions Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 07/28] EAPI 7 has eqawarn Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 08/28] EAPI 7 disallows stdout output of output functions Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 09/28] EAPI 7 no longer adds trailing slash to ROOT, EROOT, D, ED Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 10/28] EAPI 7 requires GNU patch 2.7 Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 11/28] EAPI 7 has SYSROOT and ESYSROOT Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 12/28] EAPI 7: econf adds --with-sysroot Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 13/28] EAPI 7 has BDEPEND Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 14/28] EAPI 7 has BROOT Michał Górny
2017-10-04 20:46 ` [gentoo-pms] [PATCH 15/28] EAPI 7 drops --host-root in favor of -b, -d, and -r Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 16/28] dependencies: Provide a nice summary table for dep APIs Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 17/28] EAPI 7 bans package.provided Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 18/28] EAPI 7 removes DESTTREE and INSDESTTREE Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 19/28] EAPI 7 removes PORTDIR and ECLASSDIR Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 20/28] domo installs to /usr in EAPI 7 Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 21/28] pkg-mgr-commands: Redefine dolib* in terms of libdir.a Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 22/28] EAPI 7 bans dolib and libopts Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 23/28] EAPI 7 provides command fallback for nonfatal Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 24/28] EAPI 7 allows die in subshell Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 25/28] EAPI 7 has automatic USE enforcing Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 26/28] EAPI 7 has binding leftmost-of dep groups (||=) Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 27/28] EAPI 7 supports runtime-modifiable USE flags Michał Górny
2017-10-04 20:47 ` [gentoo-pms] [PATCH 28/28] EAPI 7 has sandbox directory removal functions Michał Górny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox