public inbox for gentoo-pms@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-pms] EAPI 6 draft for review
@ 2015-10-15 10:49 Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 01/22] Add an EAPI 6 identical to EAPI 5 Ulrich Müller
                   ` (21 more replies)
  0 siblings, 22 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:49 UTC (permalink / raw
  To: gentoo-pms, gentoo-dev-announce

The first draft of EAPI 6 is ready. I shall post it as a series of
22 patches following this message in the gentoo-pms mailing list.

Please review. The goal is to have the draft ready for approval in the
council's November meeting.

For convenience, I have also uploaded a rendered version of EAPI 6:
http://dev.gentoo.org/~ulm/pms/6-draft/
Especially, the list of changes from EAPI 5 to EAPI 6 is here:
http://dev.gentoo.org/~ulm/pms/6-draft/pms.html#x1-184000E

Ulrich


Michael Palimaka (1):
  EAPI 6 supports package.* and use.* directories.

Michał Górny (2):
  EAPI 6: Explain eapply behavior.
  EAPI 6 has get_libdir.

Ulrich Müller (19):
  Add an EAPI 6 identical to EAPI 5.
  Rework the EAPI feature table.
  Reformat EAPI tables to be more compact.
  Delete redundant sentence in the list of defined EAPIs.
  EAPI 6: Bash version is 4.2.
  EAPI 6 enables failglob in global scope.
  EAPI 6: einstall banned.
  EAPI 6: die and assert called with -n respect nonfatal.
  EAPI 6 has eapply.
  EAPI 6 has eapply_user.
  EAPI 6 has a default src_prepare.
  EAPI 6: econf adds --docdir and --htmldir.
  EAPI 6 has in_iuse.
  EAPI 6: unpack supports absolute and relative paths.
  EAPI 6: unpack supports txz.
  EAPI 6: unpack matches filename extensions case-insensitively.
  EAPI 6 has einstalldocs.
  EAPI 6 has a different src_install implementation.
  Merge several EAPI feature tables.

 dependencies.tex        | 118 +++++-----
 eapi-differences.tex    | 198 ++++++++++------
 eapis.tex               |  18 +-
 ebuild-env-commands.tex |  40 ++--
 ebuild-env-vars.tex     |  99 ++++----
 ebuild-format.tex       |  11 +-
 ebuild-functions.tex    | 258 ++++++++++-----------
 ebuild-vars.tex         |  93 ++++----
 merge.tex               |  20 +-
 pkg-mgr-commands.tex    | 585 ++++++++++++++++++++++++++++++------------------
 pms.tex                 |   4 +-
 profile-variables.tex   |  23 +-
 profiles.tex            |  56 +++--
 13 files changed, 854 insertions(+), 669 deletions(-)

-- 
2.6.1



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

* [gentoo-pms] [PATCH 01/22] Add an EAPI 6 identical to EAPI 5.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 02/22] Rework the EAPI feature table Ulrich Müller
                   ` (20 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

---
 dependencies.tex        |  15 ++++--
 eapi-differences.tex    | 122 +++++++++++++++++++++++++++---------------------
 eapis.tex               |   4 +-
 ebuild-env-commands.tex |   3 +-
 ebuild-env-vars.tex     |  12 +++--
 ebuild-functions.tex    |  28 +++++++----
 ebuild-vars.tex         |  12 +++--
 merge.tex               |   3 +-
 pkg-mgr-commands.tex    |  45 ++++++++++++------
 pms.tex                 |   4 +-
 profile-variables.tex   |   3 +-
 profiles.tex            |   3 +-
 12 files changed, 156 insertions(+), 98 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index fcfce9b..8d3facb 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,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{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{SRC\_URI} arrows} \label{tab:uri-arrows-table}
     \begin{tabular}{ l l }
         \toprule
@@ -101,11 +101,12 @@ In particular, note that whitespace is not optional.
     \t{3} & Yes \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{REQUIRED\_USE ??}\ groups} \label{tab:at-most-one-of-table}
     \begin{tabular}{ l l }
         \toprule
@@ -118,6 +119,7 @@ In particular, note that whitespace is not optional.
     \t{3} & No \\
     \t{4} & No \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -188,7 +190,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{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
     \label{tab:slot-deps-table}
     \begin{tabular}{ l l l }
@@ -203,11 +205,12 @@ manager must warn or error if this feature is used with an EAPI not supporting u
     \t{3} & Named only & No \\
     \t{4} & Named only & No \\
     \t{5} & Named and operator & Yes \\
+    \t{6} & Named and operator & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies} \label{tab:use-deps-table}
     \begin{tabular}{ l l }
         \toprule
@@ -220,6 +223,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
     \t{3} & 2-style \\
     \t{4} & 4-style \\
     \t{5} & 4-style \\
