public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-14  7:29 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     140aac7de90b44e7a14b4f5aaf5952911ad074ea
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Aug  4 10:10:59 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Aug  4 10:10:59 2021 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=140aac7d

pkg-mgr-commands.tex: Fix econf --libdir logic

Portage uses both --exec-prefix and --prefix in its econf logic,
introduced in 2005:
https://gitweb.gentoo.org/archive/proj/portage-cvs.git/commit/?h=portage_2_0&id=865508e5cb2fd3e6ef7c312b6a7bb88cf8799f9c

Pkgcore agrees with Portage.

Paludis uses --prefix first, then --exec-prefix.

Closes: https://bugs.gentoo.org/806374
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 0a34db9..4431435 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -386,7 +386,9 @@ commands once the current phase function has returned.
 \caption{\t{econf -{}-libdir} logic} \label{alg:econf-libdir}
 \begin{algorithmic}[1]
 \STATE let prefix=\$\{EPREFIX\}/usr
-\IF{the caller specified -{}-prefix=\$p}
+\IF{the caller specified -{}-exec-prefix=\$ep}
+    \STATE let prefix=\$ep
+\ELSIF{the caller specified -{}-prefix=\$p}
     \STATE let prefix=\$p
 \ENDIF
 \STATE let libdir=


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-14  7:29 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     88bd72dfbce9d889f9cf865cac72f26a06e8914e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 15 12:14:44 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Aug 15 12:14:44 2021 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=88bd72df

eapi-cheatsheet.tex: Define \i and \t commands

These occur in external aux files used with the xr-hyper package and
would normally cause an "undefined control sequence" error. The problem
was hidden by LaTeX using its internal \i and \t macros instead.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-cheatsheet.tex | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index c5e795d..c333b32 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -19,6 +19,10 @@
 \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
 \renewcommand{\familydefault}{\sfdefault}
 \urlstyle{sf}
+
+% These commands may occur in external aux files from pms
+\renewcommand{\i}[1]{\textit{#1}}
+\renewcommand{\t}[1]{\texttt{#1}}
 \externaldocument{pms}
 
 \title{EAPI Cheat Sheet}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-14  7:29 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     3c246ad9dd49c23f87ec12fc859ffd76cf2ca9f1
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 18 16:21:41 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Aug 18 16:21:41 2021 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=3c246ad9

pms.tex: Delete some empty lines

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 pms.tex | 17 -----------------
 1 file changed, 17 deletions(-)

diff --git a/pms.tex b/pms.tex
index e0a41b5..630fc16 100644
--- a/pms.tex
+++ b/pms.tex
@@ -47,44 +47,27 @@
 \listoftables
 
 \include{introduction}
-
 \include{eapis}
-
 \include{names}
-
 \include{tree-layout}
-
 \include{profiles}
-
 \include{ebuild-format}
-
 \include{ebuild-vars}
-
 \include{dependencies}
-
 \include{ebuild-functions}
-
 \include{eclasses}
-
 \include{ebuild-environment}
-
 \include{commands}
-
 \include{merge}
-
 \include{metadata-cache}
-
 \include{glossary}
 
 \bibliography{pms}
 
 \appendix
 \setcounter{secnumdepth}{0}
-
 \include{appendices}
-
 \include{eapi-differences}
-
 \include{desk-reference}
 
 \end{document}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-14  7:29 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     8ce3a9c94407c8bfcf27c8455fac32d3a38fc981
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 24 12:12:38 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Sep 24 13:06:45 2021 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=8ce3a9c9

pkg-mgr-commands.tex: Update condition for econf --disable-static

The help message produced by LT_INIT in libtool-2.4.6 always says
--enable-static regardless of the default value, see m4/ltoptions.m4:

AC_ARG_ENABLE([static],
    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
    ...)

This means that looking only for --disable-static in output of
configure --help results in non-functional behaviour.

Implementation in Portage (which predates the PMS wording) looks for
--enable-static in addition.

Bug: https://bugs.gentoo.org/814368
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 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 ebb4b7e..45706af 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -341,8 +341,8 @@ commands once the current phase function has returned.
         as using it. This option will only be passed if the string \t{-{}-disable-silent-rules}
         occurs in the output of \t{configure -{}-help}.
     \item \t{-{}-disable-static}, 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{-{}-disable-static} occurs
-        in the output of \t{configure -{}-help}.
+        as using it. This option will only be passed if the string \t{-{}-disable-static} or
+        \t{-{}-enable-static} occurs in the output of \t{configure -{}-help}.
     \end{itemize}
 
     \ChangeWhenAddingAnEAPI{8}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-14  7:29 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     e68df128f8cd3b427168f9a76a655460766e6d70
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 31 16:05:08 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Aug 31 16:05:08 2021 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e68df128

pkg-mgr-commands.tex: Update description of text list functions

Closes: https://bugs.gentoo.org/374791
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 pkg-mgr-commands.tex | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4431435..331cd33 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1016,7 +1016,7 @@ table~\ref{tab:use-list-strictness}.
 \end{centertable}
 
 \subsection{Text list functions}
-These functions check whitespace-separated lists for a particular value.
+These functions check a list of arguments for a particular value.
 \nobreakpar
 \begin{description}
 \item[has] Returns shell true (0) if the first argument (a word) is found in the list of subsequent


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2021-09-03  6:56 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2022-02-14  7:29 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     153324136107543ef07b1378f08bce81199a9022
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Aug 30 19:32:16 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Aug 31 16:05:50 2021 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=15332413

pkg-mgr-commands.tex: Clarify which commands are allowed in global scope

For most commands this is already implied by the combination of the
statements "When an ebuild is being sourced for metadata querying
rather than for a build [...], no external command may be executed."
in chapter 12 ("Available Commands") and "Except where otherwise
noted, they may be internal [...] or external commands available in
PATH; where this is not specified, ebuilds may not rely upon either
behaviour." in section 12.3 ("Ebuild-specific Commands").

For output commands (einfo etc.) and debug commands (debug-print etc.)
to be allowed in global scope, they must be implemented as shell
functions. Specify this, which follows the implementation in all three
package managers.

Closes: https://bugs.gentoo.org/520528
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 331cd33..ebb4b7e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -4,7 +4,8 @@
 The following commands will always be available in the ebuild environment, provided by the package
 manager. Except where otherwise noted, they may be internal (shell functions or aliases) or external
 commands available in \t{PATH}; where this is not specified, ebuilds may not rely upon either
-behaviour.
+behaviour. Unless otherwise specified, it is an error if an ebuild calls any of these commands in
+global scope.
 
 Unless otherwise noted, any output of these commands ends with a newline.
 
@@ -142,8 +143,9 @@ are given, \t{-r} is assumed.
 These commands display messages to the user. Unless otherwise stated, the entire argument list is
 used as a message, with backslash-escaped characters interpreted as for the \t{echo -e} command of
 bash, notably \t{\textbackslash t} for a horizontal tab, \t{\textbackslash n} for a new line, and
-\t{\textbackslash\textbackslash} for a literal backslash. Ebuilds must not run any of these commands
-once the current phase function has returned.
+\t{\textbackslash\textbackslash} for a literal backslash. These commands must be implemented
+internally as shell functions and may be called in global scope. Ebuilds must not run any of these
+commands once the current phase function has returned.
 
 \featurelabel{output-no-stdout} Unless otherwise noted, output may be sent to stderr or some other
 appropriate facility. In EAPIs listed in table~\ref{tab:output-commands} as not allowing stdout
@@ -927,8 +929,7 @@ any of these functions from any other phase.
 
 \subsection{USE list functions}
 These functions provide behaviour based upon set or unset use flags. Ebuilds must not run any of
-these commands once the current phase function has returned. It is an error if an ebuild calls any
-of these functions in global scope.
+these commands once the current phase function has returned.
 
 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
@@ -1016,7 +1017,8 @@ table~\ref{tab:use-list-strictness}.
 \end{centertable}
 
 \subsection{Text list functions}
-These functions check a list of arguments for a particular value.
+These functions check a list of arguments for a particular value. They must be implemented
+internally as shell functions and may be called in global scope.
 \nobreakpar
 \begin{description}
 \item[has] Returns shell true (0) if the first argument (a word) is found in the list of subsequent
@@ -1261,8 +1263,9 @@ has returned.
 \end{algorithm}
 
 \item[get_libdir] \featurelabel{get-libdir} Prints the libdir name obtained according to
-    algorithm~\ref{alg:get-libdir}. Must be implemented internally as a shell function.
-    Only available in EAPIs listed in table~\ref{tab:misc-commands} as supporting \t{get_libdir}.
+    algorithm~\ref{alg:get-libdir}. Must be implemented internally as a shell function and may be
+    called in global scope. Only available in EAPIs listed in table~\ref{tab:misc-commands} as
+    supporting \t{get_libdir}.
 
 \begin{algorithm}
 \caption{\t{get_libdir} logic} \label{alg:get-libdir}
@@ -1300,6 +1303,7 @@ has returned.
 \subsection{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.
+These commands must be implemented internally as shell functions and may be called in global scope.
 Ebuilds must not run any of these commands once the current phase function has returned.
 
 \begin{description}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2022-02-07  8:13 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2022-02-14  7:29 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     ca1f5785608d6962dab2b863d508061fa6a9e0f6
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Jan  8 10:22:25 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Jan  8 10:22:25 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ca1f5785

pkg-mgr-commands.tex: Add some braces for consistency

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 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 eb15d64..7f57539 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -406,7 +406,7 @@ commands once the current phase function has returned.
 \end{algorithmic}
 \end{algorithm}
 
-\item[emake] Calls the \t{\$MAKE} program, or GNU make if the \t{MAKE} variable is unset.
+\item[emake] Calls the \t{\$\{MAKE\}} program, or GNU make if the \t{MAKE} variable is unset.
     Any arguments given are passed directly to the make command, as are the user's chosen
     \t{MAKEOPTS}\@. Arguments given to \t{emake} override user configuration. See also
     section~\ref{sec:guaranteed-system-commands}. \t{emake} must be an external program and cannot
@@ -507,7 +507,7 @@ the current phase function has returned.
     Only available in EAPIs listed in table~\ref{tab:doheader-table} as supporting \t{doheader}.
     Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
 
-\item[dohtml] Installs the given HTML files into a subdirectory under \t{/usr/share/doc/\$PF/}.
+\item[dohtml] Installs the given HTML files into a subdirectory under \t{/usr/share/doc/\$\{PF\}/}.
     The subdirectory is \t{html} by default, but this can be overridden with the \t{docinto}
     function. Files to be installed automatically are determined by extension and the default
     extensions are \t{css}, \t{gif}, \t{htm}, \t{html}, \t{jpeg}, \t{jpg}, \t{js} and \t{png}.


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-14  7:29 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     edae70c9cc4b936670151088e9e97c51331b6440
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 17 11:45:08 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Aug 17 11:45:08 2021 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=edae70c9

profiles.tex: Don't use \verb

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/profiles.tex b/profiles.tex
index d6e8649..30da81b 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -49,7 +49,7 @@ This file must not contain comments or make use of line continuations.
 This file is unusual in that it is not combined at a file level with the parent---instead, each
 variable is combined or overridden individually as described in section~\ref{sec:profile-variables}.
 
-The file itself is a line-based key-value format. Each line contains a single \verb|VAR="value"|
+The file itself is a line-based key-value format. Each line contains a single \t{VAR="value"}
 entry, where the value must be double quoted. A variable name must start with one of \t{a-zA-Z}
 and may contain \t{a-zA-Z0-9_} only. Additional syntax, which is a small subset of
 bash syntax, is allowed as follows:


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2021-08-19 19:40 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2022-02-14  7:29 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     09bb58f347eef04cf9c29c7158beb1b04e645c75
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 18 16:04:59 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Aug 18 16:04:59 2021 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=09bb58f3

pms.cls: Output class info after packages are loaded

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 pms.cls | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/pms.cls b/pms.cls
index a41d96c..b29a9c3 100644
--- a/pms.cls
+++ b/pms.cls
@@ -47,18 +47,6 @@
     gitinfo2    % Metadata from git
 }
 
-% tex4ht workaround: hyperref needs to be loaded /after/ tex4ht injects itself
-\g@addto@macro\@documentclasshook{
-    \RequirePackage{%
-        hyperref,       % Support for hyperlinks
-        algorithm,      %
-        algorithmic     % Set algorithms
-    }
-}
-
-\ClassInfo{pms}{Capsulation of LaTeX stuff for the Package Manager
-    Specification, loaded baseclass: \ClassToLoad\MessageBreak}
-
 % Make processing with TeX4HT possible
 \newboolean{TEX4HT-HACKS}
 \ifx\HCode\undefined
@@ -72,6 +60,18 @@
     \setboolean{TEX4HT-HACKS}{true}
 \fi
 
+% tex4ht workaround: hyperref needs to be loaded /after/ tex4ht injects itself
+\g@addto@macro\@documentclasshook{
+    \RequirePackage{%
+        hyperref,       % Support for hyperlinks
+        algorithm,      %
+        algorithmic     % Set algorithms
+    }
+}
+
+\ClassInfo{pms}{LaTeX class for the Package Manager Specification,
+    loaded baseclass: \ClassToLoad\MessageBreak}
+
 % Define own label and reference commands, that display the label in
 % the page margin.
 \ifthenelse{\boolean{TEX4HT-HACKS}}{%


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2021-09-01 17:35 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2022-02-14  7:29 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     f5f8e42eeb8ea1e8c2ac182f30214ef0c559dd88
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 29 08:10:29 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Aug 31 16:02:50 2021 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f5f8e42e

eclasses.tex: Clarify precedence of EXPORT_FUNCTIONS calls

Clarify that the last call to EXPORT_FUNCTIONS takes precedence over
earlier calls.

Unfortunately, we need an exception when inherit is called after
EXPORT_FUNCTIONS because Portage changed its behaviour in 2009:
https://gitweb.gentoo.org/proj/portage.git/commit/?id=06d4433e8b8be60d606733b9e23f57f8a5869d8f

Pkgcore and Paludis apply precedence consistently based on call order
of EXPORT_FUNCTIONS.

Bug: https://bugs.gentoo.org/399039
Bug: https://bugs.gentoo.org/422513
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/eclasses.tex b/eclasses.tex
index a92ce1f..e23dcd8 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -88,6 +88,10 @@ should the author wish to override it he can access the function in \t{foo.eclas
 \t{EXPORT_FUNCTIONS} must only be used on ebuild phase functions. The function that is aliased
 must be named \t{eclassname_phasefunctionname}, where \t{eclassname} is the name of the eclass.
 
+If \t{EXPORT_FUNCTIONS} is called multiple times for the same phase function, the last call takes
+precedence. Eclasses may not rely upon any particular behaviour if they inherit another eclass
+after calling \t{EXPORT_FUNCTIONS}.
+
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
 %%% Local Variables:


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-14  7:29 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     19011b5efffa577d35daa9dfe32820e3fc04d0a8
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Jan  8 09:13:02 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Jan  8 09:13:02 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=19011b5e

pkg-mgr-commands.tex: Teletype font for literal string in get_libdir

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 pkg-mgr-commands.tex | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 45706af..eb15d64 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1270,7 +1270,7 @@ has returned.
 \begin{algorithm}
 \caption{\t{get_libdir} logic} \label{alg:get-libdir}
 \begin{algorithmic}[1]
-\STATE let libdir=lib
+\STATE let libdir=\t{lib}
 \IF{the ABI environment variable is set}
     \STATE let libvar=LIBDIR_\$ABI
     \IF{the environment variable named by libvar is set}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-14  7:29 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     b02e81a59e6a31198a3d023003144cc3938bbc02
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 18 16:19:36 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Aug 18 16:19:36 2021 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=b02e81a5

desk-reference.tex: Include the cheat sheet from a separate file

The desk reference (cheat sheet) is an own chapter. For consistency,
include it from a separate file, and prefix its label with "ch:".

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 desk-reference.tex | 21 +++++++++++++++++++++
 pms.tex            | 10 +---------
 2 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/desk-reference.tex b/desk-reference.tex
new file mode 100644
index 0000000..a096032
--- /dev/null
+++ b/desk-reference.tex
@@ -0,0 +1,21 @@
+\ifthenelse{\boolean{TEX4HT-HACKS}}{%
+    \chapter{Desk Reference}
+    \label{ch:cheatsheet}
+    \href{eapi-cheatsheet.pdf}{EAPI Cheat Sheet}
+}{%
+    % Make sure that the cheat sheet starts on an odd page
+    \ifthenelse{\isodd{\thepage}}{}{\null\newpage}%
+    \includepdf[pages=-,landscape,turn=false,lastpage=2,%
+        addtotoc={1,chapter,0,Desk Reference,ch:cheatsheet}]{eapi-cheatsheet}
+}
+
+% vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pms"
+%%% LaTeX-indent-level: 4
+%%% LaTeX-item-indent: 0
+%%% TeX-brace-indent-level: 4
+%%% fill-column: 100
+%%% End:

diff --git a/pms.tex b/pms.tex
index 8bbd037..e0a41b5 100644
--- a/pms.tex
+++ b/pms.tex
@@ -85,15 +85,7 @@
 
 \include{eapi-differences}
 
-\ifthenelse{\boolean{TEX4HT-HACKS}}{%
-    \chapter{Desk Reference}
-    \href{eapi-cheatsheet.pdf}{EAPI Cheat Sheet}
-}{%
-    % Make sure that the cheat sheet starts on an odd page
-    \clearpage\ifthenelse{\isodd{\thepage}}{}{\null\newpage}%
-    \includepdf[pages=-,landscape,turn=false,lastpage=2,%
-        addtotoc={1,chapter,0,Desk Reference,cheatsheet}]{eapi-cheatsheet}
-}
+\include{desk-reference}
 
 \end{document}
 


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2022-02-07  8:13 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2022-02-14  7:29 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     075f3eb4751531ae04a86d6ebd4ca1f8b2a66e5e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Jan  8 10:23:04 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Jan  8 10:23:04 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=075f3eb4

pms.tex: Update copyright years

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/pms.tex b/pms.tex
index 630fc16..97d6d30 100644
--- a/pms.tex
+++ b/pms.tex
@@ -31,7 +31,7 @@
 \vspace*{\fill}
 {%
     \small
-    \textcopyright{} 2007--2021 Stephen Bennett, Ciaran McCreesh and others. Contributions are owned
+    \textcopyright{} 2007--2022 Stephen Bennett, Ciaran McCreesh and others. Contributions are owned
     by their respective authors, and may have been changed substantially before inclusion.
 
     This work is released under the Creative Commons Attribution-ShareAlike 4.0 International


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2021-09-03 15:26 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2022-02-14  7:29 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     823cc48478a0bb108baa03f0e33e5f77824e5db2
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Sep  3 15:24:25 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Sep  3 15:24:25 2021 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=823cc484

eapi-cheatsheet.tex: Delete trailing whitespace

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index c333b32..8c379bc 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -556,7 +556,7 @@ differences between these previous EAPIs.
     to configure, respectively. See \featureref{econf-options}.
     \item[\code{dosym}] With the new option \code{-r}, an absolute
     path specified for the link target will be converted to a path
-    relative to the link location. See \featureref{dosym-relative}. 
+    relative to the link location. See \featureref{dosym-relative}.
     \item[\code{insopts}] Commands \code{doconfd}, \code{doenvd},
     \code{doheader} install files with fixed mode 0644, i.\,e.\
     they are no longer affected by \code{insopts}.


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2021-09-03 15:26 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2022-02-14  7:29 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     0d8e19d85038ad2433e655cdbca8189d72163f60
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Sep  3 15:23:57 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Sep  3 15:23:57 2021 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=0d8e19d8

ebuild-env-vars.tex: Add missing \\ in table

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index b52f0b3..a55c366 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -256,10 +256,10 @@ variable.
 \t{REPLACED_BY_VERSION} &
     \t{pkg_prerm}, \t{pkg_postrm} &
     Yes &
-    The single version of this package (including revision, if specified) that is replacing us, if
-    we are being uninstalled as part of an install, or an empty string otherwise. See
-    section~\ref{sec:replacing-versions}.  Only for EAPIs listed in table~\ref{tab:added-env-vars-table}
-    as supporting \t{REPLACED_BY_VERSION}.
+    The single version of this package (including revision, if specified) that is replacing us,
+    if we are being uninstalled as part of an install, or an empty string otherwise.
+    See section~\ref{sec:replacing-versions}. Only for EAPIs listed in
+    table~\ref{tab:added-env-vars-table} as supporting \t{REPLACED_BY_VERSION}. \\
 \end{longtable}
 \end{landscape}
 


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-14  7:29 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     2be267efa07e60e3ec5d0ef55c66778ef20362ff
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Feb 13 16:25:14 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 13 16:25:14 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=2be267ef

ebuild-environment.tex: Consolidate source files

These small sections need not be in their own file. No change of
wording.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 ebuild-env-invariancy.tex | 39 -----------------------
 ebuild-env-state.tex      | 63 -------------------------------------
 ebuild-environment.tex    | 79 +++++++++++++++++++++++++++++++++++++++++++++--
 3 files changed, 77 insertions(+), 104 deletions(-)

diff --git a/ebuild-env-invariancy.tex b/ebuild-env-invariancy.tex
deleted file mode 100644
index 9484103..0000000
--- a/ebuild-env-invariancy.tex
+++ /dev/null
@@ -1,39 +0,0 @@
-\section{The State of the System Between Functions}
-
-For the sake of this section:
-\nobreakpar
-\begin{compactitem}
-\item Variancy is any package manager action that modifies either
-    \t{ROOT} or \t{/} in any way that isn't merely a simple addition of
-    something that doesn't alter other packages. This includes any
-    non-default call to any \t{pkg} phase function except \t{pkg_setup},
-    a merge of any package or an unmerge of any package.
-\item As an exception, changes to \t{DISTDIR} do not count as variancy.
-\item The \t{pkg_setup} function may be assumed not to introduce variancy.
-    Thus, ebuilds must not perform variant actions in this phase.
-\end{compactitem}
-
-The following exclusivity and invariancy requirements are mandated:
-\nobreakpar
-\begin{compactitem}
-\item No variancy shall be introduced at any point between a package's
-    \t{pkg_setup} being started up to the point that that package is
-    merged, except for any variancy introduced by that package.
-\item There must be no variancy between a package's \t{pkg_setup} and
-    a package's \t{pkg_postinst}, except for any variancy introduced
-    by that package.
-\item Any non-default \t{pkg} phase function must be run exclusively.
-\item Each phase function must be called at most once during the build
-    process for any given package.
-\end{compactitem}
-
-% vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
-
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-master: "pms"
-%%% LaTeX-indent-level: 4
-%%% LaTeX-item-indent: 0
-%%% TeX-brace-indent-level: 4
-%%% fill-column: 100
-%%% End:

diff --git a/ebuild-env-state.tex b/ebuild-env-state.tex
deleted file mode 100644
index a998660..0000000
--- a/ebuild-env-state.tex
+++ /dev/null
@@ -1,63 +0,0 @@
-\section{The State of Variables Between Functions}
-\label{sec:ebuild-env-state}
-
-Exported and default scope variables are saved between functions. A non-local variable set in a
-function earlier in the call sequence must have its value preserved for later functions, including
-functions executed as part of a later uninstall.
-
-\note{\t{pkg_pretend} is \emph{not} part of the normal call sequence, and does not take part in
-environment saving.}
-
-Variables that were exported must remain exported in later functions; variables with default
-visibility may retain default visibility or be exported. Variables with special meanings to the
-package manager are excluded from this rule.
-
-Global variables must only contain invariant values (see~\ref{sec:metadata-invariance}). If a global
-variable's value is invariant, it may have the value that would be generated at any given point
-in the build sequence.
-
-This is demonstrated by code listing~\ref{lst:env-saving}.
-
-\begin{listing}
-\caption{Environment state between functions} \label{lst:env-saving}
-\begin{verbatim}
-GLOBAL_VARIABLE="a"
-
-src_compile()
-{
-    GLOBAL_VARIABLE="b"
-    DEFAULT_VARIABLE="c"
-    export EXPORTED_VARIABLE="d"
-    local LOCAL_VARIABLE="e"
-}
-
-src_install(){
-    [[ ${GLOBAL_VARIABLE} == "a" ]] \
-        || [[ ${GLOBAL_VARIABLE} == "b" ]] \
-        || die "broken env saving for globals"
-
-    [[ ${DEFAULT_VARIABLE} == "c" ]] \
-        || die "broken env saving for default"
-
-    [[ ${EXPORTED_VARIABLE} == "d" ]] \
-        || die "broken env saving for exported"
-
-    [[ $(printenv EXPORTED_VARIABLE ) == "d" ]] \
-        || die "broken env saving for exported"
-
-    [[ -z ${LOCAL_VARIABLE} ]] \
-        || die "broken env saving for locals"
-}
-\end{verbatim}
-\end{listing}
-
-% vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
-
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-master: "pms"
-%%% LaTeX-indent-level: 4
-%%% LaTeX-item-indent: 0
-%%% TeX-brace-indent-level: 4
-%%% fill-column: 100
-%%% End:

diff --git a/ebuild-environment.tex b/ebuild-environment.tex
index 82c036c..b9f3622 100644
--- a/ebuild-environment.tex
+++ b/ebuild-environment.tex
@@ -2,9 +2,84 @@
 
 \input{ebuild-env-vars.tex}
 
-\input{ebuild-env-state.tex}
+\section{The State of Variables Between Functions}
+\label{sec:ebuild-env-state}
 
-\input{ebuild-env-invariancy.tex}
+Exported and default scope variables are saved between functions. A non-local variable set in a
+function earlier in the call sequence must have its value preserved for later functions, including
+functions executed as part of a later uninstall.
+
+\note{\t{pkg_pretend} is \emph{not} part of the normal call sequence, and does not take part in
+environment saving.}
+
+Variables that were exported must remain exported in later functions; variables with default
+visibility may retain default visibility or be exported. Variables with special meanings to the
+package manager are excluded from this rule.
+
+Global variables must only contain invariant values (see~\ref{sec:metadata-invariance}). If a global
+variable's value is invariant, it may have the value that would be generated at any given point
+in the build sequence.
+
+This is demonstrated by code listing~\ref{lst:env-saving}.
+
+\begin{listing}
+\caption{Environment state between functions} \label{lst:env-saving}
+\begin{verbatim}
+GLOBAL_VARIABLE="a"
+
+src_compile()
+{
+    GLOBAL_VARIABLE="b"
+    DEFAULT_VARIABLE="c"
+    export EXPORTED_VARIABLE="d"
+    local LOCAL_VARIABLE="e"
+}
+
+src_install(){
+    [[ ${GLOBAL_VARIABLE} == "a" ]] \
+        || [[ ${GLOBAL_VARIABLE} == "b" ]] \
+        || die "broken env saving for globals"
+
+    [[ ${DEFAULT_VARIABLE} == "c" ]] \
+        || die "broken env saving for default"
+
+    [[ ${EXPORTED_VARIABLE} == "d" ]] \
+        || die "broken env saving for exported"
+
+    [[ $(printenv EXPORTED_VARIABLE ) == "d" ]] \
+        || die "broken env saving for exported"
+
+    [[ -z ${LOCAL_VARIABLE} ]] \
+        || die "broken env saving for locals"
+}
+\end{verbatim}
+\end{listing}
+
+\section{The State of the System Between Functions}
+
+For the sake of this section:
+\nobreakpar
+\begin{compactitem}
+\item Variancy is any package manager action that modifies either \t{ROOT} or \t{/} in any way that
+    isn't merely a simple addition of something that doesn't alter other packages. This includes
+    any non-default call to any \t{pkg} phase function except \t{pkg_setup}, a merge of any package
+    or an unmerge of any package.
+\item As an exception, changes to \t{DISTDIR} do not count as variancy.
+\item The \t{pkg_setup} function may be assumed not to introduce variancy. Thus, ebuilds must not
+    perform variant actions in this phase.
+\end{compactitem}
+
+The following exclusivity and invariancy requirements are mandated:
+\nobreakpar
+\begin{compactitem}
+\item No variancy shall be introduced at any point between a package's \t{pkg_setup} being started
+    up to the point that that package is merged, except for any variancy introduced by that package.
+\item There must be no variancy between a package's \t{pkg_setup} and a package's \t{pkg_postinst},
+    except for any variancy introduced by that package.
+\item Any non-default \t{pkg} phase function must be run exclusively.
+\item Each phase function must be called at most once during the build process for any given
+    package.
+\end{compactitem}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-14  7:29 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     5e39942107035115db4b383f99167f6c793c6c63
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  3 16:34:08 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Feb 14 07:29:28 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=5e399421

EAPI feature table: Consolidate EAPIs 0 to 5

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex | 224 +++++++++++++++++++++++++--------------------------
 1 file changed, 109 insertions(+), 115 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index c75404b..893caf3 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,23 +1,22 @@
 \chapter{Feature Availability by EAPI}
 
 \note{This chapter is informative and for convenience only. Refer to the main text for specifics.
-For lack of space, EAPIs 0, 1, 2, 3, and~4 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
+For lack of space, EAPIs 0, 1, 2, 3, 4, and~5 have been consolidated into a single column in the
+table below; entries marked with an asterisk differ between these EAPIs. See the 2012-09-20 edition
 of this document for a complete table of previous EAPIs.}
 % 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{6}{c}{\textbf{EAPIs}} \\
+\multicolumn{5}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
+\multicolumn{1}{c}{0, 1, 2, 3, 4, 5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
 \multicolumn{1}{c}{8} &
@@ -27,11 +26,10 @@ of this document for a complete table of previous EAPIs.}
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{6}{c}{\textbf{EAPIs}} \\
+\multicolumn{5}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
+\multicolumn{1}{c}{0, 1, 2, 3, 4, 5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
 \multicolumn{1}{c}{8} &
@@ -44,105 +42,104 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & Optional & Optional & No & No & No \\
+    Optional & Optional & No & No & No \\
 
 Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 4.2 & 4.2 & 5.0 & 5.0 \\
+    3.2 & 4.2 & 4.2 & 5.0 & 5.0 \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{REQUIRED_USE} & \compactfeatureref{required-use} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{PROPERTIES} & \compactfeatureref{properties} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    * & No & No & No & No & No \\
+    * & No & No & No & No \\
 
 \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named and Operator & Named and Operator & Named and Operator & Named and Operator &
-    Named and Operator \\
+    * & Named and Operator & Named and Operator & Named and Operator & Named and Operator \\
 
 Sub-slots & \compactfeatureref{sub-slot} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
-    * & 4-style & 4-style & 4-style & 4-style & 4-style \\
+    * & 4-style & 4-style & 4-style & 4-style \\
 
 \t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak & Weak \\
+    * & Weak & Weak & Weak & Weak \\
 
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong & Strong \\
+    * & Strong & Strong & Strong & Strong \\
 
 Working directory in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Any & Any & Empty & Empty \\
+    Any & Any & Any & Empty & Empty \\
 
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    * & Conditional & Conditional & Conditional & Conditional & Conditional \\
+    * & Conditional & Conditional & Conditional & Conditional \\
 
 \t{pkg_pretend} & \compactfeatureref{pkg-pretend} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & 6 & 6 & 8 & 8 \\
+    * & 6 & 6 & 8 & 8 \\
 
 \t{src_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{src_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 & 2 \\
+    * & 2 & 2 & 2 & 2 \\
 
 Parallel tests & \compactfeatureref{parallel-tests} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{src_install} style & \compactfeatureref{src-install} &
-    * & 4 & 6 & 6 & 6 & 6 \\
+    * & 6 & 6 & 6 & 6 \\
 
 \t{pkg_info} & \compactfeatureref{pkg-info} &
-    * & Both & Both & Both & Both & Both \\
+    * & Both & Both & Both & Both \\
 
 \t{default_} phase functions & \compactfeatureref{default-phase-funcs} &
     * &
@@ -152,129 +149,126 @@ Parallel tests & \compactfeatureref{parallel-tests} &
         \t{src_compile}, \t{src_test}, \t{src_install} &
     \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
         \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
     \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
         \t{src_compile}, \t{src_test}, \t{src_install} \\
 
 Accumulate \t{RESTRICT} etc. & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{AA} & \compactfeatureref{aa} &
-    * & No & No & No & No & No \\
+    * & No & No & No & No \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 \t{KV} & \compactfeatureref{kv} &
-    * & No & No & No & No & No \\
+    * & No & No & No & No \\
 
 \t{EBUILD_PHASE_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{MERGE_TYPE} & \compactfeatureref{merge-type} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Yes & Yes & Yes & Yes \\
+    Undefined & Yes & Yes & Yes & Yes \\
 
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{REPLACING_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{REPLACED_BY_VERSION} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & Any & Any & 2.7 & 2.7 & 2.7 \\
+    Any & Any & 2.7 & 2.7 & 2.7 \\
 
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 Most utilities die & \compactfeatureref{die-on-failure} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-    * & Yes & Yes & Function / external & Function / external & Function / external \\
+    * & Yes & Function / external & Function / external & Function / external \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned & Banned \\
+    * & Banned & Banned & Banned & Banned \\
 
 \t{dosed} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned & Banned \\
+    * & Banned & Banned & Banned & Banned \\
 
 \t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned & Banned \\
+    Yes & Banned & Banned & Banned & Banned \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
-    \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
+    * & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} &
+    \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{eapply} & \compactfeatureref{eapply} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{eapply_user} & \compactfeatureref{eapply-user} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{econf} arguments & \compactfeatureref{econf-options} &
     * &
-    disable dependency tracking, disable silent rules &
     disable dependency tracking, disable silent rules, docdir, htmldir &
     disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot &
     disable dependency tracking, disable silent rules, disable static,
@@ -283,94 +277,94 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
     datarootdir, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{doheader} & \compactfeatureref{doheader} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{doins} handles symlinks & \compactfeatureref{doins} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No \\
 
 Controllable compression & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{docompress} & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{usex} & \compactfeatureref{usex} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{in_iuse} & \compactfeatureref{in-iuse} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No \\
 
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes \\
 
 \end{longtable}
 \end{landscape}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-14  7:29 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-14  7:29 UTC (permalink / raw
  To: gentoo-commits

commit:     a332194c099b2b367bf1d78b3aeee43c984cfb68
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  3 16:32:47 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Feb 14 07:29:28 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=a332194c

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 commands.tex          |   4 +-
 dependencies.tex      |  26 +++---
 eapi-differences.tex  | 231 +++++++++++++++++++++++++++-----------------------
 eapis.tex             |   4 +-
 ebuild-env-vars.tex   |  26 +++---
 ebuild-format.tex     |   4 +-
 ebuild-functions.tex  |  46 +++++-----
 ebuild-vars.tex       |  22 ++---
 eclasses.tex          |   4 +-
 merge.tex             |   6 +-
 pkg-mgr-commands.tex  | 100 +++++++++++-----------
 pms.tex               |   4 +-
 profile-variables.tex |   8 +-
 profiles.tex          |  12 +--
 tree-layout.tex       |   8 +-
 15 files changed, 260 insertions(+), 245 deletions(-)

diff --git a/commands.tex b/commands.tex
index d0ad87d..c6f4f36 100644
--- a/commands.tex
+++ b/commands.tex
@@ -33,7 +33,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
     \begin{tabular}{lll}
@@ -44,7 +44,7 @@ The following commands must always be available in the ebuild environment:
       \midrule
       0, 1, 2, 3, 4     & Undefined & Any \\
       5, 6              & Yes       & Any \\
-      7, 8              & Yes       & 2.7 \\
+      7, 8, 9           & Yes       & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index f14a08c..de6e752 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,7 @@ with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in \
 \t{pkg_postinst}. Ebuilds may also call them in \t{pkg_prerm} and \t{pkg_postrm} but must not rely
 on them being available.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting additional dependency types}
     \label{tab:depend-table}
     \begin{tabular}{lll}
@@ -99,7 +99,7 @@ on them being available.
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  \\
       7                   & Yes & No  \\
-      8                   & Yes & Yes \\
+      8, 9                & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -155,7 +155,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
     \label{tab:at-most-one-of-table}
     \begin{tabular}{ll}
@@ -164,7 +164,7 @@ In particular, note that whitespace is not optional.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -204,7 +204,7 @@ In an exactly-one-of group, exactly one immediate child element must be matched.
 In EAPIs specified in table~\ref{tab:empty-dep-groups}, an empty exactly-one-of group counts as
 being matched.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
     \label{tab:empty-dep-groups}
     \begin{tabular}{ll}
@@ -214,7 +214,7 @@ being matched.
         are matched?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes \\
-      7, 8                & No  \\
+      7, 8, 9             & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -250,7 +250,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
     \label{tab:slot-deps-table}
     \begin{tabular}{lll}
@@ -261,12 +261,12 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0                 & No                 & No  \\
       1, 2, 3, 4        & Named only         & No  \\
-      5, 6, 7, 8        & Named and operator & Yes \\
+      5, 6, 7, 8, 9     & Named and operator & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
     \label{tab:use-deps-table}
     \begin{tabular}{ll}
@@ -276,7 +276,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0, 1              & No      \\
       2, 3              & 2-style \\
-      4, 5, 6, 7, 8     & 4-style \\
+      4, 5, 6, 7, 8, 9  & 4-style \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -310,7 +310,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Exclamation mark strengths for EAPIs}
     \label{tab:bang-strength-table}
     \begin{tabular}{lll}
@@ -319,8 +319,8 @@ described in table~\ref{tab:bang-strength-table}.
       \multicolumn{1}{c}{\textbf{\t{!}}} &
       \multicolumn{1}{c}{\textbf{\t{!!}}} \\
       \midrule
-      0, 1                & Unspecified & Forbidden \\
-      2, 3, 4, 5, 6, 7, 8 & Weak        & Strong    \\
+      0, 1                   & Unspecified & Forbidden \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Weak        & Strong    \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 900f415..c75404b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -6,34 +6,36 @@ below; entries marked with an asterisk differ between these EAPIs. See the 2012-
 of this document for a complete table of previous EAPIs.}
 % 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
+\multicolumn{6}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{0, 1, 2, 3, 4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{8} &
+\multicolumn{1}{c}{9} \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
+\multicolumn{6}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{0, 1, 2, 3, 4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{8} &
+\multicolumn{1}{c}{9} \\
 \midrule
 \endhead
 \midrule
@@ -42,104 +44,105 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & Optional & Optional & No & No \\
+    Optional & Optional & Optional & No & No & No \\
 
 Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\
+    3.2 & 3.2 & 4.2 & 4.2 & 5.0 & 5.0 \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{REQUIRED_USE} & \compactfeatureref{required-use} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{PROPERTIES} & \compactfeatureref{properties} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    * & No & No & No & No \\
+    * & No & No & No & No & No \\
 
 \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named and Operator & Named and Operator & Named and Operator & Named and Operator \\
+    * & Named and Operator & Named and Operator & Named and Operator & Named and Operator &
+    Named and Operator \\
 
 Sub-slots & \compactfeatureref{sub-slot} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
-    * & 4-style & 4-style & 4-style & 4-style \\
+    * & 4-style & 4-style & 4-style & 4-style & 4-style \\
 
 \t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak \\
+    * & Weak & Weak & Weak & Weak & Weak \\
 
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong \\
+    * & Strong & Strong & Strong & Strong & Strong \\
 
 Working directory in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Any & Any & Empty \\
+    Any & Any & Any & Any & Empty & Empty \\
 
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    * & Conditional & Conditional & Conditional & Conditional \\
+    * & Conditional & Conditional & Conditional & Conditional & Conditional \\
 
 \t{pkg_pretend} & \compactfeatureref{pkg-pretend} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & 6 & 6 & 8 \\
+    * & no-op & 6 & 6 & 8 & 8 \\
 
 \t{src_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 \\
+    * & 2 & 2 & 2 & 2 & 2 \\
 
 Parallel tests & \compactfeatureref{parallel-tests} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src_install} style & \compactfeatureref{src-install} &
-    * & 4 & 6 & 6 & 6 \\
+    * & 4 & 6 & 6 & 6 & 6 \\
 
 \t{pkg_info} & \compactfeatureref{pkg-info} &
-    * & Both & Both & Both & Both \\
+    * & Both & Both & Both & Both & Both \\
 
 \t{default_} phase functions & \compactfeatureref{default-phase-funcs} &
     * &
@@ -149,123 +152,125 @@ Parallel tests & \compactfeatureref{parallel-tests} &
         \t{src_compile}, \t{src_test}, \t{src_install} &
     \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
         \t{src_compile}, \t{src_test}, \t{src_install} &
+    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
+        \t{src_compile}, \t{src_test}, \t{src_install} &
     \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
         \t{src_compile}, \t{src_test}, \t{src_install} \\
 
 Accumulate \t{RESTRICT} etc. & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{AA} & \compactfeatureref{aa} &
-    * & No & No & No & No \\
+    * & No & No & No & No & No \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 \t{KV} & \compactfeatureref{kv} &
-    * & No & No & No & No \\
+    * & No & No & No & No & No \\
 
 \t{EBUILD_PHASE_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{MERGE_TYPE} & \compactfeatureref{merge-type} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Yes & Yes & Yes \\
+    Undefined & Undefined & Yes & Yes & Yes & Yes \\
 
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{REPLACING_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{REPLACED_BY_VERSION} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & Any & Any & 2.7 & 2.7 \\
+    Any & Any & Any & 2.7 & 2.7 & 2.7 \\
 
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Yes & Yes & Yes & Yes \\
+    Undefined & Yes & Yes & Yes & Yes & Yes \\
 
 Most utilities die & \compactfeatureref{die-on-failure} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-    * & Yes & Yes & Function / external & Function / external \\
+    * & Yes & Yes & Function / external & Function / external & Function / external \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
+    * & Banned & Banned & Banned & Banned & Banned \\
 
 \t{dosed} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
+    * & Banned & Banned & Banned & Banned & Banned \\
 
 \t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned & Banned \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Yes & Yes & Banned & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Yes & Yes & Banned & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Yes & Yes & Banned & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
     None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
-    \t{-b}, \t{-d}, \t{-r} \\
+    \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{eapply} & \compactfeatureref{eapply} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{eapply_user} & \compactfeatureref{eapply-user} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{econf} arguments & \compactfeatureref{econf-options} &
     * &
@@ -273,97 +278,99 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
     disable dependency tracking, disable silent rules, docdir, htmldir &
     disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot &
     disable dependency tracking, disable silent rules, disable static,
+    datarootdir, docdir, htmldir, with sysroot &
+    disable dependency tracking, disable silent rules, disable static,
     datarootdir, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{doheader} & \compactfeatureref{doheader} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{doins} handles symlinks & \compactfeatureref{doins} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & Yes & No & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & Yes & No & No \\
 
 Controllable compression & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{docompress} & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{usex} & \compactfeatureref{usex} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{in_iuse} & \compactfeatureref{in-iuse} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & Yes & No & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & Yes & No & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & Yes & No & No \\
 
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \end{longtable}
 \end{landscape}
@@ -545,7 +552,15 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, \featureref{unpack-extensions}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\section{EAPI 9}
+
+EAPI 9 is EAPI 8 with the following changes:
+
+\begin{compactitem}
+\item None
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{9}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 

diff --git a/eapis.tex b/eapis.tex
index a6c8109..fd0420c 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -17,8 +17,8 @@ EAPIs are also used for profile directories, as described in section~\ref{sec:pr
 
 \section{Defined EAPIs}
 
-\ChangeWhenAddingAnEAPI{8}
-This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', and~`8'.
+\ChangeWhenAddingAnEAPI{9}
+This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', `8', and~`9'.
 EAPI~`0' is the `original' base EAPI\@. Each of the later EAPIs contains a number of extensions
 to its predecessor.
 

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index a55c366..58df6bd 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -263,7 +263,7 @@ variable.
 \end{longtable}
 \end{landscape}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
     \begin{tabular}{lllllll}
@@ -279,12 +279,12 @@ variable.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4                 & Yes & Yes & Yes & No  & No  & No  \\
       5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
     \begin{tabular}{lllllll}
@@ -299,12 +299,12 @@ variable.
       \midrule
       0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
       4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
-      7, 8              & No  & No  & No  & No  & No  & No  \\
+      7, 8, 9           & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
     \begin{tabular}{lllll}
@@ -317,7 +317,7 @@ variable.
       \midrule
       0, 1, 2           & No  & No  & No  & No  \\
       3, 4, 5, 6        & Yes & Yes & Yes & No  \\
-      7, 8              & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -341,7 +341,7 @@ must be unset, for EAPIs listed in table~\ref{tab:profile-env-unset} as supporti
 ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in
 table~\ref{tab:locale-settings}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Locale settings for EAPIs}
     \label{tab:locale-settings}
     \begin{tabular}{ll}
@@ -350,7 +350,7 @@ table~\ref{tab:locale-settings}.
       \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & Undefined \\
-      6, 7, 8           & Yes       \\
+      6, 7, 8, 9        & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -436,7 +436,7 @@ contain at most one value.
 \subsection{Offset-prefix variables}
 \label{sec:offset-vars}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix}
     \label{tab:offset-support-table}
     \begin{tabular}{ll}
@@ -444,8 +444,8 @@ contain at most one value.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports offset-prefix?}}\\
       \midrule
-      0, 1, 2           & No  \\
-      3, 4, 5, 6, 7, 8  & Yes \\
+      0, 1, 2             & No  \\
+      3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -476,7 +476,7 @@ specifies the system root directory, it will consist of a single slash (\t{/}).
 a trailing slash, the package manager guarantees that a trailing slash will never be present.
 If the path specifies the system root directory, it will be empty.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
     \begin{tabular}{lll}
@@ -488,7 +488,7 @@ If the path specifies the system root directory, it will be empty.
       \t{D}, \t{ED} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & always & always \\
-      7, 8                & never  & never  \\
+      7, 8, 9             & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 25ba28e..84d27b7 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -18,7 +18,7 @@ certain variables and functions (see chapters~\ref{ch:ebuild-vars} and~\ref{ch:e
 for specific information), and must not call any external programs, write anything to standard
 output or standard error, or modify the state of the system in any way.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Bash version and options}
     \label{tab:bash-version}
     \begin{tabular}{lll}
@@ -29,7 +29,7 @@ output or standard error, or modify the state of the system in any way.
       \midrule
       0, 1, 2, 3, 4, 5  & 3.2 & No  \\
       6, 7              & 4.2 & Yes \\
-      8                 & 5.0 & Yes \\
+      8, 9              & 5.0 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 0c745c3..c878439 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -46,7 +46,7 @@ fallback to \t{WORKDIR} is used:
     executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Initial working directory in \t{pkg_*} phase functions for EAPIs}
     \label{tab:function-dirs}
     \begin{tabular}{ll}
@@ -55,12 +55,12 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Initial working directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
-      8                       & Empty \\
+      8, 9                    & Empty \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
     \label{tab:s-fallback-table}
     \begin{tabular}{ll}
@@ -69,7 +69,7 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Fallback to \t{WORKDIR} permitted?}} \\
       \midrule
       0, 1, 2, 3        & Always            \\
-      4, 5, 6, 7, 8     & Conditional error \\
+      4, 5, 6, 7, 8, 9  & Conditional error \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -91,7 +91,7 @@ before the next phase is executed.
 
 \t{pkg_pretend} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_pretend}}
     \label{tab:pkg-pretend-table}
     \begin{tabular}{ll}
@@ -100,7 +100,7 @@ before the next phase is executed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_pretend}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -149,7 +149,7 @@ listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, respectively
 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_prepare} support and behaviour for EAPIs}
     \label{tab:src-prepare-table}
     \begin{tabular}{lll}
@@ -161,7 +161,7 @@ the \t{src_prepare} function is a no-op.
       0, 1              & No  & Not applicable \\
       2, 3, 4, 5        & Yes & no-op          \\
       6, 7              & Yes & 6              \\
-      8                 & Yes & 8              \\
+      8, 9              & Yes & 8              \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -206,7 +206,7 @@ The \t{src_configure} function configures the package's build environment. The d
 implementation used when the ebuild lacks the \t{src_configure} function shall behave as in
 listing~\ref{lst:src-configure-2}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{src_configure}}
     \label{tab:src-configure-table}
     \begin{tabular}{ll}
@@ -214,8 +214,8 @@ listing~\ref{lst:src-configure-2}.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{src_configure}?}} \\
       \midrule
-      0, 1                & No  \\
-      2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0, 1                   & No  \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -244,7 +244,7 @@ implementation used when the ebuild lacks the \t{src_prepare} function shall beh
 listing~\ref{lst:src-compile-0}, listing~\ref{lst:src-compile-1} or listing~\ref{lst:src-compile-2},
 respectively.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_compile} behaviour for EAPIs}
     \label{tab:src-compile-table}
     \begin{tabular}{ll}
@@ -252,9 +252,9 @@ respectively.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Format}} \\
       \midrule
-      0                   & 0 \\
-      1                   & 1 \\
-      2, 3, 4, 5, 6, 7, 8 & 2 \\
+      0                      & 0 \\
+      1                      & 1 \\
+      2, 3, 4, 5, 6, 7, 8, 9 & 2 \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -317,7 +317,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_test} behaviour for EAPIs}
     \label{tab:src-test-table}
     \begin{tabular}{ll}
@@ -326,7 +326,7 @@ be disabled by user too, using a PM-specific mechanism.
       \multicolumn{1}{c}{\textbf{Supports parallel tests?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -346,7 +346,7 @@ listing~\ref{lst:src-install-4} or listing~\ref{lst:src-install-6}, respectively
 For other EAPIs, the default implementation used when the ebuild lacks the \t{src_install} function
 is a no-op.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_install} behaviour for EAPIs}
     \label{tab:src-install-table}
     \begin{tabular}{ll}
@@ -356,7 +356,7 @@ is a no-op.
       \midrule
       0, 1, 2, 3        & no-op \\
       4, 5              & 4     \\
-      6, 7, 8           & 6     \\
+      6, 7, 8, 9        & 6     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -449,7 +449,7 @@ that dependencies may not be installed.
 
 \t{pkg_info} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_info} on non-installed packages}
     \label{tab:pkg-info-table}
     \begin{tabular}{ll}
@@ -458,7 +458,7 @@ that dependencies may not be installed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_info} on non-installed packages?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -480,7 +480,7 @@ named \t{default_}(phase) that behaves as the default implementation for that EA
 when executing any ebuild phase listed in the table. Ebuilds must not call these functions except
 when in the phase in question.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{default_} phase functions}
     \label{tab:default-phase-function-table}
     \begin{tabular}{l P{26em}}
@@ -491,7 +491,7 @@ when in the phase in question.
       0, 1              & None \\
       2, 3              & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test} \\
-      4, 5, 6, 7, 8     & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
+      4, 5, 6, 7, 8, 9  & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test}, \t{src_install} \\
       \bottomrule
     \end{tabular}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index d07cca4..bbd4930 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -89,7 +89,7 @@ Ebuilds may define any of the following variables:
 \item[IDEPEND] See chapter~\ref{ch:dependencies}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{IUSE} defaults}
     \label{tab:iuse-defaults-table}
     \begin{tabular}{ll}
@@ -97,13 +97,13 @@ Ebuilds may define any of the following variables:
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{IUSE} defaults?}} \\
       \midrule
-      0                      & No  \\
-      1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0                         & No  \\
+      1, 2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
     \begin{tabular}{lll}
@@ -113,7 +113,7 @@ Ebuilds may define any of the following variables:
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6, 7, 8     & Yes        & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -176,7 +176,7 @@ selective URI restrictions, the URI protocol can be prefixed by an additional \t
 restriction for the URI (but not the implied mirror restriction). If the ebuild is fetch or mirror
 restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for the URI.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows and selective URI restrictions}
     \label{tab:uri-arrows-table}
     \begin{tabular}{lll}
@@ -187,7 +187,7 @@ restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for
       \midrule
       0, 1              & No  & No  \\
       2, 3, 4, 5, 6, 7  & Yes & No  \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -272,7 +272,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} default}
     \label{tab:rdepend-depend-table}
     \begin{tabular}{ll}
@@ -281,7 +281,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
       \multicolumn{1}{c}{\textbf{\t{RDEPEND=DEPEND}?}} \\
       \midrule
       0, 1, 2, 3        & Yes \\
-      4, 5, 6, 7, 8     & No  \\
+      4, 5, 6, 7, 8, 9  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -316,7 +316,7 @@ not be exported to the ebuild environment:
 \note{Thus, by extension of section~\ref{sec:metadata-invariance}, phase functions must not be
 defined based upon any variant condition.}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{DEFINED_PHASES}}
     \label{tab:defined-phases-table}
     \begin{tabular}{ll}
@@ -325,7 +325,7 @@ defined based upon any variant condition.}
       \multicolumn{1}{c}{\textbf{Supports \t{DEFINED_PHASES}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally \\
-      4, 5, 6, 7, 8     & Yes        \\
+      4, 5, 6, 7, 8, 9  & Yes        \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eclasses.tex b/eclasses.tex
index e23dcd8..3f8f653 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -42,7 +42,7 @@ the previous one is loaded. For EAPIs listed in table~\ref{tab:accumulate-vars}
 value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is done after
 the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across eclasses}
     \label{tab:accumulate-vars}
     \begin{tabular}{lll}
@@ -52,7 +52,7 @@ the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
       \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
-      8                       & Yes & Yes \\
+      8, 9                    & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/merge.tex b/merge.tex
index 0e6738d..5ff40ff 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Preservation of file modification times (mtimes)}
     \label{tab:mtime-preserve}
     \begin{tabular}{ll}
@@ -94,8 +94,8 @@ is undefined.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\
       \midrule
-      0, 1, 2           & Undefined \\
-      3, 4, 5, 6, 7, 8  & Yes       \\
+      0, 1, 2             & Undefined \\
+      3, 4, 5, 6, 7, 8, 9 & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7f57539..dae13d4 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -32,7 +32,7 @@ The following commands affect this behaviour:
     option and in EAPIs supporting this option, see table~\ref{tab:die-properties}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
     \begin{tabular}{llll}
@@ -44,7 +44,7 @@ The following commands affect this behaviour:
       \midrule
       0, 1, 2, 3        & Non-zero exit & No  & n/a \\
       4, 5, 6           & Aborts        & Yes & No  \\
-      7, 8              & Aborts        & Yes & Yes \\
+      7, 8, 9           & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -55,7 +55,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{8}
+\ChangeWhenAddingAnEAPI{9}  % two places
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
     \begin{tabular}{lllllll}
@@ -73,7 +73,7 @@ called, the package manager must abort the build process indicating an error.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4, 5              & Yes & Yes & No  & No  & No  & No  \\
       6                 & Yes & Yes & Yes & No  & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \midrule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{6}{c}{\textbf{Command banned?}} \\
@@ -83,7 +83,7 @@ called, the package manager must abort the build process indicating an error.
       \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-      8                       & Yes & Yes & Yes & & & \\
+      8, 9                    & Yes & Yes & Yes & & & \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -121,7 +121,7 @@ are given, \t{-r} is assumed.
     otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Package manager query command options supported by EAPIs}
     \label{tab:pm-query-options}
     \begin{tabular}{lllll}
@@ -134,7 +134,7 @@ are given, \t{-r} is assumed.
       \midrule
       0, 1, 2, 3, 4     & No  & No  & No  & No  \\
       5, 6              & Yes & No  & No  & No  \\
-      7, 8              & No  & Yes & Yes & Yes \\
+      7, 8, 9           & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -171,7 +171,7 @@ output, using stdout as an output facility is forbidden.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
     \begin{tabular}{lll}
@@ -181,7 +181,7 @@ output, using stdout as an output facility is forbidden.
       \multicolumn{1}{c}{\textbf{Supports \t{eqawarn}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes & No  \\
-      7, 8                & No  & Yes \\
+      7, 8, 9             & No  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -203,7 +203,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
     \label{tab:die-properties}
     \begin{tabular}{lll}
@@ -216,7 +216,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
       6                 & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -280,7 +280,7 @@ Ebuilds must not run any of these commands once the current phase function has r
     subsequent calls, the command will do nothing and return~0.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Patch commands for EAPIs}
     \label{tab:patch-commands}
     \begin{tabular}{lll}
@@ -290,7 +290,7 @@ Ebuilds must not run any of these commands once the current phase function has r
       \multicolumn{1}{c}{\textbf{\t{eapply_user}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -345,7 +345,7 @@ commands once the current phase function has returned.
         \t{-{}-enable-static} occurs in the output of \t{configure -{}-help}.
     \end{itemize}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
         \begin{tabular}{lllll}
@@ -359,7 +359,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
           6                 & No  & Yes & Yes & No  \\
           7                 & No  & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & Yes \\
+          8, 9              & Yes & Yes & Yes & Yes \\
           \midrule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
@@ -369,7 +369,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3        & No  & No  & No  & \\
           4                 & Yes & No  & No  & \\
           5, 6, 7           & Yes & Yes & No  & \\
-          8                 & Yes & Yes & Yes & \\
+          8, 9              & Yes & Yes & Yes & \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -670,7 +670,7 @@ dosym_relative_path() {
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dodoc -r}}
     \label{tab:dodoc-table}
     \begin{tabular}{ll}
@@ -679,12 +679,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{dodoc -r}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}}
     \label{tab:doheader-table}
     \begin{tabular}{ll}
@@ -693,12 +693,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{doheader} and \t{newheader}?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting symlinks for \t{doins}}
     \label{tab:doins-table}
     \begin{tabular}{ll}
@@ -707,12 +707,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{doins} supports symlinks?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{doman} language support options for EAPIs}
     \label{tab:doman-table}
     \begin{tabular}{lll}
@@ -723,12 +723,12 @@ dosym_relative_path() {
       \midrule
       0, 1              & No  & Not applicable \\
       2, 3              & Yes & No             \\
-      4, 5, 6, 7, 8     & Yes & Yes            \\
+      4, 5, 6, 7, 8, 9  & Yes & Yes            \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting stdin for \t{new*} commands}
     \label{tab:newfoo-stdin-table}
     \begin{tabular}{ll}
@@ -737,12 +737,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{new*} can read from stdin?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{domo} destination path in EAPIs}
     \label{tab:domo-path}
     \begin{tabular}{ll}
@@ -751,12 +751,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Destination path}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
-      7, 8                & \t{/usr/share/locale} \\
+      7, 8, 9             & \t{/usr/share/locale} \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dosym -r}}
     \label{tab:dosym-r}
     \begin{tabular}{ll}
@@ -765,7 +765,7 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative paths?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  \\
-      8                       & Yes \\
+      8, 9                    & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -807,7 +807,7 @@ function has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{insopts} for EAPIs}
     \label{tab:insopts-commands}
     \begin{tabular}{lllll}
@@ -819,12 +819,12 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doheader}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes & Yes & Yes \\
-      8                       & Yes & No  & No  & No  \\
+      8, 9                    & Yes & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{exeopts} for EAPIs}
     \label{tab:exeopts-commands}
     \begin{tabular}{lll}
@@ -834,7 +834,7 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doinitd}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes \\
-      8                       & Yes & No  \\
+      8, 9                    & Yes & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -911,7 +911,7 @@ any of these functions from any other phase.
     supporting \t{dostrip}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands controlling manipulation of files in the staging area in EAPIs}
     \label{tab:staging-area-commands}
     \begin{tabular}{lll}
@@ -922,7 +922,7 @@ any of these functions from any other phase.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6           & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -969,7 +969,7 @@ table~\ref{tab:use-list-strictness}.
     table~\ref{tab:use-list-functions} as supporting \t{in_iuse}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI behaviour for use queries not in \t{IUSE_EFFECTIVE}}
     \label{tab:use-list-strictness}
     \begin{tabular}{ll}
@@ -978,12 +978,12 @@ table~\ref{tab:use-list-strictness}.
       \multicolumn{1}{c}{\textbf{Behaviour}} \\
       \midrule
       0, 1, 2, 3        & Undefined \\
-      4, 5, 6, 7, 8     & Error     \\
+      4, 5, 6, 7, 8, 9  & Error     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for EAPIs}
     \label{tab:use-list-args}
     \begin{tabular}{lll}
@@ -995,12 +995,12 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6, 7        & No  & Yes \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{usex} and \t{in_iuse}}
     \label{tab:use-list-functions}
     \begin{tabular}{lll}
@@ -1011,7 +1011,7 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3, 4     & No  & No  \\
       5                 & Yes & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1096,7 +1096,7 @@ the second, inclusively.
     section~\ref{sec:version-spec}. Comparison is done using algorithm~\ref{alg:version-comparison}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
     \label{tab:version-commands}
     \begin{tabular}{llll}
@@ -1107,7 +1107,7 @@ the second, inclusively.
       \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-      7, 8                & Yes & Yes & Yes \\
+      7, 8, 9             & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1184,7 +1184,7 @@ has returned.
     \featurelabel{unpack-ignore-case} \t{unpack} matches filename extensions in a case-insensitive
     manner, for EAPIs listed such in table~\ref{tab:unpack-behaviour}.
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} behaviour for EAPIs}
         \label{tab:unpack-behaviour}
         \begin{tabular}{lll}
@@ -1194,12 +1194,12 @@ has returned.
           \multicolumn{1}{c}{\textbf{Case-insensitive matching?}} \\
           \midrule
           0, 1, 2, 3, 4, 5  & No  & No  \\
-          6, 7, 8           & Yes & Yes \\
+          6, 7, 8, 9        & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} extensions for EAPIs}
         \label{tab:unpack-extensions-table}
         \begin{tabular}{llllllll}
@@ -1215,7 +1215,7 @@ has returned.
           0, 1, 2           & No  & No  & No  & Yes & Yes & Yes \\
           3, 4, 5           & Yes & Yes & No  & Yes & Yes & Yes \\
           6, 7              & Yes & Yes & Yes & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & No  & No  & No  \\
+          8, 9              & Yes & Yes & Yes & No  & No  & No  \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -1283,7 +1283,7 @@ has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
     \label{tab:misc-commands}
     \begin{tabular}{llll}
@@ -1295,7 +1295,7 @@ has returned.
       \midrule
       0, 1              & No  & No  & No  \\
       2, 3, 4, 5        & Yes & No  & No  \\
-      6, 7, 8           & Yes & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pms.tex b/pms.tex
index 97d6d30..e066c2d 100644
--- a/pms.tex
+++ b/pms.tex
@@ -21,8 +21,8 @@
     pdfkeywords={Gentoo, package manager, specification},
 }
 
-\CurrentEAPIIs{8}
-\ChangeWhenAddingAnEAPI{8}
+\CurrentEAPIIs{9}
+\ChangeWhenAddingAnEAPI{9}
 
 \begin{document}
 \maketitle

diff --git a/profile-variables.tex b/profile-variables.tex
index ba40bf4..0f2dc3c 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -40,7 +40,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs}
     \label{tab:profile-iuse-injection-table}
     \begin{tabular}{ll}
@@ -49,12 +49,12 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined unsetting of variables in EAPIs}
     \label{tab:profile-env-unset}
     \begin{tabular}{ll}
@@ -63,7 +63,7 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports \t{ENV_UNSET}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/profiles.tex b/profiles.tex
index 30da81b..8d8226a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -78,7 +78,7 @@ in that directory, unless their name begins with a dot, will be concatenated in
 filename in the POSIX locale and the result will be processed as if it were a single file.
 Any subdirectories will be ignored.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting directories for profile files}
     \label{tab:profile-file-dirs}
     \begin{tabular}{ll}
@@ -87,7 +87,7 @@ Any subdirectories will be ignored.
       \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -123,7 +123,7 @@ it is actually installed. Because it has severe adverse effects on USE-based and
 dependencies, its use is strongly deprecated and package manager support must be regarded as purely
 optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{package.provided} in profiles}
     \label{tab:package-provided}
     \begin{tabular}{ll}
@@ -132,7 +132,7 @@ optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
       \multicolumn{1}{c}{\textbf{Supports \t{package.provided}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Optionally \\
-      7, 8                & No         \\
+      7, 8, 9             & No         \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -165,7 +165,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile directory support for masking/forcing use flags in stable versions only}
     \label{tab:profile-stablemask}
     \begin{tabular}{ll}
@@ -174,7 +174,7 @@ stable in a package.
       \multicolumn{1}{c}{\textbf{Supports masking/forcing use flags in stable versions?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/tree-layout.tex b/tree-layout.tex
index aa04d3d..b988f6e 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -127,7 +127,7 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
     \label{tab:package-mask-dir}
     \begin{tabular}{ll}
@@ -136,7 +136,7 @@ manager must ignore any files in this directory that it does not recognise.
       \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -233,7 +233,7 @@ Any name that has appeared as the origin of a move must not be reused in the fut
 that has appeared as the origin of a slot move may not be used by packages matching the spec of
 that slot move in the future.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Naming rules for files in \t{updates} directory for EAPIs}
     \label{tab:updates-filenames}
     \begin{tabular}{ll}
@@ -242,7 +242,7 @@ that slot move in the future.
       \multicolumn{1}{c}{\textbf{Files per quarter year?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes \\
-      8                       & No  \\
+      8, 9                    & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-21 19:05 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-21 19:05 UTC (permalink / raw
  To: gentoo-commits

commit:     d74436b4b83e2f80fdc7a5f7e7361a92770bb52e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:57:30 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Feb 21 18:57:30 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=d74436b4

EAPI 9: econf matches configure --help output better

Bug: https://bugs.gentoo.org/815169
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 19f5134..abf775c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -282,6 +282,9 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
     disable dependency tracking, disable silent rules, disable static,
     datarootdir, docdir, htmldir, with sysroot \\
 
+\t{econf} better matching of options & \compactfeatureref{econf-options} &
+    No & No & No & No & Yes \\
+
 \t{dodoc -r} & \compactfeatureref{dodoc} &
     * & Yes & Yes & Yes & Yes \\
 
@@ -559,6 +562,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item \t{econf} matches \t{configure -{}-help} output better, \featureref{econf-options}.
 
 \end{compactitem}
 

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index dae13d4..fb8b1b8 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -345,6 +345,10 @@ commands once the current phase function has returned.
         \t{-{}-enable-static} occurs in the output of \t{configure -{}-help}.
     \end{itemize}
 
+    For EAPIs listed in table~\ref{tab:econf-match-end} as matching the end of the option string,
+    a string in \t{configure -{}-help} output will only match if is is not immediately followed by
+    any of the characters \t{[A-Za-z0-9+_.-]}.
+
     \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
@@ -374,6 +378,20 @@ commands once the current phase function has returned.
         \end{tabular}
     \end{centertable}
 
+    \ChangeWhenAddingAnEAPI{9}
+    \begin{centertable}{EAPIs matching end of option string in \t{configure -{}-help} output}
+        \label{tab:econf-match-end}
+        \begin{tabular}{ll}
+          \toprule
+          \multicolumn{1}{c}{\textbf{EAPI}} &
+          \multicolumn{1}{c}{\textbf{Matches end of option string?}} \\
+          \midrule
+          0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+          9                         & Yes \\
+          \bottomrule
+        \end{tabular}
+    \end{centertable}
+
     Note that the \t{\$\{EPREFIX\}} component represents the same offset-prefix as described in
     table~\ref{tab:defined-vars}. It facilitates offset-prefix installations which is supported by
     EAPIs listed in table~\ref{tab:offset-env-vars-table}. When no offset-prefix installation is in


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-21 19:05 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-21 19:05 UTC (permalink / raw
  To: gentoo-commits

commit:     04953d4d22cc526d1d375a0f51cdef44c6dcde7e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:32:43 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Feb 21 18:32:43 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=04953d4d

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 +++++
 profiles.tex         | 23 +++++++++++++++++++++--
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index bb84b85..19f5134 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -50,6 +50,9 @@ Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
 Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
     No & No & No & No & Yes \\
 
+Default EAPI for profiles & \compactfeatureref{profile-eapi-default} &
+    0 & 0 & 0 & 0 & Top-level \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & No & Yes & Yes & Yes \\
 
@@ -555,6 +558,8 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
+\item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 6fa8a1c..de59f0a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -50,8 +50,27 @@ this file must not contain comments or blank lines.
 A profile directory may contain an \t{eapi} file. This file, if it exists, must contain a single
 line with the name of an EAPI\@. This specifies the EAPI to use when handling the directory in
 question; a package manager must not attempt to use any profile using a directory which requires an
-EAPI it does not support. If no \t{eapi} file is present, EAPI 0 shall be used. The EAPI is neither
-inherited via the \t{parent} file nor in subdirectories.
+EAPI it does not support.
+
+\featurelabel{profile-eapi-default} If no \t{eapi} file is present, the default depends on the EAPI
+of the top-level profiles directory (see section~\ref{sec:profiles-dir}). That EAPI shall be used
+if table~\ref{tab:profile-eapi-default} lists it as ``top-level''. Otherwise, EAPI 0 shall be used.
+
+The EAPI is neither inherited via the \t{parent} file nor in subdirectories.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Default EAPI for profiles}
+    \label{tab:profile-eapi-default}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Default EAPI?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & 0         \\
+      9                         & Top-level \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{deprecated}
 If a profile contains a file named \t{deprecated}, it is treated as such. The first line of this


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-02-21 19:05 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-02-21 19:05 UTC (permalink / raw
  To: gentoo-commits

commit:     71012f8641c7e0b43ffd71cf04512cdb0e4f48e4
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:30:11 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Feb 21 18:30:11 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=71012f86

EAPI 9 profile parent files can contain comments

Bug: https://bugs.gentoo.org/470094
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 ++++-
 profiles.tex         | 20 +++++++++++++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 893caf3..bb84b85 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -47,6 +47,9 @@ of this document for a complete table of previous EAPIs.}
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
     No & No & No & Yes & Yes \\
 
+Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
+    No & No & No & No & Yes \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & No & Yes & Yes & Yes \\
 
@@ -551,7 +554,7 @@ EAPI 8 is EAPI 7 with the following changes:
 EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 8d8226a..6fa8a1c 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -25,7 +25,25 @@ first, left to right, with duplicate parent paths being sourced for every time t
 It is illegal for a profile's parent tree to contain cycles. Package manager behaviour upon
 encountering a cycle is undefined.
 
-This file must not contain comments, blank lines or make use of line continuations.
+This file must not make use of line continuations.
+
+\featurelabel{parent-comments} For EAPIs listed in table~\ref{tab:profile-parent-comments} as
+allowing comments, blank lines and lines beginning with a \t{\#} are discarded. For other EAPIs,
+this file must not contain comments or blank lines.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs allowing comments in \t{parent} file}
+    \label{tab:profile-parent-comments}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Allows comments?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+      9                         & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{The eapi file}
 \label{sec:profile-eapi}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-18 15:53 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-18 15:53 UTC (permalink / raw
  To: gentoo-commits

commit:     8bcf0e2f9b6234e2e752d68df0ef054fd2cc49b1
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 17 19:00:47 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Mar 17 19:00:47 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=8bcf0e2f

ebuild-vars.tex: Clarify which variables can be defined by an eclass

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index d07cca4..e7aab0a 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -43,8 +43,9 @@ All ebuilds must define at least the following variables:
 \section{Optional Ebuild-defined Variables}
 \label{sec:optional-vars}
 
-Ebuilds may define any of the following variables:
-\nobreakpar
+Ebuilds may define any of the following variables. Unless otherwise stated, any of them may be
+defined by an eclass.
+
 \begin{description}
 \item[EAPI] The EAPI\@. See below in section~\ref{sec:eapi}.
 \item[HOMEPAGE] The URI or URIs for a package's homepage, including protocols.
@@ -147,6 +148,8 @@ EAPI, the package manager must make sure that the \t{EAPI} value obtained by sou
 with bash is identical to the EAPI obtained by parsing. The ebuild must be treated as invalid if
 these values are different.
 
+Eclasses must not attempt to modify the \t{EAPI} variable.
+
 \subsection{SRC_URI}
 \label{sec:src-uri-behaviour}
 


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-18 15:53 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-18 15:53 UTC (permalink / raw
  To: gentoo-commits

commit:     c5dca7fe3158fccb49a74054b7ed8f98e73bf243
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 26 21:02:18 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Mar 26 21:02:18 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=c5dca7fe

Replace "root user" by "superuser" throughout

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 ebuild-vars.tex | 2 +-
 merge.tex       | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index e7aab0a..5f3f583 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -256,7 +256,7 @@ The following tokens are permitted inside \t{RESTRICT}:
 \item[strip] No stripping of debug symbols from files to be installed may be performed. In EAPIs
     listed in table~\ref{tab:staging-area-commands} as supporting controllable stripping, this
     behaviour may be altered by the \t{dostrip} command.
-\item[userpriv] The package manager may not drop root privileges when building the package.
+\item[userpriv] The package manager may not drop superuser privileges when building the package.
 \item[test] The \t{src_test} phase must not be run.
 \end{description}
 

diff --git a/merge.tex b/merge.tex
index 0e6738d..6fcfeec 100644
--- a/merge.tex
+++ b/merge.tex
@@ -25,9 +25,9 @@ The owner, group and mode (including set*id and sticky bits) of the directory mu
 except as follows:
 
 \begin{compactitem}
-\item Any directory owned by the user used to perform the build must become owned by the root user.
+\item Any directory owned by the user used to perform the build must become owned by the superuser.
 \item Any directory whose group is the primary group of the user used to perform the build must have
-    its group be that of the root user.
+    its group be that of the superuser.
 \end{compactitem}
 
 On SELinux systems, the SELinux context must also be preserved. Other directory attributes, including
@@ -53,9 +53,9 @@ The owner, group and mode (including set*id and sticky bits) of the file must be
 as follows:
 
 \begin{compactitem}
-\item Any file owned by the user used to perform the build must become owned by the root user.
+\item Any file owned by the user used to perform the build must become owned by the superuser.
 \item Any file whose group is the primary group of the user used to perform the build must have
-    its group be that of the root user.
+    its group be that of the superuser.
 \item The package manager may reduce read and write permissions on executable files that have a
     set*id bit set.
 \end{compactitem}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-18 15:53 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-18 15:53 UTC (permalink / raw
  To: gentoo-commits

commit:     7839a316822eae2fcb534cba697993ca8772b9f9
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 12 10:56:38 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Apr 12 10:56:38 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=7839a316

pkg-mgr-commands.tex: Whitespace

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 pkg-mgr-commands.tex | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index a964859..6df5f32 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -613,7 +613,7 @@ the current phase function has returned.
     \featurelabel{dosym-relative} In EAPIs listed in table~\ref{tab:dosym-r} as supporting creation
     of relative paths, when called with option \t{-r}, the first parameter (the link target) is
     converted from an absolute path to a path relative to the the second parameter (the link name).
-    The  algorithm must return a result identical to the one returned by the function in
+    The algorithm must return a result identical to the one returned by the function in
     listing~\ref{lst:dosym-r}, with \t{realpath} and \t{dirname} from GNU coreutils version~8.32.
     Specifying option \t{-r} together with a relative path as first (target) parameter is an error.
 


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2022-04-07  6:22 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2022-08-18 15:53 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-18 15:53 UTC (permalink / raw
  To: gentoo-commits

commit:     bcc0be554b5fc3300a0db6a3d3d7765c262aaa43
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 26 10:06:01 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Mar 26 10:06:01 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=bcc0be55

pkg-mgr-commands.tex: Specify file ownership for dobin more accurately

In a non-prefix installation, files are to be owned by UID 0 / GID 0.
This is also what is implemented in Portage's dobin command.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 pkg-mgr-commands.tex | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7f57539..a964859 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -460,7 +460,7 @@ the current phase function has returned.
 \item[dobin] Installs the given files into \t{DESTTREE/bin}, where \t{DESTTREE} defaults to
     \t{/usr}. Gives the files mode \t{0755} and transfers file ownership to the superuser or its
     equivalent on the system or installation at hand. In a non-offset-prefix installation this
-    ownership is \t{root:root}, while in an offset-prefix aware installation this may be e.\,g.\
+    ownership is \t{0:0}, while in an offset-prefix aware installation this may be e.\,g.\
     \t{joe:users}. Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
 
 \item[doconfd] Installs the given config files into \t{/etc/conf.d/}, by default with file mode


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-18 15:53 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-18 15:53 UTC (permalink / raw
  To: gentoo-commits

commit:     2eacc31d620a70f29090e2de227223eb5a05157c
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:57:30 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Aug 18 15:51:55 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=2eacc31d

EAPI 9: econf matches configure --help output better

Bug: https://bugs.gentoo.org/815169
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index d292bc7..b38ea5d 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -175,6 +175,9 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
     disable dependency tracking, disable silent rules, disable static,
     datarootdir, docdir, htmldir, with sysroot \\
 
+\t{econf} better matching of options & \compactfeatureref{econf-options} &
+    No & No & No & No & Yes \\
+
 \t{domo} destination path & \compactfeatureref{domo-path} &
     \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
@@ -413,6 +416,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item \t{econf} matches \t{configure -{}-help} output better, \featureref{econf-options}.
 
 \end{compactitem}
 

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7d2511f..e532026 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -345,6 +345,10 @@ commands once the current phase function has returned.
         \t{-{}-enable-static} occurs in the output of \t{configure -{}-help}.
     \end{itemize}
 
+    For EAPIs listed in table~\ref{tab:econf-match-end} as matching the end of the option string,
+    a string in \t{configure -{}-help} output will only match if is is not immediately followed by
+    any of the characters \t{[A-Za-z0-9+_.-]}.
+
     \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
@@ -374,6 +378,20 @@ commands once the current phase function has returned.
         \end{tabular}
     \end{centertable}
 
+    \ChangeWhenAddingAnEAPI{9}
+    \begin{centertable}{EAPIs matching end of option string in \t{configure -{}-help} output}
+        \label{tab:econf-match-end}
+        \begin{tabular}{ll}
+          \toprule
+          \multicolumn{1}{c}{\textbf{EAPI}} &
+          \multicolumn{1}{c}{\textbf{Matches end of option string?}} \\
+          \midrule
+          0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+          9                         & Yes \\
+          \bottomrule
+        \end{tabular}
+    \end{centertable}
+
     Note that the \t{\$\{EPREFIX\}} component represents the same offset-prefix as described in
     table~\ref{tab:defined-vars}. It facilitates offset-prefix installations which is supported by
     EAPIs listed in table~\ref{tab:offset-env-vars-table}. When no offset-prefix installation is in


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-18 15:53 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-18 15:53 UTC (permalink / raw
  To: gentoo-commits

commit:     f2da80f2cbccf68af327169743fe6c61911e7806
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  3 16:32:47 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Aug 18 15:51:53 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f2da80f2

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 commands.tex          |   4 +-
 dependencies.tex      |  26 +++---
 eapi-differences.tex  | 231 +++++++++++++++++++++++++++-----------------------
 eapis.tex             |   4 +-
 ebuild-env-vars.tex   |  26 +++---
 ebuild-format.tex     |   4 +-
 ebuild-functions.tex  |  46 +++++-----
 ebuild-vars.tex       |  22 ++---
 eclasses.tex          |   4 +-
 merge.tex             |   6 +-
 pkg-mgr-commands.tex  | 100 +++++++++++-----------
 pms.tex               |   4 +-
 profile-variables.tex |   8 +-
 profiles.tex          |  12 +--
 tree-layout.tex       |   8 +-
 15 files changed, 260 insertions(+), 245 deletions(-)

diff --git a/commands.tex b/commands.tex
index d0ad87d..c6f4f36 100644
--- a/commands.tex
+++ b/commands.tex
@@ -33,7 +33,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
     \begin{tabular}{lll}
@@ -44,7 +44,7 @@ The following commands must always be available in the ebuild environment:
       \midrule
       0, 1, 2, 3, 4     & Undefined & Any \\
       5, 6              & Yes       & Any \\
-      7, 8              & Yes       & 2.7 \\
+      7, 8, 9           & Yes       & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index f14a08c..de6e752 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,7 @@ with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in \
 \t{pkg_postinst}. Ebuilds may also call them in \t{pkg_prerm} and \t{pkg_postrm} but must not rely
 on them being available.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting additional dependency types}
     \label{tab:depend-table}
     \begin{tabular}{lll}
@@ -99,7 +99,7 @@ on them being available.
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  \\
       7                   & Yes & No  \\
-      8                   & Yes & Yes \\
+      8, 9                & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -155,7 +155,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
     \label{tab:at-most-one-of-table}
     \begin{tabular}{ll}
@@ -164,7 +164,7 @@ In particular, note that whitespace is not optional.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -204,7 +204,7 @@ In an exactly-one-of group, exactly one immediate child element must be matched.
 In EAPIs specified in table~\ref{tab:empty-dep-groups}, an empty exactly-one-of group counts as
 being matched.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
     \label{tab:empty-dep-groups}
     \begin{tabular}{ll}
@@ -214,7 +214,7 @@ being matched.
         are matched?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes \\
-      7, 8                & No  \\
+      7, 8, 9             & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -250,7 +250,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
     \label{tab:slot-deps-table}
     \begin{tabular}{lll}
@@ -261,12 +261,12 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0                 & No                 & No  \\
       1, 2, 3, 4        & Named only         & No  \\
-      5, 6, 7, 8        & Named and operator & Yes \\
+      5, 6, 7, 8, 9     & Named and operator & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
     \label{tab:use-deps-table}
     \begin{tabular}{ll}
@@ -276,7 +276,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0, 1              & No      \\
       2, 3              & 2-style \\
-      4, 5, 6, 7, 8     & 4-style \\
+      4, 5, 6, 7, 8, 9  & 4-style \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -310,7 +310,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Exclamation mark strengths for EAPIs}
     \label{tab:bang-strength-table}
     \begin{tabular}{lll}
@@ -319,8 +319,8 @@ described in table~\ref{tab:bang-strength-table}.
       \multicolumn{1}{c}{\textbf{\t{!}}} &
       \multicolumn{1}{c}{\textbf{\t{!!}}} \\
       \midrule
-      0, 1                & Unspecified & Forbidden \\
-      2, 3, 4, 5, 6, 7, 8 & Weak        & Strong    \\
+      0, 1                   & Unspecified & Forbidden \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Weak        & Strong    \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 900f415..c75404b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -6,34 +6,36 @@ below; entries marked with an asterisk differ between these EAPIs. See the 2012-
 of this document for a complete table of previous EAPIs.}
 % 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
+\multicolumn{6}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{0, 1, 2, 3, 4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{8} &
+\multicolumn{1}{c}{9} \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
+\multicolumn{6}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{0, 1, 2, 3, 4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{8} &
+\multicolumn{1}{c}{9} \\
 \midrule
 \endhead
 \midrule
@@ -42,104 +44,105 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & Optional & Optional & No & No \\
+    Optional & Optional & Optional & No & No & No \\
 
 Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\
+    3.2 & 3.2 & 4.2 & 4.2 & 5.0 & 5.0 \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{REQUIRED_USE} & \compactfeatureref{required-use} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{PROPERTIES} & \compactfeatureref{properties} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    * & No & No & No & No \\
+    * & No & No & No & No & No \\
 
 \t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named and Operator & Named and Operator & Named and Operator & Named and Operator \\
+    * & Named and Operator & Named and Operator & Named and Operator & Named and Operator &
+    Named and Operator \\
 
 Sub-slots & \compactfeatureref{sub-slot} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
-    * & 4-style & 4-style & 4-style & 4-style \\
+    * & 4-style & 4-style & 4-style & 4-style & 4-style \\
 
 \t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak \\
+    * & Weak & Weak & Weak & Weak & Weak \\
 
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong \\
+    * & Strong & Strong & Strong & Strong & Strong \\
 
 Working directory in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Any & Any & Empty \\
+    Any & Any & Any & Any & Empty & Empty \\
 
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    * & Conditional & Conditional & Conditional & Conditional \\
+    * & Conditional & Conditional & Conditional & Conditional & Conditional \\
 
 \t{pkg_pretend} & \compactfeatureref{pkg-pretend} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & 6 & 6 & 8 \\
+    * & no-op & 6 & 6 & 8 & 8 \\
 
 \t{src_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 \\
+    * & 2 & 2 & 2 & 2 & 2 \\
 
 Parallel tests & \compactfeatureref{parallel-tests} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{src_install} style & \compactfeatureref{src-install} &
-    * & 4 & 6 & 6 & 6 \\
+    * & 4 & 6 & 6 & 6 & 6 \\
 
 \t{pkg_info} & \compactfeatureref{pkg-info} &
-    * & Both & Both & Both & Both \\
+    * & Both & Both & Both & Both & Both \\
 
 \t{default_} phase functions & \compactfeatureref{default-phase-funcs} &
     * &
@@ -149,123 +152,125 @@ Parallel tests & \compactfeatureref{parallel-tests} &
         \t{src_compile}, \t{src_test}, \t{src_install} &
     \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
         \t{src_compile}, \t{src_test}, \t{src_install} &
+    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
+        \t{src_compile}, \t{src_test}, \t{src_install} &
     \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
         \t{src_compile}, \t{src_test}, \t{src_install} \\
 
 Accumulate \t{RESTRICT} etc. & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{AA} & \compactfeatureref{aa} &
-    * & No & No & No & No \\
+    * & No & No & No & No & No \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 \t{KV} & \compactfeatureref{kv} &
-    * & No & No & No & No \\
+    * & No & No & No & No & No \\
 
 \t{EBUILD_PHASE_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{MERGE_TYPE} & \compactfeatureref{merge-type} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Yes & Yes & Yes \\
+    Undefined & Undefined & Yes & Yes & Yes & Yes \\
 
 Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{REPLACING_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{REPLACED_BY_VERSION} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & Any & Any & 2.7 & 2.7 \\
+    Any & Any & Any & 2.7 & 2.7 & 2.7 \\
 
 \t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Yes & Yes & Yes & Yes \\
+    Undefined & Yes & Yes & Yes & Yes & Yes \\
 
 Most utilities die & \compactfeatureref{die-on-failure} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-    * & Yes & Yes & Function / external & Function / external \\
+    * & Yes & Yes & Function / external & Function / external & Function / external \\
 
 \t{dohard} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
+    * & Banned & Banned & Banned & Banned & Banned \\
 
 \t{dosed} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
+    * & Banned & Banned & Banned & Banned & Banned \\
 
 \t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned & Banned \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Yes & Yes & Banned & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Yes & Yes & Banned & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Yes & Yes & Banned & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
     None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
-    \t{-b}, \t{-d}, \t{-r} \\
+    \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{eapply} & \compactfeatureref{eapply} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{eapply_user} & \compactfeatureref{eapply-user} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{econf} arguments & \compactfeatureref{econf-options} &
     * &
@@ -273,97 +278,99 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
     disable dependency tracking, disable silent rules, docdir, htmldir &
     disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot &
     disable dependency tracking, disable silent rules, disable static,
+    datarootdir, docdir, htmldir, with sysroot &
+    disable dependency tracking, disable silent rules, disable static,
     datarootdir, docdir, htmldir, with sysroot \\
 
 \t{dodoc -r} & \compactfeatureref{dodoc} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{doheader} & \compactfeatureref{doheader} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{doins} handles symlinks & \compactfeatureref{doins} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & Yes & No & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & Yes & No & No \\
 
 Controllable compression & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{docompress} & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & No & No & Yes \\
+    No & No & No & No & Yes & Yes \\
 
 \t{use_with} empty third arg & \compactfeatureref{use-with} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{usex} & \compactfeatureref{usex} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes & Yes \\
 
 \t{in_iuse} & \compactfeatureref{in-iuse} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes & Yes \\
 
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & Yes & No & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & Yes & No & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & Yes & No & No \\
 
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 \t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes & Yes \\
 
 File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    * & Yes & Yes & Yes & Yes \\
+    * & Yes & Yes & Yes & Yes & Yes \\
 
 \end{longtable}
 \end{landscape}
@@ -545,7 +552,15 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, \featureref{unpack-extensions}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\section{EAPI 9}
+
+EAPI 9 is EAPI 8 with the following changes:
+
+\begin{compactitem}
+\item None
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{9}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 

diff --git a/eapis.tex b/eapis.tex
index a6c8109..fd0420c 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -17,8 +17,8 @@ EAPIs are also used for profile directories, as described in section~\ref{sec:pr
 
 \section{Defined EAPIs}
 
-\ChangeWhenAddingAnEAPI{8}
-This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', and~`8'.
+\ChangeWhenAddingAnEAPI{9}
+This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', `8', and~`9'.
 EAPI~`0' is the `original' base EAPI\@. Each of the later EAPIs contains a number of extensions
 to its predecessor.
 

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index a55c366..58df6bd 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -263,7 +263,7 @@ variable.
 \end{longtable}
 \end{landscape}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
     \begin{tabular}{lllllll}
@@ -279,12 +279,12 @@ variable.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4                 & Yes & Yes & Yes & No  & No  & No  \\
       5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
     \begin{tabular}{lllllll}
@@ -299,12 +299,12 @@ variable.
       \midrule
       0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
       4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
-      7, 8              & No  & No  & No  & No  & No  & No  \\
+      7, 8, 9           & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
     \begin{tabular}{lllll}
@@ -317,7 +317,7 @@ variable.
       \midrule
       0, 1, 2           & No  & No  & No  & No  \\
       3, 4, 5, 6        & Yes & Yes & Yes & No  \\
-      7, 8              & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -341,7 +341,7 @@ must be unset, for EAPIs listed in table~\ref{tab:profile-env-unset} as supporti
 ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in
 table~\ref{tab:locale-settings}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Locale settings for EAPIs}
     \label{tab:locale-settings}
     \begin{tabular}{ll}
@@ -350,7 +350,7 @@ table~\ref{tab:locale-settings}.
       \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & Undefined \\
-      6, 7, 8           & Yes       \\
+      6, 7, 8, 9        & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -436,7 +436,7 @@ contain at most one value.
 \subsection{Offset-prefix variables}
 \label{sec:offset-vars}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix}
     \label{tab:offset-support-table}
     \begin{tabular}{ll}
@@ -444,8 +444,8 @@ contain at most one value.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports offset-prefix?}}\\
       \midrule
-      0, 1, 2           & No  \\
-      3, 4, 5, 6, 7, 8  & Yes \\
+      0, 1, 2             & No  \\
+      3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -476,7 +476,7 @@ specifies the system root directory, it will consist of a single slash (\t{/}).
 a trailing slash, the package manager guarantees that a trailing slash will never be present.
 If the path specifies the system root directory, it will be empty.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
     \begin{tabular}{lll}
@@ -488,7 +488,7 @@ If the path specifies the system root directory, it will be empty.
       \t{D}, \t{ED} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & always & always \\
-      7, 8                & never  & never  \\
+      7, 8, 9             & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 25ba28e..84d27b7 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -18,7 +18,7 @@ certain variables and functions (see chapters~\ref{ch:ebuild-vars} and~\ref{ch:e
 for specific information), and must not call any external programs, write anything to standard
 output or standard error, or modify the state of the system in any way.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Bash version and options}
     \label{tab:bash-version}
     \begin{tabular}{lll}
@@ -29,7 +29,7 @@ output or standard error, or modify the state of the system in any way.
       \midrule
       0, 1, 2, 3, 4, 5  & 3.2 & No  \\
       6, 7              & 4.2 & Yes \\
-      8                 & 5.0 & Yes \\
+      8, 9              & 5.0 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 0c745c3..c878439 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -46,7 +46,7 @@ fallback to \t{WORKDIR} is used:
     executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Initial working directory in \t{pkg_*} phase functions for EAPIs}
     \label{tab:function-dirs}
     \begin{tabular}{ll}
@@ -55,12 +55,12 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Initial working directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
-      8                       & Empty \\
+      8, 9                    & Empty \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
     \label{tab:s-fallback-table}
     \begin{tabular}{ll}
@@ -69,7 +69,7 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Fallback to \t{WORKDIR} permitted?}} \\
       \midrule
       0, 1, 2, 3        & Always            \\
-      4, 5, 6, 7, 8     & Conditional error \\
+      4, 5, 6, 7, 8, 9  & Conditional error \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -91,7 +91,7 @@ before the next phase is executed.
 
 \t{pkg_pretend} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_pretend}}
     \label{tab:pkg-pretend-table}
     \begin{tabular}{ll}
@@ -100,7 +100,7 @@ before the next phase is executed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_pretend}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -149,7 +149,7 @@ listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, respectively
 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_prepare} support and behaviour for EAPIs}
     \label{tab:src-prepare-table}
     \begin{tabular}{lll}
@@ -161,7 +161,7 @@ the \t{src_prepare} function is a no-op.
       0, 1              & No  & Not applicable \\
       2, 3, 4, 5        & Yes & no-op          \\
       6, 7              & Yes & 6              \\
-      8                 & Yes & 8              \\
+      8, 9              & Yes & 8              \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -206,7 +206,7 @@ The \t{src_configure} function configures the package's build environment. The d
 implementation used when the ebuild lacks the \t{src_configure} function shall behave as in
 listing~\ref{lst:src-configure-2}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{src_configure}}
     \label{tab:src-configure-table}
     \begin{tabular}{ll}
@@ -214,8 +214,8 @@ listing~\ref{lst:src-configure-2}.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{src_configure}?}} \\
       \midrule
-      0, 1                & No  \\
-      2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0, 1                   & No  \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -244,7 +244,7 @@ implementation used when the ebuild lacks the \t{src_prepare} function shall beh
 listing~\ref{lst:src-compile-0}, listing~\ref{lst:src-compile-1} or listing~\ref{lst:src-compile-2},
 respectively.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_compile} behaviour for EAPIs}
     \label{tab:src-compile-table}
     \begin{tabular}{ll}
@@ -252,9 +252,9 @@ respectively.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Format}} \\
       \midrule
-      0                   & 0 \\
-      1                   & 1 \\
-      2, 3, 4, 5, 6, 7, 8 & 2 \\
+      0                      & 0 \\
+      1                      & 1 \\
+      2, 3, 4, 5, 6, 7, 8, 9 & 2 \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -317,7 +317,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_test} behaviour for EAPIs}
     \label{tab:src-test-table}
     \begin{tabular}{ll}
@@ -326,7 +326,7 @@ be disabled by user too, using a PM-specific mechanism.
       \multicolumn{1}{c}{\textbf{Supports parallel tests?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -346,7 +346,7 @@ listing~\ref{lst:src-install-4} or listing~\ref{lst:src-install-6}, respectively
 For other EAPIs, the default implementation used when the ebuild lacks the \t{src_install} function
 is a no-op.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_install} behaviour for EAPIs}
     \label{tab:src-install-table}
     \begin{tabular}{ll}
@@ -356,7 +356,7 @@ is a no-op.
       \midrule
       0, 1, 2, 3        & no-op \\
       4, 5              & 4     \\
-      6, 7, 8           & 6     \\
+      6, 7, 8, 9        & 6     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -449,7 +449,7 @@ that dependencies may not be installed.
 
 \t{pkg_info} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_info} on non-installed packages}
     \label{tab:pkg-info-table}
     \begin{tabular}{ll}
@@ -458,7 +458,7 @@ that dependencies may not be installed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_info} on non-installed packages?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -480,7 +480,7 @@ named \t{default_}(phase) that behaves as the default implementation for that EA
 when executing any ebuild phase listed in the table. Ebuilds must not call these functions except
 when in the phase in question.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{default_} phase functions}
     \label{tab:default-phase-function-table}
     \begin{tabular}{l P{26em}}
@@ -491,7 +491,7 @@ when in the phase in question.
       0, 1              & None \\
       2, 3              & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test} \\
-      4, 5, 6, 7, 8     & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
+      4, 5, 6, 7, 8, 9  & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test}, \t{src_install} \\
       \bottomrule
     \end{tabular}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 5f3f583..c4413f5 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -90,7 +90,7 @@ defined by an eclass.
 \item[IDEPEND] See chapter~\ref{ch:dependencies}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{IUSE} defaults}
     \label{tab:iuse-defaults-table}
     \begin{tabular}{ll}
@@ -98,13 +98,13 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{IUSE} defaults?}} \\
       \midrule
-      0                      & No  \\
-      1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0                         & No  \\
+      1, 2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
     \begin{tabular}{lll}
@@ -114,7 +114,7 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6, 7, 8     & Yes        & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -179,7 +179,7 @@ selective URI restrictions, the URI protocol can be prefixed by an additional \t
 restriction for the URI (but not the implied mirror restriction). If the ebuild is fetch or mirror
 restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for the URI.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows and selective URI restrictions}
     \label{tab:uri-arrows-table}
     \begin{tabular}{lll}
@@ -190,7 +190,7 @@ restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for
       \midrule
       0, 1              & No  & No  \\
       2, 3, 4, 5, 6, 7  & Yes & No  \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -275,7 +275,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} default}
     \label{tab:rdepend-depend-table}
     \begin{tabular}{ll}
@@ -284,7 +284,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
       \multicolumn{1}{c}{\textbf{\t{RDEPEND=DEPEND}?}} \\
       \midrule
       0, 1, 2, 3        & Yes \\
-      4, 5, 6, 7, 8     & No  \\
+      4, 5, 6, 7, 8, 9  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -319,7 +319,7 @@ not be exported to the ebuild environment:
 \note{Thus, by extension of section~\ref{sec:metadata-invariance}, phase functions must not be
 defined based upon any variant condition.}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{DEFINED_PHASES}}
     \label{tab:defined-phases-table}
     \begin{tabular}{ll}
@@ -328,7 +328,7 @@ defined based upon any variant condition.}
       \multicolumn{1}{c}{\textbf{Supports \t{DEFINED_PHASES}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally \\
-      4, 5, 6, 7, 8     & Yes        \\
+      4, 5, 6, 7, 8, 9  & Yes        \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eclasses.tex b/eclasses.tex
index e23dcd8..3f8f653 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -42,7 +42,7 @@ the previous one is loaded. For EAPIs listed in table~\ref{tab:accumulate-vars}
 value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is done after
 the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across eclasses}
     \label{tab:accumulate-vars}
     \begin{tabular}{lll}
@@ -52,7 +52,7 @@ the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
       \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
-      8                       & Yes & Yes \\
+      8, 9                    & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/merge.tex b/merge.tex
index 6fcfeec..ab320a6 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Preservation of file modification times (mtimes)}
     \label{tab:mtime-preserve}
     \begin{tabular}{ll}
@@ -94,8 +94,8 @@ is undefined.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\
       \midrule
-      0, 1, 2           & Undefined \\
-      3, 4, 5, 6, 7, 8  & Yes       \\
+      0, 1, 2             & Undefined \\
+      3, 4, 5, 6, 7, 8, 9 & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index d4dcffe..7d2511f 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -32,7 +32,7 @@ The following commands affect this behaviour:
     option and in EAPIs supporting this option, see table~\ref{tab:die-properties}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
     \begin{tabular}{llll}
@@ -44,7 +44,7 @@ The following commands affect this behaviour:
       \midrule
       0, 1, 2, 3        & Non-zero exit & No  & n/a \\
       4, 5, 6           & Aborts        & Yes & No  \\
-      7, 8              & Aborts        & Yes & Yes \\
+      7, 8, 9           & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -55,7 +55,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{8}
+\ChangeWhenAddingAnEAPI{9}  % two places
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
     \begin{tabular}{lllllll}
@@ -73,7 +73,7 @@ called, the package manager must abort the build process indicating an error.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4, 5              & Yes & Yes & No  & No  & No  & No  \\
       6                 & Yes & Yes & Yes & No  & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \midrule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{6}{c}{\textbf{Command banned?}} \\
@@ -83,7 +83,7 @@ called, the package manager must abort the build process indicating an error.
       \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-      8                       & Yes & Yes & Yes & & & \\
+      8, 9                    & Yes & Yes & Yes & & & \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -121,7 +121,7 @@ are given, \t{-r} is assumed.
     otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Package manager query command options supported by EAPIs}
     \label{tab:pm-query-options}
     \begin{tabular}{lllll}
@@ -134,7 +134,7 @@ are given, \t{-r} is assumed.
       \midrule
       0, 1, 2, 3, 4     & No  & No  & No  & No  \\
       5, 6              & Yes & No  & No  & No  \\
-      7, 8              & No  & Yes & Yes & Yes \\
+      7, 8, 9           & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -171,7 +171,7 @@ output, using stdout as an output facility is forbidden.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
     \begin{tabular}{lll}
@@ -181,7 +181,7 @@ output, using stdout as an output facility is forbidden.
       \multicolumn{1}{c}{\textbf{Supports \t{eqawarn}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes & No  \\
-      7, 8                & No  & Yes \\
+      7, 8, 9             & No  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -203,7 +203,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
     \label{tab:die-properties}
     \begin{tabular}{lll}
@@ -216,7 +216,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
       6                 & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -280,7 +280,7 @@ Ebuilds must not run any of these commands once the current phase function has r
     subsequent calls, the command will do nothing and return~0.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Patch commands for EAPIs}
     \label{tab:patch-commands}
     \begin{tabular}{lll}
@@ -290,7 +290,7 @@ Ebuilds must not run any of these commands once the current phase function has r
       \multicolumn{1}{c}{\textbf{\t{eapply_user}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -345,7 +345,7 @@ commands once the current phase function has returned.
         \t{-{}-enable-static} occurs in the output of \t{configure -{}-help}.
     \end{itemize}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
         \begin{tabular}{lllll}
@@ -359,7 +359,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
           6                 & No  & Yes & Yes & No  \\
           7                 & No  & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & Yes \\
+          8, 9              & Yes & Yes & Yes & Yes \\
           \midrule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
@@ -369,7 +369,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3        & No  & No  & No  & \\
           4                 & Yes & No  & No  & \\
           5, 6, 7           & Yes & Yes & No  & \\
-          8                 & Yes & Yes & Yes & \\
+          8, 9              & Yes & Yes & Yes & \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -670,7 +670,7 @@ dosym_relative_path() {
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dodoc -r}}
     \label{tab:dodoc-table}
     \begin{tabular}{ll}
@@ -679,12 +679,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{dodoc -r}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}}
     \label{tab:doheader-table}
     \begin{tabular}{ll}
@@ -693,12 +693,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{doheader} and \t{newheader}?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting symlinks for \t{doins}}
     \label{tab:doins-table}
     \begin{tabular}{ll}
@@ -707,12 +707,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{doins} supports symlinks?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{doman} language support options for EAPIs}
     \label{tab:doman-table}
     \begin{tabular}{lll}
@@ -723,12 +723,12 @@ dosym_relative_path() {
       \midrule
       0, 1              & No  & Not applicable \\
       2, 3              & Yes & No             \\
-      4, 5, 6, 7, 8     & Yes & Yes            \\
+      4, 5, 6, 7, 8, 9  & Yes & Yes            \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting stdin for \t{new*} commands}
     \label{tab:newfoo-stdin-table}
     \begin{tabular}{ll}
@@ -737,12 +737,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{new*} can read from stdin?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{domo} destination path in EAPIs}
     \label{tab:domo-path}
     \begin{tabular}{ll}
@@ -751,12 +751,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Destination path}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
-      7, 8                & \t{/usr/share/locale} \\
+      7, 8, 9             & \t{/usr/share/locale} \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dosym -r}}
     \label{tab:dosym-r}
     \begin{tabular}{ll}
@@ -765,7 +765,7 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative paths?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  \\
-      8                       & Yes \\
+      8, 9                    & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -807,7 +807,7 @@ function has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{insopts} for EAPIs}
     \label{tab:insopts-commands}
     \begin{tabular}{lllll}
@@ -819,12 +819,12 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doheader}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes & Yes & Yes \\
-      8                       & Yes & No  & No  & No  \\
+      8, 9                    & Yes & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{exeopts} for EAPIs}
     \label{tab:exeopts-commands}
     \begin{tabular}{lll}
@@ -834,7 +834,7 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doinitd}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes \\
-      8                       & Yes & No  \\
+      8, 9                    & Yes & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -911,7 +911,7 @@ any of these functions from any other phase.
     supporting \t{dostrip}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands controlling manipulation of files in the staging area in EAPIs}
     \label{tab:staging-area-commands}
     \begin{tabular}{lll}
@@ -922,7 +922,7 @@ any of these functions from any other phase.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6           & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -969,7 +969,7 @@ table~\ref{tab:use-list-strictness}.
     table~\ref{tab:use-list-functions} as supporting \t{in_iuse}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI behaviour for use queries not in \t{IUSE_EFFECTIVE}}
     \label{tab:use-list-strictness}
     \begin{tabular}{ll}
@@ -978,12 +978,12 @@ table~\ref{tab:use-list-strictness}.
       \multicolumn{1}{c}{\textbf{Behaviour}} \\
       \midrule
       0, 1, 2, 3        & Undefined \\
-      4, 5, 6, 7, 8     & Error     \\
+      4, 5, 6, 7, 8, 9  & Error     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for EAPIs}
     \label{tab:use-list-args}
     \begin{tabular}{lll}
@@ -995,12 +995,12 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6, 7        & No  & Yes \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{usex} and \t{in_iuse}}
     \label{tab:use-list-functions}
     \begin{tabular}{lll}
@@ -1011,7 +1011,7 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3, 4     & No  & No  \\
       5                 & Yes & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1096,7 +1096,7 @@ the second, inclusively.
     section~\ref{sec:version-spec}. Comparison is done using algorithm~\ref{alg:version-comparison}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
     \label{tab:version-commands}
     \begin{tabular}{llll}
@@ -1107,7 +1107,7 @@ the second, inclusively.
       \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-      7, 8                & Yes & Yes & Yes \\
+      7, 8, 9             & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1184,7 +1184,7 @@ has returned.
     \featurelabel{unpack-ignore-case} \t{unpack} matches filename extensions in a case-insensitive
     manner, for EAPIs listed such in table~\ref{tab:unpack-behaviour}.
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} behaviour for EAPIs}
         \label{tab:unpack-behaviour}
         \begin{tabular}{lll}
@@ -1194,12 +1194,12 @@ has returned.
           \multicolumn{1}{c}{\textbf{Case-insensitive matching?}} \\
           \midrule
           0, 1, 2, 3, 4, 5  & No  & No  \\
-          6, 7, 8           & Yes & Yes \\
+          6, 7, 8, 9        & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} extensions for EAPIs}
         \label{tab:unpack-extensions-table}
         \begin{tabular}{llllllll}
@@ -1215,7 +1215,7 @@ has returned.
           0, 1, 2           & No  & No  & No  & Yes & Yes & Yes \\
           3, 4, 5           & Yes & Yes & No  & Yes & Yes & Yes \\
           6, 7              & Yes & Yes & Yes & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & No  & No  & No  \\
+          8, 9              & Yes & Yes & Yes & No  & No  & No  \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -1283,7 +1283,7 @@ has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
     \label{tab:misc-commands}
     \begin{tabular}{llll}
@@ -1295,7 +1295,7 @@ has returned.
       \midrule
       0, 1              & No  & No  & No  \\
       2, 3, 4, 5        & Yes & No  & No  \\
-      6, 7, 8           & Yes & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pms.tex b/pms.tex
index 97d6d30..e066c2d 100644
--- a/pms.tex
+++ b/pms.tex
@@ -21,8 +21,8 @@
     pdfkeywords={Gentoo, package manager, specification},
 }
 
-\CurrentEAPIIs{8}
-\ChangeWhenAddingAnEAPI{8}
+\CurrentEAPIIs{9}
+\ChangeWhenAddingAnEAPI{9}
 
 \begin{document}
 \maketitle

diff --git a/profile-variables.tex b/profile-variables.tex
index ba40bf4..0f2dc3c 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -40,7 +40,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs}
     \label{tab:profile-iuse-injection-table}
     \begin{tabular}{ll}
@@ -49,12 +49,12 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined unsetting of variables in EAPIs}
     \label{tab:profile-env-unset}
     \begin{tabular}{ll}
@@ -63,7 +63,7 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports \t{ENV_UNSET}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/profiles.tex b/profiles.tex
index 30da81b..8d8226a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -78,7 +78,7 @@ in that directory, unless their name begins with a dot, will be concatenated in
 filename in the POSIX locale and the result will be processed as if it were a single file.
 Any subdirectories will be ignored.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting directories for profile files}
     \label{tab:profile-file-dirs}
     \begin{tabular}{ll}
@@ -87,7 +87,7 @@ Any subdirectories will be ignored.
       \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -123,7 +123,7 @@ it is actually installed. Because it has severe adverse effects on USE-based and
 dependencies, its use is strongly deprecated and package manager support must be regarded as purely
 optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{package.provided} in profiles}
     \label{tab:package-provided}
     \begin{tabular}{ll}
@@ -132,7 +132,7 @@ optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
       \multicolumn{1}{c}{\textbf{Supports \t{package.provided}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Optionally \\
-      7, 8                & No         \\
+      7, 8, 9             & No         \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -165,7 +165,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile directory support for masking/forcing use flags in stable versions only}
     \label{tab:profile-stablemask}
     \begin{tabular}{ll}
@@ -174,7 +174,7 @@ stable in a package.
       \multicolumn{1}{c}{\textbf{Supports masking/forcing use flags in stable versions?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/tree-layout.tex b/tree-layout.tex
index aa04d3d..b988f6e 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -127,7 +127,7 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
     \label{tab:package-mask-dir}
     \begin{tabular}{ll}
@@ -136,7 +136,7 @@ manager must ignore any files in this directory that it does not recognise.
       \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -233,7 +233,7 @@ Any name that has appeared as the origin of a move must not be reused in the fut
 that has appeared as the origin of a slot move may not be used by packages matching the spec of
 that slot move in the future.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Naming rules for files in \t{updates} directory for EAPIs}
     \label{tab:updates-filenames}
     \begin{tabular}{ll}
@@ -242,7 +242,7 @@ that slot move in the future.
       \multicolumn{1}{c}{\textbf{Files per quarter year?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes \\
-      8                       & No  \\
+      8, 9                    & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-18 15:53 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-18 15:53 UTC (permalink / raw
  To: gentoo-commits

commit:     cf612a0335641472a263d0dc4aa4e21d6573a4db
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  3 16:34:08 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Aug 18 15:51:53 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=cf612a03

EAPI feature table: Drop EAPIs 0 to 4

Also drop items that would have identical entries for all listed EAPIs.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex | 276 ++++++++++++---------------------------------------
 1 file changed, 62 insertions(+), 214 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index c75404b..7bf3f2c 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,22 +1,21 @@
 \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, 2, 3, and~4 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.}
+For lack of space, EAPIs 0, 1, 2, 3, and~4 have been omitted from the table below, as well as items
+that would have identical entries for all listed EAPIs. See the 2012-09-20 edition of this document
+for a complete table of previous EAPIs.}
 % 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
 
 \ChangeWhenAddingAnEAPI{9}
 \begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{6}{c}{\textbf{EAPIs}} \\
+\multicolumn{5}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
@@ -27,10 +26,9 @@ of this document for a complete table of previous EAPIs.}
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{6}{c}{\textbf{EAPIs}} \\
+\multicolumn{5}{c}{\textbf{EAPIs}} \\
 \multicolumn{1}{c}{} &
 \multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
 \multicolumn{1}{c}{5} &
 \multicolumn{1}{c}{6} &
 \multicolumn{1}{c}{7} &
@@ -44,236 +42,125 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & No & No & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & Optional & Optional & No & No & No \\
-
-Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    Optional & Optional & No & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 4.2 & 4.2 & 5.0 & 5.0 \\
+    3.2 & 4.2 & 4.2 & 5.0 & 5.0 \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & Yes & Yes & Yes & Yes \\
-
-\t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
-\t{REQUIRED_USE} & \compactfeatureref{required-use} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
-\t{PROPERTIES} & \compactfeatureref{properties} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
-\t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & No & No & Yes & Yes \\
-
-\t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    * & No & No & No & No & No \\
-
-\t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & No & No & Yes & Yes \\
-
-\t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & Yes & Yes & No & No & No \\
-
-Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named and Operator & Named and Operator & Named and Operator & Named and Operator &
-    Named and Operator \\
-
-Sub-slots & \compactfeatureref{sub-slot} &
-    No & Yes & Yes & Yes & Yes & Yes \\
-
-Use dependencies & \compactfeatureref{use-deps} &
-    * & 4-style & 4-style & 4-style & 4-style & 4-style \\
-
-\t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak & Weak \\
-
-\t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong & Strong \\
+    Yes & Yes & No & No & No \\
 
 Working directory in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Any & Any & Empty & Empty \\
-
-\t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    * & Conditional & Conditional & Conditional & Conditional & Conditional \\
-
-\t{pkg_pretend} & \compactfeatureref{pkg-pretend} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
-\t{src_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    Any & Any & Any & Empty & Empty \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & 6 & 6 & 8 & 8 \\
-
-\t{src_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
-\t{src_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 & 2 \\
-
-Parallel tests & \compactfeatureref{parallel-tests} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    no-op & 6 & 6 & 8 & 8 \\
 
 \t{src_install} style & \compactfeatureref{src-install} &
-    * & 4 & 6 & 6 & 6 & 6 \\
-
-\t{pkg_info} & \compactfeatureref{pkg-info} &
-    * & Both & Both & Both & Both & Both \\
-
-\t{default_} phase functions & \compactfeatureref{default-phase-funcs} &
-    * &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} \\
+    4 & 6 & 6 & 6 & 6 \\
 
 Accumulate \t{RESTRICT} etc. & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes & Yes \\
-
-\t{AA} & \compactfeatureref{aa} &
-    * & No & No & No & No & No \\
+    No & No & No & Yes & Yes \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & Yes & Yes & No & No & No \\
-
-\t{KV} & \compactfeatureref{kv} &
-    * & No & No & No & No & No \\
-
-\t{EBUILD_PHASE_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & Yes & Yes & Yes & Yes & Yes \\
-
-\t{MERGE_TYPE} & \compactfeatureref{merge-type} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    Yes & Yes & No & No & No \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Yes & Yes & Yes & Yes \\
-
-Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & Yes & Yes & Yes & Yes & Yes \\
-
-\t{REPLACING_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
-\t{REPLACED_BY_VERSION} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
-\t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    Undefined & Yes & Yes & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & Any & Any & 2.7 & 2.7 & 2.7 \\
-
-\t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Yes & Yes & Yes & Yes & Yes \\
-
-Most utilities die & \compactfeatureref{die-on-failure} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    Any & Any & 2.7 & 2.7 & 2.7 \\
 
 \t{nonfatal} & \compactfeatureref{nonfatal} &
-    * & Yes & Yes & Function / external & Function / external & Function / external \\
-
-\t{dohard} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned & Banned \\
-
-\t{dosed} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned & Banned \\
+    Yes & Yes & Function / external & Function / external & Function / external \\
 
 \t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned & Banned \\
+    Yes & Banned & Banned & Banned & Banned \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned & Banned \\
+    Yes & Yes & Banned & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Yes & Banned & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
+    \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
     \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & Yes & Yes & No & No & No \\
+    Yes & Yes & No & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{eapply} & \compactfeatureref{eapply} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{eapply_user} & \compactfeatureref{eapply-user} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{econf} arguments & \compactfeatureref{econf-options} &
-    * &
     disable dependency tracking, disable silent rules &
     disable dependency tracking, disable silent rules, docdir, htmldir &
     disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot &
@@ -282,95 +169,56 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
     disable dependency tracking, disable silent rules, disable static,
     datarootdir, docdir, htmldir, with sysroot \\
 
-\t{dodoc -r} & \compactfeatureref{dodoc} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
-\t{doheader} & \compactfeatureref{doheader} &
-    No & Yes & Yes & Yes & Yes & Yes \\
-
-\t{doins} handles symlinks & \compactfeatureref{doins} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
-\t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
-\t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & No & No & Yes & Yes \\
-
-\t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & Yes & Yes & No & No \\
-
-Controllable compression & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
-\t{docompress} & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    Yes & Yes & Yes & No & No \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & No & No & Yes & Yes \\
-
-\t{use_with} empty third arg & \compactfeatureref{use-with} &
-    * & Yes & Yes & Yes & Yes & Yes \\
-
-\t{usex} & \compactfeatureref{usex} &
-    No & Yes & Yes & Yes & Yes & Yes \\
+    No & No & No & Yes & Yes \\
 
 \t{in_iuse} & \compactfeatureref{in-iuse} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & No & No & Yes & Yes & Yes \\
+    No & No & Yes & Yes & Yes \\
 
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & Yes & Yes & Yes & Yes \\
-
-\t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No & No \\
+    Yes & Yes & Yes & No & No \\
 
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & Yes & Yes & Yes & Yes \\
-
-\t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & No & Yes & Yes & Yes & Yes \\
-
-File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    * & Yes & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes & Yes \\
 
 \end{longtable}
 \end{landscape}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-18 15:53 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-18 15:53 UTC (permalink / raw
  To: gentoo-commits

commit:     260e21bf65f67ad424e990306a7a4789b6b2f1de
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed May 11 21:55:40 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat May 14 07:29:57 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=260e21bf

pkg-mgr-commands.tex: Tighten the spec for reserved names

"abort", "dyn" and "prep" are only reserved at the beginning of a name.
This appears to be their only (historical and recent) usage in Portage.

"ebuild" is allowed as substring of words like "rebuild", which is
somewhat common in names.

Bug: https://bugs.gentoo.org/843779
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 6df5f32..d4dcffe 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1316,19 +1316,25 @@ Ebuilds must not run any of these commands once the current phase function has r
 
 \subsection{Reserved commands and variables}
 
-Except where documented otherwise, all functions and variables that contain any of the following
+Except where documented otherwise, all functions and variables that begin with any of the following
 strings (ignoring case) are reserved for package manager use and may not be used or relied upon by
 ebuilds:
 
 \begin{compactitem}
-\item \t{__} (two underscores) at beginning of string
+\item \t{__} (two underscores)
 \item \t{abort}
 \item \t{dyn}
-\item \t{ebuild}
+\item \t{prep}
+\end{compactitem}
+
+The same applies to functions and variables that contain any of the following strings (ignoring
+case):
+\nobreakpar
+\begin{compactitem}
+\item \t{ebuild} (unless immediately preceded by another letter)
 \item \t{hook}
 \item \t{paludis}
 \item \t{portage}
-\item \t{prep}
 \end{compactitem}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-18 15:53 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-18 15:53 UTC (permalink / raw
  To: gentoo-commits

commit:     213db65b0d49478c981bc9d80afa7ff5d74eb705
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:32:43 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Aug 18 15:51:54 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=213db65b

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 +++++
 profiles.tex         | 23 +++++++++++++++++++++--
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b83da4e..d292bc7 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -50,6 +50,9 @@ Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
 Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
     No & No & No & No & Yes \\
 
+Default EAPI for profiles & \compactfeatureref{profile-eapi-default} &
+    0 & 0 & 0 & 0 & Top-level \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & No & Yes & Yes & Yes \\
 
@@ -409,6 +412,8 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
+\item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 6fa8a1c..de59f0a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -50,8 +50,27 @@ this file must not contain comments or blank lines.
 A profile directory may contain an \t{eapi} file. This file, if it exists, must contain a single
 line with the name of an EAPI\@. This specifies the EAPI to use when handling the directory in
 question; a package manager must not attempt to use any profile using a directory which requires an
-EAPI it does not support. If no \t{eapi} file is present, EAPI 0 shall be used. The EAPI is neither
-inherited via the \t{parent} file nor in subdirectories.
+EAPI it does not support.
+
+\featurelabel{profile-eapi-default} If no \t{eapi} file is present, the default depends on the EAPI
+of the top-level profiles directory (see section~\ref{sec:profiles-dir}). That EAPI shall be used
+if table~\ref{tab:profile-eapi-default} lists it as ``top-level''. Otherwise, EAPI 0 shall be used.
+
+The EAPI is neither inherited via the \t{parent} file nor in subdirectories.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Default EAPI for profiles}
+    \label{tab:profile-eapi-default}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Default EAPI?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & 0         \\
+      9                         & Top-level \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{deprecated}
 If a profile contains a file named \t{deprecated}, it is treated as such. The first line of this


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-18 15:53 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-18 15:53 UTC (permalink / raw
  To: gentoo-commits

commit:     edb669663d753b599673f2ddda5987a9b93be437
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:30:11 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Aug 18 15:51:54 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=edb66966

EAPI 9 profile parent files can contain comments

Bug: https://bugs.gentoo.org/470094
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 ++++-
 profiles.tex         | 20 +++++++++++++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7bf3f2c..b83da4e 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -47,6 +47,9 @@ for a complete table of previous EAPIs.}
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
     No & No & No & Yes & Yes \\
 
+Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
+    No & No & No & No & Yes \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & No & Yes & Yes & Yes \\
 
@@ -405,7 +408,7 @@ EAPI 8 is EAPI 7 with the following changes:
 EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 8d8226a..6fa8a1c 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -25,7 +25,25 @@ first, left to right, with duplicate parent paths being sourced for every time t
 It is illegal for a profile's parent tree to contain cycles. Package manager behaviour upon
 encountering a cycle is undefined.
 
-This file must not contain comments, blank lines or make use of line continuations.
+This file must not make use of line continuations.
+
+\featurelabel{parent-comments} For EAPIs listed in table~\ref{tab:profile-parent-comments} as
+allowing comments, blank lines and lines beginning with a \t{\#} are discarded. For other EAPIs,
+this file must not contain comments or blank lines.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs allowing comments in \t{parent} file}
+    \label{tab:profile-parent-comments}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Allows comments?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+      9                         & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{The eapi file}
 \label{sec:profile-eapi}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-21  9:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-21  9:42 UTC (permalink / raw
  To: gentoo-commits

commit:     2ad6b446bea43167fdf929a89e4821f21b2e9fbf
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 19 21:22:40 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Aug 21 09:36:04 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=2ad6b446

EAPI feature table: Don't use a landscape table

Drop EAPIs 0 to 5 from the table, as well as items that would have
identical entries for all listed EAPIs.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex | 321 ++++++++++-----------------------------------------
 pms.cls              |   2 +-
 2 files changed, 61 insertions(+), 262 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a5ba486..8e8e69d 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,39 +1,24 @@
 \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, 2, 3, and~4 have been consolidated into a single column in the table
-below; entries marked with an asterisk differ between these EAPIs. See the 2012-09-20 edition
-of this document for a complete table of previous EAPIs.}
-% 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
+For lack of space, EAPIs 0 to~5 have been omitted from the table below, as well as items that
+would have identical entries for all listed EAPIs.}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{@{}lllll@{}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{3}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{3}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 \\
 \midrule
 \endhead
 \midrule
@@ -42,334 +27,148 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & No & No & Yes \\
+    No & No & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & Optional & Optional & No & No \\
-
-Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & Yes & Yes & Yes & Yes \\
+    Optional & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\
-
-\t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & Yes & Yes & Yes \\
-
-\t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{REQUIRED_USE} & \compactfeatureref{required-use} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{PROPERTIES} & \compactfeatureref{properties} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes \\
+    4.2 & 4.2 & 5.0 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & No & No & Yes \\
-
-\t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    * & No & No & No & No \\
-
-\t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-    * & Yes & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & No & No & Yes \\
-
-\t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & Yes & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & Yes & Yes & No & No \\
-
-Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named and Operator & Named and Operator & Named and Operator & Named and Operator \\
-
-Sub-slots & \compactfeatureref{sub-slot} &
-    No & Yes & Yes & Yes & Yes \\
-
-Use dependencies & \compactfeatureref{use-deps} &
-    * & 4-style & 4-style & 4-style & 4-style \\
-
-\t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak \\
-
-\t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong \\
+    Yes & No & No \\
 
 Working dir in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Any & Any & Empty \\
-
-\t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    * & Conditional & Conditional & Conditional & Conditional \\
-
-\t{pkg_pretend} & \compactfeatureref{pkg-pretend} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{src_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes \\
+    Any & Any & Empty \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & 6 & 6 & 8 \\
-
-\t{src_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{src_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 \\
-
-Parallel tests & \compactfeatureref{parallel-tests} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{src_install} style & \compactfeatureref{src-install} &
-    * & 4 & 6 & 6 & 6 \\
-
-\t{pkg_info} & \compactfeatureref{pkg-info} &
-    * & Both & Both & Both & Both \\
-
-\t{default_} phase functions & \compactfeatureref{default-phase-funcs} &
-    * &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} \\
+    6 & 6 & 8 \\
 
 Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes \\
+    No & No & Yes \\
 
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes \\
-
-\t{AA} & \compactfeatureref{aa} &
-    * & No & No & No & No \\
+    No & No & Yes \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & Yes & Yes & No & No \\
-
-\t{KV} & \compactfeatureref{kv} &
-    * & No & No & No & No \\
-
-\t{EBUILD_PHASE_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{MERGE_TYPE} & \compactfeatureref{merge-type} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & No & No \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & No & No & Yes & Yes \\
-
-Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Yes & Yes & Yes \\
-
-Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{REPLACING_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{REPLACED_BY_VERSION} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    * & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & Any & Any & 2.7 & 2.7 \\
-
-\t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Yes & Yes & Yes & Yes \\
-
-Most utilities die & \compactfeatureref{die-on-failure} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{nonfatal} & \compactfeatureref{nonfatal} &
-    * & Yes & Yes & Function / external & Function / external \\
-
-\t{dohard} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
+    Any & 2.7 & 2.7 \\
 
-\t{dosed} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
-
-\t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned \\
+\t{nonfatal} function and external & \compactfeatureref{nonfatal} &
+    No & Yes & Yes \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
-    \t{-b}, \t{-d}, \t{-r} \\
+    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & No & No & Yes & Yes \\
-
-\t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & No & No & Yes & Yes \\
-
-\t{eapply} & \compactfeatureref{eapply} &
-    No & No & Yes & Yes & Yes \\
-
-\t{eapply_user} & \compactfeatureref{eapply-user} &
-    No & No & Yes & Yes & Yes \\
-
-\t{econf} arguments & \compactfeatureref{econf-options} &
-    * &
-    disable dependency tracking, disable silent rules &
-    disable dependency tracking, disable silent rules, docdir, htmldir &
-    disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot &
-    disable dependency tracking, disable silent rules, disable static,
-    datarootdir, docdir, htmldir, with sysroot \\
-
-\t{dodoc -r} & \compactfeatureref{dodoc} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{doheader} & \compactfeatureref{doheader} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
-\t{doins} handles symlinks & \compactfeatureref{doins} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
+    No & No & Yes \\
 
-\t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-with-sysroot} & \compactfeatureref{econf-options} &
+    No & Yes & Yes \\
 
-\t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
+    No & No & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & No & No & Yes \\
-
-\t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & Yes & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 \t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & Yes & Yes & No \\
-
-Controllable compression & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{docompress} & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & Yes & No \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & No & No & Yes \\
-
-\t{use_with} empty third arg & \compactfeatureref{use-with} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{usex} & \compactfeatureref{usex} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{in_iuse} & \compactfeatureref{in-iuse} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & No & No & Yes & Yes \\
-
-\t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & Yes & Yes & Yes \\
-
-\t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
-
-\t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & Yes & Yes & Yes \\
-
-\t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & Yes & Yes & Yes \\
-
-\t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & No & Yes & Yes & Yes \\
-
-File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & Yes & No \\
 
 \end{longtable}
-\end{landscape}
 
 \chapter{Differences Between EAPIs}
 

diff --git a/pms.cls b/pms.cls
index b29a9c3..d4b416f 100644
--- a/pms.cls
+++ b/pms.cls
@@ -82,7 +82,7 @@
         \framebox{\textsc{#1}}}
 }{%
     \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
-    \newcommand{\compactfeatureref}[1]{#1~p\pageref{feat:#1}}
+    \newcommand{\compactfeatureref}[1]{p.\,\pageref{feat:#1}}
     \newcommand{\featurelabel}[1]{\leavevmode\label{feat:#1}%
         \marginnote{\framebox{\textsc{#1}}}\ignorespaces}
 }


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-21  9:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-21  9:42 UTC (permalink / raw
  To: gentoo-commits

commit:     2be5b5c4c076884178d1f90bdb2d6e8c8edf811d
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  3 16:32:47 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Aug 21 09:36:10 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=2be5b5c4

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 commands.tex          |   4 +-
 dependencies.tex      |  26 +++++------
 eapi-differences.tex  | 116 +++++++++++++++++++++++++++-----------------------
 eapis.tex             |   4 +-
 ebuild-env-vars.tex   |  26 +++++------
 ebuild-format.tex     |   4 +-
 ebuild-functions.tex  |  46 ++++++++++----------
 ebuild-vars.tex       |  22 +++++-----
 eclasses.tex          |   4 +-
 merge.tex             |   6 +--
 pkg-mgr-commands.tex  | 100 +++++++++++++++++++++----------------------
 pms.tex               |   4 +-
 profile-variables.tex |   8 ++--
 profiles.tex          |  12 +++---
 tree-layout.tex       |   8 ++--
 15 files changed, 199 insertions(+), 191 deletions(-)

diff --git a/commands.tex b/commands.tex
index d0ad87d..c6f4f36 100644
--- a/commands.tex
+++ b/commands.tex
@@ -33,7 +33,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
     \begin{tabular}{lll}
@@ -44,7 +44,7 @@ The following commands must always be available in the ebuild environment:
       \midrule
       0, 1, 2, 3, 4     & Undefined & Any \\
       5, 6              & Yes       & Any \\
-      7, 8              & Yes       & 2.7 \\
+      7, 8, 9           & Yes       & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index f14a08c..de6e752 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,7 @@ with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in \
 \t{pkg_postinst}. Ebuilds may also call them in \t{pkg_prerm} and \t{pkg_postrm} but must not rely
 on them being available.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting additional dependency types}
     \label{tab:depend-table}
     \begin{tabular}{lll}
@@ -99,7 +99,7 @@ on them being available.
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  \\
       7                   & Yes & No  \\
-      8                   & Yes & Yes \\
+      8, 9                & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -155,7 +155,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
     \label{tab:at-most-one-of-table}
     \begin{tabular}{ll}
@@ -164,7 +164,7 @@ In particular, note that whitespace is not optional.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -204,7 +204,7 @@ In an exactly-one-of group, exactly one immediate child element must be matched.
 In EAPIs specified in table~\ref{tab:empty-dep-groups}, an empty exactly-one-of group counts as
 being matched.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
     \label{tab:empty-dep-groups}
     \begin{tabular}{ll}
@@ -214,7 +214,7 @@ being matched.
         are matched?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes \\
-      7, 8                & No  \\
+      7, 8, 9             & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -250,7 +250,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
     \label{tab:slot-deps-table}
     \begin{tabular}{lll}
@@ -261,12 +261,12 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0                 & No                 & No  \\
       1, 2, 3, 4        & Named only         & No  \\
-      5, 6, 7, 8        & Named and operator & Yes \\
+      5, 6, 7, 8, 9     & Named and operator & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
     \label{tab:use-deps-table}
     \begin{tabular}{ll}
@@ -276,7 +276,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0, 1              & No      \\
       2, 3              & 2-style \\
-      4, 5, 6, 7, 8     & 4-style \\
+      4, 5, 6, 7, 8, 9  & 4-style \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -310,7 +310,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Exclamation mark strengths for EAPIs}
     \label{tab:bang-strength-table}
     \begin{tabular}{lll}
@@ -319,8 +319,8 @@ described in table~\ref{tab:bang-strength-table}.
       \multicolumn{1}{c}{\textbf{\t{!}}} &
       \multicolumn{1}{c}{\textbf{\t{!!}}} \\
       \midrule
-      0, 1                & Unspecified & Forbidden \\
-      2, 3, 4, 5, 6, 7, 8 & Weak        & Strong    \\
+      0, 1                   & Unspecified & Forbidden \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Weak        & Strong    \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 8e8e69d..401fdb7 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -4,21 +4,21 @@
 For lack of space, EAPIs 0 to~5 have been omitted from the table below, as well as items that
 would have identical entries for all listed EAPIs.}
 
-\ChangeWhenAddingAnEAPI{8}
-\begin{longtable}{@{}lllll@{}}
+\ChangeWhenAddingAnEAPI{9}
+\begin{longtable}{@{}llllll@{}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Ref.}} &
-\multicolumn{3}{c}{\textbf{EAPIs}} \\
-& & 6 & 7 & 8 \\
+\multicolumn{4}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 & 9 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Ref.}} &
-\multicolumn{3}{c}{\textbf{EAPIs}} \\
-& & 6 & 7 & 8 \\
+\multicolumn{4}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 & 9 \\
 \midrule
 \endhead
 \midrule
@@ -27,146 +27,146 @@ would have identical entries for all listed EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & No & No \\
+    Optional & No & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-    4.2 & 4.2 & 5.0 \\
+    4.2 & 4.2 & 5.0 & 5.0 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 Working dir in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Empty \\
+    Any & Any & Empty & Empty \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    6 & 6 & 8 \\
+    6 & 6 & 8 & 8 \\
 
 Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & 2.7 & 2.7 \\
+    Any & 2.7 & 2.7 & 2.7 \\
 
 \t{nonfatal} function and external & \compactfeatureref{nonfatal} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
+    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{econf -{}-with-sysroot} & \compactfeatureref{econf-options} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \end{longtable}
 
@@ -347,7 +347,15 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, \featureref{unpack-extensions}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\section{EAPI 9}
+
+EAPI 9 is EAPI 8 with the following changes:
+
+\begin{compactitem}
+\item None
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{9}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 

diff --git a/eapis.tex b/eapis.tex
index a6c8109..fd0420c 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -17,8 +17,8 @@ EAPIs are also used for profile directories, as described in section~\ref{sec:pr
 
 \section{Defined EAPIs}
 
-\ChangeWhenAddingAnEAPI{8}
-This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', and~`8'.
+\ChangeWhenAddingAnEAPI{9}
+This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', `8', and~`9'.
 EAPI~`0' is the `original' base EAPI\@. Each of the later EAPIs contains a number of extensions
 to its predecessor.
 

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index a55c366..58df6bd 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -263,7 +263,7 @@ variable.
 \end{longtable}
 \end{landscape}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
     \begin{tabular}{lllllll}
@@ -279,12 +279,12 @@ variable.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4                 & Yes & Yes & Yes & No  & No  & No  \\
       5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
     \begin{tabular}{lllllll}
@@ -299,12 +299,12 @@ variable.
       \midrule
       0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
       4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
-      7, 8              & No  & No  & No  & No  & No  & No  \\
+      7, 8, 9           & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
     \begin{tabular}{lllll}
@@ -317,7 +317,7 @@ variable.
       \midrule
       0, 1, 2           & No  & No  & No  & No  \\
       3, 4, 5, 6        & Yes & Yes & Yes & No  \\
-      7, 8              & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -341,7 +341,7 @@ must be unset, for EAPIs listed in table~\ref{tab:profile-env-unset} as supporti
 ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in
 table~\ref{tab:locale-settings}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Locale settings for EAPIs}
     \label{tab:locale-settings}
     \begin{tabular}{ll}
@@ -350,7 +350,7 @@ table~\ref{tab:locale-settings}.
       \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & Undefined \\
-      6, 7, 8           & Yes       \\
+      6, 7, 8, 9        & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -436,7 +436,7 @@ contain at most one value.
 \subsection{Offset-prefix variables}
 \label{sec:offset-vars}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix}
     \label{tab:offset-support-table}
     \begin{tabular}{ll}
@@ -444,8 +444,8 @@ contain at most one value.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports offset-prefix?}}\\
       \midrule
-      0, 1, 2           & No  \\
-      3, 4, 5, 6, 7, 8  & Yes \\
+      0, 1, 2             & No  \\
+      3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -476,7 +476,7 @@ specifies the system root directory, it will consist of a single slash (\t{/}).
 a trailing slash, the package manager guarantees that a trailing slash will never be present.
 If the path specifies the system root directory, it will be empty.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
     \begin{tabular}{lll}
@@ -488,7 +488,7 @@ If the path specifies the system root directory, it will be empty.
       \t{D}, \t{ED} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & always & always \\
-      7, 8                & never  & never  \\
+      7, 8, 9             & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 25ba28e..84d27b7 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -18,7 +18,7 @@ certain variables and functions (see chapters~\ref{ch:ebuild-vars} and~\ref{ch:e
 for specific information), and must not call any external programs, write anything to standard
 output or standard error, or modify the state of the system in any way.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Bash version and options}
     \label{tab:bash-version}
     \begin{tabular}{lll}
@@ -29,7 +29,7 @@ output or standard error, or modify the state of the system in any way.
       \midrule
       0, 1, 2, 3, 4, 5  & 3.2 & No  \\
       6, 7              & 4.2 & Yes \\
-      8                 & 5.0 & Yes \\
+      8, 9              & 5.0 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 0c745c3..c878439 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -46,7 +46,7 @@ fallback to \t{WORKDIR} is used:
     executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Initial working directory in \t{pkg_*} phase functions for EAPIs}
     \label{tab:function-dirs}
     \begin{tabular}{ll}
@@ -55,12 +55,12 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Initial working directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
-      8                       & Empty \\
+      8, 9                    & Empty \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
     \label{tab:s-fallback-table}
     \begin{tabular}{ll}
@@ -69,7 +69,7 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Fallback to \t{WORKDIR} permitted?}} \\
       \midrule
       0, 1, 2, 3        & Always            \\
-      4, 5, 6, 7, 8     & Conditional error \\
+      4, 5, 6, 7, 8, 9  & Conditional error \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -91,7 +91,7 @@ before the next phase is executed.
 
 \t{pkg_pretend} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_pretend}}
     \label{tab:pkg-pretend-table}
     \begin{tabular}{ll}
@@ -100,7 +100,7 @@ before the next phase is executed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_pretend}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -149,7 +149,7 @@ listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, respectively
 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_prepare} support and behaviour for EAPIs}
     \label{tab:src-prepare-table}
     \begin{tabular}{lll}
@@ -161,7 +161,7 @@ the \t{src_prepare} function is a no-op.
       0, 1              & No  & Not applicable \\
       2, 3, 4, 5        & Yes & no-op          \\
       6, 7              & Yes & 6              \\
-      8                 & Yes & 8              \\
+      8, 9              & Yes & 8              \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -206,7 +206,7 @@ The \t{src_configure} function configures the package's build environment. The d
 implementation used when the ebuild lacks the \t{src_configure} function shall behave as in
 listing~\ref{lst:src-configure-2}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{src_configure}}
     \label{tab:src-configure-table}
     \begin{tabular}{ll}
@@ -214,8 +214,8 @@ listing~\ref{lst:src-configure-2}.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{src_configure}?}} \\
       \midrule
-      0, 1                & No  \\
-      2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0, 1                   & No  \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -244,7 +244,7 @@ implementation used when the ebuild lacks the \t{src_prepare} function shall beh
 listing~\ref{lst:src-compile-0}, listing~\ref{lst:src-compile-1} or listing~\ref{lst:src-compile-2},
 respectively.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_compile} behaviour for EAPIs}
     \label{tab:src-compile-table}
     \begin{tabular}{ll}
@@ -252,9 +252,9 @@ respectively.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Format}} \\
       \midrule
-      0                   & 0 \\
-      1                   & 1 \\
-      2, 3, 4, 5, 6, 7, 8 & 2 \\
+      0                      & 0 \\
+      1                      & 1 \\
+      2, 3, 4, 5, 6, 7, 8, 9 & 2 \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -317,7 +317,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_test} behaviour for EAPIs}
     \label{tab:src-test-table}
     \begin{tabular}{ll}
@@ -326,7 +326,7 @@ be disabled by user too, using a PM-specific mechanism.
       \multicolumn{1}{c}{\textbf{Supports parallel tests?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -346,7 +346,7 @@ listing~\ref{lst:src-install-4} or listing~\ref{lst:src-install-6}, respectively
 For other EAPIs, the default implementation used when the ebuild lacks the \t{src_install} function
 is a no-op.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_install} behaviour for EAPIs}
     \label{tab:src-install-table}
     \begin{tabular}{ll}
@@ -356,7 +356,7 @@ is a no-op.
       \midrule
       0, 1, 2, 3        & no-op \\
       4, 5              & 4     \\
-      6, 7, 8           & 6     \\
+      6, 7, 8, 9        & 6     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -449,7 +449,7 @@ that dependencies may not be installed.
 
 \t{pkg_info} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_info} on non-installed packages}
     \label{tab:pkg-info-table}
     \begin{tabular}{ll}
@@ -458,7 +458,7 @@ that dependencies may not be installed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_info} on non-installed packages?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -480,7 +480,7 @@ named \t{default_}(phase) that behaves as the default implementation for that EA
 when executing any ebuild phase listed in the table. Ebuilds must not call these functions except
 when in the phase in question.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{default_} phase functions}
     \label{tab:default-phase-function-table}
     \begin{tabular}{l P{26em}}
@@ -491,7 +491,7 @@ when in the phase in question.
       0, 1              & None \\
       2, 3              & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test} \\
-      4, 5, 6, 7, 8     & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
+      4, 5, 6, 7, 8, 9  & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test}, \t{src_install} \\
       \bottomrule
     \end{tabular}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 5f3f583..c4413f5 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -90,7 +90,7 @@ defined by an eclass.
 \item[IDEPEND] See chapter~\ref{ch:dependencies}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{IUSE} defaults}
     \label{tab:iuse-defaults-table}
     \begin{tabular}{ll}
@@ -98,13 +98,13 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{IUSE} defaults?}} \\
       \midrule
-      0                      & No  \\
-      1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0                         & No  \\
+      1, 2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
     \begin{tabular}{lll}
@@ -114,7 +114,7 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6, 7, 8     & Yes        & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -179,7 +179,7 @@ selective URI restrictions, the URI protocol can be prefixed by an additional \t
 restriction for the URI (but not the implied mirror restriction). If the ebuild is fetch or mirror
 restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for the URI.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows and selective URI restrictions}
     \label{tab:uri-arrows-table}
     \begin{tabular}{lll}
@@ -190,7 +190,7 @@ restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for
       \midrule
       0, 1              & No  & No  \\
       2, 3, 4, 5, 6, 7  & Yes & No  \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -275,7 +275,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} default}
     \label{tab:rdepend-depend-table}
     \begin{tabular}{ll}
@@ -284,7 +284,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
       \multicolumn{1}{c}{\textbf{\t{RDEPEND=DEPEND}?}} \\
       \midrule
       0, 1, 2, 3        & Yes \\
-      4, 5, 6, 7, 8     & No  \\
+      4, 5, 6, 7, 8, 9  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -319,7 +319,7 @@ not be exported to the ebuild environment:
 \note{Thus, by extension of section~\ref{sec:metadata-invariance}, phase functions must not be
 defined based upon any variant condition.}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{DEFINED_PHASES}}
     \label{tab:defined-phases-table}
     \begin{tabular}{ll}
@@ -328,7 +328,7 @@ defined based upon any variant condition.}
       \multicolumn{1}{c}{\textbf{Supports \t{DEFINED_PHASES}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally \\
-      4, 5, 6, 7, 8     & Yes        \\
+      4, 5, 6, 7, 8, 9  & Yes        \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eclasses.tex b/eclasses.tex
index e23dcd8..3f8f653 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -42,7 +42,7 @@ the previous one is loaded. For EAPIs listed in table~\ref{tab:accumulate-vars}
 value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is done after
 the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across eclasses}
     \label{tab:accumulate-vars}
     \begin{tabular}{lll}
@@ -52,7 +52,7 @@ the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
       \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
-      8                       & Yes & Yes \\
+      8, 9                    & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/merge.tex b/merge.tex
index 6fcfeec..ab320a6 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Preservation of file modification times (mtimes)}
     \label{tab:mtime-preserve}
     \begin{tabular}{ll}
@@ -94,8 +94,8 @@ is undefined.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\
       \midrule
-      0, 1, 2           & Undefined \\
-      3, 4, 5, 6, 7, 8  & Yes       \\
+      0, 1, 2             & Undefined \\
+      3, 4, 5, 6, 7, 8, 9 & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index d4dcffe..7d2511f 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -32,7 +32,7 @@ The following commands affect this behaviour:
     option and in EAPIs supporting this option, see table~\ref{tab:die-properties}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
     \begin{tabular}{llll}
@@ -44,7 +44,7 @@ The following commands affect this behaviour:
       \midrule
       0, 1, 2, 3        & Non-zero exit & No  & n/a \\
       4, 5, 6           & Aborts        & Yes & No  \\
-      7, 8              & Aborts        & Yes & Yes \\
+      7, 8, 9           & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -55,7 +55,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{8}
+\ChangeWhenAddingAnEAPI{9}  % two places
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
     \begin{tabular}{lllllll}
@@ -73,7 +73,7 @@ called, the package manager must abort the build process indicating an error.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4, 5              & Yes & Yes & No  & No  & No  & No  \\
       6                 & Yes & Yes & Yes & No  & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \midrule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{6}{c}{\textbf{Command banned?}} \\
@@ -83,7 +83,7 @@ called, the package manager must abort the build process indicating an error.
       \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-      8                       & Yes & Yes & Yes & & & \\
+      8, 9                    & Yes & Yes & Yes & & & \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -121,7 +121,7 @@ are given, \t{-r} is assumed.
     otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Package manager query command options supported by EAPIs}
     \label{tab:pm-query-options}
     \begin{tabular}{lllll}
@@ -134,7 +134,7 @@ are given, \t{-r} is assumed.
       \midrule
       0, 1, 2, 3, 4     & No  & No  & No  & No  \\
       5, 6              & Yes & No  & No  & No  \\
-      7, 8              & No  & Yes & Yes & Yes \\
+      7, 8, 9           & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -171,7 +171,7 @@ output, using stdout as an output facility is forbidden.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
     \begin{tabular}{lll}
@@ -181,7 +181,7 @@ output, using stdout as an output facility is forbidden.
       \multicolumn{1}{c}{\textbf{Supports \t{eqawarn}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes & No  \\
-      7, 8                & No  & Yes \\
+      7, 8, 9             & No  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -203,7 +203,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
     \label{tab:die-properties}
     \begin{tabular}{lll}
@@ -216,7 +216,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
       6                 & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -280,7 +280,7 @@ Ebuilds must not run any of these commands once the current phase function has r
     subsequent calls, the command will do nothing and return~0.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Patch commands for EAPIs}
     \label{tab:patch-commands}
     \begin{tabular}{lll}
@@ -290,7 +290,7 @@ Ebuilds must not run any of these commands once the current phase function has r
       \multicolumn{1}{c}{\textbf{\t{eapply_user}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -345,7 +345,7 @@ commands once the current phase function has returned.
         \t{-{}-enable-static} occurs in the output of \t{configure -{}-help}.
     \end{itemize}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
         \begin{tabular}{lllll}
@@ -359,7 +359,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
           6                 & No  & Yes & Yes & No  \\
           7                 & No  & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & Yes \\
+          8, 9              & Yes & Yes & Yes & Yes \\
           \midrule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
@@ -369,7 +369,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3        & No  & No  & No  & \\
           4                 & Yes & No  & No  & \\
           5, 6, 7           & Yes & Yes & No  & \\
-          8                 & Yes & Yes & Yes & \\
+          8, 9              & Yes & Yes & Yes & \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -670,7 +670,7 @@ dosym_relative_path() {
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dodoc -r}}
     \label{tab:dodoc-table}
     \begin{tabular}{ll}
@@ -679,12 +679,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{dodoc -r}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}}
     \label{tab:doheader-table}
     \begin{tabular}{ll}
@@ -693,12 +693,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{doheader} and \t{newheader}?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting symlinks for \t{doins}}
     \label{tab:doins-table}
     \begin{tabular}{ll}
@@ -707,12 +707,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{doins} supports symlinks?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{doman} language support options for EAPIs}
     \label{tab:doman-table}
     \begin{tabular}{lll}
@@ -723,12 +723,12 @@ dosym_relative_path() {
       \midrule
       0, 1              & No  & Not applicable \\
       2, 3              & Yes & No             \\
-      4, 5, 6, 7, 8     & Yes & Yes            \\
+      4, 5, 6, 7, 8, 9  & Yes & Yes            \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting stdin for \t{new*} commands}
     \label{tab:newfoo-stdin-table}
     \begin{tabular}{ll}
@@ -737,12 +737,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{new*} can read from stdin?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{domo} destination path in EAPIs}
     \label{tab:domo-path}
     \begin{tabular}{ll}
@@ -751,12 +751,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Destination path}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
-      7, 8                & \t{/usr/share/locale} \\
+      7, 8, 9             & \t{/usr/share/locale} \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dosym -r}}
     \label{tab:dosym-r}
     \begin{tabular}{ll}
@@ -765,7 +765,7 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative paths?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  \\
-      8                       & Yes \\
+      8, 9                    & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -807,7 +807,7 @@ function has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{insopts} for EAPIs}
     \label{tab:insopts-commands}
     \begin{tabular}{lllll}
@@ -819,12 +819,12 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doheader}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes & Yes & Yes \\
-      8                       & Yes & No  & No  & No  \\
+      8, 9                    & Yes & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{exeopts} for EAPIs}
     \label{tab:exeopts-commands}
     \begin{tabular}{lll}
@@ -834,7 +834,7 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doinitd}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes \\
-      8                       & Yes & No  \\
+      8, 9                    & Yes & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -911,7 +911,7 @@ any of these functions from any other phase.
     supporting \t{dostrip}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands controlling manipulation of files in the staging area in EAPIs}
     \label{tab:staging-area-commands}
     \begin{tabular}{lll}
@@ -922,7 +922,7 @@ any of these functions from any other phase.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6           & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -969,7 +969,7 @@ table~\ref{tab:use-list-strictness}.
     table~\ref{tab:use-list-functions} as supporting \t{in_iuse}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI behaviour for use queries not in \t{IUSE_EFFECTIVE}}
     \label{tab:use-list-strictness}
     \begin{tabular}{ll}
@@ -978,12 +978,12 @@ table~\ref{tab:use-list-strictness}.
       \multicolumn{1}{c}{\textbf{Behaviour}} \\
       \midrule
       0, 1, 2, 3        & Undefined \\
-      4, 5, 6, 7, 8     & Error     \\
+      4, 5, 6, 7, 8, 9  & Error     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for EAPIs}
     \label{tab:use-list-args}
     \begin{tabular}{lll}
@@ -995,12 +995,12 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6, 7        & No  & Yes \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{usex} and \t{in_iuse}}
     \label{tab:use-list-functions}
     \begin{tabular}{lll}
@@ -1011,7 +1011,7 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3, 4     & No  & No  \\
       5                 & Yes & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1096,7 +1096,7 @@ the second, inclusively.
     section~\ref{sec:version-spec}. Comparison is done using algorithm~\ref{alg:version-comparison}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
     \label{tab:version-commands}
     \begin{tabular}{llll}
@@ -1107,7 +1107,7 @@ the second, inclusively.
       \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-      7, 8                & Yes & Yes & Yes \\
+      7, 8, 9             & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1184,7 +1184,7 @@ has returned.
     \featurelabel{unpack-ignore-case} \t{unpack} matches filename extensions in a case-insensitive
     manner, for EAPIs listed such in table~\ref{tab:unpack-behaviour}.
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} behaviour for EAPIs}
         \label{tab:unpack-behaviour}
         \begin{tabular}{lll}
@@ -1194,12 +1194,12 @@ has returned.
           \multicolumn{1}{c}{\textbf{Case-insensitive matching?}} \\
           \midrule
           0, 1, 2, 3, 4, 5  & No  & No  \\
-          6, 7, 8           & Yes & Yes \\
+          6, 7, 8, 9        & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} extensions for EAPIs}
         \label{tab:unpack-extensions-table}
         \begin{tabular}{llllllll}
@@ -1215,7 +1215,7 @@ has returned.
           0, 1, 2           & No  & No  & No  & Yes & Yes & Yes \\
           3, 4, 5           & Yes & Yes & No  & Yes & Yes & Yes \\
           6, 7              & Yes & Yes & Yes & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & No  & No  & No  \\
+          8, 9              & Yes & Yes & Yes & No  & No  & No  \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -1283,7 +1283,7 @@ has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
     \label{tab:misc-commands}
     \begin{tabular}{llll}
@@ -1295,7 +1295,7 @@ has returned.
       \midrule
       0, 1              & No  & No  & No  \\
       2, 3, 4, 5        & Yes & No  & No  \\
-      6, 7, 8           & Yes & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pms.tex b/pms.tex
index 97d6d30..e066c2d 100644
--- a/pms.tex
+++ b/pms.tex
@@ -21,8 +21,8 @@
     pdfkeywords={Gentoo, package manager, specification},
 }
 
-\CurrentEAPIIs{8}
-\ChangeWhenAddingAnEAPI{8}
+\CurrentEAPIIs{9}
+\ChangeWhenAddingAnEAPI{9}
 
 \begin{document}
 \maketitle

diff --git a/profile-variables.tex b/profile-variables.tex
index ba40bf4..0f2dc3c 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -40,7 +40,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs}
     \label{tab:profile-iuse-injection-table}
     \begin{tabular}{ll}
@@ -49,12 +49,12 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined unsetting of variables in EAPIs}
     \label{tab:profile-env-unset}
     \begin{tabular}{ll}
@@ -63,7 +63,7 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports \t{ENV_UNSET}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/profiles.tex b/profiles.tex
index 30da81b..8d8226a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -78,7 +78,7 @@ in that directory, unless their name begins with a dot, will be concatenated in
 filename in the POSIX locale and the result will be processed as if it were a single file.
 Any subdirectories will be ignored.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting directories for profile files}
     \label{tab:profile-file-dirs}
     \begin{tabular}{ll}
@@ -87,7 +87,7 @@ Any subdirectories will be ignored.
       \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -123,7 +123,7 @@ it is actually installed. Because it has severe adverse effects on USE-based and
 dependencies, its use is strongly deprecated and package manager support must be regarded as purely
 optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{package.provided} in profiles}
     \label{tab:package-provided}
     \begin{tabular}{ll}
@@ -132,7 +132,7 @@ optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
       \multicolumn{1}{c}{\textbf{Supports \t{package.provided}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Optionally \\
-      7, 8                & No         \\
+      7, 8, 9             & No         \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -165,7 +165,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile directory support for masking/forcing use flags in stable versions only}
     \label{tab:profile-stablemask}
     \begin{tabular}{ll}
@@ -174,7 +174,7 @@ stable in a package.
       \multicolumn{1}{c}{\textbf{Supports masking/forcing use flags in stable versions?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/tree-layout.tex b/tree-layout.tex
index aa04d3d..b988f6e 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -127,7 +127,7 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
     \label{tab:package-mask-dir}
     \begin{tabular}{ll}
@@ -136,7 +136,7 @@ manager must ignore any files in this directory that it does not recognise.
       \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -233,7 +233,7 @@ Any name that has appeared as the origin of a move must not be reused in the fut
 that has appeared as the origin of a slot move may not be used by packages matching the spec of
 that slot move in the future.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Naming rules for files in \t{updates} directory for EAPIs}
     \label{tab:updates-filenames}
     \begin{tabular}{ll}
@@ -242,7 +242,7 @@ that slot move in the future.
       \multicolumn{1}{c}{\textbf{Files per quarter year?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes \\
-      8                       & No  \\
+      8, 9                    & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-21  9:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-21  9:42 UTC (permalink / raw
  To: gentoo-commits

commit:     b469e965174baa27f344faeb23fa0e8e0eacc914
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 21 09:33:45 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Aug 21 09:33:45 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=b469e965

eapi-differences.tex: Small updates to the feature table

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 900f415..a5ba486 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -111,7 +111,7 @@ Use dependencies & \compactfeatureref{use-deps} &
 \t{!!}\ blockers & \compactfeatureref{bang-strength} &
     * & Strong & Strong & Strong & Strong \\
 
-Working directory in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
+Working dir in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
     Any & Any & Any & Any & Empty \\
 
 \t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
@@ -152,7 +152,10 @@ Parallel tests & \compactfeatureref{parallel-tests} &
     \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
         \t{src_compile}, \t{src_test}, \t{src_install} \\
 
-Accumulate \t{RESTRICT} etc. & \compactfeatureref{accumulate-vars} &
+Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
+    No & No & No & No & Yes \\
+
+Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
     No & No & No & No & Yes \\
 
 \t{AA} & \compactfeatureref{aa} &


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-21  9:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-21  9:42 UTC (permalink / raw
  To: gentoo-commits

commit:     0dd597e3ee3a951ad9b662a474632c0f9e0169de
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:30:11 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Aug 21 09:36:10 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=0dd597e3

EAPI 9 profile parent files can contain comments

Bug: https://bugs.gentoo.org/470094
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 ++++-
 profiles.tex         | 20 +++++++++++++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 401fdb7..5559cb9 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -32,6 +32,9 @@ would have identical entries for all listed EAPIs.}
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
     No & No & Yes & Yes \\
 
+Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
+    No & No & No & Yes \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & Yes & Yes & Yes \\
 
@@ -352,7 +355,7 @@ EAPI 8 is EAPI 7 with the following changes:
 EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 8d8226a..6fa8a1c 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -25,7 +25,25 @@ first, left to right, with duplicate parent paths being sourced for every time t
 It is illegal for a profile's parent tree to contain cycles. Package manager behaviour upon
 encountering a cycle is undefined.
 
-This file must not contain comments, blank lines or make use of line continuations.
+This file must not make use of line continuations.
+
+\featurelabel{parent-comments} For EAPIs listed in table~\ref{tab:profile-parent-comments} as
+allowing comments, blank lines and lines beginning with a \t{\#} are discarded. For other EAPIs,
+this file must not contain comments or blank lines.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs allowing comments in \t{parent} file}
+    \label{tab:profile-parent-comments}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Allows comments?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+      9                         & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{The eapi file}
 \label{sec:profile-eapi}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-21  9:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-21  9:42 UTC (permalink / raw
  To: gentoo-commits

commit:     e08c3e54852cd46c7b53f9ec84c8924163264ea2
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:32:43 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Aug 21 09:36:11 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e08c3e54

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 +++++
 profiles.tex         | 23 +++++++++++++++++++++--
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 5559cb9..58ae07d 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -35,6 +35,9 @@ Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
 Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
     No & No & No & Yes \\
 
+Default EAPI for profiles & \compactfeatureref{profile-eapi-default} &
+    0 & 0 & 0 & Top-level \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & Yes & Yes & Yes \\
 
@@ -356,6 +359,8 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
+\item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 6fa8a1c..de59f0a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -50,8 +50,27 @@ this file must not contain comments or blank lines.
 A profile directory may contain an \t{eapi} file. This file, if it exists, must contain a single
 line with the name of an EAPI\@. This specifies the EAPI to use when handling the directory in
 question; a package manager must not attempt to use any profile using a directory which requires an
-EAPI it does not support. If no \t{eapi} file is present, EAPI 0 shall be used. The EAPI is neither
-inherited via the \t{parent} file nor in subdirectories.
+EAPI it does not support.
+
+\featurelabel{profile-eapi-default} If no \t{eapi} file is present, the default depends on the EAPI
+of the top-level profiles directory (see section~\ref{sec:profiles-dir}). That EAPI shall be used
+if table~\ref{tab:profile-eapi-default} lists it as ``top-level''. Otherwise, EAPI 0 shall be used.
+
+The EAPI is neither inherited via the \t{parent} file nor in subdirectories.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Default EAPI for profiles}
+    \label{tab:profile-eapi-default}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Default EAPI?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & 0         \\
+      9                         & Top-level \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{deprecated}
 If a profile contains a file named \t{deprecated}, it is treated as such. The first line of this


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-21  9:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-21  9:42 UTC (permalink / raw
  To: gentoo-commits

commit:     3fb704b366a9c7b11806e23f271156634bc56a4f
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:57:30 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Aug 21 09:36:11 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=3fb704b3

EAPI 9: econf matches configure --help output better

Bug: https://bugs.gentoo.org/815169
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 58ae07d..cdf71f3 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -141,6 +141,9 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
 \t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
     No & No & Yes & Yes \\
 
+\t{econf} better matching of options & \compactfeatureref{econf-options} &
+    No & No & No & Yes \\
+
 \t{domo} destination path & \compactfeatureref{domo-path} &
     \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
@@ -360,6 +363,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item \t{econf} matches \t{configure -{}-help} output better, \featureref{econf-options}.
 
 \end{compactitem}
 

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7d2511f..e532026 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -345,6 +345,10 @@ commands once the current phase function has returned.
         \t{-{}-enable-static} occurs in the output of \t{configure -{}-help}.
     \end{itemize}
 
+    For EAPIs listed in table~\ref{tab:econf-match-end} as matching the end of the option string,
+    a string in \t{configure -{}-help} output will only match if is is not immediately followed by
+    any of the characters \t{[A-Za-z0-9+_.-]}.
+
     \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
@@ -374,6 +378,20 @@ commands once the current phase function has returned.
         \end{tabular}
     \end{centertable}
 
+    \ChangeWhenAddingAnEAPI{9}
+    \begin{centertable}{EAPIs matching end of option string in \t{configure -{}-help} output}
+        \label{tab:econf-match-end}
+        \begin{tabular}{ll}
+          \toprule
+          \multicolumn{1}{c}{\textbf{EAPI}} &
+          \multicolumn{1}{c}{\textbf{Matches end of option string?}} \\
+          \midrule
+          0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+          9                         & Yes \\
+          \bottomrule
+        \end{tabular}
+    \end{centertable}
+
     Note that the \t{\$\{EPREFIX\}} component represents the same offset-prefix as described in
     table~\ref{tab:defined-vars}. It facilitates offset-prefix installations which is supported by
     EAPIs listed in table~\ref{tab:offset-env-vars-table}. When no offset-prefix installation is in


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-22 18:30 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-22 18:30 UTC (permalink / raw
  To: gentoo-commits

commit:     153732bdc4d6aaa8076932e2ad583dbfafc1726b
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:32:43 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Aug 22 18:29:58 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=153732bd

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 +++++
 profiles.tex         | 23 +++++++++++++++++++++--
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 682b336..9e7f269 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -35,6 +35,9 @@ Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
 Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
     No & No & No & Yes \\
 
+Default EAPI for profiles & \compactfeatureref{profile-eapi-default} &
+    0 & 0 & 0 & Top-level \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & Yes & Yes & Yes \\
 
@@ -356,6 +359,8 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
+\item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 6fa8a1c..de59f0a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -50,8 +50,27 @@ this file must not contain comments or blank lines.
 A profile directory may contain an \t{eapi} file. This file, if it exists, must contain a single
 line with the name of an EAPI\@. This specifies the EAPI to use when handling the directory in
 question; a package manager must not attempt to use any profile using a directory which requires an
-EAPI it does not support. If no \t{eapi} file is present, EAPI 0 shall be used. The EAPI is neither
-inherited via the \t{parent} file nor in subdirectories.
+EAPI it does not support.
+
+\featurelabel{profile-eapi-default} If no \t{eapi} file is present, the default depends on the EAPI
+of the top-level profiles directory (see section~\ref{sec:profiles-dir}). That EAPI shall be used
+if table~\ref{tab:profile-eapi-default} lists it as ``top-level''. Otherwise, EAPI 0 shall be used.
+
+The EAPI is neither inherited via the \t{parent} file nor in subdirectories.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Default EAPI for profiles}
+    \label{tab:profile-eapi-default}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Default EAPI?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & 0         \\
+      9                         & Top-level \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{deprecated}
 If a profile contains a file named \t{deprecated}, it is treated as such. The first line of this


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-22 18:30 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-22 18:30 UTC (permalink / raw
  To: gentoo-commits

commit:     78f161bf267da8b25d58b927cc334212f3c0a054
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:30:11 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Aug 22 18:29:57 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=78f161bf

EAPI 9 profile parent files can contain comments

Bug: https://bugs.gentoo.org/470094
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 ++++-
 profiles.tex         | 20 +++++++++++++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index e48ea54..682b336 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -32,6 +32,9 @@ have identical entries for all listed EAPIs.}
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
     No & No & Yes & Yes \\
 
+Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
+    No & No & No & Yes \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & Yes & Yes & Yes \\
 
@@ -352,7 +355,7 @@ EAPI 8 is EAPI 7 with the following changes:
 EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 8d8226a..6fa8a1c 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -25,7 +25,25 @@ first, left to right, with duplicate parent paths being sourced for every time t
 It is illegal for a profile's parent tree to contain cycles. Package manager behaviour upon
 encountering a cycle is undefined.
 
-This file must not contain comments, blank lines or make use of line continuations.
+This file must not make use of line continuations.
+
+\featurelabel{parent-comments} For EAPIs listed in table~\ref{tab:profile-parent-comments} as
+allowing comments, blank lines and lines beginning with a \t{\#} are discarded. For other EAPIs,
+this file must not contain comments or blank lines.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs allowing comments in \t{parent} file}
+    \label{tab:profile-parent-comments}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Allows comments?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+      9                         & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{The eapi file}
 \label{sec:profile-eapi}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-22 18:30 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-22 18:30 UTC (permalink / raw
  To: gentoo-commits

commit:     591f04599193765ae803fa0d681a7d7013e703bf
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 19 21:22:40 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Aug 22 18:29:56 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=591f0459

EAPI feature table: Don't use a landscape table

Drop EAPIs 0 to 5 from the table, as well as items that would have
identical entries for all listed EAPIs.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex | 321 ++++++++++-----------------------------------------
 pms.cls              |   2 +-
 2 files changed, 61 insertions(+), 262 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a5ba486..c727758 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,39 +1,24 @@
 \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, 2, 3, and~4 have been consolidated into a single column in the table
-below; entries marked with an asterisk differ between these EAPIs. See the 2012-09-20 edition
-of this document for a complete table of previous EAPIs.}
-% 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
+For lack of space, EAPIs 0 to~5 have been omitted from the table below, as well as items that would
+have identical entries for all listed EAPIs.}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{@{}lllll@{}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{3}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{3}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 \\
 \midrule
 \endhead
 \midrule
@@ -42,334 +27,148 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & No & No & Yes \\
+    No & No & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & Optional & Optional & No & No \\
-
-Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & Yes & Yes & Yes & Yes \\
+    Optional & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\
-
-\t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & Yes & Yes & Yes \\
-
-\t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{REQUIRED_USE} & \compactfeatureref{required-use} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{PROPERTIES} & \compactfeatureref{properties} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes \\
+    4.2 & 4.2 & 5.0 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & No & No & Yes \\
-
-\t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    * & No & No & No & No \\
-
-\t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-    * & Yes & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & No & No & Yes \\
-
-\t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & Yes & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & Yes & Yes & No & No \\
-
-Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named and Operator & Named and Operator & Named and Operator & Named and Operator \\
-
-Sub-slots & \compactfeatureref{sub-slot} &
-    No & Yes & Yes & Yes & Yes \\
-
-Use dependencies & \compactfeatureref{use-deps} &
-    * & 4-style & 4-style & 4-style & 4-style \\
-
-\t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak \\
-
-\t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong \\
+    Yes & No & No \\
 
 Working dir in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Any & Any & Empty \\
-
-\t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    * & Conditional & Conditional & Conditional & Conditional \\
-
-\t{pkg_pretend} & \compactfeatureref{pkg-pretend} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{src_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes \\
+    Any & Any & Empty \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & 6 & 6 & 8 \\
-
-\t{src_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{src_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 \\
-
-Parallel tests & \compactfeatureref{parallel-tests} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{src_install} style & \compactfeatureref{src-install} &
-    * & 4 & 6 & 6 & 6 \\
-
-\t{pkg_info} & \compactfeatureref{pkg-info} &
-    * & Both & Both & Both & Both \\
-
-\t{default_} phase functions & \compactfeatureref{default-phase-funcs} &
-    * &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} \\
+    6 & 6 & 8 \\
 
 Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes \\
+    No & No & Yes \\
 
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes \\
-
-\t{AA} & \compactfeatureref{aa} &
-    * & No & No & No & No \\
+    No & No & Yes \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & Yes & Yes & No & No \\
-
-\t{KV} & \compactfeatureref{kv} &
-    * & No & No & No & No \\
-
-\t{EBUILD_PHASE_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{MERGE_TYPE} & \compactfeatureref{merge-type} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & No & No \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & No & No & Yes & Yes \\
-
-Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Yes & Yes & Yes \\
-
-Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{REPLACING_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{REPLACED_BY_VERSION} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    * & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & Any & Any & 2.7 & 2.7 \\
-
-\t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Yes & Yes & Yes & Yes \\
-
-Most utilities die & \compactfeatureref{die-on-failure} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{nonfatal} & \compactfeatureref{nonfatal} &
-    * & Yes & Yes & Function / external & Function / external \\
-
-\t{dohard} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
+    Any & 2.7 & 2.7 \\
 
-\t{dosed} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
-
-\t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned \\
+\t{nonfatal} function and external & \compactfeatureref{nonfatal} &
+    No & Yes & Yes \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
-    \t{-b}, \t{-d}, \t{-r} \\
+    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & No & No & Yes & Yes \\
-
-\t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & No & No & Yes & Yes \\
-
-\t{eapply} & \compactfeatureref{eapply} &
-    No & No & Yes & Yes & Yes \\
-
-\t{eapply_user} & \compactfeatureref{eapply-user} &
-    No & No & Yes & Yes & Yes \\
-
-\t{econf} arguments & \compactfeatureref{econf-options} &
-    * &
-    disable dependency tracking, disable silent rules &
-    disable dependency tracking, disable silent rules, docdir, htmldir &
-    disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot &
-    disable dependency tracking, disable silent rules, disable static,
-    datarootdir, docdir, htmldir, with sysroot \\
-
-\t{dodoc -r} & \compactfeatureref{dodoc} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{doheader} & \compactfeatureref{doheader} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
-\t{doins} handles symlinks & \compactfeatureref{doins} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
+    No & No & Yes \\
 
-\t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-with-sysroot} & \compactfeatureref{econf-options} &
+    No & Yes & Yes \\
 
-\t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
+    No & No & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & No & No & Yes \\
-
-\t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & Yes & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 \t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & Yes & Yes & No \\
-
-Controllable compression & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{docompress} & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & Yes & No \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & No & No & Yes \\
-
-\t{use_with} empty third arg & \compactfeatureref{use-with} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{usex} & \compactfeatureref{usex} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{in_iuse} & \compactfeatureref{in-iuse} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & No & No & Yes & Yes \\
-
-\t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & Yes & Yes & Yes \\
-
-\t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
-
-\t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & Yes & Yes & Yes \\
-
-\t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & Yes & Yes & Yes \\
-
-\t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & No & Yes & Yes & Yes \\
-
-File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & Yes & No \\
 
 \end{longtable}
-\end{landscape}
 
 \chapter{Differences Between EAPIs}
 

diff --git a/pms.cls b/pms.cls
index b29a9c3..d4b416f 100644
--- a/pms.cls
+++ b/pms.cls
@@ -82,7 +82,7 @@
         \framebox{\textsc{#1}}}
 }{%
     \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
-    \newcommand{\compactfeatureref}[1]{#1~p\pageref{feat:#1}}
+    \newcommand{\compactfeatureref}[1]{p.\,\pageref{feat:#1}}
     \newcommand{\featurelabel}[1]{\leavevmode\label{feat:#1}%
         \marginnote{\framebox{\textsc{#1}}}\ignorespaces}
 }


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-22 18:30 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-22 18:30 UTC (permalink / raw
  To: gentoo-commits

commit:     361341d3cfe1437f55f5c58a836899207393c6e2
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  3 16:32:47 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Aug 22 18:29:57 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=361341d3

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 commands.tex          |   4 +-
 dependencies.tex      |  26 +++++------
 eapi-differences.tex  | 116 +++++++++++++++++++++++++++-----------------------
 eapis.tex             |   4 +-
 ebuild-env-vars.tex   |  26 +++++------
 ebuild-format.tex     |   4 +-
 ebuild-functions.tex  |  46 ++++++++++----------
 ebuild-vars.tex       |  22 +++++-----
 eclasses.tex          |   4 +-
 merge.tex             |   6 +--
 pkg-mgr-commands.tex  | 100 +++++++++++++++++++++----------------------
 pms.tex               |   4 +-
 profile-variables.tex |   8 ++--
 profiles.tex          |  12 +++---
 tree-layout.tex       |   8 ++--
 15 files changed, 199 insertions(+), 191 deletions(-)

diff --git a/commands.tex b/commands.tex
index d0ad87d..c6f4f36 100644
--- a/commands.tex
+++ b/commands.tex
@@ -33,7 +33,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
     \begin{tabular}{lll}
@@ -44,7 +44,7 @@ The following commands must always be available in the ebuild environment:
       \midrule
       0, 1, 2, 3, 4     & Undefined & Any \\
       5, 6              & Yes       & Any \\
-      7, 8              & Yes       & 2.7 \\
+      7, 8, 9           & Yes       & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index f14a08c..de6e752 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,7 @@ with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in \
 \t{pkg_postinst}. Ebuilds may also call them in \t{pkg_prerm} and \t{pkg_postrm} but must not rely
 on them being available.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting additional dependency types}
     \label{tab:depend-table}
     \begin{tabular}{lll}
@@ -99,7 +99,7 @@ on them being available.
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  \\
       7                   & Yes & No  \\
-      8                   & Yes & Yes \\
+      8, 9                & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -155,7 +155,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
     \label{tab:at-most-one-of-table}
     \begin{tabular}{ll}
@@ -164,7 +164,7 @@ In particular, note that whitespace is not optional.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -204,7 +204,7 @@ In an exactly-one-of group, exactly one immediate child element must be matched.
 In EAPIs specified in table~\ref{tab:empty-dep-groups}, an empty exactly-one-of group counts as
 being matched.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
     \label{tab:empty-dep-groups}
     \begin{tabular}{ll}
@@ -214,7 +214,7 @@ being matched.
         are matched?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes \\
-      7, 8                & No  \\
+      7, 8, 9             & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -250,7 +250,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
     \label{tab:slot-deps-table}
     \begin{tabular}{lll}
@@ -261,12 +261,12 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0                 & No                 & No  \\
       1, 2, 3, 4        & Named only         & No  \\
-      5, 6, 7, 8        & Named and operator & Yes \\
+      5, 6, 7, 8, 9     & Named and operator & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
     \label{tab:use-deps-table}
     \begin{tabular}{ll}
@@ -276,7 +276,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0, 1              & No      \\
       2, 3              & 2-style \\
-      4, 5, 6, 7, 8     & 4-style \\
+      4, 5, 6, 7, 8, 9  & 4-style \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -310,7 +310,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Exclamation mark strengths for EAPIs}
     \label{tab:bang-strength-table}
     \begin{tabular}{lll}
@@ -319,8 +319,8 @@ described in table~\ref{tab:bang-strength-table}.
       \multicolumn{1}{c}{\textbf{\t{!}}} &
       \multicolumn{1}{c}{\textbf{\t{!!}}} \\
       \midrule
-      0, 1                & Unspecified & Forbidden \\
-      2, 3, 4, 5, 6, 7, 8 & Weak        & Strong    \\
+      0, 1                   & Unspecified & Forbidden \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Weak        & Strong    \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index c727758..e48ea54 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -4,21 +4,21 @@
 For lack of space, EAPIs 0 to~5 have been omitted from the table below, as well as items that would
 have identical entries for all listed EAPIs.}
 
-\ChangeWhenAddingAnEAPI{8}
-\begin{longtable}{@{}lllll@{}}
+\ChangeWhenAddingAnEAPI{9}
+\begin{longtable}{@{}llllll@{}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Ref.}} &
-\multicolumn{3}{c}{\textbf{EAPIs}} \\
-& & 6 & 7 & 8 \\
+\multicolumn{4}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 & 9 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Ref.}} &
-\multicolumn{3}{c}{\textbf{EAPIs}} \\
-& & 6 & 7 & 8 \\
+\multicolumn{4}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 & 9 \\
 \midrule
 \endhead
 \midrule
@@ -27,146 +27,146 @@ have identical entries for all listed EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & No & No \\
+    Optional & No & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-    4.2 & 4.2 & 5.0 \\
+    4.2 & 4.2 & 5.0 & 5.0 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 Working dir in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Empty \\
+    Any & Any & Empty & Empty \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    6 & 6 & 8 \\
+    6 & 6 & 8 & 8 \\
 
 Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & 2.7 & 2.7 \\
+    Any & 2.7 & 2.7 & 2.7 \\
 
 \t{nonfatal} function and external & \compactfeatureref{nonfatal} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
+    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{econf -{}-with-sysroot} & \compactfeatureref{econf-options} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \end{longtable}
 
@@ -347,7 +347,15 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, \featureref{unpack-extensions}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\section{EAPI 9}
+
+EAPI 9 is EAPI 8 with the following changes:
+
+\begin{compactitem}
+\item None
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{9}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 

diff --git a/eapis.tex b/eapis.tex
index a6c8109..fd0420c 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -17,8 +17,8 @@ EAPIs are also used for profile directories, as described in section~\ref{sec:pr
 
 \section{Defined EAPIs}
 
-\ChangeWhenAddingAnEAPI{8}
-This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', and~`8'.
+\ChangeWhenAddingAnEAPI{9}
+This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', `8', and~`9'.
 EAPI~`0' is the `original' base EAPI\@. Each of the later EAPIs contains a number of extensions
 to its predecessor.
 

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index a55c366..58df6bd 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -263,7 +263,7 @@ variable.
 \end{longtable}
 \end{landscape}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
     \begin{tabular}{lllllll}
@@ -279,12 +279,12 @@ variable.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4                 & Yes & Yes & Yes & No  & No  & No  \\
       5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
     \begin{tabular}{lllllll}
@@ -299,12 +299,12 @@ variable.
       \midrule
       0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
       4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
-      7, 8              & No  & No  & No  & No  & No  & No  \\
+      7, 8, 9           & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
     \begin{tabular}{lllll}
@@ -317,7 +317,7 @@ variable.
       \midrule
       0, 1, 2           & No  & No  & No  & No  \\
       3, 4, 5, 6        & Yes & Yes & Yes & No  \\
-      7, 8              & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -341,7 +341,7 @@ must be unset, for EAPIs listed in table~\ref{tab:profile-env-unset} as supporti
 ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in
 table~\ref{tab:locale-settings}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Locale settings for EAPIs}
     \label{tab:locale-settings}
     \begin{tabular}{ll}
@@ -350,7 +350,7 @@ table~\ref{tab:locale-settings}.
       \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & Undefined \\
-      6, 7, 8           & Yes       \\
+      6, 7, 8, 9        & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -436,7 +436,7 @@ contain at most one value.
 \subsection{Offset-prefix variables}
 \label{sec:offset-vars}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix}
     \label{tab:offset-support-table}
     \begin{tabular}{ll}
@@ -444,8 +444,8 @@ contain at most one value.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports offset-prefix?}}\\
       \midrule
-      0, 1, 2           & No  \\
-      3, 4, 5, 6, 7, 8  & Yes \\
+      0, 1, 2             & No  \\
+      3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -476,7 +476,7 @@ specifies the system root directory, it will consist of a single slash (\t{/}).
 a trailing slash, the package manager guarantees that a trailing slash will never be present.
 If the path specifies the system root directory, it will be empty.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
     \begin{tabular}{lll}
@@ -488,7 +488,7 @@ If the path specifies the system root directory, it will be empty.
       \t{D}, \t{ED} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & always & always \\
-      7, 8                & never  & never  \\
+      7, 8, 9             & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 25ba28e..84d27b7 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -18,7 +18,7 @@ certain variables and functions (see chapters~\ref{ch:ebuild-vars} and~\ref{ch:e
 for specific information), and must not call any external programs, write anything to standard
 output or standard error, or modify the state of the system in any way.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Bash version and options}
     \label{tab:bash-version}
     \begin{tabular}{lll}
@@ -29,7 +29,7 @@ output or standard error, or modify the state of the system in any way.
       \midrule
       0, 1, 2, 3, 4, 5  & 3.2 & No  \\
       6, 7              & 4.2 & Yes \\
-      8                 & 5.0 & Yes \\
+      8, 9              & 5.0 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 0c745c3..c878439 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -46,7 +46,7 @@ fallback to \t{WORKDIR} is used:
     executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Initial working directory in \t{pkg_*} phase functions for EAPIs}
     \label{tab:function-dirs}
     \begin{tabular}{ll}
@@ -55,12 +55,12 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Initial working directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
-      8                       & Empty \\
+      8, 9                    & Empty \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
     \label{tab:s-fallback-table}
     \begin{tabular}{ll}
@@ -69,7 +69,7 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Fallback to \t{WORKDIR} permitted?}} \\
       \midrule
       0, 1, 2, 3        & Always            \\
-      4, 5, 6, 7, 8     & Conditional error \\
+      4, 5, 6, 7, 8, 9  & Conditional error \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -91,7 +91,7 @@ before the next phase is executed.
 
 \t{pkg_pretend} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_pretend}}
     \label{tab:pkg-pretend-table}
     \begin{tabular}{ll}
@@ -100,7 +100,7 @@ before the next phase is executed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_pretend}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -149,7 +149,7 @@ listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, respectively
 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_prepare} support and behaviour for EAPIs}
     \label{tab:src-prepare-table}
     \begin{tabular}{lll}
@@ -161,7 +161,7 @@ the \t{src_prepare} function is a no-op.
       0, 1              & No  & Not applicable \\
       2, 3, 4, 5        & Yes & no-op          \\
       6, 7              & Yes & 6              \\
-      8                 & Yes & 8              \\
+      8, 9              & Yes & 8              \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -206,7 +206,7 @@ The \t{src_configure} function configures the package's build environment. The d
 implementation used when the ebuild lacks the \t{src_configure} function shall behave as in
 listing~\ref{lst:src-configure-2}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{src_configure}}
     \label{tab:src-configure-table}
     \begin{tabular}{ll}
@@ -214,8 +214,8 @@ listing~\ref{lst:src-configure-2}.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{src_configure}?}} \\
       \midrule
-      0, 1                & No  \\
-      2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0, 1                   & No  \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -244,7 +244,7 @@ implementation used when the ebuild lacks the \t{src_prepare} function shall beh
 listing~\ref{lst:src-compile-0}, listing~\ref{lst:src-compile-1} or listing~\ref{lst:src-compile-2},
 respectively.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_compile} behaviour for EAPIs}
     \label{tab:src-compile-table}
     \begin{tabular}{ll}
@@ -252,9 +252,9 @@ respectively.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Format}} \\
       \midrule
-      0                   & 0 \\
-      1                   & 1 \\
-      2, 3, 4, 5, 6, 7, 8 & 2 \\
+      0                      & 0 \\
+      1                      & 1 \\
+      2, 3, 4, 5, 6, 7, 8, 9 & 2 \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -317,7 +317,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_test} behaviour for EAPIs}
     \label{tab:src-test-table}
     \begin{tabular}{ll}
@@ -326,7 +326,7 @@ be disabled by user too, using a PM-specific mechanism.
       \multicolumn{1}{c}{\textbf{Supports parallel tests?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -346,7 +346,7 @@ listing~\ref{lst:src-install-4} or listing~\ref{lst:src-install-6}, respectively
 For other EAPIs, the default implementation used when the ebuild lacks the \t{src_install} function
 is a no-op.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_install} behaviour for EAPIs}
     \label{tab:src-install-table}
     \begin{tabular}{ll}
@@ -356,7 +356,7 @@ is a no-op.
       \midrule
       0, 1, 2, 3        & no-op \\
       4, 5              & 4     \\
-      6, 7, 8           & 6     \\
+      6, 7, 8, 9        & 6     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -449,7 +449,7 @@ that dependencies may not be installed.
 
 \t{pkg_info} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_info} on non-installed packages}
     \label{tab:pkg-info-table}
     \begin{tabular}{ll}
@@ -458,7 +458,7 @@ that dependencies may not be installed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_info} on non-installed packages?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -480,7 +480,7 @@ named \t{default_}(phase) that behaves as the default implementation for that EA
 when executing any ebuild phase listed in the table. Ebuilds must not call these functions except
 when in the phase in question.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{default_} phase functions}
     \label{tab:default-phase-function-table}
     \begin{tabular}{l P{26em}}
@@ -491,7 +491,7 @@ when in the phase in question.
       0, 1              & None \\
       2, 3              & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test} \\
-      4, 5, 6, 7, 8     & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
+      4, 5, 6, 7, 8, 9  & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test}, \t{src_install} \\
       \bottomrule
     \end{tabular}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 5f3f583..c4413f5 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -90,7 +90,7 @@ defined by an eclass.
 \item[IDEPEND] See chapter~\ref{ch:dependencies}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{IUSE} defaults}
     \label{tab:iuse-defaults-table}
     \begin{tabular}{ll}
@@ -98,13 +98,13 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{IUSE} defaults?}} \\
       \midrule
-      0                      & No  \\
-      1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0                         & No  \\
+      1, 2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
     \begin{tabular}{lll}
@@ -114,7 +114,7 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6, 7, 8     & Yes        & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -179,7 +179,7 @@ selective URI restrictions, the URI protocol can be prefixed by an additional \t
 restriction for the URI (but not the implied mirror restriction). If the ebuild is fetch or mirror
 restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for the URI.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows and selective URI restrictions}
     \label{tab:uri-arrows-table}
     \begin{tabular}{lll}
@@ -190,7 +190,7 @@ restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for
       \midrule
       0, 1              & No  & No  \\
       2, 3, 4, 5, 6, 7  & Yes & No  \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -275,7 +275,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} default}
     \label{tab:rdepend-depend-table}
     \begin{tabular}{ll}
@@ -284,7 +284,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
       \multicolumn{1}{c}{\textbf{\t{RDEPEND=DEPEND}?}} \\
       \midrule
       0, 1, 2, 3        & Yes \\
-      4, 5, 6, 7, 8     & No  \\
+      4, 5, 6, 7, 8, 9  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -319,7 +319,7 @@ not be exported to the ebuild environment:
 \note{Thus, by extension of section~\ref{sec:metadata-invariance}, phase functions must not be
 defined based upon any variant condition.}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{DEFINED_PHASES}}
     \label{tab:defined-phases-table}
     \begin{tabular}{ll}
@@ -328,7 +328,7 @@ defined based upon any variant condition.}
       \multicolumn{1}{c}{\textbf{Supports \t{DEFINED_PHASES}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally \\
-      4, 5, 6, 7, 8     & Yes        \\
+      4, 5, 6, 7, 8, 9  & Yes        \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eclasses.tex b/eclasses.tex
index e23dcd8..3f8f653 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -42,7 +42,7 @@ the previous one is loaded. For EAPIs listed in table~\ref{tab:accumulate-vars}
 value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is done after
 the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across eclasses}
     \label{tab:accumulate-vars}
     \begin{tabular}{lll}
@@ -52,7 +52,7 @@ the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
       \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
-      8                       & Yes & Yes \\
+      8, 9                    & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/merge.tex b/merge.tex
index 6fcfeec..ab320a6 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Preservation of file modification times (mtimes)}
     \label{tab:mtime-preserve}
     \begin{tabular}{ll}
@@ -94,8 +94,8 @@ is undefined.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\
       \midrule
-      0, 1, 2           & Undefined \\
-      3, 4, 5, 6, 7, 8  & Yes       \\
+      0, 1, 2             & Undefined \\
+      3, 4, 5, 6, 7, 8, 9 & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index d4dcffe..7d2511f 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -32,7 +32,7 @@ The following commands affect this behaviour:
     option and in EAPIs supporting this option, see table~\ref{tab:die-properties}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
     \begin{tabular}{llll}
@@ -44,7 +44,7 @@ The following commands affect this behaviour:
       \midrule
       0, 1, 2, 3        & Non-zero exit & No  & n/a \\
       4, 5, 6           & Aborts        & Yes & No  \\
-      7, 8              & Aborts        & Yes & Yes \\
+      7, 8, 9           & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -55,7 +55,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{8}
+\ChangeWhenAddingAnEAPI{9}  % two places
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
     \begin{tabular}{lllllll}
@@ -73,7 +73,7 @@ called, the package manager must abort the build process indicating an error.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4, 5              & Yes & Yes & No  & No  & No  & No  \\
       6                 & Yes & Yes & Yes & No  & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \midrule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{6}{c}{\textbf{Command banned?}} \\
@@ -83,7 +83,7 @@ called, the package manager must abort the build process indicating an error.
       \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-      8                       & Yes & Yes & Yes & & & \\
+      8, 9                    & Yes & Yes & Yes & & & \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -121,7 +121,7 @@ are given, \t{-r} is assumed.
     otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Package manager query command options supported by EAPIs}
     \label{tab:pm-query-options}
     \begin{tabular}{lllll}
@@ -134,7 +134,7 @@ are given, \t{-r} is assumed.
       \midrule
       0, 1, 2, 3, 4     & No  & No  & No  & No  \\
       5, 6              & Yes & No  & No  & No  \\
-      7, 8              & No  & Yes & Yes & Yes \\
+      7, 8, 9           & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -171,7 +171,7 @@ output, using stdout as an output facility is forbidden.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
     \begin{tabular}{lll}
@@ -181,7 +181,7 @@ output, using stdout as an output facility is forbidden.
       \multicolumn{1}{c}{\textbf{Supports \t{eqawarn}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes & No  \\
-      7, 8                & No  & Yes \\
+      7, 8, 9             & No  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -203,7 +203,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
     \label{tab:die-properties}
     \begin{tabular}{lll}
@@ -216,7 +216,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
       6                 & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -280,7 +280,7 @@ Ebuilds must not run any of these commands once the current phase function has r
     subsequent calls, the command will do nothing and return~0.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Patch commands for EAPIs}
     \label{tab:patch-commands}
     \begin{tabular}{lll}
@@ -290,7 +290,7 @@ Ebuilds must not run any of these commands once the current phase function has r
       \multicolumn{1}{c}{\textbf{\t{eapply_user}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -345,7 +345,7 @@ commands once the current phase function has returned.
         \t{-{}-enable-static} occurs in the output of \t{configure -{}-help}.
     \end{itemize}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
         \begin{tabular}{lllll}
@@ -359,7 +359,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
           6                 & No  & Yes & Yes & No  \\
           7                 & No  & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & Yes \\
+          8, 9              & Yes & Yes & Yes & Yes \\
           \midrule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
@@ -369,7 +369,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3        & No  & No  & No  & \\
           4                 & Yes & No  & No  & \\
           5, 6, 7           & Yes & Yes & No  & \\
-          8                 & Yes & Yes & Yes & \\
+          8, 9              & Yes & Yes & Yes & \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -670,7 +670,7 @@ dosym_relative_path() {
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dodoc -r}}
     \label{tab:dodoc-table}
     \begin{tabular}{ll}
@@ -679,12 +679,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{dodoc -r}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}}
     \label{tab:doheader-table}
     \begin{tabular}{ll}
@@ -693,12 +693,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{doheader} and \t{newheader}?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting symlinks for \t{doins}}
     \label{tab:doins-table}
     \begin{tabular}{ll}
@@ -707,12 +707,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{doins} supports symlinks?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{doman} language support options for EAPIs}
     \label{tab:doman-table}
     \begin{tabular}{lll}
@@ -723,12 +723,12 @@ dosym_relative_path() {
       \midrule
       0, 1              & No  & Not applicable \\
       2, 3              & Yes & No             \\
-      4, 5, 6, 7, 8     & Yes & Yes            \\
+      4, 5, 6, 7, 8, 9  & Yes & Yes            \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting stdin for \t{new*} commands}
     \label{tab:newfoo-stdin-table}
     \begin{tabular}{ll}
@@ -737,12 +737,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{new*} can read from stdin?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{domo} destination path in EAPIs}
     \label{tab:domo-path}
     \begin{tabular}{ll}
@@ -751,12 +751,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Destination path}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
-      7, 8                & \t{/usr/share/locale} \\
+      7, 8, 9             & \t{/usr/share/locale} \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dosym -r}}
     \label{tab:dosym-r}
     \begin{tabular}{ll}
@@ -765,7 +765,7 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative paths?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  \\
-      8                       & Yes \\
+      8, 9                    & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -807,7 +807,7 @@ function has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{insopts} for EAPIs}
     \label{tab:insopts-commands}
     \begin{tabular}{lllll}
@@ -819,12 +819,12 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doheader}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes & Yes & Yes \\
-      8                       & Yes & No  & No  & No  \\
+      8, 9                    & Yes & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{exeopts} for EAPIs}
     \label{tab:exeopts-commands}
     \begin{tabular}{lll}
@@ -834,7 +834,7 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doinitd}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes \\
-      8                       & Yes & No  \\
+      8, 9                    & Yes & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -911,7 +911,7 @@ any of these functions from any other phase.
     supporting \t{dostrip}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands controlling manipulation of files in the staging area in EAPIs}
     \label{tab:staging-area-commands}
     \begin{tabular}{lll}
@@ -922,7 +922,7 @@ any of these functions from any other phase.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6           & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -969,7 +969,7 @@ table~\ref{tab:use-list-strictness}.
     table~\ref{tab:use-list-functions} as supporting \t{in_iuse}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI behaviour for use queries not in \t{IUSE_EFFECTIVE}}
     \label{tab:use-list-strictness}
     \begin{tabular}{ll}
@@ -978,12 +978,12 @@ table~\ref{tab:use-list-strictness}.
       \multicolumn{1}{c}{\textbf{Behaviour}} \\
       \midrule
       0, 1, 2, 3        & Undefined \\
-      4, 5, 6, 7, 8     & Error     \\
+      4, 5, 6, 7, 8, 9  & Error     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for EAPIs}
     \label{tab:use-list-args}
     \begin{tabular}{lll}
@@ -995,12 +995,12 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6, 7        & No  & Yes \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{usex} and \t{in_iuse}}
     \label{tab:use-list-functions}
     \begin{tabular}{lll}
@@ -1011,7 +1011,7 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3, 4     & No  & No  \\
       5                 & Yes & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1096,7 +1096,7 @@ the second, inclusively.
     section~\ref{sec:version-spec}. Comparison is done using algorithm~\ref{alg:version-comparison}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
     \label{tab:version-commands}
     \begin{tabular}{llll}
@@ -1107,7 +1107,7 @@ the second, inclusively.
       \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-      7, 8                & Yes & Yes & Yes \\
+      7, 8, 9             & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1184,7 +1184,7 @@ has returned.
     \featurelabel{unpack-ignore-case} \t{unpack} matches filename extensions in a case-insensitive
     manner, for EAPIs listed such in table~\ref{tab:unpack-behaviour}.
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} behaviour for EAPIs}
         \label{tab:unpack-behaviour}
         \begin{tabular}{lll}
@@ -1194,12 +1194,12 @@ has returned.
           \multicolumn{1}{c}{\textbf{Case-insensitive matching?}} \\
           \midrule
           0, 1, 2, 3, 4, 5  & No  & No  \\
-          6, 7, 8           & Yes & Yes \\
+          6, 7, 8, 9        & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} extensions for EAPIs}
         \label{tab:unpack-extensions-table}
         \begin{tabular}{llllllll}
@@ -1215,7 +1215,7 @@ has returned.
           0, 1, 2           & No  & No  & No  & Yes & Yes & Yes \\
           3, 4, 5           & Yes & Yes & No  & Yes & Yes & Yes \\
           6, 7              & Yes & Yes & Yes & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & No  & No  & No  \\
+          8, 9              & Yes & Yes & Yes & No  & No  & No  \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -1283,7 +1283,7 @@ has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
     \label{tab:misc-commands}
     \begin{tabular}{llll}
@@ -1295,7 +1295,7 @@ has returned.
       \midrule
       0, 1              & No  & No  & No  \\
       2, 3, 4, 5        & Yes & No  & No  \\
-      6, 7, 8           & Yes & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pms.tex b/pms.tex
index 97d6d30..e066c2d 100644
--- a/pms.tex
+++ b/pms.tex
@@ -21,8 +21,8 @@
     pdfkeywords={Gentoo, package manager, specification},
 }
 
-\CurrentEAPIIs{8}
-\ChangeWhenAddingAnEAPI{8}
+\CurrentEAPIIs{9}
+\ChangeWhenAddingAnEAPI{9}
 
 \begin{document}
 \maketitle

diff --git a/profile-variables.tex b/profile-variables.tex
index ba40bf4..0f2dc3c 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -40,7 +40,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs}
     \label{tab:profile-iuse-injection-table}
     \begin{tabular}{ll}
@@ -49,12 +49,12 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined unsetting of variables in EAPIs}
     \label{tab:profile-env-unset}
     \begin{tabular}{ll}
@@ -63,7 +63,7 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports \t{ENV_UNSET}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/profiles.tex b/profiles.tex
index 30da81b..8d8226a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -78,7 +78,7 @@ in that directory, unless their name begins with a dot, will be concatenated in
 filename in the POSIX locale and the result will be processed as if it were a single file.
 Any subdirectories will be ignored.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting directories for profile files}
     \label{tab:profile-file-dirs}
     \begin{tabular}{ll}
@@ -87,7 +87,7 @@ Any subdirectories will be ignored.
       \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -123,7 +123,7 @@ it is actually installed. Because it has severe adverse effects on USE-based and
 dependencies, its use is strongly deprecated and package manager support must be regarded as purely
 optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{package.provided} in profiles}
     \label{tab:package-provided}
     \begin{tabular}{ll}
@@ -132,7 +132,7 @@ optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
       \multicolumn{1}{c}{\textbf{Supports \t{package.provided}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Optionally \\
-      7, 8                & No         \\
+      7, 8, 9             & No         \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -165,7 +165,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile directory support for masking/forcing use flags in stable versions only}
     \label{tab:profile-stablemask}
     \begin{tabular}{ll}
@@ -174,7 +174,7 @@ stable in a package.
       \multicolumn{1}{c}{\textbf{Supports masking/forcing use flags in stable versions?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/tree-layout.tex b/tree-layout.tex
index aa04d3d..b988f6e 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -127,7 +127,7 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
     \label{tab:package-mask-dir}
     \begin{tabular}{ll}
@@ -136,7 +136,7 @@ manager must ignore any files in this directory that it does not recognise.
       \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -233,7 +233,7 @@ Any name that has appeared as the origin of a move must not be reused in the fut
 that has appeared as the origin of a slot move may not be used by packages matching the spec of
 that slot move in the future.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Naming rules for files in \t{updates} directory for EAPIs}
     \label{tab:updates-filenames}
     \begin{tabular}{ll}
@@ -242,7 +242,7 @@ that slot move in the future.
       \multicolumn{1}{c}{\textbf{Files per quarter year?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes \\
-      8                       & No  \\
+      8, 9                    & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-08-22 18:30 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-08-22 18:30 UTC (permalink / raw
  To: gentoo-commits

commit:     b4e36f9fa0f3b90c7d119ffdfc38e62bc292bdaa
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:57:30 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Aug 22 18:29:58 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=b4e36f9f

EAPI 9: econf matches configure --help output better

Bug: https://bugs.gentoo.org/815169
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9e7f269..5671c22 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -141,6 +141,9 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
 \t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
     No & No & Yes & Yes \\
 
+\t{econf} better matching of options & \compactfeatureref{econf-options} &
+    No & No & No & Yes \\
+
 \t{domo} destination path & \compactfeatureref{domo-path} &
     \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
@@ -360,6 +363,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item \t{econf} matches \t{configure -{}-help} output better, \featureref{econf-options}.
 
 \end{compactitem}
 

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7d2511f..e532026 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -345,6 +345,10 @@ commands once the current phase function has returned.
         \t{-{}-enable-static} occurs in the output of \t{configure -{}-help}.
     \end{itemize}
 
+    For EAPIs listed in table~\ref{tab:econf-match-end} as matching the end of the option string,
+    a string in \t{configure -{}-help} output will only match if is is not immediately followed by
+    any of the characters \t{[A-Za-z0-9+_.-]}.
+
     \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
@@ -374,6 +378,20 @@ commands once the current phase function has returned.
         \end{tabular}
     \end{centertable}
 
+    \ChangeWhenAddingAnEAPI{9}
+    \begin{centertable}{EAPIs matching end of option string in \t{configure -{}-help} output}
+        \label{tab:econf-match-end}
+        \begin{tabular}{ll}
+          \toprule
+          \multicolumn{1}{c}{\textbf{EAPI}} &
+          \multicolumn{1}{c}{\textbf{Matches end of option string?}} \\
+          \midrule
+          0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+          9                         & Yes \\
+          \bottomrule
+        \end{tabular}
+    \end{centertable}
+
     Note that the \t{\$\{EPREFIX\}} component represents the same offset-prefix as described in
     table~\ref{tab:defined-vars}. It facilitates offset-prefix installations which is supported by
     EAPIs listed in table~\ref{tab:offset-env-vars-table}. When no offset-prefix installation is in


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-12-14 10:10 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-12-14 10:10 UTC (permalink / raw
  To: gentoo-commits

commit:     db3f61cc7d1cb81f8530e56a42dd7e68e714b715
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:57:30 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Dec 14 10:09:24 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=db3f61cc

EAPI 9: econf matches configure --help output better

Bug: https://bugs.gentoo.org/815169
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9f5cd62..ead78a3 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -141,6 +141,9 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
 \t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
     No & No & Yes & Yes \\
 
+\t{econf} better matching of options & \compactfeatureref{econf-options} &
+    No & No & No & Yes \\
+
 \t{domo} destination path & \compactfeatureref{domo-path} &
     \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
@@ -360,6 +363,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item \t{econf} matches \t{configure -{}-help} output better, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 7d2511f..e532026 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -345,6 +345,10 @@ commands once the current phase function has returned.
         \t{-{}-enable-static} occurs in the output of \t{configure -{}-help}.
     \end{itemize}
 
+    For EAPIs listed in table~\ref{tab:econf-match-end} as matching the end of the option string,
+    a string in \t{configure -{}-help} output will only match if is is not immediately followed by
+    any of the characters \t{[A-Za-z0-9+_.-]}.
+
     \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
@@ -374,6 +378,20 @@ commands once the current phase function has returned.
         \end{tabular}
     \end{centertable}
 
+    \ChangeWhenAddingAnEAPI{9}
+    \begin{centertable}{EAPIs matching end of option string in \t{configure -{}-help} output}
+        \label{tab:econf-match-end}
+        \begin{tabular}{ll}
+          \toprule
+          \multicolumn{1}{c}{\textbf{EAPI}} &
+          \multicolumn{1}{c}{\textbf{Matches end of option string?}} \\
+          \midrule
+          0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+          9                         & Yes \\
+          \bottomrule
+        \end{tabular}
+    \end{centertable}
+
     Note that the \t{\$\{EPREFIX\}} component represents the same offset-prefix as described in
     table~\ref{tab:defined-vars}. It facilitates offset-prefix installations which is supported by
     EAPIs listed in table~\ref{tab:offset-env-vars-table}. When no offset-prefix installation is in


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2022-12-14 10:10 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2022-12-14 10:10 UTC (permalink / raw
  To: gentoo-commits

commit:     18080d9d9c3322554634da881cd8e5c2da71d2f4
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:32:43 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Dec 14 10:09:24 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=18080d9d

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 682b336..9f5cd62 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -35,6 +35,9 @@ Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
 Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
     No & No & No & Yes \\
 
+Default EAPI for profiles & \compactfeatureref{profile-eapi-default} &
+    0 & 0 & 0 & Top-level \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & Yes & Yes & Yes \\
 
@@ -356,6 +359,7 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
+\item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 6fa8a1c..de59f0a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -50,8 +50,27 @@ this file must not contain comments or blank lines.
 A profile directory may contain an \t{eapi} file. This file, if it exists, must contain a single
 line with the name of an EAPI\@. This specifies the EAPI to use when handling the directory in
 question; a package manager must not attempt to use any profile using a directory which requires an
-EAPI it does not support. If no \t{eapi} file is present, EAPI 0 shall be used. The EAPI is neither
-inherited via the \t{parent} file nor in subdirectories.
+EAPI it does not support.
+
+\featurelabel{profile-eapi-default} If no \t{eapi} file is present, the default depends on the EAPI
+of the top-level profiles directory (see section~\ref{sec:profiles-dir}). That EAPI shall be used
+if table~\ref{tab:profile-eapi-default} lists it as ``top-level''. Otherwise, EAPI 0 shall be used.
+
+The EAPI is neither inherited via the \t{parent} file nor in subdirectories.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Default EAPI for profiles}
+    \label{tab:profile-eapi-default}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Default EAPI?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & 0         \\
+      9                         & Top-level \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{deprecated}
 If a profile contains a file named \t{deprecated}, it is treated as such. The first line of this


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     a2bf8fdc638f79a5c8438b095cd043b18b9f7794
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 25 17:58:05 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 17:58:05 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=a2bf8fdc

glossary.tex: Drop chapter number

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 glossary.tex     | 6 +++---
 introduction.tex | 2 +-
 pms.tex          | 3 ++-
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/glossary.tex b/glossary.tex
index 181febc..4ed3e82 100644
--- a/glossary.tex
+++ b/glossary.tex
@@ -1,7 +1,7 @@
-\chapter{Glossary}
-\label{ch:glossary}
+\chapter*{Glossary}
+\addcontentsline{toc}{chapter}{Glossary}
 
-This chapter contains explanations of some of the terms used in this document whose meaning may not
+This glossary contains explanations of some of the terms used in this document whose meaning may not
 be immediately obvious.
 
 \begin{description}

diff --git a/introduction.tex b/introduction.tex
index b72acc3..57fb51a 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -7,7 +7,7 @@ well as certain aspects of package manager behaviour required to support such a
 
 This document is \emph{not} designed to be an introduction to ebuild development. Prior knowledge of
 ebuild creation and an understanding of how the package management system works is assumed; certain
-less familiar terms are explained in the Glossary in chapter~\ref{ch:glossary}.
+less familiar terms are explained in the Glossary.
 
 This document does not specify any user or package manager configuration information.
 

diff --git a/pms.tex b/pms.tex
index 97d6d30..07113a9 100644
--- a/pms.tex
+++ b/pms.tex
@@ -60,8 +60,9 @@
 \include{commands}
 \include{merge}
 \include{metadata-cache}
-\include{glossary}
 
+% back matter begins here
+\include{glossary}
 \bibliography{pms}
 
 \appendix


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     603b5c5a6b9e94a8a9fc02982dca14fe46048594
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 19 21:35:46 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Nov 19 21:35:46 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=603b5c5a

Appendix: Document retroactive change of econf --disable-static

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 appendices.tex       | 8 ++++++++
 pkg-mgr-commands.tex | 1 +
 2 files changed, 9 insertions(+)

diff --git a/appendices.tex b/appendices.tex
index 3d2ef52..69bd2ed 100644
--- a/appendices.tex
+++ b/appendices.tex
@@ -114,6 +114,14 @@ all-of, any-of, exactly-one-of, at-most-one-of and use-conditional groups with z
 However, such empty groups were neither supported by all package managers nor used in ebuilds.
 They were dropped from the specification in October 2017.
 
+\subsection{econf -{}-disable-static option}
+The \t{-{}-disable-static} option in \t{econf} (see section~\ref{sec:build-commands}) was intended
+to disable only static Libtool archive building. The original check for either
+\t{-{}-disable-static} or \t{-{}-enable-static} occuring in \t{configure -{}-help} output produced
+false positives. The specification was therefore updated in November 2022; it now requires both
+\t{-{}-enable-static} and \t{-{}-enable-shared}, and in addition checks for a proper end of the
+option string.
+
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
 %%% Local Variables:

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index a3e8a41..95caa0b 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -296,6 +296,7 @@ Ebuilds must not run any of these commands once the current phase function has r
 \end{centertable}
 
 \subsection{Build commands}
+\label{sec:build-commands}
 These commands are used during the \t{src_configure}, \t{src_compile}, \t{src_test},
 and \t{src_install} phases to run the package's build commands. Ebuilds must not run any of these
 commands once the current phase function has returned.


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     ab2bce21ac83e6ad6cc649ef09cd4bae334e4417
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 27 21:35:14 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Dec 27 21:44:34 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ab2bce21

Makefile: Use guessable names for section references in HTML output

This replaces the "x1*" fragment identifiers by more predictable ones
with a "chapter", "section", or "appendix" prefix. This is possible
because our section numbers are unique.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 Makefile | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/Makefile b/Makefile
index 89fd7a2..c882534 100644
--- a/Makefile
+++ b/Makefile
@@ -54,6 +54,11 @@ pms.html: $(LATEXFILES) pms.bbl $(COMMITINFO)
 	@# remove redundant span elements
 	LC_ALL=C sed -Ei ':x;/<span(\s+[^>]*)?$$/{N;bx;};'\
 	':y;s,(<span\s+[^>]*>)([^<]*)</span>\1,\1\2,;ty' $@
+	@# guessable names for sections
+	LC_ALL=C sed -Ei \
+	  -e 's/("#?)x1-[0-9]*00+([1-9][0-9]?")/\1chapter-\2/g' \
+	  -e 's/("#?)x1-[0-9]*00+([1-9][0-9]?(\.[0-9]+)+")/\1section-\2/g' \
+	  -e 's/("#?)x1-[0-9]*00+([A-Z](\.[0-9]+)*")/\1appendix-\2/g' $@
 
 pms.bbl: pms.bib $(LATEXFILES) $(COMMITINFO)
 	$(aux-clean)


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     b8b81bfd9e69f3d3dcd21b00580849a7abd9d8dd
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 25 20:51:11 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 20:51:11 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=b8b81bfd

pms.bib: Update GLEP references to latest Post-History date

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 pms.bib | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/pms.bib b/pms.bib
index 8b718af..014b643 100644
--- a/pms.bib
+++ b/pms.bib
@@ -25,15 +25,15 @@
 @manual{Glep68,
     author = {Michał Górny},
     title = {{GLEP} 68: Package and category metadata},
-    year = 2018,
-    month = Feb,
+    year = 2022,
+    month = Oct,
     url = {https://www.gentoo.org/glep/glep-0068.html}
 }
 
 @manual{Glep74,
     author = {Michał Górny and Robin Hugh Johnson and Ulrich Müller},
     title = {{GLEP} 74: Full-tree verification using Manifest files},
-    year = 2018,
-    month = Feb,
+    year = 2022,
+    month = Oct,
     url = {https://www.gentoo.org/glep/glep-0074.html}
 }


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2022-12-09 19:07 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2023-02-26 17:42 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     9264cfb906e0eae7c44596c6c339715ef6191a50
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Dec  9 19:03:30 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Dec  9 19:03:30 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=9264cfb9

appendices.tex: No line break before GLEP number

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/appendices.tex b/appendices.tex
index 69bd2ed..d87d1be 100644
--- a/appendices.tex
+++ b/appendices.tex
@@ -3,7 +3,7 @@
 
 The \t{metadata.xml} file is used to contain extra package- or category-level information beyond
 what is stored in ebuild metadata. Its exact format is strictly beyond the scope of this document,
-and is described in GLEP 68~\cite{Glep68}.
+and is described in GLEP~68~\cite{Glep68}.
 
 \chapter{Unspecified Items}
 
@@ -76,7 +76,7 @@ the \t{PROVIDE} metadata that it supplied certain virtuals, and the package mana
 in mind when handling dependencies.
 
 Old-style virtuals were supported by EAPIs \t{0}, \t{1}, \t{2}, \t{3} and \t{4}. They were phased
-out via GLEP 37~\cite{Glep37} and finally removed in 2011.
+out via GLEP~37~\cite{Glep37} and finally removed in 2011.
 
 \note{A `new-style virtual' is a normal package that installs no files and uses its dependency
 requirements to pull in a `provider'. This does not require any special handling from the package
@@ -87,7 +87,7 @@ The method to specify the EAPI of an ebuild used to be a shell variable assignme
 manager had to source the ebuild in order to determine the EAPI\@. Therefore any ebuild using
 a future EAPI would still have to be sourceable by old package managers, which imposed restrictions
 e.\,g.\ on updating the Bash version or on possible changes of global scope functions. Several
-approaches to overcome this limitation were discussed, notably GLEP 55~\cite{Glep55}, which was
+approaches to overcome this limitation were discussed, notably GLEP~55~\cite{Glep55}, which was
 rejected though.
 
 The current syntax of the \t{EAPI} assignment statement (see section~\ref{sec:eapi}), allowing


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     b3718b21370c2991ff6b2ed76ac7a53af8477d57
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 27 21:27:57 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Dec 27 21:27:57 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=b3718b21

Use "app:" instead of "ch:" for labels in the appendix

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 appendices.tex     | 2 +-
 desk-reference.tex | 4 ++--
 tree-layout.tex    | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/appendices.tex b/appendices.tex
index a093936..db1dc64 100644
--- a/appendices.tex
+++ b/appendices.tex
@@ -1,5 +1,5 @@
 \chapter{metadata.xml}
-\label{ch:metadata-xml}
+\label{app:metadata-xml}
 
 The \t{metadata.xml} file is used to contain extra package- or category-level information beyond
 what is stored in ebuild metadata. Its exact format is strictly beyond the scope of this document,

diff --git a/desk-reference.tex b/desk-reference.tex
index a096032..0bcda38 100644
--- a/desk-reference.tex
+++ b/desk-reference.tex
@@ -1,12 +1,12 @@
 \ifthenelse{\boolean{TEX4HT-HACKS}}{%
     \chapter{Desk Reference}
-    \label{ch:cheatsheet}
+    \label{app:cheatsheet}
     \href{eapi-cheatsheet.pdf}{EAPI Cheat Sheet}
 }{%
     % Make sure that the cheat sheet starts on an odd page
     \ifthenelse{\isodd{\thepage}}{}{\null\newpage}%
     \includepdf[pages=-,landscape,turn=false,lastpage=2,%
-        addtotoc={1,chapter,0,Desk Reference,ch:cheatsheet}]{eapi-cheatsheet}
+        addtotoc={1,chapter,0,Desk Reference,app:cheatsheet}]{eapi-cheatsheet}
 }
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :

diff --git a/tree-layout.tex b/tree-layout.tex
index aa04d3d..da01ff8 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -29,7 +29,7 @@ Each category provided by the repository (see also: the \t{profiles/categories}
 section~\ref{sec:profiles-dir}) shall be contained in one directory, whose name shall be that of
 the category. Each category directory shall contain:
 \begin{compactitem}
-\item A \t{metadata.xml} file, as described in appendix~\ref{ch:metadata-xml}\@. Optional.
+\item A \t{metadata.xml} file, as described in appendix~\ref{app:metadata-xml}\@. Optional.
 \item Zero or more package directories, one for each package in the category, as described in
     section~\ref{sec:package-dirs}. The name of the package directory shall be the corresponding
     package name.
@@ -51,7 +51,7 @@ A package directory contains the following:
 \nobreakpar
 \begin{compactitem}
 \item Zero or more ebuilds. These are as described in chapter~\ref{ch:ebuild-format} and others.
-\item A \t{metadata.xml} file, as described in appendix~\ref{ch:metadata-xml}\@. Optional only for
+\item A \t{metadata.xml} file, as described in appendix~\ref{app:metadata-xml}\@. Optional only for
     legacy support.
 \item A \t{ChangeLog}, in a format determined by the provider of the repository. Optional.
 \item A \t{Manifest} file, whose format is described in~\cite{Glep74}. Can be omitted if the file


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     dc358cbe6c57dca54b82d2c9bc8de2e1cddd975c
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Dec  9 19:07:07 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Dec  9 19:07:07 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=dc358cbe

Don't use teletype for EAPIs

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 appendices.tex   | 12 ++++++------
 dependencies.tex |  2 +-
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/appendices.tex b/appendices.tex
index d87d1be..ed90225 100644
--- a/appendices.tex
+++ b/appendices.tex
@@ -67,16 +67,16 @@ In some exceptional cases, changes to the specification have been approved by th
 without introducing a new EAPI\@. This section lists such retroactive changes.
 
 \subsection{Bash version}
-EAPIs \t{0}, \t{1} and \t{2} originally specified GNU Bash version 3.0. This was retroactively
-updated to version 3.2 (see table~\ref{tab:bash-version}) in November 2009.
+EAPIs 0, 1 and~2 originally specified GNU Bash version 3.0. This was retroactively updated to
+version 3.2 (see table~\ref{tab:bash-version}) in November 2009.
 
 \subsection{Old-style virtuals}
 Historically, virtuals were special packages rather than regular ebuilds. An ebuild could specify in
 the \t{PROVIDE} metadata that it supplied certain virtuals, and the package manager had to bear this
 in mind when handling dependencies.
 
-Old-style virtuals were supported by EAPIs \t{0}, \t{1}, \t{2}, \t{3} and \t{4}. They were phased
-out via GLEP~37~\cite{Glep37} and finally removed in 2011.
+Old-style virtuals were supported by EAPIs 0, 1, 2, 3 and~4. They were phased out via
+GLEP~37~\cite{Glep37} and finally removed in 2011.
 
 \note{A `new-style virtual' is a normal package that installs no files and uses its dependency
 requirements to pull in a `provider'. This does not require any special handling from the package
@@ -105,8 +105,8 @@ induce string prefix comparison instead of the normal version comparison logic.
 surprising results, e.\,g.\ \t{=dev-lang/perl-5.2*} matching \t{dev-lang/perl-5.22.0}. Moreover,
 implementation in package managers deviated from what was specified.
 
-String prefix matching was effective in EAPIs \t{0}, \t{1}, \t{2}, \t{3}, \t{4} and \t{5}. It was
-retroactively dropped in favour of the current behaviour in October 2015.
+String prefix matching was effective in EAPIs 0, 1, 2, 3, 4 and~5. It was retroactively dropped
+in favour of the current behaviour in October 2015.
 
 \subsection{Empty dependency groups}
 The dependency specification format (see section~\ref{sec:dependency-spec}) originally permitted

diff --git a/dependencies.tex b/dependencies.tex
index f14a08c..0ff1c7e 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -331,7 +331,7 @@ described in table~\ref{tab:bang-strength-table}.
 \featurelabel{slot-deps} A named slot dependency consists of a colon followed by a slot name. A
 specification with a named slot dependency matches only if the slot of the matched package is equal
 to the slot specified. If the slot of the package to match cannot be determined (e.\,g.\ because it
-is not a supported \t{EAPI}), the match is treated as unsuccessful.
+is not a supported EAPI, the match is treated as unsuccessful.
 
 \featurelabel{sub-slot} In EAPIs shown in table~\ref{tab:slot-deps-table} as supporting sub-slots,
 a slot dependency may contain an optional sub-slot part that follows the regular slot and is


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2022-10-20  7:06 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2023-02-26 17:42 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     2c69291b26fea14b6a93f1bf6b4f0bfd7f74f7b9
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Sep  7 06:35:09 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Sep  7 06:35:09 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=2c69291b

ebuild-format.tex: Document that umask is set to 022

Portage has been doing this since 2001.

Closes: https://bugs.gentoo.org/868669
Reported-by: Mike Frysinger <vapier <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 ebuild-format.tex | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/ebuild-format.tex b/ebuild-format.tex
index 25ba28e..cf06668 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -7,6 +7,9 @@ table~\ref{tab:bash-version}, or any later version. If possible, the package man
 the shell's compatibility level to the exact version specified. It must ensure that any such
 compatibility settings (e.\,g.\ the \t{BASH_COMPAT} variable) are not exported to external programs.
 
+The file creation mask (\t{umask}) is set to \t{022} in the shell execution environment. It is
+\emph{not} saved between phase functions but always reset to this initial value.
+
 \featurelabel{failglob} For EAPIs listed such in table~\ref{tab:bash-version}, 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.


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2023-01-01 17:57 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2023-02-26 17:42 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     1936b33467289e09f6130c3eba424cd2cdd962d0
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 27 21:31:30 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Dec 27 21:31:30 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=1936b334

Revert "Appendix: Include EAPI differences sections in table of contents."

This reverts commit fbcb58732d0a75138c0c7185f914d10f448ed472.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index a5ba486..225c2b6 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -375,11 +375,11 @@ File mtimes preserved & \compactfeatureref{mtime-preserve} &
 
 \note{This chapter is informative and for convenience only. Refer to the main text for specifics.}
 
-\section{EAPI 0}
+\section*{EAPI 0}
 
 EAPI 0 is the base EAPI.
 
-\section{EAPI 1}
+\section*{EAPI 1}
 
 EAPI 1 is EAPI 0 with the following changes:
 
@@ -389,7 +389,7 @@ EAPI 1 is EAPI 0 with the following changes:
 \item Different \t{src_compile} implementation, \featureref{src-compile}.
 \end{compactitem}
 
-\section{EAPI 2}
+\section*{EAPI 2}
 
 EAPI 2 is EAPI 1 with the following changes:
 
@@ -406,7 +406,7 @@ EAPI 2 is EAPI 1 with the following changes:
 \item \t{default} function, \featureref{default-func}.
 \end{compactitem}
 
-\section{EAPI 3}
+\section*{EAPI 3}
 
 EAPI 3 is EAPI 2 with the following changes:
 \begin{compactitem}
@@ -416,7 +416,7 @@ EAPI 3 is EAPI 2 with the following changes:
 \item File modification times are preserved, \featureref{mtime-preserve}.
 \end{compactitem}
 
-\section{EAPI 4}
+\section*{EAPI 4}
 
 EAPI 4 is EAPI 3 with the following changes:
 
@@ -445,7 +445,7 @@ EAPI 4 is EAPI 3 with the following changes:
 \item \t{use_with} and \t{use_enable} support empty third argument, \featureref{use-with}.
 \end{compactitem}
 
-\section{EAPI 5}
+\section*{EAPI 5}
 
 EAPI 5 is EAPI 4 with the following changes:
 
@@ -466,7 +466,7 @@ EAPI 5 is EAPI 4 with the following changes:
 \item \t{usex} support, \featureref{usex}.
 \end{compactitem}
 
-\section{EAPI 6}
+\section*{EAPI 6}
 
 EAPI 6 is EAPI 5 with the following changes:
 
@@ -489,7 +489,7 @@ EAPI 6 is EAPI 5 with the following changes:
 \item \t{get_libdir} support, \featureref{get-libdir}.
 \end{compactitem}
 
-\section{EAPI 7}
+\section*{EAPI 7}
 
 EAPI 7 is EAPI 6 with the following changes:
 
@@ -525,7 +525,7 @@ EAPI 7 is EAPI 6 with the following changes:
 \item Version manipulation and comparison commands, \featureref{ver-commands}.
 \end{compactitem}
 
-\section{EAPI 8}
+\section*{EAPI 8}
 
 EAPI 8 is EAPI 7 with the following changes:
 


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     ede65b5d136640575479c9c9a3162ee4d2be953e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Jan  3 20:11:28 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Jan  9 18:13:45 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ede65b5d

ebuild-env-vars.tex: D is available as a variable in all src_* phases

The D variable has been described as a "phase-specific variable" since
the spec's early draft stage (SVN r19). However, Portage would always
define the variable in all src_* phases, with the restriction that the
directory would exist only in src_install().

In reality, not all ebuilds comply with the spec. For example, Perl
eclasses use D in src_configure(), i.e. they rely on Portage behaviour.

Therefore, lift this unnecessary and somewhat artificial restriction
and make the variable (but not the directory) available outside the
install phase.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 ebuild-env-vars.tex | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index a55c366..db693ab 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -179,24 +179,27 @@ variable.
     See also~\ref{sec:offset-vars}. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table}
     as supporting \t{EPREFIX}. \\
 \t{D} &
-    \t{src_install} &
-    No &
+    \t{src_*} &
+    Yes &
     Contains the full path to the image directory into which the package should be installed.
+    Ebuilds must not attempt to access the directory in \t{src_*} phases other than \t{src_install}.
     The presence of a trailing slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}.
     \\
 \t{D} (continued) &
     \t{pkg_preinst}, \t{pkg_postinst} &
-    Yes &
+    Yes\footnote{Consistent across \t{pkg_preinst} and \t{pkg_postinst}, but may not necessarily
+    have the same value that it had in the \t{src_*} phases.} &
     Contains the full path to the image that is about to be or has just been merged.
     The presence of a trailing slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}.
     \\
 \t{ED} &
-    \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst} &
+    \t{src_*}, \t{pkg_preinst}, \t{pkg_postinst} &
     See \t{D} &
     Contains the concatenation of the paths in the \t{D} and \t{EPREFIX} variables,
     for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed in
-    table~\ref{tab:offset-env-vars-table} as supporting \t{ED}\@. The presence of a trailing slash
-    is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
+    table~\ref{tab:offset-env-vars-table} as supporting \t{ED}\@. Ebuilds must not attempt to
+    access the directory in \t{src_*} phases other than \t{src_install}. The presence of a trailing
+    slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{DESTTREE} &
     \t{src_install} &
     No &


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     e0aa80cc0d28a25bfc68b4671771083e282f6ba2
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 19 20:22:34 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Nov 19 20:22:34 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e0aa80cc

pkg-mgr-commands.tex: Update condition for econf --disable-static (again)

The intention is to pass --disable-static, in order to (only) disable
static libtool archive building. The current condition asks for either
of --{disable,enable}-static in configure --help output, which causes
false positives:
https://archives.gentoo.org/gentoo-portage-dev/message/efc3f424d1dffd3415da538ec25532a9

Therefore, narrow the condition to require both --enable-static and
--enable-shared. In addition, backport the check for proper end of
string from the EAPI 9 feature list, but restrict it to this option
for now.

Bug: https://bugs.gentoo.org/814368
Bug: https://bugs.gentoo.org/815169
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index d4dcffe..a3e8a41 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -341,8 +341,9 @@ commands once the current phase function has returned.
         as using it. This option will only be passed if the string \t{-{}-disable-silent-rules}
         occurs in the output of \t{configure -{}-help}.
     \item \t{-{}-disable-static}, 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{-{}-disable-static} or
-        \t{-{}-enable-static} occurs in the output of \t{configure -{}-help}.
+        as using it. This option will only be passed if both strings \t{-{}-enable-static} and
+        \t{-{}-enable-shared} occur in the output of \t{configure -{}-help}, and if neither of them
+        is immediately followed by any of the characters \t{[A-Za-z0-9+_.-]}.
     \end{itemize}
 
     \ChangeWhenAddingAnEAPI{8}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2023-01-01 17:57 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2023-02-26 17:42 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     c26570a2306bf4ffe2963e3acdb82db19238f129
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 27 21:31:46 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Dec 27 21:31:46 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=c26570a2

Revert "Appendix: Do not number sections."

This reverts commit 1da137e49aa5a52bb13500192d394b6dd53210da.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/pms.tex b/pms.tex
index 07113a9..1f9ecdb 100644
--- a/pms.tex
+++ b/pms.tex
@@ -66,7 +66,6 @@
 \bibliography{pms}
 
 \appendix
-\setcounter{secnumdepth}{0}
 \include{appendices}
 \include{eapi-differences}
 \include{desk-reference}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2022-12-17 16:40 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2023-02-26 17:42 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     08cdab4ab811b7cc3ceee356727f558eaef17b27
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Dec  9 19:29:04 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Dec 11 19:26:05 2022 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=08cdab4a

appendices.tex: Mention EAPI for econf --disable-static

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/appendices.tex b/appendices.tex
index ed90225..a093936 100644
--- a/appendices.tex
+++ b/appendices.tex
@@ -118,9 +118,11 @@ They were dropped from the specification in October 2017.
 The \t{-{}-disable-static} option in \t{econf} (see section~\ref{sec:build-commands}) was intended
 to disable only static Libtool archive building. The original check for either
 \t{-{}-disable-static} or \t{-{}-enable-static} occuring in \t{configure -{}-help} output produced
-false positives. The specification was therefore updated in November 2022; it now requires both
-\t{-{}-enable-static} and \t{-{}-enable-shared}, and in addition checks for a proper end of the
-option string.
+false positives.
+
+The test mentioned above was effective in EAPI~8. It was updated in November 2022 to require both
+\t{-{}-enable-static} and \t{-{}-enable-shared}, and in addition checks for a proper end of these
+option strings.
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     3cd4184aa9dac4612e1094c36b1959cdbc9c1585
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:57:30 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 26 17:40:19 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=3cd4184a

EAPI 9: econf matches configure --help output better

Bug: https://bugs.gentoo.org/815169
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 37e59cf..45ba41b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -141,6 +141,9 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
 \t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
     No & No & Yes & Yes \\
 
+\t{econf} better matching of options & \compactfeatureref{econf-options} &
+    No & No & No & Yes \\
+
 \t{domo} destination path & \compactfeatureref{domo-path} &
     \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
@@ -360,6 +363,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item \t{econf} matches \t{configure -{}-help} output better, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 2716faa..eeb0f49 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -347,6 +347,10 @@ commands once the current phase function has returned.
         is immediately followed by any of the characters \t{[A-Za-z0-9+_.-]}.
     \end{itemize}
 
+    For EAPIs listed in table~\ref{tab:econf-match-end} as matching the end of the option string,
+    a string in \t{configure -{}-help} output will only match if it is not immediately followed by
+    any of the characters \t{[A-Za-z0-9+_.-]}.
+
     \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
@@ -376,6 +380,20 @@ commands once the current phase function has returned.
         \end{tabular}
     \end{centertable}
 
+    \ChangeWhenAddingAnEAPI{9}
+    \begin{centertable}{EAPIs matching end of option string in \t{configure -{}-help} output}
+        \label{tab:econf-match-end}
+        \begin{tabular}{ll}
+          \toprule
+          \multicolumn{1}{c}{\textbf{EAPI}} &
+          \multicolumn{1}{c}{\textbf{Matches end of option string?}} \\
+          \midrule
+          0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+          9                         & Yes \\
+          \bottomrule
+        \end{tabular}
+    \end{centertable}
+
     Note that the \t{\$\{EPREFIX\}} component represents the same offset-prefix as described in
     table~\ref{tab:defined-vars}. It facilitates offset-prefix installations which is supported by
     EAPIs listed in table~\ref{tab:offset-env-vars-table}. When no offset-prefix installation is in


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     eeddb7ad0b36822be7d3298caefa9475bc9dc466
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Feb  1 18:11:56 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Feb  1 18:11:56 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=eeddb7ad

ebuild-env-vars.tex: Fix indentation of list

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 004a7a2..7f430e7 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -117,13 +117,13 @@ inconsistent variable.
     \featurelabel{eclassdir} The full path to the master repository's eclass directory. Only for
     EAPIs listed in table~\ref{tab:removed-env-vars-table} as supporting \t{ECLASSDIR}. \\
 \t{ROOT} &
-   \t{pkg_*} &
-   No &
-   The absolute path to the root directory into which the package is to be merged.  Phases which run
-   with full filesystem access must not touch any files outside of the directory given in
-   \t{ROOT}\@. Also of note is that in a cross-compiling environment, binaries inside of \t{ROOT}
-   will not be executable on the build machine, so ebuilds must not call them. The presence of
-   a trailing slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
+    \t{pkg_*} &
+    No &
+    The absolute path to the root directory into which the package is to be merged. Phases which
+    run with full filesystem access must not touch any files outside of the directory given in
+    \t{ROOT}\@. Also of note is that in a cross-compiling environment, binaries inside of \t{ROOT}
+    will not be executable on the build machine, so ebuilds must not call them. The presence of
+    a trailing slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}. \\
 \t{EROOT} &
     \t{pkg_*} &
     No &


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     d32b043a7d06f1d5477f07c57e250e82a5e11915
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  3 16:32:47 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 26 17:40:18 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=d32b043a

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 commands.tex          |   4 +-
 dependencies.tex      |  26 +++++------
 eapi-differences.tex  | 116 +++++++++++++++++++++++++++-----------------------
 eapis.tex             |   4 +-
 ebuild-env-vars.tex   |  26 +++++------
 ebuild-format.tex     |   4 +-
 ebuild-functions.tex  |  46 ++++++++++----------
 ebuild-vars.tex       |  22 +++++-----
 eclasses.tex          |   4 +-
 merge.tex             |   6 +--
 pkg-mgr-commands.tex  | 100 +++++++++++++++++++++----------------------
 pms.tex               |   4 +-
 profile-variables.tex |   8 ++--
 profiles.tex          |  12 +++---
 tree-layout.tex       |   8 ++--
 15 files changed, 199 insertions(+), 191 deletions(-)

diff --git a/commands.tex b/commands.tex
index d0ad87d..c6f4f36 100644
--- a/commands.tex
+++ b/commands.tex
@@ -33,7 +33,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
     \begin{tabular}{lll}
@@ -44,7 +44,7 @@ The following commands must always be available in the ebuild environment:
       \midrule
       0, 1, 2, 3, 4     & Undefined & Any \\
       5, 6              & Yes       & Any \\
-      7, 8              & Yes       & 2.7 \\
+      7, 8, 9           & Yes       & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index 6c09714..6b58f54 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,7 @@ with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in \
 \t{pkg_postinst}. Ebuilds may also call them in \t{pkg_prerm} and \t{pkg_postrm} but must not rely
 on them being available.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting additional dependency types}
     \label{tab:depend-table}
     \begin{tabular}{lll}
@@ -99,7 +99,7 @@ on them being available.
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  \\
       7                   & Yes & No  \\
-      8                   & Yes & Yes \\
+      8, 9                & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -155,7 +155,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
     \label{tab:at-most-one-of-table}
     \begin{tabular}{ll}
@@ -164,7 +164,7 @@ In particular, note that whitespace is not optional.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -204,7 +204,7 @@ In an exactly-one-of group, exactly one immediate child element must be matched.
 In EAPIs specified in table~\ref{tab:empty-dep-groups}, an empty exactly-one-of group counts as
 being matched.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
     \label{tab:empty-dep-groups}
     \begin{tabular}{ll}
@@ -214,7 +214,7 @@ being matched.
         are matched?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes \\
-      7, 8                & No  \\
+      7, 8, 9             & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -250,7 +250,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
     \label{tab:slot-deps-table}
     \begin{tabular}{lll}
@@ -261,12 +261,12 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0                 & No                 & No  \\
       1, 2, 3, 4        & Named only         & No  \\
-      5, 6, 7, 8        & Named and operator & Yes \\
+      5, 6, 7, 8, 9     & Named and operator & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
     \label{tab:use-deps-table}
     \begin{tabular}{ll}
@@ -276,7 +276,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0, 1              & No      \\
       2, 3              & 2-style \\
-      4, 5, 6, 7, 8     & 4-style \\
+      4, 5, 6, 7, 8, 9  & 4-style \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -310,7 +310,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Exclamation mark strengths for EAPIs}
     \label{tab:bang-strength-table}
     \begin{tabular}{lll}
@@ -319,8 +319,8 @@ described in table~\ref{tab:bang-strength-table}.
       \multicolumn{1}{c}{\textbf{\t{!}}} &
       \multicolumn{1}{c}{\textbf{\t{!!}}} \\
       \midrule
-      0, 1                & Unspecified & Forbidden \\
-      2, 3, 4, 5, 6, 7, 8 & Weak        & Strong    \\
+      0, 1                   & Unspecified & Forbidden \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Weak        & Strong    \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b20693a..2df5361 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -4,21 +4,21 @@
 For lack of space, EAPIs 0 to~5 have been omitted from the table below, as well as items that would
 have identical entries for all listed EAPIs.}
 
-\ChangeWhenAddingAnEAPI{8}
-\begin{longtable}{@{}lllll@{}}
+\ChangeWhenAddingAnEAPI{9}
+\begin{longtable}{@{}llllll@{}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Ref.}} &
-\multicolumn{3}{c}{\textbf{EAPIs}} \\
-& & 6 & 7 & 8 \\
+\multicolumn{4}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 & 9 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Ref.}} &
-\multicolumn{3}{c}{\textbf{EAPIs}} \\
-& & 6 & 7 & 8 \\
+\multicolumn{4}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 & 9 \\
 \midrule
 \endhead
 \midrule
@@ -27,146 +27,146 @@ have identical entries for all listed EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & No & No \\
+    Optional & No & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-    4.2 & 4.2 & 5.0 \\
+    4.2 & 4.2 & 5.0 & 5.0 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 Working dir in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Empty \\
+    Any & Any & Empty & Empty \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    6 & 6 & 8 \\
+    6 & 6 & 8 & 8 \\
 
 Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & 2.7 & 2.7 \\
+    Any & 2.7 & 2.7 & 2.7 \\
 
 \t{nonfatal} function and external & \compactfeatureref{nonfatal} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
+    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{econf -{}-with-sysroot} & \compactfeatureref{econf-options} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \end{longtable}
 
@@ -347,7 +347,15 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, \featureref{unpack-extensions}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\section*{EAPI 9}
+
+EAPI 9 is EAPI 8 with the following changes:
+
+\begin{compactitem}
+\item None
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{9}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 

diff --git a/eapis.tex b/eapis.tex
index a6c8109..fd0420c 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -17,8 +17,8 @@ EAPIs are also used for profile directories, as described in section~\ref{sec:pr
 
 \section{Defined EAPIs}
 
-\ChangeWhenAddingAnEAPI{8}
-This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', and~`8'.
+\ChangeWhenAddingAnEAPI{9}
+This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', `8', and~`9'.
 EAPI~`0' is the `original' base EAPI\@. Each of the later EAPIs contains a number of extensions
 to its predecessor.
 

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index b8deb04..6d51bd0 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -266,7 +266,7 @@ inconsistent variable.
 \end{longtable}
 \end{landscape}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
     \begin{tabular}{lllllll}
@@ -282,12 +282,12 @@ inconsistent variable.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4                 & Yes & Yes & Yes & No  & No  & No  \\
       5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
     \begin{tabular}{lllllll}
@@ -302,12 +302,12 @@ inconsistent variable.
       \midrule
       0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
       4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
-      7, 8              & No  & No  & No  & No  & No  & No  \\
+      7, 8, 9           & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
     \begin{tabular}{lllll}
@@ -320,7 +320,7 @@ inconsistent variable.
       \midrule
       0, 1, 2           & No  & No  & No  & No  \\
       3, 4, 5, 6        & Yes & Yes & Yes & No  \\
-      7, 8              & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -344,7 +344,7 @@ must be unset, for EAPIs listed in table~\ref{tab:profile-env-unset} as supporti
 ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in
 table~\ref{tab:locale-settings}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Locale settings for EAPIs}
     \label{tab:locale-settings}
     \begin{tabular}{ll}
@@ -353,7 +353,7 @@ table~\ref{tab:locale-settings}.
       \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & Undefined \\
-      6, 7, 8           & Yes       \\
+      6, 7, 8, 9        & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -439,7 +439,7 @@ contain at most one value.
 \subsection{Offset-prefix variables}
 \label{sec:offset-vars}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix}
     \label{tab:offset-support-table}
     \begin{tabular}{ll}
@@ -447,8 +447,8 @@ contain at most one value.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports offset-prefix?}}\\
       \midrule
-      0, 1, 2           & No  \\
-      3, 4, 5, 6, 7, 8  & Yes \\
+      0, 1, 2             & No  \\
+      3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -479,7 +479,7 @@ specifies the system root directory, it will consist of a single slash (\t{/}).
 a trailing slash, the package manager guarantees that a trailing slash will never be present.
 If the path specifies the system root directory, it will be empty.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
     \begin{tabular}{lll}
@@ -491,7 +491,7 @@ If the path specifies the system root directory, it will be empty.
       \t{D}, \t{ED} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & always & always \\
-      7, 8                & never  & never  \\
+      7, 8, 9             & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index cf06668..c366295 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -21,7 +21,7 @@ certain variables and functions (see chapters~\ref{ch:ebuild-vars} and~\ref{ch:e
 for specific information), and must not call any external programs, write anything to standard
 output or standard error, or modify the state of the system in any way.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Bash version and options}
     \label{tab:bash-version}
     \begin{tabular}{lll}
@@ -32,7 +32,7 @@ output or standard error, or modify the state of the system in any way.
       \midrule
       0, 1, 2, 3, 4, 5  & 3.2 & No  \\
       6, 7              & 4.2 & Yes \\
-      8                 & 5.0 & Yes \\
+      8, 9              & 5.0 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 25164d4..b3e2a61 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -46,7 +46,7 @@ fallback to \t{WORKDIR} is used:
     executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Initial working directory in \t{pkg_*} phase functions for EAPIs}
     \label{tab:function-dirs}
     \begin{tabular}{ll}
@@ -55,12 +55,12 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Initial working directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
-      8                       & Empty \\
+      8, 9                    & Empty \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
     \label{tab:s-fallback-table}
     \begin{tabular}{ll}
@@ -69,7 +69,7 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Fallback to \t{WORKDIR} permitted?}} \\
       \midrule
       0, 1, 2, 3        & Always            \\
-      4, 5, 6, 7, 8     & Conditional error \\
+      4, 5, 6, 7, 8, 9  & Conditional error \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -91,7 +91,7 @@ before the next phase is executed.
 
 \t{pkg_pretend} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_pretend}}
     \label{tab:pkg-pretend-table}
     \begin{tabular}{ll}
@@ -100,7 +100,7 @@ before the next phase is executed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_pretend}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -149,7 +149,7 @@ listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, respectively
 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_prepare} support and behaviour for EAPIs}
     \label{tab:src-prepare-table}
     \begin{tabular}{lll}
@@ -161,7 +161,7 @@ the \t{src_prepare} function is a no-op.
       0, 1              & No  & Not applicable \\
       2, 3, 4, 5        & Yes & no-op          \\
       6, 7              & Yes & 6              \\
-      8                 & Yes & 8              \\
+      8, 9              & Yes & 8              \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -206,7 +206,7 @@ The \t{src_configure} function configures the package's build environment. The d
 implementation used when the ebuild lacks the \t{src_configure} function shall behave as in
 listing~\ref{lst:src-configure-2}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{src_configure}}
     \label{tab:src-configure-table}
     \begin{tabular}{ll}
@@ -214,8 +214,8 @@ listing~\ref{lst:src-configure-2}.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{src_configure}?}} \\
       \midrule
-      0, 1                & No  \\
-      2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0, 1                   & No  \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -244,7 +244,7 @@ implementation used when the ebuild lacks the \t{src_prepare} function shall beh
 listing~\ref{lst:src-compile-0}, listing~\ref{lst:src-compile-1} or listing~\ref{lst:src-compile-2},
 respectively.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_compile} behaviour for EAPIs}
     \label{tab:src-compile-table}
     \begin{tabular}{ll}
@@ -252,9 +252,9 @@ respectively.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Format}} \\
       \midrule
-      0                   & 0 \\
-      1                   & 1 \\
-      2, 3, 4, 5, 6, 7, 8 & 2 \\
+      0                      & 0 \\
+      1                      & 1 \\
+      2, 3, 4, 5, 6, 7, 8, 9 & 2 \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -317,7 +317,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_test} behaviour for EAPIs}
     \label{tab:src-test-table}
     \begin{tabular}{ll}
@@ -326,7 +326,7 @@ be disabled by user too, using a PM-specific mechanism.
       \multicolumn{1}{c}{\textbf{Supports parallel tests?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -346,7 +346,7 @@ listing~\ref{lst:src-install-4} or listing~\ref{lst:src-install-6}, respectively
 For other EAPIs, the default implementation used when the ebuild lacks the \t{src_install} function
 is a no-op.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_install} behaviour for EAPIs}
     \label{tab:src-install-table}
     \begin{tabular}{ll}
@@ -356,7 +356,7 @@ is a no-op.
       \midrule
       0, 1, 2, 3        & no-op \\
       4, 5              & 4     \\
-      6, 7, 8           & 6     \\
+      6, 7, 8, 9        & 6     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -450,7 +450,7 @@ that dependencies may not be installed.
 
 \t{pkg_info} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_info} on non-installed packages}
     \label{tab:pkg-info-table}
     \begin{tabular}{ll}
@@ -459,7 +459,7 @@ that dependencies may not be installed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_info} on non-installed packages?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -481,7 +481,7 @@ named \t{default_<phase-function>}) that behaves as the default implementation f
 be defined when executing any ebuild phase function listed in the table. Ebuilds must not call
 these functions except when in the phase in question.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{default_} phase functions}
     \label{tab:default-phase-function-table}
     \begin{tabular}{l P{26em}}
@@ -492,7 +492,7 @@ these functions except when in the phase in question.
       0, 1              & None \\
       2, 3              & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test} \\
-      4, 5, 6, 7, 8     & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
+      4, 5, 6, 7, 8, 9  & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test}, \t{src_install} \\
       \bottomrule
     \end{tabular}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 5f3f583..c4413f5 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -90,7 +90,7 @@ defined by an eclass.
 \item[IDEPEND] See chapter~\ref{ch:dependencies}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{IUSE} defaults}
     \label{tab:iuse-defaults-table}
     \begin{tabular}{ll}
@@ -98,13 +98,13 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{IUSE} defaults?}} \\
       \midrule
-      0                      & No  \\
-      1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0                         & No  \\
+      1, 2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
     \begin{tabular}{lll}
@@ -114,7 +114,7 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6, 7, 8     & Yes        & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -179,7 +179,7 @@ selective URI restrictions, the URI protocol can be prefixed by an additional \t
 restriction for the URI (but not the implied mirror restriction). If the ebuild is fetch or mirror
 restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for the URI.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows and selective URI restrictions}
     \label{tab:uri-arrows-table}
     \begin{tabular}{lll}
@@ -190,7 +190,7 @@ restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for
       \midrule
       0, 1              & No  & No  \\
       2, 3, 4, 5, 6, 7  & Yes & No  \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -275,7 +275,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} default}
     \label{tab:rdepend-depend-table}
     \begin{tabular}{ll}
@@ -284,7 +284,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
       \multicolumn{1}{c}{\textbf{\t{RDEPEND=DEPEND}?}} \\
       \midrule
       0, 1, 2, 3        & Yes \\
-      4, 5, 6, 7, 8     & No  \\
+      4, 5, 6, 7, 8, 9  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -319,7 +319,7 @@ not be exported to the ebuild environment:
 \note{Thus, by extension of section~\ref{sec:metadata-invariance}, phase functions must not be
 defined based upon any variant condition.}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{DEFINED_PHASES}}
     \label{tab:defined-phases-table}
     \begin{tabular}{ll}
@@ -328,7 +328,7 @@ defined based upon any variant condition.}
       \multicolumn{1}{c}{\textbf{Supports \t{DEFINED_PHASES}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally \\
-      4, 5, 6, 7, 8     & Yes        \\
+      4, 5, 6, 7, 8, 9  & Yes        \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eclasses.tex b/eclasses.tex
index a4400e1..3e7419c 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -43,7 +43,7 @@ the previous one is loaded. For EAPIs listed in table~\ref{tab:accumulate-vars}
 value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is done after
 the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across eclasses}
     \label{tab:accumulate-vars}
     \begin{tabular}{lll}
@@ -53,7 +53,7 @@ the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
       \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
-      8                       & Yes & Yes \\
+      8, 9                    & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/merge.tex b/merge.tex
index ca1036d..db9c74f 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Preservation of file modification times (mtimes)}
     \label{tab:mtime-preserve}
     \begin{tabular}{ll}
@@ -94,8 +94,8 @@ is undefined.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\
       \midrule
-      0, 1, 2           & Undefined \\
-      3, 4, 5, 6, 7, 8  & Yes       \\
+      0, 1, 2             & Undefined \\
+      3, 4, 5, 6, 7, 8, 9 & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 95caa0b..2716faa 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -32,7 +32,7 @@ The following commands affect this behaviour:
     option and in EAPIs supporting this option, see table~\ref{tab:die-properties}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
     \begin{tabular}{llll}
@@ -44,7 +44,7 @@ The following commands affect this behaviour:
       \midrule
       0, 1, 2, 3        & Non-zero exit & No  & n/a \\
       4, 5, 6           & Aborts        & Yes & No  \\
-      7, 8              & Aborts        & Yes & Yes \\
+      7, 8, 9           & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -55,7 +55,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{8}
+\ChangeWhenAddingAnEAPI{9}  % two places
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
     \begin{tabular}{lllllll}
@@ -73,7 +73,7 @@ called, the package manager must abort the build process indicating an error.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4, 5              & Yes & Yes & No  & No  & No  & No  \\
       6                 & Yes & Yes & Yes & No  & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \midrule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{6}{c}{\textbf{Command banned?}} \\
@@ -83,7 +83,7 @@ called, the package manager must abort the build process indicating an error.
       \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-      8                       & Yes & Yes & Yes & & & \\
+      8, 9                    & Yes & Yes & Yes & & & \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -121,7 +121,7 @@ are given, \t{-r} is assumed.
     otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Package manager query command options supported by EAPIs}
     \label{tab:pm-query-options}
     \begin{tabular}{lllll}
@@ -134,7 +134,7 @@ are given, \t{-r} is assumed.
       \midrule
       0, 1, 2, 3, 4     & No  & No  & No  & No  \\
       5, 6              & Yes & No  & No  & No  \\
-      7, 8              & No  & Yes & Yes & Yes \\
+      7, 8, 9           & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -171,7 +171,7 @@ output, using stdout as an output facility is forbidden.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
     \begin{tabular}{lll}
@@ -181,7 +181,7 @@ output, using stdout as an output facility is forbidden.
       \multicolumn{1}{c}{\textbf{Supports \t{eqawarn}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes & No  \\
-      7, 8                & No  & Yes \\
+      7, 8, 9             & No  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -203,7 +203,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
     \label{tab:die-properties}
     \begin{tabular}{lll}
@@ -216,7 +216,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
       6                 & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -280,7 +280,7 @@ Ebuilds must not run any of these commands once the current phase function has r
     subsequent calls, the command will do nothing and return~0.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Patch commands for EAPIs}
     \label{tab:patch-commands}
     \begin{tabular}{lll}
@@ -290,7 +290,7 @@ Ebuilds must not run any of these commands once the current phase function has r
       \multicolumn{1}{c}{\textbf{\t{eapply_user}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -347,7 +347,7 @@ commands once the current phase function has returned.
         is immediately followed by any of the characters \t{[A-Za-z0-9+_.-]}.
     \end{itemize}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
         \begin{tabular}{lllll}
@@ -361,7 +361,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
           6                 & No  & Yes & Yes & No  \\
           7                 & No  & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & Yes \\
+          8, 9              & Yes & Yes & Yes & Yes \\
           \midrule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
@@ -371,7 +371,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3        & No  & No  & No  & \\
           4                 & Yes & No  & No  & \\
           5, 6, 7           & Yes & Yes & No  & \\
-          8                 & Yes & Yes & Yes & \\
+          8, 9              & Yes & Yes & Yes & \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -672,7 +672,7 @@ dosym_relative_path() {
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dodoc -r}}
     \label{tab:dodoc-table}
     \begin{tabular}{ll}
@@ -681,12 +681,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{dodoc -r}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}}
     \label{tab:doheader-table}
     \begin{tabular}{ll}
@@ -695,12 +695,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{doheader} and \t{newheader}?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting symlinks for \t{doins}}
     \label{tab:doins-table}
     \begin{tabular}{ll}
@@ -709,12 +709,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{doins} supports symlinks?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{doman} language support options for EAPIs}
     \label{tab:doman-table}
     \begin{tabular}{lll}
@@ -725,12 +725,12 @@ dosym_relative_path() {
       \midrule
       0, 1              & No  & Not applicable \\
       2, 3              & Yes & No             \\
-      4, 5, 6, 7, 8     & Yes & Yes            \\
+      4, 5, 6, 7, 8, 9  & Yes & Yes            \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting stdin for \t{new*} commands}
     \label{tab:newfoo-stdin-table}
     \begin{tabular}{ll}
@@ -739,12 +739,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{new*} can read from stdin?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{domo} destination path in EAPIs}
     \label{tab:domo-path}
     \begin{tabular}{ll}
@@ -753,12 +753,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Destination path}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
-      7, 8                & \t{/usr/share/locale} \\
+      7, 8, 9             & \t{/usr/share/locale} \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dosym -r}}
     \label{tab:dosym-r}
     \begin{tabular}{ll}
@@ -767,7 +767,7 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative paths?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  \\
-      8                       & Yes \\
+      8, 9                    & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -809,7 +809,7 @@ function has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{insopts} for EAPIs}
     \label{tab:insopts-commands}
     \begin{tabular}{lllll}
@@ -821,12 +821,12 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doheader}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes & Yes & Yes \\
-      8                       & Yes & No  & No  & No  \\
+      8, 9                    & Yes & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{exeopts} for EAPIs}
     \label{tab:exeopts-commands}
     \begin{tabular}{lll}
@@ -836,7 +836,7 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doinitd}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes \\
-      8                       & Yes & No  \\
+      8, 9                    & Yes & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -913,7 +913,7 @@ any of these functions from any other phase.
     supporting \t{dostrip}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands controlling manipulation of files in the staging area in EAPIs}
     \label{tab:staging-area-commands}
     \begin{tabular}{lll}
@@ -924,7 +924,7 @@ any of these functions from any other phase.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6           & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -971,7 +971,7 @@ table~\ref{tab:use-list-strictness}.
     table~\ref{tab:use-list-functions} as supporting \t{in_iuse}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI behaviour for use queries not in \t{IUSE_EFFECTIVE}}
     \label{tab:use-list-strictness}
     \begin{tabular}{ll}
@@ -980,12 +980,12 @@ table~\ref{tab:use-list-strictness}.
       \multicolumn{1}{c}{\textbf{Behaviour}} \\
       \midrule
       0, 1, 2, 3        & Undefined \\
-      4, 5, 6, 7, 8     & Error     \\
+      4, 5, 6, 7, 8, 9  & Error     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for EAPIs}
     \label{tab:use-list-args}
     \begin{tabular}{lll}
@@ -997,12 +997,12 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6, 7        & No  & Yes \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{usex} and \t{in_iuse}}
     \label{tab:use-list-functions}
     \begin{tabular}{lll}
@@ -1013,7 +1013,7 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3, 4     & No  & No  \\
       5                 & Yes & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1098,7 +1098,7 @@ the second, inclusively.
     section~\ref{sec:version-spec}. Comparison is done using algorithm~\ref{alg:version-comparison}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
     \label{tab:version-commands}
     \begin{tabular}{llll}
@@ -1109,7 +1109,7 @@ the second, inclusively.
       \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-      7, 8                & Yes & Yes & Yes \\
+      7, 8, 9             & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1186,7 +1186,7 @@ has returned.
     \featurelabel{unpack-ignore-case} \t{unpack} matches filename extensions in a case-insensitive
     manner, for EAPIs listed such in table~\ref{tab:unpack-behaviour}.
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} behaviour for EAPIs}
         \label{tab:unpack-behaviour}
         \begin{tabular}{lll}
@@ -1196,12 +1196,12 @@ has returned.
           \multicolumn{1}{c}{\textbf{Case-insensitive matching?}} \\
           \midrule
           0, 1, 2, 3, 4, 5  & No  & No  \\
-          6, 7, 8           & Yes & Yes \\
+          6, 7, 8, 9        & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} extensions for EAPIs}
         \label{tab:unpack-extensions-table}
         \begin{tabular}{llllllll}
@@ -1217,7 +1217,7 @@ has returned.
           0, 1, 2           & No  & No  & No  & Yes & Yes & Yes \\
           3, 4, 5           & Yes & Yes & No  & Yes & Yes & Yes \\
           6, 7              & Yes & Yes & Yes & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & No  & No  & No  \\
+          8, 9              & Yes & Yes & Yes & No  & No  & No  \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -1285,7 +1285,7 @@ has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
     \label{tab:misc-commands}
     \begin{tabular}{llll}
@@ -1297,7 +1297,7 @@ has returned.
       \midrule
       0, 1              & No  & No  & No  \\
       2, 3, 4, 5        & Yes & No  & No  \\
-      6, 7, 8           & Yes & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pms.tex b/pms.tex
index f435f51..4a7bb0b 100644
--- a/pms.tex
+++ b/pms.tex
@@ -21,8 +21,8 @@
     pdfkeywords={Gentoo, package manager, specification},
 }
 
-\CurrentEAPIIs{8}
-\ChangeWhenAddingAnEAPI{8}
+\CurrentEAPIIs{9}
+\ChangeWhenAddingAnEAPI{9}
 
 \begin{document}
 \maketitle

diff --git a/profile-variables.tex b/profile-variables.tex
index ba40bf4..0f2dc3c 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -40,7 +40,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs}
     \label{tab:profile-iuse-injection-table}
     \begin{tabular}{ll}
@@ -49,12 +49,12 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined unsetting of variables in EAPIs}
     \label{tab:profile-env-unset}
     \begin{tabular}{ll}
@@ -63,7 +63,7 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports \t{ENV_UNSET}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/profiles.tex b/profiles.tex
index 30da81b..8d8226a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -78,7 +78,7 @@ in that directory, unless their name begins with a dot, will be concatenated in
 filename in the POSIX locale and the result will be processed as if it were a single file.
 Any subdirectories will be ignored.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting directories for profile files}
     \label{tab:profile-file-dirs}
     \begin{tabular}{ll}
@@ -87,7 +87,7 @@ Any subdirectories will be ignored.
       \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -123,7 +123,7 @@ it is actually installed. Because it has severe adverse effects on USE-based and
 dependencies, its use is strongly deprecated and package manager support must be regarded as purely
 optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{package.provided} in profiles}
     \label{tab:package-provided}
     \begin{tabular}{ll}
@@ -132,7 +132,7 @@ optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
       \multicolumn{1}{c}{\textbf{Supports \t{package.provided}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Optionally \\
-      7, 8                & No         \\
+      7, 8, 9             & No         \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -165,7 +165,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile directory support for masking/forcing use flags in stable versions only}
     \label{tab:profile-stablemask}
     \begin{tabular}{ll}
@@ -174,7 +174,7 @@ stable in a package.
       \multicolumn{1}{c}{\textbf{Supports masking/forcing use flags in stable versions?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/tree-layout.tex b/tree-layout.tex
index da01ff8..cac84bb 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -127,7 +127,7 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
     \label{tab:package-mask-dir}
     \begin{tabular}{ll}
@@ -136,7 +136,7 @@ manager must ignore any files in this directory that it does not recognise.
       \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -233,7 +233,7 @@ Any name that has appeared as the origin of a move must not be reused in the fut
 that has appeared as the origin of a slot move may not be used by packages matching the spec of
 that slot move in the future.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Naming rules for files in \t{updates} directory for EAPIs}
     \label{tab:updates-filenames}
     \begin{tabular}{ll}
@@ -242,7 +242,7 @@ that slot move in the future.
       \multicolumn{1}{c}{\textbf{Files per quarter year?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes \\
-      8                       & No  \\
+      8, 9                    & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     9f29701e6c34079220dde59a3bc1ba53d9387cd0
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:32:43 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 26 17:40:19 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=9f29701e

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 79b3931..37e59cf 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -35,6 +35,9 @@ Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
 Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
     No & No & No & Yes \\
 
+Default EAPI for profiles & \compactfeatureref{profile-eapi-default} &
+    0 & 0 & 0 & Top-level \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & Yes & Yes & Yes \\
 
@@ -356,6 +359,7 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
+\item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 6fa8a1c..de59f0a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -50,8 +50,27 @@ this file must not contain comments or blank lines.
 A profile directory may contain an \t{eapi} file. This file, if it exists, must contain a single
 line with the name of an EAPI\@. This specifies the EAPI to use when handling the directory in
 question; a package manager must not attempt to use any profile using a directory which requires an
-EAPI it does not support. If no \t{eapi} file is present, EAPI 0 shall be used. The EAPI is neither
-inherited via the \t{parent} file nor in subdirectories.
+EAPI it does not support.
+
+\featurelabel{profile-eapi-default} If no \t{eapi} file is present, the default depends on the EAPI
+of the top-level profiles directory (see section~\ref{sec:profiles-dir}). That EAPI shall be used
+if table~\ref{tab:profile-eapi-default} lists it as ``top-level''. Otherwise, EAPI 0 shall be used.
+
+The EAPI is neither inherited via the \t{parent} file nor in subdirectories.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Default EAPI for profiles}
+    \label{tab:profile-eapi-default}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Default EAPI?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & 0         \\
+      9                         & Top-level \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{deprecated}
 If a profile contains a file named \t{deprecated}, it is treated as such. The first line of this


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     0178f252abe6c91ca639814cc4bd49c9fbe22727
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:30:11 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 26 17:40:18 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=0178f252

EAPI 9 profile parent files can contain comments

Bug: https://bugs.gentoo.org/470094
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 ++++-
 profiles.tex         | 20 +++++++++++++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 2df5361..79b3931 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -32,6 +32,9 @@ have identical entries for all listed EAPIs.}
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
     No & No & Yes & Yes \\
 
+Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
+    No & No & No & Yes \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & Yes & Yes & Yes \\
 
@@ -352,7 +355,7 @@ EAPI 8 is EAPI 7 with the following changes:
 EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 8d8226a..6fa8a1c 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -25,7 +25,25 @@ first, left to right, with duplicate parent paths being sourced for every time t
 It is illegal for a profile's parent tree to contain cycles. Package manager behaviour upon
 encountering a cycle is undefined.
 
-This file must not contain comments, blank lines or make use of line continuations.
+This file must not make use of line continuations.
+
+\featurelabel{parent-comments} For EAPIs listed in table~\ref{tab:profile-parent-comments} as
+allowing comments, blank lines and lines beginning with a \t{\#} are discarded. For other EAPIs,
+this file must not contain comments or blank lines.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs allowing comments in \t{parent} file}
+    \label{tab:profile-parent-comments}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Allows comments?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+      9                         & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{The eapi file}
 \label{sec:profile-eapi}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     c5a07aa426d0536f6ff9387af471105ebb0ba96e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Feb  1 18:12:48 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Feb  1 18:12:48 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=c5a07aa4

Reference sections by "section 11.2" rather than "11.2"

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 ebuild-env-vars.tex    | 8 ++++----
 ebuild-environment.tex | 6 +++---
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 7f430e7..b8deb04 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -6,7 +6,7 @@ meaningful in all phases; variables that are not meaningful in a given phase may
 any value. Ebuilds must not attempt to modify any of these variables, unless otherwise specified.
 
 Because of their special meanings, these variables may not be preserved consistently across all
-phases as would normally happen due to environment saving (see~\ref{sec:ebuild-env-state}).
+phases as would normally happen due to environment saving (see section~\ref{sec:ebuild-env-state}).
 For example, \t{EBUILD_PHASE} is different for every phase, and \t{ROOT} may have changed between
 the various different \t{pkg_*} phases. Ebuilds must recalculate any variable they derive from an
 inconsistent variable.
@@ -40,7 +40,7 @@ inconsistent variable.
 \endlastfoot
 \t{P} &
     All &
-    No\footnote{May change if a package has been updated (see~\ref{sec:updates-dir}).} &
+    No\footnote{May change if a package has been updated (see section~\ref{sec:updates-dir}).} &
     Package name and version, without the revision part. For example, \t{vim-7.0.174}. \\
 \t{PF} &
     All &
@@ -175,8 +175,8 @@ inconsistent variable.
     calling environment, \t{EPREFIX} defaults to the built-in offset-prefix that was set during
     installation of the package manager. When a different \t{EPREFIX} value than the built-in value
     is set in the calling environment, a cross-prefix build is performed where using the existing
-    utilities, a package is built for the given \t{EPREFIX}, akin to \t{ROOT}\@.
-    See also~\ref{sec:offset-vars}. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table}
+    utilities, a package is built for the given \t{EPREFIX}, akin to \t{ROOT}\@. See also
+    section~\ref{sec:offset-vars}. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table}
     as supporting \t{EPREFIX}. \\
 \t{D} &
     \t{src_*} &

diff --git a/ebuild-environment.tex b/ebuild-environment.tex
index b9f3622..8093f1e 100644
--- a/ebuild-environment.tex
+++ b/ebuild-environment.tex
@@ -16,9 +16,9 @@ Variables that were exported must remain exported in later functions; variables
 visibility may retain default visibility or be exported. Variables with special meanings to the
 package manager are excluded from this rule.
 
-Global variables must only contain invariant values (see~\ref{sec:metadata-invariance}). If a global
-variable's value is invariant, it may have the value that would be generated at any given point
-in the build sequence.
+Global variables must only contain invariant values (see section~\ref{sec:metadata-invariance}).
+If a global variable's value is invariant, it may have the value that would be generated at any
+given point in the build sequence.
 
 This is demonstrated by code listing~\ref{lst:env-saving}.
 


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2023-01-19 16:40 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2023-02-26 17:42 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     9dabbe3b66b56d41cc618a096e35310f483e961b
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 14 09:26:48 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Jan 18 21:12:28 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=9dabbe3b

names.tex: Specify eclass names

Eclasses may export phase functions prefixed with their name, so
ideally we would follow the syntax of Bash (and POSIX) identifiers:

| A word consisting solely of underscores, digits, and alphabetics
| from the portable character set. The first character of a name is
| not a digit.

Because many existing eclasses have a dot or a hyphen in their name,
we follow usage in the Gentoo repository instead. (The only historical
exception to the above was 64-bit.eclass, not used since 2006 and
removed in 2009.)

An eclass must not be named "default", otherwise names of exported
functions would collide with default_<phase-function>.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eclasses.tex | 1 +
 names.tex    | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/eclasses.tex b/eclasses.tex
index 01692bc..0b9b5d4 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -10,6 +10,7 @@ hold.
 Eclasses must be located in the \t{eclass} directory in the top level of the repository---see
 section~\ref{sec:eclass-dir}. Each eclass is a single file named \t{<name>.eclass}, where \t{<name>}
 is the name of this eclass, used by \t{inherit} and \t{EXPORT_FUNCTIONS} among other places.
+\t{<name>} must be a valid eclass name, as per section~\ref{sec:eclass-names}.
 
 \section{The inherit Command}
 \label{sec:inherit}

diff --git a/names.tex b/names.tex
index 2994719..76fa72d 100644
--- a/names.tex
+++ b/names.tex
@@ -18,6 +18,11 @@ syntax described in section~\ref{sec:version-spec}.
 \note{A package name does not include the category. The term \i{qualified package name} is used
 where a \t{category/package} pair is meant.}
 
+\subsection{Eclass names}
+\label{sec:eclass-names}
+An eclass name may contain any of the characters [\t{A-Za-z0-9_.-}]. It must begin with a letter or
+an underscore. In addition, an eclass cannot be named \t{default}.
+
 \subsection{Slot names}
 \label{sec:slot-names}
 A slot name may contain any of the characters [\t{A-Za-z0-9+_.-}]. It must not begin with a


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2023-01-19 16:40 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2023-02-26 17:42 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     5e9afb6d818201028acbe922c6d86e9bf27dd860
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 14 09:28:01 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Jan 18 21:12:28 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=5e9afb6d

Distinguish between "phase" and "phase function"

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 ebuild-functions.tex | 6 +++---
 eclasses.tex         | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 7d372fa..25164d4 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -477,9 +477,9 @@ source files from their respective locations, with notes concerning licensing if
 
 \featurelabel{default-phase-funcs} In EAPIs listed in
 table~\ref{tab:default-phase-function-table} as supporting \t{default_} phase functions, a function
-named \t{default_}(phase) that behaves as the default implementation for that EAPI shall be defined
-when executing any ebuild phase listed in the table. Ebuilds must not call these functions except
-when in the phase in question.
+named \t{default_<phase-function>}) that behaves as the default implementation for that EAPI shall
+be defined when executing any ebuild phase function listed in the table. Ebuilds must not call
+these functions except when in the phase in question.
 
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{EAPIs supporting \t{default_} phase functions}

diff --git a/eclasses.tex b/eclasses.tex
index 0b9b5d4..a4400e1 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -87,7 +87,7 @@ should the author wish to override it he can access the function in \t{foo.eclas
 \t{foo_src_compile}.
 
 \t{EXPORT_FUNCTIONS} must only be used on ebuild phase functions. The function that is aliased
-must be named \t{eclassname_phasefunctionname}, where \t{eclassname} is the name of the eclass.
+must be named \t{<eclass>_<phase-function>}, where \t{<eclass>} is the name of the eclass.
 
 If \t{EXPORT_FUNCTIONS} is called multiple times for the same phase function, the last call takes
 precedence. Eclasses may not rely upon any particular behaviour if they inherit another eclass


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     523f2f8a79516cae55607d16335babdc0b67e075
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 29 10:49:27 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Jan 29 10:49:27 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=523f2f8a

names.tex: Reorder subsections

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 names.tex | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/names.tex b/names.tex
index 76fa72d..ed6d623 100644
--- a/names.tex
+++ b/names.tex
@@ -18,11 +18,6 @@ syntax described in section~\ref{sec:version-spec}.
 \note{A package name does not include the category. The term \i{qualified package name} is used
 where a \t{category/package} pair is meant.}
 
-\subsection{Eclass names}
-\label{sec:eclass-names}
-An eclass name may contain any of the characters [\t{A-Za-z0-9_.-}]. It must begin with a letter or
-an underscore. In addition, an eclass cannot be named \t{default}.
-
 \subsection{Slot names}
 \label{sec:slot-names}
 A slot name may contain any of the characters [\t{A-Za-z0-9+_.-}]. It must not begin with a
@@ -40,6 +35,11 @@ described in section~\ref{sec:use-iuse-handling}.
 A repository name may contain any of the characters [\t{A-Za-z0-9_-}]. It must not begin with a
 hyphen. In addition, every repository name must also be a valid package name.
 
+\subsection{Eclass names}
+\label{sec:eclass-names}
+An eclass name may contain any of the characters [\t{A-Za-z0-9_.-}]. It must begin with a letter or
+an underscore. In addition, an eclass cannot be named \t{default}.
+
 \subsection{License names}
 \label{sec:license-names}
 A license name may contain any of the characters [\t{A-Za-z0-9+_.-}]. It must not begin with a


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2023-01-19 16:40 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2023-02-26 17:42 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     39d51402f2eaa0ca06cb52ca3f5e1562a3496dbd
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Jan 18 21:11:32 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Jan 18 21:11:32 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=39d51402

Whitespace

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 dependencies.tex     | 4 ++--
 ebuild-env-vars.tex  | 8 ++++----
 ebuild-functions.tex | 5 +++--
 eclasses.tex         | 4 ++--
 introduction.tex     | 6 +++---
 merge.tex            | 4 ++--
 6 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index 0ff1c7e..6c09714 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -240,8 +240,8 @@ error on non-compliant input.
 
 In EAPIs shown in table~\ref{tab:slot-deps-table} as supporting \t{SLOT} dependencies, either of the
 above formats may additionally be suffixed by a \t{:slot} restriction, as described in
-section~\ref{sec:slot-dep}. A package manager must warn or error if slot dependencies are used with an
-EAPI not supporting \t{SLOT} dependencies.
+section~\ref{sec:slot-dep}. A package manager must warn or error if slot dependencies are used with
+an EAPI not supporting \t{SLOT} dependencies.
 
 \featurelabel{use-deps} In EAPIs shown in table~\ref{tab:use-deps-table} as supporting 2-style
 or 4-style \t{USE} dependencies, a specification may additionally be suffixed by at most one

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index db693ab..004a7a2 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -6,10 +6,10 @@ meaningful in all phases; variables that are not meaningful in a given phase may
 any value. Ebuilds must not attempt to modify any of these variables, unless otherwise specified.
 
 Because of their special meanings, these variables may not be preserved consistently across all
-phases as would normally happen due to environment saving (see~\ref{sec:ebuild-env-state}). For example,
-\t{EBUILD_PHASE} is different for every phase, and \t{ROOT} may have changed between the various
-different \t{pkg_*} phases. Ebuilds must recalculate any variable they derive from an inconsistent
-variable.
+phases as would normally happen due to environment saving (see~\ref{sec:ebuild-env-state}).
+For example, \t{EBUILD_PHASE} is different for every phase, and \t{ROOT} may have changed between
+the various different \t{pkg_*} phases. Ebuilds must recalculate any variable they derive from an
+inconsistent variable.
 
 \begin{landscape}
 \reversemarginpar

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 0c745c3..7d372fa 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -434,8 +434,9 @@ the \t{ROOT} environment variable.
 
 \subsection{pkg_config}
 
-The \t{pkg_config} function performs any custom steps required to configure a package after it has been
-fully installed. It is the only ebuild function which may be interactive and prompt for user input.
+The \t{pkg_config} function performs any custom steps required to configure a package after it has
+been fully installed. It is the only ebuild function which may be interactive and prompt for user
+input.
 
 \t{pkg_config} must be run with full access to all files and directories inside of \t{ROOT}.
 

diff --git a/eclasses.tex b/eclasses.tex
index e23dcd8..01692bc 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -8,8 +8,8 @@ using them. The interpreter is therefore the same, and the same requirements for
 hold.
 
 Eclasses must be located in the \t{eclass} directory in the top level of the repository---see
-section~\ref{sec:eclass-dir}. Each eclass is a single file named \t{<name>.eclass}, where \t{<name>} is
-the name of this eclass, used by \t{inherit} and \t{EXPORT_FUNCTIONS} among other places.
+section~\ref{sec:eclass-dir}. Each eclass is a single file named \t{<name>.eclass}, where \t{<name>}
+is the name of this eclass, used by \t{inherit} and \t{EXPORT_FUNCTIONS} among other places.
 
 \section{The inherit Command}
 \label{sec:inherit}

diff --git a/introduction.tex b/introduction.tex
index 57fb51a..86149b2 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -13,9 +13,9 @@ This document does not specify any user or package manager configuration informa
 
 \section{Rationale}
 
-At present the only definition of what an ebuild can assume about its environment,
-and the only definition of what is valid in an ebuild, is the source code of the latest Portage release
-and a general consensus about which features are too new to assume availability. This has several
+At present the only definition of what an ebuild can assume about its environment, and the only
+definition of what is valid in an ebuild, is the source code of the latest Portage release and
+a general consensus about which features are too new to assume availability. This has several
 drawbacks: not only is it impossible to change any aspect of Portage behaviour without verifying
 that nothing in the tree relies upon it, but if a new package manager should appear it becomes
 impossible to fully support such an ill-defined standard.

diff --git a/merge.tex b/merge.tex
index 6fcfeec..ca1036d 100644
--- a/merge.tex
+++ b/merge.tex
@@ -30,8 +30,8 @@ except as follows:
     its group be that of the superuser.
 \end{compactitem}
 
-On SELinux systems, the SELinux context must also be preserved. Other directory attributes, including
-modification time, may be discarded.
+On SELinux systems, the SELinux context must also be preserved. Other directory attributes,
+including modification time, may be discarded.
 
 \subsection{Empty directories}
 


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-26 17:42 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     f344e519a5904b7994932058c97199ac67df74a6
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 19 21:22:40 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Feb 26 17:40:17 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f344e519

EAPI feature table: Don't use a landscape table

Drop EAPIs 0 to 5 from the table, as well as items that would have
identical entries for all listed EAPIs.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex | 321 ++++++++++-----------------------------------------
 pms.cls              |   2 +-
 2 files changed, 61 insertions(+), 262 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 225c2b6..b20693a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,39 +1,24 @@
 \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, 2, 3, and~4 have been consolidated into a single column in the table
-below; entries marked with an asterisk differ between these EAPIs. See the 2012-09-20 edition
-of this document for a complete table of previous EAPIs.}
-% 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
+For lack of space, EAPIs 0 to~5 have been omitted from the table below, as well as items that would
+have identical entries for all listed EAPIs.}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{@{}lllll@{}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{3}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{3}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 \\
 \midrule
 \endhead
 \midrule
@@ -42,334 +27,148 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & No & No & Yes \\
+    No & No & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & Optional & Optional & No & No \\
-
-Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & Yes & Yes & Yes & Yes \\
+    Optional & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\
-
-\t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & Yes & Yes & Yes \\
-
-\t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{REQUIRED_USE} & \compactfeatureref{required-use} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{PROPERTIES} & \compactfeatureref{properties} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes \\
+    4.2 & 4.2 & 5.0 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & No & No & Yes \\
-
-\t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    * & No & No & No & No \\
-
-\t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-    * & Yes & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & No & No & Yes \\
-
-\t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & Yes & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & Yes & Yes & No & No \\
-
-Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named and Operator & Named and Operator & Named and Operator & Named and Operator \\
-
-Sub-slots & \compactfeatureref{sub-slot} &
-    No & Yes & Yes & Yes & Yes \\
-
-Use dependencies & \compactfeatureref{use-deps} &
-    * & 4-style & 4-style & 4-style & 4-style \\
-
-\t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak \\
-
-\t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong \\
+    Yes & No & No \\
 
 Working dir in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Any & Any & Empty \\
-
-\t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    * & Conditional & Conditional & Conditional & Conditional \\
-
-\t{pkg_pretend} & \compactfeatureref{pkg-pretend} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{src_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes \\
+    Any & Any & Empty \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & 6 & 6 & 8 \\
-
-\t{src_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{src_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 \\
-
-Parallel tests & \compactfeatureref{parallel-tests} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{src_install} style & \compactfeatureref{src-install} &
-    * & 4 & 6 & 6 & 6 \\
-
-\t{pkg_info} & \compactfeatureref{pkg-info} &
-    * & Both & Both & Both & Both \\
-
-\t{default_} phase functions & \compactfeatureref{default-phase-funcs} &
-    * &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} \\
+    6 & 6 & 8 \\
 
 Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes \\
+    No & No & Yes \\
 
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes \\
-
-\t{AA} & \compactfeatureref{aa} &
-    * & No & No & No & No \\
+    No & No & Yes \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & Yes & Yes & No & No \\
-
-\t{KV} & \compactfeatureref{kv} &
-    * & No & No & No & No \\
-
-\t{EBUILD_PHASE_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{MERGE_TYPE} & \compactfeatureref{merge-type} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & No & No \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & No & No & Yes & Yes \\
-
-Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Yes & Yes & Yes \\
-
-Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{REPLACING_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{REPLACED_BY_VERSION} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    * & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & Any & Any & 2.7 & 2.7 \\
-
-\t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Yes & Yes & Yes & Yes \\
-
-Most utilities die & \compactfeatureref{die-on-failure} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{nonfatal} & \compactfeatureref{nonfatal} &
-    * & Yes & Yes & Function / external & Function / external \\
-
-\t{dohard} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
+    Any & 2.7 & 2.7 \\
 
-\t{dosed} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
-
-\t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned \\
+\t{nonfatal} function and external & \compactfeatureref{nonfatal} &
+    No & Yes & Yes \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
-    \t{-b}, \t{-d}, \t{-r} \\
+    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & No & No & Yes & Yes \\
-
-\t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & No & No & Yes & Yes \\
-
-\t{eapply} & \compactfeatureref{eapply} &
-    No & No & Yes & Yes & Yes \\
-
-\t{eapply_user} & \compactfeatureref{eapply-user} &
-    No & No & Yes & Yes & Yes \\
-
-\t{econf} arguments & \compactfeatureref{econf-options} &
-    * &
-    disable dependency tracking, disable silent rules &
-    disable dependency tracking, disable silent rules, docdir, htmldir &
-    disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot &
-    disable dependency tracking, disable silent rules, disable static,
-    datarootdir, docdir, htmldir, with sysroot \\
-
-\t{dodoc -r} & \compactfeatureref{dodoc} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{doheader} & \compactfeatureref{doheader} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
-\t{doins} handles symlinks & \compactfeatureref{doins} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
+    No & No & Yes \\
 
-\t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-with-sysroot} & \compactfeatureref{econf-options} &
+    No & Yes & Yes \\
 
-\t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
+    No & No & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & No & No & Yes \\
-
-\t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & Yes & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 \t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & Yes & Yes & No \\
-
-Controllable compression & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{docompress} & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & Yes & No \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & No & No & Yes \\
-
-\t{use_with} empty third arg & \compactfeatureref{use-with} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{usex} & \compactfeatureref{usex} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{in_iuse} & \compactfeatureref{in-iuse} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & No & No & Yes & Yes \\
-
-\t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & Yes & Yes & Yes \\
-
-\t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
-
-\t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & Yes & Yes & Yes \\
-
-\t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & Yes & Yes & Yes \\
-
-\t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & No & Yes & Yes & Yes \\
-
-File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & Yes & No \\
 
 \end{longtable}
-\end{landscape}
 
 \chapter{Differences Between EAPIs}
 

diff --git a/pms.cls b/pms.cls
index b29a9c3..d4b416f 100644
--- a/pms.cls
+++ b/pms.cls
@@ -82,7 +82,7 @@
         \framebox{\textsc{#1}}}
 }{%
     \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
-    \newcommand{\compactfeatureref}[1]{#1~p\pageref{feat:#1}}
+    \newcommand{\compactfeatureref}[1]{p.\,\pageref{feat:#1}}
     \newcommand{\featurelabel}[1]{\leavevmode\label{feat:#1}%
         \marginnote{\framebox{\textsc{#1}}}\ignorespaces}
 }


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2023-01-09 18:18 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2023-02-26 17:42 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-26 17:42 UTC (permalink / raw
  To: gentoo-commits

commit:     7e3dc6f383121e6215a04d20c3317e1592a869a0
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Jan  9 18:15:05 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Jan  9 18:15:05 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=7e3dc6f3

pms.tex: Update copyright years

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/pms.tex b/pms.tex
index 1f9ecdb..f435f51 100644
--- a/pms.tex
+++ b/pms.tex
@@ -31,7 +31,7 @@
 \vspace*{\fill}
 {%
     \small
-    \textcopyright{} 2007--2022 Stephen Bennett, Ciaran McCreesh and others. Contributions are owned
+    \textcopyright{} 2007--2023 Stephen Bennett, Ciaran McCreesh and others. Contributions are owned
     by their respective authors, and may have been changed substantially before inclusion.
 
     This work is released under the Creative Commons Attribution-ShareAlike 4.0 International


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-02-27 11:05 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-02-27 11:05 UTC (permalink / raw
  To: gentoo-commits

commit:     a46337e16ed635686a063372924b2d441c7a5bdb
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:57:30 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Feb 27 11:05:23 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=a46337e1

EAPI 9: econf matches configure --help output better

Bug: https://bugs.gentoo.org/815169
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 37e59cf..45ba41b 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -141,6 +141,9 @@ Output commands use stdout & \compactfeatureref{output-no-stdout} &
 \t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
     No & No & Yes & Yes \\
 
+\t{econf} better matching of options & \compactfeatureref{econf-options} &
+    No & No & No & Yes \\
+
 \t{domo} destination path & \compactfeatureref{domo-path} &
     \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
@@ -360,6 +363,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item \t{econf} matches \t{configure -{}-help} output better, \featureref{econf-options}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 2716faa..e6e0437 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -347,6 +347,10 @@ commands once the current phase function has returned.
         is immediately followed by any of the characters \t{[A-Za-z0-9+_.-]}.
     \end{itemize}
 
+    For EAPIs listed in table~\ref{tab:econf-match-end} as matching the end of the option string,
+    a string in \t{configure -{}-help} output matches only if it is not immediately followed by any
+    of the characters \t{[A-Za-z0-9+_.-]}.
+
     \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
@@ -376,6 +380,20 @@ commands once the current phase function has returned.
         \end{tabular}
     \end{centertable}
 
+    \ChangeWhenAddingAnEAPI{9}
+    \begin{centertable}{EAPIs matching end of option string in \t{configure -{}-help} output}
+        \label{tab:econf-match-end}
+        \begin{tabular}{ll}
+          \toprule
+          \multicolumn{1}{c}{\textbf{EAPI}} &
+          \multicolumn{1}{c}{\textbf{Matches end of option string?}} \\
+          \midrule
+          0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+          9                         & Yes \\
+          \bottomrule
+        \end{tabular}
+    \end{centertable}
+
     Note that the \t{\$\{EPREFIX\}} component represents the same offset-prefix as described in
     table~\ref{tab:defined-vars}. It facilitates offset-prefix installations which is supported by
     EAPIs listed in table~\ref{tab:offset-env-vars-table}. When no offset-prefix installation is in


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

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

commit:     b2386578c6e7c996a4d24f7808c3893502b15dba
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  3 16:32:47 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 07:17:10 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=b2386578

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 commands.tex          |   4 +-
 dependencies.tex      |  26 +++++------
 eapi-differences.tex  | 116 +++++++++++++++++++++++++++-----------------------
 eapis.tex             |   4 +-
 ebuild-env-vars.tex   |  26 +++++------
 ebuild-format.tex     |   4 +-
 ebuild-functions.tex  |  46 ++++++++++----------
 ebuild-vars.tex       |  22 +++++-----
 eclasses.tex          |   4 +-
 merge.tex             |   6 +--
 pkg-mgr-commands.tex  | 100 +++++++++++++++++++++----------------------
 pms.tex               |   4 +-
 profile-variables.tex |   8 ++--
 profiles.tex          |  12 +++---
 tree-layout.tex       |   8 ++--
 15 files changed, 199 insertions(+), 191 deletions(-)

diff --git a/commands.tex b/commands.tex
index d0ad87d..c6f4f36 100644
--- a/commands.tex
+++ b/commands.tex
@@ -33,7 +33,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
     \begin{tabular}{lll}
@@ -44,7 +44,7 @@ The following commands must always be available in the ebuild environment:
       \midrule
       0, 1, 2, 3, 4     & Undefined & Any \\
       5, 6              & Yes       & Any \\
-      7, 8              & Yes       & 2.7 \\
+      7, 8, 9           & Yes       & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index 6c09714..6b58f54 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,7 @@ with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in \
 \t{pkg_postinst}. Ebuilds may also call them in \t{pkg_prerm} and \t{pkg_postrm} but must not rely
 on them being available.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting additional dependency types}
     \label{tab:depend-table}
     \begin{tabular}{lll}
@@ -99,7 +99,7 @@ on them being available.
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  \\
       7                   & Yes & No  \\
-      8                   & Yes & Yes \\
+      8, 9                & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -155,7 +155,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
     \label{tab:at-most-one-of-table}
     \begin{tabular}{ll}
@@ -164,7 +164,7 @@ In particular, note that whitespace is not optional.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -204,7 +204,7 @@ In an exactly-one-of group, exactly one immediate child element must be matched.
 In EAPIs specified in table~\ref{tab:empty-dep-groups}, an empty exactly-one-of group counts as
 being matched.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
     \label{tab:empty-dep-groups}
     \begin{tabular}{ll}
@@ -214,7 +214,7 @@ being matched.
         are matched?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes \\
-      7, 8                & No  \\
+      7, 8, 9             & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -250,7 +250,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
     \label{tab:slot-deps-table}
     \begin{tabular}{lll}
@@ -261,12 +261,12 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0                 & No                 & No  \\
       1, 2, 3, 4        & Named only         & No  \\
-      5, 6, 7, 8        & Named and operator & Yes \\
+      5, 6, 7, 8, 9     & Named and operator & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
     \label{tab:use-deps-table}
     \begin{tabular}{ll}
@@ -276,7 +276,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0, 1              & No      \\
       2, 3              & 2-style \\
-      4, 5, 6, 7, 8     & 4-style \\
+      4, 5, 6, 7, 8, 9  & 4-style \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -310,7 +310,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Exclamation mark strengths for EAPIs}
     \label{tab:bang-strength-table}
     \begin{tabular}{lll}
@@ -319,8 +319,8 @@ described in table~\ref{tab:bang-strength-table}.
       \multicolumn{1}{c}{\textbf{\t{!}}} &
       \multicolumn{1}{c}{\textbf{\t{!!}}} \\
       \midrule
-      0, 1                & Unspecified & Forbidden \\
-      2, 3, 4, 5, 6, 7, 8 & Weak        & Strong    \\
+      0, 1                   & Unspecified & Forbidden \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Weak        & Strong    \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index b20693a..2df5361 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -4,21 +4,21 @@
 For lack of space, EAPIs 0 to~5 have been omitted from the table below, as well as items that would
 have identical entries for all listed EAPIs.}
 
-\ChangeWhenAddingAnEAPI{8}
-\begin{longtable}{@{}lllll@{}}
+\ChangeWhenAddingAnEAPI{9}
+\begin{longtable}{@{}llllll@{}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Ref.}} &
-\multicolumn{3}{c}{\textbf{EAPIs}} \\
-& & 6 & 7 & 8 \\
+\multicolumn{4}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 & 9 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Ref.}} &
-\multicolumn{3}{c}{\textbf{EAPIs}} \\
-& & 6 & 7 & 8 \\
+\multicolumn{4}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 & 9 \\
 \midrule
 \endhead
 \midrule
@@ -27,146 +27,146 @@ have identical entries for all listed EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & No & No \\
+    Optional & No & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-    4.2 & 4.2 & 5.0 \\
+    4.2 & 4.2 & 5.0 & 5.0 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 Working dir in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Empty \\
+    Any & Any & Empty & Empty \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    6 & 6 & 8 \\
+    6 & 6 & 8 & 8 \\
 
 Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & 2.7 & 2.7 \\
+    Any & 2.7 & 2.7 & 2.7 \\
 
 \t{nonfatal} function and external & \compactfeatureref{nonfatal} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
+    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{econf -{}-with-sysroot} & \compactfeatureref{econf-options} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \end{longtable}
 
@@ -347,7 +347,15 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, \featureref{unpack-extensions}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\section*{EAPI 9}
+
+EAPI 9 is EAPI 8 with the following changes:
+
+\begin{compactitem}
+\item None
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{9}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 

diff --git a/eapis.tex b/eapis.tex
index a6c8109..fd0420c 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -17,8 +17,8 @@ EAPIs are also used for profile directories, as described in section~\ref{sec:pr
 
 \section{Defined EAPIs}
 
-\ChangeWhenAddingAnEAPI{8}
-This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', and~`8'.
+\ChangeWhenAddingAnEAPI{9}
+This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', `8', and~`9'.
 EAPI~`0' is the `original' base EAPI\@. Each of the later EAPIs contains a number of extensions
 to its predecessor.
 

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index b8deb04..6d51bd0 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -266,7 +266,7 @@ inconsistent variable.
 \end{longtable}
 \end{landscape}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
     \begin{tabular}{lllllll}
@@ -282,12 +282,12 @@ inconsistent variable.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4                 & Yes & Yes & Yes & No  & No  & No  \\
       5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
     \begin{tabular}{lllllll}
@@ -302,12 +302,12 @@ inconsistent variable.
       \midrule
       0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
       4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
-      7, 8              & No  & No  & No  & No  & No  & No  \\
+      7, 8, 9           & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
     \begin{tabular}{lllll}
@@ -320,7 +320,7 @@ inconsistent variable.
       \midrule
       0, 1, 2           & No  & No  & No  & No  \\
       3, 4, 5, 6        & Yes & Yes & Yes & No  \\
-      7, 8              & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -344,7 +344,7 @@ must be unset, for EAPIs listed in table~\ref{tab:profile-env-unset} as supporti
 ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in
 table~\ref{tab:locale-settings}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Locale settings for EAPIs}
     \label{tab:locale-settings}
     \begin{tabular}{ll}
@@ -353,7 +353,7 @@ table~\ref{tab:locale-settings}.
       \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & Undefined \\
-      6, 7, 8           & Yes       \\
+      6, 7, 8, 9        & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -439,7 +439,7 @@ contain at most one value.
 \subsection{Offset-prefix variables}
 \label{sec:offset-vars}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix}
     \label{tab:offset-support-table}
     \begin{tabular}{ll}
@@ -447,8 +447,8 @@ contain at most one value.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports offset-prefix?}}\\
       \midrule
-      0, 1, 2           & No  \\
-      3, 4, 5, 6, 7, 8  & Yes \\
+      0, 1, 2             & No  \\
+      3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -479,7 +479,7 @@ specifies the system root directory, it will consist of a single slash (\t{/}).
 a trailing slash, the package manager guarantees that a trailing slash will never be present.
 If the path specifies the system root directory, it will be empty.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
     \begin{tabular}{lll}
@@ -491,7 +491,7 @@ If the path specifies the system root directory, it will be empty.
       \t{D}, \t{ED} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & always & always \\
-      7, 8                & never  & never  \\
+      7, 8, 9             & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index cf06668..c366295 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -21,7 +21,7 @@ certain variables and functions (see chapters~\ref{ch:ebuild-vars} and~\ref{ch:e
 for specific information), and must not call any external programs, write anything to standard
 output or standard error, or modify the state of the system in any way.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Bash version and options}
     \label{tab:bash-version}
     \begin{tabular}{lll}
@@ -32,7 +32,7 @@ output or standard error, or modify the state of the system in any way.
       \midrule
       0, 1, 2, 3, 4, 5  & 3.2 & No  \\
       6, 7              & 4.2 & Yes \\
-      8                 & 5.0 & Yes \\
+      8, 9              & 5.0 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 25164d4..b3e2a61 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -46,7 +46,7 @@ fallback to \t{WORKDIR} is used:
     executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Initial working directory in \t{pkg_*} phase functions for EAPIs}
     \label{tab:function-dirs}
     \begin{tabular}{ll}
@@ -55,12 +55,12 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Initial working directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
-      8                       & Empty \\
+      8, 9                    & Empty \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
     \label{tab:s-fallback-table}
     \begin{tabular}{ll}
@@ -69,7 +69,7 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Fallback to \t{WORKDIR} permitted?}} \\
       \midrule
       0, 1, 2, 3        & Always            \\
-      4, 5, 6, 7, 8     & Conditional error \\
+      4, 5, 6, 7, 8, 9  & Conditional error \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -91,7 +91,7 @@ before the next phase is executed.
 
 \t{pkg_pretend} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_pretend}}
     \label{tab:pkg-pretend-table}
     \begin{tabular}{ll}
@@ -100,7 +100,7 @@ before the next phase is executed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_pretend}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -149,7 +149,7 @@ listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, respectively
 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_prepare} support and behaviour for EAPIs}
     \label{tab:src-prepare-table}
     \begin{tabular}{lll}
@@ -161,7 +161,7 @@ the \t{src_prepare} function is a no-op.
       0, 1              & No  & Not applicable \\
       2, 3, 4, 5        & Yes & no-op          \\
       6, 7              & Yes & 6              \\
-      8                 & Yes & 8              \\
+      8, 9              & Yes & 8              \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -206,7 +206,7 @@ The \t{src_configure} function configures the package's build environment. The d
 implementation used when the ebuild lacks the \t{src_configure} function shall behave as in
 listing~\ref{lst:src-configure-2}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{src_configure}}
     \label{tab:src-configure-table}
     \begin{tabular}{ll}
@@ -214,8 +214,8 @@ listing~\ref{lst:src-configure-2}.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{src_configure}?}} \\
       \midrule
-      0, 1                & No  \\
-      2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0, 1                   & No  \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -244,7 +244,7 @@ implementation used when the ebuild lacks the \t{src_prepare} function shall beh
 listing~\ref{lst:src-compile-0}, listing~\ref{lst:src-compile-1} or listing~\ref{lst:src-compile-2},
 respectively.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_compile} behaviour for EAPIs}
     \label{tab:src-compile-table}
     \begin{tabular}{ll}
@@ -252,9 +252,9 @@ respectively.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Format}} \\
       \midrule
-      0                   & 0 \\
-      1                   & 1 \\
-      2, 3, 4, 5, 6, 7, 8 & 2 \\
+      0                      & 0 \\
+      1                      & 1 \\
+      2, 3, 4, 5, 6, 7, 8, 9 & 2 \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -317,7 +317,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_test} behaviour for EAPIs}
     \label{tab:src-test-table}
     \begin{tabular}{ll}
@@ -326,7 +326,7 @@ be disabled by user too, using a PM-specific mechanism.
       \multicolumn{1}{c}{\textbf{Supports parallel tests?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -346,7 +346,7 @@ listing~\ref{lst:src-install-4} or listing~\ref{lst:src-install-6}, respectively
 For other EAPIs, the default implementation used when the ebuild lacks the \t{src_install} function
 is a no-op.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_install} behaviour for EAPIs}
     \label{tab:src-install-table}
     \begin{tabular}{ll}
@@ -356,7 +356,7 @@ is a no-op.
       \midrule
       0, 1, 2, 3        & no-op \\
       4, 5              & 4     \\
-      6, 7, 8           & 6     \\
+      6, 7, 8, 9        & 6     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -450,7 +450,7 @@ that dependencies may not be installed.
 
 \t{pkg_info} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_info} on non-installed packages}
     \label{tab:pkg-info-table}
     \begin{tabular}{ll}
@@ -459,7 +459,7 @@ that dependencies may not be installed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_info} on non-installed packages?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -481,7 +481,7 @@ named \t{default_<phase-function>}) that behaves as the default implementation f
 be defined when executing any ebuild phase function listed in the table. Ebuilds must not call
 these functions except when in the phase in question.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{default_} phase functions}
     \label{tab:default-phase-function-table}
     \begin{tabular}{l P{26em}}
@@ -492,7 +492,7 @@ these functions except when in the phase in question.
       0, 1              & None \\
       2, 3              & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test} \\
-      4, 5, 6, 7, 8     & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
+      4, 5, 6, 7, 8, 9  & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test}, \t{src_install} \\
       \bottomrule
     \end{tabular}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 5f3f583..c4413f5 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -90,7 +90,7 @@ defined by an eclass.
 \item[IDEPEND] See chapter~\ref{ch:dependencies}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{IUSE} defaults}
     \label{tab:iuse-defaults-table}
     \begin{tabular}{ll}
@@ -98,13 +98,13 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{IUSE} defaults?}} \\
       \midrule
-      0                      & No  \\
-      1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0                         & No  \\
+      1, 2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
     \begin{tabular}{lll}
@@ -114,7 +114,7 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6, 7, 8     & Yes        & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -179,7 +179,7 @@ selective URI restrictions, the URI protocol can be prefixed by an additional \t
 restriction for the URI (but not the implied mirror restriction). If the ebuild is fetch or mirror
 restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for the URI.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows and selective URI restrictions}
     \label{tab:uri-arrows-table}
     \begin{tabular}{lll}
@@ -190,7 +190,7 @@ restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for
       \midrule
       0, 1              & No  & No  \\
       2, 3, 4, 5, 6, 7  & Yes & No  \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -275,7 +275,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} default}
     \label{tab:rdepend-depend-table}
     \begin{tabular}{ll}
@@ -284,7 +284,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
       \multicolumn{1}{c}{\textbf{\t{RDEPEND=DEPEND}?}} \\
       \midrule
       0, 1, 2, 3        & Yes \\
-      4, 5, 6, 7, 8     & No  \\
+      4, 5, 6, 7, 8, 9  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -319,7 +319,7 @@ not be exported to the ebuild environment:
 \note{Thus, by extension of section~\ref{sec:metadata-invariance}, phase functions must not be
 defined based upon any variant condition.}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{DEFINED_PHASES}}
     \label{tab:defined-phases-table}
     \begin{tabular}{ll}
@@ -328,7 +328,7 @@ defined based upon any variant condition.}
       \multicolumn{1}{c}{\textbf{Supports \t{DEFINED_PHASES}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally \\
-      4, 5, 6, 7, 8     & Yes        \\
+      4, 5, 6, 7, 8, 9  & Yes        \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eclasses.tex b/eclasses.tex
index a4400e1..3e7419c 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -43,7 +43,7 @@ the previous one is loaded. For EAPIs listed in table~\ref{tab:accumulate-vars}
 value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is done after
 the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across eclasses}
     \label{tab:accumulate-vars}
     \begin{tabular}{lll}
@@ -53,7 +53,7 @@ the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
       \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
-      8                       & Yes & Yes \\
+      8, 9                    & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/merge.tex b/merge.tex
index ca1036d..db9c74f 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Preservation of file modification times (mtimes)}
     \label{tab:mtime-preserve}
     \begin{tabular}{ll}
@@ -94,8 +94,8 @@ is undefined.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\
       \midrule
-      0, 1, 2           & Undefined \\
-      3, 4, 5, 6, 7, 8  & Yes       \\
+      0, 1, 2             & Undefined \\
+      3, 4, 5, 6, 7, 8, 9 & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4fac077..19bd4ff 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -32,7 +32,7 @@ The following commands affect this behaviour:
     option and in EAPIs supporting this option, see table~\ref{tab:die-properties}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
     \begin{tabular}{llll}
@@ -44,7 +44,7 @@ The following commands affect this behaviour:
       \midrule
       0, 1, 2, 3        & Non-zero exit & No  & n/a \\
       4, 5, 6           & Aborts        & Yes & No  \\
-      7, 8              & Aborts        & Yes & Yes \\
+      7, 8, 9           & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -55,7 +55,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{8}
+\ChangeWhenAddingAnEAPI{9}  % two places
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
     \begin{tabular}{lllllll}
@@ -73,7 +73,7 @@ called, the package manager must abort the build process indicating an error.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4, 5              & Yes & Yes & No  & No  & No  & No  \\
       6                 & Yes & Yes & Yes & No  & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \midrule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{6}{c}{\textbf{Command banned?}} \\
@@ -83,7 +83,7 @@ called, the package manager must abort the build process indicating an error.
       \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-      8                       & Yes & Yes & Yes & & & \\
+      8, 9                    & Yes & Yes & Yes & & & \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -121,7 +121,7 @@ are given, \t{-r} is assumed.
     otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Package manager query command options supported by EAPIs}
     \label{tab:pm-query-options}
     \begin{tabular}{lllll}
@@ -134,7 +134,7 @@ are given, \t{-r} is assumed.
       \midrule
       0, 1, 2, 3, 4     & No  & No  & No  & No  \\
       5, 6              & Yes & No  & No  & No  \\
-      7, 8              & No  & Yes & Yes & Yes \\
+      7, 8, 9           & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -171,7 +171,7 @@ output, using stdout as an output facility is forbidden.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
     \begin{tabular}{lll}
@@ -181,7 +181,7 @@ output, using stdout as an output facility is forbidden.
       \multicolumn{1}{c}{\textbf{Supports \t{eqawarn}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes & No  \\
-      7, 8                & No  & Yes \\
+      7, 8, 9             & No  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -203,7 +203,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
     \label{tab:die-properties}
     \begin{tabular}{lll}
@@ -216,7 +216,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
       6                 & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -280,7 +280,7 @@ Ebuilds must not run any of these commands once the current phase function has r
     subsequent calls, the command will do nothing and return~0.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Patch commands for EAPIs}
     \label{tab:patch-commands}
     \begin{tabular}{lll}
@@ -290,7 +290,7 @@ Ebuilds must not run any of these commands once the current phase function has r
       \multicolumn{1}{c}{\textbf{\t{eapply_user}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -350,7 +350,7 @@ commands once the current phase function has returned.
     \t{configure -{}-help} output matches only if it is not immediately followed by any of the
     characters \t{[A-Za-z0-9+_.-]}.
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
         \begin{tabular}{lllll}
@@ -364,7 +364,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
           6                 & No  & Yes & Yes & No  \\
           7                 & No  & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & Yes \\
+          8, 9              & Yes & Yes & Yes & Yes \\
           \midrule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
@@ -374,7 +374,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3        & No  & No  & No  & \\
           4                 & Yes & No  & No  & \\
           5, 6, 7           & Yes & Yes & No  & \\
-          8                 & Yes & Yes & Yes & \\
+          8, 9              & Yes & Yes & Yes & \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -675,7 +675,7 @@ dosym_relative_path() {
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dodoc -r}}
     \label{tab:dodoc-table}
     \begin{tabular}{ll}
@@ -684,12 +684,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{dodoc -r}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}}
     \label{tab:doheader-table}
     \begin{tabular}{ll}
@@ -698,12 +698,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{doheader} and \t{newheader}?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting symlinks for \t{doins}}
     \label{tab:doins-table}
     \begin{tabular}{ll}
@@ -712,12 +712,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{doins} supports symlinks?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{doman} language support options for EAPIs}
     \label{tab:doman-table}
     \begin{tabular}{lll}
@@ -728,12 +728,12 @@ dosym_relative_path() {
       \midrule
       0, 1              & No  & Not applicable \\
       2, 3              & Yes & No             \\
-      4, 5, 6, 7, 8     & Yes & Yes            \\
+      4, 5, 6, 7, 8, 9  & Yes & Yes            \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting stdin for \t{new*} commands}
     \label{tab:newfoo-stdin-table}
     \begin{tabular}{ll}
@@ -742,12 +742,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{new*} can read from stdin?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{domo} destination path in EAPIs}
     \label{tab:domo-path}
     \begin{tabular}{ll}
@@ -756,12 +756,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Destination path}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
-      7, 8                & \t{/usr/share/locale} \\
+      7, 8, 9             & \t{/usr/share/locale} \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dosym -r}}
     \label{tab:dosym-r}
     \begin{tabular}{ll}
@@ -770,7 +770,7 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative paths?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  \\
-      8                       & Yes \\
+      8, 9                    & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -812,7 +812,7 @@ function has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{insopts} for EAPIs}
     \label{tab:insopts-commands}
     \begin{tabular}{lllll}
@@ -824,12 +824,12 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doheader}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes & Yes & Yes \\
-      8                       & Yes & No  & No  & No  \\
+      8, 9                    & Yes & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{exeopts} for EAPIs}
     \label{tab:exeopts-commands}
     \begin{tabular}{lll}
@@ -839,7 +839,7 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doinitd}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes \\
-      8                       & Yes & No  \\
+      8, 9                    & Yes & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -916,7 +916,7 @@ any of these functions from any other phase.
     supporting \t{dostrip}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands controlling manipulation of files in the staging area in EAPIs}
     \label{tab:staging-area-commands}
     \begin{tabular}{lll}
@@ -927,7 +927,7 @@ any of these functions from any other phase.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6           & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -974,7 +974,7 @@ table~\ref{tab:use-list-strictness}.
     table~\ref{tab:use-list-functions} as supporting \t{in_iuse}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI behaviour for use queries not in \t{IUSE_EFFECTIVE}}
     \label{tab:use-list-strictness}
     \begin{tabular}{ll}
@@ -983,12 +983,12 @@ table~\ref{tab:use-list-strictness}.
       \multicolumn{1}{c}{\textbf{Behaviour}} \\
       \midrule
       0, 1, 2, 3        & Undefined \\
-      4, 5, 6, 7, 8     & Error     \\
+      4, 5, 6, 7, 8, 9  & Error     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for EAPIs}
     \label{tab:use-list-args}
     \begin{tabular}{lll}
@@ -1000,12 +1000,12 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6, 7        & No  & Yes \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{usex} and \t{in_iuse}}
     \label{tab:use-list-functions}
     \begin{tabular}{lll}
@@ -1016,7 +1016,7 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3, 4     & No  & No  \\
       5                 & Yes & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1101,7 +1101,7 @@ the second, inclusively.
     section~\ref{sec:version-spec}. Comparison is done using algorithm~\ref{alg:version-comparison}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
     \label{tab:version-commands}
     \begin{tabular}{llll}
@@ -1112,7 +1112,7 @@ the second, inclusively.
       \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-      7, 8                & Yes & Yes & Yes \\
+      7, 8, 9             & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1189,7 +1189,7 @@ has returned.
     \featurelabel{unpack-ignore-case} \t{unpack} matches filename extensions in a case-insensitive
     manner, for EAPIs listed such in table~\ref{tab:unpack-behaviour}.
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} behaviour for EAPIs}
         \label{tab:unpack-behaviour}
         \begin{tabular}{lll}
@@ -1199,12 +1199,12 @@ has returned.
           \multicolumn{1}{c}{\textbf{Case-insensitive matching?}} \\
           \midrule
           0, 1, 2, 3, 4, 5  & No  & No  \\
-          6, 7, 8           & Yes & Yes \\
+          6, 7, 8, 9        & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} extensions for EAPIs}
         \label{tab:unpack-extensions-table}
         \begin{tabular}{llllllll}
@@ -1220,7 +1220,7 @@ has returned.
           0, 1, 2           & No  & No  & No  & Yes & Yes & Yes \\
           3, 4, 5           & Yes & Yes & No  & Yes & Yes & Yes \\
           6, 7              & Yes & Yes & Yes & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & No  & No  & No  \\
+          8, 9              & Yes & Yes & Yes & No  & No  & No  \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -1288,7 +1288,7 @@ has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
     \label{tab:misc-commands}
     \begin{tabular}{llll}
@@ -1300,7 +1300,7 @@ has returned.
       \midrule
       0, 1              & No  & No  & No  \\
       2, 3, 4, 5        & Yes & No  & No  \\
-      6, 7, 8           & Yes & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pms.tex b/pms.tex
index f435f51..4a7bb0b 100644
--- a/pms.tex
+++ b/pms.tex
@@ -21,8 +21,8 @@
     pdfkeywords={Gentoo, package manager, specification},
 }
 
-\CurrentEAPIIs{8}
-\ChangeWhenAddingAnEAPI{8}
+\CurrentEAPIIs{9}
+\ChangeWhenAddingAnEAPI{9}
 
 \begin{document}
 \maketitle

diff --git a/profile-variables.tex b/profile-variables.tex
index ba40bf4..0f2dc3c 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -40,7 +40,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs}
     \label{tab:profile-iuse-injection-table}
     \begin{tabular}{ll}
@@ -49,12 +49,12 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined unsetting of variables in EAPIs}
     \label{tab:profile-env-unset}
     \begin{tabular}{ll}
@@ -63,7 +63,7 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports \t{ENV_UNSET}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/profiles.tex b/profiles.tex
index 30da81b..8d8226a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -78,7 +78,7 @@ in that directory, unless their name begins with a dot, will be concatenated in
 filename in the POSIX locale and the result will be processed as if it were a single file.
 Any subdirectories will be ignored.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting directories for profile files}
     \label{tab:profile-file-dirs}
     \begin{tabular}{ll}
@@ -87,7 +87,7 @@ Any subdirectories will be ignored.
       \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -123,7 +123,7 @@ it is actually installed. Because it has severe adverse effects on USE-based and
 dependencies, its use is strongly deprecated and package manager support must be regarded as purely
 optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{package.provided} in profiles}
     \label{tab:package-provided}
     \begin{tabular}{ll}
@@ -132,7 +132,7 @@ optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
       \multicolumn{1}{c}{\textbf{Supports \t{package.provided}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Optionally \\
-      7, 8                & No         \\
+      7, 8, 9             & No         \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -165,7 +165,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile directory support for masking/forcing use flags in stable versions only}
     \label{tab:profile-stablemask}
     \begin{tabular}{ll}
@@ -174,7 +174,7 @@ stable in a package.
       \multicolumn{1}{c}{\textbf{Supports masking/forcing use flags in stable versions?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/tree-layout.tex b/tree-layout.tex
index da01ff8..cac84bb 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -127,7 +127,7 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
     \label{tab:package-mask-dir}
     \begin{tabular}{ll}
@@ -136,7 +136,7 @@ manager must ignore any files in this directory that it does not recognise.
       \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -233,7 +233,7 @@ Any name that has appeared as the origin of a move must not be reused in the fut
 that has appeared as the origin of a slot move may not be used by packages matching the spec of
 that slot move in the future.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Naming rules for files in \t{updates} directory for EAPIs}
     \label{tab:updates-filenames}
     \begin{tabular}{ll}
@@ -242,7 +242,7 @@ that slot move in the future.
       \multicolumn{1}{c}{\textbf{Files per quarter year?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes \\
-      8                       & No  \\
+      8, 9                    & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


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

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

commit:     e4053b8d27cda1749301cb2a13a4269b301681d2
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Apr  9 19:46:15 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 06:31:51 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e4053b8d

Appendix: Document retroactive econf change

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 appendices.tex | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/appendices.tex b/appendices.tex
index db1dc64..7a2c70b 100644
--- a/appendices.tex
+++ b/appendices.tex
@@ -124,6 +124,12 @@ The test mentioned above was effective in EAPI~8. It was updated in November 202
 \t{-{}-enable-static} and \t{-{}-enable-shared}, and in addition checks for a proper end of these
 option strings.
 
+\subsection{econf matches configure -{}-help output better}
+The simple string matching used for \t{configure -{}-help} output caused false positives for options
+like \t{-{}-with-sysroot}. It was effective in EAPIs 4, 5, 6, 7 and 8, and was updated in April 2023
+to check for a proper end of string for all option names beginning with \t{with-}, \t{disable-} or
+\t{enable-}.
+
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
 %%% Local Variables:


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

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

commit:     fda72fbb4cec7d11939d64505cb30d0672a6e38f
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:32:43 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 07:17:11 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=fda72fbb

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 79b3931..37e59cf 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -35,6 +35,9 @@ Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
 Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
     No & No & No & Yes \\
 
+Default EAPI for profiles & \compactfeatureref{profile-eapi-default} &
+    0 & 0 & 0 & Top-level \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & Yes & Yes & Yes \\
 
@@ -356,6 +359,7 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Comments in profiles \t{parent} file, \featureref{parent-comments}.
+\item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 6fa8a1c..de59f0a 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -50,8 +50,27 @@ this file must not contain comments or blank lines.
 A profile directory may contain an \t{eapi} file. This file, if it exists, must contain a single
 line with the name of an EAPI\@. This specifies the EAPI to use when handling the directory in
 question; a package manager must not attempt to use any profile using a directory which requires an
-EAPI it does not support. If no \t{eapi} file is present, EAPI 0 shall be used. The EAPI is neither
-inherited via the \t{parent} file nor in subdirectories.
+EAPI it does not support.
+
+\featurelabel{profile-eapi-default} If no \t{eapi} file is present, the default depends on the EAPI
+of the top-level profiles directory (see section~\ref{sec:profiles-dir}). That EAPI shall be used
+if table~\ref{tab:profile-eapi-default} lists it as ``top-level''. Otherwise, EAPI 0 shall be used.
+
+The EAPI is neither inherited via the \t{parent} file nor in subdirectories.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Default EAPI for profiles}
+    \label{tab:profile-eapi-default}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Default EAPI?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & 0         \\
+      9                         & Top-level \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{deprecated}
 If a profile contains a file named \t{deprecated}, it is treated as such. The first line of this


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

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

commit:     d7ad6126cfc378797557e94e48386929694f133e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 19 21:22:40 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 07:17:09 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=d7ad6126

EAPI feature table: Don't use a landscape table

Drop EAPIs 0 to 5 from the table, as well as items that would have
identical entries for all listed EAPIs.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex | 321 ++++++++++-----------------------------------------
 pms.cls              |   2 +-
 2 files changed, 61 insertions(+), 262 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 225c2b6..b20693a 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,39 +1,24 @@
 \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, 2, 3, and~4 have been consolidated into a single column in the table
-below; entries marked with an asterisk differ between these EAPIs. See the 2012-09-20 edition
-of this document for a complete table of previous EAPIs.}
-% 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
+For lack of space, EAPIs 0 to~5 have been omitted from the table below, as well as items that would
+have identical entries for all listed EAPIs.}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{@{}lllll@{}}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{3}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{3}{c}{\textbf{EAPIs}} \\
+& & 6 & 7 & 8 \\
 \midrule
 \endhead
 \midrule
@@ -42,334 +27,148 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & No & No & Yes \\
+    No & No & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & Optional & Optional & No & No \\
-
-Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & Yes & Yes & Yes & Yes \\
+    Optional & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\
-
-\t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & Yes & Yes & Yes \\
-
-\t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{REQUIRED_USE} & \compactfeatureref{required-use} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{PROPERTIES} & \compactfeatureref{properties} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes \\
+    4.2 & 4.2 & 5.0 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & No & No & Yes \\
-
-\t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    * & No & No & No & No \\
-
-\t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-    * & Yes & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & No & No & Yes \\
-
-\t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & Yes & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & Yes & Yes & No & No \\
-
-Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named and Operator & Named and Operator & Named and Operator & Named and Operator \\
-
-Sub-slots & \compactfeatureref{sub-slot} &
-    No & Yes & Yes & Yes & Yes \\
-
-Use dependencies & \compactfeatureref{use-deps} &
-    * & 4-style & 4-style & 4-style & 4-style \\
-
-\t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak \\
-
-\t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong \\
+    Yes & No & No \\
 
 Working dir in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Any & Any & Empty \\
-
-\t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    * & Conditional & Conditional & Conditional & Conditional \\
-
-\t{pkg_pretend} & \compactfeatureref{pkg-pretend} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{src_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes \\
+    Any & Any & Empty \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & 6 & 6 & 8 \\
-
-\t{src_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{src_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 \\
-
-Parallel tests & \compactfeatureref{parallel-tests} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{src_install} style & \compactfeatureref{src-install} &
-    * & 4 & 6 & 6 & 6 \\
-
-\t{pkg_info} & \compactfeatureref{pkg-info} &
-    * & Both & Both & Both & Both \\
-
-\t{default_} phase functions & \compactfeatureref{default-phase-funcs} &
-    * &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} \\
+    6 & 6 & 8 \\
 
 Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes \\
+    No & No & Yes \\
 
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes \\
-
-\t{AA} & \compactfeatureref{aa} &
-    * & No & No & No & No \\
+    No & No & Yes \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & Yes & Yes & No & No \\
-
-\t{KV} & \compactfeatureref{kv} &
-    * & No & No & No & No \\
-
-\t{EBUILD_PHASE_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{MERGE_TYPE} & \compactfeatureref{merge-type} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & No & No \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & No & No & Yes & Yes \\
-
-Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Yes & Yes & Yes \\
-
-Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{REPLACING_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{REPLACED_BY_VERSION} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    * & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & Any & Any & 2.7 & 2.7 \\
-
-\t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Yes & Yes & Yes & Yes \\
-
-Most utilities die & \compactfeatureref{die-on-failure} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{nonfatal} & \compactfeatureref{nonfatal} &
-    * & Yes & Yes & Function / external & Function / external \\
-
-\t{dohard} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
+    Any & 2.7 & 2.7 \\
 
-\t{dosed} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
-
-\t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned \\
+\t{nonfatal} function and external & \compactfeatureref{nonfatal} &
+    No & Yes & Yes \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
-    \t{-b}, \t{-d}, \t{-r} \\
+    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & Yes & Yes & No & No \\
+    Yes & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & No & No & Yes & Yes \\
-
-\t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & No & No & Yes & Yes \\
-
-\t{eapply} & \compactfeatureref{eapply} &
-    No & No & Yes & Yes & Yes \\
-
-\t{eapply_user} & \compactfeatureref{eapply-user} &
-    No & No & Yes & Yes & Yes \\
-
-\t{econf} arguments & \compactfeatureref{econf-options} &
-    * &
-    disable dependency tracking, disable silent rules &
-    disable dependency tracking, disable silent rules, docdir, htmldir &
-    disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot &
-    disable dependency tracking, disable silent rules, disable static,
-    datarootdir, docdir, htmldir, with sysroot \\
-
-\t{dodoc -r} & \compactfeatureref{dodoc} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{doheader} & \compactfeatureref{doheader} &
-    No & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
-\t{doins} handles symlinks & \compactfeatureref{doins} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
+    No & No & Yes \\
 
-\t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-with-sysroot} & \compactfeatureref{econf-options} &
+    No & Yes & Yes \\
 
-\t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
+    No & No & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & No & No & Yes \\
-
-\t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & Yes & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 \t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & Yes & Yes & No \\
-
-Controllable compression & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{docompress} & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & Yes & No \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & No & No & Yes \\
-
-\t{use_with} empty third arg & \compactfeatureref{use-with} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{usex} & \compactfeatureref{usex} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{in_iuse} & \compactfeatureref{in-iuse} &
-    No & No & Yes & Yes & Yes \\
+    No & No & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & No & No & Yes & Yes \\
-
-\t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & Yes & Yes & Yes \\
-
-\t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
-
-\t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & Yes & Yes & Yes \\
-
-\t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & Yes & Yes & Yes \\
-
-\t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & No & Yes & Yes & Yes \\
-
-File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & Yes & No \\
 
 \end{longtable}
-\end{landscape}
 
 \chapter{Differences Between EAPIs}
 

diff --git a/pms.cls b/pms.cls
index b29a9c3..d4b416f 100644
--- a/pms.cls
+++ b/pms.cls
@@ -82,7 +82,7 @@
         \framebox{\textsc{#1}}}
 }{%
     \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
-    \newcommand{\compactfeatureref}[1]{#1~p\pageref{feat:#1}}
+    \newcommand{\compactfeatureref}[1]{p.\,\pageref{feat:#1}}
     \newcommand{\featurelabel}[1]{\leavevmode\label{feat:#1}%
         \marginnote{\framebox{\textsc{#1}}}\ignorespaces}
 }


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

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

commit:     6a3293622a5bc481c0cd4ca74d480632b681c563
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:30:11 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Apr 10 07:17:10 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=6a329362

EAPI 9 profile parent files can contain comments

Bug: https://bugs.gentoo.org/470094
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 ++++-
 profiles.tex         | 20 +++++++++++++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 2df5361..79b3931 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -32,6 +32,9 @@ have identical entries for all listed EAPIs.}
 Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
     No & No & Yes & Yes \\
 
+Comments in profiles \t{parent} file & \compactfeatureref{parent-comments} &
+    No & No & No & Yes \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & Yes & Yes & Yes \\
 
@@ -352,7 +355,7 @@ EAPI 8 is EAPI 7 with the following changes:
 EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Comments in profiles \t{parent} file, \featureref{parent-comments}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index 8d8226a..6fa8a1c 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -25,7 +25,25 @@ first, left to right, with duplicate parent paths being sourced for every time t
 It is illegal for a profile's parent tree to contain cycles. Package manager behaviour upon
 encountering a cycle is undefined.
 
-This file must not contain comments, blank lines or make use of line continuations.
+This file must not make use of line continuations.
+
+\featurelabel{parent-comments} For EAPIs listed in table~\ref{tab:profile-parent-comments} as
+allowing comments, blank lines and lines beginning with a \t{\#} are discarded. For other EAPIs,
+this file must not contain comments or blank lines.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs allowing comments in \t{parent} file}
+    \label{tab:profile-parent-comments}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Allows comments?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & No  \\
+      9                         & Yes \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{The eapi file}
 \label{sec:profile-eapi}


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

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

commit:     0e311ca4ac75be6ebea2a0b3c1b46f4daac75190
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Feb 26 17:46:29 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Feb 27 11:02:43 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=0e311ca4

pkg-mgr-commands.tex: econf matches configure --help output better

Following the previous change for --disable-static (commit e0aa80c),
check for proper end of string for all option names beginning with
"with", "disable" or "enable". This will mainly affect --with-sysroot,
where false positives have been observed.

Bug: https://bugs.gentoo.org/815169
Suggested-by: David Seifert <soap <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 95caa0b..4fac077 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -343,10 +343,13 @@ commands once the current phase function has returned.
         occurs in the output of \t{configure -{}-help}.
     \item \t{-{}-disable-static}, if the EAPI is listed in table~\ref{tab:econf-options-table}
         as using it. This option will only be passed if both strings \t{-{}-enable-static} and
-        \t{-{}-enable-shared} occur in the output of \t{configure -{}-help}, and if neither of them
-        is immediately followed by any of the characters \t{[A-Za-z0-9+_.-]}.
+        \t{-{}-enable-shared} occur in the output of \t{configure -{}-help}.
     \end{itemize}
 
+    For the option names beginning with \t{with-}, \t{disable-} or \t{enable-}, a string in
+    \t{configure -{}-help} output matches only if it is not immediately followed by any of the
+    characters \t{[A-Za-z0-9+_.-]}.
+
     \ChangeWhenAddingAnEAPI{8}
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-04-14 16:40 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-04-14 16:40 UTC (permalink / raw
  To: gentoo-commits

commit:     f95225246aff169f61a62fbe930daf87f220b741
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 23 17:46:53 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Apr 14 15:54:07 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f9522524

EAPI feature table: Don't use a landscape table

Drop EAPIs 0 to 4 from the table, as well as items that would have
identical entries for all listed EAPIs.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex | 314 +++++++++++++--------------------------------------
 pms.cls              |   4 +-
 2 files changed, 81 insertions(+), 237 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 225c2b6..31d5537 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,39 +1,24 @@
 \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, 2, 3, and~4 have been consolidated into a single column in the table
-below; entries marked with an asterisk differ between these EAPIs. See the 2012-09-20 edition
-of this document for a complete table of previous EAPIs.}
-% 2012-09-20 (EAPI 5) edition has a table of EAPIs 0 to 5
+For lack of space, EAPIs 0 to~4 have been omitted from the table below, as well as items that would
+have identical entries for all listed EAPIs.}
 
 \ChangeWhenAddingAnEAPI{8}
-\begin{landscape}
-\begin{longtable}{llP{7.5em}P{7.5em}P{7.5em}P{7.5em}P{7.5em}}
+\begin{longtable}{@{}llllll@{}} % @{} to avoid overfull box
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{4}{c}{\textbf{EAPIs}} \\
+& & 5 & 6 & 7 & 8 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
-\multicolumn{1}{c}{\textbf{Reference}} &
-\multicolumn{5}{c}{\textbf{EAPIs}} \\
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{} &
-\multicolumn{1}{c}{0, 1, 2, 3, 4} &
-\multicolumn{1}{c}{5} &
-\multicolumn{1}{c}{6} &
-\multicolumn{1}{c}{7} &
-\multicolumn{1}{c}{8} \\
+\multicolumn{1}{c}{\textbf{Ref.}} &
+\multicolumn{4}{c}{\textbf{EAPIs}} \\
+& & 5 & 6 & 7 & 8 \\
 \midrule
 \endhead
 \midrule
@@ -42,334 +27,193 @@ of this document for a complete table of previous EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & No & No & Yes & Yes \\
+    No & No & Yes & Yes \\
 
-Less strict filenames in \t{updates} & \compactfeatureref{updates-filenames} &
-    No & No & No & No & Yes \\
+Less strict \t{updates} syntax & \compactfeatureref{updates-filenames} &
+    No & No & No & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & No & No & Yes & Yes \\
+    No & No & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & Optional & Optional & No & No \\
-
-Stable use masking/forcing & \compactfeatureref{stablemask} &
-    No & Yes & Yes & Yes & Yes \\
+    Optional & Optional & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 3.2 & 4.2 & 4.2 & 5.0 \\
+    3.2 & 4.2 & 4.2 & 5.0 \\
 
 \t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & No & Yes & Yes & Yes \\
-
-\t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{REQUIRED_USE} & \compactfeatureref{required-use} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{PROPERTIES} & \compactfeatureref{properties} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{SRC_URI} arrows & \compactfeatureref{src-uri-arrows} &
-    * & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & No & No & Yes \\
-
-\t{RDEPEND=DEPEND} & \compactfeatureref{rdepend-depend} &
-    * & No & No & No & No \\
-
-\t{DEFINED_PHASES} & \compactfeatureref{defined-phases} &
-    * & Yes & Yes & Yes & Yes \\
+    No & No & No & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & No & No & Yes & Yes \\
+    No & No & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & No & No & Yes \\
-
-\t{??\ ( )} groups & \compactfeatureref{at-most-one-of} &
-    No & Yes & Yes & Yes & Yes \\
+    No & No & No & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & Yes & Yes & No & No \\
-
-Slot dependencies & \compactfeatureref{slot-deps} &
-    * & Named and Operator & Named and Operator & Named and Operator & Named and Operator \\
-
-Sub-slots & \compactfeatureref{sub-slot} &
-    No & Yes & Yes & Yes & Yes \\
-
-Use dependencies & \compactfeatureref{use-deps} &
-    * & 4-style & 4-style & 4-style & 4-style \\
-
-\t{!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Weak & Weak & Weak & Weak \\
-
-\t{!!}\ blockers & \compactfeatureref{bang-strength} &
-    * & Strong & Strong & Strong & Strong \\
+    Yes & Yes & No & No \\
 
 Working dir in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Any & Any & Empty \\
-
-\t{S} to \t{WORKDIR} fallback & \compactfeatureref{s-workdir-fallback} &
-    * & Conditional & Conditional & Conditional & Conditional \\
-
-\t{pkg_pretend} & \compactfeatureref{pkg-pretend} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{src_prepare} & \compactfeatureref{src-prepare} &
-    * & Yes & Yes & Yes & Yes \\
+    Any & Any & Any & Empty \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    * & no-op & 6 & 6 & 8 \\
-
-\t{src_configure} & \compactfeatureref{src-configure} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{src_compile} style & \compactfeatureref{src-compile} &
-    * & 2 & 2 & 2 & 2 \\
-
-Parallel tests & \compactfeatureref{parallel-tests} &
-    No & Yes & Yes & Yes & Yes \\
+    no-op & 6 & 6 & 8 \\
 
 \t{src_install} style & \compactfeatureref{src-install} &
-    * & 4 & 6 & 6 & 6 \\
-
-\t{pkg_info} & \compactfeatureref{pkg-info} &
-    * & Both & Both & Both & Both \\
-
-\t{default_} phase functions & \compactfeatureref{default-phase-funcs} &
-    * &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} &
-    \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
-        \t{src_compile}, \t{src_test}, \t{src_install} \\
+    4 & 6 & 6 & 6 \\
 
 Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes \\
+    No & No & No & Yes \\
 
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
-    No & No & No & No & Yes \\
-
-\t{AA} & \compactfeatureref{aa} &
-    * & No & No & No & No \\
+    No & No & No & Yes \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & No & No & Yes & Yes \\
+    No & No & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & No & No & Yes & Yes \\
+    No & No & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & Yes & Yes & No & No \\
-
-\t{KV} & \compactfeatureref{kv} &
-    * & No & No & No & No \\
-
-\t{EBUILD_PHASE_FUNC} & \compactfeatureref{ebuild-phase-func} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{MERGE_TYPE} & \compactfeatureref{merge-type} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & Yes & No & No \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & No & No & Yes & Yes \\
+    No & No & Yes & Yes \\
 
 Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Undefined & Yes & Yes & Yes \\
-
-Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} &
-    No & Yes & Yes & Yes & Yes \\
-
-\t{REPLACING_VERSIONS} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{REPLACED_BY_VERSION} & \compactfeatureref{replace-version-vars} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{EPREFIX}, \t{ED}, \t{EROOT} & \compactfeatureref{offset-prefix-vars} &
-    * & Yes & Yes & Yes & Yes \\
+    Undefined & Yes & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & Any & Any & 2.7 & 2.7 \\
-
-\t{find} is GNU? & \compactfeatureref{gnu-find} &
-    Undefined & Yes & Yes & Yes & Yes \\
-
-Most utilities die & \compactfeatureref{die-on-failure} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{nonfatal} & \compactfeatureref{nonfatal} &
-    * & Yes & Yes & Function / external & Function / external \\
+    Any & Any & 2.7 & 2.7 \\
 
-\t{dohard} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
-
-\t{dosed} & \compactfeatureref{banned-commands} &
-    * & Banned & Banned & Banned & Banned \\
+\t{nonfatal} function / external & \compactfeatureref{nonfatal} &
+    No & No & Yes & Yes \\
 
 \t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Yes & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Yes & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Yes & Banned \\
+    Yes & Yes & Yes & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    None & \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} &
-    \t{-b}, \t{-d}, \t{-r} \\
+    \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & Yes & Yes & No & No \\
+    Yes & Yes & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & No & No & Yes & Yes \\
+    No & No & Yes & Yes \\
 
 \t{die -n} & \compactfeatureref{nonfatal-die} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & No & No & Yes & Yes \\
+    No & No & Yes & Yes \\
 
 \t{eapply} & \compactfeatureref{eapply} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{eapply_user} & \compactfeatureref{eapply-user} &
-    No & No & Yes & Yes & Yes \\
-
-\t{econf} arguments & \compactfeatureref{econf-options} &
-    * &
-    disable dependency tracking, disable silent rules &
-    disable dependency tracking, disable silent rules, docdir, htmldir &
-    disable dependency tracking, disable silent rules, docdir, htmldir, with sysroot &
-    disable dependency tracking, disable silent rules, disable static,
-    datarootdir, docdir, htmldir, with sysroot \\
+    No & Yes & Yes & Yes \\
 
-\t{dodoc -r} & \compactfeatureref{dodoc} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
+    No & No & No & Yes \\
 
-\t{doheader} & \compactfeatureref{doheader} &
-    No & Yes & Yes & Yes & Yes \\
+\t{econf -{}-docdir} & \compactfeatureref{econf-options} &
+    No & Yes & Yes & Yes \\
 
-\t{doins} handles symlinks & \compactfeatureref{doins} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-htmldir} & \compactfeatureref{econf-options} &
+    No & Yes & Yes & Yes \\
 
-\t{doman} languages & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-with-sysroot} & \compactfeatureref{econf-options} &
+    No & No & Yes & Yes \\
 
-\t{doman -i18n} precedence & \compactfeatureref{doman-langs} &
-    * & Yes & Yes & Yes & Yes \\
+\t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
+    No & No & No & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & No & No & Yes \\
-
-\t{new*} support stdin & \compactfeatureref{newfoo-stdin} &
-    No & Yes & Yes & Yes & Yes \\
+    No & No & No & Yes \\
 
-\t{insopts} affects misc.\ commands & \compactfeatureref{insopts} &
-    Yes & Yes & Yes & Yes & No \\
+\t{insopts} affects misc.\ cmds & \compactfeatureref{insopts} &
+    Yes & Yes & Yes & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & Yes & Yes & No \\
-
-Controllable compression & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{docompress} & \compactfeatureref{docompress} &
-    * & Yes & Yes & Yes & Yes \\
+    Yes & Yes & Yes & No \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & No & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & No & No & Yes & Yes \\
+    No & No & Yes & Yes \\
 
 \t{usev} second arg & \compactfeatureref{usev} &
-    No & No & No & No & Yes \\
-
-\t{use_with} empty third arg & \compactfeatureref{use-with} &
-    * & Yes & Yes & Yes & Yes \\
-
-\t{usex} & \compactfeatureref{usex} &
-    No & Yes & Yes & Yes & Yes \\
+    No & No & No & Yes \\
 
 \t{in_iuse} & \compactfeatureref{in-iuse} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{ver_*} commands & \compactfeatureref{ver-commands} &
-    No & No & No & Yes & Yes \\
+    No & No & Yes & Yes \\
 
 \t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & No & Yes & Yes & Yes \\
-
-\t{unpack} support for \t{xz} & \compactfeatureref{unpack-extensions} &
-    * & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & Yes & No \\
+    Yes & Yes & Yes & No \\
 
 \t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & No & Yes & Yes & Yes \\
-
-\t{default} function & \compactfeatureref{default-func} &
-    * & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & No & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & No & Yes & Yes & Yes \\
-
-File mtimes preserved & \compactfeatureref{mtime-preserve} &
-    * & Yes & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \end{longtable}
-\end{landscape}
 
 \chapter{Differences Between EAPIs}
 

diff --git a/pms.cls b/pms.cls
index b29a9c3..dcef98c 100644
--- a/pms.cls
+++ b/pms.cls
@@ -76,13 +76,13 @@
 % the page margin.
 \ifthenelse{\boolean{TEX4HT-HACKS}}{%
     \newcommand{\featureref}[1]{\hyperref[feat:#1]{\textsc{#1}}}
-    \newcommand{\compactfeatureref}[1]{\hyperref[feat:#1]{#1}}
+    \newcommand{\compactfeatureref}[1]{\featureref{#1}}
     \newcommand{\featurelabel}[1]{\leavevmode\label{feat:#1}%
         % tex4ht does not support marginnote
         \framebox{\textsc{#1}}}
 }{%
     \newcommand{\featureref}[1]{\textsc{#1} on page~\pageref{feat:#1}}
-    \newcommand{\compactfeatureref}[1]{#1~p\pageref{feat:#1}}
+    \newcommand{\compactfeatureref}[1]{p.\,\pageref{feat:#1}}
     \newcommand{\featurelabel}[1]{\leavevmode\label{feat:#1}%
         \marginnote{\framebox{\textsc{#1}}}\ignorespaces}
 }


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-04-14 16:40 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-04-14 16:40 UTC (permalink / raw
  To: gentoo-commits

commit:     97a6391f49d9a9ba297da349c021fb00c3067762
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:30:11 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Apr 14 15:53:25 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=97a6391f

profiles.tex: The parent file can contain comments

Closes: https://bugs.gentoo.org/470094
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/profiles.tex b/profiles.tex
index 30da81b..856643b 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -25,7 +25,8 @@ first, left to right, with duplicate parent paths being sourced for every time t
 It is illegal for a profile's parent tree to contain cycles. Package manager behaviour upon
 encountering a cycle is undefined.
 
-This file must not contain comments, blank lines or make use of line continuations.
+This file must not make use of line continuations. Blank lines and those beginning with a \t{\#}
+are discarded.
 
 \subsection{The eapi file}
 \label{sec:profile-eapi}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-04-14 16:40 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-04-14 16:40 UTC (permalink / raw
  To: gentoo-commits

commit:     faa6e7dcd1aeece84221ce454a19b2f65211409e
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  3 16:32:47 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Apr 14 15:57:14 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=faa6e7dc

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 commands.tex          |   4 +-
 dependencies.tex      |  26 ++++-----
 eapi-differences.tex  | 153 +++++++++++++++++++-------------------------------
 eapis.tex             |   4 +-
 ebuild-env-vars.tex   |  26 ++++-----
 ebuild-format.tex     |   4 +-
 ebuild-functions.tex  |  46 +++++++--------
 ebuild-vars.tex       |  22 ++++----
 eclasses.tex          |   4 +-
 merge.tex             |   6 +-
 pkg-mgr-commands.tex  | 100 ++++++++++++++++-----------------
 pms.tex               |   4 +-
 profile-variables.tex |   8 +--
 profiles.tex          |  12 ++--
 tree-layout.tex       |   8 +--
 15 files changed, 195 insertions(+), 232 deletions(-)

diff --git a/commands.tex b/commands.tex
index d0ad87d..c6f4f36 100644
--- a/commands.tex
+++ b/commands.tex
@@ -33,7 +33,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
     \begin{tabular}{lll}
@@ -44,7 +44,7 @@ The following commands must always be available in the ebuild environment:
       \midrule
       0, 1, 2, 3, 4     & Undefined & Any \\
       5, 6              & Yes       & Any \\
-      7, 8              & Yes       & 2.7 \\
+      7, 8, 9           & Yes       & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index 6c09714..6b58f54 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,7 @@ with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in \
 \t{pkg_postinst}. Ebuilds may also call them in \t{pkg_prerm} and \t{pkg_postrm} but must not rely
 on them being available.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting additional dependency types}
     \label{tab:depend-table}
     \begin{tabular}{lll}
@@ -99,7 +99,7 @@ on them being available.
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  \\
       7                   & Yes & No  \\
-      8                   & Yes & Yes \\
+      8, 9                & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -155,7 +155,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
     \label{tab:at-most-one-of-table}
     \begin{tabular}{ll}
@@ -164,7 +164,7 @@ In particular, note that whitespace is not optional.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -204,7 +204,7 @@ In an exactly-one-of group, exactly one immediate child element must be matched.
 In EAPIs specified in table~\ref{tab:empty-dep-groups}, an empty exactly-one-of group counts as
 being matched.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
     \label{tab:empty-dep-groups}
     \begin{tabular}{ll}
@@ -214,7 +214,7 @@ being matched.
         are matched?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes \\
-      7, 8                & No  \\
+      7, 8, 9             & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -250,7 +250,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
     \label{tab:slot-deps-table}
     \begin{tabular}{lll}
@@ -261,12 +261,12 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0                 & No                 & No  \\
       1, 2, 3, 4        & Named only         & No  \\
-      5, 6, 7, 8        & Named and operator & Yes \\
+      5, 6, 7, 8, 9     & Named and operator & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
     \label{tab:use-deps-table}
     \begin{tabular}{ll}
@@ -276,7 +276,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0, 1              & No      \\
       2, 3              & 2-style \\
-      4, 5, 6, 7, 8     & 4-style \\
+      4, 5, 6, 7, 8, 9  & 4-style \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -310,7 +310,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Exclamation mark strengths for EAPIs}
     \label{tab:bang-strength-table}
     \begin{tabular}{lll}
@@ -319,8 +319,8 @@ described in table~\ref{tab:bang-strength-table}.
       \multicolumn{1}{c}{\textbf{\t{!}}} &
       \multicolumn{1}{c}{\textbf{\t{!!}}} \\
       \midrule
-      0, 1                & Unspecified & Forbidden \\
-      2, 3, 4, 5, 6, 7, 8 & Weak        & Strong    \\
+      0, 1                   & Unspecified & Forbidden \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Weak        & Strong    \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 31d5537..fbb23b4 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,24 +1,24 @@
 \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 to~4 have been omitted from the table below, as well as items that would
+For lack of space, EAPIs 0 to~5 have been omitted from the table below, as well as items that would
 have identical entries for all listed EAPIs.}
 
-\ChangeWhenAddingAnEAPI{8}
-\begin{longtable}{@{}llllll@{}} % @{} to avoid overfull box
+\ChangeWhenAddingAnEAPI{9}
+\begin{longtable}{llllll}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Ref.}} &
 \multicolumn{4}{c}{\textbf{EAPIs}} \\
-& & 5 & 6 & 7 & 8 \\
+& & 6 & 7 & 8 & 9 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Ref.}} &
 \multicolumn{4}{c}{\textbf{EAPIs}} \\
-& & 5 & 6 & 7 & 8 \\
+& & 6 & 7 & 8 & 9 \\
 \midrule
 \endhead
 \midrule
@@ -27,191 +27,146 @@ have identical entries for all listed EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Less strict \t{updates} syntax & \compactfeatureref{updates-filenames} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & Optional & No & No \\
+    Optional & No & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 4.2 & 4.2 & 5.0 \\
-
-\t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & Yes & Yes & Yes \\
+    4.2 & 4.2 & 5.0 & 5.0 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 Working dir in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Any & Empty \\
+    Any & Any & Empty & Empty \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    no-op & 6 & 6 & 8 \\
-
-\t{src_install} style & \compactfeatureref{src-install} &
-    4 & 6 & 6 & 6 \\
+    6 & 6 & 8 & 8 \\
 
 Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & No & Yes & Yes \\
-
-Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & Any & 2.7 & 2.7 \\
+    Any & 2.7 & 2.7 & 2.7 \\
 
 \t{nonfatal} function / external & \compactfeatureref{nonfatal} &
-    No & No & Yes & Yes \\
-
-\t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned & Banned \\
+    No & Yes & Yes & Yes \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
+    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & No & Yes & Yes \\
-
-\t{die -n} & \compactfeatureref{nonfatal-die} &
     No & Yes & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & No & Yes & Yes \\
-
-\t{eapply} & \compactfeatureref{eapply} &
-    No & Yes & Yes & Yes \\
-
-\t{eapply_user} & \compactfeatureref{eapply-user} &
     No & Yes & Yes & Yes \\
 
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
-    No & No & No & Yes \\
-
-\t{econf -{}-docdir} & \compactfeatureref{econf-options} &
-    No & Yes & Yes & Yes \\
-
-\t{econf -{}-htmldir} & \compactfeatureref{econf-options} &
-    No & Yes & Yes & Yes \\
+    No & No & Yes & Yes \\
 
 \t{econf -{}-with-sysroot} & \compactfeatureref{econf-options} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{insopts} affects misc.\ cmds & \compactfeatureref{insopts} &
-    Yes & Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & No & Yes & Yes \\
-
-\t{usev} second arg & \compactfeatureref{usev} &
-    No & No & No & Yes \\
-
-\t{in_iuse} & \compactfeatureref{in-iuse} &
     No & Yes & Yes & Yes \\
 
-\t{ver_*} commands & \compactfeatureref{ver-commands} &
+\t{usev} second arg & \compactfeatureref{usev} &
     No & No & Yes & Yes \\
 
-\t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & Yes & Yes & Yes \\
-
-\t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
+\t{ver_*} commands & \compactfeatureref{ver-commands} &
     No & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & No \\
-
-\t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & Yes & Yes & Yes \\
-
-\t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & Yes & Yes & Yes \\
-
-\t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & Yes & Yes & Yes \\
+    Yes & Yes & No & No \\
 
 \end{longtable}
 
@@ -392,7 +347,15 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, \featureref{unpack-extensions}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\section*{EAPI 9}
+
+EAPI 9 is EAPI 8 with the following changes:
+
+\begin{compactitem}
+\item None
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{9}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 

diff --git a/eapis.tex b/eapis.tex
index a6c8109..fd0420c 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -17,8 +17,8 @@ EAPIs are also used for profile directories, as described in section~\ref{sec:pr
 
 \section{Defined EAPIs}
 
-\ChangeWhenAddingAnEAPI{8}
-This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', and~`8'.
+\ChangeWhenAddingAnEAPI{9}
+This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', `8', and~`9'.
 EAPI~`0' is the `original' base EAPI\@. Each of the later EAPIs contains a number of extensions
 to its predecessor.
 

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index b8deb04..6d51bd0 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -266,7 +266,7 @@ inconsistent variable.
 \end{longtable}
 \end{landscape}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
     \begin{tabular}{lllllll}
@@ -282,12 +282,12 @@ inconsistent variable.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4                 & Yes & Yes & Yes & No  & No  & No  \\
       5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
     \begin{tabular}{lllllll}
@@ -302,12 +302,12 @@ inconsistent variable.
       \midrule
       0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
       4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
-      7, 8              & No  & No  & No  & No  & No  & No  \\
+      7, 8, 9           & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
     \begin{tabular}{lllll}
@@ -320,7 +320,7 @@ inconsistent variable.
       \midrule
       0, 1, 2           & No  & No  & No  & No  \\
       3, 4, 5, 6        & Yes & Yes & Yes & No  \\
-      7, 8              & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -344,7 +344,7 @@ must be unset, for EAPIs listed in table~\ref{tab:profile-env-unset} as supporti
 ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in
 table~\ref{tab:locale-settings}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Locale settings for EAPIs}
     \label{tab:locale-settings}
     \begin{tabular}{ll}
@@ -353,7 +353,7 @@ table~\ref{tab:locale-settings}.
       \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & Undefined \\
-      6, 7, 8           & Yes       \\
+      6, 7, 8, 9        & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -439,7 +439,7 @@ contain at most one value.
 \subsection{Offset-prefix variables}
 \label{sec:offset-vars}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix}
     \label{tab:offset-support-table}
     \begin{tabular}{ll}
@@ -447,8 +447,8 @@ contain at most one value.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports offset-prefix?}}\\
       \midrule
-      0, 1, 2           & No  \\
-      3, 4, 5, 6, 7, 8  & Yes \\
+      0, 1, 2             & No  \\
+      3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -479,7 +479,7 @@ specifies the system root directory, it will consist of a single slash (\t{/}).
 a trailing slash, the package manager guarantees that a trailing slash will never be present.
 If the path specifies the system root directory, it will be empty.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
     \begin{tabular}{lll}
@@ -491,7 +491,7 @@ If the path specifies the system root directory, it will be empty.
       \t{D}, \t{ED} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & always & always \\
-      7, 8                & never  & never  \\
+      7, 8, 9             & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index cf06668..c366295 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -21,7 +21,7 @@ certain variables and functions (see chapters~\ref{ch:ebuild-vars} and~\ref{ch:e
 for specific information), and must not call any external programs, write anything to standard
 output or standard error, or modify the state of the system in any way.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Bash version and options}
     \label{tab:bash-version}
     \begin{tabular}{lll}
@@ -32,7 +32,7 @@ output or standard error, or modify the state of the system in any way.
       \midrule
       0, 1, 2, 3, 4, 5  & 3.2 & No  \\
       6, 7              & 4.2 & Yes \\
-      8                 & 5.0 & Yes \\
+      8, 9              & 5.0 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 25164d4..b3e2a61 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -46,7 +46,7 @@ fallback to \t{WORKDIR} is used:
     executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Initial working directory in \t{pkg_*} phase functions for EAPIs}
     \label{tab:function-dirs}
     \begin{tabular}{ll}
@@ -55,12 +55,12 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Initial working directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
-      8                       & Empty \\
+      8, 9                    & Empty \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
     \label{tab:s-fallback-table}
     \begin{tabular}{ll}
@@ -69,7 +69,7 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Fallback to \t{WORKDIR} permitted?}} \\
       \midrule
       0, 1, 2, 3        & Always            \\
-      4, 5, 6, 7, 8     & Conditional error \\
+      4, 5, 6, 7, 8, 9  & Conditional error \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -91,7 +91,7 @@ before the next phase is executed.
 
 \t{pkg_pretend} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_pretend}}
     \label{tab:pkg-pretend-table}
     \begin{tabular}{ll}
@@ -100,7 +100,7 @@ before the next phase is executed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_pretend}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -149,7 +149,7 @@ listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, respectively
 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_prepare} support and behaviour for EAPIs}
     \label{tab:src-prepare-table}
     \begin{tabular}{lll}
@@ -161,7 +161,7 @@ the \t{src_prepare} function is a no-op.
       0, 1              & No  & Not applicable \\
       2, 3, 4, 5        & Yes & no-op          \\
       6, 7              & Yes & 6              \\
-      8                 & Yes & 8              \\
+      8, 9              & Yes & 8              \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -206,7 +206,7 @@ The \t{src_configure} function configures the package's build environment. The d
 implementation used when the ebuild lacks the \t{src_configure} function shall behave as in
 listing~\ref{lst:src-configure-2}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{src_configure}}
     \label{tab:src-configure-table}
     \begin{tabular}{ll}
@@ -214,8 +214,8 @@ listing~\ref{lst:src-configure-2}.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{src_configure}?}} \\
       \midrule
-      0, 1                & No  \\
-      2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0, 1                   & No  \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -244,7 +244,7 @@ implementation used when the ebuild lacks the \t{src_prepare} function shall beh
 listing~\ref{lst:src-compile-0}, listing~\ref{lst:src-compile-1} or listing~\ref{lst:src-compile-2},
 respectively.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_compile} behaviour for EAPIs}
     \label{tab:src-compile-table}
     \begin{tabular}{ll}
@@ -252,9 +252,9 @@ respectively.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Format}} \\
       \midrule
-      0                   & 0 \\
-      1                   & 1 \\
-      2, 3, 4, 5, 6, 7, 8 & 2 \\
+      0                      & 0 \\
+      1                      & 1 \\
+      2, 3, 4, 5, 6, 7, 8, 9 & 2 \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -317,7 +317,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_test} behaviour for EAPIs}
     \label{tab:src-test-table}
     \begin{tabular}{ll}
@@ -326,7 +326,7 @@ be disabled by user too, using a PM-specific mechanism.
       \multicolumn{1}{c}{\textbf{Supports parallel tests?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -346,7 +346,7 @@ listing~\ref{lst:src-install-4} or listing~\ref{lst:src-install-6}, respectively
 For other EAPIs, the default implementation used when the ebuild lacks the \t{src_install} function
 is a no-op.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_install} behaviour for EAPIs}
     \label{tab:src-install-table}
     \begin{tabular}{ll}
@@ -356,7 +356,7 @@ is a no-op.
       \midrule
       0, 1, 2, 3        & no-op \\
       4, 5              & 4     \\
-      6, 7, 8           & 6     \\
+      6, 7, 8, 9        & 6     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -450,7 +450,7 @@ that dependencies may not be installed.
 
 \t{pkg_info} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_info} on non-installed packages}
     \label{tab:pkg-info-table}
     \begin{tabular}{ll}
@@ -459,7 +459,7 @@ that dependencies may not be installed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_info} on non-installed packages?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -481,7 +481,7 @@ named \t{default_<phase-function>}) that behaves as the default implementation f
 be defined when executing any ebuild phase function listed in the table. Ebuilds must not call
 these functions except when in the phase in question.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{default_} phase functions}
     \label{tab:default-phase-function-table}
     \begin{tabular}{l P{26em}}
@@ -492,7 +492,7 @@ these functions except when in the phase in question.
       0, 1              & None \\
       2, 3              & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test} \\
-      4, 5, 6, 7, 8     & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
+      4, 5, 6, 7, 8, 9  & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test}, \t{src_install} \\
       \bottomrule
     \end{tabular}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 5f3f583..c4413f5 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -90,7 +90,7 @@ defined by an eclass.
 \item[IDEPEND] See chapter~\ref{ch:dependencies}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{IUSE} defaults}
     \label{tab:iuse-defaults-table}
     \begin{tabular}{ll}
@@ -98,13 +98,13 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{IUSE} defaults?}} \\
       \midrule
-      0                      & No  \\
-      1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0                         & No  \\
+      1, 2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
     \begin{tabular}{lll}
@@ -114,7 +114,7 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6, 7, 8     & Yes        & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -179,7 +179,7 @@ selective URI restrictions, the URI protocol can be prefixed by an additional \t
 restriction for the URI (but not the implied mirror restriction). If the ebuild is fetch or mirror
 restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for the URI.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows and selective URI restrictions}
     \label{tab:uri-arrows-table}
     \begin{tabular}{lll}
@@ -190,7 +190,7 @@ restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for
       \midrule
       0, 1              & No  & No  \\
       2, 3, 4, 5, 6, 7  & Yes & No  \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -275,7 +275,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} default}
     \label{tab:rdepend-depend-table}
     \begin{tabular}{ll}
@@ -284,7 +284,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
       \multicolumn{1}{c}{\textbf{\t{RDEPEND=DEPEND}?}} \\
       \midrule
       0, 1, 2, 3        & Yes \\
-      4, 5, 6, 7, 8     & No  \\
+      4, 5, 6, 7, 8, 9  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -319,7 +319,7 @@ not be exported to the ebuild environment:
 \note{Thus, by extension of section~\ref{sec:metadata-invariance}, phase functions must not be
 defined based upon any variant condition.}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{DEFINED_PHASES}}
     \label{tab:defined-phases-table}
     \begin{tabular}{ll}
@@ -328,7 +328,7 @@ defined based upon any variant condition.}
       \multicolumn{1}{c}{\textbf{Supports \t{DEFINED_PHASES}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally \\
-      4, 5, 6, 7, 8     & Yes        \\
+      4, 5, 6, 7, 8, 9  & Yes        \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eclasses.tex b/eclasses.tex
index a4400e1..3e7419c 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -43,7 +43,7 @@ the previous one is loaded. For EAPIs listed in table~\ref{tab:accumulate-vars}
 value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is done after
 the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across eclasses}
     \label{tab:accumulate-vars}
     \begin{tabular}{lll}
@@ -53,7 +53,7 @@ the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
       \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
-      8                       & Yes & Yes \\
+      8, 9                    & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/merge.tex b/merge.tex
index ca1036d..db9c74f 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Preservation of file modification times (mtimes)}
     \label{tab:mtime-preserve}
     \begin{tabular}{ll}
@@ -94,8 +94,8 @@ is undefined.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\
       \midrule
-      0, 1, 2           & Undefined \\
-      3, 4, 5, 6, 7, 8  & Yes       \\
+      0, 1, 2             & Undefined \\
+      3, 4, 5, 6, 7, 8, 9 & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4fac077..19bd4ff 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -32,7 +32,7 @@ The following commands affect this behaviour:
     option and in EAPIs supporting this option, see table~\ref{tab:die-properties}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
     \begin{tabular}{llll}
@@ -44,7 +44,7 @@ The following commands affect this behaviour:
       \midrule
       0, 1, 2, 3        & Non-zero exit & No  & n/a \\
       4, 5, 6           & Aborts        & Yes & No  \\
-      7, 8              & Aborts        & Yes & Yes \\
+      7, 8, 9           & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -55,7 +55,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{8}
+\ChangeWhenAddingAnEAPI{9}  % two places
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
     \begin{tabular}{lllllll}
@@ -73,7 +73,7 @@ called, the package manager must abort the build process indicating an error.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4, 5              & Yes & Yes & No  & No  & No  & No  \\
       6                 & Yes & Yes & Yes & No  & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \midrule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{6}{c}{\textbf{Command banned?}} \\
@@ -83,7 +83,7 @@ called, the package manager must abort the build process indicating an error.
       \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-      8                       & Yes & Yes & Yes & & & \\
+      8, 9                    & Yes & Yes & Yes & & & \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -121,7 +121,7 @@ are given, \t{-r} is assumed.
     otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Package manager query command options supported by EAPIs}
     \label{tab:pm-query-options}
     \begin{tabular}{lllll}
@@ -134,7 +134,7 @@ are given, \t{-r} is assumed.
       \midrule
       0, 1, 2, 3, 4     & No  & No  & No  & No  \\
       5, 6              & Yes & No  & No  & No  \\
-      7, 8              & No  & Yes & Yes & Yes \\
+      7, 8, 9           & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -171,7 +171,7 @@ output, using stdout as an output facility is forbidden.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
     \begin{tabular}{lll}
@@ -181,7 +181,7 @@ output, using stdout as an output facility is forbidden.
       \multicolumn{1}{c}{\textbf{Supports \t{eqawarn}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes & No  \\
-      7, 8                & No  & Yes \\
+      7, 8, 9             & No  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -203,7 +203,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
     \label{tab:die-properties}
     \begin{tabular}{lll}
@@ -216,7 +216,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
       6                 & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -280,7 +280,7 @@ Ebuilds must not run any of these commands once the current phase function has r
     subsequent calls, the command will do nothing and return~0.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Patch commands for EAPIs}
     \label{tab:patch-commands}
     \begin{tabular}{lll}
@@ -290,7 +290,7 @@ Ebuilds must not run any of these commands once the current phase function has r
       \multicolumn{1}{c}{\textbf{\t{eapply_user}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -350,7 +350,7 @@ commands once the current phase function has returned.
     \t{configure -{}-help} output matches only if it is not immediately followed by any of the
     characters \t{[A-Za-z0-9+_.-]}.
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
         \begin{tabular}{lllll}
@@ -364,7 +364,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
           6                 & No  & Yes & Yes & No  \\
           7                 & No  & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & Yes \\
+          8, 9              & Yes & Yes & Yes & Yes \\
           \midrule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
@@ -374,7 +374,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3        & No  & No  & No  & \\
           4                 & Yes & No  & No  & \\
           5, 6, 7           & Yes & Yes & No  & \\
-          8                 & Yes & Yes & Yes & \\
+          8, 9              & Yes & Yes & Yes & \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -675,7 +675,7 @@ dosym_relative_path() {
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dodoc -r}}
     \label{tab:dodoc-table}
     \begin{tabular}{ll}
@@ -684,12 +684,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{dodoc -r}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}}
     \label{tab:doheader-table}
     \begin{tabular}{ll}
@@ -698,12 +698,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{doheader} and \t{newheader}?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting symlinks for \t{doins}}
     \label{tab:doins-table}
     \begin{tabular}{ll}
@@ -712,12 +712,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{doins} supports symlinks?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{doman} language support options for EAPIs}
     \label{tab:doman-table}
     \begin{tabular}{lll}
@@ -728,12 +728,12 @@ dosym_relative_path() {
       \midrule
       0, 1              & No  & Not applicable \\
       2, 3              & Yes & No             \\
-      4, 5, 6, 7, 8     & Yes & Yes            \\
+      4, 5, 6, 7, 8, 9  & Yes & Yes            \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting stdin for \t{new*} commands}
     \label{tab:newfoo-stdin-table}
     \begin{tabular}{ll}
@@ -742,12 +742,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{new*} can read from stdin?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{domo} destination path in EAPIs}
     \label{tab:domo-path}
     \begin{tabular}{ll}
@@ -756,12 +756,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Destination path}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
-      7, 8                & \t{/usr/share/locale} \\
+      7, 8, 9             & \t{/usr/share/locale} \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dosym -r}}
     \label{tab:dosym-r}
     \begin{tabular}{ll}
@@ -770,7 +770,7 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative paths?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  \\
-      8                       & Yes \\
+      8, 9                    & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -812,7 +812,7 @@ function has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{insopts} for EAPIs}
     \label{tab:insopts-commands}
     \begin{tabular}{lllll}
@@ -824,12 +824,12 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doheader}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes & Yes & Yes \\
-      8                       & Yes & No  & No  & No  \\
+      8, 9                    & Yes & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{exeopts} for EAPIs}
     \label{tab:exeopts-commands}
     \begin{tabular}{lll}
@@ -839,7 +839,7 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doinitd}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes \\
-      8                       & Yes & No  \\
+      8, 9                    & Yes & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -916,7 +916,7 @@ any of these functions from any other phase.
     supporting \t{dostrip}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands controlling manipulation of files in the staging area in EAPIs}
     \label{tab:staging-area-commands}
     \begin{tabular}{lll}
@@ -927,7 +927,7 @@ any of these functions from any other phase.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6           & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -974,7 +974,7 @@ table~\ref{tab:use-list-strictness}.
     table~\ref{tab:use-list-functions} as supporting \t{in_iuse}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI behaviour for use queries not in \t{IUSE_EFFECTIVE}}
     \label{tab:use-list-strictness}
     \begin{tabular}{ll}
@@ -983,12 +983,12 @@ table~\ref{tab:use-list-strictness}.
       \multicolumn{1}{c}{\textbf{Behaviour}} \\
       \midrule
       0, 1, 2, 3        & Undefined \\
-      4, 5, 6, 7, 8     & Error     \\
+      4, 5, 6, 7, 8, 9  & Error     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for EAPIs}
     \label{tab:use-list-args}
     \begin{tabular}{lll}
@@ -1000,12 +1000,12 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6, 7        & No  & Yes \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{usex} and \t{in_iuse}}
     \label{tab:use-list-functions}
     \begin{tabular}{lll}
@@ -1016,7 +1016,7 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3, 4     & No  & No  \\
       5                 & Yes & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1101,7 +1101,7 @@ the second, inclusively.
     section~\ref{sec:version-spec}. Comparison is done using algorithm~\ref{alg:version-comparison}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
     \label{tab:version-commands}
     \begin{tabular}{llll}
@@ -1112,7 +1112,7 @@ the second, inclusively.
       \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-      7, 8                & Yes & Yes & Yes \\
+      7, 8, 9             & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1189,7 +1189,7 @@ has returned.
     \featurelabel{unpack-ignore-case} \t{unpack} matches filename extensions in a case-insensitive
     manner, for EAPIs listed such in table~\ref{tab:unpack-behaviour}.
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} behaviour for EAPIs}
         \label{tab:unpack-behaviour}
         \begin{tabular}{lll}
@@ -1199,12 +1199,12 @@ has returned.
           \multicolumn{1}{c}{\textbf{Case-insensitive matching?}} \\
           \midrule
           0, 1, 2, 3, 4, 5  & No  & No  \\
-          6, 7, 8           & Yes & Yes \\
+          6, 7, 8, 9        & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} extensions for EAPIs}
         \label{tab:unpack-extensions-table}
         \begin{tabular}{llllllll}
@@ -1220,7 +1220,7 @@ has returned.
           0, 1, 2           & No  & No  & No  & Yes & Yes & Yes \\
           3, 4, 5           & Yes & Yes & No  & Yes & Yes & Yes \\
           6, 7              & Yes & Yes & Yes & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & No  & No  & No  \\
+          8, 9              & Yes & Yes & Yes & No  & No  & No  \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -1288,7 +1288,7 @@ has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
     \label{tab:misc-commands}
     \begin{tabular}{llll}
@@ -1300,7 +1300,7 @@ has returned.
       \midrule
       0, 1              & No  & No  & No  \\
       2, 3, 4, 5        & Yes & No  & No  \\
-      6, 7, 8           & Yes & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pms.tex b/pms.tex
index f435f51..4a7bb0b 100644
--- a/pms.tex
+++ b/pms.tex
@@ -21,8 +21,8 @@
     pdfkeywords={Gentoo, package manager, specification},
 }
 
-\CurrentEAPIIs{8}
-\ChangeWhenAddingAnEAPI{8}
+\CurrentEAPIIs{9}
+\ChangeWhenAddingAnEAPI{9}
 
 \begin{document}
 \maketitle

diff --git a/profile-variables.tex b/profile-variables.tex
index ba40bf4..0f2dc3c 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -40,7 +40,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs}
     \label{tab:profile-iuse-injection-table}
     \begin{tabular}{ll}
@@ -49,12 +49,12 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined unsetting of variables in EAPIs}
     \label{tab:profile-env-unset}
     \begin{tabular}{ll}
@@ -63,7 +63,7 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports \t{ENV_UNSET}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/profiles.tex b/profiles.tex
index 856643b..e350972 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -79,7 +79,7 @@ in that directory, unless their name begins with a dot, will be concatenated in
 filename in the POSIX locale and the result will be processed as if it were a single file.
 Any subdirectories will be ignored.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting directories for profile files}
     \label{tab:profile-file-dirs}
     \begin{tabular}{ll}
@@ -88,7 +88,7 @@ Any subdirectories will be ignored.
       \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -124,7 +124,7 @@ it is actually installed. Because it has severe adverse effects on USE-based and
 dependencies, its use is strongly deprecated and package manager support must be regarded as purely
 optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{package.provided} in profiles}
     \label{tab:package-provided}
     \begin{tabular}{ll}
@@ -133,7 +133,7 @@ optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
       \multicolumn{1}{c}{\textbf{Supports \t{package.provided}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Optionally \\
-      7, 8                & No         \\
+      7, 8, 9             & No         \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -166,7 +166,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile directory support for masking/forcing use flags in stable versions only}
     \label{tab:profile-stablemask}
     \begin{tabular}{ll}
@@ -175,7 +175,7 @@ stable in a package.
       \multicolumn{1}{c}{\textbf{Supports masking/forcing use flags in stable versions?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/tree-layout.tex b/tree-layout.tex
index da01ff8..cac84bb 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -127,7 +127,7 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
     \label{tab:package-mask-dir}
     \begin{tabular}{ll}
@@ -136,7 +136,7 @@ manager must ignore any files in this directory that it does not recognise.
       \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -233,7 +233,7 @@ Any name that has appeared as the origin of a move must not be reused in the fut
 that has appeared as the origin of a slot move may not be used by packages matching the spec of
 that slot move in the future.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Naming rules for files in \t{updates} directory for EAPIs}
     \label{tab:updates-filenames}
     \begin{tabular}{ll}
@@ -242,7 +242,7 @@ that slot move in the future.
       \multicolumn{1}{c}{\textbf{Files per quarter year?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes \\
-      8                       & No  \\
+      8, 9                    & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2023-04-14 16:40 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2023-04-14 16:40 UTC (permalink / raw
  To: gentoo-commits

commit:     4ebd8c5b40256db4ee682fa5af0046cc4acfbd1f
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:32:43 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Apr 14 15:57:14 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=4ebd8c5b

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 ++++-
 profiles.tex         | 23 +++++++++++++++++++++--
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index fbb23b4..9319769 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -32,6 +32,9 @@ have identical entries for all listed EAPIs.}
 Less strict \t{updates} syntax & \compactfeatureref{updates-filenames} &
     No & No & Yes & Yes \\
 
+Default EAPI for profiles & \compactfeatureref{profile-eapi-default} &
+    0 & 0 & 0 & Top-level \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & Yes & Yes & Yes \\
 
@@ -352,7 +355,7 @@ EAPI 8 is EAPI 7 with the following changes:
 EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index e350972..05caace 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -33,8 +33,27 @@ are discarded.
 A profile directory may contain an \t{eapi} file. This file, if it exists, must contain a single
 line with the name of an EAPI\@. This specifies the EAPI to use when handling the directory in
 question; a package manager must not attempt to use any profile using a directory which requires an
-EAPI it does not support. If no \t{eapi} file is present, EAPI 0 shall be used. The EAPI is neither
-inherited via the \t{parent} file nor in subdirectories.
+EAPI it does not support.
+
+\featurelabel{profile-eapi-default} If no \t{eapi} file is present, the default depends on the EAPI
+of the top-level profiles directory (see section~\ref{sec:profiles-dir}). That EAPI shall be used
+if table~\ref{tab:profile-eapi-default} lists it as ``top-level''. Otherwise, EAPI 0 shall be used.
+
+The EAPI is neither inherited via the \t{parent} file nor in subdirectories.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Default EAPI for profiles}
+    \label{tab:profile-eapi-default}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Default EAPI?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & 0         \\
+      9                         & Top-level \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{deprecated}
 If a profile contains a file named \t{deprecated}, it is treated as such. The first line of this


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

* [gentoo-commits] proj/pms:master commit in: /
@ 2023-08-06 15:26 Ulrich Müller
  2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
  0 siblings, 1 reply; 105+ messages in thread
From: Ulrich Müller @ 2023-08-06 15:26 UTC (permalink / raw
  To: gentoo-commits

commit:     07dde903c0f2feeb9f4aa46273436dc992b18913
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Aug  3 16:16:07 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Aug  6 11:09:41 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=07dde903

ebuild-env-vars.tex: Avoid "Ditto" in the env variables table

Suggested-by: Sam James <sam <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 533936a..fc8123b 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -48,15 +48,15 @@ inconsistent variable.
     Package name and version, without the revision part. For example, \t{vim-7.0.174}. \\
 \t{PF} &
     All &
-    Ditto &
+    No\footnotemark[\value{footnote}] &
     Package name, version, and revision (if any), for example \t{vim-7.0.174-r1}. \\
 \t{PN} &
     All &
-    Ditto &
+    No\footnotemark[\value{footnote}] &
     Package name, for example \t{vim}. \\
 \t{CATEGORY} &
     All &
-    Ditto &
+    No\footnotemark[\value{footnote}] &
     The package's category, for example \t{app-editors}. \\
 \t{PV} &
     All &
@@ -81,7 +81,7 @@ inconsistent variable.
     assume that the package manager sets it in the EAPIs supporting it. For example, a few
     configure scripts use this variable to find the \t{aalib} package; ebuilds calling such
     configure scripts must thus work around this.} &
-    Ditto &
+    \t{src_*}, \t{pkg_nofetch} &
     Yes &
     \featurelabel{aa} All source files that could be available for the package, including any that
     are disabled in \t{A} because of USE conditionals. The value is calculated from the base names
@@ -96,11 +96,11 @@ inconsistent variable.
     not exist; if a repository provides no support files for the package in question then an ebuild
     must be prepared for the situation where \t{FILESDIR} points to a non-existent directory. \\
 \t{DISTDIR} &
-    Ditto &
+    \t{src_*}, global~scope\footnotemark[\value{footnote}] &
     Yes &
     The full path to the directory in which the files in the \t{A} variable are stored. \\
 \t{WORKDIR} &
-    Ditto &
+    \t{src_*}, global~scope\footnotemark[\value{footnote}] &
     Yes &
     The full path to the ebuild's working directory, where all build data should be contained. \\
 \t{S} &
@@ -143,19 +143,18 @@ inconsistent variable.
     satisfied by \t{DEPEND}\@. Only for EAPIs listed in table~\ref{tab:added-env-vars-table}
     as supporting \t{SYSROOT}. \\
 \t{ESYSROOT} &
-    Ditto &
+    \t{src_*}, \t{pkg_setup}\footnotemark[\value{footnote}] &
     No &
     Contains the concatenation of the \t{SYSROOT} path and applicable prefix value, as determined
     by table~\ref{tab:depend-prefix}. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table}
     as supporting \t{ESYSROOT}. \\
 \t{BROOT} &
-    Ditto &
+    \t{src_*}, \t{pkg_setup}\footnotemark[\value{footnote}] &
     No &
     \featurelabel{broot} The absolute path to the root directory containing build dependencies
     satisfied by \t{BDEPEND} and \t{IDEPEND}, typically executable build tools. This includes any
     applicable offset prefix. Only for EAPIs listed in table~\ref{tab:added-env-vars-table} as
-    supporting \t{BROOT}.
-    \\
+    supporting \t{BROOT}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -164,12 +163,12 @@ inconsistent variable.
     The full path to a temporary directory for use by the ebuild. \\
 \t{TMPDIR} &
     All &
-    Ditto &
+    Partially\footnotemark[\value{footnote}] &
     Must be set to the location of a usable temporary directory, for any applications
     called by an ebuild. Must not be used by ebuilds directly; see \t{T} above. \\
 \t{HOME} &
     All &
-    Ditto &
+    Partially\footnotemark[\value{footnote}] &
     The full path to an appropriate temporary directory for use by any programs invoked by the
     ebuild that may read or modify the home directory. \\
 \t{EPREFIX} &


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2023-08-06 15:26 [gentoo-commits] proj/pms:master commit in: / Ulrich Müller
@ 2024-06-02  9:57 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     07dde903c0f2feeb9f4aa46273436dc992b18913
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Aug  3 16:16:07 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Aug  6 11:09:41 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=07dde903

ebuild-env-vars.tex: Avoid "Ditto" in the env variables table

Suggested-by: Sam James <sam <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 533936a..fc8123b 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -48,15 +48,15 @@ inconsistent variable.
     Package name and version, without the revision part. For example, \t{vim-7.0.174}. \\
 \t{PF} &
     All &
-    Ditto &
+    No\footnotemark[\value{footnote}] &
     Package name, version, and revision (if any), for example \t{vim-7.0.174-r1}. \\
 \t{PN} &
     All &
-    Ditto &
+    No\footnotemark[\value{footnote}] &
     Package name, for example \t{vim}. \\
 \t{CATEGORY} &
     All &
-    Ditto &
+    No\footnotemark[\value{footnote}] &
     The package's category, for example \t{app-editors}. \\
 \t{PV} &
     All &
@@ -81,7 +81,7 @@ inconsistent variable.
     assume that the package manager sets it in the EAPIs supporting it. For example, a few
     configure scripts use this variable to find the \t{aalib} package; ebuilds calling such
     configure scripts must thus work around this.} &
-    Ditto &
+    \t{src_*}, \t{pkg_nofetch} &
     Yes &
     \featurelabel{aa} All source files that could be available for the package, including any that
     are disabled in \t{A} because of USE conditionals. The value is calculated from the base names
@@ -96,11 +96,11 @@ inconsistent variable.
     not exist; if a repository provides no support files for the package in question then an ebuild
     must be prepared for the situation where \t{FILESDIR} points to a non-existent directory. \\
 \t{DISTDIR} &
-    Ditto &
+    \t{src_*}, global~scope\footnotemark[\value{footnote}] &
     Yes &
     The full path to the directory in which the files in the \t{A} variable are stored. \\
 \t{WORKDIR} &
-    Ditto &
+    \t{src_*}, global~scope\footnotemark[\value{footnote}] &
     Yes &
     The full path to the ebuild's working directory, where all build data should be contained. \\
 \t{S} &
@@ -143,19 +143,18 @@ inconsistent variable.
     satisfied by \t{DEPEND}\@. Only for EAPIs listed in table~\ref{tab:added-env-vars-table}
     as supporting \t{SYSROOT}. \\
 \t{ESYSROOT} &
-    Ditto &
+    \t{src_*}, \t{pkg_setup}\footnotemark[\value{footnote}] &
     No &
     Contains the concatenation of the \t{SYSROOT} path and applicable prefix value, as determined
     by table~\ref{tab:depend-prefix}. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table}
     as supporting \t{ESYSROOT}. \\
 \t{BROOT} &
-    Ditto &
+    \t{src_*}, \t{pkg_setup}\footnotemark[\value{footnote}] &
     No &
     \featurelabel{broot} The absolute path to the root directory containing build dependencies
     satisfied by \t{BDEPEND} and \t{IDEPEND}, typically executable build tools. This includes any
     applicable offset prefix. Only for EAPIs listed in table~\ref{tab:added-env-vars-table} as
-    supporting \t{BROOT}.
-    \\
+    supporting \t{BROOT}. \\
 \t{T} &
     All &
     Partially\footnote{Consistent and preserved across a single connected sequence of install or
@@ -164,12 +163,12 @@ inconsistent variable.
     The full path to a temporary directory for use by the ebuild. \\
 \t{TMPDIR} &
     All &
-    Ditto &
+    Partially\footnotemark[\value{footnote}] &
     Must be set to the location of a usable temporary directory, for any applications
     called by an ebuild. Must not be used by ebuilds directly; see \t{T} above. \\
 \t{HOME} &
     All &
-    Ditto &
+    Partially\footnotemark[\value{footnote}] &
     The full path to an appropriate temporary directory for use by any programs invoked by the
     ebuild that may read or modify the home directory. \\
 \t{EPREFIX} &


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2024-06-02  9:57 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     544d28de1b799ffe839bd6d7b5bc15b4d8e5970d
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 29 14:33:48 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu May  4 18:39:57 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=544d28de

pkg-mgr-commands.tex: Drop CONF_LIBDIR* and DEFAULT_ABI

The CONF_LIBDIR variable was used exclusively in the 2004.3 profile
(i.e. it was no longer defined in 2005.0). Portage support for
CONF_LIBDIR was added by this commit:
https://gitweb.gentoo.org/archive/proj/portage-cvs.git/commit/?id=ecc2faaa00b1e6250129267ba873bedd2121eac5
Note that neither the ABI nor the LIBDIR_${ABI} variable existed at
the time.

The CONF_LIBDIR_OVERRIDE and DEFAULT_ABI variables were never
implemented in the dolib* and einstall commands in Portage.

With the three variables dropped, the algorithm is identical to the
logic used for get_libdir(). Therefore drop alg:ebuild-libdir and
refer to alg:get-libdir instead.

Bug: https://bugs.gentoo.org/267159
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4fac077..b6113f6 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -430,7 +430,7 @@ commands once the current phase function has returned.
     table~\ref{tab:offset-env-vars-table}, hence EAPIs lacking offset-prefix support should use
     \t{D} instead of \t{ED} in the command given in listing~\ref{lst:einstall}.
     Variable \t{libdir} is an auxiliary local variable whose value is determined by
-    algorithm~\ref{alg:ebuild-libdir}.
+    algorithm~\ref{alg:get-libdir}.
 
 \begin{listing}[H]
 \caption{\t{einstall} command} \label{lst:einstall}
@@ -554,7 +554,7 @@ the current phase function has returned.
     EAPI dependent as per section~\ref{sec:failure-behaviour}.
 
 \item[dolib.a] For each argument, installs it into the appropriate library subdirectory under
-    \t{DESTTREE}, as determined by algorithm~\ref{alg:ebuild-libdir}. Files are installed with file
+    \t{DESTTREE}, as determined by algorithm~\ref{alg:get-libdir}. Files are installed with file
     mode \t{0644}. Any symlinks are installed into the same directory as relative links to their
     original target. Failure behaviour is EAPI dependent as per section~\ref{sec:failure-behaviour}.
 
@@ -565,28 +565,6 @@ the current phase function has returned.
     in table~\ref{tab:banned-commands-table}, this command is banned as per
     section~\ref{sec:banned-commands}.
 
-\begin{algorithm}
-\caption{Determining the library directory} \label{alg:ebuild-libdir}
-\begin{algorithmic}[1]
-\IF{CONF_LIBDIR_OVERRIDE is set in the environment}
-    \STATE return CONF_LIBDIR_OVERRIDE
-\ENDIF
-\IF{CONF_LIBDIR is set in the environment}
-    \STATE let LIBDIR_default=CONF_LIBDIR
-\ELSE
-    \STATE let LIBDIR_default=``lib''
-\ENDIF
-\IF{ABI is set in the environment}
-    \STATE let abi=ABI
-\ELSIF{DEFAULT_ABI is set in the environment}
-    \STATE let abi=DEFAULT_ABI
-\ELSE
-    \STATE let abi=``default''
-\ENDIF
-\STATE return the value of LIBDIR_\$abi
-\end{algorithmic}
-\end{algorithm}
-
 \item[doman] Installs the given man pages into the appropriate subdirectory of \t{/usr/share/man}
     depending upon its apparent section suffix (e.\,g.\ \t{foo.1} goes to
     \t{/usr/share/man/man1/foo.1}) with file mode \t{0644}.
@@ -1273,7 +1251,7 @@ has returned.
     supporting \t{get_libdir}.
 
 \begin{algorithm}
-\caption{\t{get_libdir} logic} \label{alg:get-libdir}
+\caption{Library directory logic} \label{alg:get-libdir}
 \begin{algorithmic}[1]
 \STATE let libdir=\t{lib}
 \IF{the ABI environment variable is set}
@@ -1282,7 +1260,7 @@ has returned.
         \STATE let libdir=the value of the variable named by libvar
     \ENDIF
 \ENDIF
-\STATE print the value of libdir
+\RETURN the value of libdir
 \end{algorithmic}
 \end{algorithm}
 


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2023-06-05 18:45 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2024-06-02  9:57 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     8db624245bc7ac34712017a70c056abe9d4a60cf
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon May 29 13:07:58 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon May 29 13:07:58 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=8db62424

pms.bib: Use @techreport entry type for GLEPs

This is a slightly better fit than @manual. Also, change citation keys
to lowercase.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 appendices.tex  |  6 +++---
 pms.bib         | 35 +++++++++++++++++++++++++----------
 tree-layout.tex |  2 +-
 3 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/appendices.tex b/appendices.tex
index 7a2c70b..daf9b01 100644
--- a/appendices.tex
+++ b/appendices.tex
@@ -3,7 +3,7 @@
 
 The \t{metadata.xml} file is used to contain extra package- or category-level information beyond
 what is stored in ebuild metadata. Its exact format is strictly beyond the scope of this document,
-and is described in GLEP~68~\cite{Glep68}.
+and is described in GLEP~68~\cite{glep68}.
 
 \chapter{Unspecified Items}
 
@@ -76,7 +76,7 @@ the \t{PROVIDE} metadata that it supplied certain virtuals, and the package mana
 in mind when handling dependencies.
 
 Old-style virtuals were supported by EAPIs 0, 1, 2, 3 and~4. They were phased out via
-GLEP~37~\cite{Glep37} and finally removed in 2011.
+GLEP~37~\cite{glep37} and finally removed in 2011.
 
 \note{A `new-style virtual' is a normal package that installs no files and uses its dependency
 requirements to pull in a `provider'. This does not require any special handling from the package
@@ -87,7 +87,7 @@ The method to specify the EAPI of an ebuild used to be a shell variable assignme
 manager had to source the ebuild in order to determine the EAPI\@. Therefore any ebuild using
 a future EAPI would still have to be sourceable by old package managers, which imposed restrictions
 e.\,g.\ on updating the Bash version or on possible changes of global scope functions. Several
-approaches to overcome this limitation were discussed, notably GLEP~55~\cite{Glep55}, which was
+approaches to overcome this limitation were discussed, notably GLEP~55~\cite{glep55}, which was
 rejected though.
 
 The current syntax of the \t{EAPI} assignment statement (see section~\ref{sec:eapi}), allowing

diff --git a/pms.bib b/pms.bib
index 014b643..bef07c1 100644
--- a/pms.bib
+++ b/pms.bib
@@ -1,38 +1,53 @@
-@manual{Glep37,
+@techreport{glep37,
     author = {Jason Stubbs},
-    title = {{GLEP} 37: Virtuals deprecation},
+    title = {Virtuals deprecation},
+    type = {GLEP},
+    number = 37,
+    institution = {Gentoo Linux},
     year = 2006,
     month = Sep,
     url = {https://www.gentoo.org/glep/glep-0037.html}
 }
 
-@manual{Glep44,
+@techreport{glep44,
     author = {Marius Mauch},
-    title = {{GLEP} 44: Manifest2 format},
+    title = {{Manifest2} format},
+    type = {GLEP},
+    number = 44,
+    institution = {Gentoo Linux},
     year = 2006,
     month = Sep,
     url = {https://www.gentoo.org/glep/glep-0044.html}
 }
 
-@manual{Glep55,
+@techreport{glep55,
     author = {Piotr Jaroszyński},
-    title = {{GLEP} 55: Use {EAPI}-suffixed ebuilds},
+    title = {Use {EAPI}-suffixed ebuilds},
+    type = {GLEP},
+    number = 55,
+    institution = {Gentoo Linux},
     year = 2009,
     month = May,
     url = {https://www.gentoo.org/glep/glep-0055.html}
 }
 
-@manual{Glep68,
+@techreport{glep68,
     author = {Michał Górny},
-    title = {{GLEP} 68: Package and category metadata},
+    title = {Package and category metadata},
+    type = {GLEP},
+    number = 68,
+    institution = {Gentoo Linux},
     year = 2022,
     month = Oct,
     url = {https://www.gentoo.org/glep/glep-0068.html}
 }
 
-@manual{Glep74,
+@techreport{glep74,
     author = {Michał Górny and Robin Hugh Johnson and Ulrich Müller},
-    title = {{GLEP} 74: Full-tree verification using Manifest files},
+    title = {Full-tree verification using {Manifest} files},
+    type = {GLEP},
+    number = 74,
+    institution = {Gentoo Linux},
     year = 2022,
     month = Oct,
     url = {https://www.gentoo.org/glep/glep-0074.html}

diff --git a/tree-layout.tex b/tree-layout.tex
index da01ff8..99fc46a 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -54,7 +54,7 @@ A package directory contains the following:
 \item A \t{metadata.xml} file, as described in appendix~\ref{app:metadata-xml}\@. Optional only for
     legacy support.
 \item A \t{ChangeLog}, in a format determined by the provider of the repository. Optional.
-\item A \t{Manifest} file, whose format is described in~\cite{Glep74}. Can be omitted if the file
+\item A \t{Manifest} file, whose format is described in~\cite{glep74}. Can be omitted if the file
     would be empty.
 \item A \t{files} directory, containing any support files needed by the ebuilds. Optional.
 \end{compactitem}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2024-06-02  9:57 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     86bdfe73f488081e6abc9397693e35b400cfc6b6
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Aug  3 16:12:16 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Aug  6 11:09:40 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=86bdfe73

Reformat the footnotes in the env variables longtable

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 ebuild-env-vars.tex | 12 ++++++++----
 pms.cls             |  3 +++
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index b8deb04..533936a 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -12,13 +12,17 @@ the various different \t{pkg_*} phases. Ebuilds must recalculate any variable th
 inconsistent variable.
 
 \begin{landscape}
+% Reduce width of text area to make room for margin notes
+\addtolength{\hsize}{-25mm}
+\setlength{\linewidth}{\hsize}
+\setlength{\columnwidth}{\hsize}
+\addtolength{\footskip}{25mm}
 \reversemarginpar
-\addtolength{\marginparsep}{-25mm}
 % Workaround for broken marginnote positioning in lscape environment
 \addtolength{\marginparsep}{-\textwidth} % FIXME
-\setlength{\LTleft}{25mm plus 1fil}
+\setlength{\LTleft}{0pt plus 1fil}
 \setlength{\LTright}{0pt plus 1fil}
-\begin{longtable}{!{\extracolsep{\fill}} l P{7.5em} l p{0.5\linewidth}}
+\begin{longtable}{!{\extracolsep{\fill}} l P{7.5em} l p{35em}}
 \caption{Defined variables\label{tab:defined-vars}}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Variable}} &
@@ -34,7 +38,7 @@ inconsistent variable.
 \multicolumn{1}{c}{\textbf{Description}} \\
 \midrule
 \endhead
-\midrule
+%\midrule
 \endfoot
 \bottomrule
 \endlastfoot

diff --git a/pms.cls b/pms.cls
index dcef98c..d1a85fa 100644
--- a/pms.cls
+++ b/pms.cls
@@ -22,8 +22,10 @@
 \PassOptionsToPackage{utf8}{inputenc}
 \PassOptionsToPackage{quiet}{marginnote}
 \PassOptionsToPackage{nohyphen}{underscore}
+\PassOptionsToPackage{hang,flushmargin}{footmisc}
 \PassOptionsToPackage{nottoc,notlot,notlof}{tocbibind}
 \PassOptionsToPackage{hyphens}{url} % url.sty implicitly loaded by hyperref
+\PassOptionsToPackage{hyperfootnotes=false}{hyperref} % footmisc compatibility
 \PassOptionsToPackage{local}{gitinfo2}
 \PassOptionsToPackage{chapter}{algorithm}
 % algorithmic and algorithm to be loaded last to avoid failures
@@ -41,6 +43,7 @@
     marginnote, % Typeset a paragraph in the page margin
     paralist,   % Additional list environments
     underscore, % Allow simple _ instead of \_
+    footmisc,   % Customise footnotes
     chngcntr,   % Redefinition of counters
     tocbibind,  % Add bibliography to table of contents
     float,      % More control over float environments


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2023-06-05 18:45 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2024-06-02  9:57 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     f9adb7bfa495cd46f01bb2c9b72ceea9b603b888
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon May 29 13:12:21 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Jun  4 00:02:27 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f9adb7bf

metadata-cache.tex: Document the md5-dict cache format

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 metadata-cache.tex | 36 ++++++++++++++++++++++++++++++------
 pms.bib            | 11 +++++++++++
 2 files changed, 41 insertions(+), 6 deletions(-)

diff --git a/metadata-cache.tex b/metadata-cache.tex
index d69ecdd..9ff7086 100644
--- a/metadata-cache.tex
+++ b/metadata-cache.tex
@@ -3,16 +3,19 @@
 
 \section{Directory Contents}
 
-The \t{metadata/cache} directory, if it exists, contains directories whose names are the same as
-categories in the repository. Each subdirectory may optionally contain one file per package version
-in that category, named \t{<package>-<version>}, in the format described below.
+The \t{metadata/cache} or \t{metadata/md5-cache} directories, if either of them exists, contain
+directories whose names are the same as categories in the repository. Each subdirectory may
+optionally contain one file per package version in that category, named \t{<package>-<version>},
+in one of the formats described below.
 
 The metadata cache may be incomplete or non-existent, and may contain additional bogus entries.
 
-\section{Cache File Format}
+\section{Legacy Cache File Format}
+\label{sec:legacy-cache}
 
-Each cache file contains the textual values of various metadata keys, one per line, in the following
-order. Other lines may be present following these; their meanings are not defined here.
+The legacy cache file format is used in the \t{metadata/cache} directory. Each cache file contains
+the textual values of various metadata keys, one per line, in the following order. Other lines may
+be present following these; their meanings are not defined here.
 
 \begin{compactenum}
 \item Build-time dependencies (\t{DEPEND})
@@ -47,6 +50,27 @@ Any future EAPI that uses this cache format will continue to place the EAPI valu
 such a concept makes sense for that EAPI, and will place a value that is clearly not a supported
 EAPI on line~15 if it does~not.
 
+\section{md5-dict Cache File Format}
+
+The ``md5-dict'' cache file format is used in the \t{metadata/md5-cache} directory. Each cache file
+contains \t{<key>=<value>} pairs, one per line, in arbitrary order. The keys are the same as those
+listed in section~\ref{sec:legacy-cache} except the \t{INHERITED} key. In addition, keys \t{_md5_}
+and \t{_eclasses_} contain values as defined below.
+
+\begin{description}
+\item[_md5_] The MD5 checksum of the ebuild for the package version.
+
+\item[_eclasses_] A list of \i{name-checksum} pairs for all eclasses directly or indirectly
+inherited by the ebuild, in arbitrary order, where \i{name} is the eclass name and \i{checksum}
+is the MD5 checksum of the eclass. Pairs are separated from each other by single tab characters,
+as are \i{name} and \i{checksum} in each pair.
+\end{description}
+
+All MD5 checksums are computed and formatted as described in RFC~1321~\cite{rfc1321}.
+
+Other keys may be present; their meanings are not defined here. Lines with an empty value can be
+omitted.
+
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
 %%% Local Variables:

diff --git a/pms.bib b/pms.bib
index bef07c1..ac60c44 100644
--- a/pms.bib
+++ b/pms.bib
@@ -52,3 +52,14 @@
     month = Oct,
     url = {https://www.gentoo.org/glep/glep-0074.html}
 }
+
+@techreport{rfc1321,
+    author = {Ronald L. Rivest},
+    title = {The {MD5} message-digest algorithm},
+    type = {RFC},
+    number = 1321,
+    institution = {RFC Editor},
+    year = 1992,
+    month = Apr,
+    url = {https://www.rfc-editor.org/rfc/rfc1321}
+}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2024-06-02  9:57 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     ea32ea927dad915bd50e0dcf976379b8470eb4d7
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Aug  6 09:52:14 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Aug  7 17:08:16 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ea32ea92

ebuild-env-vars.tex: Add footnote about BROOT in pkg_* phases

Restrict the previous change to EAPIs that actually support IDEPEND.

Bug: https://bugs.gentoo.org/911574
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 20aedb4..6046e1f 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -150,7 +150,8 @@ inconsistent variable.
     as supporting \t{ESYSROOT}. \\
 \t{BROOT} &
     \t{src_*}, \t{pkg_setup},\footnotemark[\value{footnote}] \t{pkg_preinst}, \t{pkg_postinst},
-    \t{pkg_prerm}, \t{pkg_postrm} &
+    \t{pkg_prerm}, \t{pkg_postrm}\footnote{Legal in \t{pkg_*inst} and \t{pkg_*rm} only for EAPIs
+    listed in table~\ref{tab:depend-table} as supporting \t{IDEPEND}.} &
     No &
     \featurelabel{broot} The absolute path to the root directory containing build dependencies
     satisfied by \t{BDEPEND} and \t{IDEPEND}, typically executable build tools. This includes any


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2024-06-02  9:57 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     5c394f7d83e432cde0d9ff9d70c2e2eb0c1c2327
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Aug  2 10:18:54 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Aug  6 11:09:41 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=5c394f7d

ebuild-env-vars.tex: BROOT is valid in additional pkg_* phases

By section sec:dependency-classes, dependency class BDEPEND is
satisfied in phase functions src_* and pkg_setup (only if part of
source build); IDEPEND is satisfied in pkg_preinst, pkg_postinst,
pkg_prerm and pkg_postrm.

Update the entry for BROOT accordingly.

Closes: https://bugs.gentoo.org/911574
Reported-by: Mike Gilbert <floppym <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index fc8123b..20aedb4 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -149,7 +149,8 @@ inconsistent variable.
     by table~\ref{tab:depend-prefix}. Only for EAPIs listed in table~\ref{tab:offset-env-vars-table}
     as supporting \t{ESYSROOT}. \\
 \t{BROOT} &
-    \t{src_*}, \t{pkg_setup}\footnotemark[\value{footnote}] &
+    \t{src_*}, \t{pkg_setup},\footnotemark[\value{footnote}] \t{pkg_preinst}, \t{pkg_postinst},
+    \t{pkg_prerm}, \t{pkg_postrm} &
     No &
     \featurelabel{broot} The absolute path to the root directory containing build dependencies
     satisfied by \t{BDEPEND} and \t{IDEPEND}, typically executable build tools. This includes any


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2024-06-02  9:57 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     e1251fe69eac1e01c3915ae289b9ba73e8cc7413
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue May  7 17:28:42 2024 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed May  8 18:11:59 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e1251fe6

Use sentence case throughout

Subsection headings were already changed from title case to sentence
case in commit ca463ce. This left chapter and section headings alone,
which is inconsistent (although it is specified by some style guides
like APA).

This commit changes headings to sentence case throughout, following
most other Gentoo documentation, e.g. wiki and devmanual.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 appendices.tex         |  8 ++++----
 commands.tex           |  6 +++---
 dependencies.tex       |  6 +++---
 desk-reference.tex     |  4 ++--
 eapi-cheatsheet.tex    | 26 +++++++++++++-------------
 eapi-differences.tex   |  4 ++--
 ebuild-env-vars.tex    |  2 +-
 ebuild-environment.tex |  6 +++---
 ebuild-format.tex      |  2 +-
 ebuild-functions.tex   |  6 +++---
 ebuild-vars.tex        | 10 +++++-----
 eclasses.tex           |  4 ++--
 introduction.tex       |  4 ++--
 merge.tex              |  8 ++++----
 metadata-cache.tex     |  8 ++++----
 names.tex              | 10 +++++-----
 pkg-mgr-commands.tex   |  2 +-
 pms.tex                |  2 +-
 profile-variables.tex  |  2 +-
 profiles.tex           |  4 ++--
 tree-layout.tex        | 16 ++++++++--------
 21 files changed, 70 insertions(+), 70 deletions(-)

diff --git a/appendices.tex b/appendices.tex
index daf9b01..8249ab3 100644
--- a/appendices.tex
+++ b/appendices.tex
@@ -5,7 +5,7 @@ The \t{metadata.xml} file is used to contain extra package- or category-level in
 what is stored in ebuild metadata. Its exact format is strictly beyond the scope of this document,
 and is described in GLEP~68~\cite{glep68}.
 
-\chapter{Unspecified Items}
+\chapter{Unspecified items}
 
 The following items are not specified by this document, and must not be relied upon by ebuilds.
 This is, of course, an incomplete list---it covers only the things that the authors know have
@@ -24,9 +24,9 @@ been abused in the past.
 \item The \t{PORTDIR_OVERLAY} variable, and overlay behaviour in general.
 \end{compactitem}
 
-\chapter{Historical Curiosities}
+\chapter{Historical curiosities}
 
-\section{Long-obsolete Features}
+\section{Long-obsolete features}
 
 The items described in this section are included for information only. Unless otherwise noted, they
 were deprecated or abandoned long before EAPI was introduced. Ebuilds must not use these features,
@@ -61,7 +61,7 @@ The \t{use.defaults} file in the profile directory was used to implement `autous
 flags on or off depending upon which packages are installed. It was deprecated long ago and finally
 removed in 2009.
 
-\section{Retroactive Changes}
+\section{Retroactive changes}
 
 In some exceptional cases, changes to the specification have been approved by the Gentoo Council
 without introducing a new EAPI\@. This section lists such retroactive changes.

diff --git a/commands.tex b/commands.tex
index d0ad87d..2c9e594 100644
--- a/commands.tex
+++ b/commands.tex
@@ -1,4 +1,4 @@
-\chapter{Available Commands}
+\chapter{Available commands}
 
 This chapter documents the commands available to an ebuild. Unless otherwise specified, they may be
 aliases, shell functions, or executables in the ebuild's \t{PATH}.
@@ -7,7 +7,7 @@ When an ebuild is being sourced for metadata querying rather than for a build (t
 when none of the \t{src_} or \t{pkg_} functions are to be called), no external command may
 be executed. The package manager may take steps to enforce this.
 
-\section{System Commands}
+\section{System commands}
 
 Any ebuild not listed in the system set for the active profile(s) may assume the presence of every
 command that is always provided by the system set for that profile. However, it must target the
@@ -49,7 +49,7 @@ The following commands must always be available in the ebuild environment:
     \end{tabular}
 \end{centertable}
 
-\section{Commands Provided by Package Dependencies}
+\section{Commands provided by package dependencies}
 
 In some cases a package's build process will require the availability of executables not provided by
 the core system, a common example being autotools. The availability of commands provided by the

diff --git a/dependencies.tex b/dependencies.tex
index 6c09714..47c96c3 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -1,7 +1,7 @@
 \chapter{Dependencies}
 \label{ch:dependencies}
 
-\section{Dependency Classes}
+\section{Dependency classes}
 \label{sec:dependency-classes}
 
 \begin{centertable}{Dependency classes required to be satisfied for a particular phase function}
@@ -111,7 +111,7 @@ interfaces related to the dependency classes.
 In addition, \t{HOMEPAGE}, \t{SRC_URI}, \t{LICENSE}, \t{REQUIRED_USE}, \t{PROPERTIES} and
 \t{RESTRICT} use dependency-style specifications to specify their values.
 
-\section{Dependency Specification Format}
+\section{Dependency specification format}
 \label{sec:dependency-spec}
 
 The following elements are recognised in at least one class of specification. All elements must
@@ -227,7 +227,7 @@ at-most-one-of group for match purposes.
 
 In an at-most-one-of group, at most one immediate child element must be matched.
 
-\section{Package Dependency Specifications}
+\section{Package dependency specifications}
 
 A package dependency can be in one of the following base formats. A package manager must warn or
 error on non-compliant input.

diff --git a/desk-reference.tex b/desk-reference.tex
index 0bcda38..cc60784 100644
--- a/desk-reference.tex
+++ b/desk-reference.tex
@@ -1,12 +1,12 @@
 \ifthenelse{\boolean{TEX4HT-HACKS}}{%
-    \chapter{Desk Reference}
+    \chapter{Desk reference}
     \label{app:cheatsheet}
     \href{eapi-cheatsheet.pdf}{EAPI Cheat Sheet}
 }{%
     % Make sure that the cheat sheet starts on an odd page
     \ifthenelse{\isodd{\thepage}}{}{\null\newpage}%
     \includepdf[pages=-,landscape,turn=false,lastpage=2,%
-        addtotoc={1,chapter,0,Desk Reference,app:cheatsheet}]{eapi-cheatsheet}
+        addtotoc={1,chapter,0,Desk reference,app:cheatsheet}]{eapi-cheatsheet}
 }
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index 8c379bc..fc75aec 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -77,7 +77,7 @@
     % to the original author or the PMS team.
 
     This work is released under the Creative Commons
-    Attribution-ShareAlike 4.0 International Licence.%
+    Attribution-ShareAlike 4.0 International licence.%
     \footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/}}
 \end{abstract}
 
@@ -92,7 +92,7 @@ differences between these previous EAPIs.
 
 % \section{EAPI 1}
 % \label{sec:cs:eapi1}
-% \subsection{Additions/Changes}
+% \subsection{Additions/changes}
 % \label{sec:cs:eapi1-additions}
 % \begin{description}
 %     \item[IUSE defaults] A USE flag can be marked as mandatory (if
@@ -106,7 +106,7 @@ differences between these previous EAPIs.
 
 % \section{EAPI 2 (2008-09-25)}
 % \label{sec:cs:eapi2}
-% \subsection{Additions/Changes}
+% \subsection{Additions/changes}
 % \label{sec:cs:eapi2-additions}
 % \begin{description}
 %     \item[\code{SRC_URI} arrows] Allows redirection of upstream file
@@ -161,7 +161,7 @@ differences between these previous EAPIs.
 
 % \section{EAPI 3 (2010-01-18)}
 % \label{sec:cs:eapi3}
-% \subsection{Additions/Changes}
+% \subsection{Additions/changes}
 % \label{sec:cs:eapi3-additions}
 % \begin{description}
 %     \item[Support for \code{.xz}] Unpack of \code{.xz} and
@@ -173,7 +173,7 @@ differences between these previous EAPIs.
 
 % \section{EAPI 4 (2011-01-17)}
 % \label{sec:cs:eapi4}
-% \subsection{Additions/Changes}
+% \subsection{Additions/changes}
 % \label{sec:cs:eapi4-additions}
 % \begin{description}
 %     \item[\code{pkg_pretend}] Some useful checks (kernel options for
@@ -245,7 +245,7 @@ differences between these previous EAPIs.
 %     the version that is replacing the current one, respectively.
 %     See \featureref{replace-version-vars}.
 % \end{description}
-% \subsection{Removals/Bans}
+% \subsection{Removals/bans}
 % \label{sec:cs:eapi4-removalsbans}
 % \begin{description}
 %     \item[\code{dohard}, \code{dosed}] Both functions are not allowed
@@ -263,7 +263,7 @@ differences between these previous EAPIs.
 
 % \section{EAPI 5 (2012-09-20)}
 % \label{sec:cs:eapi5}
-% \subsection{Additions/Changes}
+% \subsection{Additions/changes}
 % \label{sec:cs:eapi5-additions}
 % \begin{description}
 %     \item[Sub-slots] The \code{SLOT} variable and slot dependencies
@@ -333,7 +333,7 @@ differences between these previous EAPIs.
 
 \section{EAPI 6 (2015-11-13)}
 \label{sec:cs:eapi6}
-\subsection{Additions/Changes}
+\subsection{Additions/changes}
 \label{sec:cs:eapi6-additions}
 \begin{description}
     \item[Bash version] Ebuilds can use features of Bash version 4.2
@@ -399,7 +399,7 @@ differences between these previous EAPIs.
     the \code{lib*} directory basename suitable for the current ABI\@.
     See \featureref{get-libdir}.
 \end{description}
-\subsection{Removals/Bans}
+\subsection{Removals/bans}
 \label{sec:cs:eapi6-removalsbans}
 \begin{description}
     \item[\code{einstall}] No longer allowed. Use \code{emake install}
@@ -409,7 +409,7 @@ differences between these previous EAPIs.
 
 \section{EAPI 7 (2018-04-30)}
 \label{sec:cs:eapi7}
-\subsection{Additions/Changes}
+\subsection{Additions/changes}
 \label{sec:cs:eapi7-additions}
 \begin{description}
     \item[\code{package.*} and \code{use.*}] These profile files can
@@ -501,7 +501,7 @@ differences between these previous EAPIs.
     \end{description}
     See \featureref{ver-commands}.
 \end{description}
-\subsection{Removals/Bans}
+\subsection{Removals/bans}
 \label{sec:cs:eapi7-removalsbans}
 \begin{description}
     \item[\code{package.provided}] Deprecated since a long time and
@@ -524,7 +524,7 @@ differences between these previous EAPIs.
 
 \section{EAPI 8 (2021-06-13)}
 \label{sec:cs:eapi8}
-\subsection{Additions/Changes}
+\subsection{Additions/changes}
 \label{sec:cs:eapi8-additions}
 \begin{description}
     \item[\code{profiles/updates} directory] Arbitrary filenames
@@ -569,7 +569,7 @@ differences between these previous EAPIs.
     outputs \emph{[true]}, or the flag's name if called with only one
     argument. Otherwise outputs nothing. See \featureref{usev}.
 \end{description}
-\subsection{Removals/Bans}
+\subsection{Removals/bans}
 \label{sec:cs:eapi8-removalsbans}
 \begin{description}
     \item[\code{useq}] No longer allowed. Use regular \code{use} as

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 31d5537..7fdc0d4 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,4 +1,4 @@
-\chapter{Feature Availability by EAPI}
+\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 to~4 have been omitted from the table below, as well as items that would
@@ -215,7 +215,7 @@ Controllable stripping & \compactfeatureref{dostrip} &
 
 \end{longtable}
 
-\chapter{Differences Between EAPIs}
+\chapter{Differences between EAPIs}
 
 \note{This chapter is informative and for convenience only. Refer to the main text for specifics.}
 

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 06d37d9..268cb3f 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,4 +1,4 @@
-\section{Defined Variables}
+\section{Defined variables}
 \label{sec:ebuild-env-vars}
 
 The package manager must define the following environment variables. Not all variables are

diff --git a/ebuild-environment.tex b/ebuild-environment.tex
index 8093f1e..06e197d 100644
--- a/ebuild-environment.tex
+++ b/ebuild-environment.tex
@@ -1,8 +1,8 @@
-\chapter{The Ebuild Environment}
+\chapter{The ebuild environment}
 
 \input{ebuild-env-vars.tex}
 
-\section{The State of Variables Between Functions}
+\section{The state of variables between functions}
 \label{sec:ebuild-env-state}
 
 Exported and default scope variables are saved between functions. A non-local variable set in a
@@ -55,7 +55,7 @@ src_install(){
 \end{verbatim}
 \end{listing}
 
-\section{The State of the System Between Functions}
+\section{The state of the system between functions}
 
 For the sake of this section:
 \nobreakpar

diff --git a/ebuild-format.tex b/ebuild-format.tex
index cf06668..d1fbdfe 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -1,4 +1,4 @@
-\chapter{Ebuild File Format}
+\chapter{Ebuild file format}
 \label{ch:ebuild-format}
 
 \featurelabel{bash-version} The ebuild file format is in its basic form a subset of the format of

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 25164d4..84270fa 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -1,7 +1,7 @@
-\chapter{Ebuild-defined Functions}
+\chapter{Ebuild-defined functions}
 \label{ch:ebuild-functions}
 
-\section{List of Functions}
+\section{List of functions}
 
 The following is a list of functions that an ebuild, or eclass, may define, and which will be called
 by the package manager as part of the build and/or install process. In all cases the package manager
@@ -498,7 +498,7 @@ these functions except when in the phase in question.
     \end{tabular}
 \end{centertable}
 
-\section{Call Order}
+\section{Call order}
 
 The call order for installing a package is:
 \nobreakpar

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 79fa96f..7dd008c 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -1,4 +1,4 @@
-\chapter{Ebuild-defined Variables}
+\chapter{Ebuild-defined variables}
 \label{ch:ebuild-vars}
 
 \note{This chapter describes variables that may or must be defined by ebuilds. For variables that
@@ -8,7 +8,7 @@ If any of these variables are set to invalid values, or if any of the mandatory
 undefined, the package manager's behaviour is undefined; ideally, an error in one ebuild should not
 prevent operations upon other ebuilds or packages.
 
-\section{Metadata Invariance}
+\section{Metadata invariance}
 \label{sec:metadata-invariance}
 
 All ebuild-defined variables discussed in this chapter must be defined independently of
@@ -20,7 +20,7 @@ is used.
 Globally defined ebuild variables without a special meaning must similarly not rely upon
 variable data.
 
-\section{Mandatory Ebuild-defined Variables}
+\section{Mandatory ebuild-defined variables}
 \label{sec:mandatory-vars}
 
 All ebuilds must define at least the following variables:
@@ -40,7 +40,7 @@ All ebuilds must define at least the following variables:
     which is equal to the regular slot.
 \end{description}
 
-\section{Optional Ebuild-defined Variables}
+\section{Optional ebuild-defined variables}
 \label{sec:optional-vars}
 
 Ebuilds may define any of the following variables. Unless otherwise stated, any of them may be
@@ -291,7 +291,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
     \end{tabular}
 \end{centertable}
 
-\section{Magic Ebuild-defined Variables}
+\section{Magic ebuild-defined variables}
 
 The following variables must be defined by \t{inherit} (see section~\ref{sec:inherit}), and may be
 considered to be part of the ebuild's metadata:

diff --git a/eclasses.tex b/eclasses.tex
index a4400e1..cfd5cae 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -12,7 +12,7 @@ section~\ref{sec:eclass-dir}. Each eclass is a single file named \t{<name>.eclas
 is the name of this eclass, used by \t{inherit} and \t{EXPORT_FUNCTIONS} among other places.
 \t{<name>} must be a valid eclass name, as per section~\ref{sec:eclass-names}.
 
-\section{The inherit Command}
+\section{The inherit command}
 \label{sec:inherit}
 
 An ebuild wishing to make use of an eclass does so by using the \t{inherit} command in global scope.
@@ -33,7 +33,7 @@ The \t{inherit} command must also ensure that:
     every eclass used, separated by whitespace.
 \end{compactitem}
 
-\section{Eclass-defined Metadata Keys}
+\section{Eclass-defined metadata keys}
 
 \featurelabel{accumulate-vars} The \t{IUSE}, \t{REQUIRED_USE}, \t{DEPEND}, \t{BDEPEND}, \t{RDEPEND},
 \t{PDEPEND} and \t{IDEPEND} variables are handled specially when set by an eclass. They must be

diff --git a/introduction.tex b/introduction.tex
index 86149b2..6bb84cd 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -1,6 +1,6 @@
 \chapter{Introduction}
 
-\section{Aims and Motivation}
+\section{Aims and motivation}
 
 This document aims to fully describe the format of an ebuild repository and the ebuilds therein, as
 well as certain aspects of package manager behaviour required to support such a repository.
@@ -25,7 +25,7 @@ ebuild repository looks like, and how an ebuild is allowed to behave. Thus, both
 package managers can change aspects of their behaviour not defined here without worry of
 incompatibilities with any particular repository.
 
-\section{Reporting Issues}
+\section{Reporting issues}
 
 Issues (inaccuracies, wording problems, omissions etc.)\ in this document should be reported via
 Gentoo Bugzilla using product \i{Gentoo Hosted Projects}, component \i{PMS/EAPI} and the default

diff --git a/merge.tex b/merge.tex
index ca1036d..83eab01 100644
--- a/merge.tex
+++ b/merge.tex
@@ -1,4 +1,4 @@
-\chapter{Merging and Unmerging}
+\chapter{Merging and unmerging}
 
 \note{In this chapter, \i{file} and \i{regular file} have their Unix meanings.}
 
@@ -38,7 +38,7 @@ including modification time, may be discarded.
 Behaviour upon encountering an empty directory is undefined. Ebuilds must not attempt to install an
 empty directory.
 
-\section{Regular Files}
+\section{Regular files}
 
 Regular files are merged onto the filesystem (but see the notes on configuration file protection,
 below). The method used to perform the merge is not specified, so long as the end result is correct.
@@ -141,11 +141,11 @@ Ebuilds must not attempt to merge a symlink on top of a directory.
 Any absolute symlink whose link starts with \t{D} must be rewritten with the leading \t{D} removed.
 The package manager should issue a notice when doing this.
 
-\section{Hard Links}
+\section{Hard links}
 
 A hard link may be merged either as a single file with links or as multiple independent files.
 
-\section{Other Files}
+\section{Other files}
 
 Ebuilds must not attempt to install any other type of file (FIFOs, device nodes etc).
 

diff --git a/metadata-cache.tex b/metadata-cache.tex
index 9ff7086..552566c 100644
--- a/metadata-cache.tex
+++ b/metadata-cache.tex
@@ -1,7 +1,7 @@
-\chapter{Metadata Cache}
+\chapter{Metadata cache}
 \label{ch:metadata-cache}
 
-\section{Directory Contents}
+\section{Directory contents}
 
 The \t{metadata/cache} or \t{metadata/md5-cache} directories, if either of them exists, contain
 directories whose names are the same as categories in the repository. Each subdirectory may
@@ -10,7 +10,7 @@ in one of the formats described below.
 
 The metadata cache may be incomplete or non-existent, and may contain additional bogus entries.
 
-\section{Legacy Cache File Format}
+\section{Legacy cache file format}
 \label{sec:legacy-cache}
 
 The legacy cache file format is used in the \t{metadata/cache} directory. Each cache file contains
@@ -50,7 +50,7 @@ Any future EAPI that uses this cache format will continue to place the EAPI valu
 such a concept makes sense for that EAPI, and will place a value that is clearly not a supported
 EAPI on line~15 if it does~not.
 
-\section{md5-dict Cache File Format}
+\section{md5-dict cache file format}
 
 The ``md5-dict'' cache file format is used in the \t{metadata/md5-cache} directory. Each cache file
 contains \t{<key>=<value>} pairs, one per line, in arbitrary order. The keys are the same as those

diff --git a/names.tex b/names.tex
index ed6d623..45289f7 100644
--- a/names.tex
+++ b/names.tex
@@ -1,6 +1,6 @@
-\chapter{Names and Versions}
+\chapter{Names and versions}
 
-\section{Restrictions upon Names}
+\section{Restrictions upon names}
 
 No name may be empty. Package managers must not impose fixed upper boundaries upon the length of any
 name. A package manager should indicate or reject any name that is invalid according to these rules.
@@ -56,7 +56,7 @@ a tilde or a hyphen. In \t{KEYWORDS}, \t{-*} is also acceptable as a keyword.
 An EAPI name may contain any of the characters [\t{A-Za-z0-9+_.-}]. It must not begin with a
 hyphen, a dot or a plus sign.
 
-\section{Version Specifications}
+\section{Version specifications}
 \label{sec:version-spec}
 The package manager must neither impose fixed limits upon the number of version components, nor
 upon the length of any component. Package managers should indicate or reject any version that is
@@ -74,7 +74,7 @@ count as separate version components.
 This may optionally be followed by the suffix \t{-r} followed immediately by an unsigned integer
 (the ``revision number''). If this suffix is not present, it is assumed to be \t{-r0}.
 
-\section{Version Comparison}
+\section{Version comparison}
 
 Version specifications are compared component by component, moving from left to right,
 as detailed in algorithm~\ref{alg:version-comparison} and sub-algorithms.
@@ -211,7 +211,7 @@ from which it was invoked.
 \end{algorithmic}
 \end{algorithm}
 
-\section{Uniqueness of Versions}
+\section{Uniqueness of versions}
 
 No two packages in a given repository may have the same qualified package name and equal versions.
 For example, a repository may not contain more than one of \t{foo-bar/baz-1.0.2},

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 2202b64..4c84b68 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -1,4 +1,4 @@
-\section{Ebuild-specific Commands}
+\section{Ebuild-specific commands}
 \label{sec:pkg-mgr-commands}
 
 The following commands will always be available in the ebuild environment, provided by the package

diff --git a/pms.tex b/pms.tex
index bd8c9d5..24f07fe 100644
--- a/pms.tex
+++ b/pms.tex
@@ -35,7 +35,7 @@
     by their respective authors, and may have been changed substantially before inclusion.
 
     This work is released under the Creative Commons Attribution-ShareAlike 4.0 International
-    Licence. To~view a copy of this licence, visit
+    licence. To~view a copy of this licence, visit
     \url{https://creativecommons.org/licenses/by-sa/4.0/}.
 
     \commitinfo

diff --git a/profile-variables.tex b/profile-variables.tex
index ba40bf4..9f86e80 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -1,4 +1,4 @@
-\section{Profile Variables}
+\section{Profile variables}
 \label{sec:profile-variables}
 
 This section documents variables that have special meaning, or special behaviour, when defined in a

diff --git a/profiles.tex b/profiles.tex
index 856643b..af88568 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -1,7 +1,7 @@
 \chapter{Profiles}
 \label{ch:profiles}
 
-\section{General Principles}
+\section{General principles}
 Generally, a profile defines information specific to a certain `type' of system---it lies somewhere
 between repository-level defaults and user configuration in that the information it contains is not
 necessarily applicable to all machines, but is sufficiently general that it should not be left to
@@ -13,7 +13,7 @@ the files described in this chapter, and possibly inheriting another profile. Th
 follow a few basic conventions as regards inheritance and format; these are described in the next
 section. It may also contain any number of subdirectories containing other profiles.
 
-\section{Files That Make up a Profile}
+\section{Files that make up a profile}
 
 \subsection{The parent file}
 A profile may contain a \t{parent} file. Each line must contain a relative path to another profile

diff --git a/tree-layout.tex b/tree-layout.tex
index d286307..19aed03 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -1,11 +1,11 @@
-\chapter{Tree Layout}
+\chapter{Tree layout}
 
 This chapter defines the layout on-disk of an ebuild repository. In all cases below where a file or
 directory is specified, a symlink to a file or directory is also valid. In this case, the package
 manager must follow the operating system's semantics for symbolic links and must not behave
 differently from normal.
 
-\section{Top Level}
+\section{Top level}
 
 An ebuild repository shall occupy one directory on disk, with the following subdirectories:
 \nobreakpar
@@ -22,7 +22,7 @@ An ebuild repository shall occupy one directory on disk, with the following subd
 
 \end{compactitem}
 
-\section{Category Directories}
+\section{Category directories}
 \label{sec:category-dirs}
 
 Each category provided by the repository (see also: the \t{profiles/categories} file,
@@ -44,7 +44,7 @@ It is not required that a directory exists for each category provided by the rep
 directory that does not exist shall be considered equivalent to an empty category (and by extension,
 a package manager may treat an empty category as a category that does not exist).
 
-\section{Package Directories}
+\section{Package directories}
 \label{sec:package-dirs}
 
 A package directory contains the following:
@@ -71,7 +71,7 @@ with no versions).
 A package directory may contain other files or directories, whose purpose is not covered by
 this specification.
 
-\section{The Profiles Directory}
+\section{The profiles directory}
 \label{sec:profiles-dir}
 
 The profiles directory shall contain zero or more profile directories as described in
@@ -247,7 +247,7 @@ by packages matching the spec of that slot move.
     \end{tabular}
 \end{centertable}
 
-\section{The Licenses Directory}
+\section{The licenses directory}
 \label{sec:licenses-dir}
 
 The \t{licenses} directory shall contain copies of the licenses used by packages in the
@@ -255,14 +255,14 @@ repository. Each file will be named according to the name used in the \t{LICENSE
 described in section~\ref{sec:optional-vars}, and will contain the complete text of the license in
 human-readable form. Plain text format is strongly preferred but not required.
 
-\section{The Eclass Directory}
+\section{The eclass directory}
 \label{sec:eclass-dir}
 
 The \t{eclass} directory shall contain copies of the eclasses provided by this repository. The
 format of these files is described in chapter~\ref{ch:eclasses}. It may also contain, in their own
 directory, support files needed by these eclasses.
 
-\section{The Metadata Directory}
+\section{The metadata directory}
 \label{sec:metadata-dir}
 
 The \t{metadata} directory contains various repository-level metadata that are not contained in


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2024-06-02  9:57 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     aecb51e70f8546fd7f55144f9035ca982ab6fae1
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 24 13:05:52 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Dec 24 13:05:52 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=aecb51e7

pkg-mgr-commands.tex: Sandbox commands accept any file

The sandbox commands addread, addwrite, addpredict and adddeny can
accept not only directories, but also other files like regular files
or device nodes.

This behaviour is supported by all three package managers. Also, the
sandbox's default configuration relies on it (e.g. "/dev/null" and
"${HOME}/.bash_history" in /etc/sandbox.conf), and it is widely used
in the Gentoo repository.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index b6113f6..2202b64 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -89,14 +89,14 @@ called, the package manager must abort the build process indicating an error.
 \end{centertable}
 
 \subsection{Sandbox commands}
-These commands affect the behaviour of the sandbox. Each command takes a single directory as
-argument. Ebuilds must not run any of these commands once the current phase function has returned.
+These commands affect the behaviour of the sandbox. Each command takes a single path as argument.
+Ebuilds must not run any of these commands once the current phase function has returned.
 \begin{description}
-\item[addread] Add a directory to the permitted read list.
-\item[addwrite] Add a directory to the permitted write list.
-\item[addpredict] Add a directory to the predict list. Any write to a location in this list will be
+\item[addread] Add a path to the permitted read list.
+\item[addwrite] Add a path to the permitted write list.
+\item[addpredict] Add a path to the predict list. Any write to a location in this list will be
     denied, but will not trigger access violation messages or abort the build process.
-\item[adddeny] Add a directory to the deny list.
+\item[adddeny] Add a path to the deny list.
 \end{description}
 
 \subsection{Package manager query commands}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2024-02-08  9:43 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2024-06-02  9:57 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     7674760dc5ac6d2a1800203f8b257665bc12b9db
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 27 09:04:35 2024 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Jan 27 09:04:35 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=7674760d

pms.tex: Update copyright years

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/pms.tex b/pms.tex
index f435f51..bd8c9d5 100644
--- a/pms.tex
+++ b/pms.tex
@@ -31,7 +31,7 @@
 \vspace*{\fill}
 {%
     \small
-    \textcopyright{} 2007--2023 Stephen Bennett, Ciaran McCreesh and others. Contributions are owned
+    \textcopyright{} 2007--2024 Stephen Bennett, Ciaran McCreesh and others. Contributions are owned
     by their respective authors, and may have been changed substantially before inclusion.
 
     This work is released under the Creative Commons Attribution-ShareAlike 4.0 International


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2024-06-02  9:57 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     47772dd3b715953dda0e663c62d31814043f9df6
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 27 09:04:54 2024 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Jan 27 13:03:44 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=47772dd3

tree-layout.tex: Loosen restrictions on reusing package and slot names

Closes: https://bugs.gentoo.org/923019
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 tree-layout.tex | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tree-layout.tex b/tree-layout.tex
index 99fc46a..61f70a2 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -229,9 +229,9 @@ to \t{slot2}.
 It is unspecified in what order the files in the \t{updates} directory are processed. Lines within
 each file are processed in ascending order.
 
-Any name that has appeared as the origin of a move must not be reused in the future. Any slot
-that has appeared as the origin of a slot move may not be used by packages matching the spec of
-that slot move in the future.
+At any given time, a name that appears as the origin of a move may not be used as a qualified
+package name in the repository. A slot that appears as the origin of a slot move may not be used
+by packages matching the spec of that slot move.
 
 \ChangeWhenAddingAnEAPI{8}
 \begin{centertable}{Naming rules for files in \t{updates} directory for EAPIs}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2024-06-02  9:57 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     bd3a35db46006e2c45fee66e7759cfc327ebf187
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun May 12 18:15:24 2024 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon May 13 17:44:13 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=bd3a35db

pms.cls, eapi-cheatsheet.tex: Avoid conditional code in \date

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-cheatsheet.tex |  9 ++++-----
 pms.cls             | 13 ++++++-------
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/eapi-cheatsheet.tex b/eapi-cheatsheet.tex
index fc75aec..2e2b757 100644
--- a/eapi-cheatsheet.tex
+++ b/eapi-cheatsheet.tex
@@ -33,11 +33,10 @@
     Ulrich Müller \\
     \href{mailto:ulm@gentoo.org}{ulm@gentoo.org}
 }
-\date{%
-    Version \version \\
-    \ifthenelse{\equal{\gitCommitterDate}{(None)}}
-    {Generated on: \today}
-    {\printdate{\gitCommitterDate}}%
+\ifthenelse{\equal{\gitCommitterDate}{(None)}}{%
+    \date{Version \version \\ Generated on: \today}
+}{%
+    \date{Version \version \\ \printdate{\gitCommitterDate}}
 }
 \CutLine*{1}
 \CutLine*{3}

diff --git a/pms.cls b/pms.cls
index d1a85fa..d9907b7 100644
--- a/pms.cls
+++ b/pms.cls
@@ -175,13 +175,12 @@
 
 % Reads the last commit date from the Git repository and even succeeds
 % when none is available
-\date{%
-    \ifthenelse{\equal{\gitCommitterDate}{(None)}}
-    {Generated on: \today}
-    {\printdate{\gitCommitterDate}}%
-}
-\newcommand{\commitinfo}{%
-    \ifthenelse{\equal{\gitCommitterDate}{(None)}}{}{%
+\ifthenelse{\equal{\gitCommitterDate}{(None)}}{%
+    \date{Generated on: \today}
+    \newcommand{\commitinfo}{}
+}{%
+    \date{\printdate{\gitCommitterDate}}
+    \newcommand{\commitinfo}{%
         This version corresponds to commit \gitAbbrevHash
         \ifthenelse{\equal{\gitBranch}{\detokenize{master}}}{}
         { on branch \gitBranch}%


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2024-04-05 14:07 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2024-06-02  9:57 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     e044fe24e90de258483a59130c1b56de21082bc6
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Apr  2 16:53:19 2024 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Apr  2 16:53:19 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=e044fe24

ebuild-env-vars.tex: Be more specific about REPLACING_VERSIONS phases

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0dcfd24..06d37d9 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -255,12 +255,13 @@ inconsistent variable.
     package, and \t{buildonly} if building a binary package without installing it. Only for EAPIs
     listed in table~\ref{tab:added-env-vars-table} as supporting \t{MERGE_TYPE}. \\
 \t{REPLACING_VERSIONS} &
-    \t{pkg_*} (see text) &
+    \t{pkg_preinst}, \t{pkg_postinst} (\t{pkg_pretend}, \t{pkg_setup}) &
     Yes &
     A list of all versions of this package (including revision, if specified), whitespace separated
     with no leading or trailing whitespace, that are being replaced (uninstalled or overwritten)
-    as a result of this install. See section~\ref{sec:replacing-versions}. Only for EAPIs listed
-    in table~\ref{tab:added-env-vars-table} as supporting \t{REPLACING_VERSIONS}. \\
+    as a result of this install. See section~\ref{sec:replacing-versions}, especially for the phases
+    in which the variable is legal. Only for EAPIs listed in table~\ref{tab:added-env-vars-table}
+    as supporting \t{REPLACING_VERSIONS}. \\
 \t{REPLACED_BY_VERSION} &
     \t{pkg_prerm}, \t{pkg_postrm} &
     Yes &


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2024-03-03 17:30 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2024-06-02  9:57 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     1a669f3ce2ac6b6cf4c96be16dfea0b5621a938d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 21 15:45:01 2024 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Mar  3 17:29:40 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=1a669f3c

ebuild-vars.tex: Add "test_privileged" to valid "PROPERTIES"

Add "test_privileged" to the values of "PROPERTIES", as introduced
in Portage commit 997058a825a340813532bef77a34425cf4a88eb2 (to be
included in 3.0.62).  This is akin to "test_network", used to indicate
that the test suite needs superuser privileges.

Bug: https://bugs.gentoo.org/924585
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 5f3f583..79fa96f 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -239,6 +239,8 @@ The following tokens are permitted inside \t{PROPERTIES}:
     installed.
 \item[test_network] The package manager may run tests that require an internet connection, even if
     the ebuild has \t{RESTRICT=test}.
+\item[test_privileged] The package manager may run tests that require superuser privileges, even
+    if the ebuild has \t{RESTRICT=test}.
 \end{description}
 
 Package managers may recognise other tokens. Ebuilds may not rely upon any token being supported.


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2024-01-01 14:34 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2024-06-02  9:57 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     658ead31edffc3bf431c5840830a357e3fe555da
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 29 11:54:18 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Dec 29 12:20:21 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=658ead31

ebuild-env-vars.tex: Clarify that D is not valid in pkg_postinst

D in pkg_* phases was first mentioned in SVN r74 (commit f627e46102c6)
as a variable specific to the pkg_preinst phase function (replacing
IMAGE). pkg_postinst was added in r88 (commit 3da3ee561f1a), but this
was reverted in r89 (commit 65c466317718) "D in pkg_postinst == bad".

pkg_postinst reappeared when the env vars section was converted to
a table in commit 58d3bc0e8301.

According to chapter 13 "Merging and Unmerging", the method used to
perform the merge is not specified, and merging a regular file or
a directory may alter or remove its source under D. Therefore, trying
to access any file in D during the postinst phase is an error.

The scope of ED follows that of D.

Closes: https://bugs.gentoo.org/920889
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 5fe72dc..aae5413 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -192,14 +192,13 @@ inconsistent variable.
     The presence of a trailing slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}.
     \\
 \t{D} (continued) &
-    \t{pkg_preinst}, \t{pkg_postinst} &
-    Yes\footnote{Consistent across \t{pkg_preinst} and \t{pkg_postinst}, but may not necessarily
-    have the same value that it had in the \t{src_*} phases.} &
-    Contains the full path to the image that is about to be or has just been merged.
+    \t{pkg_preinst} &
+    No\footnote{May not necessarily have the same value that it had in the \t{src_*} phases.} &
+    Contains the full path to the image directory of the package about to be merged.
     The presence of a trailing slash is EAPI dependent as listed in table~\ref{tab:trailing-slash}.
     \\
 \t{ED} &
-    \t{src_*}, \t{pkg_preinst}, \t{pkg_postinst} &
+    \t{src_*}, \t{pkg_preinst} &
     See \t{D} &
     Contains the concatenation of the paths in the \t{D} and \t{EPREFIX} variables,
     for convenience. See also the \t{EPREFIX} variable. Only for EAPIs listed in


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2023-08-09 17:24 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2024-06-02  9:57 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     f336f16ab8ab80d77cfb626eb2935eacda8bb596
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Aug  3 16:22:33 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Aug  7 17:08:16 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=f336f16a

ebuild-env-vars.tex: Variables may not be meaningful in global scope

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 6046e1f..5fe72dc 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -2,8 +2,9 @@
 \label{sec:ebuild-env-vars}
 
 The package manager must define the following environment variables. Not all variables are
-meaningful in all phases; variables that are not meaningful in a given phase may be unset or set to
-any value. Ebuilds must not attempt to modify any of these variables, unless otherwise specified.
+universally meaningful; variables that are not meaningful in a given phase or in global scope may
+be unset or set to any value. Ebuilds must not attempt to modify any of these variables, unless
+otherwise specified.
 
 Because of their special meanings, these variables may not be preserved consistently across all
 phases as would normally happen due to environment saving (see section~\ref{sec:ebuild-env-state}).


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2024-03-03 17:30 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2024-06-02  9:57 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     4d3c1a3d1275a76f41c0c7c50ec11d1f8954e2fb
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Feb 22 17:12:22 2024 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Feb 22 17:12:22 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=4d3c1a3d

tree-layout.tex: Plural use of "data" is preferred in BE

https://digitalblog.ons.gov.uk/2016/12/08/data-is-versus-data-are/

This also fixes an "underfull \hbox" error.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/tree-layout.tex b/tree-layout.tex
index 61f70a2..d286307 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -265,7 +265,7 @@ directory, support files needed by these eclasses.
 \section{The Metadata Directory}
 \label{sec:metadata-dir}
 
-The \t{metadata} directory contains various repository-level metadata that is not contained in
+The \t{metadata} directory contains various repository-level metadata that are not contained in
 \t{profiles/}. All contents are optional. In this standard only the \t{cache} subdirectory is
 described; other contents are optional but may include security advisories, DTD files for the
 various XML files used in the repository, and repository timestamps.


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2024-03-03 17:30 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2024-06-02  9:57 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     ef9be7c2a696a476514de29e2f88df82f37f2ceb
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Feb 22 17:19:40 2024 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Feb 22 17:19:40 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ef9be7c2

ebuild-env-vars.tex: EBUILD_PHASE{,_FUNC} are valid only in phases

Portage didn't ever set (or unset) these variables to a special value
when sourcing the ebuild, so obviously ebuilds cannot rely on this.
Restrict their validity to actual phases and make global scope
behaviour unspecified.

The previous wording was introduced with commit 58d3bc0.

Bug: https://bugs.gentoo.org/908552
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index aae5413..0dcfd24 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -224,23 +224,23 @@ inconsistent variable.
     A whitespace-delimited list of all active USE flags for this ebuild. See
     section~\ref{sec:use-iuse-handling} for details. \\
 \t{EBUILD_PHASE} &
-    All &
+    \t{src_*}, \t{pkg_*} &
     No &
     Takes one of the values \t{config}, \t{setup}, \t{nofetch}, \t{unpack}, \t{prepare},
     \t{configure}, \t{compile}, \t{test}, \t{install}, \t{preinst}, \t{postinst}, \t{prerm},
     \t{postrm}, \t{info}, \t{pretend} according to the top level ebuild function that was executed
-    by the package manager. May be unset or any single word that is not any of the above when the
-    ebuild is being sourced for other (e.\,g.\ metadata or QA) purposes. \\
+    by the package manager. Behaviour is unspecified when the ebuild is being sourced for other
+    (e.\,g.\ metadata or QA) purposes. \\
 \t{EBUILD_PHASE_FUNC} &
-    All &
+    \t{src_*}, \t{pkg_*} &
     No &
     \featurelabel{ebuild-phase-func} Takes one of the values \t{pkg_config}, \t{pkg_setup},
     \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure}, \t{src_compile},
     \t{src_test}, \t{src_install}, \t{pkg_preinst}, \t{pkg_postinst}, \t{pkg_prerm},
     \t{pkg_postrm}, \t{pkg_info}, \t{pkg_pretend} according to the top level ebuild function that
-    was executed by the package manager. May be unset or any single word that is not any of the
-    above when the ebuild is being sourced for other (e.\,g.\ metadata or QA) purposes. Only for
-    EAPIs listed in table~\ref{tab:added-env-vars-table} as supporting \t{EBUILD_PHASE_FUNC}. \\
+    was executed by the package manager. Behaviour is unspecified when the ebuild is being sourced
+    for other (e.\,g.\ metadata or QA) purposes. Only for EAPIs listed in
+    table~\ref{tab:added-env-vars-table} as supporting \t{EBUILD_PHASE_FUNC}. \\
 \t{KV} &
     All &
     Yes &


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2024-06-02  9:55 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2024-06-02  9:57 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     8f72b3b4a4c45c59e3d1ea7a1fff225cb827f344
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun May 12 18:23:38 2024 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue May 28 18:03:50 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=8f72b3b4

pms.cls: Slightly decrease textheight

Also make it a multiple of 12pt (= \baselineskip).

Automatically calculate the width of the last column in the big
variables table.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 ebuild-env-vars.tex | 7 ++++---
 pms.cls             | 3 ++-
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 268cb3f..ecc20b6 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -21,9 +21,10 @@ inconsistent variable.
 \reversemarginpar
 % Workaround for broken marginnote positioning in lscape environment
 \addtolength{\marginparsep}{-\textwidth} % FIXME
-\setlength{\LTleft}{0pt plus 1fil}
-\setlength{\LTright}{0pt plus 1fil}
-\begin{longtable}{!{\extracolsep{\fill}} l P{7.5em} l p{35em}}
+\newlength{\mycolwidth}
+\setlength{\mycolwidth}{\linewidth-8\tabcolsep
+    -\widthof{\t{REPLACED_BY_VERSION}}-7em-\widthof{\textbf{Consistent?}}}
+\begin{longtable}{l P{7em} l p{\mycolwidth}}
 \caption{Defined variables\label{tab:defined-vars}}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Variable}} &

diff --git a/pms.cls b/pms.cls
index a3e3ea5..c8c6101 100644
--- a/pms.cls
+++ b/pms.cls
@@ -15,7 +15,7 @@
 \PassOptionsToPackage{orig,english}{isodate}
 % Dimensions of the text area. Define a narrow left margin to make
 % room for margin notes in the right (outer) margin
-\PassOptionsToPackage{textwidth=400pt,textheight=700pt,
+\PassOptionsToPackage{textwidth=400pt,textheight=684pt,
     left=20mm,marginparsep=10pt,marginparwidth=40mm,
     vmarginratio=1:2,includehead}{geometry}
 % Enable UTF-8 input encoding
@@ -36,6 +36,7 @@
     inputenc,   % Allow input methods apart from ASCII
     booktabs,   % Nicer formatting of tables
     ifthen,     % Comfortable conditional routines
+    calc,       % Infix notation arithmetic
     longtable,  % Extend tables over more than one page
     array,      % Extended tabular environments
     lscape,     % Rotating pages


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2024-06-02  9:57 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     76b3958184fc93fec5ac15c67288de21475ff592
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 21 18:32:43 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Jun  2 09:56:51 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=76b39581

EAPI 9 profile EAPI defaults to top-level

Bug: https://bugs.gentoo.org/806181
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 ++++-
 profiles.tex         | 23 +++++++++++++++++++++--
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 9617dc4..f6aafe7 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -32,6 +32,9 @@ have identical entries for all listed EAPIs.}
 Less strict \t{updates} syntax & \compactfeatureref{updates-filenames} &
     No & No & Yes & Yes \\
 
+Default EAPI for profiles & \compactfeatureref{profile-eapi-default} &
+    0 & 0 & 0 & Top-level \\
+
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
     No & Yes & Yes & Yes \\
 
@@ -352,7 +355,7 @@ EAPI 8 is EAPI 7 with the following changes:
 EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
-\item None
+\item Different default EAPI for profiles, \featureref{profile-eapi-default}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/profiles.tex b/profiles.tex
index c836f08..9d00c14 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -33,8 +33,27 @@ are discarded.
 A profile directory may contain an \t{eapi} file. This file, if it exists, must contain a single
 line with the name of an EAPI\@. This specifies the EAPI to use when handling the directory in
 question; a package manager must not attempt to use any profile using a directory which requires an
-EAPI it does not support. If no \t{eapi} file is present, EAPI 0 shall be used. The EAPI is neither
-inherited via the \t{parent} file nor in subdirectories.
+EAPI it does not support.
+
+\featurelabel{profile-eapi-default} If no \t{eapi} file is present, the default depends on the EAPI
+of the top-level profiles directory (see section~\ref{sec:profiles-dir}). That EAPI shall be used
+if table~\ref{tab:profile-eapi-default} lists it as ``top-level''. Otherwise, EAPI 0 shall be used.
+
+The EAPI is neither inherited via the \t{parent} file nor in subdirectories.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Default EAPI for profiles}
+    \label{tab:profile-eapi-default}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Default EAPI?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & 0         \\
+      9                         & Top-level \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \subsection{deprecated}
 If a profile contains a file named \t{deprecated}, it is treated as such. The first line of this


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2024-06-02  9:57 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     d773b8caeb11cfc3d37b0463eeed4a8a18ffb8d7
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  3 16:32:47 2021 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun Jun  2 09:56:50 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=d773b8ca

Add an EAPI 9 identical to EAPI 8

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 commands.tex          |   4 +-
 dependencies.tex      |  26 ++++-----
 eapi-differences.tex  | 153 +++++++++++++++++++-------------------------------
 eapis.tex             |   4 +-
 ebuild-env-vars.tex   |  26 ++++-----
 ebuild-format.tex     |   4 +-
 ebuild-functions.tex  |  46 +++++++--------
 ebuild-vars.tex       |  22 ++++----
 eclasses.tex          |   4 +-
 merge.tex             |   6 +-
 pkg-mgr-commands.tex  | 100 ++++++++++++++++-----------------
 pms.tex               |   4 +-
 profile-variables.tex |   8 +--
 profiles.tex          |  12 ++--
 tree-layout.tex       |   8 +--
 15 files changed, 195 insertions(+), 232 deletions(-)

diff --git a/commands.tex b/commands.tex
index 2c9e594..81fd204 100644
--- a/commands.tex
+++ b/commands.tex
@@ -33,7 +33,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{System commands for EAPIs}
     \label{tab:system-commands-table}
     \begin{tabular}{lll}
@@ -44,7 +44,7 @@ The following commands must always be available in the ebuild environment:
       \midrule
       0, 1, 2, 3, 4     & Undefined & Any \\
       5, 6              & Yes       & Any \\
-      7, 8              & Yes       & 2.7 \\
+      7, 8, 9           & Yes       & 2.7 \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/dependencies.tex b/dependencies.tex
index 47c96c3..24628ef 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -88,7 +88,7 @@ with the native build system (\t{CBUILD}). Ebuilds are allowed to call them in \
 \t{pkg_postinst}. Ebuilds may also call them in \t{pkg_prerm} and \t{pkg_postrm} but must not rely
 on them being available.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting additional dependency types}
     \label{tab:depend-table}
     \begin{tabular}{lll}
@@ -99,7 +99,7 @@ on them being available.
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  \\
       7                   & Yes & No  \\
-      8                   & Yes & Yes \\
+      8, 9                & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -155,7 +155,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{REQUIRED_USE ??}\ groups}
     \label{tab:at-most-one-of-table}
     \begin{tabular}{ll}
@@ -164,7 +164,7 @@ In particular, note that whitespace is not optional.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE ??}\ groups?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -204,7 +204,7 @@ In an exactly-one-of group, exactly one immediate child element must be matched.
 In EAPIs specified in table~\ref{tab:empty-dep-groups}, an empty exactly-one-of group counts as
 being matched.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Matching of empty dependency groups in EAPIs}
     \label{tab:empty-dep-groups}
     \begin{tabular}{ll}
@@ -214,7 +214,7 @@ being matched.
         are matched?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes \\
-      7, 8                & No  \\
+      7, 8, 9             & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -250,7 +250,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Support for \t{SLOT} dependencies and sub-slots in EAPIs}
     \label{tab:slot-deps-table}
     \begin{tabular}{lll}
@@ -261,12 +261,12 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0                 & No                 & No  \\
       1, 2, 3, 4        & Named only         & No  \\
-      5, 6, 7, 8        & Named and operator & Yes \\
+      5, 6, 7, 8, 9     & Named and operator & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{USE} dependencies}
     \label{tab:use-deps-table}
     \begin{tabular}{ll}
@@ -276,7 +276,7 @@ manager must warn or error if this feature is used with an EAPI not supporting u
       \midrule
       0, 1              & No      \\
       2, 3              & 2-style \\
-      4, 5, 6, 7, 8     & 4-style \\
+      4, 5, 6, 7, 8, 9  & 4-style \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -310,7 +310,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Exclamation mark strengths for EAPIs}
     \label{tab:bang-strength-table}
     \begin{tabular}{lll}
@@ -319,8 +319,8 @@ described in table~\ref{tab:bang-strength-table}.
       \multicolumn{1}{c}{\textbf{\t{!}}} &
       \multicolumn{1}{c}{\textbf{\t{!!}}} \\
       \midrule
-      0, 1                & Unspecified & Forbidden \\
-      2, 3, 4, 5, 6, 7, 8 & Weak        & Strong    \\
+      0, 1                   & Unspecified & Forbidden \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Weak        & Strong    \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 7fdc0d4..9617dc4 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -1,24 +1,24 @@
 \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 to~4 have been omitted from the table below, as well as items that would
+For lack of space, EAPIs 0 to~5 have been omitted from the table below, as well as items that would
 have identical entries for all listed EAPIs.}
 
-\ChangeWhenAddingAnEAPI{8}
-\begin{longtable}{@{}llllll@{}} % @{} to avoid overfull box
+\ChangeWhenAddingAnEAPI{9}
+\begin{longtable}{llllll}
 \caption{Features in EAPIs}\\
 \toprule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Ref.}} &
 \multicolumn{4}{c}{\textbf{EAPIs}} \\
-& & 5 & 6 & 7 & 8 \\
+& & 6 & 7 & 8 & 9 \\
 \midrule
 \endfirsthead
 \midrule
 \multicolumn{1}{c}{\textbf{Feature}} &
 \multicolumn{1}{c}{\textbf{Ref.}} &
 \multicolumn{4}{c}{\textbf{EAPIs}} \\
-& & 5 & 6 & 7 & 8 \\
+& & 6 & 7 & 8 & 9 \\
 \midrule
 \endhead
 \midrule
@@ -27,191 +27,146 @@ have identical entries for all listed EAPIs.}
 \endlastfoot
 
 \t{package.mask} directory & \compactfeatureref{package-mask-dir} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Less strict \t{updates} syntax & \compactfeatureref{updates-filenames} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Profile files as directories & \compactfeatureref{profile-file-dirs} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{package.provided} & \compactfeatureref{package-provided} &
-    Optional & Optional & No & No \\
+    Optional & No & No & No \\
 
 Bash version & \compactfeatureref{bash-version} &
-    3.2 & 4.2 & 4.2 & 5.0 \\
-
-\t{failglob} in global scope & \compactfeatureref{failglob} &
-    No & Yes & Yes & Yes \\
+    4.2 & 4.2 & 5.0 & 5.0 \\
 
 Selective URI restrictions & \compactfeatureref{uri-restrict} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{BDEPEND} & \compactfeatureref{bdepend} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{IDEPEND} & \compactfeatureref{idepend} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Empty \t{||}, \t{\textasciicircum\textasciicircum} groups match &
     \compactfeatureref{empty-dep-groups} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 Working dir in \t{pkg_*} phases & \compactfeatureref{phase-function-dir} &
-    Any & Any & Any & Empty \\
+    Any & Any & Empty & Empty \\
 
 \t{src_prepare} style & \compactfeatureref{src-prepare} &
-    no-op & 6 & 6 & 8 \\
-
-\t{src_install} style & \compactfeatureref{src-install} &
-    4 & 6 & 6 & 6 \\
+    6 & 6 & 8 & 8 \\
 
 Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{PORTDIR} & \compactfeatureref{portdir} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{ECLASSDIR} & \compactfeatureref{eclassdir} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{SYSROOT}, \t{ESYSROOT} & \compactfeatureref{sysroot} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{BROOT} & \compactfeatureref{broot} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{DESTTREE} & \compactfeatureref{desttree} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{INSDESTTREE} & \compactfeatureref{insdesttree} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{ENV_UNSET} & \compactfeatureref{env-unset} &
-    No & No & Yes & Yes \\
-
-Sane locale settings & \compactfeatureref{locale-settings} &
-    Undefined & Yes & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 Trailing slash in \t{D} etc. & \compactfeatureref{trailing-slash} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 GNU \t{patch} version & \compactfeatureref{gnu-patch} &
-    Any & Any & 2.7 & 2.7 \\
+    Any & 2.7 & 2.7 & 2.7 \\
 
 \t{nonfatal} function / external & \compactfeatureref{nonfatal} &
-    No & No & Yes & Yes \\
-
-\t{einstall} & \compactfeatureref{banned-commands} &
-    Yes & Banned & Banned & Banned \\
+    No & Yes & Yes & Yes \\
 
 \t{dohtml} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{dolib} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{libopts} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Banned & Banned \\
+    Yes & Banned & Banned & Banned \\
 
 \t{useq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{hasv} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 \t{hasq} & \compactfeatureref{banned-commands} &
-    Yes & Yes & Yes & Banned \\
+    Yes & Yes & Banned & Banned \\
 
 Query command options & \compactfeatureref{pm-query-options} &
-    \t{-{}-host-root} & \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
+    \t{-{}-host-root} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} & \t{-b}, \t{-d}, \t{-r} \\
 
 Output commands use stdout & \compactfeatureref{output-no-stdout} &
-    Yes & Yes & No & No \\
+    Yes & No & No & No \\
 
 \t{eqawarn} & \compactfeatureref{eqawarn} &
-    No & No & Yes & Yes \\
-
-\t{die -n} & \compactfeatureref{nonfatal-die} &
     No & Yes & Yes & Yes \\
 
 \t{die} in subshell & \compactfeatureref{subshell-die} &
-    No & No & Yes & Yes \\
-
-\t{eapply} & \compactfeatureref{eapply} &
-    No & Yes & Yes & Yes \\
-
-\t{eapply_user} & \compactfeatureref{eapply-user} &
     No & Yes & Yes & Yes \\
 
 \t{econf -{}-datarootdir} & \compactfeatureref{econf-options} &
-    No & No & No & Yes \\
-
-\t{econf -{}-docdir} & \compactfeatureref{econf-options} &
-    No & Yes & Yes & Yes \\
-
-\t{econf -{}-htmldir} & \compactfeatureref{econf-options} &
-    No & Yes & Yes & Yes \\
+    No & No & Yes & Yes \\
 
 \t{econf -{}-with-sysroot} & \compactfeatureref{econf-options} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{econf -{}-disable-static} & \compactfeatureref{econf-options} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{domo} destination path & \compactfeatureref{domo-path} &
-    \t{\$\{DESTTREE\}} & \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} \\
+    \t{\$\{DESTTREE\}} & \t{/usr} & \t{/usr} & \t{/usr} \\
 
 \t{dosym -r} & \compactfeatureref{dosym-relative} &
-    No & No & No & Yes \\
+    No & No & Yes & Yes \\
 
 \t{insopts} affects misc.\ cmds & \compactfeatureref{insopts} &
-    Yes & Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{exeopts} affects \t{doinitd} & \compactfeatureref{exeopts} &
-    Yes & Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 Controllable stripping & \compactfeatureref{dostrip} &
-    No & No & Yes & Yes \\
+    No & Yes & Yes & Yes \\
 
 \t{dostrip} & \compactfeatureref{dostrip} &
-    No & No & Yes & Yes \\
-
-\t{usev} second arg & \compactfeatureref{usev} &
-    No & No & No & Yes \\
-
-\t{in_iuse} & \compactfeatureref{in-iuse} &
     No & Yes & Yes & Yes \\
 
-\t{ver_*} commands & \compactfeatureref{ver-commands} &
+\t{usev} second arg & \compactfeatureref{usev} &
     No & No & Yes & Yes \\
 
-\t{unpack} absolute paths & \compactfeatureref{unpack-absolute} &
-    No & Yes & Yes & Yes \\
-
-\t{unpack} support for \t{txz} & \compactfeatureref{unpack-extensions} &
+\t{ver_*} commands & \compactfeatureref{ver-commands} &
     No & Yes & Yes & Yes \\
 
 \t{unpack} support for \t{7z} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{unpack} support for \t{lha} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & No \\
+    Yes & Yes & No & No \\
 
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
-    Yes & Yes & Yes & No \\
-
-\t{unpack} case-insensitive & \compactfeatureref{unpack-ignore-case} &
-    No & Yes & Yes & Yes \\
-
-\t{einstalldocs} & \compactfeatureref{einstalldocs} &
-    No & Yes & Yes & Yes \\
-
-\t{get_libdir} & \compactfeatureref{get-libdir} &
-    No & Yes & Yes & Yes \\
+    Yes & Yes & No & No \\
 
 \end{longtable}
 
@@ -392,7 +347,15 @@ EAPI 8 is EAPI 7 with the following changes:
 \item \t{unpack} no longer supports \t{.7z}, \t{.rar}, \t{.lha}, \featureref{unpack-extensions}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\section*{EAPI 9}
+
+EAPI 9 is EAPI 8 with the following changes:
+
+\begin{compactitem}
+\item None
+\end{compactitem}
+
+\ChangeWhenAddingAnEAPI{9}
 
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 

diff --git a/eapis.tex b/eapis.tex
index a6c8109..fd0420c 100644
--- a/eapis.tex
+++ b/eapis.tex
@@ -17,8 +17,8 @@ EAPIs are also used for profile directories, as described in section~\ref{sec:pr
 
 \section{Defined EAPIs}
 
-\ChangeWhenAddingAnEAPI{8}
-This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', and~`8'.
+\ChangeWhenAddingAnEAPI{9}
+This specification defines EAPIs `0', `1', `2', `3', `4', `5', `6', `7', `8', and~`9'.
 EAPI~`0' is the `original' base EAPI\@. Each of the later EAPIs contains a number of extensions
 to its predecessor.
 

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index ecc20b6..62bf880 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -273,7 +273,7 @@ inconsistent variable.
 \end{longtable}
 \end{landscape}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various added env variables}
     \label{tab:added-env-vars-table}
     \begin{tabular}{lllllll}
@@ -289,12 +289,12 @@ inconsistent variable.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4                 & Yes & Yes & Yes & No  & No  & No  \\
       5, 6              & Yes & Yes & Yes & Yes & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various removed env variables}
     \label{tab:removed-env-vars-table}
     \begin{tabular}{lllllll}
@@ -309,12 +309,12 @@ inconsistent variable.
       \midrule
       0, 1, 2, 3        & Yes & Yes & Yes & Yes & Yes & Yes \\
       4, 5, 6           & No  & No  & Yes & Yes & Yes & Yes \\
-      7, 8              & No  & No  & No  & No  & No  & No  \\
+      7, 8, 9           & No  & No  & No  & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix env variables}
     \label{tab:offset-env-vars-table}
     \begin{tabular}{lllll}
@@ -327,7 +327,7 @@ inconsistent variable.
       \midrule
       0, 1, 2           & No  & No  & No  & No  \\
       3, 4, 5, 6        & Yes & Yes & Yes & No  \\
-      7, 8              & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -351,7 +351,7 @@ must be unset, for EAPIs listed in table~\ref{tab:profile-env-unset} as supporti
 ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in
 table~\ref{tab:locale-settings}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Locale settings for EAPIs}
     \label{tab:locale-settings}
     \begin{tabular}{ll}
@@ -360,7 +360,7 @@ table~\ref{tab:locale-settings}.
       \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & Undefined \\
-      6, 7, 8           & Yes       \\
+      6, 7, 8, 9        & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -446,7 +446,7 @@ contain at most one value.
 \subsection{Offset-prefix variables}
 \label{sec:offset-vars}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting offset-prefix}
     \label{tab:offset-support-table}
     \begin{tabular}{ll}
@@ -454,8 +454,8 @@ contain at most one value.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports offset-prefix?}}\\
       \midrule
-      0, 1, 2           & No  \\
-      3, 4, 5, 6, 7, 8  & Yes \\
+      0, 1, 2             & No  \\
+      3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -486,7 +486,7 @@ specifies the system root directory, it will consist of a single slash (\t{/}).
 a trailing slash, the package manager guarantees that a trailing slash will never be present.
 If the path specifies the system root directory, it will be empty.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Variables that always or never end with a trailing slash}
     \label{tab:trailing-slash}
     \begin{tabular}{lll}
@@ -498,7 +498,7 @@ If the path specifies the system root directory, it will be empty.
       \t{D}, \t{ED} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & always & always \\
-      7, 8                & never  & never  \\
+      7, 8, 9             & never  & never  \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-format.tex b/ebuild-format.tex
index d1fbdfe..844f01a 100644
--- a/ebuild-format.tex
+++ b/ebuild-format.tex
@@ -21,7 +21,7 @@ certain variables and functions (see chapters~\ref{ch:ebuild-vars} and~\ref{ch:e
 for specific information), and must not call any external programs, write anything to standard
 output or standard error, or modify the state of the system in any way.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Bash version and options}
     \label{tab:bash-version}
     \begin{tabular}{lll}
@@ -32,7 +32,7 @@ output or standard error, or modify the state of the system in any way.
       \midrule
       0, 1, 2, 3, 4, 5  & 3.2 & No  \\
       6, 7              & 4.2 & Yes \\
-      8                 & 5.0 & Yes \\
+      8, 9              & 5.0 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/ebuild-functions.tex b/ebuild-functions.tex
index 84270fa..046a0a7 100644
--- a/ebuild-functions.tex
+++ b/ebuild-functions.tex
@@ -46,7 +46,7 @@ fallback to \t{WORKDIR} is used:
     executed, are in \t{DEFINED_PHASES}.
 \end{compactitem}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Initial working directory in \t{pkg_*} phase functions for EAPIs}
     \label{tab:function-dirs}
     \begin{tabular}{ll}
@@ -55,12 +55,12 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Initial working directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Any   \\
-      8                       & Empty \\
+      8, 9                    & Empty \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{S} to \t{WORKDIR} fallbacks}
     \label{tab:s-fallback-table}
     \begin{tabular}{ll}
@@ -69,7 +69,7 @@ fallback to \t{WORKDIR} is used:
       \multicolumn{1}{c}{\textbf{Fallback to \t{WORKDIR} permitted?}} \\
       \midrule
       0, 1, 2, 3        & Always            \\
-      4, 5, 6, 7, 8     & Conditional error \\
+      4, 5, 6, 7, 8, 9  & Conditional error \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -91,7 +91,7 @@ before the next phase is executed.
 
 \t{pkg_pretend} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_pretend}}
     \label{tab:pkg-pretend-table}
     \begin{tabular}{ll}
@@ -100,7 +100,7 @@ before the next phase is executed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_pretend}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -149,7 +149,7 @@ listing~\ref{lst:src-prepare-6} or listing~\ref{lst:src-prepare-8}, respectively
 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_prepare} support and behaviour for EAPIs}
     \label{tab:src-prepare-table}
     \begin{tabular}{lll}
@@ -161,7 +161,7 @@ the \t{src_prepare} function is a no-op.
       0, 1              & No  & Not applicable \\
       2, 3, 4, 5        & Yes & no-op          \\
       6, 7              & Yes & 6              \\
-      8                 & Yes & 8              \\
+      8, 9              & Yes & 8              \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -206,7 +206,7 @@ The \t{src_configure} function configures the package's build environment. The d
 implementation used when the ebuild lacks the \t{src_configure} function shall behave as in
 listing~\ref{lst:src-configure-2}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{src_configure}}
     \label{tab:src-configure-table}
     \begin{tabular}{ll}
@@ -214,8 +214,8 @@ listing~\ref{lst:src-configure-2}.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{src_configure}?}} \\
       \midrule
-      0, 1                & No  \\
-      2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0, 1                   & No  \\
+      2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -244,7 +244,7 @@ implementation used when the ebuild lacks the \t{src_prepare} function shall beh
 listing~\ref{lst:src-compile-0}, listing~\ref{lst:src-compile-1} or listing~\ref{lst:src-compile-2},
 respectively.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_compile} behaviour for EAPIs}
     \label{tab:src-compile-table}
     \begin{tabular}{ll}
@@ -252,9 +252,9 @@ respectively.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Format}} \\
       \midrule
-      0                   & 0 \\
-      1                   & 1 \\
-      2, 3, 4, 5, 6, 7, 8 & 2 \\
+      0                      & 0 \\
+      1                      & 1 \\
+      2, 3, 4, 5, 6, 7, 8, 9 & 2 \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -317,7 +317,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_test} behaviour for EAPIs}
     \label{tab:src-test-table}
     \begin{tabular}{ll}
@@ -326,7 +326,7 @@ be disabled by user too, using a PM-specific mechanism.
       \multicolumn{1}{c}{\textbf{Supports parallel tests?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -346,7 +346,7 @@ listing~\ref{lst:src-install-4} or listing~\ref{lst:src-install-6}, respectively
 For other EAPIs, the default implementation used when the ebuild lacks the \t{src_install} function
 is a no-op.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{src_install} behaviour for EAPIs}
     \label{tab:src-install-table}
     \begin{tabular}{ll}
@@ -356,7 +356,7 @@ is a no-op.
       \midrule
       0, 1, 2, 3        & no-op \\
       4, 5              & 4     \\
-      6, 7, 8           & 6     \\
+      6, 7, 8, 9        & 6     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -450,7 +450,7 @@ that dependencies may not be installed.
 
 \t{pkg_info} must not write to the filesystem.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{pkg_info} on non-installed packages}
     \label{tab:pkg-info-table}
     \begin{tabular}{ll}
@@ -459,7 +459,7 @@ that dependencies may not be installed.
       \multicolumn{1}{c}{\textbf{Supports \t{pkg_info} on non-installed packages?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -481,7 +481,7 @@ named \t{default_<phase-function>}) that behaves as the default implementation f
 be defined when executing any ebuild phase function listed in the table. Ebuilds must not call
 these functions except when in the phase in question.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{default_} phase functions}
     \label{tab:default-phase-function-table}
     \begin{tabular}{l P{26em}}
@@ -492,7 +492,7 @@ these functions except when in the phase in question.
       0, 1              & None \\
       2, 3              & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test} \\
-      4, 5, 6, 7, 8     & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
+      4, 5, 6, 7, 8, 9  & \t{pkg_nofetch}, \t{src_unpack}, \t{src_prepare}, \t{src_configure},
                           \t{src_compile}, \t{src_test}, \t{src_install} \\
       \bottomrule
     \end{tabular}

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index 7dd008c..561eb0c 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -90,7 +90,7 @@ defined by an eclass.
 \item[IDEPEND] See chapter~\ref{ch:dependencies}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{IUSE} defaults}
     \label{tab:iuse-defaults-table}
     \begin{tabular}{ll}
@@ -98,13 +98,13 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{Supports \t{IUSE} defaults?}} \\
       \midrule
-      0                      & No  \\
-      1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+      0                         & No  \\
+      1, 2, 3, 4, 5, 6, 7, 8, 9 & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting various ebuild-defined variables}
     \label{tab:optional-vars-table}
     \begin{tabular}{lll}
@@ -114,7 +114,7 @@ defined by an eclass.
       \multicolumn{1}{c}{\textbf{Supports \t{REQUIRED_USE}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally & No  \\
-      4, 5, 6, 7, 8     & Yes        & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes        & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -179,7 +179,7 @@ selective URI restrictions, the URI protocol can be prefixed by an additional \t
 restriction for the URI (but not the implied mirror restriction). If the ebuild is fetch or mirror
 restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for the URI.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{SRC_URI} arrows and selective URI restrictions}
     \label{tab:uri-arrows-table}
     \begin{tabular}{lll}
@@ -190,7 +190,7 @@ restricted, the \t{mirror+} prefix undoes both fetch and mirror restrictions for
       \midrule
       0, 1              & No  & No  \\
       2, 3, 4, 5, 6, 7  & Yes & No  \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -277,7 +277,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs with \t{RDEPEND=DEPEND} default}
     \label{tab:rdepend-depend-table}
     \begin{tabular}{ll}
@@ -286,7 +286,7 @@ the ebuild portion, and any \t{DEPEND} value set in an eclass does not get treat
       \multicolumn{1}{c}{\textbf{\t{RDEPEND=DEPEND}?}} \\
       \midrule
       0, 1, 2, 3        & Yes \\
-      4, 5, 6, 7, 8     & No  \\
+      4, 5, 6, 7, 8, 9  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -321,7 +321,7 @@ not be exported to the ebuild environment:
 \note{Thus, by extension of section~\ref{sec:metadata-invariance}, phase functions must not be
 defined based upon any variant condition.}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{DEFINED_PHASES}}
     \label{tab:defined-phases-table}
     \begin{tabular}{ll}
@@ -330,7 +330,7 @@ defined based upon any variant condition.}
       \multicolumn{1}{c}{\textbf{Supports \t{DEFINED_PHASES}?}} \\
       \midrule
       0, 1, 2, 3        & Optionally \\
-      4, 5, 6, 7, 8     & Yes        \\
+      4, 5, 6, 7, 8, 9  & Yes        \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/eclasses.tex b/eclasses.tex
index cfd5cae..25ab8ca 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -43,7 +43,7 @@ the previous one is loaded. For EAPIs listed in table~\ref{tab:accumulate-vars}
 value is appended to that defined by the ebuild. In the case of \t{RDEPEND}, this is done after
 the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs accumulating \t{PROPERTIES} and \t{RESTRICT} across eclasses}
     \label{tab:accumulate-vars}
     \begin{tabular}{lll}
@@ -53,7 +53,7 @@ the implicit \t{RDEPEND} rules in section~\ref{sec:rdepend-depend} are applied.
       \multicolumn{1}{c}{\textbf{Accumulates \t{RESTRICT}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  \\
-      8                       & Yes & Yes \\
+      8, 9                    & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/merge.tex b/merge.tex
index 83eab01..27b0ba8 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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Preservation of file modification times (mtimes)}
     \label{tab:mtime-preserve}
     \begin{tabular}{ll}
@@ -94,8 +94,8 @@ is undefined.
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{1}{c}{\textbf{mtimes preserved?}} \\
       \midrule
-      0, 1, 2           & Undefined \\
-      3, 4, 5, 6, 7, 8  & Yes       \\
+      0, 1, 2             & Undefined \\
+      3, 4, 5, 6, 7, 8, 9 & Yes       \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pkg-mgr-commands.tex b/pkg-mgr-commands.tex
index 4c84b68..ad2493e 100644
--- a/pkg-mgr-commands.tex
+++ b/pkg-mgr-commands.tex
@@ -32,7 +32,7 @@ The following commands affect this behaviour:
     option and in EAPIs supporting this option, see table~\ref{tab:die-properties}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI command failure behaviour}
     \label{tab:commands-die-table}
     \begin{tabular}{llll}
@@ -44,7 +44,7 @@ The following commands affect this behaviour:
       \midrule
       0, 1, 2, 3        & Non-zero exit & No  & n/a \\
       4, 5, 6           & Aborts        & Yes & No  \\
-      7, 8              & Aborts        & Yes & Yes \\
+      7, 8, 9           & Aborts        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -55,7 +55,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{8}
+\ChangeWhenAddingAnEAPI{9}  % two places
 \begin{centertable}{Banned commands}
     \label{tab:banned-commands-table}
     \begin{tabular}{lllllll}
@@ -73,7 +73,7 @@ called, the package manager must abort the build process indicating an error.
       0, 1, 2, 3        & No  & No  & No  & No  & No  & No  \\
       4, 5              & Yes & Yes & No  & No  & No  & No  \\
       6                 & Yes & Yes & Yes & No  & No  & No  \\
-      7, 8              & Yes & Yes & Yes & Yes & Yes & Yes \\
+      7, 8, 9           & Yes & Yes & Yes & Yes & Yes & Yes \\
       \midrule
       \multicolumn{1}{c}{\textbf{EAPI}} &
       \multicolumn{6}{c}{\textbf{Command banned?}} \\
@@ -83,7 +83,7 @@ called, the package manager must abort the build process indicating an error.
       \multicolumn{1}{c}{\textbf{\t{hasq}}} & & & \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  & No  & No  & & & \\
-      8                       & Yes & Yes & Yes & & & \\
+      8, 9                    & Yes & Yes & Yes & & & \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -121,7 +121,7 @@ are given, \t{-r} is assumed.
     otherwise, prints an empty string. The exit code is unspecified.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Package manager query command options supported by EAPIs}
     \label{tab:pm-query-options}
     \begin{tabular}{lllll}
@@ -134,7 +134,7 @@ are given, \t{-r} is assumed.
       \midrule
       0, 1, 2, 3, 4     & No  & No  & No  & No  \\
       5, 6              & Yes & No  & No  & No  \\
-      7, 8              & No  & Yes & Yes & Yes \\
+      7, 8, 9           & No  & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -171,7 +171,7 @@ output, using stdout as an output facility is forbidden.
     message followed by a failure indicator. Returns its first argument as exit status.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Output commands for EAPIs}
     \label{tab:output-commands}
     \begin{tabular}{lll}
@@ -181,7 +181,7 @@ output, using stdout as an output facility is forbidden.
       \multicolumn{1}{c}{\textbf{Supports \t{eqawarn}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Yes & No  \\
-      7, 8                & No  & Yes \\
+      7, 8, 9             & No  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -203,7 +203,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
     (indicating failure), calls \t{die}, passing any parameters to it.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Properties of \t{die} and \t{assert} commands in EAPIs}
     \label{tab:die-properties}
     \begin{tabular}{lll}
@@ -216,7 +216,7 @@ completing. Ebuilds must not run any of these commands once the current phase fu
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
       6                 & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -280,7 +280,7 @@ Ebuilds must not run any of these commands once the current phase function has r
     subsequent calls, the command will do nothing and return~0.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Patch commands for EAPIs}
     \label{tab:patch-commands}
     \begin{tabular}{lll}
@@ -290,7 +290,7 @@ Ebuilds must not run any of these commands once the current phase function has r
       \multicolumn{1}{c}{\textbf{\t{eapply_user}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5  & No  & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -350,7 +350,7 @@ commands once the current phase function has returned.
     \t{configure -{}-help} output matches only if it is not immediately followed by any of the
     characters \t{[A-Za-z0-9+_.-]}.
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}  % two places
     \begin{centertable}{Extra \t{econf} arguments for EAPIs}
         \label{tab:econf-options-table}
         \begin{tabular}{lllll}
@@ -364,7 +364,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3, 4, 5  & No  & No  & No  & No  \\
           6                 & No  & Yes & Yes & No  \\
           7                 & No  & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & Yes \\
+          8, 9              & Yes & Yes & Yes & Yes \\
           \midrule
           \multicolumn{1}{c}{\textbf{EAPI}} &
           \multicolumn{1}{P{5.5em}}{\textbf{-{}-disable-dependency-tracking}} &
@@ -374,7 +374,7 @@ commands once the current phase function has returned.
           0, 1, 2, 3        & No  & No  & No  & \\
           4                 & Yes & No  & No  & \\
           5, 6, 7           & Yes & Yes & No  & \\
-          8                 & Yes & Yes & Yes & \\
+          8, 9              & Yes & Yes & Yes & \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -653,7 +653,7 @@ dosym_relative_path() {
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dodoc -r}}
     \label{tab:dodoc-table}
     \begin{tabular}{ll}
@@ -662,12 +662,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{dodoc -r}?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{doheader} and \t{newheader}}
     \label{tab:doheader-table}
     \begin{tabular}{ll}
@@ -676,12 +676,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Supports \t{doheader} and \t{newheader}?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting symlinks for \t{doins}}
     \label{tab:doins-table}
     \begin{tabular}{ll}
@@ -690,12 +690,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{doins} supports symlinks?}} \\
       \midrule
       0, 1, 2, 3        & No  \\
-      4, 5, 6, 7, 8     & Yes \\
+      4, 5, 6, 7, 8, 9  & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{doman} language support options for EAPIs}
     \label{tab:doman-table}
     \begin{tabular}{lll}
@@ -706,12 +706,12 @@ dosym_relative_path() {
       \midrule
       0, 1              & No  & Not applicable \\
       2, 3              & Yes & No             \\
-      4, 5, 6, 7, 8     & Yes & Yes            \\
+      4, 5, 6, 7, 8, 9  & Yes & Yes            \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting stdin for \t{new*} commands}
     \label{tab:newfoo-stdin-table}
     \begin{tabular}{ll}
@@ -720,12 +720,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{new*} can read from stdin?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{domo} destination path in EAPIs}
     \label{tab:domo-path}
     \begin{tabular}{ll}
@@ -734,12 +734,12 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{Destination path}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & \t{\$\{DESTTREE\}/share/locale} \\
-      7, 8                & \t{/usr/share/locale} \\
+      7, 8, 9             & \t{/usr/share/locale} \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{dosym -r}}
     \label{tab:dosym-r}
     \begin{tabular}{ll}
@@ -748,7 +748,7 @@ dosym_relative_path() {
       \multicolumn{1}{c}{\textbf{\t{dosym} supports creation of relative paths?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & No  \\
-      8                       & Yes \\
+      8, 9                    & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -790,7 +790,7 @@ function has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{insopts} for EAPIs}
     \label{tab:insopts-commands}
     \begin{tabular}{lllll}
@@ -802,12 +802,12 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doheader}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes & Yes & Yes \\
-      8                       & Yes & No  & No  & No  \\
+      8, 9                    & Yes & No  & No  & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands respecting \t{exeopts} for EAPIs}
     \label{tab:exeopts-commands}
     \begin{tabular}{lll}
@@ -817,7 +817,7 @@ function has returned.
       \multicolumn{1}{c}{\textbf{\t{doinitd}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes & Yes \\
-      8                       & Yes & No  \\
+      8, 9                    & Yes & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -894,7 +894,7 @@ any of these functions from any other phase.
     supporting \t{dostrip}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Commands controlling manipulation of files in the staging area in EAPIs}
     \label{tab:staging-area-commands}
     \begin{tabular}{lll}
@@ -905,7 +905,7 @@ any of these functions from any other phase.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6           & Yes & No  \\
-      7, 8              & Yes & Yes \\
+      7, 8, 9           & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -952,7 +952,7 @@ table~\ref{tab:use-list-strictness}.
     table~\ref{tab:use-list-functions} as supporting \t{in_iuse}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPI behaviour for use queries not in \t{IUSE_EFFECTIVE}}
     \label{tab:use-list-strictness}
     \begin{tabular}{ll}
@@ -961,12 +961,12 @@ table~\ref{tab:use-list-strictness}.
       \multicolumn{1}{c}{\textbf{Behaviour}} \\
       \midrule
       0, 1, 2, 3        & Undefined \\
-      4, 5, 6, 7, 8     & Error     \\
+      4, 5, 6, 7, 8, 9  & Error     \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{\t{usev}, \t{use_with} and \t{use_enable} arguments for EAPIs}
     \label{tab:use-list-args}
     \begin{tabular}{lll}
@@ -978,12 +978,12 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3        & No  & No  \\
       4, 5, 6, 7        & No  & Yes \\
-      8                 & Yes & Yes \\
+      8, 9              & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{usex} and \t{in_iuse}}
     \label{tab:use-list-functions}
     \begin{tabular}{lll}
@@ -994,7 +994,7 @@ table~\ref{tab:use-list-strictness}.
       \midrule
       0, 1, 2, 3, 4     & No  & No  \\
       5                 & Yes & No  \\
-      6, 7, 8           & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1079,7 +1079,7 @@ the second, inclusively.
     section~\ref{sec:version-spec}. Comparison is done using algorithm~\ref{alg:version-comparison}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting version manipulation commands}
     \label{tab:version-commands}
     \begin{tabular}{llll}
@@ -1090,7 +1090,7 @@ the second, inclusively.
       \multicolumn{1}{c}{\textbf{\t{ver_test}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  & No  & No  \\
-      7, 8                & Yes & Yes & Yes \\
+      7, 8, 9             & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -1167,7 +1167,7 @@ has returned.
     \featurelabel{unpack-ignore-case} \t{unpack} matches filename extensions in a case-insensitive
     manner, for EAPIs listed such in table~\ref{tab:unpack-behaviour}.
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} behaviour for EAPIs}
         \label{tab:unpack-behaviour}
         \begin{tabular}{lll}
@@ -1177,12 +1177,12 @@ has returned.
           \multicolumn{1}{c}{\textbf{Case-insensitive matching?}} \\
           \midrule
           0, 1, 2, 3, 4, 5  & No  & No  \\
-          6, 7, 8           & Yes & Yes \\
+          6, 7, 8, 9        & Yes & Yes \\
           \bottomrule
         \end{tabular}
     \end{centertable}
 
-    \ChangeWhenAddingAnEAPI{8}
+    \ChangeWhenAddingAnEAPI{9}
     \begin{centertable}{\t{unpack} extensions for EAPIs}
         \label{tab:unpack-extensions-table}
         \begin{tabular}{llllllll}
@@ -1198,7 +1198,7 @@ has returned.
           0, 1, 2           & No  & No  & No  & Yes & Yes & Yes \\
           3, 4, 5           & Yes & Yes & No  & Yes & Yes & Yes \\
           6, 7              & Yes & Yes & Yes & Yes & Yes & Yes \\
-          8                 & Yes & Yes & Yes & No  & No  & No  \\
+          8, 9              & Yes & Yes & Yes & No  & No  & No  \\
           \bottomrule
         \end{tabular}
     \end{centertable}
@@ -1266,7 +1266,7 @@ has returned.
 
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Misc commands for EAPIs}
     \label{tab:misc-commands}
     \begin{tabular}{llll}
@@ -1278,7 +1278,7 @@ has returned.
       \midrule
       0, 1              & No  & No  & No  \\
       2, 3, 4, 5        & Yes & No  & No  \\
-      6, 7, 8           & Yes & Yes & Yes \\
+      6, 7, 8, 9        & Yes & Yes & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/pms.tex b/pms.tex
index 24f07fe..64f6123 100644
--- a/pms.tex
+++ b/pms.tex
@@ -21,8 +21,8 @@
     pdfkeywords={Gentoo, package manager, specification},
 }
 
-\CurrentEAPIIs{8}
-\ChangeWhenAddingAnEAPI{8}
+\CurrentEAPIIs{9}
+\ChangeWhenAddingAnEAPI{9}
 
 \begin{document}
 \maketitle

diff --git a/profile-variables.tex b/profile-variables.tex
index 9f86e80..1630cf7 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -40,7 +40,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs}
     \label{tab:profile-iuse-injection-table}
     \begin{tabular}{ll}
@@ -49,12 +49,12 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile-defined unsetting of variables in EAPIs}
     \label{tab:profile-env-unset}
     \begin{tabular}{ll}
@@ -63,7 +63,7 @@ completely override those in parent profiles.
       \multicolumn{1}{c}{\textbf{Supports \t{ENV_UNSET}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/profiles.tex b/profiles.tex
index af88568..c836f08 100644
--- a/profiles.tex
+++ b/profiles.tex
@@ -79,7 +79,7 @@ in that directory, unless their name begins with a dot, will be concatenated in
 filename in the POSIX locale and the result will be processed as if it were a single file.
 Any subdirectories will be ignored.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting directories for profile files}
     \label{tab:profile-file-dirs}
     \begin{tabular}{ll}
@@ -88,7 +88,7 @@ Any subdirectories will be ignored.
       \multicolumn{1}{c}{\textbf{Supports directories for profile files?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -124,7 +124,7 @@ it is actually installed. Because it has severe adverse effects on USE-based and
 dependencies, its use is strongly deprecated and package manager support must be regarded as purely
 optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting \t{package.provided} in profiles}
     \label{tab:package-provided}
     \begin{tabular}{ll}
@@ -133,7 +133,7 @@ optional. Supported in EAPIs as per table~\ref{tab:package-provided}.
       \multicolumn{1}{c}{\textbf{Supports \t{package.provided}?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & Optionally \\
-      7, 8                & No         \\
+      7, 8, 9             & No         \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -166,7 +166,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{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Profile directory support for masking/forcing use flags in stable versions only}
     \label{tab:profile-stablemask}
     \begin{tabular}{ll}
@@ -175,7 +175,7 @@ stable in a package.
       \multicolumn{1}{c}{\textbf{Supports masking/forcing use flags in stable versions?}} \\
       \midrule
       0, 1, 2, 3, 4     & No  \\
-      5, 6, 7, 8        & Yes \\
+      5, 6, 7, 8, 9     & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}

diff --git a/tree-layout.tex b/tree-layout.tex
index 19aed03..1051b97 100644
--- a/tree-layout.tex
+++ b/tree-layout.tex
@@ -127,7 +127,7 @@ manager must ignore any files in this directory that it does not recognise.
 \item[updates/] This directory is described in section~\ref{sec:updates-dir}.
 \end{description}
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{EAPIs supporting a directory for \t{package.mask}}
     \label{tab:package-mask-dir}
     \begin{tabular}{ll}
@@ -136,7 +136,7 @@ manager must ignore any files in this directory that it does not recognise.
       \multicolumn{1}{c}{\textbf{\t{package.mask} can be a directory?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6 & No  \\
-      7, 8                & Yes \\
+      7, 8, 9             & Yes \\
       \bottomrule
     \end{tabular}
 \end{centertable}
@@ -233,7 +233,7 @@ At any given time, a name that appears as the origin of a move may not be used a
 package name in the repository. A slot that appears as the origin of a slot move may not be used
 by packages matching the spec of that slot move.
 
-\ChangeWhenAddingAnEAPI{8}
+\ChangeWhenAddingAnEAPI{9}
 \begin{centertable}{Naming rules for files in \t{updates} directory for EAPIs}
     \label{tab:updates-filenames}
     \begin{tabular}{ll}
@@ -242,7 +242,7 @@ by packages matching the spec of that slot move.
       \multicolumn{1}{c}{\textbf{Files per quarter year?}} \\
       \midrule
       0, 1, 2, 3, 4, 5, 6, 7  & Yes \\
-      8                       & No  \\
+      8, 9                    & No  \\
       \bottomrule
     \end{tabular}
 \end{centertable}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2024-06-02  9:57 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     3dbf2a5dcf649f8379f576848409a617431cd00d
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun May 12 18:23:08 2024 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue May 28 18:03:50 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=3dbf2a5d

Revert "pms.cls: Require version 1 of parskip.sty"

This reverts commit 4ebd8cb10bcf73fba3bbf06e9aa8370fcf692538.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

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

diff --git a/pms.cls b/pms.cls
index 0cf630b..a3e3ea5 100644
--- a/pms.cls
+++ b/pms.cls
@@ -29,7 +29,6 @@
 \PassOptionsToPackage{local}{gitinfo2}
 \PassOptionsToPackage{chapter}{algorithm}
 % algorithmic and algorithm to be loaded last to avoid failures
-\RequirePackage{parskip}[=v1] % Space between paragraphs instead of indentation
 \RequirePackage{%
     fontenc,    % Load extended font sets
     isodate,    % Date formatting and conversions
@@ -42,6 +41,7 @@
     lscape,     % Rotating pages
     marginnote, % Typeset a paragraph in the page margin
     paralist,   % Additional list environments
+    parskip,    % Space between paragraphs instead of indentation
     underscore, % Allow simple _ instead of \_
     footmisc,   % Customise footnotes
     chngcntr,   % Redefinition of counters


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
  2024-05-14  4:25 [gentoo-commits] proj/pms:master " Ulrich Müller
@ 2024-06-02  9:57 ` Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-02  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     ea5b43c5e8b666124592fae8e0697f0d990ab1f4
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon May 13 20:51:12 2024 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon May 13 20:51:12 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=ea5b43c5

pms.cls: Redefine headings for list of tables etc.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 pms.cls | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/pms.cls b/pms.cls
index d9907b7..0cf630b 100644
--- a/pms.cls
+++ b/pms.cls
@@ -128,11 +128,18 @@
 % Define a new column type P for tables, like p but with ragged-right text
 \newcolumntype{P}[1]{>{\setlength\rightskip{0pt plus 1fil}}p{#1}}
 
+% Redefine headings for list of tables/figures/algorithms
+\renewcommand{\listtablename}{Tables}
+\renewcommand{\listfigurename}{Figures}
+\g@addto@macro\@documentclasshook{
+    \renewcommand{\listalgorithmname}{Algorithms}
+}
+
 % Define a float environment for listings
 \floatstyle{ruled}
 \newfloat{listing}{tbp}{lol}[chapter]
 \floatname{listing}{Listing}
-\newcommand{\listoflistings}{\listof{listing}{List of Listings}}
+\newcommand{\listoflistings}{\listof{listing}{Listings}}
 
 % Prevent page break before a list
 \newcommand{\nobreakpar}{\par\nobreak\@afterheading}


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

* [gentoo-commits] proj/pms:eapi-9 commit in: /
@ 2024-06-24  9:10 Ulrich Müller
  0 siblings, 0 replies; 105+ messages in thread
From: Ulrich Müller @ 2024-06-24  9:10 UTC (permalink / raw
  To: gentoo-commits

commit:     a331bd4241cecfe6b124408f345979f126d519e7
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 20 18:16:12 2024 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Jun 20 18:16:12 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=a331bd42

EAPI 9 no longer rewrites absolute symlinks

Bug: https://bugs.gentoo.org/934514
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eapi-differences.tex |  5 +++++
 merge.tex            | 19 +++++++++++++++++--
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index f6aafe7..3d5bb97 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -171,6 +171,9 @@ Controllable stripping & \compactfeatureref{dostrip} &
 \t{unpack} support for \t{rar} & \compactfeatureref{unpack-extensions} &
     Yes & Yes & No & No \\
 
+Absolute symlink rewriting & \compactfeatureref{symlink-rewrite} &
+    Yes & Yes & Yes & No \\
+
 \end{longtable}
 
 \chapter{Differences between EAPIs}
@@ -356,6 +359,8 @@ EAPI 9 is EAPI 8 with the following changes:
 
 \begin{compactitem}
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item Absolute symlinks no longer being rewritten, \featureref{symlink-rewrite}
+
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/merge.tex b/merge.tex
index 27b0ba8..e51c1b8 100644
--- a/merge.tex
+++ b/merge.tex
@@ -138,8 +138,23 @@ Ebuilds must not attempt to merge a symlink on top of a directory.
 
 \subsection{Rewriting}
 
-Any absolute symlink whose link starts with \t{D} must be rewritten with the leading \t{D} removed.
-The package manager should issue a notice when doing this.
+\featurelabel{symlink-rewrite} In EAPIs listed in table~\ref{tab:symlink-rewrite} as rewriting
+symlinks, any absolute symlink whose link starts with \t{D} must be rewritten with the leading
+\t{D} removed. The package manager should issue a notice when encountering such a symlink.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{Rewriting of absolute symlinks}
+    \label{tab:symlink-rewrite}
+    \begin{tabular}{ll}
+      \toprule
+      \multicolumn{1}{c}{\textbf{EAPI}} &
+      \multicolumn{1}{c}{\textbf{Rewrite symlinks?}} \\
+      \midrule
+      0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+      9                         & No  \\
+      \bottomrule
+    \end{tabular}
+\end{centertable}
 
 \section{Hard links}
 


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

end of thread, other threads:[~2024-06-24  9:10 UTC | newest]

Thread overview: 105+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-06 15:26 [gentoo-commits] proj/pms:master commit in: / Ulrich Müller
2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
  -- strict thread matches above, loose matches on Subject: below --
2024-06-24  9:10 Ulrich Müller
2024-06-02  9:57 Ulrich Müller
2024-06-02  9:57 Ulrich Müller
2024-06-02  9:57 Ulrich Müller
2024-06-02  9:57 Ulrich Müller
2024-06-02  9:57 Ulrich Müller
2024-06-02  9:57 Ulrich Müller
2024-06-02  9:57 Ulrich Müller
2024-06-02  9:57 Ulrich Müller
2024-06-02  9:57 Ulrich Müller
2024-06-02  9:57 Ulrich Müller
2024-06-02  9:57 Ulrich Müller
2024-06-02  9:55 [gentoo-commits] proj/pms:master " Ulrich Müller
2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2024-05-14  4:25 [gentoo-commits] proj/pms:master " Ulrich Müller
2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2024-04-05 14:07 [gentoo-commits] proj/pms:master " Ulrich Müller
2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2024-03-03 17:30 [gentoo-commits] proj/pms:master " Ulrich Müller
2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2024-03-03 17:30 [gentoo-commits] proj/pms:master " Ulrich Müller
2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2024-03-03 17:30 [gentoo-commits] proj/pms:master " Ulrich Müller
2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2024-02-08  9:43 [gentoo-commits] proj/pms:master " Ulrich Müller
2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2024-01-01 14:34 [gentoo-commits] proj/pms:master " Ulrich Müller
2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2023-08-09 17:24 [gentoo-commits] proj/pms:master " Ulrich Müller
2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2023-06-05 18:45 [gentoo-commits] proj/pms:master " Ulrich Müller
2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2023-06-05 18:45 [gentoo-commits] proj/pms:master " Ulrich Müller
2024-06-02  9:57 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2023-04-14 16:40 Ulrich Müller
2023-04-14 16:40 Ulrich Müller
2023-04-14 16:40 Ulrich Müller
2023-04-14 16:40 Ulrich Müller
2023-04-10  7:18 Ulrich Müller
2023-04-10  7:18 Ulrich Müller
2023-04-10  7:18 Ulrich Müller
2023-04-10  7:18 Ulrich Müller
2023-04-10  7:18 Ulrich Müller
2023-04-10  7:18 Ulrich Müller
2023-02-27 11:05 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-02-26 17:42 Ulrich Müller
2023-01-19 16:40 [gentoo-commits] proj/pms:master " Ulrich Müller
2023-02-26 17:42 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2023-01-19 16:40 [gentoo-commits] proj/pms:master " Ulrich Müller
2023-02-26 17:42 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2023-01-19 16:40 [gentoo-commits] proj/pms:master " Ulrich Müller
2023-02-26 17:42 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2023-01-09 18:18 [gentoo-commits] proj/pms:master " Ulrich Müller
2023-02-26 17:42 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2023-01-01 17:57 [gentoo-commits] proj/pms:master " Ulrich Müller
2023-02-26 17:42 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2023-01-01 17:57 [gentoo-commits] proj/pms:master " Ulrich Müller
2023-02-26 17:42 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2022-12-17 16:40 [gentoo-commits] proj/pms:master " Ulrich Müller
2023-02-26 17:42 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2022-12-14 10:10 Ulrich Müller
2022-12-14 10:10 Ulrich Müller
2022-12-09 19:07 [gentoo-commits] proj/pms:master " Ulrich Müller
2023-02-26 17:42 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2022-10-20  7:06 [gentoo-commits] proj/pms:master " Ulrich Müller
2023-02-26 17:42 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2022-08-22 18:30 Ulrich Müller
2022-08-22 18:30 Ulrich Müller
2022-08-22 18:30 Ulrich Müller
2022-08-22 18:30 Ulrich Müller
2022-08-22 18:30 Ulrich Müller
2022-08-21  9:42 Ulrich Müller
2022-08-21  9:42 Ulrich Müller
2022-08-21  9:42 Ulrich Müller
2022-08-21  9:42 Ulrich Müller
2022-08-21  9:42 Ulrich Müller
2022-08-21  9:42 Ulrich Müller
2022-08-18 15:53 Ulrich Müller
2022-08-18 15:53 Ulrich Müller
2022-08-18 15:53 Ulrich Müller
2022-08-18 15:53 Ulrich Müller
2022-08-18 15:53 Ulrich Müller
2022-08-18 15:53 Ulrich Müller
2022-08-18 15:53 Ulrich Müller
2022-08-18 15:53 Ulrich Müller
2022-08-18 15:53 Ulrich Müller
2022-04-07  6:22 [gentoo-commits] proj/pms:master " Ulrich Müller
2022-08-18 15:53 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2022-02-21 19:05 Ulrich Müller
2022-02-21 19:05 Ulrich Müller
2022-02-21 19:05 Ulrich Müller
2022-02-14  7:29 Ulrich Müller
2022-02-14  7:29 Ulrich Müller
2022-02-14  7:29 Ulrich Müller
2022-02-14  7:29 Ulrich Müller
2022-02-14  7:29 Ulrich Müller
2022-02-14  7:29 Ulrich Müller
2022-02-14  7:29 Ulrich Müller
2022-02-14  7:29 Ulrich Müller
2022-02-14  7:29 Ulrich Müller
2022-02-14  7:29 Ulrich Müller
2022-02-14  7:29 Ulrich Müller
2022-02-07  8:13 [gentoo-commits] proj/pms:master " Ulrich Müller
2022-02-14  7:29 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2022-02-07  8:13 [gentoo-commits] proj/pms:master " Ulrich Müller
2022-02-14  7:29 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2021-09-03 15:26 [gentoo-commits] proj/pms:master " Ulrich Müller
2022-02-14  7:29 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2021-09-03 15:26 [gentoo-commits] proj/pms:master " Ulrich Müller
2022-02-14  7:29 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2021-09-03  6:56 [gentoo-commits] proj/pms:master " Ulrich Müller
2022-02-14  7:29 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2021-09-01 17:35 [gentoo-commits] proj/pms:master " Ulrich Müller
2022-02-14  7:29 ` [gentoo-commits] proj/pms:eapi-9 " Ulrich Müller
2021-08-19 19:40 [gentoo-commits] proj/pms:master " Ulrich Müller
2022-02-14  7:29 ` [gentoo-commits] proj/pms:eapi-9 " 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