+    \t{6} & 4-style \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -258,7 +262,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{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{Exclamation mark strengths for EAPIs} \label{tab:bang-strength-table}
     \begin{tabular}{ l l l }
         \toprule
@@ -272,6 +276,7 @@ described in table~\ref{tab:bang-strength-table}.
     \t{3} & Weak & Strong \\
     \t{4} & Weak & Strong \\
     \t{5} & Weak & Strong \\
+    \t{6} & Weak & Strong \\
     \bottomrule
     \end{tabular}
 \end{centertable}
diff --git a/eapi-differences.tex b/eapi-differences.tex
index 255f428..0a8f9e1 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -2,10 +2,10 @@
 
 \note This chapter is informative and for convenience only. Refer to the main text for specifics.
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{landscape}
 \newcolumntype{P}[1]{>{\setlength{\rightskip}{0pt plus 1fil}}p{#1}}
-\begin{longtable}{llP{5em}P{5em}P{6em}P{6em}P{6em}P{6em}}
+\begin{longtable}{llP{5em}P{5em}P{6em}P{6em}P{6em}P{6em}P{6em}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\b{Feature}} &
@@ -18,7 +18,8 @@
 \multicolumn{1}{c}{2} &
 \multicolumn{1}{c}{3} &
 \multicolumn{1}{c}{4} &
-\multicolumn{1}{c}{5} \\
+\multicolumn{1}{c}{5} &
+\multicolumn{1}{c}{6} \\
 \midrule
 \endfirsthead
 \midrule
@@ -32,7 +33,8 @@
 \multicolumn{1}{c}{2} &
 \multicolumn{1}{c}{3} &
 \multicolumn{1}{c}{4} &
-\multicolumn{1}{c}{5} \\
+\multicolumn{1}{c}{5} &
+\multicolumn{1}{c}{6} \\
 \midrule
 \endhead
 \midrule
@@ -41,67 +43,67 @@
 \endlastfoot
 
 Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & No & No & No & No & Yes \\
+    No & No & No & No & No & Yes & Yes \\
 
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes & Yes \\
 
 \t{REQUIRED\_USE} & \compactfeatureref{required-use} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & No & Yes & Yes & Yes \\
 
 \t{PROPERTIES} & \compactfeatureref{properties} &
-    Optionally & Optionally & Optionally & Optionally & Yes & Yes \\
+    Optionally & Optionally & Optionally & Optionally & Yes & Yes & Yes \\
 
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    Yes & Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & Yes & No & No & No \\
 
 \t{DEFINED\_PHASES} & \compactfeatureref{defined-phases} &
-    Optionally & Optionally & Optionally & Optionally & Yes & Yes \\
+    Optionally & Optionally & Optionally & Optionally & Yes & Yes & Yes \\
 
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & No & No & No & No & Yes \\
+    No & No & No & No & No & Yes & Yes \\
 
 \t{SRC\_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes & Yes \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-    No & Named & Named & Named & Named & Named and Operator \\
+    No & Named & Named & Named & Named & Named and Operator & Named and Operator \\
 
 Sub-slots & \compactfeatureref{sub-slot} &
-    No & No & No & No & No & Yes \\
+    No & No & No & No & No & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
-    No & No & 2-style & 2-style & 4-style & 4-style \\
+    No & No & 2-style & 2-style & 4-style & 4-style & 4-style \\
 
 \t{!} blockers & \compactfeatureref{bang-strength} &
-    Unspecified & Unspecified & Weak & Weak & Weak & Weak \\
+    Unspecified & Unspecified & Weak & Weak & Weak & Weak & Weak \\
 
 \t{!!} blockers & \compactfeatureref{bang-strength} &
-    Forbidden & Forbidden & Strong & Strong & Strong & Strong \\
+    Forbidden & Forbidden & Strong & Strong & Strong & Strong & Strong \\
 
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    Always & Always & Always & Always & Conditional & Conditional \\
+    Always & Always & Always & Always & Conditional & Conditional & Conditional \\
 
 \t{pkg\_pretend} & \compactfeatureref{pkg-pretend} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & No & Yes & Yes & Yes \\
 
 \t{src\_prepare} & \compactfeatureref{src-prepare} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src\_configure} & \compactfeatureref{src-configure} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src\_compile} style & \compactfeatureref{src-compile} &
-    0 & 1 & 2 & 2 & 2 & 2 \\
+    0 & 1 & 2 & 2 & 2 & 2 & 2 \\
 
 Parallel tests & \compactfeatureref{parallel-tests} &
-    No & No & No & No & No & Yes \\
+    No & No & No & No & No & Yes & Yes \\
 
 \t{src\_install} style & \compactfeatureref{src-install} &
-    no-op & no-op & no-op & no-op & 4 & 4 \\
+    no-op & no-op & no-op & no-op & 4 & 4 & 4 \\
 
 \t{pkg\_info} & \compactfeatureref{pkg-info} &
-    Installed & Installed & Installed & Installed & Both & Both \\
+    Installed & Installed & Installed & Installed & Both & Both & Both \\
 
 \t{default\_} phase functions & \compactfeatureref{default-phase-funcs} &
     None & None &
@@ -110,91 +112,95 @@ Parallel tests & \compactfeatureref{parallel-tests} &
     \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
         \t{src\_compile}, \t{src\_install}, \t{src\_test} &
     \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
+        \t{src\_compile}, \t{src\_install}, \t{src\_test} &
+    \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
         \t{src\_compile}, \t{src\_install}, \t{src\_test} \\
 
 \t{AA} & \compactfeatureref{aa} &
-    Yes & Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & Yes & No & No & No \\
 
 \t{KV} & \compactfeatureref{kv} &
-    Yes & Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & Yes & No & No & No \\
 
 \t{EBUILD\_PHASE\_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & No & No & No & No & Yes \\
+    No & No & No & No & No & Yes & Yes \\
 
 \t{MERGE\_TYPE} & \compactfeatureref{merge-type} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & No & Yes & Yes & Yes \\
 
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & No & No & No & No & Yes \\
+    No & No & No & No & No & Yes & Yes \\
 
 \t{REPLACING\_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & No & Yes & Yes & Yes \\
 
 \t{REPLACED\_BY\_VERSION} & \compactfeatureref{replace-version-vars} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & No & Yes & Yes & Yes \\
 
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes & Yes \\
 
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Undefined & Undefined & Undefined & Undefined & Yes \\
+    Undefined & Undefined & Undefined & Undefined & Undefined & Yes & Yes \\
 
 Most utilities die & \compactfeatureref{die-on-failure} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & No & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & No & Yes & Yes & Yes \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Yes & Banned & Banned & Banned \\
 
 \t{dosed} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Yes & Banned & Banned & Banned \\
 
 Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & No & No & No & No & Yes \\
+    No & 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 dependency tracking, disable silent rules &
+    disable dependency tracking, disable silent rules \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & No & Yes & Yes & Yes \\
 
 \t{doheader} & \compactfeatureref{doheader} &
-    No & No & No & No & No & Yes \\
+    No & No & No & No & No & Yes & Yes \\
 
 \t{doins} handles symlinks & \compactfeatureref{doins} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & No & Yes & Yes & Yes \\
 
 \t{doman} languages & \compactfeatureref{doman-langs} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    N/A & N/A & No & No & Yes & Yes \\
+    N/A & N/A & No & No & Yes & Yes & Yes \\
 
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & No & No & No & No & Yes \\
+    No & No & No & No & No & Yes & Yes \\
 
 Controllable compression & \compactfeatureref{docompress} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & No & Yes & Yes & Yes \\
 
 \t{docompress} & \compactfeatureref{docompress} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & No & Yes & Yes & Yes \\
 
 \t{use\_with} empty third arg & \compactfeatureref{use-with} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & No & Yes & Yes & Yes \\
 
 \t{usex} & \compactfeatureref{usex} &
-    No & No & No & No & No & Yes \\
+    No & No & No & No & No & Yes & Yes \\
 
 \t{unpack} support for \t{xz}? & \compactfeatureref{unpack-extensions} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes & Yes \\
 
 \t{default} function & \compactfeatureref{default-func} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes & Yes \\
 
 File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    Undefined & Undefined & Undefined & Yes & Yes & Yes \\
+    Undefined & Undefined & Undefined & Yes & Yes & Yes & Yes \\
 
 \end{longtable}
 \end{landscape}
@@ -294,7 +300,15 @@ EAPI 5 is EAPI 4 with the following changes:
 \item \t{usex} support, \featureref{usex}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{5}
+\section*{EAPI 6}
+
+EAPI 6 is EAPI 5 with the following changes:
+
+\begin{compactitem}
+\item None
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{6}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
diff --git a/eapis.tex b/eapis.tex
index 6b03d2b..bb860f4 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -19,7 +19,7 @@ EAPIs are also used for profile directories, as described in section~\ref{sec:pr
 
 The following EAPIs are defined by this specification:
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{description}
 \item[0] The `original' base EAPI.
 \item[1] EAPI `1' contains a number of extensions to EAPI `0'. Except where explicitly noted, it is
@@ -32,6 +32,8 @@ The following EAPIs are defined by this specification:
     in all other ways identical to EAPI `3'.
 \item[5] EAPI `5' contains a number of extensions to EAPI `4'. Except where explicitly noted, it is
     in all other ways identical to EAPI `4'.
+\item[6] EAPI `6' contains a number of extensions to EAPI `5'. Except where explicitly noted, it is
+    in all other ways identical to EAPI `5'.
 \end{description}
 
 Except where explicitly noted, everything in this specification
diff --git a/ebuild-env-commands.tex b/ebuild-env-commands.tex
index 20771bd..8b2c146 100644
--- a/ebuild-env-commands.tex
+++ b/ebuild-env-commands.tex
@@ -35,7 +35,7 @@ The following commands must always be available in the ebuild environment:
     table~\ref{tab:system-commands-table} as requiring GNU find.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{\t{find} implementation for EAPIs} \label{tab:system-commands-table}
     \begin{tabular}{ l l }
         \toprule
@@ -48,6 +48,7 @@ The following commands must always be available in the ebuild environment:
     \t{3} & Undefined \\
     \t{4} & Undefined \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index d387aca..8946157 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -225,7 +225,7 @@ variable.
 \end{longtable}
 \end{landscape}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting various added env variables} \label{tab:added-env-vars-table}
     \begin{tabular}{ l l l l l }
         \toprule
@@ -241,11 +241,12 @@ variable.
     \t{3} & No & No & No & No \\
     \t{4} & Yes & Yes & Yes & No \\
     \t{5} & Yes & Yes & Yes & Yes \\
+    \t{6} & Yes & Yes & Yes & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting various removed env variables} \label{tab:removed-env-vars-table}
     \begin{tabular}{ l l l }
         \toprule
@@ -259,11 +260,12 @@ variable.
     \t{3} & Yes & Yes \\
     \t{4} & No & No \\
     \t{5} & No & No \\
+    \t{6} & No & No \\
     \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
     \begin{tabular}{ l l l l }
@@ -279,6 +281,7 @@ variable.
         \t{3} & Yes & Yes & Yes \\
         \t{4} & Yes & Yes & Yes \\
         \t{5} & Yes & Yes & Yes \\
+        \t{6} & Yes & Yes & Yes \\
         \bottomrule
     \end{tabular}
 \end{centertable}
@@ -379,7 +382,7 @@ contain at most one value.
 \subsection{Offset-prefix variables \t{EPREFIX}, \t{EROOT} and \t{ED}}
 \label{sec:offset-vars}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting offset-prefix}
     \label{tab:offset-support-table}
     \begin{tabular}{ l l }
@@ -393,6 +396,7 @@ contain at most one value.
         \t{3} & Yes \\
         \t{4} & Yes \\
         \t{5} & Yes \\
+        \t{6} & Yes \\
         \bottomrule
     \end{tabular}
 \end{centertable}
diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 480ccda..60bd1e5 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -44,7 +44,7 @@ fallback to \t{WORKDIR} is used:
     in \t{DEFINED\_PHASES}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks} \label{tab:s-fallback-table}
     \begin{tabular}{ l l }
         \toprule
@@ -57,6 +57,7 @@ fallback to \t{WORKDIR} is used:
     \t{3} & Always \\
     \t{4} & Conditional error \\
     \t{5} & Conditional error \\
+    \t{6} & Conditional error \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -79,7 +80,7 @@ before the next phase is executed.
 
 \t{pkg\_pretend} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{pkg\_pretend}} \label{tab:pkg-pretend-table}
     \begin{tabular}{ l l }
         \toprule
@@ -92,6 +93,7 @@ before the next phase is executed.
     \t{3} & No \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -135,7 +137,7 @@ implementation does nothing.
 The initial working directory is \t{S}, with an error or fallback to \t{WORKDIR} as discussed in
 section~\ref{sec:s-to-workdir-fallback}.
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{src\_prepare}} \label{tab:src-prepare-table}
     \begin{tabular}{ l l }
         \toprule
@@ -148,6 +150,7 @@ section~\ref{sec:s-to-workdir-fallback}.
     \t{3} & Yes \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -172,7 +175,7 @@ src_configure() {
 }
 \end{verbatim}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{src\_configure}} \label{tab:src-configure-table}
     \begin{tabular}{ l l }
         \toprule
@@ -185,6 +188,7 @@ src_configure() {
     \t{3} & Yes \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -240,7 +244,7 @@ src_compile() {
 }
 \end{verbatim}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{\t{src\_compile} behaviour for EAPIs} \label{tab:src-compile-table}
     \begin{tabular}{ l l }
         \toprule
@@ -253,6 +257,7 @@ src_compile() {
     \t{3} & 2 \\
     \t{4} & 2 \\
     \t{5} & 2 \\
+    \t{6} & 2 \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -275,7 +280,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{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{\t{src\_test} behaviour for EAPIs} \label{tab:src-test-table}
     \begin{tabular}{ l l }
         \toprule
@@ -288,6 +293,7 @@ be disabled by user too, using a PM-specific mechanism.
     \t{3} & No \\
     \t{4} & No \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -328,7 +334,7 @@ src_install() {
 For other EAPIs, the default implementation used when the ebuild lacks the \t{src\_install} function
 is a no-op.
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{\t{src\_install} behaviour for EAPIs} \label{tab:src-install-table}
     \begin{tabular}{ l l }
         \toprule
@@ -341,6 +347,7 @@ is a no-op.
     \t{3} & no-op \\
     \t{4} & 4 \\
     \t{5} & 4 \\
+    \t{6} & 4 \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -404,7 +411,7 @@ that dependencies may not be installed.
 
 \t{pkg\_info} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{pkg\_info} on non-installed packages} \label{tab:pkg-info-table}
     \begin{tabular}{ l l }
         \toprule
@@ -417,6 +424,7 @@ that dependencies may not be installed.
     \t{3} & No \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -439,7 +447,7 @@ named \t{default\_}(phase) that behaves as the default implementation for that E
 when executing any ebuild phase listed in the table. Ebuilds must not call these functions except
 when in the phase in question.
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{default\_} phase functions} \label{tab:default-phase-function-table}
     \begin{tabular}{ l >{\setlength{\rightskip}{0pt plus 1fil}}p{30em} }
         \toprule
@@ -456,6 +464,8 @@ when in the phase in question.
         \t{src\_compile}, \t{src\_install}, \t{src\_test} \\
     \t{5} & \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
         \t{src\_compile}, \t{src\_install}, \t{src\_test} \\
+    \t{6} & \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
+        \t{src\_compile}, \t{src\_install}, \t{src\_test} \\
     \bottomrule
     \end{tabular}
 \end{centertable}
diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 9842557..0bba597 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -84,7 +84,7 @@ Ebuilds may define any of the following variables:
 \item[PDEPEND] See section~\ref{sec:dependencies}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{IUSE} defaults} \label{tab:iuse-defaults-table}
     \begin{tabular}{ l l }
         \toprule
@@ -97,11 +97,12 @@ Ebuilds may define any of the following variables:
     \t{3} & Yes \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
 \label{tab:optional-vars-table}
     \begin{tabular}{ l l l }
@@ -116,6 +117,7 @@ Ebuilds may define any of the following variables:
     \t{3} & Optionally & No \\
     \t{4} & Yes & Yes \\
     \t{5} & Yes & Yes \\
+    \t{6} & Yes & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -183,7 +185,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{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} Default} \label{tab:rdepend-depend-table}
     \begin{tabular}{ l l }
         \toprule
@@ -196,6 +198,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
     \t{3} & Yes \\
     \t{4} & No \\
     \t{5} & No \\
+    \t{6} & No \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -229,7 +232,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{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{DEFINED\_PHASES}} \label{tab:defined-phases-table}
     \begin{tabular}{ l l }
         \toprule
@@ -242,6 +245,7 @@ based upon any variant condition.
     \t{3} & Optionally \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
diff --git a/merge.tex b/merge.tex
index c212294..1180c8c 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{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{Preservation of file modification times (mtimes)}
     \label{tab:mtime-preserve}
     \begin{tabular}{ l l }
@@ -100,6 +100,7 @@ is undefined.
     \t{3} & Yes \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 1884a5c..c614664 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -23,7 +23,7 @@ The following commands affect this behaviour:
     table~\ref{tab:commands-die-table} as supporting \t{nonfatal}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPI Command Failure Behaviour} \label{tab:commands-die-table}
     \begin{tabular}{ l l l }
         \toprule
@@ -37,6 +37,7 @@ The following commands affect this behaviour:
     \t{3} & Non-zero exit & No \\
     \t{4} & Aborts & Yes \\
     \t{5} & Aborts & Yes \\
+    \t{6} & Aborts & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -47,7 +48,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{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{Banned commands} \label{tab:banned-commands-table}
     \begin{tabular}{ l l l }
         \toprule
@@ -63,6 +64,7 @@ called, the package manager must abort the build process indicating an error.
     \t{3} & No & No \\
     \t{4} & Yes & Yes \\
     \t{5} & Yes & Yes \\
+    \t{6} & Yes & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -159,7 +161,7 @@ current phase function has returned.
         in the output of \t{configure -{}-help}.
     \end{itemize}
 
-    \ChangeWhenAddingAnEAPI{5}
+    \ChangeWhenAddingAnEAPI{6}
     \begin{centertable}{Extra \t{econf} arguments for EAPIs} \label{tab:econf-options-table}
         \begin{tabular}{ l l l }
             \toprule
@@ -173,6 +175,7 @@ current phase function has returned.
         \t{3} & No & No \\
         \t{4} & Yes & No \\
         \t{5} & Yes & Yes \\
+        \t{6} & Yes & Yes \\
         \bottomrule
         \end{tabular}
     \end{centertable}
@@ -436,7 +439,7 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{dodoc -r}} \label{tab:dodoc-table}
     \begin{tabular}{ l l }
         \toprule
@@ -449,11 +452,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \t{3} & No \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}} \label{tab:doheader-table}
     \begin{tabular}{ l l }
         \toprule
@@ -466,11 +470,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \t{3} & No \\
     \t{4} & No \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting symlinks for \t{doins}} \label{tab:doins-table}
     \begin{tabular}{ l l }
         \toprule
@@ -483,11 +488,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \t{3} & No \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{\t{doman} language support options for EAPIs}
     \label{tab:doman-table}
     \begin{tabular}{ l l l }
@@ -502,11 +508,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \t{3} & Yes & No \\
     \t{4} & Yes & Yes \\
     \t{5} & Yes & Yes \\
+    \t{6} & Yes & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting stdin for \t{new*} commands} \label{tab:newfoo-stdin-table}
     \begin{tabular}{ l l }
         \toprule
@@ -519,11 +526,12 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \t{3} & No \\
     \t{4} & No \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*\_version} commands}
     \label{tab:foo-version-host-root-table}
     \begin{tabular}{ l l }
@@ -537,6 +545,7 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
     \t{3} & No \\
     \t{4} & No \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -626,7 +635,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{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting controllable compression} \label{tab:compression-table}
     \begin{tabular}{ l l l }
         \toprule
@@ -640,6 +649,7 @@ in table~\ref{tab:compression-table} as supporting \t{docompress}.
     \t{3} & No & No \\
     \t{4} & Yes & Yes \\
     \t{5} & Yes & Yes \\
+    \t{6} & Yes & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -678,7 +688,7 @@ either behaviour is undefined or it is an error as decided by table~\ref{tab:use
     Only available in EAPIs listed in table~\ref{tab:usex-table} as supporting \t{usex}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPI Behaviour for Use Queries not in IUSE\_EFFECTIVE} \label{tab:use-list-strictness}
     \begin{tabular}{ l l }
         \toprule
@@ -691,11 +701,12 @@ either behaviour is undefined or it is an error as decided by table~\ref{tab:use
     \t{3} & Undefined \\
     \t{4} & Error \\
     \t{5} & Error \\
+    \t{6} & Error \\
     \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting empty third argument in \t{use\_with} and \t{use\_enable}}
     \label{tab:use-with-third-arg}
     \begin{tabular}{ l l }
@@ -709,11 +720,12 @@ either behaviour is undefined or it is an error as decided by table~\ref{tab:use
     \t{3} & No \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting \t{usex}} \label{tab:usex-table}
     \begin{tabular}{ l l }
         \toprule
@@ -726,6 +738,7 @@ either behaviour is undefined or it is an error as decided by table~\ref{tab:use
     \t{3} & No \\
     \t{4} & No \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -796,7 +809,7 @@ has returned.
     It is up to the ebuild to ensure that the relevant external utilities are available, whether by
     being in the system set or via dependencies.
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{\t{unpack} extensions for EAPIs} \label{tab:unpack-extensions-table}
     \begin{tabular}{ l l }
         \toprule
@@ -809,6 +822,7 @@ has returned.
     \t{3} & Yes \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -822,7 +836,7 @@ has returned.
     table~\ref{tab:default-function-table}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting the \t{default} function} \label{tab:default-function-table}
     \begin{tabular}{ l l }
         \toprule
@@ -835,6 +849,7 @@ has returned.
     \t{3} & Yes \\
     \t{4} & Yes \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
diff --git a/pms.tex b/pms.tex
index ae86b43..c96fc05 100644
--- a/pms.tex
+++ b/pms.tex
@@ -21,8 +21,8 @@
     pdfkeywords={Gentoo, package manager, specification},
 }
 
-\CurrentEAPIIs{5}
-\ChangeWhenAddingAnEAPI{5}
+\CurrentEAPIIs{6}
+\ChangeWhenAddingAnEAPI{6}
 
 \begin{document}
 \maketitle
diff --git a/profile-variables.tex b/profile-variables.tex
index 6eca502..4c5496c 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{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs} \label{tab:profile-iuse-injection-table}
     \begin{tabular}{ l l }
         \toprule
@@ -46,6 +46,7 @@ completely override those in parent profiles.
     \t{3} & No \\
     \t{4} & No \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
diff --git a/profiles.tex b/profiles.tex
index a7a8527..1048162 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -125,7 +125,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{5}
+\ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{Profile directory support for masking/forcing use flags in stable
 versions only}\label{tab:profile-stablemask}
     \begin{tabular}{ l l }
@@ -139,6 +139,7 @@ versions only}\label{tab:profile-stablemask}
     \t{3} & No \\
     \t{4} & No \\
     \t{5} & Yes \\
+    \t{6} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
-- 
2.6.1



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

* [gentoo-pms] [PATCH 02/22] Rework the EAPI feature table.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 01/22] Add an EAPI 6 identical to EAPI 5 Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 03/22] Reformat EAPI tables to be more compact Ulrich Müller
                   ` (19 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

With the addition of EAPI 6, the table was too wide for the page, even
in landscape mode. Therefore, consolidate EAPIs 0, 1, and 2 into one
single column, and add a reference to the 2012-09-20 edition (EAPI 5)
which contains the complete table for these EAPIs.
---
 eapi-differences.tex | 117 +++++++++++++++++++++++++--------------------------
 1 file changed, 58 insertions(+), 59 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 0a8f9e1..c28494d 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,11 +1,14 @@
 \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
+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}
 \begin{landscape}
 \newcolumntype{P}[1]{>{\setlength{\rightskip}{0pt plus 1fil}}p{#1}}
-\begin{longtable}{llP{5em}P{5em}P{6em}P{6em}P{6em}P{6em}P{6em}}
+\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}} &
@@ -13,9 +16,7 @@
 \multicolumn{4}{c}{\b{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0} &
-\multicolumn{1}{c}{1} &
-\multicolumn{1}{c}{2} &
+\multicolumn{1}{c}{0, 1, 2} &
 \multicolumn{1}{c}{3} &
 \multicolumn{1}{c}{4} &
 \multicolumn{1}{c}{5} &
@@ -28,9 +29,7 @@
 \multicolumn{4}{c}{\b{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0} &
-\multicolumn{1}{c}{1} &
-\multicolumn{1}{c}{2} &
+\multicolumn{1}{c}{0, 1, 2} &
 \multicolumn{1}{c}{3} &
 \multicolumn{1}{c}{4} &
 \multicolumn{1}{c}{5} &
@@ -43,72 +42,72 @@
 \endlastfoot
 
 Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    No & Yes & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{REQUIRED\_USE} & \compactfeatureref{required-use} &
-    No & No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{PROPERTIES} & \compactfeatureref{properties} &
-    Optionally & Optionally & Optionally & Optionally & Yes & Yes & Yes \\
+    Optionally & Optionally & Yes & Yes & Yes \\
 
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    Yes & Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 \t{DEFINED\_PHASES} & \compactfeatureref{defined-phases} &
-    Optionally & Optionally & Optionally & Optionally & Yes & Yes & Yes \\
+    Optionally & Optionally & Yes & Yes & Yes \\
 
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{SRC\_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    No & No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-    No & Named & Named & Named & Named & Named and Operator & Named and Operator \\
+    * & Named & Named & Named and Operator & Named and Operator \\
 
 Sub-slots & \compactfeatureref{sub-slot} &
-    No & No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
-    No & No & 2-style & 2-style & 4-style & 4-style & 4-style \\
+    * & 2-style & 4-style & 4-style & 4-style \\
 
 \t{!} blockers & \compactfeatureref{bang-strength} &
-    Unspecified & Unspecified & Weak & Weak & Weak & Weak & Weak \\
+    * & Weak & Weak & Weak & Weak \\
 
 \t{!!} blockers & \compactfeatureref{bang-strength} &
-    Forbidden & Forbidden & Strong & Strong & Strong & Strong & Strong \\
+    * & Strong & Strong & Strong & Strong \\
 
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    Always & Always & Always & Always & Conditional & Conditional & Conditional \\
+    Always & Always & Conditional & Conditional & Conditional \\
 
 \t{pkg\_pretend} & \compactfeatureref{pkg-pretend} &
-    No & No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{src\_prepare} & \compactfeatureref{src-prepare} &
-    No & No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{src\_configure} & \compactfeatureref{src-configure} &
-    No & No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{src\_compile} style & \compactfeatureref{src-compile} &
-    0 & 1 & 2 & 2 & 2 & 2 & 2 \\
+    * & 2 & 2 & 2 & 2 \\
 
 Parallel tests & \compactfeatureref{parallel-tests} &
-    No & No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{src\_install} style & \compactfeatureref{src-install} &
-    no-op & no-op & no-op & no-op & 4 & 4 & 4 \\
+    no-op & no-op & 4 & 4 & 4 \\
 
 \t{pkg\_info} & \compactfeatureref{pkg-info} &
-    Installed & Installed & Installed & Installed & Both & Both & Both \\
+    Installed & Installed & Both & Both & Both \\
 
 \t{default\_} phase functions & \compactfeatureref{default-phase-funcs} &
-    None & None &
-    \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\_test} &
+    * &
+    \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},
@@ -117,90 +116,90 @@ Parallel tests & \compactfeatureref{parallel-tests} &
         \t{src\_compile}, \t{src\_install}, \t{src\_test} \\
 
 \t{AA} & \compactfeatureref{aa} &
-    Yes & Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 \t{KV} & \compactfeatureref{kv} &
-    Yes & Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 \t{EBUILD\_PHASE\_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{MERGE\_TYPE} & \compactfeatureref{merge-type} &
-    No & No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{REPLACING\_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    No & No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{REPLACED\_BY\_VERSION} & \compactfeatureref{replace-version-vars} &
-    No & No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    No & No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Undefined & Undefined & Undefined & Undefined & Yes & Yes \\
+    Undefined & Undefined & Undefined & Yes & Yes \\
 
 Most utilities die & \compactfeatureref{die-on-failure} &
-    No & No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-    No & No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned \\
 
 \t{dosed} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned \\
 
 Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
-    No & 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 \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
-    No & No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{doheader} & \compactfeatureref{doheader} &
-    No & No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{doins} handles symlinks & \compactfeatureref{doins} &
-    No & No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{doman} languages & \compactfeatureref{doman-langs} &
-    No & No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    N/A & N/A & No & No & Yes & Yes & Yes \\
+    * & No & Yes & Yes & Yes \\
 
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 Controllable compression & \compactfeatureref{docompress} &
-    No & No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{docompress} & \compactfeatureref{docompress} &
-    No & No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{use\_with} empty third arg & \compactfeatureref{use-with} &
-    No & No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{usex} & \compactfeatureref{usex} &
-    No & No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{unpack} support for \t{xz}? & \compactfeatureref{unpack-extensions} &
-    No & No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{default} function & \compactfeatureref{default-func} &
-    No & No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    Undefined & Undefined & Undefined & Yes & Yes & Yes & Yes \\
+    Undefined & Yes & Yes & Yes & Yes \\
 
 \end{longtable}
 \end{landscape}
-- 
2.6.1



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

* [gentoo-pms] [PATCH 03/22] Reformat EAPI tables to be more compact.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 01/22] Add an EAPI 6 identical to EAPI 5 Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 02/22] Rework the EAPI feature table Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 04/22] Delete redundant sentence in the list of defined EAPIs Ulrich Müller
                   ` (18 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

Combine all lines with identical behaviour for different EAPIs.
Also use consistent indentation for tables in the LaTeX source.
---
 dependencies.tex        | 113 +++++++---------
 ebuild-env-commands.tex |  22 ++-
 ebuild-env-vars.tex     |  95 ++++++-------
 ebuild-functions.tex    | 207 ++++++++++++-----------------
 ebuild-vars.tex         |  89 +++++--------
 merge.tex               |  19 +--
 pkg-mgr-commands.tex    | 345 ++++++++++++++++++++----------------------------
 profile-variables.tex   |  22 ++-
 profiles.tex            |  23 ++--
 9 files changed, 383 insertions(+), 552 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 8d3facb..6c5e950 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -89,38 +89,30 @@ 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}
-\begin{centertable}{EAPIs supporting \t{SRC\_URI} arrows} \label{tab:uri-arrows-table}
+\begin{centertable}{EAPIs supporting \t{SRC\_URI} arrows}
+    \label{tab:uri-arrows-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports \t{SRC\_URI} arrows?}} \\
-        \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & Yes \\
-    \t{3} & Yes \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{SRC\_URI} arrows?}} \\
+      \midrule
+      0, 1              & No  \\
+      2, 3, 4, 5, 6     & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{REQUIRED\_USE ??}\ groups} \label{tab:at-most-one-of-table}
+\begin{centertable}{EAPIs supporting \t{REQUIRED\_USE ??}\ groups}
+    \label{tab:at-most-one-of-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED\_USE ??}\ groups?}} \\
-        \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & No \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED\_USE ??}\ groups?}} \\
+      \midrule
+      0, 1, 2, 3, 4     & No  \\
+      5, 6              & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -194,37 +186,30 @@ manager must warn or error if this feature is used with an EAPI not supporting u
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
     \label{tab:slot-deps-table}
     \begin{tabular}{ l l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{Supports \t{SLOT} dependencies?}} &
-            \multicolumn{1}{c}{\textbf{Supports sub-slots?}} \\
-            \midrule
-    \t{0} & No & No \\
-    \t{1} & Named only & No \\
-    \t{2} & Named only & No \\
-    \t{3} & Named only & No \\
-    \t{4} & Named only & No \\
-    \t{5} & Named and operator & Yes \\
-    \t{6} & Named and operator & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{SLOT} dependencies?}} &
+      \multicolumn{1}{c}{\textbf{Supports sub-slots?}} \\
+      \midrule
+      0                 & No                 & No  \\
+      1, 2, 3, 4        & Named only         & No  \\
+      5, 6              & Named and operator & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{USE} dependencies} \label{tab:use-deps-table}
+\begin{centertable}{EAPIs supporting \t{USE} dependencies}
+    \label{tab:use-deps-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports \t{USE} dependencies?}} \\
-        \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & 2-style \\
-    \t{3} & 2-style \\
-    \t{4} & 4-style \\
-    \t{5} & 4-style \\
-    \t{6} & 4-style \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{USE} dependencies?}} \\
+      \midrule
+      0, 1              & No      \\
+      2, 3              & 2-style \\
+      4, 5, 6           & 4-style \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -263,21 +248,17 @@ strong block must not be ignored. The mapping from one or two exclamation marks
 described in table~\ref{tab:bang-strength-table}.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{Exclamation mark strengths for EAPIs} \label{tab:bang-strength-table}
+\begin{centertable}{Exclamation mark strengths for EAPIs}
+    \label{tab:bang-strength-table}
     \begin{tabular}{ l l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{\t{!}}} &
-            \multicolumn{1}{c}{\textbf{\t{!!}}} \\
-            \midrule
-    \t{0} & Unspecified & Forbidden \\
-    \t{1} & Unspecified & Forbidden \\
-    \t{2} & Weak & Strong \\
-    \t{3} & Weak & Strong \\
-    \t{4} & Weak & Strong \\
-    \t{5} & Weak & Strong \\
-    \t{6} & Weak & Strong \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{!}}} &
+      \multicolumn{1}{c}{\textbf{\t{!!}}} \\
+      \midrule
+      0, 1              & Unspecified & Forbidden \\
+      2, 3, 4, 5, 6     & Weak        & Strong    \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
diff --git a/ebuild-env-commands.tex b/ebuild-env-commands.tex
index 8b2c146..54e12ec 100644
--- a/ebuild-env-commands.tex
+++ b/ebuild-env-commands.tex
@@ -36,20 +36,16 @@ The following commands must always be available in the ebuild environment:
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{\t{find} implementation for EAPIs} \label{tab:system-commands-table}
+\begin{centertable}{\t{find} implementation for EAPIs}
+    \label{tab:system-commands-table}
     \begin{tabular}{ l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{GNU \t{find}?}} \\
-            \midrule
-    \t{0} & Undefined \\
-    \t{1} & Undefined \\
-    \t{2} & Undefined \\
-    \t{3} & Undefined \\
-    \t{4} & Undefined \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{GNU \t{find}?}} \\
+      \midrule
+      0, 1, 2, 3, 4     & Undefined \\
+      5, 6              & Yes       \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 8946157..74c54b6 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -226,42 +226,35 @@ variable.
 \end{landscape}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting various added env variables} \label{tab:added-env-vars-table}
+\begin{centertable}{EAPIs supporting various added env variables}
+    \label{tab:added-env-vars-table}
     \begin{tabular}{ l l l l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{\t{MERGE\_TYPE}?}} &
-        \multicolumn{1}{c}{\textbf{\t{REPLACING\_VERSIONS}?}} &
-        \multicolumn{1}{c}{\textbf{\t{REPLACED\_BY\_VERSION}?}} &
-        \multicolumn{1}{c}{\textbf{\t{EBUILD\_PHASE\_FUNC}?}} \\
-        \midrule
-    \t{0} & No & No & No & No \\
-    \t{1} & No & No & No & No \\
-    \t{2} & No & No & No & No \\
-    \t{3} & No & No & No & No \\
-    \t{4} & Yes & Yes & Yes & No \\
-    \t{5} & Yes & Yes & Yes & Yes \\
-    \t{6} & Yes & Yes & Yes & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{MERGE\_TYPE}?}} &
+      \multicolumn{1}{c}{\textbf{\t{REPLACING\_VERSIONS}?}} &
+      \multicolumn{1}{c}{\textbf{\t{REPLACED\_BY\_VERSION}?}} &
+      \multicolumn{1}{c}{\textbf{\t{EBUILD\_PHASE\_FUNC}?}} \\
+      \midrule
+      0, 1, 2, 3        & No  & No  & No  & No  \\
+      4                 & Yes & Yes & Yes & No  \\
+      5, 6              & Yes & Yes & Yes & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting various removed env variables} \label{tab:removed-env-vars-table}
+\begin{centertable}{EAPIs supporting various removed env variables}
+    \label{tab:removed-env-vars-table}
     \begin{tabular}{ l l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{\t{AA}?}} &
-        \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
-        \midrule
-    \t{0} & Yes & Yes \\
-    \t{1} & Yes & Yes \\
-    \t{2} & Yes & Yes \\
-    \t{3} & Yes & Yes \\
-    \t{4} & No & No \\
-    \t{5} & No & No \\
-    \t{6} & No & No \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{AA}?}} &
+      \multicolumn{1}{c}{\textbf{\t{KV}?}} \\
+      \midrule
+      0, 1, 2, 3        & Yes & Yes \\
+      4, 5, 6           & No  & No  \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -269,20 +262,15 @@ variable.
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
     \begin{tabular}{ l l l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
-        \multicolumn{1}{c}{\textbf{\t{EROOT}?}} &
-        \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
-        \midrule
-        \t{0} & No & No & No \\
-        \t{1} & No & No & No \\
-        \t{2} & No & No & No \\
-        \t{3} & Yes & Yes & Yes \\
-        \t{4} & Yes & Yes & Yes \\
-        \t{5} & Yes & Yes & Yes \\
-        \t{6} & Yes & Yes & Yes \\
-        \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{EPREFIX}?}} &
+      \multicolumn{1}{c}{\textbf{\t{EROOT}?}} &
+      \multicolumn{1}{c}{\textbf{\t{ED}?}} \\
+      \midrule
+      0, 1, 2           & No  & No  & No  \\
+      3, 4, 5, 6        & Yes & Yes & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -386,18 +374,13 @@ contain at most one value.
 \begin{centertable}{EAPIs supporting offset-prefix}
     \label{tab:offset-support-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports offset-prefix?}}\\
-        \midrule
-        \t{0} & No \\
-        \t{1} & No \\
-        \t{2} & No \\
-        \t{3} & Yes \\
-        \t{4} & Yes \\
-        \t{5} & Yes \\
-        \t{6} & Yes \\
-        \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports offset-prefix?}}\\
+      \midrule
+      0, 1, 2           & No  \\
+      3, 4, 5, 6        & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 60bd1e5..23f02b4 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -45,20 +45,16 @@ fallback to \t{WORKDIR} is used:
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks} \label{tab:s-fallback-table}
+\begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
+    \label{tab:s-fallback-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Fallback to \t{WORKDIR} permitted?}} \\
-        \midrule
-    \t{0} & Always \\
-    \t{1} & Always \\
-    \t{2} & Always \\
-    \t{3} & Always \\
-    \t{4} & Conditional error \\
-    \t{5} & Conditional error \\
-    \t{6} & Conditional error \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Fallback to \t{WORKDIR} permitted?}} \\
+      \midrule
+      0, 1, 2, 3        & Always            \\
+      4, 5, 6           & Conditional error \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -81,20 +77,16 @@ before the next phase is executed.
 \t{pkg\_pretend} must not write to the filesystem.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{pkg\_pretend}} \label{tab:pkg-pretend-table}
+\begin{centertable}{EAPIs supporting \t{pkg\_pretend}}
+    \label{tab:pkg-pretend-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports \t{pkg\_pretend}?}} \\
-        \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{pkg\_pretend}?}} \\
+      \midrule
+      0, 1, 2, 3        & No  \\
+      4, 5, 6           & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -138,20 +130,16 @@ The initial working directory is \t{S}, with an error or fallback to \t{WORKDIR}
 section~\ref{sec:s-to-workdir-fallback}.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{src\_prepare}} \label{tab:src-prepare-table}
+\begin{centertable}{EAPIs supporting \t{src\_prepare}}
+    \label{tab:src-prepare-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports \t{src\_prepare}?}} \\
-        \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & Yes \\
-    \t{3} & Yes \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{src\_prepare}?}} \\
+      \midrule
+      0, 1              & No  \\
+      2, 3, 4, 5, 6     & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -176,20 +164,16 @@ src_configure() {
 \end{verbatim}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{src\_configure}} \label{tab:src-configure-table}
+\begin{centertable}{EAPIs supporting \t{src\_configure}}
+    \label{tab:src-configure-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports \t{src\_configure}?}} \\
-        \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & Yes \\
-    \t{3} & Yes \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{src\_configure}?}} \\
+      \midrule
+      0, 1              & No  \\
+      2, 3, 4, 5, 6     & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -245,20 +229,17 @@ src_compile() {
 \end{verbatim}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{\t{src\_compile} behaviour for EAPIs} \label{tab:src-compile-table}
+\begin{centertable}{\t{src\_compile} behaviour for EAPIs}
+    \label{tab:src-compile-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Format}} \\
-        \midrule
-    \t{0} & 0 \\
-    \t{1} & 1 \\
-    \t{2} & 2 \\
-    \t{3} & 2 \\
-    \t{4} & 2 \\
-    \t{5} & 2 \\
-    \t{6} & 2 \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Format}} \\
+      \midrule
+      0                 & 0 \\
+      1                 & 1 \\
+      2, 3, 4, 5, 6     & 2 \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -281,20 +262,16 @@ The \t{src\_test} function may be disabled by \t{RESTRICT}\@. See section~\ref{s
 be disabled by user too, using a PM-specific mechanism.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{\t{src\_test} behaviour for EAPIs} \label{tab:src-test-table}
+\begin{centertable}{\t{src\_test} behaviour for EAPIs}
+    \label{tab:src-test-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports parallel tests?}} \\
-        \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & No \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports parallel tests?}} \\
+      \midrule
+      0, 1, 2, 3, 4     & No  \\
+      5, 6              & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -335,20 +312,16 @@ For other EAPIs, the default implementation used when the ebuild lacks the \t{sr
 is a no-op.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{\t{src\_install} behaviour for EAPIs} \label{tab:src-install-table}
+\begin{centertable}{\t{src\_install} behaviour for EAPIs}
+    \label{tab:src-install-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Format}} \\
-        \midrule
-    \t{0} & no-op \\
-    \t{1} & no-op \\
-    \t{2} & no-op \\
-    \t{3} & no-op \\
-    \t{4} & 4 \\
-    \t{5} & 4 \\
-    \t{6} & 4 \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Format}} \\
+      \midrule
+      0, 1, 2, 3        & no-op \\
+      4, 5, 6           & 4     \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -412,20 +385,16 @@ that dependencies may not be installed.
 \t{pkg\_info} must not write to the filesystem.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{pkg\_info} on non-installed packages} \label{tab:pkg-info-table}
+\begin{centertable}{EAPIs supporting \t{pkg\_info} on non-installed packages}
+    \label{tab:pkg-info-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports \t{pkg\_info} on non-installed packages?}} \\
-        \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{pkg\_info} on non-installed packages?}} \\
+      \midrule
+      0, 1, 2, 3        & No  \\
+      4, 5, 6           & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -448,25 +417,19 @@ when executing any ebuild phase listed in the table. Ebuilds must not call these
 when in the phase in question.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{default\_} phase functions} \label{tab:default-phase-function-table}
+\begin{centertable}{EAPIs supporting \t{default\_} phase functions}
+    \label{tab:default-phase-function-table}
     \begin{tabular}{ l >{\setlength{\rightskip}{0pt plus 1fil}}p{30em} }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{Supports \t{default\_} functions in phases}} \\
-            \midrule
-    \t{0} & None \\
-    \t{1} & None \\
-    \t{2} & \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
-        \t{src\_compile}, \t{src\_test} \\
-    \t{3} & \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
-        \t{src\_compile}, \t{src\_test} \\
-    \t{4} & \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
-        \t{src\_compile}, \t{src\_install}, \t{src\_test} \\
-    \t{5} & \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
-        \t{src\_compile}, \t{src\_install}, \t{src\_test} \\
-    \t{6} & \t{pkg\_nofetch}, \t{src\_unpack}, \t{src\_prepare}, \t{src\_configure},
-        \t{src\_compile}, \t{src\_install}, \t{src\_test} \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{default\_} functions in phases}} \\
+      \midrule
+      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},
+                          \t{src\_compile}, \t{src\_install}, \t{src\_test} \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 0bba597..dac0990 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -85,40 +85,31 @@ Ebuilds may define any of the following variables:
 \end{description}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{IUSE} defaults} \label{tab:iuse-defaults-table}
+\begin{centertable}{EAPIs supporting \t{IUSE} defaults}
+    \label{tab:iuse-defaults-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports \t{IUSE} defaults?}} \\
-        \midrule
-    \t{0} & No \\
-    \t{1} & Yes \\
-    \t{2} & Yes \\
-    \t{3} & Yes \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{IUSE} defaults?}} \\
+      \midrule
+      0                 & No  \\
+      1, 2, 3, 4, 5, 6  & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
-\label{tab:optional-vars-table}
+    \label{tab:optional-vars-table}
     \begin{tabular}{ l l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports \t{PROPERTIES}?}} &
-        \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED\_USE}?}} \\
-        \midrule
-    \t{0} & Optionally & No \\
-    \t{1} & Optionally & No \\
-    \t{2} & Optionally & No \\
-    \t{3} & Optionally & No \\
-    \t{4} & Yes & Yes \\
-    \t{5} & Yes & Yes \\
-    \t{6} & Yes & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{PROPERTIES}?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED\_USE}?}} \\
+      \midrule
+      0, 1, 2, 3        & Optionally & No  \\
+      4, 5, 6           & Yes        & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -186,20 +177,16 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
 \t{RDEPEND}.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} Default} \label{tab:rdepend-depend-table}
+\begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} Default}
+    \label{tab:rdepend-depend-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{\t{RDEPEND=DEPEND}?}} \\
-        \midrule
-    \t{0} & Yes \\
-    \t{1} & Yes \\
-    \t{2} & Yes \\
-    \t{3} & Yes \\
-    \t{4} & No \\
-    \t{5} & No \\
-    \t{6} & No \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{RDEPEND=DEPEND}?}} \\
+      \midrule
+      0, 1, 2, 3        & Yes \\
+      4, 5, 6           & No  \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -233,20 +220,16 @@ this variable defined, and must treat an empty string as ``this information is n
 based upon any variant condition.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{DEFINED\_PHASES}} \label{tab:defined-phases-table}
+\begin{centertable}{EAPIs supporting \t{DEFINED\_PHASES}}
+    \label{tab:defined-phases-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports \t{DEFINED\_PHASES}?}} \\
-        \midrule
-    \t{0} & Optionally \\
-    \t{1} & Optionally \\
-    \t{2} & Optionally \\
-    \t{3} & Optionally \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{DEFINED\_PHASES}?}} \\
+      \midrule
+      0, 1, 2, 3        & Optionally \\
+      4, 5, 6           & Yes        \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
diff --git a/merge.tex b/merge.tex
index 1180c8c..cd4b442 100644
--- a/merge.tex
+++ b/merge.tex
@@ -90,18 +90,13 @@ is undefined.
 \begin{centertable}{Preservation of file modification times (mtimes)}
     \label{tab:mtime-preserve}
     \begin{tabular}{ l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\
-            \midrule
-    \t{0} & Undefined \\
-    \t{1} & Undefined \\
-    \t{2} & Undefined \\
-    \t{3} & Yes \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\
+      \midrule
+      0, 1, 2           & Undefined \\
+      3, 4, 5, 6        & Yes       \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c614664..ff83460 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -24,21 +24,17 @@ The following commands affect this behaviour:
 \end{description}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPI Command Failure Behaviour} \label{tab:commands-die-table}
+\begin{centertable}{EAPI Command Failure Behaviour}
+    \label{tab:commands-die-table}
     \begin{tabular}{ l l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{Command failure behaviour}} &
-            \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
-            \midrule
-    \t{0} & Non-zero exit & No \\
-    \t{1} & Non-zero exit & No \\
-    \t{2} & Non-zero exit & No \\
-    \t{3} & Non-zero exit & No \\
-    \t{4} & Aborts & Yes \\
-    \t{5} & Aborts & Yes \\
-    \t{6} & Aborts & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Command failure behaviour}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{nonfatal}?}} \\
+      \midrule
+      0, 1, 2, 3        & Non-zero exit & No  \\
+      4, 5, 6           & Aborts        & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -49,23 +45,19 @@ The following commands affect this behaviour:
 called, the package manager must abort the build process indicating an error.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{Banned commands} \label{tab:banned-commands-table}
+\begin{centertable}{Banned commands}
+    \label{tab:banned-commands-table}
     \begin{tabular}{ l l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{2}{c}{\textbf{Command banned?}} \\
-        \multicolumn{1}{c}{} &
-        \multicolumn{1}{c}{\textbf{\t{dohard}}} &
-        \multicolumn{1}{c}{\textbf{\t{dosed}}} \\
-        \midrule
-    \t{0} & No & No \\
-    \t{1} & No & No \\
-    \t{2} & No & No \\
-    \t{3} & No & No \\
-    \t{4} & Yes & Yes \\
-    \t{5} & Yes & Yes \\
-    \t{6} & Yes & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{2}{c}{\textbf{Command banned?}} \\
+      \multicolumn{1}{c}{} &
+      \multicolumn{1}{c}{\textbf{\t{dohard}}} &
+      \multicolumn{1}{c}{\textbf{\t{dosed}}} \\
+      \midrule
+      0, 1, 2, 3        & No  & No  \\
+      4, 5, 6           & Yes & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -162,21 +154,18 @@ current phase function has returned.
     \end{itemize}
 
     \ChangeWhenAddingAnEAPI{6}
-    \begin{centertable}{Extra \t{econf} arguments for EAPIs} \label{tab:econf-options-table}
+    \begin{centertable}{Extra \t{econf} arguments for EAPIs}
+        \label{tab:econf-options-table}
         \begin{tabular}{ l l l }
-            \toprule
-                \multicolumn{1}{c}{\textbf{EAPI}} &
-                \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}?} &
-                \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}?} \\
-                \midrule
-        \t{0} & No & No \\
-        \t{1} & No & No \\
-        \t{2} & No & No \\
-        \t{3} & No & No \\
-        \t{4} & Yes & No \\
-        \t{5} & Yes & Yes \\
-        \t{6} & Yes & Yes \\
-        \bottomrule
+          \toprule
+          \multicolumn{1}{c}{\textbf{EAPI}} &
+          \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking?}} &
+          \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules?}} \\
+          \midrule
+          0, 1, 2, 3        & No  & No  \\
+          4                 & Yes & No  \\
+          5, 6              & Yes & Yes \\
+          \bottomrule
         \end{tabular}
     \end{centertable}
 
@@ -440,56 +429,44 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 \end{description}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{dodoc -r}} \label{tab:dodoc-table}
+\begin{centertable}{EAPIs supporting \t{dodoc -r}}
+    \label{tab:dodoc-table}
     \begin{tabular}{ l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{Supports \t{dodoc -r}?}} \\
-            \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{dodoc -r}?}} \\
+      \midrule
+      0, 1, 2, 3        & No  \\
+      4, 5, 6           & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}} \label{tab:doheader-table}
+\begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}}
+    \label{tab:doheader-table}
     \begin{tabular}{ l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{Supports \t{doheader} and \t{newheader}?}} \\
-            \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & No \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{doheader} and \t{newheader}?}} \\
+      \midrule
+      0, 1, 2, 3, 4     & No  \\
+      5, 6              & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting symlinks for \t{doins}} \label{tab:doins-table}
+\begin{centertable}{EAPIs supporting symlinks for \t{doins}}
+    \label{tab:doins-table}
     \begin{tabular}{ l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{\t{doins} supports symlinks?}} \\
-            \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{doins} supports symlinks?}} \\
+      \midrule
+      0, 1, 2, 3        & No  \\
+      4, 5, 6           & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -497,37 +474,29 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 \begin{centertable}{\t{doman} language support options for EAPIs}
     \label{tab:doman-table}
     \begin{tabular}{ l l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{Language detection by filename?}} &
-            \multicolumn{1}{c}{\textbf{Option \t{-i18n} takes precedence?}} \\
-            \midrule
-    \t{0} & No & Not applicable \\
-    \t{1} & No & Not applicable \\
-    \t{2} & Yes & No \\
-    \t{3} & Yes & No \\
-    \t{4} & Yes & Yes \\
-    \t{5} & Yes & Yes \\
-    \t{6} & Yes & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Language detection by filename?}} &
+      \multicolumn{1}{c}{\textbf{Option \t{-i18n} takes precedence?}} \\
+      \midrule
+      0, 1              & No  & Not applicable \\
+      2, 3              & Yes & No             \\
+      4, 5, 6           & Yes & Yes            \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting stdin for \t{new*} commands} \label{tab:newfoo-stdin-table}
+\begin{centertable}{EAPIs supporting stdin for \t{new*} commands}
+    \label{tab:newfoo-stdin-table}
     \begin{tabular}{ l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{\t{new*} can read from stdin?}} \\
-            \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & No \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{new*} can read from stdin?}} \\
+      \midrule
+      0, 1, 2, 3, 4     & No  \\
+      5, 6              & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -535,18 +504,13 @@ can be extended or reduced (see below). The options that can be passed to \t{doh
 \begin{centertable}{EAPIs supporting \t{-{}-host-root} for \t{*\_version} commands}
     \label{tab:foo-version-host-root-table}
     \begin{tabular}{ l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{\t{*\_version} supports \t{-{}-host-root}?}} \\
-            \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & No \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{*\_version} supports \t{-{}-host-root}?}} \\
+      \midrule
+      0, 1, 2, 3, 4     & No  \\
+      5, 6              & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -636,21 +600,17 @@ in table~\ref{tab:compression-table} as supporting \t{docompress}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting controllable compression} \label{tab:compression-table}
+\begin{centertable}{EAPIs supporting controllable compression}
+    \label{tab:compression-table}
     \begin{tabular}{ l l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{Supports controllable compression?}} &
-            \multicolumn{1}{c}{\textbf{Supports \t{docompress}?}} \\
-            \midrule
-    \t{0} & No & No \\
-    \t{1} & No & No \\
-    \t{2} & No & No \\
-    \t{3} & No & No \\
-    \t{4} & Yes & Yes \\
-    \t{5} & Yes & Yes \\
-    \t{6} & Yes & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports controllable compression?}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{docompress}?}} \\
+      \midrule
+      0, 1, 2, 3        & No  & No  \\
+      4, 5, 6           & Yes & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -689,20 +649,16 @@ either behaviour is undefined or it is an error as decided by table~\ref{tab:use
 \end{description}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPI Behaviour for Use Queries not in IUSE\_EFFECTIVE} \label{tab:use-list-strictness}
+\begin{centertable}{EAPI Behaviour for Use Queries not in IUSE\_EFFECTIVE}
+    \label{tab:use-list-strictness}
     \begin{tabular}{ l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{Behaviour}} \\
-            \midrule
-    \t{0} & Undefined \\
-    \t{1} & Undefined  \\
-    \t{2} & Undefined \\
-    \t{3} & Undefined \\
-    \t{4} & Error \\
-    \t{5} & Error \\
-    \t{6} & Error \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Behaviour}} \\
+      \midrule
+      0, 1, 2, 3        & Undefined \\
+      4, 5, 6           & Error     \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -710,36 +666,27 @@ either behaviour is undefined or it is an error as decided by table~\ref{tab:use
 \begin{centertable}{EAPIs supporting empty third argument in \t{use\_with} and \t{use\_enable}}
     \label{tab:use-with-third-arg}
     \begin{tabular}{ l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{Supports empty third argument?}} \\
-            \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports empty third argument?}} \\
+      \midrule
+      0, 1, 2, 3        & No  \\
+      4, 5, 6           & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{usex}} \label{tab:usex-table}
+\begin{centertable}{EAPIs supporting \t{usex}}
+    \label{tab:usex-table}
     \begin{tabular}{ l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{Supports \t{usex}?}} \\
-            \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & No \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{usex}?}} \\
+      \midrule
+      0, 1, 2, 3, 4     & No  \\
+      5, 6              & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
@@ -809,23 +756,19 @@ has returned.
     It is up to the ebuild to ensure that the relevant external utilities are available, whether by
     being in the system set or via dependencies.
 
-\ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{\t{unpack} extensions for EAPIs} \label{tab:unpack-extensions-table}
-    \begin{tabular}{ l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{\t{.xz} and \t{.tar.xz}?}} \\
-            \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & Yes \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
-    \end{tabular}
-\end{centertable}
+    \ChangeWhenAddingAnEAPI{6}
+    \begin{centertable}{\t{unpack} extensions for EAPIs}
+        \label{tab:unpack-extensions-table}
+        \begin{tabular}{ l l }
+          \toprule
+          \multicolumn{1}{c}{\textbf{EAPI}} &
+          \multicolumn{1}{c}{\textbf{\t{.xz} and \t{.tar.xz}?}} \\
+          \midrule
+          0, 1, 2           & No  \\
+          3, 4, 5, 6        & Yes \\
+          \bottomrule
+        \end{tabular}
+    \end{centertable}
 
 \item[inherit] See section~\ref{sec:inherit}.
 
@@ -837,20 +780,16 @@ has returned.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting the \t{default} function} \label{tab:default-function-table}
+\begin{centertable}{EAPIs supporting the \t{default} function}
+    \label{tab:default-function-table}
     \begin{tabular}{ l l }
-        \toprule
-            \multicolumn{1}{c}{\textbf{EAPI}} &
-            \multicolumn{1}{c}{\textbf{Supports \t{default} function?}} \\
-            \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & Yes \\
-    \t{3} & Yes \\
-    \t{4} & Yes \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{default} function?}} \\
+      \midrule
+      0, 1              & No  \\
+      2, 3, 4, 5, 6     & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
diff --git a/profile-variables.tex b/profile-variables.tex
index 4c5496c..61241d2 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -34,20 +34,16 @@ Portage's \t{FEATURES} variable), must not be treated incrementally---later defi
 completely override those in parent profiles.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs} \label{tab:profile-iuse-injection-table}
+\begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs}
+    \label{tab:profile-iuse-injection-table}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\
-        \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & No \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\
+      \midrule
+      0, 1, 2, 3, 4     & No  \\
+      5, 6              & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
diff --git a/profiles.tex b/profiles.tex
index 1048162..11e7780 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -126,21 +126,16 @@ subsection~\ref{sec:keywords}. Thus, these files can be used to restrict the fea
 stable in a package.
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{Profile directory support for masking/forcing use flags in stable
-versions only}\label{tab:profile-stablemask}
+\begin{centertable}{Profile directory support for masking/forcing use flags in stable versions only}
+    \label{tab:profile-stablemask}
     \begin{tabular}{ l l }
-        \toprule
-        \multicolumn{1}{c}{\textbf{EAPI}} &
-        \multicolumn{1}{c}{\textbf{Supports masking/forcing use flags in stable versions?}} \\
-        \midrule
-    \t{0} & No \\
-    \t{1} & No \\
-    \t{2} & No \\
-    \t{3} & No \\
-    \t{4} & No \\
-    \t{5} & Yes \\
-    \t{6} & Yes \\
-    \bottomrule
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports masking/forcing use flags in stable versions?}} \\
+      \midrule
+      0, 1, 2, 3, 4     & No  \\
+      5, 6              & Yes \\
+      \bottomrule
     \end{tabular}
 \end{centertable}
 
-- 
2.6.1



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

* [gentoo-pms] [PATCH 04/22] Delete redundant sentence in the list of defined EAPIs.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (2 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 03/22] Reformat EAPI tables to be more compact Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories Ulrich Müller
                   ` (17 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

---
 eapis.tex | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/eapis.tex b/eapis.tex
index bb860f4..7178e5a 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -22,18 +22,12 @@ The following EAPIs are defined by this specification:
 \ChangeWhenAddingAnEAPI{6}
 \begin{description}
 \item[0] The `original' base EAPI.
-\item[1] EAPI `1' contains a number of extensions to EAPI `0'. Except where explicitly noted, it is
-    in all other ways identical to EAPI `0'.
-\item[2] EAPI `2' contains a number of extensions to EAPI `1'. Except where explicitly noted, it is
-    in all other ways identical to EAPI `1'.
-\item[3] EAPI `3' contains a number of extensions to EAPI `2'. Except where explicitly noted, it is
-    in all other ways identical to EAPI `2'.
-\item[4] EAPI `4' contains a number of extensions to EAPI `3'. Except where explicitly noted, it is
-    in all other ways identical to EAPI `3'.
-\item[5] EAPI `5' contains a number of extensions to EAPI `4'. Except where explicitly noted, it is
-    in all other ways identical to EAPI `4'.
-\item[6] EAPI `6' contains a number of extensions to EAPI `5'. Except where explicitly noted, it is
-    in all other ways identical to EAPI `5'.
+\item[1] EAPI `1' contains a number of extensions to EAPI `0'.
+\item[2] EAPI `2' contains a number of extensions to EAPI `1'.
+\item[3] EAPI `3' contains a number of extensions to EAPI `2'.
+\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}
 
 Except where explicitly noted, everything in this specification
-- 
2.6.1



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

* [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (3 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 04/22] Delete redundant sentence in the list of defined EAPIs Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-11-05 18:38   ` David Leverton
                     ` (2 more replies)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 06/22] EAPI 6: Bash version is 4.2 Ulrich Müller
                   ` (16 subsequent siblings)
  21 siblings, 3 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

From: Michael Palimaka <kensington@gentoo.org>

Bug: 282296
---
 eapi-differences.tex |  5 ++++-
 profiles.tex         | 32 ++++++++++++++++++++++++++------
 2 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index c28494d..2132935 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*} and \t{use*} dirs & \compactfeatureref{profile-file-dirs} &
+    No & No & No & No & Yes \\
+
 Stable use masking/forcing & \compactfeatureref{stablemask} &
     No & No & No & Yes & Yes \\
 
@@ -304,7 +307,7 @@ EAPI 5 is EAPI 4 with the following changes:
 EAPI 6 is EAPI 5 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Profile \t{package*} and \t{use*} can be directories, \featureref{profile-file-dirs}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/profiles.tex b/profiles.tex
index 11e7780..a0e3c57 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -70,19 +70,39 @@ 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.
 
-\subsection{packages}
+\featurelabel{profile-file-dirs} For EAPIs listed as supported in table~\ref{tab:profile-file-dirs},
+simple line-based files described in the following sections may optionally be directories containing
+files of the named type.
+
+\ChangeWhenAddingAnEAPI{6}
+\begin{centertable}{Profile support for directories of simple line-based files}
+    \label{tab:profile-file-dirs}
+    \begin{tabular}{ l l l }
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports directories of simple line-based files?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5  & No  \\
+      6                 & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
+\subsubsection{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
 forms: a package dependency specification prefixed by \t{*} denotes that it forms part of the
 system set. A package dependency specification on its own may also appear for legacy reasons, but
 should be ignored when calculating the system set.
 
-\subsection{packages.build}
+\subsubsection{packages.build}
 The \t{packages.build} file is used by Gentoo's Catalyst tool to generate stage1 tarballs, and has
 no relevance to the operation of a package manager. It is thus outside the scope of this document,
 but is mentioned here for completeness.
 
-\subsection{package.mask}
+\note At the time of writing, Catalyst does not support \t{packages.build} as a directory.
+
+\subsubsection{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.
@@ -93,20 +113,20 @@ necessarily a global mask (from \t{profiles/package.mask}, section~\ref{profiles
 \note Portage currently treats \t{profiles/package.mask} as being on the leftmost branch of the
     inherit tree when it comes to \t{-lines}. This behaviour may not be relied upon.
 
-\subsection{package.provided}
+\subsubsection{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.
 
-\subsection{package.use}
+\subsubsection{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.
 
-\subsection{USE masking and forcing}
+\subsubsection{USE masking and forcing}
 \label{sec:use-masking}
 This section covers the eight files \t{use.mask}, \t{use.force}, \t{use.stable.mask},
 \t{use.stable.force}, \t{package.use.mask}, \t{package.use.force}, \t{package.use.stable.mask},
-- 
2.6.1



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

* [gentoo-pms] [PATCH 06/22] EAPI 6: Bash version is 4.2.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (4 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 07/22] EAPI 6 enables failglob in global scope Ulrich Müller
                   ` (15 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

Bug: 431340
---
 eapi-differences.tex    |  4 ++++
 ebuild-env-commands.tex | 16 ++++++++--------
 ebuild-format.tex       | 11 ++++++-----
 3 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 2132935..3f37c19 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -142,6 +142,9 @@ Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
     No & Yes & Yes & Yes & Yes \\
 
+Bash version & \compactfeatureref{bash-version} &
+    3.2 & 3.2 & 3.2 & 3.2 & 4.2 \\
+
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
     Undefined & Undefined & Undefined & Yes & Yes \\
 
@@ -308,6 +311,7 @@ EAPI 6 is EAPI 5 with the following changes:
 
 \begin{compactitem}
 \item Profile \t{package*} and \t{use*} can be directories, \featureref{profile-file-dirs}.
+\item Bash version is 4.2, \featureref{bash-version}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/ebuild-env-commands.tex b/ebuild-env-commands.tex
index 54e12ec..1e8a5c3 100644
--- a/ebuild-env-commands.tex
+++ b/ebuild-env-commands.tex
@@ -23,10 +23,8 @@ dependencies must be used to ensure their presence.
 
 The following commands must always be available in the ebuild environment:
 \begin{compactitem}
-\item All builtin commands in GNU bash, version 3.2\footnote{The required bash version was
-    retroactively updated from 3.0 to 3.2 in November 2009
-    (see \url{https://projects.gentoo.org/council/meeting-logs/20091109.txt}).%
-    \label{fn:bash3.2}}.
+\item \featurelabel{bash-version} All builtin commands in GNU bash, version as listed in
+    table~\ref{tab:system-commands-table}.
 \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.
@@ -36,15 +34,17 @@ The following commands must always be available in the ebuild environment:
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{\t{find} implementation for EAPIs}
+\begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
-    \begin{tabular}{ l l }
+    \begin{tabular}{ l l l }
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Bash version}} &
       \multicolumn{1}{c}{\textbf{GNU \t{find}?}} \\
       \midrule
-      0, 1, 2, 3, 4     & Undefined \\
-      5, 6              & Yes       \\
+      0, 1, 2, 3, 4     & 3.2 & Undefined \\
+      5                 & 3.2 & Yes       \\
+      6                 & 4.2 & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}
diff --git a/ebuild-format.tex b/ebuild-format.tex
index b623b97..c741398 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -2,11 +2,12 @@
 \label{sec:ebuild-format}
 
 The ebuild file format is in its basic form a subset of the format of a bash script. The interpreter
-is assumed to be GNU bash, version 3.2 or later, see footnote~\ref{fn:bash3.2} on
-page~\pageref{fn:bash3.2}. The file encoding must be UTF-8 with Unix-style newlines. When sourced,
-the ebuild must define certain variables and functions (see sections~\ref{sec:ebuild-vars}
-and~\ref{sec:ebuild-functions} 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.
+is assumed to be GNU bash, version as listed in table~\ref{tab:system-commands-table} on
+page~\pageref{tab:system-commands-table}, or any later version. The file encoding must be UTF-8
+with Unix-style newlines. When sourced, the ebuild must define certain variables and functions
+(see sections~\ref{sec:ebuild-vars} and~\ref{sec:ebuild-functions} 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.
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
-- 
2.6.1



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

* [gentoo-pms] [PATCH 07/22] EAPI 6 enables failglob in global scope.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (5 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 06/22] EAPI 6: Bash version is 4.2 Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 08/22] EAPI 6: einstall banned Ulrich Müller
                   ` (14 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 3f37c19..616aa06 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -145,6 +145,9 @@ Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
 Bash version & \compactfeatureref{bash-version} &
     3.2 & 3.2 & 3.2 & 3.2 & 4.2 \\
 
+\t{failglob} in global scope & \compactfeatureref{failglob} &
+    No & No & No & No & Yes \\
+
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
     Undefined & Undefined & Undefined & Yes & Yes \\
 
@@ -312,6 +315,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \begin{compactitem}
 \item Profile \t{package*} and \t{use*} can be directories, \featureref{profile-file-dirs}.
 \item Bash version is 4.2, \featureref{bash-version}.
+\item \t{failglob} is enabled in global scope, \featureref{failglob}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/ebuild-env-commands.tex b/ebuild-env-commands.tex
index 1e8a5c3..4439d14 100644
--- a/ebuild-env-commands.tex
+++ b/ebuild-env-commands.tex
@@ -33,18 +33,25 @@ The following commands must always be available in the ebuild environment:
     table~\ref{tab:system-commands-table} as requiring GNU find.
 \end{compactitem}
 
+\subsubsection{Shell options}
+
+\featurelabel{failglob} For EAPIs listed such in table~\ref{tab:system-commands-table}, the
+\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}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
-    \begin{tabular}{ l l l }
+    \begin{tabular}{ l l l l }
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Bash version}} &
+      \multicolumn{1}{c}{\textbf{\t{failglob} in global scope?}} &
       \multicolumn{1}{c}{\textbf{GNU \t{find}?}} \\
       \midrule
-      0, 1, 2, 3, 4     & 3.2 & Undefined \\
-      5                 & 3.2 & Yes       \\
-      6                 & 4.2 & Yes       \\
+      0, 1, 2, 3, 4     & 3.2 & No  & Undefined \\
+      5                 & 3.2 & No  & Yes       \\
+      6                 & 4.2 & Yes & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}
-- 
2.6.1



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

* [gentoo-pms] [PATCH 08/22] EAPI 6: einstall banned.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (6 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 07/22] EAPI 6 enables failglob in global scope Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 09/22] EAPI 6: die and assert called with -n respect nonfatal Ulrich Müller
                   ` (13 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

Bug: 524112
---
 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 14 +++++++++-----
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 616aa06..6ec5209 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -163,6 +163,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 \t{dosed} & \compactfeatureref{banned-commands} &
     Yes & Yes & Banned & Banned & Banned \\
 
+\t{einstall} & \compactfeatureref{banned-commands} &
+    Yes & Yes & Yes & Yes & Banned \\
+
 Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
     No & No & No & Yes & Yes \\
 
@@ -316,6 +319,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \item Profile \t{package*} and \t{use*} can be directories, \featureref{profile-file-dirs}.
 \item Bash version is 4.2, \featureref{bash-version}.
 \item \t{failglob} is enabled in global scope, \featureref{failglob}.
+\item \t{einstall} banned, \featureref{banned-commands}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index ff83460..4f8c34f 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -47,16 +47,18 @@ called, the package manager must abort the build process indicating an error.
 \ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
-    \begin{tabular}{ l l l }
+    \begin{tabular}{ l l l l }
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{2}{c}{\textbf{Command banned?}} \\
+      \multicolumn{3}{c}{\textbf{Command banned?}} \\
       \multicolumn{1}{c}{} &
       \multicolumn{1}{c}{\textbf{\t{dohard}}} &
-      \multicolumn{1}{c}{\textbf{\t{dosed}}} \\
+      \multicolumn{1}{c}{\textbf{\t{dosed}}} &
+      \multicolumn{1}{c}{\textbf{\t{einstall}}} \\
       \midrule
-      0, 1, 2, 3        & No  & No  \\
-      4, 5, 6           & Yes & Yes \\
+      0, 1, 2, 3        & No  & No  & No  \\
+      4, 5              & Yes & Yes & No  \\
+      6                 & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -208,6 +210,8 @@ current phase function has returned.
 \item[einstall] A shortcut for the command given in Listing~\ref{lst:einstall}. Any arguments given
     to \t{einstall} are passed verbatim to \t{emake}, as shown. Failure behaviour is EAPI dependent
     as per section~\ref{sec:failure-behaviour}.
+    In EAPIs listed in table~\ref{tab:banned-commands-table}, this command is banned as per
+    section~\ref{sec:banned-commands}.
 
     The variable \t{ED} is defined as in Table~\ref{tab:defined_vars} and depends on the use of an
     offset-prefix. When such offset-prefix is absent, \t{ED} is equivalent to \t{D}\@. \t{ED} is
-- 
2.6.1



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

* [gentoo-pms] [PATCH 09/22] EAPI 6: die and assert called with -n respect nonfatal.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (7 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 08/22] EAPI 6: einstall banned Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 10/22] EAPI 6 has eapply Ulrich Müller
                   ` (12 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

Bug: 451938
---
 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 33 ++++++++++++++++++++++++++-------
 2 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6ec5209..2a4f840 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -169,6 +169,9 @@ Most utilities die & \compactfeatureref{die-on-failure} &
 Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
     No & No & No & Yes & Yes \\
 
+\t{die -n} & \compactfeatureref{nonfatal-die} &
+    No & No & No & No & Yes \\
+
 \t{econf} arguments & \compactfeatureref{econf-options} &
     &  & disable dependency tracking &
     disable dependency tracking, disable silent rules &
@@ -320,6 +323,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \item Bash version is 4.2, \featureref{bash-version}.
 \item \t{failglob} is enabled in global scope, \featureref{failglob}.
 \item \t{einstall} banned, \featureref{banned-commands}.
+\item \t{die} and \t{assert} called with \t{-n} respect \t{nonfatal}, \featureref{nonfatal-die}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4f8c34f..fce819b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -18,9 +18,11 @@ The following commands affect this behaviour:
 \begin{description}
 \item[nonfatal] \featurelabel{nonfatal} Executes the remainder of its arguments as a command,
     preserving the exit status. If this results in a command being called that would normally abort
-    the build process due to a failure (but not due to an explicit \t{die} or \t{assert} call),
-    instead a non-zero exit status shall be returned. Only in EAPIs listed in
-    table~\ref{tab:commands-die-table} as supporting \t{nonfatal}.
+    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}.
+
+    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}
 
 \ChangeWhenAddingAnEAPI{6}
@@ -117,13 +119,30 @@ stderr or some other appropriate facility.
 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.
 \begin{description}
-\item[die] 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.
+\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
+    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.
 \item[assert] Checks the value of the shell's pipe status variable, and if any component is non-zero
-    (indicating failure), calls \t{die} with its first argument as a failure message.
+    (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
+\ChangeWhenAddingAnEAPI{6}
+\begin{centertable}{EAPIs supporting \t{-n} for \t{die} and \t{assert} commands}
+    \label{tab:nonfatal-die}
+    \begin{tabular}{ l l }
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{die} and \t{assert} support \t{-n}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5  & No  \\
+      6                 & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Build commands}
 These commands are used during the \t{src\_configure}, \t{src\_compile}, and \t{src\_install}
 phases to run the package's build commands. Ebuilds must not run any of these commands once the
-- 
2.6.1



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

* [gentoo-pms] [PATCH 10/22] EAPI 6 has eapply.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (8 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 09/22] EAPI 6: die and assert called with -n respect nonfatal Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 11/22] EAPI 6: Explain eapply behavior Ulrich Müller
                   ` (11 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

Bug: 463768
---
 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 30 ++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 2a4f840..7502c1e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -172,6 +172,9 @@ Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
 \t{die -n} & \compactfeatureref{nonfatal-die} &
     No & No & No & No & Yes \\
 
+\t{eapply} & \compactfeatureref{eapply} &
+    No & No & No & No & Yes \\
+
 \t{econf} arguments & \compactfeatureref{econf-options} &
     &  & disable dependency tracking &
     disable dependency tracking, disable silent rules &
@@ -324,6 +327,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \item \t{failglob} is enabled in global scope, \featureref{failglob}.
 \item \t{einstall} banned, \featureref{banned-commands}.
 \item \t{die} and \t{assert} called with \t{-n} respect \t{nonfatal}, \featureref{nonfatal-die}.
+\item \t{eapply} support, \featureref{eapply}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index fce819b..7997323 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -143,6 +143,36 @@ completing. Ebuilds must not run any of these commands once the current phase fu
     \end{tabular}
 \end{centertable}
 
+\subsubsection{Patch commands}
+These commands are used during the \t{src\_prepare} phase to apply patches to the package's sources.
+Ebuilds must not run any of these commands once the current phase function has returned.
+
+\begin{description}
+\item[eapply] \featurelabel{eapply}
+    Only available in EAPIs listed in table~\ref{tab:patch-commands} as supporting \t{eapply}.
+\end{description}
+
+\begin{algorithm}
+\caption{eapply logic} \label{alg:eapply}
+\begin{algorithmic}[1]
+\STATE \COMMENT{WORK IN PROGRESS}
+\end{algorithmic}
+\end{algorithm}
+
+\ChangeWhenAddingAnEAPI{6}
+\begin{centertable}{Patch commands for EAPIs}
+    \label{tab:patch-commands}
+    \begin{tabular}{ l l }
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{\t{eapply}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5  & No  \\
+      6                 & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Build commands}
 These commands are used during the \t{src\_configure}, \t{src\_compile}, and \t{src\_install}
 phases to run the package's build commands. Ebuilds must not run any of these commands once the
-- 
2.6.1



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

* [gentoo-pms] [PATCH 11/22] EAPI 6: Explain eapply behavior.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (9 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 10/22] EAPI 6 has eapply Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-16 10:08   ` Michał Górny
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 12/22] EAPI 6 has eapply_user Ulrich Müller
                   ` (10 subsequent siblings)
  21 siblings, 1 reply; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

From: Michał Górny <mgorny@gentoo.org>

Bug: 463768
---
 pkg-mgr-commands.tex | 31 +++++++++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7997323..8fb8059 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -148,14 +148,41 @@ These commands are used during the \t{src\_prepare} phase to apply patches to th
 Ebuilds must not run any of these commands once the current phase function has returned.
 
 \begin{description}
-\item[eapply] \featurelabel{eapply}
+\item[eapply] \featurelabel{eapply} Takes zero or more GNU patch options, followed by one or more
+    file or directory paths. Processes options and applies all patches found in specified locations
+    according to Algorithm~\ref{alg:eapply}. If applying the patches fails, it aborts the build
+    using \t{die}, unless run using \t{nonfatal}, in which case it returns non-zero exit status.
     Only available in EAPIs listed in table~\ref{tab:patch-commands} as supporting \t{eapply}.
 \end{description}
 
 \begin{algorithm}
 \caption{eapply logic} \label{alg:eapply}
 \begin{algorithmic}[1]
-\STATE \COMMENT{WORK IN PROGRESS}
+\IF{any parameter is equal to \t{"-{}-"}}
+    \STATE collect all parameters before the first \t{"-{}-"} in the \t{options} array
+    \STATE collect all parameters after the first \t{"-{}-"} in the \t{files} array
+\ELSIF{any parameter that begins with a hyphen follows one that does not}
+    \STATE abort the build process with an error
+\ELSE
+    \STATE collect all parameters beginning with a hyphen in the \t{options} array
+    \STATE collect all remaining parameters in the \t{files} array
+\ENDIF
+
+\FORALL{\t{x} in the \t{files} array}
+    \IF{\t{\$x} is a directory}
+        \FORALL{files \t{f} matching \t{\$x/*.diff} or \t{\$x/*.patch}, sorted in POSIX locale}
+            \STATE call \t{patch -p1 -f -g0 -{}-no-backup-if-mismatch "\$\{options[@]\}" < "\$f"}
+            \IF{child process returned with non-zero exit status}
+                \STATE return immediately with an error
+            \ENDIF
+        \ENDFOR
+    \ELSE
+        \STATE call \t{patch -p1 -f -g0 -{}-no-backup-if-mismatch "\$\{options[@]\}" < "\$x"}
+        \IF{child process returned with non-zero exit status}
+            \STATE return immediately with an error
+        \ENDIF
+    \ENDIF
+\ENDFOR
 \end{algorithmic}
 \end{algorithm}
 
-- 
2.6.1



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

* [gentoo-pms] [PATCH 12/22] EAPI 6 has eapply_user.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (10 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 11/22] EAPI 6: Explain eapply behavior Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 13/22] EAPI 6 has a default src_prepare Ulrich Müller
                   ` (9 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7502c1e..be8563c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -175,6 +175,9 @@ Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
 \t{eapply} & \compactfeatureref{eapply} &
     No & No & No & No & Yes \\
 
+\t{eapply\_user} & \compactfeatureref{eapply-user} &
+    No & No & No & No & Yes \\
+
 \t{econf} arguments & \compactfeatureref{econf-options} &
     &  & disable dependency tracking &
     disable dependency tracking, disable silent rules &
@@ -328,6 +331,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \item \t{einstall} banned, \featureref{banned-commands}.
 \item \t{die} and \t{assert} called with \t{-n} respect \t{nonfatal}, \featureref{nonfatal-die}.
 \item \t{eapply} support, \featureref{eapply}.
+\item \t{eapply\_user} support, \featureref{eapply-user}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 8fb8059..680340a 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -153,6 +153,12 @@ Ebuilds must not run any of these commands once the current phase function has r
     according to Algorithm~\ref{alg:eapply}. If applying the patches fails, it aborts the build
     using \t{die}, unless run using \t{nonfatal}, in which case it returns non-zero exit status.
     Only available in EAPIs listed in table~\ref{tab:patch-commands} as supporting \t{eapply}.
+
+\item[eapply\_user] \featurelabel{eapply-user} Takes no arguments. Package managers supporting it
+    apply user-provided patches to the source tree in the current working directory. Exact behaviour
+    is implementation defined and beyond the scope of this specification. Package managers not
+    supporting it must implement the function as a no-op. Only available in EAPIs listed in
+    table~\ref{tab:patch-commands} as supporting \t{eapply\_user}.
 \end{description}
 
 \begin{algorithm}
@@ -189,13 +195,14 @@ Ebuilds must not run any of these commands once the current phase function has r
 \ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{Patch commands for EAPIs}
     \label{tab:patch-commands}
-    \begin{tabular}{ l l }
+    \begin{tabular}{ l l l }
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{\t{eapply}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{eapply}?}} &
+      \multicolumn{1}{c}{\textbf{\t{eapply\_user}?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5  & No  \\
-      6                 & Yes \\
+      0, 1, 2, 3, 4, 5  & No  & No  \\
+      6                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
-- 
2.6.1



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

* [gentoo-pms] [PATCH 13/22] EAPI 6 has a default src_prepare.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (11 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 12/22] EAPI 6 has eapply_user Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 14/22] EAPI 6: econf adds --docdir and --htmldir Ulrich Müller
                   ` (8 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

This adds support for the PATCHES array and for user patches.

Bug: 463692
---
 eapi-differences.tex |  4 ++++
 ebuild-functions.tex | 36 +++++++++++++++++++++++++++---------
 2 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index be8563c..980cbd8 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -92,6 +92,9 @@ Use dependencies & \compactfeatureref{use-deps} &
 \t{src\_prepare} & \compactfeatureref{src-prepare} &
     * & Yes & Yes & Yes & Yes \\
 
+\t{src\_prepare} style & \compactfeatureref{src-prepare} &
+    * & no-op & no-op & no-op & 6 \\
+
 \t{src\_configure} & \compactfeatureref{src-configure} &
     * & Yes & Yes & Yes & Yes \\
 
@@ -326,6 +329,7 @@ EAPI 6 is EAPI 5 with the following changes:
 
 \begin{compactitem}
 \item Profile \t{package*} and \t{use*} can be directories, \featureref{profile-file-dirs}.
+\item Default \t{src\_prepare} no longer a no-op, \featureref{src-prepare-6}.
 \item Bash version is 4.2, \featureref{bash-version}.
 \item \t{failglob} is enabled in global scope, \featureref{failglob}.
 \item \t{einstall} banned, \featureref{banned-commands}.
diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 23f02b4..1f996f0 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -121,24 +121,42 @@ src_unpack() {
 \label{sec:src-prepare-function}
 
 \featurelabel{src-prepare} The \t{src\_prepare} function is only called for EAPIs listed in
-table~\ref{tab:src-prepare-table} as supporting it.
-
-The \t{src\_prepare} function can be used for post-unpack source preparation. The default
-implementation does nothing.
+table~\ref{tab:src-prepare-table} as supporting it. The \t{src\_prepare} function can be used for
+post-unpack source preparation.
 
 The initial working directory is \t{S}, with an error or fallback to \t{WORKDIR} as discussed in
 section~\ref{sec:s-to-workdir-fallback}.
 
+\featurelabel{src-prepare-6} For EAPIs listed in table~\ref{tab:src-prepare-table} as using format
+6, the default implementation used when the ebuild lacks the \t{src\_prepare} function shall behave
+as:
+
+\begin{verbatim}
+src_prepare() {
+    if declare -p PATCHES | grep -q "^declare -a "; then
+        [[ -n ${PATCHES[@]} ]] && eapply "${PATCHES[@]}"
+    else
+        [[ -n ${PATCHES} ]] && eapply ${PATCHES}
+    fi
+    eapply_user
+}
+\end{verbatim}
+
+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}
-\begin{centertable}{EAPIs supporting \t{src\_prepare}}
+\begin{centertable}{\t{src\_prepare} support and behaviour for EAPIs}
     \label{tab:src-prepare-table}
-    \begin{tabular}{ l l }
+    \begin{tabular}{ l l l }
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{src\_prepare}?}} \\
+      \multicolumn{1}{c}{\textbf{Supports \t{src\_prepare}?}} &
+      \multicolumn{1}{c}{\textbf{Format}} \\
       \midrule
-      0, 1              & No  \\
-      2, 3, 4, 5, 6     & Yes \\
+      0, 1              & No  & Not applicable \\
+      2, 3, 4, 5        & Yes & no-op          \\
+      6                 & Yes & 6              \\
       \bottomrule
     \end{tabular}
 \end{centertable}
-- 
2.6.1



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

* [gentoo-pms] [PATCH 14/22] EAPI 6: econf adds --docdir and --htmldir.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (12 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 13/22] EAPI 6 has a default src_prepare Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse Ulrich Müller
                   ` (7 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 980cbd8..b3035e3 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -184,7 +184,7 @@ Option \t{-{}-host-root} & \compactfeatureref{host-root-option} &
 \t{econf} arguments & \compactfeatureref{econf-options} &
     &  & disable dependency tracking &
     disable dependency tracking, disable silent rules &
-    disable dependency tracking, disable silent rules \\
+    disable dependency tracking, disable silent rules, docdir, htmldir \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
     No & No & Yes & Yes & Yes \\
@@ -336,6 +336,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \item \t{die} and \t{assert} called with \t{-n} respect \t{nonfatal}, \featureref{nonfatal-die}.
 \item \t{eapply} support, \featureref{eapply}.
 \item \t{eapply\_user} support, \featureref{eapply-user}.
+\item \t{econf} adds \t{-{}-docdir} and \t{-{}-htmldir}, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 680340a..961af2a 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -228,6 +228,12 @@ current phase function has returned.
     \item -{}-datadir must be \t{\$\{EPREFIX\}/usr/share}
     \item -{}-sysconfdir must be \t{\$\{EPREFIX\}/etc}
     \item -{}-localstatedir must be \t{\$\{EPREFIX\}/var/lib}
+    \item -{}-docdir must be \t{\$\{EPREFIX\}/usr/share/doc/\$\{PF\}}, 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{-{}-docdir} occurs in the output of \t{configure -{}-help}.
+    \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 -{}-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
@@ -241,15 +247,18 @@ current phase function has returned.
     \ChangeWhenAddingAnEAPI{6}
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
-        \begin{tabular}{ l l l }
+        \begin{tabular}{ l l l l l }
           \toprule
           \multicolumn{1}{c}{\textbf{EAPI}} &
-          \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking?}} &
-          \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules?}} \\
+          \multicolumn{1}{c}{\textbf{-{}-disable-dependency-tracking}} &
+          \multicolumn{1}{c}{\textbf{-{}-disable-silent-rules}} &
+          \multicolumn{1}{c}{\textbf{-{}-docdir}} &
+          \multicolumn{1}{c}{\textbf{-{}-htmldir}} \\
           \midrule
-          0, 1, 2, 3        & No  & No  \\
-          4                 & Yes & No  \\
-          5, 6              & Yes & Yes \\
+          0, 1, 2, 3        & No  & No  & No  & No  \\
+          4                 & Yes & No  & No  & No  \\
+          5                 & Yes & Yes & No  & No  \\
+          6                 & Yes & Yes & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
-- 
2.6.1



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

* [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (13 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 14/22] EAPI 6: econf adds --docdir and --htmldir Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 16:40   ` Ciaran McCreesh
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 16/22] EAPI 6: unpack supports absolute and relative paths Ulrich Müller
                   ` (6 subsequent siblings)
  21 siblings, 1 reply; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

Bug: 449862
---
 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 22 ++++++++++++++++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b3035e3..6002785 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -216,6 +216,9 @@ Controllable compression & \compactfeatureref{docompress} &
 \t{usex} & \compactfeatureref{usex} &
     No & No & No & Yes & Yes \\
 
+\t{in\_iuse} & \compactfeatureref{in-iuse} &
+    No & No & No & No & Yes \\
+
 \t{unpack} support for \t{xz}? & \compactfeatureref{unpack-extensions} &
     No & Yes & Yes & Yes & Yes \\
 
@@ -337,6 +340,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \item \t{eapply} support, \featureref{eapply}.
 \item \t{eapply\_user} support, \featureref{eapply-user}.
 \item \t{econf} adds \t{-{}-docdir} and \t{-{}-htmldir}, \featureref{econf-options}.
+\item \t{in\_iuse} support, \featureref{in-iuse}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 961af2a..6b150c7 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -715,8 +715,9 @@ These functions provide behaviour based upon set or unset use flags. Ebuilds mus
 these commands once the current phase function has returned. Ebuilds must not run any of these
 functions in global scope.
 
-If any of these functions is called with a flag value that is not included in \t{IUSE\_EFFECTIVE},
-either behaviour is undefined or it is an error as decided by table~\ref{tab:use-list-strictness}.
+Unless otherwise noted, if any of these functions is called with a flag value that is not included
+in \t{IUSE\_EFFECTIVE}, either behaviour is undefined or it is an error as decided by
+table~\ref{tab:use-list-strictness}.
 
 \begin{description}
 \item[use] Returns shell true (0) if the first argument (a \t{USE} flag name) is enabled, false
@@ -742,6 +743,9 @@ either behaviour is undefined or it is an error as decided by table~\ref{tab:use
     set, outputs \t{\$\{arg2\}\$\{arg4\}}. Otherwise, outputs \t{\$\{arg3\}\$\{arg5\}}.
     The condition is inverted if the flag name is prefixed with~\t{!}.
     Only available in EAPIs listed in table~\ref{tab:usex-table} as supporting \t{usex}.
+\item[in\_iuse] \featurelabel{in-iuse} Returns shell true (0) if the first argument (a \t{USE} flag
+    name) is included in \t{IUSE\_EFFECTIVE}, false otherwise. Only available in EAPIs listed in
+    table~\ref{tab:in-iuse} as supporting \t{in\_iuse}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{6}
@@ -786,6 +790,20 @@ either behaviour is undefined or it is an error as decided by table~\ref{tab:use
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{6}
+\begin{centertable}{EAPIs supporting \t{in\_iuse}}
+    \label{tab:in-iuse}
+    \begin{tabular}{ l l }
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{in\_iuse}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5  & No  \\
+      6                 & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Text List Functions}
 These functions check whitespace-separated lists for a particular value.
 
-- 
2.6.1



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

* [gentoo-pms] [PATCH 16/22] EAPI 6: unpack supports absolute and relative paths.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (14 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 17/22] EAPI 6: unpack supports txz Ulrich Müller
                   ` (5 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

Bug: 483244
---
 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 26 +++++++++++++++++++++++---
 2 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 6002785..27c1ee6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -219,6 +219,9 @@ Controllable compression & \compactfeatureref{docompress} &
 \t{in\_iuse} & \compactfeatureref{in-iuse} &
     No & No & No & No & Yes \\
 
+\t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
+    No & No & No & No & Yes \\
+
 \t{unpack} support for \t{xz}? & \compactfeatureref{unpack-extensions} &
     No & Yes & Yes & Yes & Yes \\
 
@@ -341,6 +344,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \item \t{eapply\_user} support, \featureref{eapply-user}.
 \item \t{econf} adds \t{-{}-docdir} and \t{-{}-htmldir}, \featureref{econf-options}.
 \item \t{in\_iuse} support, \featureref{in-iuse}.
+\item \t{unpack} supports absolute and relative paths, \featureref{unpack-absolute}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 6b150c7..c16745a 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -833,9 +833,15 @@ has returned.
     the current working directory itself) have permissions \t{a+r,u+w,go-w} and that all directories
     under the current working directory additionally have permissions \t{a+x}.
 
-    All arguments to \t{unpack} must be either a filename without path, in which case \t{unpack}
-    looks in \t{DISTDIR} for the file, or start with the string \t{./}, in which case \t{unpack}
-    uses the argument as a path relative to the working directory.
+    Arguments to \t{unpack} are interpreted as follows:
+    \begin{itemize}
+    \item A filename without path (i.\,e., not containing any slash) is looked up in \t{DISTDIR}.
+    \item An argument starting with the string \t{./} is a path relative to the working directory.
+    \item \featurelabel{unpack-absolute} Otherwise, for EAPIs listed in
+        table~\ref{tab:unpack-behaviour} as supporting absolute and relative paths, the argument is
+        interpreted as a literal path (absolute, or relative to the working directory); for EAPIs
+        listed as \e{not} supporting such paths, \t{unpack} shall abort the build process.
+    \end{itemize}
 
     Any unrecognised file format shall be skipped silently. If unpacking a supported file format
     fails, \t{unpack} shall abort the build process.
@@ -871,6 +877,20 @@ has returned.
     being in the system set or via dependencies.
 
     \ChangeWhenAddingAnEAPI{6}
+    \begin{centertable}{\t{unpack} behaviour for EAPIs}
+        \label{tab:unpack-behaviour}
+        \begin{tabular}{ l l }
+          \toprule
+          \multicolumn{1}{c}{\textbf{EAPI}} &
+          \multicolumn{1}{c}{\textbf{Supports absolute and relative paths?}} \\
+          \midrule
+          0, 1, 2, 3, 4, 5  & No  \\
+          6                 & Yes \\
+          \bottomrule
+        \end{tabular}
+    \end{centertable}
+
+    \ChangeWhenAddingAnEAPI{6}
     \begin{centertable}{\t{unpack} extensions for EAPIs}
         \label{tab:unpack-extensions-table}
         \begin{tabular}{ l l }
-- 
2.6.1



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

* [gentoo-pms] [PATCH 17/22] EAPI 6: unpack supports txz.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (15 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 16/22] EAPI 6: unpack supports absolute and relative paths Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 18/22] EAPI 6: unpack matches filename extensions case-insensitively Ulrich Müller
                   ` (4 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

Bug: 458102
---
 eapi-differences.tex |  6 +++++-
 pkg-mgr-commands.tex | 18 +++++++++++-------
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 27c1ee6..4959819 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -222,9 +222,12 @@ Controllable compression & \compactfeatureref{docompress} &
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
     No & No & No & No & Yes \\
 
-\t{unpack} support for \t{xz}? & \compactfeatureref{unpack-extensions} &
+\t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
     No & Yes & Yes & Yes & Yes \\
 
+\t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
+    No & No & No & No & Yes \\
+
 \t{default} function & \compactfeatureref{default-func} &
     * & Yes & Yes & Yes & Yes \\
 
@@ -345,6 +348,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \item \t{econf} adds \t{-{}-docdir} and \t{-{}-htmldir}, \featureref{econf-options}.
 \item \t{in\_iuse} support, \featureref{in-iuse}.
 \item \t{unpack} supports absolute and relative paths, \featureref{unpack-absolute}.
+\item \t{unpack} supports \t{.txz}, \featureref{unpack-extensions}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c16745a..8e8d191 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -869,9 +869,10 @@ has returned.
     \item lzma-compressed tar files (\t{*.tar.lzma}). Ebuilds must ensure that LZMA Utils and
         GNU tar are installed.
     \item xz-compressed files (\t{*.xz}). Ebuilds must ensure that XZ Utils is installed. Only for
-        EAPIs listed in table~\ref{tab:unpack-extensions-table} as supporting xz.
-    \item xz-compressed tar files (\t{*.tar.xz}). Ebuilds must ensure that XZ Utils and GNU tar are
-        installed. Only for EAPIs listed in table~\ref{tab:unpack-extensions-table} as supporting xz.
+        EAPIs listed in table~\ref{tab:unpack-extensions-table} as supporting \t{.xz}.
+    \item xz-compressed tar files (\t{*.tar.xz, *.txz}). Ebuilds must ensure that XZ Utils and
+        GNU tar are installed. Only for EAPIs listed in table~\ref{tab:unpack-extensions-table} as
+        supporting \t{.tar.xz} or \t{.txz}.
     \end{itemize}
     It is up to the ebuild to ensure that the relevant external utilities are available, whether by
     being in the system set or via dependencies.
@@ -893,13 +894,16 @@ has returned.
     \ChangeWhenAddingAnEAPI{6}
     \begin{centertable}{\t{unpack} extensions for EAPIs}
         \label{tab:unpack-extensions-table}
-        \begin{tabular}{ l l }
+        \begin{tabular}{ l l l l }
           \toprule
           \multicolumn{1}{c}{\textbf{EAPI}} &
-          \multicolumn{1}{c}{\textbf{\t{.xz} and \t{.tar.xz}?}} \\
+          \multicolumn{1}{c}{\textbf{\t{.xz}?}} &
+          \multicolumn{1}{c}{\textbf{\t{.tar.xz}?}} &
+          \multicolumn{1}{c}{\textbf{\t{.txz}?}} \\
           \midrule
-          0, 1, 2           & No  \\
-          3, 4, 5, 6        & Yes \\
+          0, 1, 2           & No  & No  & No  \\
+          3, 4, 5           & Yes & Yes & No  \\
+          6                 & Yes & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
-- 
2.6.1



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

* [gentoo-pms] [PATCH 18/22] EAPI 6: unpack matches filename extensions case-insensitively.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (16 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 17/22] EAPI 6: unpack supports txz Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 19/22] EAPI 6 has einstalldocs Ulrich Müller
                   ` (3 subsequent siblings)
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

Bug: 476730
---
 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 12 ++++++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 4959819..88b8c6f 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -228,6 +228,9 @@ Controllable compression & \compactfeatureref{docompress} &
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
     No & No & No & No & Yes \\
 
+\t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
+    No & No & No & No & Yes \\
+
 \t{default} function & \compactfeatureref{default-func} &
     * & Yes & Yes & Yes & Yes \\
 
@@ -349,6 +352,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \item \t{in\_iuse} support, \featureref{in-iuse}.
 \item \t{unpack} supports absolute and relative paths, \featureref{unpack-absolute}.
 \item \t{unpack} supports \t{.txz}, \featureref{unpack-extensions}.
+\item \t{unpack} matches filename extensions case-insensitively, \featureref{unpack-ignore-case}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 8e8d191..5611fa8 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -877,16 +877,20 @@ has returned.
     It is up to the ebuild to ensure that the relevant external utilities are available, whether by
     being in the system set or via dependencies.
 
+    \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}
     \begin{centertable}{\t{unpack} behaviour for EAPIs}
         \label{tab:unpack-behaviour}
-        \begin{tabular}{ l l }
+        \begin{tabular}{ l l l }
           \toprule
           \multicolumn{1}{c}{\textbf{EAPI}} &
-          \multicolumn{1}{c}{\textbf{Supports absolute and relative paths?}} \\
+          \multicolumn{1}{c}{\textbf{Supports absolute and relative paths?}} &
+          \multicolumn{1}{c}{\textbf{Case-insensitive matching?}} \\
           \midrule
-          0, 1, 2, 3, 4, 5  & No  \\
-          6                 & Yes \\
+          0, 1, 2, 3, 4, 5  & No  & No  \\
+          6                 & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
-- 
2.6.1



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

* [gentoo-pms] [PATCH 19/22] EAPI 6 has einstalldocs.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (17 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 18/22] EAPI 6: unpack matches filename extensions case-insensitively Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-11-03 17:24   ` David Leverton
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 20/22] EAPI 6 has a different src_install implementation Ulrich Müller
                   ` (2 subsequent siblings)
  21 siblings, 1 reply; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

This also adds support for an empty DOCS variable and for directories
in DOCS.

Bug: 459692
Bug: 463736
Bug: 481980
---
 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 52 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 88b8c6f..30ed46b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -234,6 +234,9 @@ Controllable compression & \compactfeatureref{docompress} &
 \t{default} function & \compactfeatureref{default-func} &
     * & Yes & Yes & Yes & Yes \\
 
+\t{einstalldocs} & \compactfeatureref{einstalldocs} &
+    No & No & No & No & Yes \\
+
 File mtimes preserved & \compactfeatureref{mtime-preserve} &
     Undefined & Yes & Yes & Yes & Yes \\
 
@@ -353,6 +356,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \item \t{unpack} supports absolute and relative paths, \featureref{unpack-absolute}.
 \item \t{unpack} supports \t{.txz}, \featureref{unpack-extensions}.
 \item \t{unpack} matches filename extensions case-insensitively, \featureref{unpack-ignore-case}.
+\item \t{einstalldocs} support, \featureref{einstalldocs}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 5611fa8..cf1abf7 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -919,8 +919,42 @@ has returned.
     section~\ref{sec:default-phase-funcs}). Must not be called if the \t{default\_} function does
     not exist for the current phase in the current EAPI\@. Only available in EAPIs listed in
     table~\ref{tab:default-function-table}.
+
+\item[einstalldocs] \featurelabel{einstalldocs} Takes no arguments. Installs the files specified
+    by the \t{DOCS} and \t{HTML\_DOCS} variables or a default set of files, according to
+    Algorithm~\ref{alg:einstalldocs}. If called using \t{nonfatal} and any of the called commands
+    returns a non-zero exit status, returns immediately with the same exit status. Only available
+    in EAPIs listed in table~\ref{tab:einstalldocs} as supporting \t{einstalldocs}.
 \end{description}
 
+\begin{algorithm}
+\caption{\t{einstalldocs} logic} \label{alg:einstalldocs}
+\begin{algorithmic}[1]
+\STATE save the value of the install directory for \t{dodoc}
+\STATE call \t{docinto .} \COMMENT{sets the directory to \t{/usr/share/doc/\$\{PF\}}}
+\IF{the DOCS variable is a non-empty array}
+    \STATE call \t{dodoc -r "\$\{DOCS[@]\}"}
+\ELSIF{the DOCS variable is a non-empty scalar}
+    \STATE call \t{dodoc -r \$\{DOCS\}}
+\ELSIF{the DOCS variable is unset}
+    \FORALL{$d$ matching the filename expansion of \t{README*} \t{ChangeLog} \t{AUTHORS} \t{NEWS}
+            \t{TODO} \t{CHANGES} \t{THANKS} \t{BUGS} \t{FAQ} \t{CREDITS} \t{CHANGELOG}}
+        \IF{file $d$ exists and has a size greater than zero}
+            \STATE call \t{dodoc} with $d$ as argument
+        \ENDIF
+    \ENDFOR
+\ENDIF
+\STATE call \t{docinto html} \COMMENT{sets the directory to \t{/usr/share/doc/\$\{PF\}/html}}
+\IF{the HTML\_DOCS variable is a non-empty array}
+    \STATE call \t{dodoc -r "\$\{HTML\_DOCS[@]\}"}
+\ELSIF{the HTML\_DOCS variable is a non-empty scalar}
+    \STATE call \t{dodoc -r \$\{HTML\_DOCS\}}
+\ENDIF
+\STATE restore the value of the install directory for \t{dodoc}
+\RETURN shell true (0)
+\end{algorithmic}
+\end{algorithm}
+
 \ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting the \t{default} function}
     \label{tab:default-function-table}
@@ -935,6 +969,20 @@ has returned.
     \end{tabular}
 \end{centertable}
 
+\ChangeWhenAddingAnEAPI{6}
+\begin{centertable}{EAPIs supporting \t{einstalldocs}}
+    \label{tab:einstalldocs}
+    \begin{tabular}{ l l }
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{einstalldocs}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5  & No  \\
+      6                 & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Debug Commands}
 The following commands are available for debugging. Normally all of these commands should be no ops;
 a package manager may provide a special debug mode where these commands instead do something.
-- 
2.6.1



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

* [gentoo-pms] [PATCH 20/22] EAPI 6 has a different src_install implementation.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (18 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 19/22] EAPI 6 has einstalldocs Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 21/22] EAPI 6 has get_libdir Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 22/22] Merge several EAPI feature tables Ulrich Müller
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

---
 eapi-differences.tex |  3 ++-
 ebuild-functions.tex | 17 ++++++++++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 30ed46b..452349e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -105,7 +105,7 @@ Parallel tests & \compactfeatureref{parallel-tests} &
     No & No & No & Yes & Yes \\
 
 \t{src\_install} style & \compactfeatureref{src-install} &
-    no-op & no-op & 4 & 4 & 4 \\
+    no-op & no-op & 4 & 4 & 6 \\
 
 \t{pkg\_info} & \compactfeatureref{pkg-info} &
     Installed & Installed & Both & Both & Both \\
@@ -345,6 +345,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \begin{compactitem}
 \item Profile \t{package*} and \t{use*} can be directories, \featureref{profile-file-dirs}.
 \item Default \t{src\_prepare} no longer a no-op, \featureref{src-prepare-6}.
+\item Different \t{src\_install} implementation, \featureref{src-install-6}.
 \item Bash version is 4.2, \featureref{bash-version}.
 \item \t{failglob} is enabled in global scope, \featureref{failglob}.
 \item \t{einstall} banned, \featureref{banned-commands}.
diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 1f996f0..bf16f9e 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -326,6 +326,20 @@ src_install() {
 }
 \end{verbatim}
 
+\featurelabel{src-install-6} For EAPIs listed in table~\ref{tab:src-install-table} as using format
+6, the default implementation used when the ebuild lacks the \t{src\_install} function shall behave
+as:
+
+\begin{verbatim}
+src_install() {
+    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then
+        emake DESTDIR="${D}" install
+    fi
+
+    einstalldocs
+}
+\end{verbatim}
+
 For other EAPIs, the default implementation used when the ebuild lacks the \t{src\_install} function
 is a no-op.
 
@@ -338,7 +352,8 @@ is a no-op.
       \multicolumn{1}{c}{\textbf{Format}} \\
       \midrule
       0, 1, 2, 3        & no-op \\
-      4, 5, 6           & 4     \\
+      4, 5              & 4     \\
+      6                 & 6     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
-- 
2.6.1



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

* [gentoo-pms] [PATCH 21/22] EAPI 6 has get_libdir.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (19 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 20/22] EAPI 6 has a different src_install implementation Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 22/22] Merge several EAPI feature tables Ulrich Müller
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

From: Michał Górny <mgorny@gentoo.org>

Bug: 463586
---
 eapi-differences.tex |  4 ++++
 pkg-mgr-commands.tex | 31 +++++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 452349e..b5fc01e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -237,6 +237,9 @@ Controllable compression & \compactfeatureref{docompress} &
 \t{einstalldocs} & \compactfeatureref{einstalldocs} &
     No & No & No & No & Yes \\
 
+\t{get\_libdir} & \compactfeatureref{get-libdir} &
+    No & No & No & No & Yes \\
+
 File mtimes preserved & \compactfeatureref{mtime-preserve} &
     Undefined & Yes & Yes & Yes & Yes \\
 
@@ -358,6 +361,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \item \t{unpack} supports \t{.txz}, \featureref{unpack-extensions}.
 \item \t{unpack} matches filename extensions case-insensitively, \featureref{unpack-ignore-case}.
 \item \t{einstalldocs} support, \featureref{einstalldocs}.
+\item \t{get\_libdir} support, \featureref{get-libdir}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{6}
diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index cf1abf7..c89c807 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -925,6 +925,10 @@ has returned.
     Algorithm~\ref{alg:einstalldocs}. If called using \t{nonfatal} and any of the called commands
     returns a non-zero exit status, returns immediately with the same exit status. Only available
     in EAPIs listed in table~\ref{tab:einstalldocs} as supporting \t{einstalldocs}.
+
+\item[get\_libdir] \featurelabel{get-libdir} Prints the libdir name obtained according to
+    Algorithm~\ref{alg:get-libdir}. Only available in EAPIs listed in table~\ref{tab:get-libdir}
+    as supporting \t{get\_libdir}.
 \end{description}
 
 \begin{algorithm}
@@ -955,6 +959,20 @@ has returned.
 \end{algorithmic}
 \end{algorithm}
 
+\begin{algorithm}
+\caption{\t{get\_libdir} logic} \label{alg:get-libdir}
+\begin{algorithmic}[1]
+\STATE let libdir=lib
+\IF{the ABI environment variable is set}
+    \STATE let libvar=LIBDIR\_\$ABI
+    \IF{the environment variable named by libvar is set}
+        \STATE let libdir=the value of the variable named by libvar
+    \ENDIF
+\ENDIF
+\STATE print the value of libdir
+\end{algorithmic}
+\end{algorithm}
+
 \ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{EAPIs supporting the \t{default} function}
     \label{tab:default-function-table}
@@ -983,6 +1001,19 @@ has returned.
     \end{tabular}
 \end{centertable}
 
+\begin{centertable}{EAPIs supporting \t{get\_libdir}}
+    \label{tab:get-libdir}
+    \begin{tabular}{ l l }
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Supports \t{get\_libdir}?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5  & No  \\
+      6                 & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
+
 \subsubsection{Debug Commands}
 The following commands are available for debugging. Normally all of these commands should be no ops;
 a package manager may provide a special debug mode where these commands instead do something.
-- 
2.6.1



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

* [gentoo-pms] [PATCH 22/22] Merge several EAPI feature tables.
  2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
                   ` (20 preceding siblings ...)
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 21/22] EAPI 6 has get_libdir Ulrich Müller
@ 2015-10-15 10:50 ` Ulrich Müller
  21 siblings, 0 replies; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 10:50 UTC (permalink / raw
  To: gentoo-pms

Merges the three tables for misc functions (default, einstalldocs,
and get_libdir), as well as the two tables for usex and in_iuse.
---
 pkg-mgr-commands.tex | 80 +++++++++++++++-------------------------------------
 1 file changed, 22 insertions(+), 58 deletions(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index c89c807..26bb4e4 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -742,10 +742,10 @@ table~\ref{tab:use-list-strictness}.
     respectively; \t{\$\{arg4\}} and \t{\$\{arg5\}} default to the empty string. If the USE flag is
     set, outputs \t{\$\{arg2\}\$\{arg4\}}. Otherwise, outputs \t{\$\{arg3\}\$\{arg5\}}.
     The condition is inverted if the flag name is prefixed with~\t{!}.
-    Only available in EAPIs listed in table~\ref{tab:usex-table} as supporting \t{usex}.
+    Only available in EAPIs listed in table~\ref{tab:use-list-functions} as supporting \t{usex}.
 \item[in\_iuse] \featurelabel{in-iuse} Returns shell true (0) if the first argument (a \t{USE} flag
     name) is included in \t{IUSE\_EFFECTIVE}, false otherwise. Only available in EAPIs listed in
-    table~\ref{tab:in-iuse} as supporting \t{in\_iuse}.
+    table~\ref{tab:use-list-functions} as supporting \t{in\_iuse}.
 \end{description}
 
 \ChangeWhenAddingAnEAPI{6}
@@ -777,29 +777,17 @@ table~\ref{tab:use-list-strictness}.
 \end{centertable}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{usex}}
-    \label{tab:usex-table}
-    \begin{tabular}{ l l }
-      \toprule
-      \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{usex}?}} \\
-      \midrule
-      0, 1, 2, 3, 4     & No  \\
-      5, 6              & Yes \\
-      \bottomrule
-    \end{tabular}
-\end{centertable}
-
-\ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{in\_iuse}}
-    \label{tab:in-iuse}
-    \begin{tabular}{ l l }
+\begin{centertable}{EAPIs supporting \t{usex} and \t{in\_iuse}}
+    \label{tab:use-list-functions}
+    \begin{tabular}{ l l l }
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{in\_iuse}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{usex}?}} &
+      \multicolumn{1}{c}{\textbf{\t{in\_iuse}?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5  & No  \\
-      6                 & Yes \\
+      0, 1, 2, 3, 4     & No  & No  \\
+      5                 & Yes & No  \\
+      6                 & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -918,16 +906,16 @@ has returned.
     \featurelabel{default-func} Calls the \t{default\_} function for the current phase (see
     section~\ref{sec:default-phase-funcs}). Must not be called if the \t{default\_} function does
     not exist for the current phase in the current EAPI\@. Only available in EAPIs listed in
-    table~\ref{tab:default-function-table}.
+    table~\ref{tab:misc-commands} as supporting \t{default}.
 
 \item[einstalldocs] \featurelabel{einstalldocs} Takes no arguments. Installs the files specified
     by the \t{DOCS} and \t{HTML\_DOCS} variables or a default set of files, according to
     Algorithm~\ref{alg:einstalldocs}. If called using \t{nonfatal} and any of the called commands
     returns a non-zero exit status, returns immediately with the same exit status. Only available
-    in EAPIs listed in table~\ref{tab:einstalldocs} as supporting \t{einstalldocs}.
+    in EAPIs listed in table~\ref{tab:misc-commands} as supporting \t{einstalldocs}.
 
 \item[get\_libdir] \featurelabel{get-libdir} Prints the libdir name obtained according to
-    Algorithm~\ref{alg:get-libdir}. Only available in EAPIs listed in table~\ref{tab:get-libdir}
+    Algorithm~\ref{alg:get-libdir}. Only available in EAPIs listed in table~\ref{tab:misc-commands}
     as supporting \t{get\_libdir}.
 \end{description}
 
@@ -974,42 +962,18 @@ has returned.
 \end{algorithm}
 
 \ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting the \t{default} function}
-    \label{tab:default-function-table}
-    \begin{tabular}{ l l }
-      \toprule
-      \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{default} function?}} \\
-      \midrule
-      0, 1              & No  \\
-      2, 3, 4, 5, 6     & Yes \\
-      \bottomrule
-    \end{tabular}
-\end{centertable}
-
-\ChangeWhenAddingAnEAPI{6}
-\begin{centertable}{EAPIs supporting \t{einstalldocs}}
-    \label{tab:einstalldocs}
-    \begin{tabular}{ l l }
-      \toprule
-      \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{einstalldocs}?}} \\
-      \midrule
-      0, 1, 2, 3, 4, 5  & No  \\
-      6                 & Yes \\
-      \bottomrule
-    \end{tabular}
-\end{centertable}
-
-\begin{centertable}{EAPIs supporting \t{get\_libdir}}
-    \label{tab:get-libdir}
-    \begin{tabular}{ l l }
+\begin{centertable}{Misc commands for EAPIs}
+    \label{tab:misc-commands}
+    \begin{tabular}{ l l l l }
       \toprule
       \multicolumn{1}{c}{\textbf{EAPI}} &
-      \multicolumn{1}{c}{\textbf{Supports \t{get\_libdir}?}} \\
+      \multicolumn{1}{c}{\textbf{\t{default}?}} &
+      \multicolumn{1}{c}{\textbf{\t{einstalldocs}?}} &
+      \multicolumn{1}{c}{\textbf{\t{get\_libdir}?}} \\
       \midrule
-      0, 1, 2, 3, 4, 5  & No  \\
-      6                 & Yes \\
+      0, 1              & No  & No  & No  \\
+      2, 3, 4, 5        & Yes & No  & No  \\
+      6                 & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
-- 
2.6.1



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

* Re: [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse.
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse Ulrich Müller
@ 2015-10-15 16:40   ` Ciaran McCreesh
  2015-10-15 16:49     ` Ulrich Mueller
  2015-10-15 18:33     ` Michał Górny
  0 siblings, 2 replies; 53+ messages in thread
From: Ciaran McCreesh @ 2015-10-15 16:40 UTC (permalink / raw
  To: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 253 bytes --]

On Thu, 15 Oct 2015 12:50:14 +0200
Ulrich Müller <ulm@gentoo.org> wrote:
> Bug: 449862

This should explicitly require the package mangler to die if it's used
from a global scope context, to catch all the likely screwups.

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

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

* Re: [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse.
  2015-10-15 16:40   ` Ciaran McCreesh
@ 2015-10-15 16:49     ` Ulrich Mueller
  2015-10-15 16:56       ` Ciaran McCreesh
  2015-10-15 18:33     ` Michał Górny
  1 sibling, 1 reply; 53+ messages in thread
From: Ulrich Mueller @ 2015-10-15 16:49 UTC (permalink / raw
  To: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 463 bytes --]

>>>>> On Thu, 15 Oct 2015, Ciaran McCreesh wrote:

> On Thu, 15 Oct 2015 12:50:14 +0200
> Ulrich Müller <ulm@gentoo.org> wrote:
>> Bug: 449862

> This should explicitly require the package mangler to die if it's
> used from a global scope context, to catch all the likely screwups.

We already say in the first paragraph of the section: "Ebuilds must
not run any of these functions in global scope." which applies to all
USE list functions.

Ulrich

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse.
  2015-10-15 16:49     ` Ulrich Mueller
@ 2015-10-15 16:56       ` Ciaran McCreesh
  2015-10-15 17:05         ` Ulrich Mueller
  2015-10-15 18:34         ` [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse Michał Górny
  0 siblings, 2 replies; 53+ messages in thread
From: Ciaran McCreesh @ 2015-10-15 16:56 UTC (permalink / raw
  To: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 740 bytes --]

On Thu, 15 Oct 2015 18:49:37 +0200
Ulrich Mueller <ulm@gentoo.org> wrote:
> >>>>> On Thu, 15 Oct 2015, Ciaran McCreesh wrote:
> > On Thu, 15 Oct 2015 12:50:14 +0200
> > Ulrich Müller <ulm@gentoo.org> wrote:
> >> Bug: 449862
> 
> > This should explicitly require the package mangler to die if it's
> > used from a global scope context, to catch all the likely screwups.
> 
> We already say in the first paragraph of the section: "Ebuilds must
> not run any of these functions in global scope." which applies to all
> USE list functions.

How about taking the opportunity to explicitly force all of these to
die, then? I can see in_iuse being abused horribly if Portage isn't
made to enforce this...

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

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

* Re: [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse.
  2015-10-15 16:56       ` Ciaran McCreesh
@ 2015-10-15 17:05         ` Ulrich Mueller
  2015-10-15 17:11           ` Ciaran McCreesh
  2015-10-15 18:34         ` [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse Michał Górny
  1 sibling, 1 reply; 53+ messages in thread
From: Ulrich Mueller @ 2015-10-15 17:05 UTC (permalink / raw
  To: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 515 bytes --]

>>>>> On Thu, 15 Oct 2015, Ciaran McCreesh wrote:

>> We already say in the first paragraph of the section: "Ebuilds must
>> not run any of these functions in global scope." which applies to all
>> USE list functions.

> How about taking the opportunity to explicitly force all of these to
> die, then? I can see in_iuse being abused horribly if Portage isn't
> made to enforce this...

Hm, how about replacing above sentence by: "It is an error if an
ebuild calls any of these functions in global scope."?

Ulrich

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse.
  2015-10-15 17:05         ` Ulrich Mueller
@ 2015-10-15 17:11           ` Ciaran McCreesh
  2015-10-15 17:51             ` [gentoo-pms] [PATCH] Calling a USE list function in global scope is an error Ulrich Müller
  0 siblings, 1 reply; 53+ messages in thread
From: Ciaran McCreesh @ 2015-10-15 17:11 UTC (permalink / raw
  To: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 722 bytes --]

On Thu, 15 Oct 2015 19:05:08 +0200
Ulrich Mueller <ulm@gentoo.org> wrote:
> >>>>> On Thu, 15 Oct 2015, Ciaran McCreesh wrote:
> 
> >> We already say in the first paragraph of the section: "Ebuilds must
> >> not run any of these functions in global scope." which applies to
> >> all USE list functions.
> 
> > How about taking the opportunity to explicitly force all of these to
> > die, then? I can see in_iuse being abused horribly if Portage isn't
> > made to enforce this...
> 
> Hm, how about replacing above sentence by: "It is an error if an
> ebuild calls any of these functions in global scope."?

That will work, if the appropriate Portage developer hands can be
twisted.

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

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

* [gentoo-pms] [PATCH] Calling a USE list function in global scope is an error.
  2015-10-15 17:11           ` Ciaran McCreesh
@ 2015-10-15 17:51             ` Ulrich Müller
  2015-10-18 11:14               ` [gentoo-pms] " Ulrich Mueller
  0 siblings, 1 reply; 53+ messages in thread
From: Ulrich Müller @ 2015-10-15 17:51 UTC (permalink / raw
  To: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 1297 bytes --]

>>>>> On Thu, 15 Oct 2015, Ciaran McCreesh wrote:

> On Thu, 15 Oct 2015 19:05:08 +0200
> Ulrich Mueller <ulm@gentoo.org> wrote:
>> Hm, how about replacing above sentence by: "It is an error if an
>> ebuild calls any of these functions in global scope."?

> That will work, if the appropriate Portage developer hands can be
> twisted.

Patch below, to be applied to master.

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 1884a5c..83fbd68 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -646,8 +646,8 @@ in table~\ref{tab:compression-table} as supporting \t{docompress}.
 
 \subsubsection{Use List Functions}
 These functions provide behaviour based upon set or unset use flags. Ebuilds must not run any of
-these commands once the current phase function has returned. Ebuilds must not run any of these
-functions in global scope.
+these commands once the current phase function has returned. It is an error if an ebuild calls any
+of these functions in global scope.
 
 If any of these functions is called with a flag value that is not included in \t{IUSE\_EFFECTIVE},
 either behaviour is undefined or it is an error as decided by table~\ref{tab:use-list-strictness}.
-- 
2.6.1

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse.
  2015-10-15 16:40   ` Ciaran McCreesh
  2015-10-15 16:49     ` Ulrich Mueller
@ 2015-10-15 18:33     ` Michał Górny
  1 sibling, 0 replies; 53+ messages in thread
From: Michał Górny @ 2015-10-15 18:33 UTC (permalink / raw
  To: Ciaran McCreesh; +Cc: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 556 bytes --]

Dnia 2015-10-15, o godz. 17:40:23
Ciaran McCreesh <ciaran.mccreesh@googlemail.com> napisał(a):

> On Thu, 15 Oct 2015 12:50:14 +0200
> Ulrich Müller <ulm@gentoo.org> wrote:
> > Bug: 449862
> 
> This should explicitly require the package mangler to die if it's used
> from a global scope context, to catch all the likely screwups.

Someone has to fix toolchain.eclass first. Otherwise, we're introducing
dead code that will only cause people to resort to previous hacks.

-- 
Best regards,
Michał Górny
<http://dev.gentoo.org/~mgorny/>

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 949 bytes --]

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

* Re: [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse.
  2015-10-15 16:56       ` Ciaran McCreesh
  2015-10-15 17:05         ` Ulrich Mueller
@ 2015-10-15 18:34         ` Michał Górny
  1 sibling, 0 replies; 53+ messages in thread
From: Michał Górny @ 2015-10-15 18:34 UTC (permalink / raw
  To: Ciaran McCreesh; +Cc: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 1002 bytes --]

Dnia 2015-10-15, o godz. 17:56:37
Ciaran McCreesh <ciaran.mccreesh@googlemail.com> napisał(a):

> On Thu, 15 Oct 2015 18:49:37 +0200
> Ulrich Mueller <ulm@gentoo.org> wrote:
> > >>>>> On Thu, 15 Oct 2015, Ciaran McCreesh wrote:
> > > On Thu, 15 Oct 2015 12:50:14 +0200
> > > Ulrich Müller <ulm@gentoo.org> wrote:
> > >> Bug: 449862
> > 
> > > This should explicitly require the package mangler to die if it's
> > > used from a global scope context, to catch all the likely screwups.
> > 
> > We already say in the first paragraph of the section: "Ebuilds must
> > not run any of these functions in global scope." which applies to all
> > USE list functions.
> 
> How about taking the opportunity to explicitly force all of these to
> die, then? I can see in_iuse being abused horribly if Portage isn't
> made to enforce this...

Portage is already set to enforce strict rules for other helpers
in EAPI 6.

-- 
Best regards,
Michał Górny
<http://dev.gentoo.org/~mgorny/>

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 949 bytes --]

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

* Re: [gentoo-pms] [PATCH 11/22] EAPI 6: Explain eapply behavior.
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 11/22] EAPI 6: Explain eapply behavior Ulrich Müller
@ 2015-10-16 10:08   ` Michał Górny
  2015-10-16 15:45     ` Ulrich Mueller
  0 siblings, 1 reply; 53+ messages in thread
From: Michał Górny @ 2015-10-16 10:08 UTC (permalink / raw
  To: Ulrich Müller; +Cc: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 803 bytes --]

Dnia 2015-10-15, o godz. 12:50:10
Ulrich Müller <ulm@gentoo.org> napisał(a):

> +\FORALL{\t{x} in the \t{files} array}
> +    \IF{\t{\$x} is a directory}
> +        \FORALL{files \t{f} matching \t{\$x/*.diff} or \t{\$x/*.patch}, sorted in POSIX locale}
> +            \STATE call \t{patch -p1 -f -g0 -{}-no-backup-if-mismatch "\$\{options[@]\}" < "\$f"}
> +            \IF{child process returned with non-zero exit status}
> +                \STATE return immediately with an error
> +            \ENDIF
> +        \ENDFOR

After updating the implementation in Portage, I noticed that we
probably should somehow specify here that it is an error to specify
directory that does not contain any *.patch/*.diff files.

-- 
Best regards,
Michał Górny
<http://dev.gentoo.org/~mgorny/>

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 949 bytes --]

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

* Re: [gentoo-pms] [PATCH 11/22] EAPI 6: Explain eapply behavior.
  2015-10-16 10:08   ` Michał Górny
@ 2015-10-16 15:45     ` Ulrich Mueller
  0 siblings, 0 replies; 53+ messages in thread
From: Ulrich Mueller @ 2015-10-16 15:45 UTC (permalink / raw
  To: Michał Górny; +Cc: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 1955 bytes --]

>>>>> On Fri, 16 Oct 2015, Michał Górny wrote:

> After updating the implementation in Portage, I noticed that we
> probably should somehow specify here that it is an error to specify
> directory that does not contain any *.patch/*.diff files.

Updated algorithm, using input from discussion in #gentoo-qa:

\IF{any parameter is equal to \t{"-{}-"}}
    \STATE collect all parameters before the first \t{"-{}-"} in the \t{options} array
    \STATE collect all parameters after the first \t{"-{}-"} in the \t{files} array
\ELSIF{any parameter that begins with a hyphen follows one that does not}
    \STATE abort the build process with an error
\ELSE
    \STATE collect all parameters beginning with a hyphen in the \t{options} array
    \STATE collect all remaining parameters in the \t{files} array
\ENDIF
\IF{the \t{files} array is empty}
    \STATE abort the build process with an error
\ENDIF

\FORALL{\t{x} in the \t{files} array}
    \IF{\t{\$x} is a directory}
        \IF{\NOT any files match \t{\$x/*.diff} or \t{\$x/*.patch}}
            \STATE abort the build process with an error
        \ENDIF
        \FORALL{files \t{f} matching \t{\$x/*.diff} or \t{\$x/*.patch}, sorted in POSIX locale}
            \STATE call \t{patch -p1 -f -g0 -{}-no-backup-if-mismatch "\$\{options[@]\}" < "\$f"}
            \IF{child process returned with non-zero exit status}
                \STATE return immediately with that error status
            \ENDIF
        \ENDFOR
    \ELSE
        \STATE call \t{patch -p1 -f -g0 -{}-no-backup-if-mismatch "\$\{options[@]\}" < "\$x"}
        \IF{child process returned with non-zero exit status}
            \STATE return immediately with that error status
        \ENDIF
    \ENDIF
\ENDFOR

A question that arose is if the function should unconditionally abort
the build process if it meets an empty directory, or if it should
respect nonfatal also in that case?

Ulrich

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* [gentoo-pms] Re: [PATCH] Calling a USE list function in global scope is an error.
  2015-10-15 17:51             ` [gentoo-pms] [PATCH] Calling a USE list function in global scope is an error Ulrich Müller
@ 2015-10-18 11:14               ` Ulrich Mueller
  0 siblings, 0 replies; 53+ messages in thread
From: Ulrich Mueller @ 2015-10-18 11:14 UTC (permalink / raw
  To: Ulrich Müller; +Cc: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 494 bytes --]

>>>>> On Thu, 15 Oct 2015, Ulrich Müller wrote:

>>>>> On Thu, 15 Oct 2015, Ciaran McCreesh wrote:
>> On Thu, 15 Oct 2015 19:05:08 +0200
>> Ulrich Mueller <ulm@gentoo.org> wrote:
>>> Hm, how about replacing above sentence by: "It is an error if an
>>> ebuild calls any of these functions in global scope."?

>> That will work, if the appropriate Portage developer hands can be
>> twisted.

> Patch below, to be applied to master.

I see no objections, therefore pushed.

Ulrich

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 19/22] EAPI 6 has einstalldocs.
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 19/22] EAPI 6 has einstalldocs Ulrich Müller
@ 2015-11-03 17:24   ` David Leverton
  2015-11-03 17:53     ` Michał Górny
  2015-11-03 19:44     ` Ulrich Mueller
  0 siblings, 2 replies; 53+ messages in thread
From: David Leverton @ 2015-11-03 17:24 UTC (permalink / raw
  To: gentoo-pms

Ulrich Müller wrote:
> +\begin{algorithm}
> +\caption{\t{einstalldocs} logic} \label{alg:einstalldocs}
> +\begin{algorithmic}[1]
> +\STATE save the value of the install directory for \t{dodoc}
> +\STATE call \t{docinto .} \COMMENT{sets the directory to \t{/usr/share/doc/\$\{PF\}}}

Am I right in thinking that this creates /usr/share/doc/${PF} even if 
there end up being no docs to install?

> +\IF{the DOCS variable is a non-empty array}
> +    \STATE call \t{dodoc -r "\$\{DOCS[@]\}"}
> +\ELSIF{the DOCS variable is a non-empty scalar}
> +    \STATE call \t{dodoc -r \$\{DOCS\}}
> +\ELSIF{the DOCS variable is unset}
> +    \FORALL{$d$ matching the filename expansion of \t{README*} \t{ChangeLog} \t{AUTHORS} \t{NEWS}
> +            \t{TODO} \t{CHANGES} \t{THANKS} \t{BUGS} \t{FAQ} \t{CREDITS} \t{CHANGELOG}}
> +        \IF{file $d$ exists and has a size greater than zero}
> +            \STATE call \t{dodoc} with $d$ as argument
> +        \ENDIF
> +    \ENDFOR
> +\ENDIF
> +\STATE call \t{docinto html} \COMMENT{sets the directory to \t{/usr/share/doc/\$\{PF\}/html}}

Likewise, creates /usr/share/doc/${PF}/html even if there are no HTML docs?

> +\IF{the HTML\_DOCS variable is a non-empty array}
> +    \STATE call \t{dodoc -r "\$\{HTML\_DOCS[@]\}"}
> +\ELSIF{the HTML\_DOCS variable is a non-empty scalar}
> +    \STATE call \t{dodoc -r \$\{HTML\_DOCS\}}
> +\ENDIF
> +\STATE restore the value of the install directory for \t{dodoc}
> +\RETURN shell true (0)
> +\end{algorithmic}
> +\end{algorithm}



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

* Re: [gentoo-pms] [PATCH 19/22] EAPI 6 has einstalldocs.
  2015-11-03 17:24   ` David Leverton
@ 2015-11-03 17:53     ` Michał Górny
  2015-11-03 19:51       ` Ulrich Mueller
  2015-11-03 19:44     ` Ulrich Mueller
  1 sibling, 1 reply; 53+ messages in thread
From: Michał Górny @ 2015-11-03 17:53 UTC (permalink / raw
  To: David Leverton; +Cc: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 728 bytes --]

On Tue, 3 Nov 2015 17:24:39 +0000
David Leverton <levertond@googlemail.com> wrote:

> Ulrich Müller wrote:
> > +\begin{algorithm}
> > +\caption{\t{einstalldocs} logic} \label{alg:einstalldocs}
> > +\begin{algorithmic}[1]
> > +\STATE save the value of the install directory for \t{dodoc}
> > +\STATE call \t{docinto .} \COMMENT{sets the directory to \t{/usr/share/doc/\$\{PF\}}}  
> 
> Am I right in thinking that this creates /usr/share/doc/${PF} even if 
> there end up being no docs to install?

I don't think any *into commands should create directories before files
are installed. EAPI 6 might be a good time to add such a requirement.

-- 
Best regards,
Michał Górny
<http://dev.gentoo.org/~mgorny/>

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 949 bytes --]

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

* Re: [gentoo-pms] [PATCH 19/22] EAPI 6 has einstalldocs.
  2015-11-03 17:24   ` David Leverton
  2015-11-03 17:53     ` Michał Górny
@ 2015-11-03 19:44     ` Ulrich Mueller
  2015-11-03 20:36       ` Ulrich Mueller
  1 sibling, 1 reply; 53+ messages in thread
From: Ulrich Mueller @ 2015-11-03 19:44 UTC (permalink / raw
  To: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 472 bytes --]

>>>>> On Tue, 3 Nov 2015, David Leverton wrote:

>> +\begin{algorithm}
>> +\caption{\t{einstalldocs} logic} \label{alg:einstalldocs}
>> +\begin{algorithmic}[1]
>> +\STATE save the value of the install directory for \t{dodoc}
>> +\STATE call \t{docinto .} \COMMENT{sets the directory to \t{/usr/share/doc/\$\{PF\}}}

> Am I right in thinking that this creates /usr/share/doc/${PF} even
> if there end up being no docs to install?

Indeed. Thanks for catching this.

Ulrich

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 19/22] EAPI 6 has einstalldocs.
  2015-11-03 17:53     ` Michał Górny
@ 2015-11-03 19:51       ` Ulrich Mueller
  0 siblings, 0 replies; 53+ messages in thread
From: Ulrich Mueller @ 2015-11-03 19:51 UTC (permalink / raw
  To: gentoo-pms; +Cc: David Leverton

[-- Attachment #1: Type: text/plain, Size: 460 bytes --]

>>>>> On Tue, 3 Nov 2015, Michał Górny wrote:

> I don't think any *into commands should create directories before
> files are installed. EAPI 6 might be a good time to add such a
> requirement.

I don't think that shoving such last minute features into EAPI 6
would be a good idea.

Also in most cases when *into commands are used, they are followed by
explicit do* commands, so requiring an extra dodir there would be a
step backwards.

Ulrich

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 19/22] EAPI 6 has einstalldocs.
  2015-11-03 19:44     ` Ulrich Mueller
@ 2015-11-03 20:36       ` Ulrich Mueller
  2015-11-03 23:07         ` David Leverton
  0 siblings, 1 reply; 53+ messages in thread
From: Ulrich Mueller @ 2015-11-03 20:36 UTC (permalink / raw
  To: gentoo-pms; +Cc: David Leverton

[-- Attachment #1: Type: text/plain, Size: 1810 bytes --]

>>>>> On Tue, 3 Nov 2015, Ulrich Mueller wrote:

>>>>> On Tue, 3 Nov 2015, David Leverton wrote:
>>> +\STATE call \t{docinto .} \COMMENT{sets the directory to \t{/usr/share/doc/\$\{PF\}}}

>> Am I right in thinking that this creates /usr/share/doc/${PF} even
>> if there end up being no docs to install?

> Indeed. Thanks for catching this.

I believe that the patch included below fixes this. Please review.

Ulrich


From 16165052ae2135d499ccd4f353c867ccd03ae849 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ulrich=20M=C3=BCller?= <ulm@gentoo.org>
Date: Tue, 3 Nov 2015 21:31:59 +0100
Subject: [PATCH] fixup! EAPI 6 has einstalldocs.

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index b9d53bd..a548b9e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -933,7 +933,7 @@ has returned.
 \caption{\t{einstalldocs} logic} \label{alg:einstalldocs}
 \begin{algorithmic}[1]
 \STATE save the value of the install directory for \t{dodoc}
-\STATE call \t{docinto .} \COMMENT{sets the directory to \t{/usr/share/doc/\$\{PF\}}}
+\STATE set the install directory for \t{dodoc} to \t{/usr/share/doc/\$\{PF\}}
 \IF{the DOCS variable is a non-empty array}
     \STATE call \t{dodoc -r "\$\{DOCS[@]\}"}
 \ELSIF{the DOCS variable is a non-empty scalar}
@@ -946,7 +946,7 @@ has returned.
         \ENDIF
     \ENDFOR
 \ENDIF
-\STATE call \t{docinto html} \COMMENT{sets the directory to \t{/usr/share/doc/\$\{PF\}/html}}
+\STATE set the install directory for \t{dodoc} to \t{/usr/share/doc/\$\{PF\}/html}
 \IF{the HTML\_DOCS variable is a non-empty array}
     \STATE call \t{dodoc -r "\$\{HTML\_DOCS[@]\}"}
 \ELSIF{the HTML\_DOCS variable is a non-empty scalar}
-- 
2.6.2

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 19/22] EAPI 6 has einstalldocs.
  2015-11-03 20:36       ` Ulrich Mueller
@ 2015-11-03 23:07         ` David Leverton
  0 siblings, 0 replies; 53+ messages in thread
From: David Leverton @ 2015-11-03 23:07 UTC (permalink / raw
  To: gentoo-pms

Ulrich Mueller wrote:
> I believe that the patch included below fixes this. Please review.

Looks good, thanks.



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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories Ulrich Müller
@ 2015-11-05 18:38   ` David Leverton
  2015-11-05 19:11     ` Ulrich Mueller
  2015-11-05 22:14     ` Michał Górny
  2015-11-05 22:07   ` Michał Górny
  2015-11-06 21:32   ` David Leverton
  2 siblings, 2 replies; 53+ messages in thread
From: David Leverton @ 2015-11-05 18:38 UTC (permalink / raw
  To: gentoo-pms

Ulrich Müller wrote:
> +\featurelabel{profile-file-dirs} For EAPIs listed as supported in table~\ref{tab:profile-file-dirs},
> +simple line-based files described in the following sections may optionally be directories containing
> +files of the named type.

1) Can those directories themselves contain subdirectories (and 
sub-subdirectories, ...), or is it just one level deep?

2) Is there any restriction on the names of the files (e.g. ignoring 
hidden files, editor backups, etc), or can they be anything?

If I'm reading the current Portage implementation correctly, the answers 
there (without making any claims about what the spec should or shouldn't 
adopt) are:

1) Yes, there can be multiple levels of subdirectories.

2) Yes, files and subdirectories beginning with a . or ending with a ~ 
are excluded, as are subdirectories named CVS, RCS or SCCS.



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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-11-05 18:38   ` David Leverton
@ 2015-11-05 19:11     ` Ulrich Mueller
  2015-11-05 22:14     ` Michał Górny
  1 sibling, 0 replies; 53+ messages in thread
From: Ulrich Mueller @ 2015-11-05 19:11 UTC (permalink / raw
  To: gentoo-pms; +Cc: council

[-- Attachment #1: Type: text/plain, Size: 1222 bytes --]

>>>>> On Thu, 5 Nov 2015, David Leverton wrote:

> Ulrich Müller wrote:
>> +\featurelabel{profile-file-dirs} For EAPIs listed as supported in table~\ref{tab:profile-file-dirs},
>> +simple line-based files described in the following sections may optionally be directories containing
>> +files of the named type.

> 1) Can those directories themselves contain subdirectories (and
> sub-subdirectories, ...), or is it just one level deep?

> 2) Is there any restriction on the names of the files (e.g. ignoring
> hidden files, editor backups, etc), or can they be anything?

> If I'm reading the current Portage implementation correctly, the
> answers there (without making any claims about what the spec should
> or shouldn't adopt) are:

> 1) Yes, there can be multiple levels of subdirectories.

> 2) Yes, files and subdirectories beginning with a . or ending with a
> ~ are excluded, as are subdirectories named CVS, RCS or SCCS.

From the wording that we have it seems that the answer to both
questions should be No.

I'll try to have this clarified before the council meeting. If that
should fail, I suggest to drop the feature from EAPI 6; it can be
reconsidered for EAPI 7 then.

Ulrich

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories Ulrich Müller
  2015-11-05 18:38   ` David Leverton
@ 2015-11-05 22:07   ` Michał Górny
  2015-11-06 21:32   ` David Leverton
  2 siblings, 0 replies; 53+ messages in thread
From: Michał Górny @ 2015-11-05 22:07 UTC (permalink / raw
  To: Ulrich Müller; +Cc: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 1341 bytes --]

On Thu, 15 Oct 2015 12:50:04 +0200
Ulrich Müller <ulm@gentoo.org> wrote:

> From: Michael Palimaka <kensington@gentoo.org>
> 
> Bug: 282296
> ---
>  eapi-differences.tex |  5 ++++-
>  profiles.tex         | 32 ++++++++++++++++++++++++++------
>  2 files changed, 30 insertions(+), 7 deletions(-)
> 
> diff --git a/eapi-differences.tex b/eapi-differences.tex
> index c28494d..2132935 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*} and \t{use*} dirs & \compactfeatureref{profile-file-dirs} &
> +    No & No & No & No & Yes \\
> +
>  Stable use masking/forcing & \compactfeatureref{stablemask} &
>      No & No & No & Yes & Yes \\
>  
> @@ -304,7 +307,7 @@ EAPI 5 is EAPI 4 with the following changes:
>  EAPI 6 is EAPI 5 with the following changes:
>  
>  \begin{compactitem}
> -\item None
> +\item Profile \t{package*} and \t{use*} can be directories, \featureref{profile-file-dirs}.
>  \end{compactitem}

Just to be clear, the Portage implementation (originally used
in Arfrever's EAPIs) also allows make.defaults to be a directory. Not
sure if this is desired for consistency, or not.

-- 
Best regards,
Michał Górny
<http://dev.gentoo.org/~mgorny/>

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 949 bytes --]

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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-11-05 18:38   ` David Leverton
  2015-11-05 19:11     ` Ulrich Mueller
@ 2015-11-05 22:14     ` Michał Górny
  2015-11-05 22:25       ` Ulrich Mueller
  1 sibling, 1 reply; 53+ messages in thread
From: Michał Górny @ 2015-11-05 22:14 UTC (permalink / raw
  To: David Leverton; +Cc: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 2017 bytes --]

On Thu, 5 Nov 2015 18:38:58 +0000
David Leverton <levertond@googlemail.com> wrote:

> Ulrich Müller wrote:
> > +\featurelabel{profile-file-dirs} For EAPIs listed as supported in table~\ref{tab:profile-file-dirs},
> > +simple line-based files described in the following sections may optionally be directories containing
> > +files of the named type.  
> 
> 1) Can those directories themselves contain subdirectories (and 
> sub-subdirectories, ...), or is it just one level deep?
> 
> 2) Is there any restriction on the names of the files (e.g. ignoring 
> hidden files, editor backups, etc), or can they be anything?
> 
> If I'm reading the current Portage implementation correctly, the answers 
> there (without making any claims about what the spec should or shouldn't 
> adopt) are:
> 
> 1) Yes, there can be multiple levels of subdirectories.
> 
> 2) Yes, files and subdirectories beginning with a . or ending with a ~ 
> are excluded, as are subdirectories named CVS, RCS or SCCS.

I think your understanding of Portage implementation is correct.
However, I don't really think spec should work like this.

1) I'd go for allowing a single recursion level only. If not for
anything specific, just to keep things simple and avoid further
questions like how to handle symlinks and avoid infinite recursion.
This would also be consistent with how 'eapply' is defined.

2) Dotfiles should be implicitly ignored since that's a common *nix
scheme. If not by any specific exclusion rule, just by simple '*' glob
that wouldn't match those files (this is what happens in eapply).

As for various backup files, I wouldn't put them in the spec. They
don't really belong in the committed repository anyway, so they should
be a minor concern for us.

Long story short, I think this should work alike:

  [[ -d ${foo} ]] && handle "${foo}"/*

Therefore implying single level of recursion and skipping dotfiles.

-- 
Best regards,
Michał Górny
<http://dev.gentoo.org/~mgorny/>

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 949 bytes --]

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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-11-05 22:14     ` Michał Górny
@ 2015-11-05 22:25       ` Ulrich Mueller
  2015-11-06 21:38         ` Michał Górny
  0 siblings, 1 reply; 53+ messages in thread
From: Ulrich Mueller @ 2015-11-05 22:25 UTC (permalink / raw
  To: gentoo-pms; +Cc: David Leverton

[-- Attachment #1: Type: text/plain, Size: 1410 bytes --]

>>>>> On Thu, 5 Nov 2015, Michał Górny wrote:

> Long story short, I think this should work alike:

>   [[ -d ${foo} ]] && handle "${foo}"/*

> Therefore implying single level of recursion and skipping dotfiles.

Attempt of a wording below.

Ulrich


From 6a6c4dd3882d2e01f0fab89cc0b3611e45c8b0b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ulrich=20M=C3=BCller?= <ulm@gentoo.org>
Date: Thu, 5 Nov 2015 23:23:06 +0100
Subject: [PATCH] fixup! EAPI 6 supports package.* and use.* directories.

---
 profiles.tex | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/profiles.tex b/profiles.tex
index a0e3c57..db96b37 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -72,7 +72,9 @@ removed from the list. Once again, blank lines and those beginning with a \# are
 
 \featurelabel{profile-file-dirs} For EAPIs listed as supported in table~\ref{tab:profile-file-dirs},
 simple line-based files described in the following sections may optionally be directories containing
-files of the named type.
+files of the named type. These files, unless their name begins with a dot, will be sorted by their
+filename in the POSIX locale and their concatenation will be processed as if it were a single file.
+Subdirectories will not be descended into.
 
 \ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{Profile support for directories of simple line-based files}
-- 
2.6.2

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-10-15 10:50 ` [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories Ulrich Müller
  2015-11-05 18:38   ` David Leverton
  2015-11-05 22:07   ` Michał Górny
@ 2015-11-06 21:32   ` David Leverton
  2015-11-06 23:27     ` Ulrich Mueller
  2 siblings, 1 reply; 53+ messages in thread
From: David Leverton @ 2015-11-06 21:32 UTC (permalink / raw
  To: gentoo-pms

Ulrich Müller wrote:
> --- a/profiles.tex
> +++ b/profiles.tex

One last thing (probably): this should also be included/cross-referenced 
in tree-layout.tex for the repo-level package.mask file.



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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-11-05 22:25       ` Ulrich Mueller
@ 2015-11-06 21:38         ` Michał Górny
  2015-11-06 22:52           ` Ulrich Mueller
  0 siblings, 1 reply; 53+ messages in thread
From: Michał Górny @ 2015-11-06 21:38 UTC (permalink / raw
  To: Ulrich Mueller; +Cc: gentoo-pms, David Leverton

[-- Attachment #1: Type: text/plain, Size: 1638 bytes --]

On Thu, 5 Nov 2015 23:25:31 +0100
Ulrich Mueller <ulm@gentoo.org> wrote:

> >>>>> On Thu, 5 Nov 2015, Michał Górny wrote:  
> 
> > Long story short, I think this should work alike:  
> 
> >   [[ -d ${foo} ]] && handle "${foo}"/*  
> 
> > Therefore implying single level of recursion and skipping dotfiles.  
> 
> Attempt of a wording below.
> 
> Ulrich
> 
> 
> From 6a6c4dd3882d2e01f0fab89cc0b3611e45c8b0b7 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Ulrich=20M=C3=BCller?= <ulm@gentoo.org>
> Date: Thu, 5 Nov 2015 23:23:06 +0100
> Subject: [PATCH] fixup! EAPI 6 supports package.* and use.* directories.
> 
> ---
>  profiles.tex | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/profiles.tex b/profiles.tex
> index a0e3c57..db96b37 100644
> --- a/profiles.tex
> +++ b/profiles.tex
> @@ -72,7 +72,9 @@ removed from the list. Once again, blank lines and those beginning with a \# are
>  
>  \featurelabel{profile-file-dirs} For EAPIs listed as supported in table~\ref{tab:profile-file-dirs},
>  simple line-based files described in the following sections may optionally be directories containing
> -files of the named type.
> +files of the named type. These files, unless their name begins with a dot, will be sorted by their
> +filename in the POSIX locale and their concatenation will be processed as if it were a single file.
> +Subdirectories will not be descended into.

I'm not sure if we shouldn't make subdirectories an error. Silently
ignoring potential issues is usually not a good thing.

-- 
Best regards,
Michał Górny
<http://dev.gentoo.org/~mgorny/>

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 949 bytes --]

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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-11-06 21:38         ` Michał Górny
@ 2015-11-06 22:52           ` Ulrich Mueller
  0 siblings, 0 replies; 53+ messages in thread
From: Ulrich Mueller @ 2015-11-06 22:52 UTC (permalink / raw
  To: Michał Górny; +Cc: gentoo-pms, David Leverton

[-- Attachment #1: Type: text/plain, Size: 246 bytes --]

>>>>> On Fri, 6 Nov 2015, Michał Górny wrote:

> I'm not sure if we shouldn't make subdirectories an error.

IMHO keeping a repo in CVS (and therefore having a CVS subdir) is
still a valid use case which shouldn't cause an error.

Ulrich

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-11-06 21:32   ` David Leverton
@ 2015-11-06 23:27     ` Ulrich Mueller
  2015-11-07  0:08       ` Ulrich Mueller
  2015-11-07  0:12       ` David Leverton
  0 siblings, 2 replies; 53+ messages in thread
From: Ulrich Mueller @ 2015-11-06 23:27 UTC (permalink / raw
  To: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 406 bytes --]

>>>>> On Fri, 6 Nov 2015, David Leverton wrote:

> One last thing (probably): this should also be
> included/cross-referenced in tree-layout.tex for the repo-level
> package.mask file.

This hasn't been discussed so far, and I think it is way too late to
consider it still for EAPI 6.

Also, why should package.mask be treated differently from the other
files in the top-level profiles/ directory?

Ulrich

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-11-06 23:27     ` Ulrich Mueller
@ 2015-11-07  0:08       ` Ulrich Mueller
  2015-11-07  0:12       ` David Leverton
  1 sibling, 0 replies; 53+ messages in thread
From: Ulrich Mueller @ 2015-11-07  0:08 UTC (permalink / raw
  To: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 1207 bytes --]

>>>>> On Sat, 7 Nov 2015, Ulrich Mueller wrote:

>>>>> On Fri, 6 Nov 2015, David Leverton wrote:
>> One last thing (probably): this should also be
>> included/cross-referenced in tree-layout.tex for the repo-level
>> package.mask file.

> This hasn't been discussed so far, and I think it is way too late to
> consider it still for EAPI 6.

And I guess we should clarify that the feature applies only to
profiles but not to the profiles/ dir:

--- a/profiles.tex
+++ b/profiles.tex
@@ -74,7 +74,8 @@ removed from the list. Once again, blank lines and those beginning with a \# are
 simple line-based files described in the following sections may optionally be directories containing
 files of the named type. These files, unless their name begins with a dot, will be sorted by their
 filename in the POSIX locale and their concatenation will be processed as if it were a single file.
-Subdirectories will not be descended into.
+Subdirectories will not be descended into. Note that the above does \e{not} apply to files in the
+\t{profiles} directory described in section~\ref{sec:profiles-dir}.
 
 \ChangeWhenAddingAnEAPI{6}
 \begin{centertable}{Profile support for directories of simple line-based files}

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-11-06 23:27     ` Ulrich Mueller
  2015-11-07  0:08       ` Ulrich Mueller
@ 2015-11-07  0:12       ` David Leverton
  2015-11-07  0:58         ` Ulrich Mueller
  2015-11-07  9:03         ` Michał Górny
  1 sibling, 2 replies; 53+ messages in thread
From: David Leverton @ 2015-11-07  0:12 UTC (permalink / raw
  To: gentoo-pms

Ulrich Mueller wrote:
>>>>>> On Fri, 6 Nov 2015, David Leverton wrote:
>> One last thing (probably): this should also be
>> included/cross-referenced in tree-layout.tex for the repo-level
>> package.mask file.
>
> This hasn't been discussed so far, and I think it is way too late to
> consider it still for EAPI 6.

Well, a big use case stated in bug 282296 is package.mask in overlays, 
which I assume refers to the repo-level one rather than one inside an 
actual profile.  If people haven't made it clear that they want that, I 
think it's because of imprecise language rather than because they don't 
actually want it.

(And this has been argued over for long enough - I'd really rather not 
have it go on ever further when people realise the spec still doesn't 
allow what they're trying to do.)

> Also, why should package.mask be treated differently from the other
> files in the top-level profiles/ directory?

For consistency, they should probably all (except repo_name and eapi) 
allow directories, yes, but a couple of the others were mentioned in the 
bug and it seems people decided there wasn't any need to allow it for 
the rest of them.  Going the other way and making none of them allow 
directories isn't really better in that regard because then the repo 
package.mask is different from the profile one.



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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-11-07  0:12       ` David Leverton
@ 2015-11-07  0:58         ` Ulrich Mueller
  2015-11-07  9:03         ` Michał Górny
  1 sibling, 0 replies; 53+ messages in thread
From: Ulrich Mueller @ 2015-11-07  0:58 UTC (permalink / raw
  To: gentoo-pms; +Cc: council

[-- Attachment #1: Type: text/plain, Size: 1350 bytes --]

>>>>> On Sat, 7 Nov 2015, David Leverton wrote:

> Well, a big use case stated in bug 282296 is package.mask in
> overlays, which I assume refers to the repo-level one rather than
> one inside an actual profile. If people haven't made it clear that
> they want that, I think it's because of imprecise language rather
> than because they don't actually want it.

> (And this has been argued over for long enough - I'd really rather
> not have it go on ever further when people realise the spec still
> doesn't allow what they're trying to do.)

This is all well and good, but the patch with (essentially) the
current wording is attached to bug 282296 since 18 months and it talks
only about files in a profile, but not about the profiles/ directory.
I think nobody can claim that these 18 months have been too short a
time for a careful review.

Therefore, I see only the alternatives that either the feature will be
accepted with the current wording, or that the feature will be dropped
from EAPI 6 altogether.

What is *not* going to happen is that we delay EAPI 6 because of this.
Also I am strongly opposed against any substantial changes on the day
before the council meeting. There was plenty of time to get things
right, and if there are still such major issues at the current point,
then regrettably this will have to wait for EAPI 7.

Ulrich

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories.
  2015-11-07  0:12       ` David Leverton
  2015-11-07  0:58         ` Ulrich Mueller
@ 2015-11-07  9:03         ` Michał Górny
  1 sibling, 0 replies; 53+ messages in thread
From: Michał Górny @ 2015-11-07  9:03 UTC (permalink / raw
  To: David Leverton; +Cc: gentoo-pms

[-- Attachment #1: Type: text/plain, Size: 1730 bytes --]

On Sat, 7 Nov 2015 00:12:56 +0000
David Leverton <levertond@googlemail.com> wrote:

> Ulrich Mueller wrote:
> >>>>>> On Fri, 6 Nov 2015, David Leverton wrote:  
> >> One last thing (probably): this should also be
> >> included/cross-referenced in tree-layout.tex for the repo-level
> >> package.mask file.  
> >
> > This hasn't been discussed so far, and I think it is way too late to
> > consider it still for EAPI 6.  
> 
> Well, a big use case stated in bug 282296 is package.mask in overlays, 
> which I assume refers to the repo-level one rather than one inside an 
> actual profile.  If people haven't made it clear that they want that, I 
> think it's because of imprecise language rather than because they don't 
> actually want it.
> 
> (And this has been argued over for long enough - I'd really rather not 
> have it go on ever further when people realise the spec still doesn't 
> allow what they're trying to do.)
> 
> > Also, why should package.mask be treated differently from the other
> > files in the top-level profiles/ directory?  
> 
> For consistency, they should probably all (except repo_name and eapi) 
> allow directories, yes, but a couple of the others were mentioned in the 
> bug and it seems people decided there wasn't any need to allow it for 
> the rest of them.  Going the other way and making none of them allow 
> directories isn't really better in that regard because then the repo 
> package.mask is different from the profile one.

I'm pretty sure that was *the* request, just the convoluted tree layout
caused it to be misunderstood. Then, I'd vote for leaving it out until
EAPI 7.

-- 
Best regards,
Michał Górny
<http://dev.gentoo.org/~mgorny/>

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 949 bytes --]

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

end of thread, other threads:[~2015-11-07  9:03 UTC | newest]

Thread overview: 53+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-15 10:49 [gentoo-pms] EAPI 6 draft for review Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 01/22] Add an EAPI 6 identical to EAPI 5 Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 02/22] Rework the EAPI feature table Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 03/22] Reformat EAPI tables to be more compact Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 04/22] Delete redundant sentence in the list of defined EAPIs Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 05/22] EAPI 6 supports package.* and use.* directories Ulrich Müller
2015-11-05 18:38   ` David Leverton
2015-11-05 19:11     ` Ulrich Mueller
2015-11-05 22:14     ` Michał Górny
2015-11-05 22:25       ` Ulrich Mueller
2015-11-06 21:38         ` Michał Górny
2015-11-06 22:52           ` Ulrich Mueller
2015-11-05 22:07   ` Michał Górny
2015-11-06 21:32   ` David Leverton
2015-11-06 23:27     ` Ulrich Mueller
2015-11-07  0:08       ` Ulrich Mueller
2015-11-07  0:12       ` David Leverton
2015-11-07  0:58         ` Ulrich Mueller
2015-11-07  9:03         ` Michał Górny
2015-10-15 10:50 ` [gentoo-pms] [PATCH 06/22] EAPI 6: Bash version is 4.2 Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 07/22] EAPI 6 enables failglob in global scope Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 08/22] EAPI 6: einstall banned Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 09/22] EAPI 6: die and assert called with -n respect nonfatal Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 10/22] EAPI 6 has eapply Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 11/22] EAPI 6: Explain eapply behavior Ulrich Müller
2015-10-16 10:08   ` Michał Górny
2015-10-16 15:45     ` Ulrich Mueller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 12/22] EAPI 6 has eapply_user Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 13/22] EAPI 6 has a default src_prepare Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 14/22] EAPI 6: econf adds --docdir and --htmldir Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse Ulrich Müller
2015-10-15 16:40   ` Ciaran McCreesh
2015-10-15 16:49     ` Ulrich Mueller
2015-10-15 16:56       ` Ciaran McCreesh
2015-10-15 17:05         ` Ulrich Mueller
2015-10-15 17:11           ` Ciaran McCreesh
2015-10-15 17:51             ` [gentoo-pms] [PATCH] Calling a USE list function in global scope is an error Ulrich Müller
2015-10-18 11:14               ` [gentoo-pms] " Ulrich Mueller
2015-10-15 18:34         ` [gentoo-pms] [PATCH 15/22] EAPI 6 has in_iuse Michał Górny
2015-10-15 18:33     ` Michał Górny
2015-10-15 10:50 ` [gentoo-pms] [PATCH 16/22] EAPI 6: unpack supports absolute and relative paths Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 17/22] EAPI 6: unpack supports txz Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 18/22] EAPI 6: unpack matches filename extensions case-insensitively Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 19/22] EAPI 6 has einstalldocs Ulrich Müller
2015-11-03 17:24   ` David Leverton
2015-11-03 17:53     ` Michał Górny
2015-11-03 19:51       ` Ulrich Mueller
2015-11-03 19:44     ` Ulrich Mueller
2015-11-03 20:36       ` Ulrich Mueller
2015-11-03 23:07         ` David Leverton
2015-10-15 10:50 ` [gentoo-pms] [PATCH 20/22] EAPI 6 has a different src_install implementation Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 21/22] EAPI 6 has get_libdir Ulrich Müller
2015-10-15 10:50 ` [gentoo-pms] [PATCH 22/22] Merge several EAPI feature tables Ulrich Müller

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